如何用PicoScope解码Modbus串行协议_一种低成本解码方案


标签:
pico示波器modbusascii解码器 |
分类: 硬件开发 |
介绍
Modbus是一种低速串行数据协议,通常用于工业应用,其中监控计算机(主)控制或监视多个远程设备(从设备)。该规范最初由Modicon(现为Schneider Electric)于1979年发布,用于其可编程逻辑控制器(PLC)。在标准的Modbus网络中,有一个主站,最多247个从站,每个从站具有1到247的唯一地址。
英国PicoScope软件支持Modbus RTU和Modbus ASCII的协议解析,可免费实时解码。
Modbus协议版本
已经开发了几种版本的Modbus以适应所使用的传输介质。最常见的是:
- Modbus RTU(远程终端单元) - 通常用于RS-232单端或RS-485差分线路,使用二进制编码和CRC错误检查。
- Modbus
ASCII
- 也适用于RS-232或RS-485线路,使用ASCII字符而不是二进制,使其更具可读性但效率更低,并且使用效率较低的LRC错误检查。 ASCII模式使用ASCII字符开始和结束消息,而RTU使用3.5个字符时间的时间间隔进行成帧。Modbus ASCII消息需要两倍的字节来传输与Modbus RTU消息相同的内容。 - Modbus
TCP
- 用于TCP / IP网络,通常是以太网(PicoScope目前不支持)。
Modbus框架结构
Modbus协议定义了协议数据单元(PDU),它独立于底层通信层。根据所使用的总线或网络的类型,可以在应用数据单元(ADU)中引入附加字段。
协议数据单元(PDU)包含:
- 该功能代码来执行,表示这样的动作。
- 从主设备发送到从设备的帧的数据字段,其中包含有关由功能代码定义的操作的附加信息。这可以包括离散和寄存器地址,要处理的项目数量以及字段中实际数据字节数等项目。在某些类型的请求中,数据字段可能不存在(长度为零)。
应用数据单元(ADU)包含:
- 的协议数据单元(PDU)
- 在从ID
- 该校验码
错误代码
数据存储
数据存储在四个不同表中的从设备中。其中两个存储称为线圈和离散输入的开 - 关(1位)值,两个存储数值作为称为寄存器的16位字。每个都是只读或读/写。
每个表有9999个位置。
功能代码
Modbus功能代码分为三类:
- 公共功能代码 - 从1到127,除了用户定义的代码,由Modbus.org社区验证,公开记录并保证唯一。
- 用户定义的功能代码 - 分为65到72和100到110两个范围。
- 保留功能代码 - 某些公司用于传统产品,不可供公众使用。
表中显示了常用功能代码的示例。
Modbus的完整规范可从www.modbus.org免费获得
用Picoscope解码Modbus
发生错误时,使用Modbus协议解码的PicoScope进行故障排除可以将解码的帧与示波器捕获的数据相关联。例如,这有助于识别由于噪声,干扰或不正确的电压电平而导致数据损坏的位置。
在PicoScope上获取Modbus数据
使用两个示波器通道,一个用于主传输线,另一个用于从传输线。如果Modbus通过RS-422或RS-485传输,请使用差分探测。
将存储器长度设置为足以获取所需数量的帧,并使用足够的采样分辨率来解析各个位。
或者,使用缓冲存储器索引捕获帧的短脉冲,同时忽略其间的任何死区时间。
使用水平缩放控件可以详细查看单个帧。
添加第二个范围视图以同时显示主数据帧和从属数据帧。
设置Modbus解码器
从“
单击“
在设置窗口中,大多数字段都会自动填充。用户只需定义哪个通道是主通道,哪个通道是从通道。
如果选中Graph,则颜色键控的迹线将出现在图形显示中,与采集的数据时间相关。
如果选中Table,则所有数据将以表格格式显示。该表有几个有用的功能:
- 双击图形格式的框架,相应的框架将在表格中突出显示。
- 选择“
导出”以CSV格式保存表格数据。 - 设置链接文件,以便表中的数据可以显示为有意义的文本。
- 在表上过滤以在任何字段中搜索特定值 - 例如,无效的CRC。
总结
Modbus RTU和Modbus ASCII解码器是PicoScope软件版本6.13.5及更高版本的标准功能,可与所有实时PicoScope型号配合使用。
--------------------------------------------------------------------------------------------------------------------

-
0(0%)
-
0(0%)
-
0(0%)