STRIN als Bedingung

Zuviel Werbung?
-> Hier kostenlos registrieren
Das heißt PRG ist wie OB bei Siemens, da wird kein Programm geschrieben oder Variablen deklariert sondern nur meine Aktionen und FCs oder FBs gerufen
Genau! Was bei Siemens der Organisationsbaustein ist, ist ein eher kleinteiliger Form hier eben die PRG Datei.
 
Genau! Was bei Siemens der Organisationsbaustein ist, ist ein eher kleinteiliger Form hier eben die PRG Datei.
wo kann ich dann meine interne Variable für meine Aktionen schreiben ?
ich habs bis jzt in PRG geschrieben, und in AKtion benutzt !
was macht unter Aktion
Eigenschaft
Methode
Transition ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du hast eine Taskkonfiguration, in der ist definiert, welche Funktion zyklisch aufgerufen werden soll. Standardmäßig ist das PLC_PRG, bei Siemens entspricht das dem OB1.
Ein PRG ist für sich selbst eine Instanz, kann sich Werte merken, wie ein FB. Ich kann aber aus einem PRG keine verschiedenen Instanzen machen, wie aus einem FB.

Beispiel:
Du liest Digitale Eingänge ein und speicherst die weg: Kann man in einem FC oder PRG kapseln.
Du liest Analoge Eingänge ein, skalierst und filterst und speicherst die weg: Muß man in einem FB machen, weil die Filter in der Regel sich den letzten Wert merken müssen.
Nun willst Du einen Frequenzumrichter ansteuern: Machst Du auch in einem FB, weil der sich in der Regel Dinge merken muß.

Klar kannst Du das alles in EIN PRG packen, aber das wird irgendwann unübersichtlich. Und spätestens wenn Du 5 Frequenzumrichter ansteuern mußt, dann müßtest Du klassisch 5x den Code kopieren (und warten). Wenn Du das aber in einen FB steckst, rufst Du 5x den gleichen FB auf mit unterschiedlichen Instanzen:

Code:
VAR
    FU1: FB_FU;
    FU2: FB_FU;
    FU3: FB_FU;
    FU4: FB_FU;
    FU5: FB_FU;
END_VAR

Wenn Du jetzt am FU was ändern mußt, machst Du das genau 1x und es gilt für alle 5.

Ein PRG kannst Du nutzen, wenn Du genau 1-und-die-selbe Aufgabe mehrfach benötigst und aufrufen willst.

Einen FC kannst Du mit Rückgabewert klassisch für z.B. Berechnungen nutzen: Vorne gehen die Werte rein und nach dem Aufruf gibt der FC Dir das Ergebnis zurück.
 
wo kann ich dann meine interne Variable für meine Aktionen schreiben ?
ich habs bis jzt in PRG geschrieben, und in AKtion benutzt !
was macht unter Aktion
Eigenschaft
Methode
Transition ?
Die Aktionen haben keine eigenen Variablen, weil sie eigentlich nur "ausgelagerter Code" des Bausteins sind. Aktionen dienen nur dazu, den Code innerhalb eines Bausteins zu organisieren. Die Aktionen greifen auf die gleichen Variablen zu, wie der restliche Code des Bausteins.

In Deinem Statium des Lernens würde ich persönlich Eigenschaften, Methoden und Transitionen erstmal ignorieren. Das führt zu weit.
 
Sorry aber ich habe nicht verstanden.
wann macht Sinn einen Aktion zu benutzen, Programm, oder FC.
ich komme leider nicht so klar, danke für deine Mühe
und wenn ich bei FC aufrufen kann was macht PRG dann 🤒🤕
Wie gesagt, du solltest Dir schleunigst ein geeignetes Buch schnappen und dieses durcharbeiten.
Es gibt verschiedene Objekte die Befehle ausführen.
Die oberste Ebene im Codesys Universum ist dabei ein Programm, dieses wird von einer Task zyklisch, also wiederholt, aufgerufen. Dieser zyklische Aufruf ist übrigens die Besonderheit bei einer SPS gegenüber einem PC-Programm, dass nur einmal gestartet wird und dann bis zum Ende durchläuft. Ein SPS Programm wird gestartet, läuft bis zum Ende durch und wird dann, basierend auf der Taskkonfiguration erneut gestartet. Dieses verhalten ist auch der Grund dafür, warum man in SPS-Programmen mit Schleifen vorsichtig sein muss.
Ein Programm kann verschiedene Arten von Variablen enthalten, wie lokale Variablen, Eingangs- und Ausgangsvariablen, wobei letztere beiden nur Sinn machen, wenn ein Programm von einem anderen Programm, einem Funktionsbaustein oder einer Funktion aufgerufen wird. Die Variablen eines Programms behalten Ihre Werte auch nach Beendigung der Ausführung. Der Aufruf eines Programms aus anderen Objekten erfolgt direkt über seinen Namen.
Ein Funktionsbaustein (FB) ist im gewissen Rahmen ähnlich wie ein Programm, auch ein Funktionsbaustein kann verschiedene Arten von Variablen enthalten, wie lokale Variablen, Eingangs- und Ausgangsvariablen, deren Werte auch nach Beendigung der Ausführung des ihren Wert behalten.
Ein Funktionsbaustein muss aber vor der Nutzung instanziiert werden, ein Instanziierung kann mit der Deklaration einer Variablen verglichen werden. Von einem Variablentyp können auch mehrere gleichzeitig existieren, genauso können auch von einem FB mehrere Instanzen existieren, die jeweils einen eigenen Speicherbereich haben und sich so nicht beeinflussen.
Im Codesys Universum kann innerhalb eines FBs eine oder mehrere Aktionen angelegt werden. Diese können innerhalb des FBs aufgerufen werden aber auch von außerhalb, wobei dies eingeschränkt werden kann. Eine Aktion kann dazu genutzt werden um den Code eines FBs etwas zu verschlanken und Teile in eben diese Aktion auszulagern.
Außerdem können in einem FB noch Methoden angelegt werden und von innerhalb und außerhalb des FBs aufgerufen werden, wobei dies auch wieder eingeschränkt werden kann. Mit Methoden kann man etwas in Richtung Objektorientierung gehen.
Ein weiteres Objekt das in FBs eingefügt werden kann und auch in Richtung Objektorientierung geht, sind Parameter. Mit diesen können Variablen nach außen hin gekapselt werden, da auf die Werte dieser Variablen nur indirekt über die Parameter zugegriffen werden kann.
Bei Transition muss ich im Moment passen, diese kenne ich nur von der Ablaufsprache.
Eine Aktion und eine Methode existiert also nicht einzeln, sondern ist Bestandteil eines FBs.
Der Zugriff auf die Ein- und Ausgangsvariablen muss bei einem FB nicht während der Ausführung erfolgen, sondern kann, da diese sich die Werte ja merken auch außerhalb erfolgen.
Ein weiteres Objekt sind Funktionen. auch diese können lokale Variablen, Eingangs- und Ausgangsvariablen enthalten, zusätzlich können sie einen sogenannten Rückgabewert besitzen.
Bei Funktionen bleiben die Werte der Variablen nicht nach der Abarbeitung erhalten, es kann also auf die Variablen einer Funktion nur während des Aufrufes zugegriffen werden. Auch innerhalb einer Funktion deklarierte und benutzte Funktionsbausteine verhalten sich bei jedem neuen Aufruf der Funktion, als wären Sie noch nie aufgerufen worden, was zum Beispiel bei Flankenbausteinen zu fatalen Fehlern führen kann.
Funktionen dürfen also nicht für Aufgaben eingesetzt werden deren Abarbeitung nicht innerhalb eines Zyklus abgeschlossen ist.
 
