一 MTing是什么:正如介绍所说,它是一款支持定制扩展的功能强大的modbus协议簇(RTU主/从、TCP主从、ASCII)调试工具。
二 modbus及同类调试工具及其优缺点:
Modbus是一种工控领域串行通信协议,是Modicon公司最初用于为(PLC)通信而开发。由于其可靠稳定,易于部署,已被大多数现场设备所采用,Modbus已经成为工业领域通信协议的业界标准(De facto)。对于从事单片机或PLC开发的人来说应该不会陌生。
关于modbus的调试工具应用的较多的应该是modbusPoll/Slave(如下图),ModbusTCP_Master V2.0,modbusx2modbusrtu以及现在的MTing。modbusPoll用来模拟主机,modbus slaver用来模拟从机,支持RTU/TCP/ASCII三种方式,通过设定通讯参数,方式,通讯地址和寄存器数量,就可以用不通的功能码进行模拟主从配合下位机进行通讯测试,同时通过通讯窗口看到实时的数据交互(带时间戳),在寄存器窗口可以看到值的动态变化。
优缺点对比:
modbusPoll/Slave配置简单容易上手,但缺点是TCP不是短链接,不能灵活设置连接时间,也不能进行曲线展示。
MTing不但具有modbusPoll/Slave既有的功能,同时开源免费,避免了其不足,可以进行浮点显示,可以曲线,也可以灵活的设置TCP的断连时间,轮询周期。具有的通讯协议解析功能也很强大,以不通颜色区分桢的不通部分,同时里面的设置背景色,自定义协议等都等者你的探索。
其它的不是某个公司配合其它专用的,就是只有某一个modbus的某一种通讯方式,功能也比较单一。
三 我与MTing的相遇:
以前开发modbus用的都是RTU,而今年的这个项目用的比较复杂,一个板子上有多个RTU主/从机,还有ModbusTCP,在开发过程中,和设备通讯的网页客户端是modbusTCP的短连接形式,即连接-通讯-断开-间隔-再连接-通讯-断开。。。并且一直抱怨前端一次刷新时间慢。此时通讯慢的瓶颈是不是设备造成的,怎么优化(即要快又要可靠),此时原来的modbusPoll已经不能满足要求了,它是长连接形式,不能设定一次通讯的周期间隔,也不能设定不通功能码桢之间的间隔,更别提压力测试了。此时MTing开始走入我的视野。。。
刚开始的时候MTing比较年轻,它的协议解析展示,TCP的间隔设置都还不完善,但作者比较热心和平易近人,为了工具的更加好用,虚心接受我对MTing的功能建议,并很快改进,一版一版的快速迭代更新,以至于到现在越来越好用。周公的对作品的这份认真和执着确实让人佩服,耐心解答让人尊敬,我们做技术的应该学习这一精神。
四 使用案例讲解:
4.1 模拟RTU单个从机:
4.1.1 事前准备:USB转串口连接PC和设备,两边串口设置相同参数。
4.1.2 MTing设置:选择链接,在链接类型选择串口链接,此时会屏蔽网口链接扫描所有的串口,点击某个串口配置通讯参数和类型,然后添加设备,此时就会在最左侧出现添加的设备ID,串口号,主机还是从机指示,连接断开指示,是否禁止指示。
4.1.3设置寄存器自定义:
选择左侧要设置的(新添加的)设备,然后点击数据,在出现的设置界面点击配置,此时配置高亮,点击新增根据要通讯访问的寄存器起始地址,个数,读写寄存器功能码类型进行设置,设置好后再次点击设置,设置就生效了点击报文窗口,如果设备端已经通电运行起来就可以再报文窗口看到通讯协议的收发过程了,这也是学习modbusRTU通讯协议的好方法。如图2
备注说明:因为是模拟从机,即从机需要提供数据供主机读取,从机的数据可以设置成固定值,或者其它动态可变的。
4.2关于批量的从机模拟:
在链接的设备添加窗口的设备开始地址和设备结束地址中设定,比如我的设备主机上挂载了5个从机设备,地址分别是1~4,7.所以我可以如图2所示,设备的起始地址分别设置成1~7,然后删了5和6号设备。当然你可以先统一设置1~4,然后再单建一个7。
效果如图:
5 模拟主机:
模拟主机,需要设定是否自动读写寄存器,即批量读写在配置中是否使能;在配置完成后可以单次读写,也可以点击批量读实现自动读寄存器功能。
操作说明:因为可以设置手动单次通讯也可以批量自动收发,单次通讯点击读,写(在命令里面指定值);自动收发需要在点击配置时勾选批量读,并且配置好后再次点击一次批量读;
如果要显示曲线在配置时也要勾选曲线。
ModbusTCP模拟客户端(短连接每5S读一批数据)
可以看到周期是30s....
[2020-11-24 20:51:16.478 R] 9# client active break the link .
[2020-11-24 20:51:18.437 R]--------sensor------------
[2020-11-24 20:51:18.484 R] O2 gassensor value is <204>
[2020-11-24 20:51:19.016 R]-----电能实时数据------
AV:239.1 AI: 0.0
BV:239.2 BI: 0.0
CV:239.2 CI: 0.0
--------------------
[2020-11-24 20:51:19.045 R] CH4 gassensor value is <0>
[2020-11-24 20:51:19.604 R] CO gassensor value is <0>
[2020-11-24 20:51:19.675 R] H2S gassensor value is <0>
[2020-11-24 20:51:19.705 R][WD=176 ;SD= 392 ]--------end sensor--------
[2020-11-24 20:51:24.057 R]-----电能实时数据------
AV:239.1 AI: 0.0
BV:239.2 BI: 0.0
CV:239.2 CI: 0.0
--------------------
。。。。。。。
[2020-11-24 20:51:44.613 R]--------sensor------------
[2020-11-24 20:51:44.670 R] O2 gassensor value is <204>
[2020-11-24 20:51:45.221 R] CH4 gassensor value is <0>
[2020-11-24 20:51:45.774 R] CO gassensor value is <0>
[2020-11-24 20:51:46.670 R] 5# client active break the link .
6 文档说明:
是因为这个软件确实功能强大好用,见到MTing的这个活动,所以想为该软件的推广出一份力,希望更多的工程师可以早点用上它,就参加了这个活动
这个软件已经用了有4~5个月之久,,原来的开发测试过程的数据图片没有能保存,最近的项目正在进行中,关于内容和图片还会不断增加完善和补充。请持续关注该软件和该文档。
所以说文章也不仅仅是为了参赛而写。
7 后语:
虽然众多热心工程师的试用建议下,在周公的辛勤努力下,该软件已经很强大了,但是还需要大家集思广益,以使它更强大好用。