Modbus测试工具.docx
- 文档编号:11663127
- 上传时间:2023-03-29
- 格式:DOCX
- 页数:6
- 大小:109.13KB
Modbus测试工具.docx
《Modbus测试工具.docx》由会员分享,可在线阅读,更多相关《Modbus测试工具.docx(6页珍藏版)》请在冰豆网上搜索。
Modbus测试工具
Modbus测试工具
Modbus测试工具 :
Modbus Poll,Modbus Slave
(2012-03-2215:
26:
59)
转载▼
分类:
电子技术
1,简介
网站地址:
该网站提供了几个软件工具,可以运行于windows2000/XP/Vista/7环境下,用来测试和仿真Modebus设备。
∙ModbusPoll :
Modbus主机仿真器,用于测试和调试Modbus从设备。
该软件支持ModbusRTU、ASCII、TCP/IP。
∙ModbusSlave:
Modbus从设备仿真器,可以仿真32个从设备/地址域。
每个接口都提供了对EXCEL报表的OLE自动化支持。
∙WSMBT :
Modbus主设备的.NET控件,支持C#,VB,managedC++语言,支持ModbusTCP/IP。
∙WSMBS:
Modbus主设备的.NET控件,支持C#,VB,managedC++语言,支持ModbusRTU/ASCII。
∙MBAXP:
一个易用的ActiveX控件,支持Excel,VisualBasic,VisualC++,Delphi等。
支持Modbus RTU/ASCII和ModbusTCP/IP
2,功能
ModbusPoll是一个主机仿真器,用来帮助开发人员测试Modbus从设备,或者其它MOdbus协议的测试和仿真。
它支持多文档接口,即,可以同时监视多个从设备/数据域。
每个窗口简单地设定从设备ID,功能,地址,大小和轮询间隔。
你可以从任意一个窗口读写寄存器和线圈。
如果你想改变一个单独的寄存器,简单地双击这个值即可。
或者你可以改变多个寄存器/线圈值。
提供数据的多种格式方式,比如浮点、双精度、长整型(可以字节序列交换)。
状态条显示错误信息。
如果你是一个从设备开发者,你可以通过"testcenter" 菜单,组织并发送你自己的测试字符串,并以16进制形式检查从设备返回的结果。
为VB,EXCEL等提供了OLE自动化接口。
可以用OLE接口解析和显示Modbus数据,然后送
06:
Presetsingleregister预置单寄存器
∙15:
Forcemultiplecoils 强制多线圈
∙16:
Presetmultipleregisters预置多寄存器
∙17:
ReportslaveID 报告从设备ID
∙22:
Maskwriteregister 屏蔽写寄存器
∙23:
Read/Writeregisters 读/写寄存器
2,一台微机,虚拟串口测试
安装虚拟串口软件,VSPD6.0,运行vspdconfig.exe,可一次建立两个串口,如COM1和COM2,并且两个串口已经虚拟连接。
使用F8呼出读写设置,F5呼出连接端口。
都用缺省,即可通讯。
这个例子分别设定主机和从机的端口为虚拟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菜单的"CommunicationTraffic"命令,可以显示出当前发送命令和接受的数据。
∙主机改变通讯功能,快捷键F8,令功能为4,读输入寄存器,然后在从机的10个寄存器上点击鼠标,输入每个寄存器的新值,则,在主机上会读取到这个新的寄存器值。
注意:
手头的USB转串口线不好使,转换出的串口再接DB9交叉线,连T61扩展坞上的串口,通讯不对。
连AVR板子也不对。
需要弄两台带串口的机器(或者带2个串口的台式机)进行此测试。
——从机板上的MAX232芯片坏了,真闷。
换个芯片,这条线也OK!
4,微机与AVR单片机之间串口测试:
读输入寄存器
测试环境:
微机运行Poll,AVRMEGA88运行移植后的代码,串口连线同上。
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:
010403E7000441BA 01-从设备地址,04-功能号,0x03E7=999,0x0004-读出寄存器个数,CRC校验
RX:
0104080001000200030004BCCE 01-从设备地址,04-功能号,08-返回字节数,四个数分别是1,2,3,4,CRC校验
对应的测试程序如下:
*-----------------------Defines------------------------------------------*/
#defineREG_INPUT_START1000//任意设置,最小=1
#defineREG_INPUT_NREGS4
#defineREG_HOLDING_START1000//与上述同地址也是可以的
#defineREG_HOLDING_NREGS130
#defineREG_COILS_START 1000
#defineREG_COILS_SIZE 16
staticUSHORT usRegInputStart=REG_INPUT_START;
staticUSHORT usRegInputBuf[REG_INPUT_NREGS];
staticUSHORT usRegHoldingStart=REG_HOLDING_START;
staticUSHORT usRegHoldingBuf[REG_HOLDING_NREGS];
staticunsignedcharucRegCoilsBuf[REG_COILS_SIZE/8];
#defineSlaveAddress0x01//从设备站号
#defineBaudRate9600//串口波特率
#defineComPort0//串口号,0/1
#defineParity MB_PAR_EVEN //校验方式
voidmain(void)
{
constUCHAR ucSlaveID[]={0xAA,0xBB,0xCC};
eMBErrorCode eStatus;
eStatus=eMBInit(MB_RTU,SlaveAddress,ComPort,BaudRate,Parity);
eStatus=eMBSetSlaveID(0x34,TRUE,ucSlaveID,3);//设置从机的信息,比如控制器版本、运行状态指示等。
如果主机不需要,则可删除。
sei( );
//EnabletheModbusProtocolStack.
eStatus=eMBEnable( );
for(;;)
{
//CallthemainpollingloopoftheModbusprotocolstack.
(void)eMBPoll( );
usRegInputBuf[0]=01;
usRegInputBuf[1]=02;
usRegInputBuf[2]=03;
usRegInputBuf[3]=04;
}
}
出现的问题:
∙用不同AVR数据测试时,发现AVR代码有下列问题:
设置的地址要比实际demo.c中设定的地址少一个。
比如,demo.c中起始地址1000,但测试时Poll只能设定999,否则测试出错。
∙该问题的根源在mbfuncinput.c中,解析出变量地址usRegAddress之后有个++动作,人为将其增加1。
其它函数如mbfuncholding.c也是如此。
∙参看Modbus协议的定义:
从零开始寻址寄存器,比如寻址输入寄存器1-16,则输入为0-15。
真是奇怪啊!
∙自此可以看出,DEMO.C中定义的输入寄存器起始地址最小为1,此时才能满足Master要求的输入寄存器=0。
协议里规定,如果通讯出错,则返回数据格式为:
0184xxCRC2字节
这里xx表示错误码:
xx=01020304,其中02-无效的数据地址
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Modbus 测试 工具