# 7. 现场协议栈
# 7.1 Modbus TCP
# 7.1.1 Modbus TCP Master
添加协议栈
用户鼠标右键项目树中的“通讯协议栈”节点,在通讯协议栈列表中选择“Modbus TCP Master”,在弹窗中可修改协议栈的名称,点击“确认”按钮,即可在项目树“通讯协议栈”节点下查看到新添加的Modbus TCP Master协议子节点。
鼠标点击新添加的协议子节点,在页面右侧的协议配置界面中可以对“连接配置”、“数据操作”等进行配置。
通讯参数配置
Modbus TCP Master的通讯参数包括从设备的IP地址、端口号、连接超时时间、响应超时时间和任务间隔。其中“IP地址”为目标从站的IP地址,从站应与主站在同一网段中;“Server端口”为目标从站的Modbus TCP slave服务端口。
数据操作配置
在数据操作页面中可根据从站设备的具体情况配置“线圈”、“离散输入”、“保持寄存器”和“输入寄存器”。“起始地址”、“数量”和“IEC地址偏移”这三个参数填写完后,会在当前页面下方自动生成相应数目的点表,且每个点都有唯一的名称、IEC地址和数据类型,其中点的名称可以重命名,这些数据点都以全局变量的形式存在,可以在用户的POU程序中以外部变量的形式使用。
说明:
- “IEC地址偏移”用于自动生成点表的IEC地址,用户需要在配置前做好地址规划,确保地址不重叠;
- “起始地址”默认从0开始,一般不用修改;
- 切记“起始地址”与“数量”的和不应超过实际从设备线圈/寄存器的数量,即应为实际从设备线圈/寄存器的子集;例如某从站设备具有8个线圈、8个离散输入、4个保持寄存器和4个输入寄存器,则它们的起始地址和数量可分别设为:
类型 | 起始地址 | 数量 | 说明 |
---|---|---|---|
线圈 | 0 | 8 | 0+8<=8 |
离散输入 | 0 | 4 | 0+4<=8 |
保持寄存器 | 0 | 2 | 0+2<=4 |
输入寄存器 | 0 | 2 | 0+2<=4 |
- 在线变量实时值查看
协议栈配置好后,用户可在POU中使用协议栈自动生成的变量;编写好逻辑程序,经过“编译”、“连接”、“下载”、“运行”等步骤后可在协议栈界面观察到协议栈的运行状态,所有变量的实时值在“值”所在列显示。
- 删除协议栈
在离线状态下,鼠标右键工程树中的Modbus TCP Master协议子节点,选择“删除”操作即可;注意,一旦执行删除协议,不可恢复。
# 7.1.2 Modbus TCP Slave
添加协议栈
用户鼠标右键项目树中的“通讯协议栈”节点,在通讯协议栈列表中选择“Modbus TCP Slave”,在弹窗中可修改协议栈的名称,点击“确认”按钮,即可在项目树“通讯协议栈”节点下查看到新添加的Modbus TCP Slave协议子节点。
鼠标点击新添加的协议子节点,在页面右侧的协议配置界面中可以对“连接配置”、“数据操作”等进行配置。
通讯参数配置
Modbus TCP Slave的通讯参数包括从设备的IP地址、端口号,其中“IP地址”为主机网络接口的IP,默认为0.0.0.0;“Server端口”处填写合适的端口号,范围:
0~65535用户应避免使用系统服务公认端口号以防冲突,即避免使用0~1023之间的端口号。
建立数据表
数据表操作页面可建立4张点表,分别为“线圈”、“离散输入”、“保持寄存器”和“输入寄存器”,每张点表的起始地址最小从0开始,数量可更具用户的需求决定;
“起始地址”和“数量”参数配置好后,在下方自动生成相应点数的点表,接下来用户可将应用程序中带地址的IEC变量与表中的点一一绑定;鼠标点击每一行的“名称”空白处,可选择工程中已有的IEC变量与该行绑定,可用的变量已根据数据类型过滤,数据类型不匹配或者不带IEC地址的变量都不会显示;未绑定变量的行所有数据默认为0。
变量绑定完后,点击保存按钮或CTRL+S键保存。
预删除已绑定的变量,鼠标点击变量“名称”后面的
图标删除即可。
状态查看
配置好协议栈后,在POU中编写逻辑程序,经过“编译”、“下载”、“运行”步骤后可在协议栈界面观察到协议栈的运行状态,绿色图标表示正常状态,灰色则表示异常。
删除协议栈
在离线状态下,鼠标右键工程树中的Modbus TCP Slave协议子节点,选择“删除”操作即可;注意,一旦执行删除协议,不可恢复。
# 7.2 Modbus RTU
# 7.2.1 Modbus RTU Master
- 添加协议栈
用户鼠标右键项目树中的“通讯协议栈”节点,在通讯协议栈列表中选择“Modbus RTU Master”,在弹窗中可修改协议栈的名称,点击“确认”按钮,即可在项目树“通讯协议栈”节点下查看到新添加的Modbus RTU Master协议子节点。
鼠标点击新添加的协议子节点,在页面右侧的协议配置界面中可以对“连接配置”、“数据操作”等进行配置。
- 通讯参数配置
Modbus RTU Master的通讯参数包括从设备的COM端口名、波特率、奇偶校验位、数据位、停止位、响应时间、从设备ID和任务间隔。
常用的通讯参数配置:
- COM端口:ttyS0/ttyUSB0/… (需要与主站串口设备名称一致)
- 波特率:9600或115200 (应与待通信的从站设备ID一致)
- 奇偶校验:None (应与待通信的从站设备ID一致)
- 数据位:8 (应与待通信的从站设备ID一致)
- 停止位:1 (应与待通信的从站设备ID一致)
- 响应超时:1000ms
- 从设备ID:1~247 (应与待通信的从站设备ID一致)
- 任务间隔:一般不小于100ms
- 数据操作配置
同Modbus TCP Master,可参考7.1.1章节。
- 在线变量实时值查看
同Modbus TCP Master,可参考7.1.1章节。
- 删除协议栈
同Modbus TCP Master,可参考7.1.1章节。
# 7.2.2 Modbus RTU Slave
- 添加协议栈
用户鼠标右键项目树中的“通讯协议栈”节点,在通讯协议栈列表中选择“Modbus RTU Slave”,在弹窗中可修改协议栈的名称,点击“确认”按钮,即可在项目树“通讯协议栈”节点下查看到新添加的Modbus RTU Slave协议子节点。
鼠标点击新添加的协议子节点,在页面右侧的协议配置界面中可以对“连接配置”、“数据操作”等进行配置。
- 通讯参数配置
Modbus RTU Slave的通讯参数包括主站设备的COM端口名、波特率、奇偶校验位、数据位、停止位、本机设备ID。
常用的通讯参数配置:
- COM端口:ttyS0/ttyUSB0/… (需要与主站串口设备名称一致)
- 波特率:9600或115200
- 奇偶校验:None
- 数据位:8
- 停止位:1
- 设备ID:1~247 (外部Modbus RTU Master主站可通过该ID寻址到当前主站)
- 建立数据表
同Modbus TCP Slave,可参考7.1.2章节。
- 解除绑定
同Modbus TCP Slave,可参考7.1.2章节。
*状态查看
同Modbus TCP Slave,可参考7.1.2章节。
- 删除协议栈
同Modbus TCP Slave,可参考7.1.2章节。
# 7.3 EtherCAT Master
添加协议总线
鼠标右键左侧工程树中的通讯协议栈,在列表中选择“EtherCAT Master Bus”添加EtherCAT主站总线,并在弹框中输入总线名称(字符间不要有空格)后确认。
扫描并添加从站
EtherCAT主站总线添加完成后,点击该总线并在右侧配置页面中选择总线所用的网卡,即点击“网络配置”按钮,在设备网卡列表中选择目标网卡后确认。
网卡选择完成后,在输入/输出区偏移量框中填入合适值(EtherCAT默认为1000);输入区偏移量对应从站的Tx-PDO逻辑点表位于IEC地址I区缓存的起始位置;输出区偏移量对应从站的Rx-PDO逻辑点表位于IEC地址Q区缓存的起始位置。
点击“从站扫描”按钮即可将总线下所有从站扫描出来,并以列表的形式展示,点击从站设备列表弹框中的“应用”按钮即可将从站添加到工程中,并在工程树EtherCAT总线节点下以叶子节点的形式展示。
编辑从站
点击每个从站,在右侧从站信息页签中展示从站拥有的PDO点表,包含变量名、通道名、IEC地址、数据类型等,其中每个变量名都是唯一的,且用户可根据需要对变量重命名。
编写应用程序使用从站变量
在POU中的变量列表编辑区添加变量,变量的类别需为“外部”,点击变量“名称”区域可选择所需的变量(Tips: 输入变量名的关键字母可做筛选,提高效率);变量选好后就可以在下方的程序体编辑区中编写程序了。
应用程序编辑完毕后,选择设备和应用,经过“编译”、“连接”、“下载”和“启动”步骤将程序下载到目标设备中运行。
总线及从站状态展示
程序启动后,在IDE中可展示变量的实时值,EtherCAT总线及各总站的状态也在左侧的工程树中显示,绿色图标表示通讯正常,红色图标则表示通讯异常。
点击从站叶子节点,在右侧从站点表中也显示了各变量的实时值。
# 7.4 基于通讯协议关联IO变量
# 7.4.1 Modbus变量绑定
- Modbus Master 变量绑定
Modbus Master 数据操作:
“起始地址”和“数量”参数配置好后,在下方自动生成相应点数的点表,接下来用户可将应用程序中带地址的IEC变量与表中的点一一绑定。此处的“名称“,可以根据用户需求进行自由变更。
Modbus Master变量绑定:
在编程定义变量时,选择“外部”变量类别,编辑便来给你名称。鼠标点击每一行的“名称”空白处,可选择工程中已有的IEC变量与该行绑定,可用的变量已根据数据类型过滤,数据类型不匹配或者不带IEC地址的变量都不会显示;未绑定变量的行所有数据默认为0。
绑定变量后,编程过程中可以藉由访问此变量来获取Modbus访问的IO资源。
变量绑定
首先在程序的变量定义区,正确定义“类别”、“地址”和名称。注意:地址需要符合IEC61131-3规范的语法,以及匹配需要绑定的变量类型。
Modbus Slave 数据操作时绑定变量:
用户在配置Modbus Slave 数据操作时,可以将slave中的变量映射到程序中“带地址“的变量中。如果类型匹配,且还没有被用作其它绑定,则用户可以对其进行绑定。
同理,用户也可以“透传“Modbus Master中的同类型变量。
← 6. 编写IoT应用 8. IoT数据通讯 →