Funktionsblockinstanz direkt im Programm verwenden, oder Variablen verwenden

Bensen83

Level-1
Beiträge
777
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, mich würde mal eure Meinung interessieren.

Ich möchte einen FB zur Ventilansteuerung erstellen.
Nun habe ich 2 Möglichkeiten.

1. Ich deklariere Variablen wie vor, zurueck .... und setze diese in meinem Programm auf true oder false und dem entsprechend wird in dem FB ein Ausgang gesetzt.

2. Ich Arbeite mit Aktionen vor, zurueck ... und rufe diese imProgramm auf und dem entsprechend wird im FB etwas gesetzt.

Wenn ich es mit aktionen mache, muss ich die Aktion ja mit instanz.aktion() aufrufen. oder? Wenn ich dann ja noch andere Sachen wie freigaben habe, diese würde ich ja als Variable an den FB legen.

Nun hätte ich aber schon wieder 2 Sachen mit denen ich im Programm auf das eigentlichen Ventil zugreifen würde. 1. Variable.Freigabe := TRUE und 2. Instanz-Aktion().

Was meint ihr? ... Wenn mit aktion, dann immer nur auf die Instanz zugreifen? Also auch mit Instanz.Freigabe := TRUE? Also komplett ohne ein und Ausgänge?
Dann wüsste man natürlich nicht von vorne herein, was man eigentlich alles so für variablen beschreiben und augeben kann.


Ich brauche eure Meinung. Also ich denke einmal auf ne Instanz zugreifen und dann einmal auf ne Variable ist unschön, oder wie seht ihr das?

Ich hoffe es war verständlich. :)


Danke für jede Meinung
 
Keine VAR sichtbar

Ich habe gerade gesehen, dass man bei Instanzen ja auch nur AUF IN, OUT und INOUT zugreifen kann. nicht auf "VAR". Somit muss ich ja eh Ein und Ausgänge definieren.

Wenn ich nun allerdings Aktionen habe, so muss ich immer wieder auf die Instanz.Aktion zugreifen und habe somit immer wieder einmal zugriffe auf die instanz und auf die Ein-Ausgabe Parameter :-(
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es wäre auch unschöner Programmierstil, aus aufrufenden Programmen auf lokale Variablen einer Instanz zuzugreifen ;-) Dazu gibt es ja IN, OUT und INOUT.

Betrachte es doch mal so: Eine Freigabe z.B. sollte ja in jedem SPS-Zyklus aktualisiert sein. Daher bietet es sich nicht an, das über eine Aktion zu realisieren, die du ja bewusst aufrufen musst. Aktionen, die ein FB ausführen soll (z.B. eine Initialisierungsroutine, eine Grundstellungsfahrt oder andere Dinge) kann man durchaus auch als Aktion realisieren. Die Aktion arbeitet ja so oder so mit den lokalen Daten des FB respektive der Instanz. Aber abgesehn davon müssen ja Daten auch in den FB reinkommen. Das kann die Aktion eben nicht. Sie ist nur etwas, das der FB tut.

Dazu ist vielleicht zu erwähnen:

Aktionen sind in der IEC 61131-3 nur für FB's definiert, die in AS geschrieben werden. Das ist (zunächst) keine funktionelle Einschränkung, man sollte es aber wissen, da folglich nicht jeder Steuerungshersteller die Dinger (außerhalb von AS) implementiert hat.

Verwendest du allerdings die Aktionen muss du dir überlegen, wie du dafür sorgst, dass sie auch korrekt arbeiten. Also z.b. lange genug aufgerufen wird und wie du den Bearbeitungsstatus zurückbekommst. Ohne Eingangs- und Ausgansvariablen kommst du also nicht aus.
 
Zurück
Oben