如何解决指针表
我将 Wago PLC - PFC200 - 用于家庭自动化。我已经完成了大部分事情,比如灯光或百叶窗自动化。最近我决定进行一些重构,我开始认为这样的 PLC 不是带有垃圾收集器的 PC,它可能比将表中的 POU 传递给那些 POU 的指针更有益。
我从这样的事情开始:
声明:
VAR
Lighs: ARRAY [1..siTotalLightsCount] OF Relay;
END_VAR
其中 Relay
是我的 POU(程序组织单元 - 就像一个类)。
初始化:
Lighs[1] := MainLightRelay;
Lighs[2] := WindowLightRelay;
Lighs[3] := IslandLightRelay;
在 POU 方法中的使用:
FOR siCurrent := 1 TO siTotalLightsCount DO
Lighs[siCurrent].xCentralOff := xCentralOffSignal;
END_FOR
但我可能会为变量节省一些内存并采用这种方法:
声明:
VAR
Lighs: ARRAY [1..siTotalLightsCount] OF POINTER TO Relay;
END_VAR
初始化:
Lighs[1] := ADR(MainLightRelay);
Lighs[2] := ADR(WindowLightRelay);
Lighs[3] := ADR(IslandLightRelay);
在 POU 方法中的使用:
FOR siCurrent := 1 TO siTotalLightsCount DO
Lighs[siCurrent]^.xCentralOff := xCentralOffSignal;
END_FOR
有意义吗?我家有 15 个房间,大多数房间都有不止一盏灯(所以 Relay
对象更多)。不多,但是,PLC不是PC,有一些内存限制。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。