贝加莱视频笔记

一、Modbus通信概览

1.Modbus是一种串行通讯协议,是为了PLC的数据通信而设计发明的,广泛用于串口,以太网等物理链路上,基于Master/slave模式,一主多从(多主多从)

寄存器种类 说明 PLC IO 举例
线圈 Cool 可读可写 DO 数字量输出 电磁阀,二极管
离散输入 Discrete Input 只读 DI数字量输入 拨码开关,接近开关
保持寄存器 Holding Register 可读可写 AO模拟量输出 电压值,PID参数
输入寄存器 Input Register 只读 AI模拟量输入 温度传感器
寄存器种类 寄存器地址 常用功能码 读取权限
线圈 Cool 00001-09999 01,05,0F 读写
离散输入 Discrete Input 10001-19999 02 只读
保持寄存器 Holding Register 30001-39999 04 读写
输入寄存器 Input Register 40001 03,06,0F 只读

1.介质区分

名称 连接方式 工作状态 区别
RS232 点对点链接 全双工 使用一根TX线一根RX线连接,所以只能进行点对点连接,即一主一从的连接,由于收发线相互独立,可以进行全双工通讯
RS485 总线型链接 半双工 一种总线型的连接,可以把多个设备串接在一起形成一种菊花链拓扑,由于采用两根双绞线组成的一种差分信号传输,所以只能同时进行传输或接收中的一种
RS422 总线型链接 全双工 相对于485,采用了两对如485的差分信号,所以可以同时收发
Ethernet 灵活拓扑 全双工 以太网,支持的拓扑结构非常灵活

2.Modbus分类

常见的三种模式:

名称 备注
Modbus RTU(UART) 自行填写CRC、二进制数据
Modbus ASCII(UART) 自行填写CRC、ASCII码数据
Modbus TCP(Ethernet TCP/IP) TCP协议栈负责CRC、丢包由TCP协议栈处理、二进制数据

前两种区别在于ASCII码可以读懂,比二进制占用更多的数据,报文会更长。在串行通讯中,都需要自行填写CRC校验字段。

3.Modbus on B&R

在进行modbus通讯之前,要根据设备选取通讯方式(选取是串口还是以太网)

3.1串口方式

主栈

第一步到logical view中添加库,在B&R libraries中找到DRV-mbus,并添加到libraries的文件夹下。
第二步,添加这个库的例程,选择Library Samples,选中DRV-mbus这个库,把对应的例程添加。
在添加的例程中可以看到一个主栈,一个从栈两个对应的功能模式,并且都是使用的DRV-mbus这个库。
对于主栈,需要结合一个datamod使用,打开datamod,在datamod中需要填写一个配置文件,这个配置文件就是用来控制主栈如何访问从结点的行为,且有对应说明。

第一段 第二段 第三段 第四段 第五段 第六段
控制变量 功能码 从栈地址 主栈上的变量 寄存器的偏移 寄存器的数量
当控制变量为真,执行modbus功能码

通过填写这样一个配置文件的方式,来实现串行的modbus的通讯。对应的在程序当中,也会调用modbus的功能块,会先进行打开,在进行一个周期性的调用。

从栈

对于从栈来说,就不需要填写这样的一个配置文件。从栈相当于被动的等待主栈的请求访问。
在调用从栈功能块的时候,除了要设置好串行口的地址以及串行口的参数以外,主要要填写四个寄存器对应的程序当中的变量。例如填写ADR(MB[0]),当主栈进行读写请求的时候访问到的就是这些变量里的值,这个就是所介绍的串行的modbus通讯的方式。

3.2以太网Modbus TCP通讯方式

在Modbus TCP一个应用当中可以通古以太网的configuration来实现我们所需要的功能(在physical View中找到),打开以太网配置并拉到底部,可以通过配置激活一个modbus功能,可以同时打开主,从功能,这里的操作会在下一节里介绍。

内容来源为链接: Modbus Overview.

版权声明:本文为CSDN博主「moehre」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/moehre/article/details/122566636

一、Modbus通信概览

1.Modbus是一种串行通讯协议,是为了PLC的数据通信而设计发明的,广泛用于串口,以太网等物理链路上,基于Master/slave模式,一主多从(多主多从)

