Modbus测试工具.docx_第1页
Modbus测试工具.docx_第2页
Modbus测试工具.docx_第3页
Modbus测试工具.docx_第4页
Modbus测试工具.docx_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Modbus测试工具:ModbusPoll,ModbusSlave(2012-03-22 15:26:59) 转载分类: 电子技术 1,简介 网站地址:/该网站提供了几个软件工具,可以运行于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等。支持ModbusRTU/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 loggingtoatext file Data logging direct toExcel 上下文敏感的HLP文件 10 Display formatssuch as float, double etc. Adjustable AddressBase (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呼出连接端口。都用缺省,即可通讯。这个例子分别设定主机和从机的端口为虚拟COM1、COM2,读写设置对话框中选择起始地址999,数量4的运行结果。修改从机数据,主机会马上得到响应。可修改的数据范围在-3276732767,有负号16位整数。3,两台微机之间串口测试测试环境:都是XP32系统,一台机器运行Poll,一台运行Slave,中间用DB9串口线连接。主机端2-RXD,3-TXD,5-GND。两端DB9的RS232通讯线线序:23,32,55。操作: 两边分别用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校验对应的测试程序如下:* - Defines -*/#define REG_INPUT_START 1000 / 任意设置,最小=1#define REG_INPUT_NREGS 4#define REG_HOLDING_START 1000 / 与上述同地址也是可以的#define REG_HOLDING_NREGS 130#define REG_COILS_START 1000#define REG_COILS_SIZE 16static USHORT usRegInputStart = REG_INPUT_START;static USHORT usRegInputBufREG_INPUT_NREGS;static USHORT usRegHoldingStart = REG_HOLDING_START;static USHORT usRegHoldingBufREG_HOLDING_NREGS;static unsigned char ucRegCoilsBufREG_COILS_SIZE / 8;#define SlaveAddress 0x01 / 从设备站号#define BaudRate 9600 / 串口波特率#define ComPort 0 / 串口号,0/1#define Parity MB_PAR_EVEN / 校验方式void main(void) const UCHAR ucSlaveID = 0xAA, 0xBB, 0xCC ; eMBErrorCode eStatus; eStatus = eMBInit( MB_RTU, SlaveAddress, ComPort, BaudRate, Parity ); eStatus = eMBSetSlaveID( 0x34, TRUE, ucSlaveID, 3 ); / 设置从机的信息,比如控制器版本、运行状态指示等。如果主机不需要,则可删除。 sei( ); / Enable the Modbus Protocol Stack. eStatus = eMBEnable( ); for( ; ) / Call the main polling loop of the Modbus protocol stack. ( void )eMBPoll( ); usRegInputBuf0 = 01; usRegInputBuf1 = 02; usRegInputBuf2 = 03; usRegInputBuf3 = 04; 出现的问题: 用不同AVR数据测试时,发现AVR代码有下列问题:设置的地址要比实际demo.c中设定的地址少一个。比如,demo.c中起始地址1000,但测试时Poll只能设定999,否则测试出错。 该问题的根源在mbfuncinput.c中,解析出变量地址usRegAddress之

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论