直接跳到内容

Modbus RTU

Modbus RTU协议是一种基于串口通信的Modbus协议,采用二进制表现形式以及紧凑数据结构,通信效率较高,应用广泛。

RTU协议中的指令由地址码(一个字节),功能码(一个字节),起始地址(两个字节),数据(N个字节),校验码(两个字节)五个部分组成,其中数据又由数据长度(两个字节,表示的是寄存器个数,假定内容为M)和数据正文(M乘以2个字节)组成,而RTU协议是采用3.5个字节的空闲时间作为指令的起始和结束,一般而言,只有当从机返回数据或者主机写操作的时候,才会有数据正文,而其他时候比如主机读操作指令的时候,没有数据正文,只需要数据长度即可。

本系统支持的功能码

功能码名称作用
01读线圈取得一组线圈的当前状态
02读离散输入取得一组离散输入的当前状态
03读保持寄存器取得一组模拟量输出的当前值
04读输入寄存器取得一组模拟量输入的当前值
05写单路线圈设定某个线圈的当前值
06写单路寄存器设定某个模拟量输出的当前值
15写多路线圈设定一组线圈的当前值
16写多路寄存器设定一组模拟量输出的当前值
23读写多入寄存器设定一组模拟量输出的当前值并读取一组模拟量的当前值

本章节将针对ModbusRTU设备组态进行详细描述。

Modbus RTU主站配置

主站添加

1、右键设备节点,点击“添加设备”弹出添加设备对话框,选择"COM"设备点击添加设备(如果已经添加该设备,直接进行下一步操作)。

img

img

img

2、选中COM节点,右键菜单“添加模块” 选择"Modbus_COM_Master"点击添加设备。

img

3、点击“添加设备”按钮后会在“COM”节点下显示添加的主站节点。

img

主站基本配置

在主站的基本配置中,可以选择关联任务。关联任务的可选列表会自动列出本站下配置的所有任务,选择任务关联后主站会在该任务得到执行的时候访问从机设备,读取或写入从设备的Modbus数据。建议关联任务的周期值是从机设备关联任务周期值的两倍以上。

响应超时是指主机访问从机设备时对从机应答的时效要求,若对应从机应答超时则不再等待本次应答。

帧间隔是指发送连续帧之间的时间间隔。

img

主站设备诊断

登入后,可以查看设备的状态。

img

主站设备日志

登入后,显示最近20条日志信息。最近记录的日志显示在最上面。

img

上图是处于“自动刷新”状态的日志页面,由于未有日志信息产生,所以表格中的内容为空。

点击“自动刷新”可以在日志刷新状态和不刷新状态间进行切换,上图是日志处于不自动刷新的状态。

从站添加

1、点击"Modbus_COM_Master"主站节点,右键菜单“添加模块” 添加"Modbus_COM_Slave"点。

img

img

2、点击“添加设备”按钮后会在主站节点下显示添加的从站节点。

img

从站基本配置

需要给从站配置站号,站号的范围1-247。该号必须与待访问的从机设备设置的站号一致。

响应超时是指主机访问从机设备时对应答的时效要求,若从机应答超时则不再等待本次应答。响应超时默认为0,表示采用主站的响应超时设置。

img

通道指令配置

本页面可以配置系统支持的各种指令,系统支持的指令参考本系统支持的功能码

点击从站的“通道指令配置”,页面展示如下

img

选中某行,双击会弹出指令配置框(若是空行则新增指令,若是已有指令则修改指令)。

img

通道名称可以是任意字符,功能码列表列举系统支持的所有功能码。触发方式是指指令发送的时机,有两种方式:一、周期;二、上升沿事件;若选择周期方式,则右边控件填周期值;若选择事件,则右边控件填BOOL型变量,变量除了可以直接输入外,还可以通过右侧的按钮选择。

读、写配置会根据功能码的不同,呈现不同的使能状态。例如选择“Read...”功能码,读配置里边的控件会使能,而写配置里边的控件会失能。偏移是指Modbus区域的偏移量,0表示该区域的首地址,1表示该区域的距离首地址偏移为1处的地址,依此类推。长度表示该指令读取的数据长度。偏移和长度的单位与Modbus区域相关,模拟量为2字节,开关量为1比特。读配置中的错误处理指读取过程中遇到出错情况,该如何对待读取的数据。您可以根据需要选择“保持最近数据”或“设置为0”。

编辑后若有明显错误,会在对话框下方显示提示信息,您可以参考并修正。

配置无误点击确定按钮后,该行就会按照对话框的配置显示内容,也就是本条指令配置或修改成功。您也可以通过右键菜单“添加”或“插入”指令,插入的指令会在选中行的前面,添加的指令在最后面。

初始化指令配置

初始化指令是指下装或上电后主机给从机发送的指令,该指令只发送一次。初始化指令可以起到数据初始化的作用。因此,在使用初始化功能的时候,需要确保从机已经启动并联网,否则会错过接收初始化指令的时机。

初始化指令只支持“写”相关的功能码。

点击从站的“初始化指令配置”,页面展示如下

img

选中某行,双击会弹出指令配置框。

img

功能码的下拉表列举出初始化指令支持的功能码。默认值是指数据初始化的值,该值最大为65535,若配置的数据超过了2字节,则超出部分的值为0。

IO映射配置

在IO映射配置页面,您可以修改指令的地址,可以为指令对应的数据定义变量或映射到已经定义的变量。例如,从站下配置了一条读1个保持寄存器的指令,IO映射页面如下。

img

变量和映射:在指令对应数据(输入或输出)的地址上可以定义变量,也可以把数据映射到其它已经定义的变量上。在变量字段上,输入合法的标识符,若该标识符是已经存在的变量,则会自动勾选映射;若该标识符没有被使用,则会定义该变量且该变量的地址就是对应“地址”列的值。在定义变量后,您仍可以修改映射关系。

通道:“通道0”对应指令配置页面中的指令名称(对于Modbus协议来说通道对应指令),该列是不可编辑的。

地址固定:可以设置通道的地址为固定的,默认是不固定的。地址设为固定后,表示该地址绑定到该通道了,无论是通道的数据量变大或变小,系统都不会分配新的地址给该通道。“通道0”下面的Bit0-Bit15是对WORD型通道的比特呈现,这些比特是隶属于通道0的,不可单独修改地址和设置地址固定等。

地址:字母I表示输入,字母Q表示输出。本通道对应读指令,所以映射为输入,对应字母I。添加新的指令后,系统会为指令自动分配空闲的地址。您可以为通道设置其它地址,但是新的地址需要符合指令对应的区域要求和地址格式要求。

类型:该字段是不可编辑的,系统会根据配置的指令自动显示。

注释:可以为通道以及通道下的各个比特设置说明。

工程登入后,该页面会多出“在线值”、“准备值”。

img

您可以在"在线值"一列看到对应通道的实时值;还可以在准备值一列中填入新值,通过“写入”命令改写对应通道的实时值。例如在通道0的准备值处写入255,页面实时值会刷新,见下图。

img

从站设备诊断

登入后,可以查看设备的实时状态。

img

上图是Modbus RTU未配置指令的实时状态,请求计数显示为0,也没有发生任何错误。

Modbus RTU从机设备配置

从机设备是主机的访问对象。从机设备可以支持保持寄存器、输入寄存器、线圈、离散输入等4个区域的数据模型配置,满足主机的访问需求。

从机设备添加

系统的设备库中默认集成Modbus串口类从机设备Modbus_COM_Device,通过点击“COM”节点(需要先添加COM节点)的右键菜单“添加模块” 添加本节点。

img

选择Modbus_COM_Device设备,点击“添加设备”按钮后会在“COM”节点下显示添加的从机节点。

img

基本配置

在从机设备的基本配置中,可以选择关联任务。关联任务的可选列表会自动列出本站下配置的所有任务,选择任务关联后设备会在该任务得到执行的时候响应主机设备的请求。

站号作为访问的寻址标志,需要与主机的从站配置一致。

img

数据模型配置

在本页面,您可以构建从机设备的数据模型。

img

双击单行的“Modbus区域”可以设置或修改区域,区域通过下拉的方式列举出“保持寄存器”、“输入寄存器”、“线圈”、“离散输入”。比如在上图空白行的Modbus区域双击即可选择区域并创建对应的块。

块的大小和地址可以在表格中直接双击修改,“寄存器”的单位是字,“线圈”和“离散输入”的单位是比特。“Modbus起始地址”采用16进制和10进制混合显示的方式展现,您在修改的时候可以按照10进制或16进制格式输入,软件会自动识别并转换为混合显示方式。

保持寄存器和线圈区域默认为只读(不勾选“可写”),表示主机往这两个区域写值,而从机只读取这两个区域。如果从机需要往这两个区域写值,那么需要勾选“可写”。

IO映射配置

本页面的配置参考从站配置中的IO映射配置

设备诊断

登入后,可以查看设备的实时状态。

img

上图显示从机的COM口已经成功打开,运行正常,当前处于等待主机访问的状态。

设备日志

登入后,显示最近20条日志信息。最近记录的日志显示在最上面。

img

Modbus RTU通讯举例

Modbus从机有10个模拟量供主机读取,另外有5个开关量可以被主机写入,主机按1s周期访问从机。

主机用runtime仿真软件模拟,从机(IP:192.168.1.9)用runtime仿真软件模拟。主机通讯口为COM3,从机通讯口为COM1。

创建主机对应工程

启动AnyConrol软件,点击工具栏中的“新建”,新建工程(选择标准模板)命名为MasterRTUPrj。工程管理树如下图

img

右键总线配置,选择“新建总线协议”

img

选择COM后,点击添加设备按钮(不要关闭对话框)。此时工程管理树如下

img

点击COM_0节点,添加对话框自动更新可添加的设备。

img

选择Modbus_COM_Master点击“添加设备”按钮,继续选中工程管理树中的Modbus_COM_Master_0节点,添加对话框会自动刷新可添加的设备。选中Modbus_COM_Slave,点击“添加设备”按钮,关闭对话框。此时,设备添加完毕,工程管理树如下

img

主机COM口的参数配置

img

主站的参数配置

img

修改Main_Task任务的周期为1s。参考参数配置

从站的参数配置

img

从站的通道指令配置

img

以上配置完成后,编译、下装、登入,进入在线状态。

img

此时,因为从机没有启动,设备显示异常状态。接下来配置从机。

创建从机对应工程

创建过程跟主机类似,建成后,工程管理树如下

img

从机COM口参数配置

img

从机设备基本配置

img

修改MainTask的任务周期为100ms。(一般情况下,从机需要及时响应主机的访问,设置任务周期时满足主机的任务周期是从机的2倍以上)

从机设备的数据模型配置

img

以上配置完后,修改通讯的IP地址。通过菜单“在线”-“通讯参数设置”打开通讯设置页面,设置IP:192.168.1.9。

img

编译、下装、登入。工程管理树如下 img

此时再看主机对应的工程管理树,已经显示正常。设备图标中含有“!”,表示曾经发生过故障需要确认。

img

上图是从通讯异常恢复到正常的工程管理树。您可以打开该设备的“设备诊断”页面,点击“确认”按钮消除“!”号。

Modbus RTU已经加载完毕