指针表

问题描述

我将 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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...