Autor Thema: Remanenz / Neustartverhalten von Timer --> sehr seltsam  (Gelesen 9763 mal)

Offline Benni

  • Jr. Member
  • **
  • Beiträge: 46
Remanenz / Neustartverhalten von Timer --> sehr seltsam
« am: Februar 06, 2006, 15:21:38 Nachmittag »
Hallo Zusammen,

unten habe ich einmal einen kleinen Ausschnitt aus einem Programm angehangen, an dem ich schon fast verzweifelt bin.

Der Knackpunkt sind die beiden Merker 10 und 11, deren Zustand auch nach Spannungsausfall erhalten bleiben.

Soweit die Theorie, praktisch siehts dann so aus:
  • M11 = TRUE, Ausschalten/Einschalten oh wunder 11=TRUE :)
  • M10 = TRUE, Ausschalten/Einschalten M10=FALSE ???

Der Grund ist M76, der die Selbsthaltung von M10 aufheben kann. Aber wieso ist M76 nach dem Einschalten auf einmal gesetzt?
Diese Frage führt zu T07. T07 ist als remanente Einschaltverzögerung definiert, die die Zeit aus DB01 liest.

Jetzt kommts!!!
Nach einem Kaltstart sieht es nun so aus, das T07 geschaltet ist, obwohl die Zeit noch lange nicht abgelaufen ist (man beachte das beigefügte Bild).
Durch T07 wird dann M76 gesetzt und somit M10 zurückgesetzt.

UFF. darauf musste ich erst einmal kommen.

Ich frage mich natürlich jetzt, wie ich das beheben kann. Da ich T07 auch remanent brauche, will ich den am Anfang natürlich nicht zurücksetzen.

Vor allem da das hier nach einem Bug im Betriebssystem der Easy aussieht und nicht nach einem Denk- oder Programmierfehler. :-\

Da lasse mich aber gerne eines besseren überzeugen.

MFG
Benjamin

Das eigentliche Programm läuft auf MFD-80-B  +  CP8-ME (Softwarestand >05)
Am Schreibtisch hatte ich jetzt nur eine 819-DC-RE (Software 06-xxx) Das Verhalten war aber bei beiden gleich.
« Letzte Änderung: Februar 06, 2006, 15:26:34 Nachmittag von Benni »
verwendet wird:
EasySoft V6.22 Pro
Microsoft Windows 2000 Service Pack 4
Microsoft Windows XP Service Pack 2

Offline ThomasD

  • Full Member
  • ***
  • Beiträge: 238
  • Wissen ist Macht, nicht Wissen macht nichts
Re: Remanenz / Neustartverhalten von Timer --> sehr seltsam
« Antwort #1 am: Februar 06, 2006, 16:23:19 Nachmittag »
Hallo Benni
die Merker 10,11,76 und der Timer sind remanent geschaltet, d.h. nach einem Neu,-Kaltstart haben sie den gleichen Wert wie vorher.
Du hast die Timer 7-8 und die MB 1-50 remanent, darin ist auch der M 76 enthalten.
Achtung:
Lesen gefährdet ihre Gesundheit.

Offline Benni

  • Jr. Member
  • **
  • Beiträge: 46
Re: Remanenz / Neustartverhalten von Timer --> sehr seltsam
« Antwort #2 am: Februar 07, 2006, 09:48:03 Vormittag »
Hallo ThomasD,

das ist mir schon klar. Das erklärt das Verhalten aber überhaupt nicht.

Also Zustand BEVOR ich ausschalte:
M10 = TRUE
M76 = FALSE
T01 = FALSE, da vielleicht erst eine der 180 Minuten abgelaufen ist

Ausschalten / Einschalten
T01 = TRUE !!! wie schon oben beschrieben passiert das, obwohl die Zeit noch lange nicht abgelaufen ist.

Wenn du dir das Bild oben aniehst, und mit einem vergleichst, wie es normalerweise aussieht, wirst du feststellen, das hier etwas nicht stimmt.


Ich vermute, das die EASY ein Problem damit hat Zeiten aus Datenbausteinen zu übernehmen.
Das Problem könnte daher kommen, das zuerst die Merker und Bausteine überprüft werden und erst dann die Zeiten gelesen werden.

Gedanklicher Ablauf:
M10 ist TRUE damit wird auch T01 geschaltet und da die Zeit in T01 noch 0min beträgt, wird der Ausgang gesetzt.
Erst jetzt werden die 180min aud DB01 in T01 geladen.
Aber jetzt wird T01 nicht zurückgesetzt, sondern behält seinen Status bei....


MFG
Benjamin
verwendet wird:
EasySoft V6.22 Pro
Microsoft Windows 2000 Service Pack 4
Microsoft Windows XP Service Pack 2

