“只要想做好事,就一定会利用那个器皿”。 在研究开源Modbus协议FreeMODBUS之前,介绍一种主要用于Modbus协议仿真和Modbus从设备开发的Modbus Poll软件。 本文用图解说明了Modbus Poll软件对Modbus协议的仿真过程。
首先,在计算机上使用“虚拟串行驱动程序”软件虚拟化两个互连的串行端口。 一个串行端口与Modbus Poll软件相连,以模拟Modbus协议的主设备。 串行端口连接到Modbus Slave并模拟Modbus从站,如图1所示。 在“端口1”和“端口2”中选择需要虚拟化的两个端口,作者选择COM2和COM3。 然后单击“添加端口”,在左侧的“虚拟端口”中显示虚拟端口,并可以从“我的电脑”的“设备管理器”中查看虚拟端口。
图1
然后运行Modbus Slave软件,首先设定从站设备的属性。 单击" Setup "中的" Slave Definition "开始设定。 作者对读写线圈的模拟设定如图2所示。 每个字段的含义如下:
Slave ID (从站设备的ID号码,即Modbus协议的地址代码;
功能:由于当前模拟的Modbus功能,例如01 Coil Status模拟线圈的读写操作;
地址:从站设备中连续单元的起始地址,在本设定中为0000;
质量(从属设备内的连续单元数,在本设定中为10个,其地址为0000至0009;
Rows是左侧显示单元中每列的显示单元的个数;
显示:单元格数据的显示格式。
设置完成后,单击“确定”。
图2
设定串行通信,点击“Connection”的“Connection Setup”,操作者采用RTU模式的模拟设定如图3所示,各字段的含义如下。
pt; margin:0cm 0cm 0pt"> Connection:采用Serial Port方式;
Mode:Modbus协议有RTU和ASCII两种模式;
Flow Control:流控制方式,如果所有的方式都不勾选,则不使用流控制;
串口配置:有串口号(Port3),波特率(9600),数据位(8位),奇偶校验(无),停止位(1位)。
设置完毕后,单击“OK”,从设备建立连接,等到主设备进行查询。
图3
从设备内部单元值的设置,如图4所示,内部单元列表中显示的是单元值,通过双击某单元可以修改单元值,图4是作者将0000地址线圈值设置为自动变化,勾选“Auto change”后,线圈单元的值会自动在0与1之间变化
图4
接下来运行Modbus Poll软件,与Modbus Slave软件类似,首先要对主设备的属性进行设置,单击“Setup”中的“Read/Write Definition”开始设置,作者对读线圈的模拟仿真设置如图5所示,各字段的含义如下:
Slave ID:为目标从设备的ID号;
Fuction:为功能码,在本设置中为01 Read Coils;
Scan Rate:为Modbus协议中的通信周期,在本设置中为100ms;
Address,Quantity,Rows,Display字段含义与Modbus Slave软件中含义相同。
设置完毕后,单击“OK”。
图5
再对串口通信进行设置,单击“Connection”中的“Connection Setup”,作者采用RTU模式的仿真设置如图6所示,各字段含义如下:
Connection、Mode、串口信息、Advanced中的Flow Control中的含义和设置都和Modbus Slave软件中的含义和设置一致;
Response Timeout:响应超时,在本设置中为1000ms,如果机灵的黑猫 从设备没有做出响应,就产生超时错误。
设置完毕后,单击“OK”。
图6
设置完毕后的模拟仿真效果如图7所示。
单击工具栏上的图标,可以显示通讯过程中的数据帧,如图8所示,单击“Stop”按键后,用户可以保存或复制数据帧。
用户可以通过设置其他的功能来模拟Modbus其他的通讯过程。
(全文完)
图7
图8