PLC ST中在POU内声明带初始值的结构体数组及报错解决方法
错误原因分析
- 触发4024报错的直接原因:
VAR关键字包裹的区域仅允许编写变量声明语句,你写的arr1[1].color := 16#FF0000;是运行时赋值的执行代码,不能放在声明块内。编译器识别时将arr1[判定为新变量声明的开头,按照语法规则要求变量名后加:指定类型,因此抛出“期待:出现在[前”的错误。 - 隐藏语法风险:你声明了
board: board;变量,变量名和自定义结构体类型名完全重名,会导致后续类型识别冲突。
解决方案
可根据你的需求选择以下两种实现方式:
场景1:声明变量时直接配置初始值
如果需要给数组设置默认初始值,直接在变量声明行末尾加初始值定义即可,示例代码:
Program PLC_PRG VAR // 数组声明同时赋初始值,此处仅配置第一个元素的color值,其余元素默认用0初始化 arr1: ARRAY[1..61] OF board := (number := 0, color := 16#FF0000, (others := 0)); // 修改变量名避免和类型重名 board_inst: board; END_VAR
场景2:程序运行时动态赋值
如果需要在程序运行过程中修改数组元素的值,把赋值语句放到VAR块外的程序执行区即可,示例代码:
Program PLC_PRG VAR arr1: ARRAY[1..61] OF board; board_inst: board; END_VAR // 程序执行区,可编写业务逻辑和赋值语句 arr1[1].color := 16#FF0000;
内容的提问来源于stack exchange,提问作者koliber
相关产品推荐
相关产品推荐

