您的位置:首页 > 健康 > 美食 > 湖北企业年报网上申报入口_胶州网站建设案例_资源搜索神器_网站seo收录工具

湖北企业年报网上申报入口_胶州网站建设案例_资源搜索神器_网站seo收录工具

2025/3/20 10:02:49 来源:https://blog.csdn.net/lymdcsdn/article/details/146224302  浏览:    关键词:湖北企业年报网上申报入口_胶州网站建设案例_资源搜索神器_网站seo收录工具
湖北企业年报网上申报入口_胶州网站建设案例_资源搜索神器_网站seo收录工具

网编高级 day02

  • 3. Modbus RTU
    • 3.1. Modbus RTU和Modbus TCP的区别
    • 3.2. Modbus RTU 特点
    • 3.3. Modbus RTU协议格式
  • 4. Modbus 库
    • 4.1. 函数接口
    • 4.2. 编程流程

3. Modbus RTU

3.1. Modbus RTU和Modbus TCP的区别

  1. 报文头:Modbus RTU只有从机id一位,Modbus TCP有7位
  2. CRC校验:Modbus RTU应用于串口通信,需要校验码;Modbus TCP应用于网络通信,网络协议中自带校验
  3. 通信:Modbus TCP通过socket网络通信,需要创建套接字;Modbus RTU需要写入串口信息

3.2. Modbus RTU 特点

  1. 主从问答通信
  2. 串口参数:波特率9600;数据位8;停止位1;无流控

3.3. Modbus RTU协议格式

地址码+功能码+数据+校验码
地址码: 1字节,从机ID,1~247
功能码: 1字节,同Modbus TCP
数据: 起始地址,数量,数据……同Modbus TCP
校验码: 2字节,校验范围:对前面三部分,可以通过函数生成

4. Modbus 库

4.1. 函数接口

modbus_tcp函数接口

modbus_t*   modbus_new_tcp(const char *ip, int port)

功能:以TCP方式创建Modbus实例,并初始化
参数:
 ip :ip地址
 port:端口号
返回值:成功:Modbus实例,失败:NULL

int modbus_set_slave(modbus_t *ctx, int slave)

功能:设置从机ID
参数:
 catx :Modbus实例
 slave:从机ID
返回值:成功:0,失败:-1

int   modbus_connect(modbus_t *ctx)

功能:和从机(slave)建立连接
参数:
 ctx:Modbus实例
返回值:成功:0,失败:-1

void   modbus_free(modbus_t *ctx)

功能:释放Modbus实例
参数:ctx:Modbus实例

void   modbus_close(modbus_t *ctx)

功能:关闭套接字
参数:ctx:Modbus实例

寄存器操作

int modbus_read_bits(modbus_t *ctx, int addr, int nb, uint8_t *dest)
int  modbus_read_input_bits(modbus_t *ctx, int addr, int nb, uint8_t *dest)
int  modbus_read_registers(modbus_t *ctx, int addr, int nb, uint16_t *dest)
int   modbus_read_input_registers(modbus_t *ctx, int addr, int nb, uint16_t *dest)

功能:0x01 0x02 0x03 0x04
参数:
 ctx:modbus句柄
 addr:起始地址
 nb:寄存器个数
 dest:读到的寄存器的值

int  modbus_write_bit(modbus_t *ctx, int addr, int status);
int  modbus_write_register(modbus_t *ctx, int addr, int value);

功能:0x04 0x05
参数:
 status:线圈状态
 value:写入的数据

int  modbus_write_bits(modbus_t *ctx, int addr, int nb, const uint8_t *src);
int  modbus_write_registers(modbus_t *ctx, int addr, int nb, const uint16_t *src);

功能:0x0f 0x10
参数:
 src:多个寄存器的值

4.2. 编程流程

  1. 创建实例——modbus_new_tcp
  2. 设置从机id——modbus_set_slave
  3. 连接从机——modbus_connect
  4. 寄存器操作——功能码对应函数
  5. 关闭套接字——modbus_close
  6. 释放示例——modbus_free

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com