寄存器种类 说明 PLC IO 举例
线圈 Cool 可读可写 DO 数字量输出 电磁阀,二极管
离散输入 Discrete Input 只读 DI数字量输入 拨码开关,接近开关
保持寄存器 Holding Register 可读可写 AO模拟量输出 电压值,PID参数
输入寄存器 Input Register 只读 AI模拟量输入 温度传感器
寄存器种类 寄存器地址 常用功能码 读取权限
线圈 Cool 00001-09999 01,05,0F 读写
离散输入 Discrete Input 10001-19999 02 只读
保持寄存器 Holding Register 30001-39999 04 读写
输入寄存器 Input Register 40001 03,06,0F 只读

1.介质区分

名称 连接方式 工作状态 区别
RS232 点对点链接 全双工 使用一根TX线一根RX线连接,所以只能进行点对点连接,即一主一从的连接,由于收发线相互独立,可以进行全双工通讯
RS485 总线型链接 半双工 一种总线型的连接,可以把多个设备串接在一起形成一种菊花链拓扑,由于采用两根双绞线组成的一种差分信号传输,所以只能同时进行传输或接收中的一种
RS422 总线型链接 全双工 相对于485,采用了两对如485的差分信号,所以可以同时收发
Ethernet 灵活拓扑 全双工 以太网,支持的拓扑结构非常灵活

2.Modbus分类

常见的三种模式:

名称 备注
Modbus RTU(UART) 自行填写CRC、二进制数据
Modbus ASCII(UART) 自行填写CRC、ASCII码数据
Modbus TCP(Ethernet TCP/IP) TCP协议栈负责CRC、丢包由TCP协议栈处理、二进制数据

前两种区别在于ASCII码可以读懂,比二进制占用更多的数据,报文会更长。在串行通讯中,都需要自行填写CRC校验字段。

3.Modbus on B&R

在进行modbus通讯之前,要根据设备选取通讯方式(选取是串口还是以太网)

3.1串口方式

主栈

第一步到logical view中添加库,在B&R libraries中找到DRV-mbus,并添加到libraries的文件夹下。
第二步,添加这个库的例程,选择Library Samples,选中DRV-mbus这个库,把对应的例程添加。
在添加的例程中可以看到一个主栈,一个从栈两个对应的功能模式,并且都是使用的DRV-mbus这个库。
对于主栈,需要结合一个datamod使用,打开datamod,在datamod中需要填写一个配置文件,这个配置文件就是用来控制主栈如何访问从结点的行为,且有对应说明。

第一段 第二段 第三段 第四段 第五段 第六段
控制变量 功能码 从栈地址 主栈上的变量 寄存器的偏移 寄存器的数量
当控制变量为真,执行modbus功能码

通过填写这样一个配置文件的方式,来实现串行的modbus的通讯。对应的在程序当中,也会调用modbus的功能块,会先进行打开,在进行一个周期性的调用。

从栈

对于从栈来说,就不需要填写这样的一个配置文件。从栈相当于被动的等待主栈的请求访问。
在调用从栈功能块的时候,除了要设置好串行口的地址以及串行口的参数以外,主要要填写四个寄存器对应的程序当中的变量。例如填写ADR(MB[0]),当主栈进行读写请求的时候访问到的就是这些变量里的值,这个就是所介绍的串行的modbus通讯的方式。

3.2以太网Modbus TCP通讯方式

在Modbus TCP一个应用当中可以通古以太网的configuration来实现我们所需要的功能(在physical View中找到),打开以太网配置并拉到底部,可以通过配置激活一个modbus功能,可以同时打开主,从功能,这里的操作会在下一节里介绍。

内容来源为链接: Modbus Overview.

版权声明:本文为CSDN博主「moehre」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/moehre/article/details/122566636

生成海报
点赞 0

moehre

我还没有学会写个人说明!

暂无评论

相关推荐

贝加莱视频笔记

一、Modbus通信概览 1.Modbus是一种串行通讯协议,是为了PLC的数据通信而设计发明的,广泛用于串口,以太网等物理链路上,基于Master/slave模式,一主多

ESP8266无法下载问题

最近ESP8266开发板NodeMCU无法下载了,换了一块新板子也不行,暂时搞不定,先记录下来。 make flash时尝试下载显示如下内容: Toolchain path: /opt/