0

我正在使用 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,有一些内存限制。

4

0 回答 0