Strukturierter Text - "static" Variablen wie in C

Omnivore

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi :),

ich arbeite gerade das erst mal mit ST und will eine C-Funktion in eine ST-Funktionsblock überführen.
Dazu habe ich folgende Frage:
In der C - Funktion habe ich "static" Variablen und Arrays benutz.
Ein Beispiel:
static uint16_t IS_Cnt[4] = {0, 1500, 1000, 500};

Wie deklariere ich das korrekt in ST? Also beim ersten Funktionsaufruf sollen die Anfangswerte übernommen werden und für alle weiteren Aufrufe sollen die jeweils letzen Werte gespeichert bleiben.
Mein Ansatz ist das hier:

VAR
IS_Cnt[0..3]: INT := [0, 1500, 1000, 500];
END_VAR

Funktioniert das??
Ich habe leider keine Möglichkeit es Auszuprobieren :???:. Daher bitte ich um eure Hilfe.

MFG
Omnivore
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vom Prinzip her durfte das funktionieren, hängt aber davon ab wie du die static-Variablen in C genutzt hast ob das Ergebnis das ist was du haben willst.

Wenn die C-Funktion von verschiedenen Stellen aus aufgerufen wird, arbeiten alle Aufrufe auf den gleichen statischen Daten. Wenn du das Verhalten in ST auch haben möchtest, muss bei den Aufrufen des Funktionsbausteins immer die gleiche Instanz verwendet werden.

Das C-Äquivalent zu einem ST-Funktionsbaustein sieht etwas anders aus. Dort würde man einer Funktion einen Zeiger auf die Instanzdaten (IN, OUT, STAT) übergeben auf denen die Funktion arbeitet. Oder in C++ wäre das einfach eine Klasse.
 
Danke für die beiden schnellen Antworten!
Der Link von zotos hilft mir auch gleich bei einer anderen Fragestellung, nämlich wie ich sehr große Array mit bestimmten werten initialisieren kann.

@Thomas_v2.1: Ja im Prinzip ist dieses Verhalten erlaubt, da ich die Funktion / den Funktionsbaustein nur einmal pro Durchlauf meines Hauptprogramms aufrufe, also die Funktion eh immer an der selben stelle aufgerufen wird.
In meinem C-Code habe ich die Funktion auch eher der Übersichtlichkeit wegen geschrieben. Und jetzt ist mein Chef auch nur an dem Algorithmus aus der C-Funktion in ST interessiert und dürfte sie später ähnlich verwenden.
Danke für dein Feedback!

Viele Grüße aus München
 
Zurück
Oben