Introduction¶
All 4 Modbus datastores are implemented: Coils, Discrete inputs, Holding registers, Input registers. Each datastore has a different set of functionalities. Note that each datastore contains a completely different set of data.
Discrete Input and Input register are READ-ONLY tables. Those have been used to keep the robot state.
Coil and Holding Register are READ/WRITE tables. Those have been used to give user commands to the robot. Hence, those 2 tables do not contain the robot state, but the last given command.
Address tables start at 0.
Coils¶
Each address contains a 1bit value.
READ/WRITE (the stored values correspond to the last given command, not the current robot state)
Accepted Modbus functions:
0x01: READ_COILS
0x05: WRITE_SINGLE_COIL
This datastore can be used to set Digital I/O mode and state. Digital I/O numbers used for Modbus:
0: 1A
1: 1B
2: 1C
3: 2A
4: 2B
5: 2C
Address |
Description |
---|---|
0-5 |
Digital I/O mode (Input = 1, Output = 0) |
100-105 |
Digital I/O state (High = 1, Low = 0) |
200-299 |
Can be used to store your own variables |
Discrete inputs¶
Each address contains a 1bit value.
READ-ONLY
Accepted Modbus functions:
0x02: READ_DISCRETE_INPUTS
This datastore can be used to read Digital I/O mode and state. See the Coils section above for digital I/O number mapping.
Address |
Description |
---|---|
0-5 |
Digital I/O mode (Input = 1, Output = 0) |
100-105 |
Digital I/O state (High = 1, Low = 0) |
Holding registers¶
Each address contains a 16bit value.
READ/WRITE (the stored values correspond to the last given command, not the current robot state)
Accepted Modbus functions:
0x03: READ_HOLDING_REGISTERS
0x06: WRITE_SINGLE_REGISTER
Address |
Description |
---|---|
0-5 |
Joints (mrad) |
10-12 |
Position x,y,z (mm) |
13-15 |
Orientation roll, pitch, yaw (mrad) |
100 |
Sends Joint Move command with stored joints |
101 |
Sends Pose Move command with stored position and orientation |
102 |
Sends Linear Pose Move command with stored position and orientation |
110 |
Stops current command execution |
150 |
Is executing command flag |
151 |
Last command result* |
152 |
Last command data result (if not vision related) |
153 - 158 |
Vision - Target pose result |
159 |
Vision - Shape of the object found (-1: ANY, 1: CIRCLE, 2: SQUARE, 3: TRIANGLE, 0: NONE) |
160 |
Vision - Color of the object found (-1: ANY, 1: BLUE, 2: RED, 3: GREEN, 0: NONE) |
200-299 |
Can be used to store your own variables |
300 |
Learning Mode (On = 1, Off = 0) |
301 |
Joystick Enabled (On = 1, Off = 0) |
310 |
Requests new calibration |
311 |
Starts auto calibration |
312 |
Starts manual calibration |
401 |
Gripper open speed (100-1000) |
402 |
Gripper close speed (100-1000) |
500 |
Updates the tool id according to the gripper plugged (gripper 1: 11, gripper 2: 12, gripper 3: 13, vaccum pump: 31) |
501 |
Stores the tool id |
510 |
Opens gripper previously updated |
511 |
Closes gripper previously updated |
512 |
Pulls air vacuum pump with id 31 |
513 |
Pushes air vacuum pump with id 31 |
520 |
Updates the conveyor id and enable it |
521 |
Detaches or disables the conveyor previously enabled and updated |
522 |
Starts the conveyor previously enabled and updated |
523 |
Sets the conveyor direction (backward = number_to_raw_data(-1), forward = 1) |
524 |
Sets the conveyor speed (0-100)(%) |
525 |
Stores the conveyor id |
526 |
Stops conveyor previously enabled and updated |
600 |
TCP - Enables or disables the TCP function (Tool Center Point). |
601 |
Activates the TCP function (Tool Center Point) and defines the transformation between the tool_link frame and the TCP frame. |
610 |
Vision - Gets target pose from relative pose, with stored relative pose and height_offset |
611 |
Vision - Gets target pose from camera, with stored workspace name, height offset, shape and color |
612 |
Vision - Vision pick, with stored workspace name, height offset, shape and color |
613 |
Vision - Moves to object, with stored workspace name, height offset, shape and color |
614 |
Vision - Detects object, with stored workspace name, shape and color |
620 |
Vision - Stores workspace’s height offset |
621 |
Vision - Stores relative pose x_rel |
622 |
Vision - Stores relative pose y_rel |
623 |
Vision - Stores relative pose yaw_rel |
624 |
Vision - Stores requested shape (-1: ANY, 1: CIRCLE, 2: SQUARE, 3: TRIANGLE) |
625 |
Vision - Stores requested color (-1: ANY, 1: BLUE, 2: RED, 3: GREEN) |
626 - max 641 |
Vision - Stores workspace’s name, as a string encoded in 16 bits hex (see examples on how to store a workspace name from a client) |
‘*’ The “Last command result” gives you more information about the last executed command:
0: no result yet
1: success
2: command was rejected (invalid params, …)
3: command was aborted
4: command was canceled
5: command had an unexpected error
6: command timeout
7: internal error
Input registers¶
Each address contains a 16bit value.
READ-ONLY.
Accepted Modbus functions:
0x04: READ_INPUT_REGISTERS
Address |
Description |
---|---|
0-5 |
Joints (mrad) |
10-12 |
Position x,y,z (mm) |
13-15 |
Orientation roll, pitch, yaw (mrad) |
200 |
Selected tool ID (0 for no tool) |
300 |
Learning Mode activated |
400 |
Motors connection up (Ok = 1, Not ok = 0) |
401 |
Calibration needed flag |
402 |
Calibration in progress flag |
403 |
Raspberry Pi temperature |
404 |
Raspberry Pi available disk size |
405 |
Raspberry Pi ROS log size |
406 |
Ned RPI image version n.1 |
407 |
Ned RPI image version n.2 |
408 |
Ned RPI image version n.3 |
409 |
Hardware version (1 or 2) |
530 |
Conveyor 1 connection state (Connected = 1 , Not connected = 0) |
531 |
Conveyor 1 control status ( On = 0, Off = 1) |
532 |
Conveyor 1 Speed (0-100 (%)) |
533 |
Conveyor 1 direction (Backward = -1, Forward = 1) |
540 |
Conveyor 2 connection state (Connected = 1 , Not connected = 0) |
541 |
Conveyor 2 control status ( On = 0, Off = 1) |
542 |
Conveyor 2 Speed (0-100 (%)) |
543 |
Conveyor 2 direction (Backward = -1, Forward = 1) |