MODBUS TCP/IP通信协议及测试方法
1 前言
MODBUS是一项应用层报文传输协议,是一个请求/应答协议,提供功能码规定的服务,用于在通过不同类型的总线或网络连接的设备之间的客户机/服务器通信。
本文介绍如何使用格西调试精灵(原格西烽火)通信测试软件编写测试项目,进行调试和测试Modbus TCP/IP通信节点。
2 通信协议
2.1 术语
MODBUS通信协议
MODBUS是OSI 模型第7层上的应用层报文传输协议,它在连接至不同类型总线或网络的设备之间提供客户机/服务器通信。
2.2 通信接口
支持以太网接口,支持多点连接,支持TCP/IP协议,保留502端口访问Modbus。
2.3 数据链路层
MODBUS TCP/IP协议是一个主-从协议。子节点之间从不会互相通信。主节点在同一时刻可以发起多个Modbus事务处理。MODBUS TCP/IP 的通信系统可以包括不同类型的设备:
1)连接至TCP/IP网络的MODBUS TCP/IP 客户机和服务器设备;
2)互连设备,例如:在TCP/IP 网络和串行链路子网之间互连的网桥、路由器或网关,联接,该子网允许将MODBUS 串行链路客户机和服务器终端设备连接起来。
MODBUS TCP/IP 通信结构
2.3.1 帧格式
Modbus应用协议定义了简单的独立于其下面通信层的协议数据单元(PDU-Protocol Data Unit)。
在不同总线或网络的Modbus协议映射在协议数据单元之外引入了一些附加的域。发起Modbus事务处理的客户端构造Modbus PDU,然后添加附加的域以构造适当的通信PDU。
TCP/IP网络上的MODBUS应用数据单元。
在TCP/IP 上使用一种专用报文头识别MODBUS 应用数据单元。将这种报文头称为MBAP 报文头(MODBUS 协议报文头)。MBAP 报文头包括下列域:
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 协议项编制
根据协议帧格式,为了方便控制和显示,把协议项的数据固定拆分为事务处理标识符、协议标识符、长度、单元标识符、功能码5个部分,动态增减的部分是数据域,可以根据具体命令进行进一步拆分。
下面以“(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 TCP/IP通信协议及测试方法相关推荐
- 工控协议(二):Modbus TCP/IP 学习笔记
注:本文内容是对以下官方文档的整理小结. Modbus TCP/IP Modbus Application protocol specification Modbus TCP Security Mod ...
- 威纶通屏幕(HMI)开发基本教程三:如何新建一个工程(modbus Tcp/Ip 工程)
1.下载和安装EasyBuilder Pro,下载地址 :http://www.weinview.cn/ServiceSupport/Download/Index.aspx 2.打开Utility M ...
- Modbus/Modbus Plus(MB+)/Modbus TCP/IP区别
ModBUS总线是美国莫迪康(Modicon)公司(后被法国施耐德Schneider公司收购)在世界上首先推出的基于RS485的总线.ModBUS为Modicon's BUS(即:Modicon 的总 ...
- 关于TCP/IP通信协议的一些见解
TCP/IP的一些理解 网络通信协议 TCP/IP构架 关于网络通信的阻塞与连接 路由的基本过程 域名系统DNS 什么是DNS? DNS的构架 域名服务器 两种查询模式 正向解析和逆向解析 RAP A ...
- TIA 博途模拟Modbus TCP/IP通信
使用西门子TIA + PLCSIM 模拟配置PLC的Modbus通信. (本次使用的TIA版本为v15.1,S7-PLCSIM Advanced V2.0 SP1) 在TIA中创建新项目选择PLC 1 ...
- TCP/IP 通信协议
概念 TCP/IP 是因特网的通信协议. 通信协议 是对计算机必须遵守的规则的描述,只有遵守这些规则,计算机之间才能进行通信. TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP. ...
- iOS中 HTTP/Socket/TCP/IP通信协议详解 韩俊强的博客
版权声明:本文为博主原创文章,未经博主允许不得转载. 每日更新关注:http://weibo.com/hanjunqiang 新浪微博 简单介绍: [objc] view plaincopy // ...
- 【软件通信协议】1. 详细解析TCP/IP通信协议
1. TCP/IP协议简介 Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Intern ...
- plc tcp ip通讯怎么只能连一个客户端_一款Ethernet/IP和Modbus TCP转OPC UA产品
. 1 协议简述 Ethernet/IP协议是ODVA组织发布的一个以太网协议,当然了ODVA里最主要的成员是Rockwell等美国公司.ODVA组织除了发布有Ethernet/IP协议,还有常见 ...
最新文章
- Linux查看可执行文件的各个段:.BSS,.TEXT,.DATA的大小
- 小伙一本正经用石头打造CPU,号称99秒“解决”芯片危机
- vs中如和根据项目生成类图_迁移WPF项目到.NET Core
- java amqp_AMQP协议
- 游戏通讯技术:帧同步技术
- 分布式与人工智能课程(part14)--深度学习
- Bash Shell学习笔记五
- CentOS查看和修改PATH环境变量的方法
- 【模板】分散层叠算法(P6466)
- MongoDB学习目录
- 可信计算3.0工程初步pdf_查校 | 英国大学工业工程与运筹学专业40个授课硕士+研究Mphil/Phd 项目汇总...
- 计算机应用作业2,计算机应用2作业
- python 电脑文件变动提醒_Python整理文件方法,效率提升100倍-docx是什么文件
- weblogic故障报错
- 个人所得税如何填写最划算?
- Undefined control sequence.l.113 \LinesNumbered
- 企业生产一线管理应找怎样的好帮手?
- 10秒钟的Cat 6A网线认证仪_DSX2-5000 CH
- Tesla_T4加速卡详细参数
- 微商如何用百度来进行引流推广?