Skip to content

Commit fec21cf

Browse files
committed
ADD: modbus+gripper communication test
1 parent 19f55ba commit fec21cf

File tree

1 file changed

+94
-0
lines changed

1 file changed

+94
-0
lines changed
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
#include <stdio.h>
2+
#include <unistd.h>
3+
#include <modbus.h>
4+
5+
#define SERVER_ID 0x09;
6+
7+
int main(void) {
8+
modbus_t *mb;
9+
uint16_t tab_reg[32];
10+
11+
mb = modbus_new_tcp("/tmp/ttyUR", 115200, 'N', 8, 1);
12+
modbus_set_slave(SERVER_ID);
13+
modbus_set_debug(TRUE);
14+
modbus_connect(mb);
15+
printf("\nConnected\n");
16+
17+
// /* Read 5 registers from the address 0 */
18+
// modbus_read_registers(mb, 2000, 6, tab_reg);
19+
20+
// printf("Status: %.2X %.2X %.2X %.2X %.2X %.2X\n" tab_reg[0], tab_reg[0], tab_reg[0], tab_reg[0], tab_reg[0], tab_reg[0]);
21+
22+
23+
// Modbus RTU example
24+
printf("Step 1 Activation Request (clear and set rACT)\n");
25+
uint16_t activation_request_register_reset = [0x00, 0x00, 0x00];
26+
modbus_write_registers(mb, 0x03E8, 3, activation_request_register_reset);
27+
28+
uint16_t activation_request_register_set = [0x01, 0x00, 0x00];
29+
modbus_write_registers(mb, 0x03E8, 3, activation_request_register_set);
30+
31+
32+
printf("Step 2: Read Gripper status until the activation is completed\n");
33+
uint16_t activation_status = [0x0000];
34+
uint16_t activation_status_not_complete = [0x1100];
35+
uint16_t activation_status_complete = [0x3100];
36+
37+
modbus_read_registers(mb, 0x07D0, 1, activation_status);
38+
39+
while (activation_status[0] != activation_status_complete[0]){
40+
printf("Gripper not yet activated\n");
41+
modbus_read_registers(mb, 0x07D0, 1, activation_status);
42+
usleep(100 * 1000); // ms * 1000
43+
}
44+
printf("Gripper activated\n");
45+
46+
printf("BYPASS: Step 3: Move the robot to the pick-up location\n");
47+
48+
printf("Step 4: Close the Gripper at full speed and full force\n");
49+
uint16_t close_gripper_request_register = [0x0900, 0x00FF, 0xFFFF];
50+
modbus_write_registers(mb, 0x03E8, 3, close_gripper_request_register);
51+
52+
printf("Step 5: Read Gripper status until the grip is complete\n");
53+
uint16_t gripper_status_closing = [0x0000];
54+
uint16_t gripper_status_motion = [0x3900, 0x00FF, 0x0E0A];
55+
uint16_t gripper_status_closed_obj = [0xB900, 0x00FF, 0xBD00]; // gOBJ==0x02 or 0x03
56+
uint16_t gripper_status_requested_position_no_obj = [0xF900, 0x00FF, 0xBD00]; // gOBJ==0x02 or 0x03
57+
58+
modbus_read_registers(mb, 0x07D0, 3, gripper_status_closing);
59+
60+
while (gripper_status_closing[0] != gripper_status_closed_obj[0] || gripper_status_closing[0] != gripper_status_requested_position_no_obj[0]){
61+
printf("Gripper not yet closed\n");
62+
modbus_read_registers(mb, 0x07D0, 3, gripper_status_closing);
63+
usleep(100 * 1000); // ms * 1000
64+
}
65+
printf("Gripper closed. Wiating 2s before continuation\n");
66+
67+
sleep(2);
68+
69+
printf("BYPASS: Step 6: Move the robot to the release location\n");
70+
71+
printf("Step 7: Open the Gripper at full speed and full force\n");
72+
uint16_t open_gripper_request_register = [0x0900, 0x0000, 0xFFFF];
73+
modbus_write_registers(mb, 0x03E8, 3, open_gripper_request_register);
74+
75+
printf("Step 8: Read Gripper status until opening is complete\n");
76+
uint16_t gripper_status_opening = [0x0000];
77+
// uint16_t gripper_status_motion = [0x3900, 0x00FF, 0x0E0A];
78+
// uint16_t gripper_status_closed_obj = [0xB900, 0x00FF, 0xBD00]; // gOBJ==0x02 or 0x03
79+
// uint16_t gripper_status_requested_position_no_obj = [0xF900, 0x00FF, 0xBD00]; // gOBJ==0x02 or 0x03
80+
81+
modbus_read_registers(mb, 0x07D0, 3, gripper_status_opening);
82+
83+
while (gripper_status_opening[0] != gripper_status_closed_obj[0] || gripper_status_opening[0] != gripper_status_requested_position_no_obj[0]){
84+
printf("Gripper not yet opened\n");
85+
modbus_read_registers(mb, 0x07D0, 3, gripper_status_opening);
86+
usleep(100 * 1000); // ms * 1000
87+
}
88+
printf("Gripper opened\n");
89+
90+
printf("Test finished, closing connection to the Gripper\n");
91+
92+
modbus_close(mb);
93+
modbus_free(mb);
94+
}

0 commit comments

Comments
 (0)