Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
sdk:scripts:modbus-tcp-rtu-gateway [2022/06/28 12:10] dodenhoeftsdk: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)) {
Line 126: Line 144:
 close(serial_fd); close(serial_fd);
 exit(0); exit(0);
 +
 </code> </code>