Interner Fehler in Baustein - SPS schaltet ab

Vaninger

Level-2
Beiträge
160
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
vielleicht kann mir hier jemand helfen. Meine SPS (Phoenix Contact ILC 350 PN; PCWORX 5.20.17 SP4.45) schaltet nach der Freigabe eines Bausteins ab. Der Baustein hat bis jetzt immer funktioniert, nur jetzt gibt er folgende Fehlermeldung aus:



attachment.php


Die dazugehörige Datentypdeklaration schau so aus:

attachment.php


Wie schon gesagt, hat bis jetzt immer funktioniert, keine Ahnung wieso nicht mehr. Habe auch schon ältere Versionen meines Programmes probiert, leider das gleiche Ergebnis. Vielleicht hat hier jemand ne Idee?

KAnn es vielleicht am Update 4.45 liegen, dass hier etwas schief gegangen ist. Die restlichen Programme laufen aber problemlos...

AUf jeden Fall schon mal besten dank im Voraus für die Antworten.

Gruß

Vaninger
 

Anhänge

  • Fehler.JPG
    Fehler.JPG
    93,7 KB · Aufrufe: 99
  • Array.JPG
    Array.JPG
    35,3 KB · Aufrufe: 97
ein Deutungsversuch:
STUFE darf nicht 0 sein. Oben im Code fragst du mal ab, ob STUFE INT#0 ist, aber weiter unten greifst du auf ..Raste_Time[STUFE] zu. (man kanns in Bild nicht genau erkennen.) Wenn dem so wäre, würde das nicht gehen, denn das Array für Raste_Time ist 1...10.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Ralle,
danke für deine Antwort.

Kurz zur Erklärung:

Das Program bekommt von einem anderen Baustein Vorgaben für ein Maischprogramm, das heißt, zehn Temperaturen und zehn Zeiten. Dazu kommt noch der Name des Rezeptes (z. B. Pils), der Name des Rezepterstellers, die Einmaischtemperatur (diese liegt an, wenn die Stufe 0 ist!). Diese sind in einem Satz zusammengefasst. Insgesamt gebe es somit also 10 verschiedene Rezepte, die unter Maisch_Para zusammengesetzt sind (siehe Array).

Die von dir angesprochene Stufe gibt eigentlich nur den Schritt (bzw. die Raste) an. Nach abgelaufener Zeit (Raste_Time) wird die Stufe somit um eins erhöht und die nächste Raste_Temp und Raste_Time liegt an und wird abgearbeitet!

Kann es vielleicht am eingespielten Update liegen?

Vielleicht fällt dir ja noch was ein.

DAnke
 
Hallo,
das Problem ist zum Glück jetzt gelöst. Wie ich es mir gedacht habe, lag es an dem Firmwareupdate. Nach Installation der alten Firmware funktioniert der Baustein wieder. Wieso auch immer. :confused:

*ROFL*

Gruß
Vaninger
 
Ich denke Ralle hat Recht oder ist zumindest auf dem richtigen Weg.

Auch ich vermute, dass der Stopp daher kommt, weil in der markierten Zeile die Variable "Step" oder "SA" einen Wert außerhalb der gültigen Arraygrenzen hat.

Ja, der Fehlerzustand kann durchaus erst nach einem Firmware-Update auftreten. Und zwar dann, wenn in der alten Firmware dieser Fehlerzustand nicht korrekt behandelt wurde. In diesem Falle wäre ein Downgrade der Firmware aber der falsche Weg und würde den Programmierfehler nur wieder verschleiern.

Das gleiche Problem hatte ich selbst auch schon einmal bei der Steuerung eines Mitbewerbers. Firmwareupdate -> SPS-Stop. Ursache war ein Zugriff auf ein Arrayelement 0 obwohl das Array erst ab 1 definiert war.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Ypps,

danke für die Antwort. Ich glaube trotzdem nicht, dass es an dem Stufe 0 liegt, da bei dem Programm bei Stufe 0 gar nicht auf die Raste_Time sondern nur auf die Starttemperatur zugegriffen wird (siehe Auszug aus Programm ganz oben! If Stufe = 0 Then ...).

Wie meinst du, dass der sonst Fehler behoben werden kann. Das Array von 0 bis 10 anstatt von 1 bis 10 anlegen?

Gruß
Vaninger
 
Die schwarz markierte Zeile wird doch soweit ich sehe immer durchlaufen - oder? Wenn die SPS diese Zeile erreicht, darf Stufe nicht 0 sein.

Testweise zur Fehlersuche kannst Du das Array natürlich von 0..10 anlegen.
Welchen Wert haben denn "Stufe" und "SA" wenn die SPS gestoppt wird?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi

Sezte doch mal testweise die Stufe auf 0.

(Mit der neuen Firmware)
Möglicherweise hast du nach dem Firmware-Update Variablen verändert,
sodass NACH dem Update die "Stufe 0" nicht erreicht war/wird.


Also, 1.Zeile --> STUFE := 0;
und starten,
dann kannst du sicher sein. :ROFLMAO:
 
Hallo


der Fehler liegt sicherlich am array welches mit 0 durchlaufen wird.
Das Problém liegt wie bereits ybbs geschrieben an der FW.

umgehen mit einer Abfrage vorm TON oder änderung des array mit element 0.
 
Zurück
Oben