Danke, ich habe mich krampfhaft dagegen gewehrt Eigenwerbung zu machen.
Ich weiß. Ich sehe es auch nicht als Werbung sondern als ernsthafte Empfehlung. Es richtet sich ja an Anfänger wie auch Fortgeschrittene und würde ihm sicherlich in vielen Dingen sehr weiterhelfen. Die 27€ wären ( meiner Meinung nach ) gut investiert.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich weiß. Ich sehe es auch nicht als Werbung sondern als ernsthafte Empfehlung. Es richtet sich ja an Anfänger wie auch Fortgeschrittene und würde ihm sicherlich in vielen Dingen sehr weiterhelfen. Die 27€ wären ( meiner Meinung nach ) gut investiert.
Oder er leiht es sich erstmal in der örtlichen Bücherei, bzw. blättert es in einem der Filialen des großen T, wo es verfügbar ist, mal durch. Eine Leseprobe gibt es hier.
 
Oder er leiht es sich erstmal in der örtlichen Bücherei, bzw. blättert es in einem der Filialen des großen T, wo es verfügbar ist, mal durch. Eine Leseprobe gibt es hier.
ich hab die Leseprobe gelesen, hat mir gefallen
Ich werde es auf jeden Fall lesen, obwohl ich kein Fan des Lesens bin, und falls ich Fragen habe, weiß ich, wo ich dich finden kann ^_^
 
IBAN für meine Verkaufsprovision hast du ja noch, oder? Macht dann 2,70 zzgl. MwSt. 😅
Ich will schließlich auch früher in Rente gehen :LOL:
 
Zuletzt bearbeitet:
Klar kannst Du das alles in EIN PRG packen, aber das wird irgendwann unübersichtlich. Und spätestens wenn Du 5 Frequenzumrichter ansteuern mußt, dann müßtest Du klassisch 5x den Code kopieren (und warten). Wenn Du das aber in einen FB steckst, rufst Du 5x den gleichen FB auf mit unterschiedlichen Instanzen:

Code:
VAR
    FU1: FB_FU;
    FU2: FB_FU;
    FU3: FB_FU;
    FU4: FB_FU;
    FU5: FB_FU;
END_VAR

Wenn Du jetzt am FU was ändern mußt, machst Du das genau 1x und es gilt für alle 5.
ich kann auch DUT benutzen für den Frequenzumrichter, oder ?

vielen dank
ich denke, Funktionsbausteine sind einfach zu verstehen, aber die Tatsache, dass es was bei CODESYS gibt, bei Siemens jedoch nicht, ist für mich neu, und deswegen bisschen irritierend
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ich kann auch DUT benutzen für den Frequenzumrichter, oder ?

vielen dank
ich denke, Funktionsbausteine sind einfach zu verstehen, aber die Tatsache, dass es was bei CODESYS gibt, bei Siemens jedoch nicht, ist für mich neu, und deswegen bisschen irritierend
Ja, Du kannst Dir eine Struktur, was ja ein DUT ist, erstellen und davon dann eine Instanz in Deinem PRG oder FB verwenden.
Sollen die einzelnen Elemente der Struktur mit Hardware I/Os verknüpft werden müsstest Du bei der Erstellung der Struktur bei den entsprechenden Elementen "AT %I*" für Eingänge und "AT %Q*" für Ausgänge nach einem Leerzeichen oder Tab hinter dem Variablennamen und vor dem Doppelpunkt einfügen.
 
Zurück
Oben