1、官方主页
2、基本使用顺序
(1)初始化指针;
(2)建立连接;
(3)设置从站ID;
(4)读取保持寄存器/读取输入寄存器/读取位;
(5)写单寄存器/写多寄存器/写多位数据;
(6)关闭连接;
3、RTU模式
(1)初始化RTU指针—串口
modbus_t* modbus_new_rtu(const char *device,
int baud,
char parity,
int data_bit,
int stop_bit);
(2)设值串口模式
#define MODBUS_RTU_RS232 0
#define MODBUS_RTU_RS485 1
MODBUS_API int modbus_rtu_set_serial_mode(modbus_t *ctx, int mode);//设值
MODBUS_API int modbus_rtu_get_serial_mode(modbus_t *ctx);//获取
(3)设值RTS模式
#define MODBUS_RTU_RTS_NONE 0
#define MODBUS_RTU_RTS_UP 1
#define MODBUS_RTU_RTS_DOWN 2
MODBUS_API int modbus_rtu_set_rts(modbus_t *ctx, int mode);
MODBUS_API int modbus_rtu_get_rts(modbus_t *ctx);
说明:
设置发送模式的请求,以便在RS 485串行总线上进行通信。默认情况下,模式设置为Modbus_RTU_RTS_NONE,在将数据写入线路之前不发出信号。要启用RTS模式,必须使用MODBUS_RTU_RTS_UUP或MODBUS_RTU_RTS_down值,这些模式启用RTS模式并同时设置极性。当使用Modbus_RTU_RTS_UP时,在启用RTS标志的情况下进行ioctl调用,然后在延迟1ms后将数据写入总线上,然后在禁用RTS标志的情况下进行另一个ioctl调用,并再次发生1ms的延迟。Modbus_RTU_RTS_down模式应用相同的过程,但使用反转的RTS标志。
(4)设值RTS模式的延时
MODBUS_API int modbus_rtu_set_rts_delay(modbus_t *ctx, int us);
MODBUS_API int modbus_rtu_get_rts_delay(modbus_t *ctx);
使用例子:
modbus_t *ctx;
uint16_t tab_reg[