Offline fmr

  • Jr. Member
  • **
  • Beiträge: 21
Re: Remanenz / Neustartverhalten von Timer --> sehr seltsam
« Antwort #3 am: Februar 07, 2006, 11:08:22 Vormittag »
Hallo Benjamin

Hatte auch schon Probleme mit Timer. Weiss nicht mehr genau was. Die Lösung war jedoch, dass ich den Timer nicht mit DBxx initialisieren konnte, sondern die Zeit mit einer Nu Konstante eingeben musste. Wenn der Timer läuft entstehen Fehler, wenn neu zugewiesen wird. Der Timer weiss nicht welchen Wert er hat.

Zeit direkt im Timer eintragen und nicht während dem Ablauf zuweisen.

Musst es selbst probieren, denn das verstehen der ganzen Schaltung braucht viel Zeit.

Gruss
fmr

Offline Benni

  • Jr. Member
  • **
  • Beiträge: 46
Re: Remanenz / Neustartverhalten von Timer --> sehr seltsam
« Antwort #4 am: Februar 07, 2006, 11:56:41 Vormittag »
Aber wieso soll ich eine Konstante verwenden, wenn ich eine Variable haben will?

Daneben sprechen noch mehrere Gründe für die verwendung von DB:

1) Die Werte brauche ich für unterschiedliche Zwecke (Anzeige MFD, mehrere Timer...). Ohne DB müsste ich die Werte jedemal einzeln anpassen. Fehler sind da garantiert.

2) Ich kann  meine Sollwerte sehr schön übersichtlich am Anfang des Projektes ablegen

3) Die Übernahme von Werten aus (remanenten) Merkerbereichen ist sehr schlecht, da ich keinen Startwert vorgeben kann. Wenn ich ein Programm auf die Steuerung lade, müsste ich erst einmal alle Wertebereiche initialisieren. Das gleiche passiert, wenn ich die Steurung zurücksetzte.

4) DB lassen sich sehr gut aus der Visualisierung ansprechen. Wenn ich über das Display Merkerbereiche verändern will, dann muss ich einzeln dokumentieren, welche Bereiche zu welchem Zweck belegt sind. Früher oder später ist dies ein Quell unerschöpflicher Verwirrung und Fehlersuche. Ein Datenbaustein dagegen ist im Schaltplan sichtbar.

MFG
Benjamin
verwendet wird:
EasySoft V6.22 Pro
Microsoft Windows 2000 Service Pack 4
Microsoft Windows XP Service Pack 2

Offline fmr

  • Jr. Member
  • **
  • Beiträge: 21
Re: Remanenz / Neustartverhalten von Timer --> sehr seltsam
« Antwort #5 am: Februar 07, 2006, 12:02:41 Nachmittag »
Sehe das so wie Du.

Funktionierte bei mir aber nur mit Konstante.

Ausprobieren, dann weisst Du ob der Fehler da liegt.

Gruss

fmr

Offline fmr

  • Jr. Member
  • **
  • Beiträge: 21
Re: Remanenz / Neustartverhalten von Timer --> sehr seltsam
« Antwort #6 am: Februar 07, 2006, 12:10:53 Nachmittag »
Weiterer Lösungsansatz.

Benutze den DB nur einmal wenn Du laden, initialisieren willst.

Remanenten Merker setzten nach dem  Laden und das Laden mit diesem Merker bedingen.

Vielleicht geht's so?

Gruss

fmr

Offline Benni

  • Jr. Member
  • **
  • Beiträge: 46
Re: Remanenz / Neustartverhalten von Timer --> sehr seltsam
« Antwort #7 am: Februar 07, 2006, 13:25:03 Nachmittag »

Benutze den DB nur einmal wenn Du laden, initialisieren willst.

Remanenten Merker setzten nach dem  Laden und das Laden mit diesem Merker bedingen.


 ???  ???

Kannst du mir das bitte erklären?



Ein weiterer Lösungsansatz von mir:

Den Inhalt von DB01 auf ein remanentes Merkerwort schreiben und diese Zeit in T01 lesen. (DB01.QV -> MW07; MW07 -> T01.PT)

Gut das funktioniert so, aber schön und vor allem wartbar ist so etwas nur sehr bedingt.


Die Frage, die mich allerdings mehr beschäftigt ist, ob das Verhalten des Timers nach einem Neustart so gewollt und richtig ist, oder ob ich eine Falsche Vorstellung habe.
Meine Vorstellung sieht so aus:
Nach einem Spannungsausfall haben remanent deklarierte Bausteine den gleichen Zustand wie vorher.
Und das trifft bei dem von mir gezeigten Programm eben nicht zu.

MFG
Benjamin
verwendet wird:
EasySoft V6.22 Pro
Microsoft Windows 2000 Service Pack 4
Microsoft Windows XP Service Pack 2

