文章目录

Codesys的通信功能块配置实例

发布于 2026-03-30 22:52:37 · 浏览 5 次 · 评论 0 条

Codesys 的通信功能块配置实例

本指南旨在指导用户在 Codesys 开发环境中完成 Modbus TCP 通信功能块的配置。通过以下步骤,可实现主站与从站之间的数据读写。操作过程无需额外插件,仅需标准库支持。


1. 环境准备与网络检查

在开始配置之前,必须确保硬件连接正常且软件环境就绪。

  1. 检查 物理网线是否连接牢固,确保 PLC 与上位机或从站设备处于同一局域网段。
  2. 打开 Codesys 软件,点击 菜单栏中的 文件选择 打开项目 加载现有工程或创建 新工程。
  3. 确认 设备树中已添加正确的 PLC 设备型号,若未添加,右键点击 设备选择 添加设备 并从列表匹配 对应硬件。
  4. 记录 主站与从站的 IP 地址,避免地址冲突。主站 IP 建议设置为 192.168.1.10,从站 IP 设置为 192.168.1.20,子网掩码统一为 255.255.255.0

2. 添加通信库文件

Codesys 的通信功能依赖于标准库,需手动加载至项目。

  1. 展开 项目树中的 文件夹。
  2. 右键点击 图标,选择 添加库
  3. 浏览 至系统默认库路径,通常位于 C:\Program Files (x86)\CODESYS\System
  4. 勾选 ModbusTCPClientModbusTCPServer 库文件,根据当前设备角色决定。若本设备为发起方,选择 Client 版本。
  5. 点击 确定 按钮完成导入,观察 库列表中出现 ModbusTCPClient 字样即表示成功。

3. 配置通信功能块

在此阶段,将实例化功能块并设定关键通信参数。

  1. 打开 主程序组织单元(通常为 MainPLC_PRG)。
  2. 声明 一个功能块实例,在变量声明区输入 以下代码:
VAR
    fbModbusClient : ModbusTCPClient;
    ibConnect : BOOL;
    iwStatus : WORD;
END_VAR
  1. 切换 至程序编辑区,拖拽 fbModbusClient 实例至逻辑网络中。
  2. 设置 功能块输入参数,参考 下表进行配置:
参数名称 数据类型 设定值示例 说明
sServerAddress STRING '192.168.1.20' 从站设备的 IP 地址
iPort INT 502 Modbus 默认端口号
iTimeout INT 1000 通信超时时间,单位毫秒
bConnect BOOL TRUE 连接使能信号
  1. 保存 当前程序,按下 Ctrl + S 确保更改生效。

4. 数据映射与逻辑编写

通信建立后,需定义具体读写的数据地址及变量。

  1. 定义 数据交互变量,在变量声明区补充 以下代码:
VAR
    arWriteData : ARRAY [0..9] OF WORD;
    arReadData : ARRAY [0..9] OF WORD;
    bWriteReq : BOOL;
    bReadReq : BOOL;
END_VAR
  1. 配置 写操作功能块实例,调用 MB_Client_WriteMultipleRegisters 功能。
  2. 输入 目标地址参数,iAddress 设置为 0iCount 设置为 10,表示写入 10 个寄存器。
  3. 连接 数据数组,将 arWriteData 关联至功能块的数据输入引脚。
  4. 配置 读操作功能块实例,调用 MB_Client_ReadMultipleRegisters 功能。
  5. 输入 目标地址参数,iAddress 设置为 100iCount 设置为 10,表示读取从站地址 100 开始的 10 个寄存器。
  6. 关联 接收数组,将 arReadData 关联至功能块的数据输出引脚。

通信逻辑流程如下所示:

flowchart TD A["开始:系统初始化"] --> B["检查网络连接状态"] B -- "正常" --> C["建立 TCP 连接"] C -- "成功" --> D["发送写请求"] D --> E["等待从站响应"] E -- "超时" --> F["报错并重试"] E -- "成功" --> G["发送读请求"] G --> H["更新本地变量"] H --> I["结束:循环扫描"]

5. 编译与下载程序

完成逻辑编写后,需将程序编译并下发至控制器。

  1. 点击 工具栏中的 生成 按钮,或按下 F11 快捷键启动编译。
  2. 查看 消息窗口,确认 显示 0 错误,0 警告。若存在错误,双击 错误信息跳转至对应行修改。
  3. 连接 硬件设备,点击 在线 菜单,选择 登录
  4. 输入 目标设备 IP 地址 192.168.1.10点击 确定 建立在线连接。
  5. 下载 程序,点击 文件 菜单中的 下载 选项,确认 弹出框中的警告信息后点击
  6. 切换 至运行模式,点击 在线 菜单中的 运行 按钮,观察 状态栏变为绿色。

6. 调试与状态监控

程序运行后,需验证通信数据是否准确交互。

  1. 打开 变量监视表,添加 fbModbusClient.iStatus 变量。
  2. 读取 状态码,若值为 16#0000 表示通信正常,若值为 16#8000 以上表示存在错误。
  3. 对比 数据,修改本地 arWriteData 数组的值,观察 从站设备是否接收到相应变化。
  4. 强制 从站寄存器数值,查看 本地 arReadData 数组是否同步更新。
  5. 断开 网线模拟故障,确认 bConnect 信号变为 FALSE 且状态码更新为超时错误。
  6. 恢复 网络连接,观察 系统是否在设定时间内自动重连。

若状态码显示异常,检查 防火墙设置,确保 502 端口未被拦截。验证 从站设备是否已启用 Modbus TCP 服务功能。核对 IP 地址子网掩码是否完全一致。


7. 常见问题排查

遇到通信失败时,按以下顺序进行检查。

  1. 测试 网络连通性,在 PC 端打开 命令行工具,输入 ping 192.168.1.20 查看 是否丢包。
  2. 确认 端口占用,使用 网络扫描工具检查 502 端口是否处于监听状态。
  3. 复查 功能块实例,确保 未在多个任务中重复调用同一通信实例导致资源冲突。
  4. 检查 变量地址,确认 从站寄存器地址未超出设备允许范围,部分设备地址需加偏移量。
  5. 更新 固件版本,访问 设备厂商官网下载 最新固件,解决 已知通信兼容性问题。

完成上述步骤后,通信功能块即可稳定运行。

评论 (0)

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

扫一扫,手机查看

扫描上方二维码,在手机上查看本文