Step 7 Das Statuswort - ein nützliches Werkzeug?

nutellahase

Level-2
Beiträge
180
Reaktionspunkte
28
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!

Bei uns in der Firma wird so gut wie nie direkt mit dem Statuswort gearbeitet (ich bin mir nicht mal sicher ob das unsere Programmierer überhaupt darüber Bescheid wissen :ROFLMAO:).

Allerdings... find ich immer wieder an Anfang von Funktionen (FBs bin ich mir jetzt nicht sicher) im ersten Netzwerk eine VKE Begrenzung. Das sieht so aus, dass eine temporäre Variable mit dem Namen #VKE angelegt wird und im ersten Netzwerk des Bausteins folgt dann dieses Szenario

Code:
U #VKE
= #VKE

Jetzt hab ich mich ein wenig schlau gemacht .... =,S,R - Anweisungen begrenzen das VKE, d.h. in der nächsten Zeile folgt eine Erstabfrage. Allerdings blick ich da nicht so wirklich durch...


  • Nutzt ihr das Statuswort bzw. die einzelnen Bits??? Oder nur zu Diagnosezwecken?
  • Kann man wirklich von einem vorherigen Baustein das VKE in den nächsten Baustein Verschleppen und so irrtürmlich (sollte dort ein O, =, S, R als erstes stehen) Sachen setzen/rücksetzen ohne das zu Beabsichtigen? Der Programmierer meinte dass deswegen der obige Code eingesetzt wird, damit nichts passiert.
  • Ferner kann es Auswirkungen, hinsichtlich der Statuswortbits, haben wenn ich irrtürmlich bei einer Verknüpfung statt
Code:
U Bedingung 1
U Bedingung 2
= Aktion
das schreibe
Code:
O Bedingung 1
U Bedingung 2
= Aktion


  • Inwiefern hängen die Bits Erstabfrage, VKE, Status und BIE zusammen?

Oft lese ich auch hier im Forum dies:

Code:
Set
SAVE

Was bewirkt das eigentlich genau??

Vielen Dank für eure Antworten
 
Zuletzt bearbeitet:
Also um deine Fragen mal ein wenig zu sortieren:
Kann man wirklich von einem vorherigen Baustein das VKE in den nächsten Baustein Verschleppen
Unter gewissen Umständen ist das möglich ... insofern ist das zur Sicherheit definitiv nicht schlecht.

Zu deinen beiden Codes:
Diese haben effektiv die gleiche Funktion, und insofern auch dieselbe Auswirkung auf die von dir angesprochenen Statuswortbits.

Dies dient dazu den ENO-Ausgang (BIE-Bit) des Bausteins zu setzen.

Mfg
Manuel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich benutze das Statuswort gelegentlich indirekt um nach arithmetrischen Operationen keinen zusätzlichen Vergleicher einsetzen zu müssen. Stattdessen nutze ich dann häufig z.B. U >0 um auf positiv oder negativ abzufragen.

Wie MSB schon gesagt hat, kann man das VKE durchaus von einem in den anderen Baustein verschleppen, allerdings - meine bescheidene Meinung - hat man dann unsauber programmiert, dieses Konstrukt am Bausteinanfang deutet also genau darauf hin.
 
Wie MSB schon gesagt hat, kann man das VKE durchaus von einem in den anderen Baustein verschleppen, allerdings - meine bescheidene Meinung - hat man dann unsauber programmiert, dieses Konstrukt am Bausteinanfang deutet also genau darauf hin.
Ich würde das in dem Fall nur bedingt als unsauber bezeichnen,
Meistens denke ich wurde einfach aus Unachtsamkeit die Zuweisung auskommentiert.
 
Unter gewissen Umständen ist das möglich ... insofern ist das zur Sicherheit definitiv nicht schlecht.

Dies dient dazu den ENO-Ausgang (BIE-Bit) des Bausteins zu setzen.

Mfg
Manuel

Hallo! Danke für deine Antwort! Hast du ev. ein Beispiel?

Zu den SAVE ... das find ich in keines unserer Programme die in AWL programmiert sind. Wenn ich jetzt an FUP denke ... soll das heißen ich kann diesen Baustein dann nicht hintereinanderschalten weil der ENO-Ausgang anders nicht gesetzt wird?

mfg
 
Zuviel Werbung?
-> Hier kostenlos registrieren
mit save wird der zustand des vke auf den eno-ausgang geschrieben. ist der eno nicht 1 wird die operation die am eno hängt nicht bearbeitet.

mal als beispiel. du schreibst die eine fc mit einem vergleicher.

IN1
IN2

im der fc sieht es nun so aus

clear
save
L in1
L in2
>I
save

der eno wäre nun high wen in1 > in2
 
Ich würde das in dem Fall nur bedingt als unsauber bezeichnen,
Meistens denke ich wurde einfach aus Unachtsamkeit die Zuweisung auskommentiert.

Die Übergabe des Statuswortes funktioniert aber nur wenn ein Baustein mit CC oder UC aufgerufen wird.

Eine sinnvolle Anwendung gibt es dafür auch theoretisch. Beispielsweise könnte man einen Signalverarbeitungsbaustein schreiben (z.B. Regler) in dem bei Bedarf für die Signalvorverarbeitung ein unterlagerter FC aufgerufen wird, und der FC vom Programmierer mit beliebiger Nummer frei erstellbar ist. Damit der übergeordnete Baustein geschrieben werden kann ohne die konkrete Schnittstelle des anderen zu kennen, könnte man zwei Parameter in den Akkus übergeben und auch zwei Rückgabewerte in den Akkus zurückgeben. Und das Statuswort sollte sich dazu genauso nutzen lassen.
Ich glaube in irgendeiner regelungstechnischen Bibliothek habe ich das so in der Art schon gesehen.
 
.
Code:
//enable ENO for following operations
SET    //set binary result
SAVE   //save VKE to BIE

Wenn du das am Bausteinende ein-
fügst, dürfte dein ENO stets "1" sein
und dein hintendrangeschalteter
Baustein auch bearbeitet werden.

Wenn du Das ENO für den hintendran-
geschalteten Baustein abhängig setzen
willst, nutze die Beispiele von Volker oder
Thomas.

Noch ein Tip: <F1-Taste> ! ;)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also Danke erstmal für die ganzen Antworten! :)

Ich habe mich jetzt ein wenig in diese Thematik eingelesen und denke, dass ich so langsam dahinterkomme! Allen voran sind für mich durch diese Erkenntnis AWL-Verknüpfungsorgien ev. etwas "einfacher" zu verstehen (sofern sie sich nicht in KOP/FUP umwandeln lassen)

Vieles wurde bereits erwähnt bzw. ist in den unten angeführten Links geschrieben. Ich möchte aber für mich jetzt einige Sachen nochmals explizit ansprechen (und bitte korrigiert mich, falls ich damit falsch liege!)

Zu aller erst einmal die Eingangsfrage ... Ist das Statuswort ein nützliches Werkzeug? Ich behaupte jetzt: Ja, ist es!

Um mal meine gestellten Fragen selbst etwas zu beantworten..
Inwiefern hängen die Bits Erstabfrage, VKE, Status und BIE zusammen?

Das Bit 0, die ERstabfrage (/ER), sagt mir wann bei einer Verknüpfungskette eine Erstabfrage stattfindet. Und zwar nach folgenden Befehlen:

  • Bausteingrenze => Ist das gleichbedeutend mit Bausteinende oder wie ist das gemeint? Hinsichtlich meiner Frage ob man ein VKE von einem Baustein in einen anderen "verschleppen" kann müsste das ja dann nicht gleichbedeutend mit Bausteinende sein!
  • nach Zuweisungen wie =,S,R
  • nach einem SET,CLR
  • nach jeder öffnenden Klammer U(,O( ... X(=> gibt's das? :ROFLMAO:
  • nach bedingten Sprüngen wie SPB, SPBN, SPBB, SPBNB
Hingegen erfolgt bei Übergang von einem Netzwerk ins nächste keine Erstabfrage!

Bit 1 das VerKnüpfungsErgebnis (VKE) ist immer nach den Regeln der boolschen Algebra das Ergebnis einer Verknüpfungskette. Bei einer Erstabfrage wird dabei direkt das Abfrageergebnis des Operanden als VKE übernommen!

Womit wir zu Bit 2 das Statusbit (STA) kommen ... hier wird immer der Signalzustand des zuletzt verwendeten Bitoperanden abgelegt bzw. abgefragt.

Somit sind diese drei Bits schon einmal miteinander verknüpft...

Beispiele (gehen wir davon aus das VKE wurde begrenzt und jetzt erfolgt eine Erstabfrage):

Code:
Netzwerk 1     VKE     STA     /ER
1: U E0.0       1       1       1
2: U E0.1       0       0       1
3: = A0.0       0       0       0

Erläuterung: Durch die Erstabfrage wird in Zeile 1 direkt der Status von E0.0 als VKE übernommen. In Zeile 2 wird nun der Status von E0.1 mit dem VKE von Zeile 1 nach den Regeln der boolschen Algebra verknüpft, in Worten: E0.0 UND E0.1! Dadurch dass E0.1 den Status "0" führt wird als VKE ebenfalls eine "0" übernommen. In Zeile 3 wird nun direkt das VKE der vorherigen Zeile übernommen und gleichzeitig das /ER auf 0 gesetzt!

Soweit so gut ... jetzt ein Beispiel mit zwei Netzwerken ....

Code:
Netzwerk 1     VKE     STA     /ER
1: U E0.0       1       1       1
2: U E0.1       0       0       1
3: = A0.0       0       0       0

Netzwerk 2
4: O E0.2       0       0       1
5: O E0.3       1       1       1
6: = A0.1       1       1       0

Hier ändert sich im ersten Netzwerk nicht viel. Im zweiten Netzwerk ist jetzt eine ODER Verknüpfung. Dadurch das in Zeile 3 das Erstabfragebit zurückgesetzt worden ist, wird in Zeile 4 wiederum der Status von E0.2 übernommen! In Zeile 5 wird der Status von E0.3 mit dem VKE von Zeile 4 ODER verknüpft. Das Ergebnis ist eine "1" die auch den Ausgang A0.1 zugewiesen wird (/ER wird wieder auf 0 gesetzt).

Für mich eine weitere Erkenntnis: Sind die Netzwerke immer schön sauber mit Zuweisungen abgeschlossen dann spart man sich bei Oder Verknüpfungen die oft angetroffene Form
Code:
U E0.2
O E0.3

Eben weil nach einer Zuweisung sowieso eine Erstabfrage folgt und das VKE von der vorherigen Zuweisung ignoriert wird!

Allerdings kann das auch ganz schnell in die Hose gehen!

Code:
Netzwerk 1     VKE     STA     /ER
1: U E0.0       1       1       1
2: U E0.1       1       1       1
3: //= A0.0     X       X       1 X= irrelevant weil auskommentiert, aber /ER bleibt auf 1!

Netzwerk 2
4: O E0.2       1       0       1
5: O E0.3       1       0       1
6: = A0.1       1       1       0

Das gleiche Beispiel nochmal, nur ist dieses Mal der Ausgang A0.0 auskommentiert worden und die Eingänge haben andere Zustände! Jetzt wird A0.1 plötzlich durch E0.0 und E0.1 angesprochen obwohl das so vor dem auskommentieren sicher nicht erwünscht war!

Auch SET und CLR sollten immer direkt vor der Zuweisung geschrieben werden:

Code:
Netzwerk 1     VKE     STA     /ER

1: SET          1       ?       0
2: = A0.0       1       1       0

Ein anderes Beispiel wo SET/CLR keine Auswirkung haben...

Code:
Netzwerk 1     VKE     STA     /ER
1: SET          1       ?       0
2: U E0.1       0       0       1
3: = A0.0       0       0       0

Durch den SET-Befehl erfolgt in der nächsten Zeile wieder eine Erstabfrage ... A0.0 wird nur durch E0.1 zugewiesen!

Das gleiche mit CLR im umgekehrten Sinn (es wird 0 erwartet, "1" als Ergebnis)

Code:
Netzwerk 1     VKE     STA     /ER
1: CLR          0       ?       0
2: U E0.1       1       1       1
3: = A0.0       1       1       0

Was mir noch nicht ganz klar ist mit den Klammerausdrücken (in Hinsicht auf die Bits des Statuswortes) Dazu verweise ich auf das Bild 4 im Link "Verknüpfungsergebnis VKE"!

Hier das Beispiel kopiert:

Code:
Netzwerk 1     VKE     STA     /ER
1: U(           0       1       0
2: O E0.0       1       1       1
3: O E0.1       1       0       1
4: )            1       1       1
5: U(           1       1       0
6: O E0.0       0       0       1
7: O E0.1       0       0       1
8: )            0       1       1
9: = A0.1       0       0       0

Also die Logik ist mir schon klar aus beiden Klammerausdrücken muss min. ein Eingang "1" sein, damit der Ausgang "1" wird. Auch innerhalb der Klammern wird so vorgegangen wie oben beschrieben. Nur:
  • Wieso ist bei der öffnenden und schließenden Klammer das Statusbit 1?
  • Wird das VKE aus Zeile 3 einfach in Zeile 4 übernommen? Ich dachte immer das bei der schließenden Klammer mit dem VKE der öffnenden Klammer verknüpft wird. In diesem Fall U( => UND. Dann wäre ja das Ergebnis aber "0" (was ja auch gegen die Logik in der Klammer spricht!)
  • Das gleiche gilt für Zeile 5. Wird hier einfach das VKE von Zeile 4 übernommen? Es erfolgt durch die öffnende Klammer wiederum eine Erstabfrage
Zum Schluss wäre noch das 8. Bit BInärErgebnis (BIE)

Aus meiner Erkenntnis dient dies nur für die ENO Funktion um damit im FUP Bausteine anheften zu können! Allerdings kann man das BIE-Bit auch abfragen.

Code:
U BIE

Dadurch steht es wohl im Zusammenhang mit den Bits VKE und STA aber im Moment ist das jetzt genug Verwirrung :p. Der Beitrag ist jetzt ziemlich lang geworden und ich hoffe ihr könnt mir meine offenen Fragen beantworten bzw. auf geschriebene Syntaxfehler aufmerksam machen! Kann natürlich sein das ich da irgendwo einen Denkfehler hatte. Ev. habt ihr sogar noch selber ein paar Beispiele!

Vielen Dank!

Links:
Englische Seite zum Thema Statuswort
Wann kommt es bei Verknüpfungsketten zu einer Erstabfrage?
Verknüpfungsergebnis VKE
SPS-Forum Threads zum Thema Erstabfrage
 
Zurück
Oben