修改增加modbus_tools软件通讯中断重连机制

main
huyizhong 11 months ago
parent 90a1dc8b52
commit bb8b705bf1

@ -1,5 +1,5 @@
[MODBUS_SLAVE] [MODBUS_SLAVE]
SLAVE_IP_ADDR=192.168.50.155 SLAVE_IP_ADDR=192.168.1.16
SLAVE_IP_PORT=502 SLAVE_IP_PORT=502

@ -92,19 +92,27 @@ DWORD WINAPI xModbus_master_Proc(LPVOID lp) {
} }
modbus_set_response_timeout(ctx, 20, 0); modbus_set_response_timeout(ctx, 20, 0);
while (1) {
if (sockt <= 0)
{
sockt = modbus_connect(ctx); sockt = modbus_connect(ctx);
if (sockt == -1) { if (sockt == -1) {
fprintf(stderr, "Connection failed: %s\n", modbus_strerror(errno)); fprintf(stderr, "Connection failed: %s\n", modbus_strerror(errno));
modbus_free(ctx); //modbus_free(ctx);
return -1; Sleep(1);
continue;
}
else
{
printf("Connection Success! socket=%d\n", sockt);
}
} }
unsigned char* src = (unsigned char*)tab_rp_registers; unsigned char* src = (unsigned char*)tab_rp_registers;
while (1)
{ #if 1
#if 0 if (sockt <= 0)
if (sockt < 0) continue;
return -1;
FD_ZERO(&fdset_ro); FD_ZERO(&fdset_ro);
FD_ZERO(&fdset_wr); FD_ZERO(&fdset_wr);
FD_ZERO(&fdset_ex); FD_ZERO(&fdset_ex);
@ -124,18 +132,25 @@ DWORD WINAPI xModbus_master_Proc(LPVOID lp) {
sockt = -1; sockt = -1;
break; break;
} }
if (FD_ISSET(sockt, &fdset_ro)) if (FD_ISSET(sockt, &fdset_wr)) {
#endif #endif
rc = modbus_read_registers(ctx, start_hold_register, number_regs, tab_rp_registers); rc = modbus_read_registers(ctx, start_hold_register, number_regs, tab_rp_registers);
#if 0 #if 1
if (rc == -1) if (rc == -1)
{ {
closesocket(sockt); closesocket(sockt);
sockt = -1; sockt = -1;
printf("End Thread£¡\n"); printf("End Thread£¡\n");
return -1; continue;
} }
#endif #endif
}
else
{
Sleep(1000);
continue;
}
Sleep(3 * 1000); Sleep(3 * 1000);
//xUnsigned_char_hex_out("recv", src, 0, number_regs*2); //xUnsigned_char_hex_out("recv", src, 0, number_regs*2);
xRead_reg_hex_out(start_hold_register, "master recv", src, 0, number_regs * 2); xRead_reg_hex_out(start_hold_register, "master recv", src, 0, number_regs * 2);

Loading…
Cancel
Save