Offline fmr

  • Jr. Member
  • **
  • Beiträge: 21
Re: Remanenz / Neustartverhalten von Timer --> sehr seltsam
« Antwort #8 am: Februar 07, 2006, 13:53:51 Nachmittag »
In deiner Schalteung M96 nicht blinken lassen, sondern nur einmal aktivieren, wenn es wirklich nötig ist.

Beispiel:
Nicht M96 --> DB01
              --> SM96

So wird der Wert nur einmal geladen und sollte remanent bleiben wie M96.

Gruss

fmr
« Letzte Änderung: Februar 07, 2006, 13:58:51 Nachmittag von fmr »

Offline Benni

  • Jr. Member
  • **
  • Beiträge: 46
Re: Remanenz / Neustartverhalten von Timer --> sehr seltsam
« Antwort #9 am: Februar 07, 2006, 14:15:40 Nachmittag »
@ fmr
Danke für deine Antworten, aber ich glaube du hast nicht verstanden, wo mein eingentliches Problem liegt.
Ich schaffe es schon, das Werte remanet bleiben.
Ich verstehe nur das Aufstartverhalten des Timerbausteines nicht, der im ersten Zyklus schaltet und dann auch geschaltet bleibt, obwohl er das eigentlich nicht dürfte.

Weiter musst du aufpassen mit dem setzen von M96. Die Werte von Datenbausteinen werden nur bei steigender Flanke übernommen. Wähle mal einen DB (in Easy-Soft) an und drücke F1. Sehr weit am Ende steht das dann in einem blauen Kasten.


MFG
Benjamin
verwendet wird:
EasySoft V6.22 Pro
Microsoft Windows 2000 Service Pack 4
Microsoft Windows XP Service Pack 2

Offline befu

  • Full Member
  • ***
  • Beiträge: 134
Re: Remanenz / Neustartverhalten von Timer --> sehr seltsam
« Antwort #10 am: Februar 07, 2006, 14:29:44 Nachmittag »
Hallo Benni,

da hast Du wirklich in ein Wespennest gestochen und eine sehr spezielle Problematik aufgedeckt. Ich hab mir das mal angesehen und kann folgende Erläuterungen und Hinweise dazu geben:

1.   Bei einem remanenten Funktionsbaustein wird nur der aktuelle Ausgangswert gespeichert, bei einem remanenten Timer noch zusätzlich der aktuelle Zustand der internen State Machine.

2.   Beim Restart eines remanenten Timers wird jetzt der remanente Istwert wiederhergestellt und für den Fall, das der Timer in einem aktiven Zustand war (Einschalt- oder Ausschaltzeit läuft), wird der jeweils aktuelle Istwert I1 oder I2 erneut geladen, d.h. die Sollwerte sind nicht remanent! Mit Konstanten funktioniert das, bei einer Beschaltung mit einer Variablen sind einige Randbedingungen zu beachten:

3.   Beim Übergang von HALT nach RUN werden zuerst die Strompfade initialisiert, danach wird der Funktionsbausteinplan vorbereitet. Dazu gehört das Rücklesen der remanenten Merker, danach werden die Datenfelder der einzelnen Funktionsbausteine initialisiert, und zwar in der Reihenfolge, in der sie im Bausteinplan angeordnet sind. Bei diesem Vorgang werden auch remanente Istwerte wiederhergestellt. Beim Timer erfolgt an dieser Stelle auch die Neuermittlung des eventuell benötigten Sollwertes I1 oder I2.

4.   Daraus kann man ersehen, dass man keine Chance hat, mit irgendeiner Massnahme diesen Ablauf zu beeinflussen, die erst mit der Bearbeitung von Schalt- oder Bausteinplan wirksam wird. Zu diesem Zeitpunkt wäre schon ein aktiver Sollwert von "0" ermittelt worden, weshalb der Ausgang Q1 des Timers aktiv wird, obwohl die später sichtbare Sollzeit noch nicht abgelaufen ist. Ein geänderter Sollwert wird aber erst mit einer erneuten Flanke am Enable-Eingang übernommen.

5.   Möglich ist also nur die Beschaltung entweder mit einem remanent deklarierten Merker MW bzw. MD an I1 und/oder I2, oder die Beschaltung mit dem Ausgang QV eines remanenten Funktionsbausteines DB, wobei dieser Datenbaustein DB dann im Bausteinplan vor dem remanenten Timer angeordnet werden muss.

Leider ist bei der Implementierung dieser Vorgänge wohl nicht an alle möglichen Programmier-Varianten gedacht worden, von den Vorgängertypen her war nur eine Beschaltung mit einer Konstanten vorgesehen. Außerdem ist wegen der begrenzten Pufferzeit beim Ausschalten die Anzahl der speicherbaren Werte begrenzt, deshalb die Beschränkung auf die Istwerte eines remanenten Funktionsbausteins.

