oscat.lib > oscat.lib fuer Step 7
FB174 ACTUATOR_PUMP funktioniert nicht mehr in Automatik
DerJeDi:
Hallo,
ich habe mal eine Frage zum FB 174 (ACTUATOR_PUMP).
Uns ist jetzt schön öfters aufgefallen, dass nach einer ganzen Zeit der Baustein nicht mehr richtig funktioniert.
Wird die Pumpe über den normalen IN-Eingang angefordert läuft er zunächst normal. Nach einer längeren Zeit (mehrere Wochen)
gibt der Baustein am Ausgang FALSE heraus obwohl die Pumpe weiterhin angefordert wird. Nimmt man die Pumpe nun kurz auf Hand Ein
und danach sofort wieder auf Automatik läuft sie wieder.
Ist jemandem diesem Problem mit dem FB 174 bekannt und könnte uns helfen das Problem zu beheben.
Danke
Der JeDi
DerJeDi:
Ach ja, wir nutzen Oscat 3.11 !!!
Thomas_v2.1:
Das riecht zumindest beim Zeitbereich von "ein paar Wochen" nach einem Problem beim Auslesen der Systemzeit. Denn dort tritt bei 3 Wochen ein Überlauf auf (2147483647ms / 1000 / 86400 = 24 Tage).
DerJeDi:
--- Zitat von: Thomas_v2.1 am 25. November 2010, 22:55:20 ---Das riecht zumindest beim Zeitbereich von "ein paar Wochen" nach einem Problem beim Auslesen der Systemzeit. Denn dort tritt bei 3 Wochen ein Überlauf auf (2147483647ms / 1000 / 86400 = 24 Tage).
--- Ende Zitat ---
Hallo Thomas,
wie kann ich dieses Problem denn abfangen? Oder liegt es an den verwendeten Bausteinen?
Gruß Jens
Thomas_v2.1:
Wie du das abfangen kannst weiß ich nicht. Das ist auch nur eine Vermutung von mir.
Was auf jeden Fall problematisch in der Funktion STIME sein kann, ist, wenn die SPS neu gestartet wird.
Denn dann fängt TIME_TCK() wieder bei 0 an. STIME erkennt den Neustart und setzt den Vergleichszähler "last_time" auf 0.
Das Vorzeichenbit das in STIME manuell in tx "eingebaut" wird bleibt auf dem alten Zustand bestehen, stört aber auch nicht weiter.
Was aber jetzt in Bezug auf ACTUATOR_PUMP stört ist, dass sich dieser Baustein den letzten Zeitpunkt des Ein- oder Ausschalten des Antriebes merkt.
Mal angenommen seit die funktion run_every, also dass die Pumpe auch wenn nicht angefordert für eine bestimmte Zeit eingeschaltet wird.
Angenommen last_change steht auf der Zeit T#23D und es ist gerade der run_every-Zyklus aktiv, und ich mache einen SPS-Neustart. Dann wird tx auf T#0 (oder auf max. negativ je nach bit31 aus STIME) gesetzt. Ergebnis ist dass der Antrieb 23 Tage durchlaufen würde obwohl nicht angefordert, wegen:
tx - last_change >= run_every
eingesetzte Beispielwerte:
T#0S - T#23D >= T#10000M
Die Bedingung wäre also sehr lange gültig.
Ich kann mir vorstellen dass das auch noch für andere Bedingungen Auswirkungen haben könnte, z.B. bei der min.-Ausschaltzeit.
Hast du deine SPS in der Zeit mal neu gestartet? Wenn nicht dann wüsste ich auch nicht woran es liegen könnte.
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln