PC WorX, Retain, Persistent

Portisch

Level-1
Beiträge
149
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen,

ich muss jetzt mal nachfragen wie das funktioniert.
Was Retain und Persistent bedeutet habe ich schon rausgefunden.

Nun aber ein Beispiel:
Ich habe einen Input der über das von Oscat Toggle einen Ausgang schaltet.
D.h. einmal Tasten ON, nochmal Tasten OFF,.....

Nun steht der Ausgang auf ON und ich nehme die Versorgung von der SPS.
Wie kann man es nun anstellen, dass der Ausgang wieder auf ON geht wenn ich die Versorgung wieder anschließe?
Normal fällt der Ausgang ja auf OFF zurück.
ich arbeite mit PC WorX 6.10 und Oscat 3.32. Steuerung ist eine ILC 150 ETH.

Untitled.png

Danke,
Portisch
 
Entweder im Baustein den VAR_OUTPUT auf Retain setzen oder die Variable die dranhängt. Müsste eigentlich klappen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Portisch,

um die von dir beschriebene Funktion zu erhalten, müsste man den internen Ausgang des Bausteins als Retain deklarieren. Da wir dies allerdings in der Oscat Libary nicht tun können habe ich zwei kleine Screenshots angehängt, mit denen du dir die Funktion leicht selber bauen kannst.

Bitte beachte, dass die Ausgänge der SR-Glieder negiert sind und die OUT_ToggelOut Variable als retain bzw remanent deklariert ist.

Zum Verständnis. Bei einem Spannungsreset handelt es sich um einen Warmstart der SPS. Somit bleiben alle remanenten Variablen auf Ihren aktuellen Wert und alle nicht remanenten Variablen fallen zurück auf Ihren Ausgangszustand.

Mit freundlichen Grüßen
Dein Service-Team


Toggel.JPGToggel_VarTab.JPG
 
Also irgendwie funktioniert ihr Baustein nicht bei mir. Am Anfang ist der Ausgang sofort True. Ist blöd wenn ich meine Steuerung starte und im ganzen Haus sind die Lichter an.

Meine Version im Anhang läuft richtig. Und bei mir ist es so, das bei einem Warmstart die remanenten Variablen nicht ihren letzten Wert laden, sondern nur bei einem Heißstart.
 

Anhänge

  • Toggle.jpg
    Toggle.jpg
    35,7 KB · Aufrufe: 33
Ist jetzt schon etwas länger her, aber ich muss hier nocheinmal nachfragen!

Und zwar bekomme ich es nicht hin das Variabeln nach einem Stromausfall erhalten bleiben.

Beispiel:
Bistabiles Relais am Ausgang. Über einen Eingang will ich mit kurzen Impulsen das Relais ein und ausschalten können.
Bei jedem Impuls soll ein Merker gesetzt werden damit die Steuerung weis ob das Relais ON oder OFF ist.
Dieser Merker soll nach einem Stromausfall erhalten bleiben.

Kann mir da jemand helfen?
 
Wenn ich deine "Schaltung" mache bleibt der Zustand nur bei einem Heißstart erhalten.
Bei Stromlos setzt sich der Ausgang zurück. (=Kaltstart?)

Ich befürchte halt, wenn normale Relais eingesetzt werden, dass nach einem Stromausfall das ganze Haus dunkel ist.
Bei einem Bistabilen Relais würde das Licht halt wieder angehen wenn der Strom wieder verfügbar ist.

Für beide Betriebsarten gebe es halt eine Lösung:
Bei Bistabilen Relais einen Merker für das Relais,
bei normalen Relais einen Merker der dann beim Neustart der SPS den Ausgang wieder setzt.
 
Oder du musst dir die Werte alle paar Minuten abspeichern in eine Datei. Dann haste immer die zuletzt gespeicherten Zustände.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Portisch,

damit dein Ausgang auch nach einem Spannungsreset (Warmstart) den Wert beibehält musst du, wie bereits schon von Mobi erwähnt den Ausgang als Retain deklarieren. Allerdings reicht es hier nicht, dass die Variable die am Ausgang angelegt ist Retain ist, da diese beim Warmstart mit dem Wert des Bausteins (in diesem Fall dann wieder NULL) überschrieben wird. Deshalb müsstest du einen Baustein selber schreiben, bei dem Die VAR_OUTPUT als Retain deklariert ist (siehe das Beispiel, das ich Ende 2011 angehängt habe).

Wenn du möchtest, dass dein Wert auch nach einem Kaltstart den letzten Wert beibehält, so musst du diesen Wert wirklich in irgendeine Datei zwischen speichern.

Gerne kannst du auch bei uns auf der Hotline anrufen, dann können wir noch einmal über diese Problematik sprechen.
05281 946 2888

Mit freundlichen Grüßen
i.A. Ulrich Kleinschmidt
 
Danke!

Ich habe mir schon gedacht, dass es fast nicht anders möglich ist.
Aber in einem Byte bekommt ja eh 256 Bits rein was für die D-Ausgänge dann schon mal reichen sollte...
 
Hallo ich weiß nun was du meinst, hatte gestern das selbe Problem.
Nach einen Spannungsausfall (Warmstart) war trotz Retain, der alte Wert nicht drin.
Grund ist FUP. Es wird ja dauernd der Wert reingeschrieben von dem SR-Baustein.
Also wird der remanente Wert wieder überschrieben. Man könnte da mit Sprüngen arbeiten, aber
ich habe das lieber in ST gelöst. Geht schneller. Einfach zwei IF-Abfragen verschachtelt und fertig.
Und natürlich den Ausgang als Retain deklarieren.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Man könnte da mit Sprüngen arbeiten, aber
ich habe das lieber in ST gelöst. Geht schneller. Einfach zwei IF-Abfragen verschachtelt und fertig.
Und natürlich den Ausgang als Retain deklarieren.

Kannst du das bitte etwas genauer beschreiben?
Kann man mit ST abfragen ob eine Variable als Retain deklariert ist oder wie erkennt man ob eine Variable auf "Standard" oder nicht zurück gesetzt werden darf?
 
Das machst du doch bei der Deklaration mti einem Haken bei Retain.

Mein Baustein sieht so aus:
Code:
R_TRIG_1(CLK:=IN);

IF R_TRIG_1.Q THEN
    IF OUT THEN
        OUT := FALSE;
    ELSE
        OUT := TRUE;
    END_IF;
END_IF;
IN ist VAR_INPUT und OUT ist VAR_OUTPUT und als Retain.
 
Zurück
Oben