Ich hoffe, diese Erläuterungen klären einiges und Du kannst damit Dein geplantes Projekt doch noch realisieren.

Freundliche Grüße

Bernhard
« Letzte Änderung: Februar 07, 2006, 14:32:15 Nachmittag von befu »

Offline Benni

  • Jr. Member
  • **
  • Beiträge: 46
Re: Remanenz / Neustartverhalten von Timer --> sehr seltsam
« Antwort #11 am: Februar 07, 2006, 15:14:54 Nachmittag »
Danke befu für diese ausführliche Erklärung. Das es an so etwas liegen könnte hatte ich ja schon vermutet.

Zu deinen Lösungen unter 5:
Die Zeit von einem remanenten DB einzulesen funktioniert definitiv nicht! Ich habe das eben ausprobiert.

Die einzige Möglichkeit - wie du auch schreibst- ist es, den Wert des DB auf eine remanentes Merkerwort zu schreiben und dieses dann in den Timer zu schreiben.

Wenn ich mich mal zitieren darf (Hey das wollte ich schon immer mal machen :D):

Gut das funktioniert so, aber schön und vor allem wartbar ist so etwas nur sehr bedingt.


So werde ich das mal machen, und darauf hoffen, das ich in einem halben Jahr nicht wieder darüber falle.

Richtig fies wird es ja erst einmal, wenn dieser Bug einmal behoben wird, und man dann versucht neue Programme in alte Steuerungen zu übernehmen. Daran denkt dann definitiv niemand mehr.
Es sei denn, es wäre möglich die Firmware der EASY gleich mit zu erneuern.

Gruß
Benjamin
verwendet wird:
EasySoft V6.22 Pro
Microsoft Windows 2000 Service Pack 4
Microsoft Windows XP Service Pack 2

Offline befu

  • Full Member
  • ***
  • Beiträge: 134
Re: Remanenz / Neustartverhalten von Timer --> sehr seltsam
« Antwort #12 am: Februar 07, 2006, 15:34:08 Nachmittag »
Hallo Benjamin,

der Nebensatz unter 5. ist wichtig: Der DB muss im Funktionsbaustein vor dem remanenten Timer angeordnet werden, dann geht es auch ohne den Umweg über Merker.

In Deinem Original-Programm steht der DB01 hinter dem T07, deshalb wird dessen remanenter Ausgang QV erst mit dem gespeicherten Wert versehen, wenn die Initialisierung von T07 bereits abgeschlossen ist, dann trotz remanentem DB01 mit dem Sollwert "0"!

Ich hatte die Reihenfolge entsprechend geändert und die DB01 bis DB04 remanent gemacht, dann hat es bei mir korrekt funktioniert.

Gruß

Bernhard
« Letzte Änderung: Februar 07, 2006, 15:36:29 Nachmittag von befu »

Offline Benni

  • Jr. Member
  • **
  • Beiträge: 46
Re: Remanenz / Neustartverhalten von Timer --> sehr seltsam
« Antwort #13 am: Februar 07, 2006, 17:03:22 Nachmittag »
Hallo Befu,

da haben wir über zwei verschiedene Sachen gesprochen. Wenn ich meine  vor oder hinter, dann gehe ich von der Schaltplanansicht aus. Und hier steht mein DB01 in Strompfad 1 und T01 in Strompfad 10. Also hinter DB01.  >:( Da hat es auch nicht genützt alle DBs remanent zu machen.

Du hast vermutlich die Bausteinansicht gemeint. Dort steht T01 in Zeile 3 und DB01 in Zeile 6.  :)
Hoffe das jetzt richtig verstanden zu haben.

Ich kann das leider jetzt nicht mehr ausprobieren, da ich die nächsten 2 Tage auf Inbetriebnahme bin.

Werde das aber auf jeden Fall mal am Freitag ausprobieren, wenn es klappt, dann wäre es ja schon fast perfekt.

Bis dann
Benjamin
verwendet wird:
EasySoft V6.22 Pro
Microsoft Windows 2000 Service Pack 4
Microsoft Windows XP Service Pack 2

Offline befu

  • Full Member
  • ***
  • Beiträge: 134
Re: Remanenz / Neustartverhalten von Timer --> sehr seltsam
« Antwort #14 am: Februar 07, 2006, 17:10:12 Nachmittag »
Hallo Benni,

genau so ist es! Beide Ansichten, Schaltplan und Bausteinplan werden abwechselnd nacheinander von zwei getrennten Interpretern abgearbeitet. Entscheidend für die Initialisierung remanenter Bausteine ist natürlich die Reihenfolge im Bausteinplan.

Tschüß und viel Erfolg bei der Inbetriebnahme

Bernhard