1 前言

MODBUS是一项应用层报文传输协议,是一个请求/应答协议,提供功能码规定的服务,用于在通过不同类型的总线或网络连接的设备之间的客户机/服务器通信。Modbus 串行链路系统可以使用异步串行链路(EIA/TIA-232-E、EIA-422、EIA/TIA-485-A等)进行通信。
本文介绍如何使用格西调试精灵(原格西烽火)通信测试软件编写测试项目,进行调试和测试Modbus通信节点。

2 通信协议

2.1 术语

MODBUS通信协议
MODBUS是OSI 模型第7层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备之间提供客户机/服务器通信。

2.2 通信接口

支持EIA/TIA-232-E、EIA-422、EIA/TIA-485-A等串行接口,支持多点连接,要求9600bps,推荐19200bps,选择实现1200bps,2400bps,4800bp等其他速率。

2.3 数据链路层

Modbus串行链路协议是一个主-从协议。在同一时刻,只有一个主节点连接于总线,一个或多个子节点连接于同一个串行总线。Modbus通信总是由主节点发起。子节点在没有收到来自主节点的请求时,从不会发送数据。子节点之间从不会互相通信。主节点在同一时刻只会发起一个Modbus事务处理。
主节点以两种模式对子节点发出Modbus请求。
单播模式:主节点以特定地址访问某个子节点,子节点接到并处理完请求后,子节点向主节点返回一个报文(一个应答)。在这种模式,一个Modbus事务处理包含 2 个报文,一个来自主节点的请求,一个来自子节点的应答。
广播模式:主节点向所有的子节点发送请求。对于主节点广播的请求没有应答返回。广播请求一般用于写命令。所有设备必须接受广播模式的写功能。地址0是专门用于表示广播数据的。

2.3.1 帧格式

Modbus应用协议定义了简单的独立于其下面通信层的协议数据单元(PDU-Protocol Data Unit)。

在不同总线或网络的Modbus协议映射在协议数据单元之外引入了一些附加的域。发起Modbus事务处理的客户端构造Modbus PDU,然后添加附加的域以构造适当的通信PDU。

2.3.2 传输模式

Modbus串行链路有两种串行传输模式被定义:RTU模式和ASCII模式。
它定义了报文域的位内容在线路上串行的传送,确定了信息如何打包为报文和解码。
Modbus 串行链路上所有设备的传输模式 (和串行口参数) 必须相同。所有设备必须必须实现RTU模式,默认设置必须为RTU模式,ASCII传输模式是选项。

RTU模式
当设备使用RTU(Remote Terminal Unit)模式在Modbus串行链路通信,报文中每个8位字节含有两个4位十六进制字符。这种模式的主要优点是较高的数据密度,在相同的波特率下比ASCII模式有更高的吞吐率。每个报文必须以连续的字符流传送。
RTU 模式每个字节(11位)的格式为:1个起始位,8个数据位,1个奇偶校验位,1个停止位。偶校验是要求的,其它模式(奇校验,无校验)也可以使用。默认校验模式模式必须为偶校验。使用无校验要求2个停止位。

RTU报文帧

ASCII模式
当Modbus串行链路的设备被配置为使用ASCII(American Standard Code for Information Interchange) 模式通信时,报文中的每个8位字节以两个ASCII字符发送。当通信链路或者设备无法符合RTU模式的定时管理时使用该模式。
例如:字节0x5B会被编码为两个字符,0x35和0x42(ASCII编码0x35 ="5",0x42 ="B")。
ASCII模式每个字节(10位)的格式为:1个起始位,7个数据位,1个奇偶校验位,1个停止位。偶校验是要求的,其它模式(奇校验,无校验)也可以使用。默认校验模式模式必须为偶校验。使用无校验要求2个停止位。

ASCII报文帧

2.4 应用层

MODBUS有三类功能码。它们是:
公共功能码:是较好地被定义的功能码,保证是唯一的,MODBUS组织可改变的,公开证明的,具有可用的一致性测试,MB IETF RFC 中证明的,包含已被定义的公共指配功能码和未来使用的未指配保留供功能码。
用户定义功能码:有两个用户定义功能码的定义范围,即65至72和100至110,用户没有 MODBUS 组织的任何批准就可以选择和实现一个功能码,不能保证被选功能码的使用是唯一的。
保留功能码:一些公司对传统产品通常使用的功能码,并且对公共使用是无效的功能码。

