TIA Wenn ein PEW als Eingang an einem FC nicht erreichbar ist, wird FC nicht bearbeitet

ducati

Level-3
Beiträge
9.651
Reaktionspunkte
2.752
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, folgendes Problem hab ich an einer TIA v13SP1 CPU1515-2PN festgestellt:

- im OB1 wird der FC1 aufgerufen
- der FC1 besitzt einen Eingang typ WORD, welcher im OB1-Aufruf mit einem PEW verschalten wird
- im FC1 wird der M10.0 gesetzt
- wenn der PEW nnicht erreichbar ist, weil z.B. die Verbindung zur ET200S unterbrochen ist, wird der gesamte FC1 nicht mehr bearbeitet
- d.h. der M10.0 kann über die VAT zwar auf FALSE gesetzt werden, aber wird vom FC1 nicht mehr TRUE gesetzt!

Code:
// im OB1
      CALL  "FC01"
         IN_WORD :=%EW204:P

// im FC1
      L     #IN_WORD
      T     #TEMP_WORD


      SET
      =     %M10.0



// sonst kein weiterer Code in der Steuerung

- was sagt Ihr zu diesem Phänomen
- könnt Ihr das Problem reproduzieren
- tritt dieser Bug auch unter TIA v14 auf?

Gruß,
ducati

TIA_Problem_nicht_erreichbares_PEW.jpg
 
Zuletzt bearbeitet:
Eine vielleicht blöde Frage, kann es sein, dass durch den Verbindungsabbruch zum ET200S die 1500ér Steuerung in Stop geht?
Ich habe in deinem Programm keinen OB86 gesehen ( Baugruppenträgerausfall )

Mit Grüßen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nee, CPU bleibt im RUN.

Das ganze ist auch nachstellbar wenn man ein PEW verschaltet, welches in der HW-Config nicht projektiert ist.

Diagnoseeintrag in der CPU ist folgender:
Temporärer CPU-Fehler: Fehler beim Lesezugriff auf Peripherie (E-Adresse 204) in OB 1
betrifft OB 1 Ausführung


PLC_1
interne Adressierungsdetails: Caddr=16#00000008, Bereich: P-Bereich, Adr: 204
 
Das ist ja interessant. Ich kann mir nicht vorstellen, warum das so ist. Es würde dann ja bedeuten, dass der komplette FC Aufruf bei einem Fehler abgebrochen wird und die
weitere Abarbeitung nach dem FC Aufruf im OB1 wieder weiter geht. Das wäre ja fatal.
 
Das ist ja interessant. Ich kann mir nicht vorstellen, warum das so ist. Es würde dann ja bedeuten, dass der komplette FC Aufruf bei einem Fehler abgebrochen wird und die
weitere Abarbeitung nach dem FC Aufruf im OB1 wieder weiter geht. Das wäre ja fatal.

jo deshalb würde mich interessieren:
- was sagt Ihr zu diesem Phänomen?
- könnt Ihr das Problem reproduzieren?
- tritt dieser Bug auch unter TIA v14 auf?
 
Na ganz toll. D.h. wenn bei unseren relativ großen Anlagen ( in ganz Europa ) mal eine dezentrale Station ausfällt, werden ( in unserem Fall ) hunderte Zeilen Code nicht mehr bearbeitet.
Mir wird gerade ganz schlecht.
 
Hallo Ducati,

in V14 wird der Baustein auch nicht bearbeitet.

Aber die CPU meldet folgenden Fehler:

Temporärer CPU-Fehler: Fehler beim Lesezugriff auf Peripherie (E-Adresse 204) in OB 1
betrifft OB 1-Ausführung
fehlerhafte Adresse, Operand ignoriert

Ich habe aber in Programm den OB 86 / 82 laufen der auch gerufen wird.

Harald
 
Wird der Baustein gar nicht aufgerufen, nur weil ein Übergabeparameter nicht ermittelt werden kann, oder wird der Baustein beim Zugriff auf den Übergabeparameter abgebrochen (und die Fehlerbehandlung setzt im Aufrufer fort anstatt nach der Fehlerstelle)?
Tausche mal das Setzen des Testmerkers mit der fehlschlagenden Operation (oder lasse den Zugriff auf den Übergabeparameter ganz weg):
Code:
// im OB1
      CALL  "FC01"
         IN_WORD :=%EW204:P

// im FC1
      SET
      =     %M10.0

      [COLOR="#FF0000"]L     #IN_WORD[/COLOR]  //erst diese Anweisung sollte einen Fehler bringen
      T     #TEMP_WORD

Harald
 
Hallo PN/DP,

