写在前面
在第六篇中我们介绍了基于libmodbus库的演示代码,那本篇博客就详细介绍一下第六篇的代码中使用的基于该库的API函数。另各位读者,Modbus相关知识受众较少,如果觉得我的专栏文章有帮助,请一定点个赞,在此跪谢,这是我能持续更下去的动力!
API介绍
modbus_new_rtu()
完整函数签名为:
modbus_t *modbus_new_rtu(const char *device, int baud, char parity, int data_bit, int stop_bit);
函数功能介绍(原文):The modbus_new_rtu() function shall allocate and initialize a modbus_t
structure to communicate in RTU mode on a serial line.
翻译一下就是:该方法将会分配并初始化一个modbus_t的结构体,以在串行线上进行RTU模式的通信,即可以理解为建立一个RTU容器。具体的参数含义介绍如下:
modbus_set_slave()
完整的函数签名为:
int modbus_set_slave(modbus_t *ctx, int slave);
函数功能介绍(原文):The modbus_set_slave() function shall set the slave number in the libmodbus context.
翻译一下就是:该方法将会在libmodbus上下文中设置从机号。即先调用modbus_new_rtu()函数来生成一个上下文,然后再在这个上下文中设置你想要进行通讯的从机号,即在modbus slave中设置的Slave ID。具体参数含义介绍如下:
modbus_connect()
完整的函数签名为:
int modbus_connect(modbus_t *ctx);
函数功能介绍:The modbus_connect() function shall establish a connection to a Modbus server, a network or a bus using the context information of libmodbus context given in argument.
翻译一下就是:基于前面给定的libmodbus上下文来建立一个连接,连接正常建立后,即可开始进行通信。参数无需介绍,即libmodbus上下文。
modbus_write_bit()
完整的函数签名为:
int modbus_write_bit(modbus_t *ctx, int addr, int status);
函数功能介绍:The modbus_write_bit() function shall write the status of status
at the address addr
of the remote device. The value must be set to TRUE
or FALSE
.
翻译一下就是:该方法将会在远端设备的指定addr处将状态值写入(值为0或1,即TRUE or FALSE),具体参数介绍如下:
modbus_read_bits()
完整的函数签名为:
int modbus_read_bits(modbus_t *ctx, int addr, int nb, uint8_t *dest);
函数功能介绍:The modbus_read_bits() function shall read the status of the nb
bits (coils) to the address addr
of the remote device. The result of reading is stored in dest
array as unsigned bytes (8 bits) set to TRUE
or FALSE
.
翻译一下就是:该方法将会读取远端设备指定addr地址的nb个bit的状态信息,然后将其值存入到dest数组中。具体参数介绍如下:
modbus_write_bits()
完整的函数签名为:
int modbus_write_bits(modbus_t *ctx, int addr, int nb, const uint8_t *src);
与前面介绍的modbus_write_bit()类似,只不过这个是批量对远端设备进行写入,待写入的值存储在src中。src数组中的值必须包含状态值。
另外还有很多读写方法,类似modbus_write_registers()等等,大家可以去官网进行查阅并理解,传送门:libmodbus reference.