'Inteligenty' dom ze sterownikiem PLC

 Language:
Szukanie zaawansowane  

Aktualności:

Powrót do strony głównej: www.edom-plc.pl

Autor Wątek: Tablica wskaźników  (Przeczytany 1019 razy)

dawidr

  • Newbie
  • *
  • Wiadomości: 7
    • Zobacz profil
Tablica wskaźników
« dnia: Stycznia 26, 2021, 10:56:49 pm »

Używam PFC200 do automatyki mojego domu. Jeszcze się nie przeprowadziłem do nowego miejsca ale mam już cześć rzeczy oprogramowane. Chciałem zrobić mały refactoring kodu ostatnio i zacząłem się zastanawiać czy aby zaoszczędzić trochę pamięci zamiast pakować zmienne do tabeli użyć wskażników do nich.

Zacząłem od czegoś takiego:

Deklaracja:

VAR
    Lighs: ARRAY [1..siTotalLightsCount] OF Relay;
END_VAR

Relay to jest moje POU które w środku ma WagoAppBuilding.FbLatchingRelay oraz kilka innych rzeczy

Inicjalizacja:

Lighs[1] := MainLightRelay;
Lighs[2] := WindowLightRelay;
Lighs[3] := IslandLightRelay;

Używam tego w metodzie pod POU w ten sposób:

FOR siCurrent := 1 TO siTotalLightsCount DO
    Lighs[siCurrent].xCentralOff := xCentralOffSignal;
END_FOR

No i zacząłem się zastanawiać czy może warto przerobić to na coś takiego

VAR
    Lighs: ARRAY [1..siTotalLightsCount] OF POINTER TO Relay;
END_VAR

Lighs[1] := ADR(MainLightRelay);
Lighs[2] := ADR(WindowLightRelay);
Lighs[3] := ADR(IslandLightRelay);

I użycie w metodzie:

FOR siCurrent := 1 TO siTotalLightsCount DO
    Lighs[siCurrent]^.xCentralOff := xCentralOffSignal;
END_FOR

Ma to jakiś sens? Wydzielonych pokoi mam 14, poza tymi POU mam też kilka innych. Niby nie dużo ale takie PLC to nie PC gdzie pamięc jest prawie nie ograniczona a i tak działa garbage collector i czyści co potrzeba.
Zapisane