Na genauso. Nur halt DB Laden und zum PAB transferieren.
Es hatte übrigens einen Grund warum ich dir nicht den Tip mit dem nicht geladenen DB gegeben habe, sondern gefragt habe warum die CPU in Halt geht.
Es ist wichtig zu wissen wie man die Diagnose interpretiert.
Ich würde gerne den Zustand des PAB auch in den Datenbaustein angezeigt bekommen.
Habe hier einen ADI4 (PB) mit Zustand und Steuerwort an einer 840d hängen.
Da ich nicht genau sagen kann, was die 840d schon zur Ansteuerung nutzt, wollte ich aus das Steuerwort aufgeschlüsselt in einer Variablentabelle anzeigen.
Wahrscheinlich sagt ihr mir jetzt wie umständlich ich das Thema angehe, bin aber nicht der Hauptberufliche SPSler
Du kannst dir ein PAB nur leider nicht laden ... es sei denn du würdest es aus einer Zwischenvariablen beschreiben, die irgendwann generiert (und zugewiesen) worden ist. Dann kannst du deren Zustand natürlich genauso in den DB schreiben - also etwa so :
Die Prozesausgänge ändert sich ja nicht von sich selber.
Wie Larry vorschlägt, anstatt die Prozessausgänge zu speichern, die Daten speichern der die Prozesausgänge schreibt.
Wenn die Adresse des Peripherieausgangs im Prozessabbild liegt, dann kann man den Wert lesen:
Code:
//original:
...
T PAB 10
//lesen:
L AB 10
T DB 100.DBB100
Universell: dort wo das Programm original auf den Peripherieausgang schreibt, statt der Peripherieadresse die Beobachtungsvariable dranhängen und danach einen MOVE zur originalen Peripherieadresse hinzufügen. Das geht so auch in FUP und KOP und an FB/FC-Ausgängen.
Code:
//original Programm:
...
T PAB 1010
//ändern zu:
...
T DB 100.DBB100
L DB 100.DBB100 //für FUP/KOP, kann in AWL auch weggelassen werden
T PAB 1010
Wenn das Original-Programm indirekt oder per POINTER oder ANY auf die Peripherieadresse schreibt, dann gehts allerdings nicht so einfach, eventuell kommt man da auch gar nicht ran (z.B. bei Zuweisung in einem geschützten Baustein). Da hilft dann möglicherweise der Trick mit Adresse ins Prozessabbild legen.