公共功能码定义如下表所示。

2.4.1 功能码描述

下面以“01 (0x01)读线圈”为例描述功能码,详细的描述请参考Modbus协议。
在一个远程设备中,使用该功能码读取线圈的1至2000连续状态。请求PDU详细说明了起始地址,即指定的第一个线圈地址和线圈编号。从零开始寻址线圈,因此寻址线圈1-16为0-15。根据数据域的每个比特将响应报文中的线圈分成为一个线圈。指示状态为1=ON 和0=OFF。第一个数据字节的LSB(最低有效位)包括在询问中寻址的输出。其它线圈依次类推,一直到这个字节的高位端为止,并在后续字节中从低位到高位的顺序。如果返回的输出数量不是八的倍数,将用零填充最后数据字节中的剩余比特(一直到字节的高位端)。字节数量域说明了数据的完整字节数。

请求PDU

正确响应PDU

错误响应PDU

这是一个请求读离散量输出20-38的实例。

3 测试项目编制

3.1 基本协议编制

3.1.1 协议项分类

利用格西调试精灵软件的协议激励的功能,把通信规约按照树形结构分类组织,使得管理上更加有条理,查找也更加方便。
根据Modbus通信协议功能码进行协议编辑。

3.1.2 协议项编制

根据协议帧格式,为了方便控制和显示,把协议项的数据固定拆分为节点地址、功能码和校验码3个部分,动态增减的部分是数据域,可以根据具体命令进行进一步拆分。
下面以“(0x01)读线圈”命令为例说明协议项编制方法。

主站请求帧

从站正常应答帧

从站异常应答帧

3.1.3 公共协议库

通过对基本协议项的编写、测试和验证,建立一个由基本协议项组成的公共协议库。

3.2 测试用例编制

测试用例(Test Case)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。通信协议测试属于黑盒测试,可以采用黑盒测试常用的等价类划分法、边界值分析法、错误推测法、因果图法等基本方法来设计测试用例。

测试方案设计完成后,格西调试精灵软件能够利用编制完成的公共协议库,采用搭积木的方式,通过复制和粘贴命令即可非常快捷的创建测试用例。测试用例的组织方式通常是根据测试方案的设计层次采用树形结构分类组织。

4 测试方法

4.1 测试系统构成

4.2 单项测试与整体测试

格西调试精灵软件支持单项测试和整体测试,一次测试一个测试项或者整个测试集。执行的方法是选中需要测试的测试项或者测试集,然后执行激励命令即可。
下面以执行“(0x01)读线圈”测试项为例说明。

协议数据解析界面

4.3 单次测试与循环测试

格西调试精灵软件支持单次测试和循环测试,能很好满足各种调试测试和性能测试的需求。执行的方法是选中需要测试的测试项或者测试集,然后执行激励或循环激励命令即可。

4.4 脚本控制测试

格西调试精灵软件支持协议脚本,能够使用C#、VB、Jscript三种语言控制测试流程,设置和管理通信参数和协议帧数据,调用插件扩展测试功能。

协议脚本能够调用基于Microsoft .NET Framework的托管代码组件扩展测试功能,使用插件非常方便,只要把编译好的组件拷贝到Plugins目录中,就可以直接在脚本的函数中调用插件所提供的公共服务。
例如,使用脚本动态计算LRC校验码。

示例下载

