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 inmsg.metadata
then no response is send back. Ie. is equal8192
forEXECUTE
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. forpickAndDrop
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 fromRMQ_
prefix and name of robot's task. By default it isRMQ_T_ROB1
asT_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.