CLK_PRG liefert keine Impulse

Begonnen von chaehnle, 07. November 2011, 13:14:00

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

chaehnle

Hallo zusammen,
ich habe eine Anlage mit einer CPU 313C und diversen E/A Baugruppen.
Ich verwende den CLK_PRG Baustein um mir Impulse zu erzeugen die z.B. alle 500ms einen Messwert von einem Messgerät rausholen.
Wird der CLK PRG aufgerufen kommt es ab und zu vor das er keine Impulse liefert. Erst nach einem Neustart der CPU kann ich den Baustein sozusagen wieder anstoßen damit er mir die Impulse liefert. Den FB64 / DB64  (STIME/ IDB_STIME) rufe ich im OB1 auf, wie schon in einem anderen Beitrag erwähnt.

Kann mir hier jemand weiterhelfen ??

gruß

Fussel0804

Schwierig zu sagen.

Bei mir läuft der Baustein problemlos.

Wenn du willst, kannst du mir dein Projekt schicken. Ich werde es mir mal ansehen.
Kontaktdaten schicke ich die per PM.

chaehnle

Ich habe eine Vermutung, kann diese aber nicht nachweisen, da mir das Optionspaket SCL fehlt.

Die Anlage war vor dem Fehler 2-3 Monate in Standby, das heisst der CLK_PRG wurde solange auch nicht aufgerufen. Kann es sein, dass es etwas mit dem Siemens speziellen Timer zutun hat. z.B. Überlauf ,-24 bis 24 Tage). Im Baustein T_PLC_MS ist die Rede dass eine Korrektur für Step7 stattfinden muss. Wie kann ich das in AWL nachprüfen oder ändern ergänzen? Was ist damit überhaupt gemeint?

güße

Fussel0804

Hi,
ich habe mir dein Projekt mal angesehen.
So schlimm ist der "wirrwarr" gar nicht.

Zu deinem Problem:

Du hast das schon richtig erkannt.
Es liegt an dem FB64.

Vergleiche mal im DB 52 und 53 die werte Last und TX.
"LAST" ist die Zeit der letzten Aktion
"TX" ist die aktuelle Zeit.

Kippt LAST irgendwann in -24... oder ist LAST > TX?
Beobachte dies bitte mal.

Mir sind diese Fehler auch schon aufgefallen, aber ich habe noch keine simple und effektive Lösung gefunden.

Gruß Stefan Hantschel

PS: Schau mal in deine Privaten Nachrichten.

chaehnle

Hi,
also der Zähler steht aktuell bei 20Tagen,
aktuell ist in beiden DBs Last < tx .
In 4 Tagen kann ich das noch einmal überprüfen wenn der Überlauf stattgefunden hat,
dann melde ich mich nochmal mit den aktuellen Erkenntnissen.

gruß

chaehnle

So nun sind die 4 Tage rum.
Die Timer-Werte im DB52 nach dem aktivieren stehen nun bei -23D15H19M38S940MS für Last (-23D...192MS bei tx) somit ist auch Last<tx.
Im DB64 (desFB64) ist das Überlaufbit bit31 TRUE.
Soweit hat diesmal blöderweise alles richtig funktioniert.
Mir ist nun noch eines nicht ganz klar:
Was passiert nun mit dem Überlauf bit31 beim nächsten Überlauf (in ca 48Tagen).
Wenn ich das Richtig verstanden habe wird das Bit31 wieder negiert. Also meine ich dass das Bit31 beim nächsten Überlauf (von +24D auf -24D) auf FALSE geht. Das wäre ja nicht korrekt.
Oder wird das Bit31 durch den TIME TCK wieder richtiger weise bei positivem Wert auf False gesetzt.?
Oder hats was mit dem wechsel von - nach + zu tun( gibts eigentlich -0 und +0 ? sollte eigentlich nicht??)
10000000 00000000 00000000 00000000 ist ja im Format TIME nicht zulässig
Bitte korrigiert mich wenn ich mit den Annahmen nicht richtig bin!
Gruß