In V14 wird der FC nicht aufgerufen.

In der Onlineansicht sind alle Zeilen aus gegraut. (SET M10.0 an erster stelle)


Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was passiert wenn der PEW nicht übergeben wird sondern direkt im Programm aufgerufen wird?

Wird dann ab dieser Stelle die Bearbeitung des FC aufgebrochen oder der Wert undefiniert geschrieben?


Stefan
 
Wird der Baustein gar nicht aufgerufen, nur weil ein Übergabeparameter nicht ermittelt werden kann, oder wird der Baustein beim Zugriff auf den Übergabeparameter abgebrochen (und die Fehlerbehandlung setzt im Aufrufer fort anstatt nach der Fehlerstelle)?
Tausche mal das Setzen des Testmerkers mit der fehlschlagenden Operation (oder lasse den Zugriff auf den Übergabeparameter ganz weg):
Code:
[/FONT]
[FONT=Verdana]// im OB1[/FONT]
[FONT=Verdana]      CALL  "FC01"[/FONT]
[FONT=Verdana]         IN_WORD :=%EW204:P[/FONT]

[FONT=Verdana]// im FC1[/FONT]
[FONT=Verdana]      SET[/FONT]
[FONT=Verdana]      =     %M10.0[/FONT]

[FONT=Verdana]      [/FONT][COLOR=#FF0000][FONT=Verdana]L     #IN_WORD[/FONT][/COLOR][FONT=Verdana]  //erst diese Anweisung sollte einen Fehler bringen[/FONT]
[FONT=Verdana]      T     #TEMP_WORD[/FONT]
[FONT=Verdana]

Harald


Baustein wird scheinbar garnicht bearbeitet.

Habe den Merker jetzt vor dem Zugriff auf #In_Word gesetzt, aber gleiches Fehlerbild.

Gruß.
 
Zuletzt bearbeitet:
Und wenn man die Zeilen mit dem P-Zugriff entfernt, wird der Merker gesetzt? Ich habe gerade keine CPU
hier sonst würde ich auch einmal probieren.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was passiert wenn der PEW nicht übergeben wird sondern direkt im Programm aufgerufen wird?

Wird dann ab dieser Stelle die Bearbeitung des FC aufgebrochen oder der Wert undefiniert geschrieben?


Stefan

FC wird dann nicht abgebrochen, Diagnosepuffer zeigt Peripheriezugriffsfehler.
 
Ok, das heißt, er merkt, dass ein Bausteinparameter beim IN oder IN_OUT nicht verfügbar ist ( PEW nicht erreichbar ) und bearbeitet dann den ganzen FC nicht.
Das ist mir neu. Bei Step7 ist die CPU auf Stopp gegangen ( wenn OB122 nicht vorhanden war ). Wenn er vorhanden war, wurde der Baustein abgearbeitet.
Überall wo dann ein L PEW xx stand, wurde dann halt 0 geladen. Halte uns doch bitte auf dem laufenden, was Siemens sagt.

Mit Grüßen
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ok, das heißt, er merkt, dass ein Bausteinparameter beim IN oder IN_OUT nicht verfügbar ist ( PEW nicht erreichbar ) und bearbeitet dann den ganzen FC nicht.
Das ist mir neu. Bei Step7 ist die CPU auf Stopp gegangen ( wenn OB122 nicht vorhanden war ). Wenn er vorhanden war, wurde der Baustein abgearbeitet.
Überall wodann ein L PEW xx stand, wurde dann halt 0 geladen. Halte uns doch bitte auf dem laufenden, was Siemens sagt.

Mit Grüßen

Jo,
hab grad auch schon 3 Stunden mal in diversen Handbüchern und Google recherchiert, aber nirgends eine Info dazu gefunden.

Sehr komisch, dass sowas noch niemandem aufgefallen sein soll.

Das ist meine erste 1500er Anlage ;)
 
Rufst Du den FC in AWL auf oder in FUP/KOP?

Anscheinend besteht da ein Problem "Was ist die nächste Anweisung nach der fehlerhaften Anweisung?", wo die Fehlerbehandlung fortsetzen soll. Der CALL und der verborgene Code zur Parameterversorgung wird da wohl als nur 1 zusammenhängende Anweisung interpretiert. Für den TIA-Compiler ist anscheinend die nächste Anweisung die Anweisung nach dem CALL (Step7 classic und S7-300 springt korrekt zur nächsten Parameterversorgung).

Workaround: Der Nicht-Aufruf des FC sollte nicht passieren, wenn das PEW als Pointer übergeben wird.

Harald
 
Zurück
Oben