This example show a BAZ setup split in three files. One file will express the resources needed for modbus machine simulation. Another one expresses the connectivity layer. The third file expresses the resources needed for visualizing machining data on a dashboard.
The example below uses an additional Docker image provided by Cybus that requires a suitable license. You can check the current capabilities and permissions of your Connectware license in the Cybus Portal (https://portal.cybus.io ). If your license is not eligible to use the example Docker image, please contact Cybus Sales (sales@cybus.io ).
Copy description: >
This Service simulates a shop floor equipped with a single machine talking
the modbus protocol
metadata:
name: Simulated Shop Floor
icon: https://www.cybus.io/wp-content/uploads/2017/10/for-whom1.svg
provider: cybus
homepage: https://www.cybus.io
parameters:
modbusPort:
type: integer
default: 10502
resources:
modbusMachine:
type: Cybus::Container
properties:
image: registry.cybus.io/cybus-services/baz-machine-simulator:0.0.1
ports:
- !sub '${modbusPort}:10502/tcp'
Copy description: >
This service provides a connectivity to all endpoints provided by the
simulated shop floor
metadata:
name: Connectivity Layer
icon: https://www.cybus.io/wp-content/uploads/2017/10/connection.svg
provider: cybus
homepage: https://www.cybus.io
parameters:
agentName:
type: string
default: protocol-mapper
modbusPort:
type: integer
default: 10502
dockerBridgeNetworkIp:
type: string
default: 172.17.0.1
description: The IP address of the docker bridge network gateway, see "docker network inspect bridge"
definitions:
defaultModbusAddress:
fc: 3
length: 2
interval: 1000
dataType: uint16BE
resources:
modbusConnection:
type: Cybus::Connection
properties:
agentName: !ref agentName
protocol: Modbus
targetState: connected
connection:
host: !ref dockerBridgeNetworkIp
port: !ref modbusPort
currentState:
type: Cybus::Endpoint
properties:
agentName: !ref agentName
protocol: Modbus
connection: !ref modbusConnection
subscribe: !merge
defaultModbusAddress:
address: 0
currentTool:
type: Cybus::Endpoint
properties:
agentName: !ref agentName
protocol: Modbus
connection: !ref modbusConnection
subscribe: !merge
defaultModbusAddress:
address: 2
coolantLevel:
type: Cybus::Endpoint
properties:
agentName: !ref agentName
protocol: Modbus
connection: !ref modbusConnection
subscribe: !merge
defaultModbusAddress:
address: 4
spindleSpeed:
type: Cybus::Endpoint
properties:
agentName: !ref agentName
protocol: Modbus
connection: !ref modbusConnection
subscribe: !merge
defaultModbusAddress:
address: 6
The example file below uses an additional Docker image provided by Cybus, see comment at the topmost file for details.
Copy description: >
This Service visualizes data of a the simulated-shop floor connectivity
layer.
metadata:
name: Data Visualization
version: 1.0.0
icon: https://www.cybus.io/wp-content/uploads/2017/10/for-whom3.svg
provider: cybus
homepage: https://www.cybus.io
parameters:
connectivityService:
type: string
default: connectivitylayer
definitions:
CYBUS_MQTT_ROOT: cybus/baz-simulator
resources:
dashboard:
type: Cybus::Container
properties:
image: registry.cybus.io/cybus-services/baz-dashboard:0.2.3
volumes:
- !sub '${dashboardData}:/root/.node-red'
environment:
MQTT_HOST: !ref Cybus::MqttHost
MQTT_USER: !ref Cybus::MqttUser
MQTT_PASS: !ref Cybus::MqttPassword
MQTT_PORT: !ref Cybus::MqttPort
HTTP_ROOT: /
dashboardData:
type: Cybus::Volume
dashboardRoute:
type: Cybus::IngressRoute
properties:
container: !ref dashboard
type: http
slug: dashboard
target:
path: /
port: 1880
dashboardLink:
type: Cybus::Link
properties:
ingressRoute: !ref dashboardRoute
href: ui/
name: Dashboard
mapping:
type: Cybus::Mapping
properties:
mappings:
- subscribe:
endpoint: !ref '${connectivityService}::currentState'
publish:
topic: !sub '${CYBUS_MQTT_ROOT}/current-state'
- subscribe:
endpoint: !ref '${connectivityService}::currentTool'
publish:
topic: !sub '${CYBUS_MQTT_ROOT}/current-tool'
- subscribe:
endpoint: !ref '${connectivityService}::coolantLevel'
publish:
topic: !sub '${CYBUS_MQTT_ROOT}/coolant-level'
- subscribe:
endpoint: !ref '${connectivityService}::spindleSpeed'
publish:
topic: !sub '${CYBUS_MQTT_ROOT}/spindle-speed'
# debug
- subscribe:
endpoint: !ref '${connectivityService}::spindleSpeed'
rules:
- transform:
expression: |
{
"value": $
}
publish:
topic: debug/spindleSpeed