“Bearbeitungszentrum BAZ” - Agent Mode

This example shows an entire BAZ setup expressed within a single commissioning file, using explicit topics and involving an agent for providing the connection and endpoint resources.

The name of the agent must be specified in the agentName parameter, for example connectware-agent or whatever other name has been given to the agent instance.

Download: bazAgentMode.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
 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
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
description: >
  Entire simulated machining involving a protocol-mapper agent

metadata:

  name: Simulated Machining Center
  icon: https://www.cybus.io/wp-content/themes/cybus/img/product-slide-img.png
  provider: cybus
  homepage: https://www.cybus.io
  version: 2.0.0

parameters:

  agentName:
    type: string
    description: Agent Name
    default: connectware-agent

  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:

  CYBUS_MQTT_ROOT: cybus/baz-simulator

  defaultModbusAddress:
    fc: 3
    length: 2
    interval: 1000
    dataType: uint16BE

resources:

  machineSimulator:
    type: Cybus::Container
    properties:
      image: registry.cybus.io/cybus-services/baz-machine-simulator:0.0.1
      ports:
        - !sub '${modbusPort}:10502/tcp'

  modbusConnection:
    type: Cybus::Connection
    properties:
      agentName: !ref agentName
      protocol: Modbus
      targetState: connected
      connection:
        host: !ref dockerBridgeNetworkIp
        port: !ref modbusPort

  currentState:
    type: Cybus::Endpoint
    properties:
      protocol: Modbus
      connection: !ref modbusConnection
      topic: current-state
      subscribe:
        !merge
          defaultModbusAddress:
          address: 0

  currentTool:
    type: Cybus::Endpoint
    properties:
      protocol: Modbus
      connection: !ref modbusConnection
      topic: current-tool
      subscribe:
        !merge
          defaultModbusAddress:
          address: 2

  coolantLevel:
    type: Cybus::Endpoint
    properties:
      protocol: Modbus
      connection: !ref modbusConnection
      topic: coolant-level
      subscribe:
        !merge
          defaultModbusAddress:
          address: 4

  spindleSpeed:
    type: Cybus::Endpoint
    properties:
      protocol: Modbus
      connection: !ref modbusConnection
      topic: spindle-speed
      subscribe:
        !merge
          defaultModbusAddress:
          address: 6

  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

How to deploy the agent

To run the above example, you must also deploy and run an agent, which is a container using the Connectware’s image protocol-mapper with some special environment variables (see also Agent Installation).

The first thing you need to set is the image and image tag (i.e. version) you are going to use. The agent’s container must use the protocol-mapper image of the exact same version as the Connectware, otherwise the system may run into unspecified behaviour. For the subsequent command the image tag (version) is stored as IMAGE_TAG= 1.4.1

Using the IMAGE_TAG environment variable, the following command will run the agent directly (but with the comment lines removed):

# The docker run command
docker run --rm \
    # Attach a volume so the agent can store data across restarts
  -v /tmp/cybus:/data \
    # Set the name of the agent. This must match the agentName used in the commissioning file.
  -e CYBUS_AGENT_NAME=connectware-agent \
    # The IP address where the Connectware is running.
  -e CYBUS_MQTT_HOST=10.11.12.13 \
    # Make it run as an agent
  -e CYBUS_AGENT_MODE=distributed \
    # Some suitable hostname of the container.
  --hostname=${HOSTNAME} \
    # Run it in host mode networking
  --net=host \
    # The image to use
  registry.cybus.io/cybus/protocol-mapper:${IMAGE_TAG}

Then, complete the set up by registering the new agent’s user in the Connectware using the “Client Registry” process, see Agent Registration and Client Registry

Alternative ways to run the agent can be found on Agent Installation.