struct - Codesys 将元素添加到派生结构
问题描述
是否可以将元素添加到 struct.
TYPE StructBase:
STRUCT
Start : INT;
Complete : INT;
END_STRUCT
END_TYPE
StructDerived : StructBase;
StructDerived.StateInit : INT;
StructDerived.StateMoveFwd : INT;
StructDerived 的元素将在“枚举”函数中编号。完成后,StructDerived 元素用于 case 语句。
这个想法是准备一个完整的抽象函数,并准备好我需要的基本功能。当这个功能被扩展时,应该清楚在哪里添加什么。因此,例如机器中的所有单元都具有相同的布局。
我正在研究的是这样的:
TYPE BaseState:
STRUCT
EnumVal : INT;
Name : STRING;
END_STRUCT
END_TYPE
TYPE StructBase:
STRUCT
StateArray : ARRY [..] OF BaseState;
END_STRUCT
END_TYPE
StructDerived : StructBase;
StructDerived[0].Name := 'StateInit';
StructDerived[1].Name := 'StateMoveFwd';
So if i would use it in a case:
CASE AbortingState OF
StructDerived[0].EnumVal:
....
记录“名称”以进行状态跟踪。看起来像列表或字典之类的东西会做很多工作。
感谢您对此事的任何建议。
解决方案
结构化文本是一种强类型语言,无法在运行时动态地将元素添加到结构中。
数据结构不是函数,因此如果您打算拥有一个数据结构,则应该设计一个功能块而不是结构
具备我需要的基本功能的完整抽象功能
“ case of ” 指令有一个条件变量,该变量根据一个或多个条件指令(整数文字)进行检查。
您不能将变量用作条件指令。
您可以使用继承来扩展结构和功能块,以便创建不同模块的层次结构,并在不同场合将它们实例化以用于不同目的。
推荐阅读
- windows - Monitorig系统(windows):cpu和磁盘加载日志
- keras - 使用keras训练ANN分类时损失NAN
- javascript - V-for 迭代破坏了样式
- javascript - 创建javascript动态svg
- javascript - 我如何等待列表中的每个元素使用 cypress 更新为特定文本
- amazon-dynamodb - 错误:表尚未注册,在 DynamoDB 中
- kubernetes - k8s:由于内存不足,无法删除部署
- javascript - Javascript/Codeigniter 中的价格计算
- sequelize.js - Sequelize 按字母顺序读取迁移文件,但我需要不同的排序
- excel - Do While freq.Value <> " " 'if freq in range >< empty --> ERROR BUG