Codesys 的通信功能块配置实例
本指南旨在指导用户在 Codesys 开发环境中完成 Modbus TCP 通信功能块的配置。通过以下步骤,可实现主站与从站之间的数据读写。操作过程无需额外插件,仅需标准库支持。
1. 环境准备与网络检查
在开始配置之前,必须确保硬件连接正常且软件环境就绪。
- 检查 物理网线是否连接牢固,确保 PLC 与上位机或从站设备处于同一局域网段。
- 打开 Codesys 软件,点击 菜单栏中的
文件,选择打开项目加载现有工程或创建 新工程。 - 确认 设备树中已添加正确的 PLC 设备型号,若未添加,右键点击
设备,选择添加设备并从列表匹配 对应硬件。 - 记录 主站与从站的 IP 地址,避免地址冲突。主站 IP 建议设置为
192.168.1.10,从站 IP 设置为192.168.1.20,子网掩码统一为255.255.255.0。
2. 添加通信库文件
Codesys 的通信功能依赖于标准库,需手动加载至项目。
- 展开 项目树中的
库文件夹。 - 右键点击
库图标,选择添加库。 - 浏览 至系统默认库路径,通常位于
C:\Program Files (x86)\CODESYS\System。 - 勾选
ModbusTCPClient或ModbusTCPServer库文件,根据当前设备角色决定。若本设备为发起方,选择Client版本。 - 点击
确定按钮完成导入,观察 库列表中出现ModbusTCPClient字样即表示成功。
3. 配置通信功能块
在此阶段,将实例化功能块并设定关键通信参数。
- 打开 主程序组织单元(通常为
Main或PLC_PRG)。 - 声明 一个功能块实例,在变量声明区输入 以下代码:
VAR
fbModbusClient : ModbusTCPClient;
ibConnect : BOOL;
iwStatus : WORD;
END_VAR
- 切换 至程序编辑区,拖拽
fbModbusClient实例至逻辑网络中。 - 设置 功能块输入参数,参考 下表进行配置:
| 参数名称 | 数据类型 | 设定值示例 | 说明 |
|---|---|---|---|
sServerAddress |
STRING | '192.168.1.20' |
从站设备的 IP 地址 |
iPort |
INT | 502 |
Modbus 默认端口号 |
iTimeout |
INT | 1000 |
通信超时时间,单位毫秒 |
bConnect |
BOOL | TRUE |
连接使能信号 |
- 保存 当前程序,按下
Ctrl + S确保更改生效。
4. 数据映射与逻辑编写
通信建立后,需定义具体读写的数据地址及变量。
- 定义 数据交互变量,在变量声明区补充 以下代码:
VAR
arWriteData : ARRAY [0..9] OF WORD;
arReadData : ARRAY [0..9] OF WORD;
bWriteReq : BOOL;
bReadReq : BOOL;
END_VAR
- 配置 写操作功能块实例,调用
MB_Client_WriteMultipleRegisters功能。 - 输入 目标地址参数,
iAddress设置为0,iCount设置为10,表示写入 10 个寄存器。 - 连接 数据数组,将
arWriteData关联至功能块的数据输入引脚。 - 配置 读操作功能块实例,调用
MB_Client_ReadMultipleRegisters功能。 - 输入 目标地址参数,
iAddress设置为100,iCount设置为10,表示读取从站地址 100 开始的 10 个寄存器。 - 关联 接收数组,将
arReadData关联至功能块的数据输出引脚。
通信逻辑流程如下所示:
flowchart TD
A["开始:系统初始化"] --> B["检查网络连接状态"]
B -- "正常" --> C["建立 TCP 连接"]
C -- "成功" --> D["发送写请求"]
D --> E["等待从站响应"]
E -- "超时" --> F["报错并重试"]
E -- "成功" --> G["发送读请求"]
G --> H["更新本地变量"]
H --> I["结束:循环扫描"]
5. 编译与下载程序
完成逻辑编写后,需将程序编译并下发至控制器。
- 点击 工具栏中的
生成按钮,或按下F11快捷键启动编译。 - 查看 消息窗口,确认 显示
0 错误,0 警告。若存在错误,双击 错误信息跳转至对应行修改。 - 连接 硬件设备,点击
在线菜单,选择登录。 - 输入 目标设备 IP 地址
192.168.1.10,点击确定建立在线连接。 - 下载 程序,点击
文件菜单中的下载选项,确认 弹出框中的警告信息后点击是。 - 切换 至运行模式,点击
在线菜单中的运行按钮,观察 状态栏变为绿色。
6. 调试与状态监控
程序运行后,需验证通信数据是否准确交互。
- 打开 变量监视表,添加
fbModbusClient.iStatus变量。 - 读取 状态码,若值为
16#0000表示通信正常,若值为16#8000以上表示存在错误。 - 对比 数据,修改本地
arWriteData数组的值,观察 从站设备是否接收到相应变化。 - 强制 从站寄存器数值,查看 本地
arReadData数组是否同步更新。 - 断开 网线模拟故障,确认
bConnect信号变为FALSE且状态码更新为超时错误。 - 恢复 网络连接,观察 系统是否在设定时间内自动重连。
若状态码显示异常,检查 防火墙设置,确保 502 端口未被拦截。验证 从站设备是否已启用 Modbus TCP 服务功能。核对 IP 地址子网掩码是否完全一致。
7. 常见问题排查
遇到通信失败时,按以下顺序进行检查。
- 测试 网络连通性,在 PC 端打开 命令行工具,输入
ping 192.168.1.20查看 是否丢包。 - 确认 端口占用,使用 网络扫描工具检查
502端口是否处于监听状态。 - 复查 功能块实例,确保 未在多个任务中重复调用同一通信实例导致资源冲突。
- 检查 变量地址,确认 从站寄存器地址未超出设备允许范围,部分设备地址需加偏移量。
- 更新 固件版本,访问 设备厂商官网下载 最新固件,解决 已知通信兼容性问题。
完成上述步骤后,通信功能块即可稳定运行。

暂无评论,快来抢沙发吧!