10.3.4 虚拟串口软件
1
软件简介
虚拟串口工具,可以创建2个互联的串口,如下图所示:
比如ModbusPoll工具使用COM1发送数据给COM2,ModbusSlave从COM2读到数据。使用虚拟串口,就可以不使用开发板也可以体验ModbusPoll、ModbusSlave。
软件在网盘里:
2
虚拟串口的使用
安装后运行虚拟串口程序“VirtualSerialPortTools”,安装下图创建2个串口:
打开设备管理器,可以看到如下串口:
10.3.5 Modbus Poll与Modbus Slave互联/通
下面我们进行ModbusPoll与ModbusSlave互联互通实验,通过形象直观的方式展示Modbus数据流,根据前面的设定我们已将知道了如何运用Modbus学习必备三件套,下面我们就通过三件套来进行实验,首先打开VSPD虚拟串口软件,设置虚拟串口,我这里就以上面设订COM1,COM2为例,接下来我们再来配置我们的Modbus Poll与Modbus Slave。
我们首先打开Modbus Slave端,设置连接,连接方式我们选择Serial Port串口连接,选择我们设置的串口COM1,模式选择RTU模式,如下图所示:
①Modbus Slave连接设定
在设置参数,从机地址我们设定1(你也可以自己随意设定),Function项我们选择03 Holding Register(4x),地址类型我们选择DEC(十进制格式),Address首地址我们设置为0,访问寄存器数量设置为10,如下图所示。
②Modbus Slave参数设定
接下来我们再来设置Modbus Poll端,设置方法也是和Modbus Slave端对应的,连接设定,参数设定,如下图所示。
③Modbus Poll连接设定
注意这里串口要选择我们设定的COM20,其它串口参数必须一一对应。
④Modbus Poll参数设定
设置好后,我们主设备和从设备分别连接了我们设置的COM1,COM2,这样我们便可观察当前寄存器的读取情况。
我们双击ModbusPoll(主设备端)地址中的0值,便可打开值设置窗口如下图所示。
修改值为66,点击Send打开Modbus Slave(从设备端)便可发现也做出了改变,如下图所示。
我们还可以打开Modbus Poll,点击Display,选择Commuaction,查看发送的报文。
TX是我们主站发送的报文,RX是从站返回的报文,报文我们下面会展开说明。
10.4
Modbus协议细节
10.4.1 Modbus协议概述
简而言之,Modbus协议是一种单主/多从的通信协议,其特点是在同一时间总线上只能有一个主设备,但可以有一个或者多个(最多247个)从设备。Modbus通信总是由主设备发起,当从设备没有收到来自主设备的请求时,从设备不会主动发送数据。从设备之间不能相互通信,主设备只能同时启动一个Modbus访回事务处理。主设备可以采用两种方式向从设备发送Modbus请求报文,即主设备可以对指定的单个从设备或者线路上所有的从设备发送请求报文,而从设备只能在被被动接收请求报文后给出响应报文,即应答。这两种模式分别如下图所示。
Modbus请求应答周期
单播模式。主设备仅仅寻址单个从设备,从设备接收并处理请求后,向主设备返回一个响应报文,即应答。在这种模式下,一个Modbus事务处理包含两个报文:一个是主设备的请求报文,另一个是从设备的响应报文。
每个从设备必须有唯一的地址(地址范围为1~247),这样才能区别于其它从设备,从而可以独立被寻址,同时主设备不占用地址。
广播模式。此种模式下,主设备可以向所有从设备发送请求指令,而从设备在接收到广播指令后仅进行相关指令的事务处理,而不要求返回应答。因此广播模式下,请求指令必须是Modbus标准功能中的写指令。
根据Modbus标准协议的要求,所有从设备必须接收广播模式下的写指令,且地址0被保留,用来识别广播通信。
①请求
主设备发送的请求报文主要包括从设备地址(或广播地址0)、功能码、传输的数据以及差错检测字段。
查询消息中的功能码告诉我们被选中的从设备地址要执行何种功能。数据段包含从设备要执行功能的所有附加信息。例如,功能代码03要求从设备读取保持寄存器并返回其内容。
数据段必须包含要告诉从设备的信息:从哪个寄存器开始读取及要读取的寄存器数量。差错检测域为从设备提供一种验证消息内容是否正确的方法。
②应答
从设备的应答报文包括地址、功能码、差错检测域等;如果从设备产生了一个正常的回应,则回应消息中的功能码是查询消息中的功能码的回应。数据段包括从设备收集的数据,如寄存器值或状态。如果有错误发生,则功能码将被修改以用于指出回应消息是错误的,同时数据段包含描述此错误信息的代码。差错检测域允许主设备确认消息内容是否可用。
对于串行链路来说,又存在两种传输模式:ASCII(AmericanStandardCode for Information Interchange,美国标准信息交换码)模式和RTU(RemoteTerminal Unit,远程终端单元)模式。但是,对于同一网络或链路来说,所有设备必须保持统一,要么统一为ASCII模式,要么统一为RTU模式,不可共存。相对来说,RTU模式的传输效率更高,因此在当前普遍的生产环境中,RTU模式获得了广泛应用,而ASCII模式只能作为特殊情况下的可选项。
如您在使用瑞萨MCU/MPU产品中有任何问题,可识别下方二维码或复制网址到浏览器中打开,进入瑞萨技术论坛寻找答案或获取在线技术支持。
https://community-ja.renesas.com/zh/forums-groups/mcu-mpu/
未完待续
推荐阅读
Linux编译与集成工具 - RZ MPU工业控制教程连载(21)
头文件、库文件与Makefile配置要点 - RZ MPU工业控制教程连载(22)
学习Modbus的快速方法 - RZ MPU工业控制教程连载(23)