You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 06:15:04