1、使用MThing模拟数据
注意:
(1)箭头处一定留空,不然只有本机能收到数据,一开始误以为这是绑定监听IP,被坑了好长时间。
会提示:error connection reset by peer: read
(2)如果端口配置错误会提示:
[Errno 9] Bad file descriptor
(3)另外设置处于选中状态时也会无法获取数据。
2、模拟一个浮点数
3、代码如下
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include "./include/modbus.h"
#include <unistd.h>
int main(void)
{
modbus_t *ctx;
uint16_t tab_reg[32] = {0};
ctx = modbus_new_tcp("192.168.3.118", 502); //由于是tcp client 连接,在同一程序中相同的端口可以连接多次
modbus_set_debug(ctx, TRUE); //设置debug模式
modbus_set_slave(ctx, 1); //从机地址
modbus_connect(ctx);
modbus_set_response_timeout(ctx, 50, 10000000);
modbus_set_error_recovery(ctx,
MODBUS_ERROR_RECOVERY_LINK | MODBUS_ERROR_RECOVERY_PROTOCOL);
while (1)
{
//printf("test\n");
int regs = modbus_read_registers(ctx, 100, 2, tab_reg);
//printf("test1\n");
// regs=modbus_write_register(mb,0x00,94);
float f=modbus_get_float_dcba(tab_reg);
printf("%d %d %d %d %d %f\n", regs, tab_reg[0], tab_reg[1], tab_reg[2], tab_reg[3],f);
sleep(3);
}
modbus_close(ctx);
modbus_free(ctx);
return 0;
}
4、运行结果