软件介绍
Modscan32是一个运行在windows下,作为在RTU或这ASCII传输模式下的MODBUS协议主设备的应用程序。用来模拟主设备(与之相对的是Modsim32,用于模拟从设备)。它可以发送指令报文到从机设备中,从机响应之后,就可以在界面上返回相应寄存器的数据。
文章只谈及工具的使用,对于Modbus本身通信协议的具体内容,请移步Modbus通信协议详解。
下载链接
链接:https://pan.baidu.com/s/1eno-yg6VZVNcjR44O0h0Uw
提取码:84z1
软件使用
连接
两种方式,一种普通连接,一种是快速连接。
普通连接
点击菜单栏"连接设置"->"连接",弹出连接配置窗口。
在"使用的连接"那里选择"Direct Connection to COMXX"(XX是根据当前使用的端口号来定),表示当前是用串口通信,如果使用的是Modbus/TCP,则选择"Remote modbusTCP Server"。
快速连接
点击菜单栏"连接设置"->"快速连接",或点击 ,可根据前一时刻的连接配置进行连接。
断开连接
点击菜单栏"连接设置"->"断开连接",或点击 ,断开当前连接。
串口配置:
在配置窗口中配置好端口号、波特率、数据位、校验位、停止位,一般是9600波特率(9600 Baud),8个数据位(8 Data bits),无校验位(None Parity),1个停止位(1 Stop Bit)。当然这个是要根据实际通信的从机设备进行匹配设置。
点击"协议选择",根据通信的从机设备选择使用RTU模式或ASCII模式,工业应用的话一般使用RTU模式,很少使用ASCII模式。另外还有"Daniel/enron/OMNI"(一种基于标准的扩展形式)的RTU和ASCII模式可以选。
再设置下超时时间和帧间隔时间(实际就是每个窗口之间的发送间隔),超时时间可以按默认1s就行,Modbus国标规定是200ms到1s。帧间隔时间按默认20ms设置即可。
另外勾选""可选择单个写入线圈/寄存器时,要使用15/16指令(支持批量写入)还是05/06指令(只支持单个写入)。
硬件流控制如果没有使用的话,按默认设置即可。设置完点确认即可完成设置进行连接。
TCP配置:
在"使用的连接"处选择"Remote modbusTCP Server",设置好IP及端口号,Modbus/TCP的默认端口号为502。实际根据从机设备的IP和端口号来设置。
窗口配置
可以在窗口里直接配置,也可以点击"配置"->"数据定义",在弹窗中进行配置。
Address:可以配置读/写的寄存器/线圈起始地址(注意这里最低只能配置为1,对应Modbus指令里的0地址)
Length:可以配置读/写的寄存器/线圈个数
Device Id:可以配置目标从机地址
MODBUS Point Type:可以配置使用的Modbus点位类型。(注意:修改不同的点位类型时,对应地址前面会带有不同的前缀数据,这个并不影响Modbus指令里的起始地址,只是用于PLC的地址分段)
01:COIL STATUS,线圈(可读可写)
02:INPUT STATUS,输入线圈(只读)
03:HOLDING REGISTER,保持寄存器(可读可写)
04:INPUT REGISTER,输入寄存器(只读)
扫描速率:配置当前窗口报文发送的周期间隔。
窗口状态显示
Number of Polls:表示当前已发送的指令数量
Valid Slave Responses:表示目标从机回复的指令数量
红色字样表示当前故障状态,详见以下故障说明。
** Device NOT CONNECTED! **:表示当前未连接。
** Data Uninitialized **:表示当前窗口未进行配置。
** MODBUS Message TIME-OUT **:表示发送指令后从设备超时未响应。
而从机设备不回复,可能性有很多,比如:
1、连接配置错误,主机的波特率、Slave ID等信息跟从机设备对应不上,从机就不会回。
2、线路异常,电脑跟从机设备之前的通信线存在异常,也是无法正常收到回复。
3、从机设备解析异常不回复,这个具体可以查看Modbus协议详解。
** Checksum Error in Response Message **:响应的数据校验错误。
** MODBUS Exception Response from Slave Device **:地址异常,一般是当访问的从机设备不存在要读取的寄存器/线圈地址时,会返回不存在此地址的02异常码,软件接收到此指令时就会报出这个错误。
设置数据格式
点击"配置"->"显示选项"->"二进制"/"十进制"……,或点击 ,选择对应的数据制式(数据流里的数据也会有变化)。
原始报文
点击"配置"->"显示选项"->"显示数据流",或点击 ,可以切换查看当前的收发数据,其中白底的是软件发送的,黑底是从设备回复的。
数据记录
点击"配置"->"数据捕获"
报文记录
点击"配置"->"文本捕获",设置保存的模式。
保存每次扫描,即每发送一次报文记录一次。
保存所选的扫描,然后设置间隔时间,则按设置的时间进行记录。
保存运行平均,则是保存当前窗口这些数据这段时间内的平均值进行记录。
保存窗口及打开
点击"文件"->"保存",或点击 ,对当前选中的窗口进行保存。
点击"文件"->"打开",或点击 ,则可对已保存的文件进行打开操作。
使用注意
1、这个工具上的一些时间设置,当时间设置较短时,可能不准。比如以前试过把每一帧的发送间隔时间调成1ms,但实际用示波器抓到的数据,间隔大概100ms左右,基本低于100ms的都实现不了。这个可能跟电脑本身性能有关系,所以要注意不要太过于相信这里面的时间设置,最好以实际的为主。
2、因为这个软件是在window系统上运行的,当系统卡顿时,可能会影响软件的运行,表现出来就是查看的报文有异常。Modbus Slave或其他串口调试工具也会有类似的问题。
相关知识
Modbus通信协议、串口通信协议、Modsim32、Modbus Poll、Modbus Slave、TCP/IP