Skip to content

Abb robot rmq

Publish and receive messages to/from robot's queue.

Inputs

Field Type Description
metadata number Integer including type of RMQ message and sequence number.

Outputs

Field Type Description
metadata number Definition of RMQ message type with ID.

Details

Usually this node will use output of ABB RMQ Command Builder node as an input and this is recommended way of using it.

msg.metadata is 15-bit number where 2 most significant bits defines message type and rest of bits are unique ID number.

Possible instructions types:

  • EVENT (bits value: 00) will trigger an event with the message data as value. No response is expected when triggering an event. ID is the numeric ID of the event that should be triggered.
  • EXECUTE (bits value: 01) execute the data in the message. A response with the result (success flag, error message or return value) is expected. ID is a unique number that will be used in response to this message.
  • ALLOCATE (bits value: 10) will allocate memory for the message data in the robot controller and return a pointer to it. ID is a unique number that will be used in response to this message.
  • RESPONSE (bits value: 11) message with response for other messages. ID is a unique number used in other message types.

For example EXECUTE message with ID 1, should have set msg.metadata to 8193.

ℹ️ NOTE: When ID is equal 0 in msg.metadata then no response is send back. Ie. is equal 8192 for EXECUTE message.

Example input for EXECUTE instruction - execution of pickAndDrop RAPID procedure:

{
    "metadata": 8193,
    "payload": "command;[[\"\",\"\",0,\"\",\"\",0,\"\"],\"pickAndDrop\",[\"pose\",\"\",0,\"[[0.00,0.00,0.00],[1.000000,0.000000,0.000000,0.000000]]\",\"\",0,\"\"],[\"num\",\"\",0,\"1\",\"\",0,\"\"],[\"num\",\"\",0,\"1\",\"\",0,\"\"],[\"\",\"\",0,\"\",\"\",0,\"\"],[\"\",\"\",0,\"\",\"\",0,\"\"]]"
}

⚠️ IMPORTANT: Length of msg.payload string cannot exceed 444 bytes.

In output a msg.topic value can be one of below depends on message content:

  • ABB_RMQ_MESSAGE_SENT - when message was sent successfully, it will include all fields from input message of node.
  • ABB_RMQ_RESPONSE - response message from robot, ie. for pickAndDrop procedure call:

    json { "id": 1, "topic": "ABB_RMQ_RESPONSE", "metadata": 24577, "payload": "command;[[\"\",\"\",0,\"\",\"\",0,\"\"],\"pickAndDrop\",[\"pose\",\"\",0,\"[[0.00,0.00,100.00],[1.000000,0.000000,0.000000,0.000000]]\",\"\",0,\"\"],[\"num\",\"\",0,\"1\",\"\",0,\"\"],[\"num\",\"\",0,\"1\",\"\",0,\"\"],[\"\",\"\",0,\"\",\"\",0,\"\"],[\"\",\"\",0,\"\",\"\",0,\"\"]]" }

  • ABB_RMQ_ERROR - response with error from robot, ie. example: json { "id": 1, "topic": "ABB_RMQ_ERROR", "metadata": 24577, "payload": "errInfo;[\"\",2,\"\",\"02:TYPE_WARN\",\"08:USER_DEF_ERR\",\"ERR_PICK_FAILED\",\"ERR_PICK_FAILED\",\"Item out of working zone\",\"\",\"\",\"\"]" }

  • ABB_RMQ_MESSAGE_SEND_ERROR - when sending message using robot's REST API ends up with an HTTP error.

Status of node will change according to its state:

  • When node is connected to queue: Connected
  • When node is disconnected from queue: Disconnected
  • When message was sent: Pending (#message_id)
  • When message was sent with id = 0: Completed (no ack)
  • When response was received: Completed (#message_id)
  • When error was received: Error (#message_id)
  • When message was not sent: Error sending (#message_id)

Configuration

Property Description
Name Name of the node instance
Source Queue RMQ queue name to listen for response from robot
Target Queue RMQ queue name to send messages to robot
Config A config node with robot connection parameters
Config ID ID of config node

ℹ️ NOTE: Target Queue name is build from RMQ_ prefix and name of robot's task. By default it is RMQ_T_ROB1 as T_ROB1 is default robot task name.

ℹ️ NOTE: Source Queue name should be unique in robot's controller domain. If there is no other RMQ nodes connected to the robot default value should be OK.

References