楼主最近还看过
打开 CODESYS 工程 → 右键 Application → Add Object → Symbol Configuration
进入 Symbol Config:
勾选Enable Symbol Configuration、Enable Symbol Server(端口默认 11740,威纶通驱动要对应)
把所有要通信的变量(GVL 全局变量、DB 块、结构体)全部勾选,不要只选部分;临时变量(VAR)、局部变量、未勾选的都无法通信
关键设置:取消勾选 “Optimized Access(优化访问)”(CODESYS 默认优化会打乱内存地址、不生成固定偏移,威纶通标签通信必须禁用优化,否则部分变量地址映射错乱)
检查变量属性:必须是VAR_GLOBAL(全局),不能是 VAR(局部)、VAR_TEMP(临时);权限设为Read/Write
编译→全部重建(Clean+Build),重新导出 XML(Application.xml),必须用最新编译的 XML,旧 XML 会导致地址错位
回复本条
设备驱动选:CODESYS V3 TCP(Symbolic,标签通信),不要选 Modbus / 直接地址
IP:中达优控 Q0 的 IP,端口11740(CODESYS 符号服务器默认),超时设 500ms、重试 2 次
关键:数据类型严格匹配、禁止隐式转换
BOOL、INT (16)、DINT (32)、REAL (32)、STRING (长度一致)、WORD/DWORD 必须一一对应
禁止:PLC 是 REAL,HMI 绑成 DINT;PLC 是 BOOL,HMI 绑成 INT;字符串长度不匹配(如 PLC STRING [32],HMI 设 STRING [16])
结构体 / 数组:威纶通对嵌套结构体、多维数组支持有限,尽量拆成基础类型,不要直接绑复杂 UDT
删除 HMI 里旧的 CODESYS 设备 / 标签,重新导入最新编译的 XML
导入时看日志:有没有 **“未知数据类型”“地址无效”“变量不存在”** 警告 —— 这些就是失效变量的根源
单独测试失效标签:
新建一个画面,只放一个失效标签的数值 / 位元件,不绑其他变量
在线模拟 / 下载到屏,看通信状态:单个失效标签就导致通信断,就是这个标签的类型 / 发布问题;多个一起断,是批量 / 驱动问题
回复本条
字节对齐(结构体必查)
CODESYS 默认 4 字节对齐,结构体里变量顺序 / 类型会导致填充字节;威纶通解析时偏移错位,就会读错地址、通信失败
解决:结构体里按BOOL→INT→REAL顺序排列,或手动设 Packed=1(紧凑对齐),重新编译导出 XML
地址越界 / 重叠
检查变量是否超出 Q0 的内存范围、数组下标越界、地址重叠
符号配置里看每个变量的绝对偏移地址(Offset),确认无冲突
命名问题
变量名不要用中文、特殊字符(@#$& 空格)、开头数字、过长名称;威纶通解析时会过滤 / 报错,导致标签无效
区分大小写:CODESYS 区分,威纶通有时不敏感,易匹配错误
网络:Ping Q0 的 IP,确保无丢包、同网段、无防火墙 / 交换机屏蔽 11740 端口
版本兼容:
CODESYS 版本、中达优控 Q0 固件、威纶通 EB Pro 版本要匹配;老版 EB Pro 不支持新 CODESYS 数据类型(如 LREAL、WSTRING)
更新 EB Pro 到最新版,或降级 CODESYS 符号配置兼容模式
CODESYS:打开 Symbol Config,确认所有失效变量已勾选、优化访问关闭、全局变量、权限读写 → 全部重建→导出新 XML
威纶通:删除旧标签,重新导入新 XML,核对数据类型完全一致
单独测试 1 个失效标签:只绑它,看是否通信;正常→批量问题;仍断→该变量类型 / 对齐 / 作用域错误
结构体拆成单个基础变量测试,排除对齐问题
只勾选了部分变量到 Symbol Config:以为 XML 全包含,实际没发布的变量 HMI 访问时直接报错、拉断通信
结构体启用了优化访问 / 对齐错误:部分变量偏移正常、部分偏移错乱,HMI 读不到
回复本条


客服
小程序
公众号