MODBUS-RTU串行链路通信协议及测试方法相关推荐

  1. Modbus协议在串行链路上的实现

    目录 1.串行链路通信简介 2.串行链路通信协议原理 3.串行链路通信帧描述 4.RTU.ASCII串行传输模式 4.1.RTU传输模式 4.2.ASCII传输模式 1.串行链路通信简介 Modbus ...

  2. 通信协议-GMSL(千兆多媒体串行链路)

    首先,了解一下什么是GMSL GMSL(Gigabit Multimedia Serial Links),中文名称为千兆多媒体串行链路,是Maxim公司推出的一种高速串行接口,适用于音频,视频和控制信 ...

  3. Modus串行链路系统电气特性:2线-Modus、4线-Modus、RS232-Modus和RS485-Modus的特性

    目录 1.2线-Modus 2.4线-Modus 3.4线-Modus和2线-Modus的兼容性 4.RS232-Modus 5.RS485-Modus 一个Modus多点串行链路系统是由主电缆(主干 ...

  4. max9286 四合一_硅天下吉比特多媒体串行链路(GMSL)解串器MAX9286详细信息_产品参数_价格_联系方式_DAV数字音视工程网...

    MAX9286吉比特多媒体串行链路(GMSL)解串器接收多达四个GMSL串行器的数据,采用50Ω同轴电缆或100Ω屏蔽双绞线(STP)电缆,通过四个CSI-2通道输出数据.每条串行链路具有嵌入式控制通 ...

  5. 路由器重温——串行链路链路层协议积累-帧中继FR协议

    在串口链路中link-protocol还可以配置成fr,即使用帧中继,现在对帧中继进行学习. 帧中继技术是在数据链路层用简化的方法传送和交换数据单元的快速分组交换技术.帧中继技术是在分组交换技术充分发 ...

  6. json qbytearray 串 转_JSON数据采集网关,json转Modbus RTU串IO口RS485转4~20mA边缘计算智能终端...

    JSON数据采集网关边缘计算智能终端是一种能够将各种传感器仪表仪器设备的数据采集后按照JSON格式上传服务器的网关,可以实现云边协同. JSON(JavaScript Object Notation) ...

  7. Modbus协议栈开发笔记之五:Modbus RTU Slave开发

    Modbus在串行链路上分为Slave和Master,这一节我们就来开发Slave.对于Modbus RTU从站来说,需要实现的功能其实与Modbus TCP的服务器端是一样的.其操作过程也是一样的. ...

  8. MODBUS TCP/IP通信协议及测试方法

    1 前言 MODBUS是一项应用层报文传输协议,是一个请求/应答协议,提供功能码规定的服务,用于在通过不同类型的总线或网络连接的设备之间的客户机/服务器通信. 本文介绍如何使用格西调试精灵(原格西烽火 ...

  9. modbus rtu 调试软件_一文最全解读Modbus 的RTU、ASCII、TCP

    导 读 ( 小库 ) 多年来没少调试施耐德PLC,因此Modbus-RTU.Modbus-TCP等协议都经常接触,但一直都没有认真总结一下,借这篇文章总结一下. 01 术语解读 1 word =2 b ...

最新文章

  1. [UVA 10827] Maximum sum on a torus
  2. c语言 sizeof size_t,C/C++中的sizeof运算符和size_t类型的详解
  3. sharepoint column中的图片链接不能显示为图片
  4. python从基础到入门电子书_python从入门进阶到大神必须看的电子书汇总
  5. pytorch 之 torch.eye()函数
  6. 镭威视监控怎么复位_三大原因导致海康威视、大华股份近期连续暴跌
  7. yii2-datepicker/datetimepicker插件使用
  8. css里slidebottom,jquery - 从CSS“top”到“bottom”的jQuery动画 - 堆栈内存溢出
  9. 创建动态链接库时设置导出函数的方法
  10. STM32 SDIO详解
  11. linux 下的前端编程工具,Prepros Linux版(前端开发工具)
  12. Linux操作系统中firewall和iptables介绍
  13. 50.magento 订单状态
  14. 格签名困难假设: 最短向量问题SVP
  15. 软考中级软件设计师--13.数据结构与算法
  16. 绿城中国的数字化转型之大中台实践
  17. MATLAB的官方网站上其实有很多MATLAB的学习和使用资料(文档、视频都有不少)
  18. 华为hicar支持车型列表_汽车大观| 华为的“汽车梦”
  19. 微博简单的免登陆获取
  20. 数据库建模多表一对多和多对一、一对一、多对多

热门文章

  1. 华强北刷机经历 type password to decrypt storage
  2. 大概是:整数划分||DP||母函数||递推
  3. 斗罗大陆妇女节壁纸高清
  4. c++控制台输出星号金字塔
  5. ajaxPro /prototype.js 学习笔记
  6. postgres 数据库 创建用户与权限配置
  7. 看完不会的来打我!大厂经典高频面试题体系化集合,offer拿到手软
  8. 平行越权漏洞挖掘-提高漏洞危害
  9. Microsoft 账号登录长时间未响应
  10. CAN上的E2E vs SecOC区别