PLC论坛-全力打造可编程控制器专业技术论坛

 找回密码
 注册哦

QQ登录

只需一步,快速开始

微信扫码登录

查看: 87716|回复: 0

Modbus TCP/IP调试工具

[复制链接]
发表于 2024-3-22 21:03:06 | 显示全部楼层 |阅读模式
最近比较忙,在做一个S7 1200和仪表的Modbus TCP/IP通讯。

PLC这边的程序相对比较简单,在网上历程也多。

仪表那边是个黑盒子,所以网上找了很多的工具。

有一个地方还是蛮好的,大家可以去看看:

网站地址:http://www.modbustools.com/

该网站提供了几个软件工具,可以运行于windows 2000/XP/Vista/7环境下,用来测试和仿真Modebus设备。

Modbus Poll :Modbus主机仿真器,用于测试和调试Modbus从设备。该软件支持Modbus RTU、ASCII、TCP/IP。

Modbus Slave: Modbus从设备仿真器,可以仿真32个从设备/地址域。每个接口都提供了对EXCEL报表的OLE自动化支持。

WSMBT :Modbus主设备的.NET控件,支持C#,VB,managed C++语言,支持Modbus TCP/IP。

WSMBS:Modbus主设备的.NET控件,支持C#,VB,managed C++语言,支持Modbus RTU/ASCII。

MBAXP:一个易用的ActiveX控件,支持Excel,Visual Basic,Visual C++,Delphi等。支持Modbus RTU/ASCII和Modbus TCP/IP

2,功能

Modbus Poll是一个主机仿真器,用来帮助开发人员测试Modbus从设备,或者其它MOdbus协议的测试和仿真。它支持多文档接口,即,可以同时监视多个从设备/数据域。每个窗口简单地设定从设备ID,功能,地址,大小和轮询间隔。你可以从任意一个窗口读写寄存器和线圈。如果你想改变一个单独的寄存器,简单地双击这个值即可。或者你可以改变多个寄存器/线圈值。提供数据的多种格式方式,比如浮点、双精度、长整型(可以字节序列交换)。

状态条显示错误信息。

如果你是一个从设备开发者,你可以通过"test center" 菜单,组织并发送你自己的测试字符串,并以16进制形式检查从设备返回的结果。

为VB,EXCEL等提供了OLE自动化接口。可以用OLE接口解析和显示Modbus数据,然后送达你指定的设备,即,在EXCEL中编辑数据,然后发送到你的从设备!示例参看安装后的Excel example.xls。

支持下列协议:

Modbus RTU

Modbus ASCII

Modbus TCP/IP

Modbus RTU Over TCP/IP

Modbus ASCII Over TCP/IP

Modbus UDP/IP

Modbus RTU Over UDP/IP

Modbus ASCII Over UDP/IP

MODBUS POLL功能:

OLE自动化可以简单地与Visual Basic接口,使用起来类似于ActiveX控件。参见 VBExample.vbp

读/写多达125个寄存器

读/写多达2000个输入/线圈

Test Center菜单 (组织你自己的测试字串)

打印和打印预览

监视串行数据流量serial data traffic

Data logging to a text file

Data logging direct to Excel

上下文敏感的HLP文件

10 Display formats such as float, double etc.

Adjustable Address Base (0 or 1).

字体和颜色选项

广播功能(从设备ID=0)

Easy control of RS-485 converters with RTS toggle.

支持MODBUS功能:

01: Read coil status       读线圈状态

02: Read input status     读输入状态

03: Read holding register读保持寄存器

04: Read input registers  读输入寄存器

05: Force single coil        强制单线圈

06: Preset single register 预置单寄存器

15: Force multiple coils   强制多线圈

16: Preset multiple registers 预置多寄存器

17: Report slave ID          报告从设备ID

22: Mask write register    屏蔽写寄存器

23: Read/Write registers  读/写寄存器

2,一台微机,虚拟串口测试

安装虚拟串口软件,VSPD6.0,运行vspdconfig.exe,可一次建立两个串口,如COM1和COM2,并且两个串口已经虚拟连接。使用F8呼出读写设置,F5呼出连接端口。都用缺省,即可通讯。

Modbus测试工具 <wbr>:Modbus <wbr>Poll,Modbus <wbr>Slave

这个例子分别设定主机和从机的端口为虚拟COM1、COM2,读写设置对话框中选择起始地址999,数量4的运行结果。修改从机数据,主机会马上得到响应。可修改的数据范围在-32767~32767,有负号16位整数。

3,两台微机之间串口测试

测试环境:都是XP32系统,一台机器运行Poll,一台运行Slave,中间用DB9串口线连接。主机端2-RXD,3-TXD,5-GND。两端DB9的RS232通讯线线序:2-3,3-2,5-5。

操作:

两边分别用F3设定连接参数:串口,串口1,9600band,8数据位,Even校验(偶校验),1停止位,RTU模式,其它缺省。

主机端未正确连接,会给出提示

通讯开始,主机端显示:TX=35,Err=0,ID=1,F=03,SR=1000ms。意思是,发送35次命令,错误次数,从机ID,功能号,轮询间隔。

如果通讯出错,会在窗口第二行显示错误信息

使用Display菜单的"Communication Traffic"命令,可以显示出当前发送命令和接受的数据。

主机改变通讯功能,快捷键F8,令功能为4,读输入寄存器,然后在从机的10个寄存器上点击鼠标,输入每个寄存器的新值,则,在主机上会读取到这个新的寄存器值。

注意:手头的USB转串口线不好使,转换出的串口再接DB9交叉线,连T61扩展坞上的串口,通讯不对。连AVR板子也不对。需要弄两台带串口的机器(或者带2个串口的台式机)进行此测试。

——从机板上的MAX232芯片坏了,真闷。换个芯片,这条线也OK!

4,微机与AVR单片机之间串口测试:读输入寄存器

测试环境:微机运行Poll,AVR MEGA88运行移植后的代码,串口连线同上。

AVR代码:串口用9600bps,even校验,1停止位,RTU模式,SlaveID=1,其它未改变。

Poll设置:

F3呼出连接对话框,设定9600bps同单片机波特率。

F8呼出读写对话框,设定SlaveID=1;功能=4,地址=999,数量=4,扫描频率=1000ms,其它未变。

界面显示出AVR寄存器内容,通讯无错误提示。

换用9600/11400/19200/38400/115200bps波特率,通讯正常。因为Poll没有57600/230400等设置,这些波特率未测。AVR在该时钟下最高可达230400bps,无差错。

数据分析:

TX: 01 04 03 E7 00 04 41 BA             01-从设备地址,04-功能号,0x03E7=999,0x0004-读出寄存器个数,CRC校验

RX: 01 04 08 00 01 00 02 00 03 00 04 BC CE  01-从设备地址,04-功能号,08-返回字节数,四个数分别是1,2,3,4,CRC校验
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册哦

本版积分规则

QQ|小黑屋|手机版|Archiver|PLC技术网-PLC论坛 ( 粤ICP备17165530号 )|网站地图

GMT+8, 2024-9-17 03:28 , Processed in 0.041832 second(s), 25 queries .

快速回复 返回顶部 返回列表