[00][01][00][00][00][06][F7][03][00][00][00][05]
Waiting for a confirmation...
<80><01><00><00><00><06><F7><03><00>
Invalid TID received 0x8001 (not 0x1)
63 bytes flushed
Invalid data
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <modbus.h>
int main(int argc, char *argv[])
{
modbus_t *ctx;
uint16_t tab_reg[64];
int rc;
int i;
ctx = modbus_new_tcp("192.168.1.11", 9100);
modbus_set_error_recovery(ctx, MODBUS_ERROR_RECOVERY_LINK |MODBUS_ERROR_RECOVERY_PROTOCOL);
if (modbus_connect(ctx) == -1) {
fprintf(stderr, "Connection failed: %s\n", modbus_strerror(errno));
modbus_free(ctx);
return -1;
}
rc = modbus_set_slave(ctx,247);
if (rc == -1) {
fprintf(stderr, "Invalid slave ID\n");
modbus_free(ctx);
return -1;
}
modbus_set_debug(ctx, 1);
//modbus_set_response_timeout(ctx, 0, 200000);
rc = modbus_read_registers(ctx,0,5, tab_reg);
if (rc == -1) {
fprintf(stderr, "%s\n", modbus_strerror(errno));
return -1;
}
for (i=0; i < rc; i++) {
printf("reg[%d]=%d (0x%X)\n", i, tab_reg[i], tab_reg[i]);
}
free(tab_reg);
modbus_close(ctx);
modbus_free(ctx);
return 0;
}
--
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes "libmodbus".
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse libmodbus+unsubscribe@googlegroups.com.
Pour obtenir davantage d'options, consultez la page https://groups.google.com/d/optout.
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse libmodbus+...@googlegroups.com.
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse libmodbus+unsubscribe@googlegroups.com.
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse libmodbus+unsubscribe@googlegroups.com.
#include <stdio.h>#include <unistd.h>#include <string.h>#include <stdlib.h>#include <errno.h>#include <modbus.h>
int main(int argc, char *argv[]){ modbus_t *ctx;
uint16_t tab_reg[MODBUS_MAX_READ_REGISTERS]; uint32_t old_response_to_sec; uint32_t old_response_to_usec; uint32_t old_byte_to_sec; uint32_t old_byte_to_usec;
int rc; int i;
ctx = modbus_new_tcp("192.168.1.11", 9100);
modbus_get_response_timeout(ctx, &old_response_to_sec, &old_response_to_usec); printf("Response timeout sec,usec: %d,%d\n",old_response_to_sec,old_response_to_usec); modbus_get_byte_timeout(ctx, &old_byte_to_sec, &old_byte_to_usec); printf("Byte timeout sec,usec: %d,%d\n",old_byte_to_sec,old_byte_to_usec);
modbus_set_response_timeout(ctx,2,0); //modbus_set_byte_timeout(ctx, 0, 3000);
modbus_set_debug(ctx, 1);
modbus_set_error_recovery(ctx, MODBUS_ERROR_RECOVERY_LINK |MODBUS_ERROR_RECOVERY_PROTOCOL);
if (modbus_connect(ctx) == -1) { fprintf(stderr, "Connection failed: %s\n", modbus_strerror(errno)); modbus_free(ctx); return -1; }
int ret; ret=modbus_read_registers(ctx,1100,100, tab_reg); printf("ret:%d\n",ret);
for (i=0; i < rc; i++) { printf("reg[%d]=%d (0x%X)\n", i, tab_reg[i], tab_reg[i]); }
modbus_close(ctx); modbus_free(ctx);}
segfault remained with allocation the remote device is called fx0-gmod by flexisoft/sick. There is a table on operation manual of the product there it says unit id=1 so i tried with setting slave to 1,247 some other values and without setting slave just in case. here is the table i mentioned http://de.tinypic.com/r/6idv6o/9---output---
Response timeout sec,usec: 0,500000Byte timeout sec,usec: 0,500000Segmentation fault (core dumped)---without set response timout---Response timeout sec,usec: 0,500000Byte timeout sec,usec: 0,500000Connecting to 192.168.1.11[00][01][00][00][00][06][FF][03][04][4C][00][05]Waiting for a confirmation...<00><2E><00><32><00><00><00><00><00>Invalid TID received 0x2E (not 0x1)63 bytes flushedret:-1
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse libmodbus+...@googlegroups.com.
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse libmodbus+unsubscribe@googlegroups.com.