“Bearbeitungszentrum BAZ” - Multiple Files

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.

Download: simulated-shop-floor.yml

Note

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).

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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'

Download: connectivity.yml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
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

Download: dashboard.yml

Note

The example file below uses an additional Docker image provided by Cybus, see comment at the topmost file for details.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
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