Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
sdk:scripts:modbus-tcp-rtu-gateway [2022/09/05 12:07]
schmitt
sdk:scripts:modbus-tcp-rtu-gateway [2022/11/08 07:48] (current)
klueppel
Line 7: Line 7:
 DEV         = sprintf("​SERIAL%d",​ (DEVIDX + 1)); DEV         = sprintf("​SERIAL%d",​ (DEVIDX + 1));
 TCP_PORT ​   = 1502; TCP_PORT ​   = 1502;
 +DEBUG       = 0;
 +
 +
  
 /* check serial port config */ /* check serial port config */
Line 16: Line 19:
  
 /* set attributes */ /* set attributes */
-ret = nb_serial_setattr(DEV, ​19200, 8, 1, 0, 0);+ret = nb_serial_setattr(DEV, ​115200, 8, 1, 0, 0);
 if (ret != 0) { if (ret != 0) {
     nb_syslog("​Could not set serial attributes: %d", ret);     nb_syslog("​Could not set serial attributes: %d", ret);
Line 58: Line 61:
     exit(1);     exit(1);
 } }
 +if (DEBUG == 1) { 
 +    nb_modbus_set_debug(serial_fd,​ true);  
 +}    ​
 printf("​Listening for connections on port %d\n", TCP_PORT); printf("​Listening for connections on port %d\n", TCP_PORT);
 +
  
 tcp_client = -1; tcp_client = -1;
 registered = 0; registered = 0;
 +
  
 while (1) { while (1) {
Line 71: Line 78:
             sleep(1);             sleep(1);
             continue;             continue;
-        } +        ​} else { 
 +            if (DEBUG == 1) { 
 +                nb_modbus_set_debug(tcp_client,​ true); 
 +            } 
 +        ​}
     }     }
  
Line 100: Line 111:
             nb_syslog("​Unable to extract payload (%s)", nb_modbus_last_error());​             nb_syslog("​Unable to extract payload (%s)", nb_modbus_last_error());​
         } else {         } else {
 +            /* Modbus TCP - RTU must set the slave id */    ​
 +       ​  ​   ret = nb_modbus_set_slave (serial_fd, payload[0]);​
 +            if (ret > 0) {
 +                nb_syslog("​Unable to set modbus slave id");
 +                break;
 +            }
 +
             response = nb_modbus_send_raw(serial_fd,​ payload);             response = nb_modbus_send_raw(serial_fd,​ payload);
             if (is_void(response)) {             if (is_void(response)) {