Timer hängen nach dem "ersten Mal"

Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Hallo rs-plc-aa
was hälst du von der Variante, hier brauchst nur 1 Timer


UN T 98
L 100
ITB
L W#16#1000
OW
SV T 98
L T 98
L 10
<=I
= M 116.0

Auch nicht schlecht... --> scheint auch sehr effizient zu sein.

Dies geschieht allerdings zu lasten der Übersichtlichkeit.

Wenn ich´s richtig verstanden habe sind die "100" die Gesamtzeit eines Durchlaufs (Pause+Impuls) und entsprechen hier 10sec.

Der Impuls ist dann die Restzeit "10" (1sec) von der Gesamtzeit während der das Bit gesetzt ist - richtig ?

Also 9sec AUS 1sec EIN...

Aber wieso schreibst du nicht gleich:

Code:
      UN    T     97
      L     S5T#10S      // Gesamtzeit (Pause+Impuls)
      SV    T     97
      L     T     97
      L     10           // Impulszeit*10 in sec
      <=I   
      =     M     50.6   // Signalbit

... funktioniert jedenfalls genauso, lässt sich aber verständlicher kommentieren... ?
 
Hallo,

vielleicht nervt´s auch langsam... - aber für die die´s interessiert habe ich noch folgendes zu bieten:

Ich habe einen weiteren Test durchgeführt bei dem ich die 2 (für mich persönlich) favorisierten Lösungen gegeneinander habe antreten lassen.

Lösung 1 (mittlerweile besser bekannt als "Rolf´s erste Version"):

Code:
      UN    T     99
      L     S5T#9S                      // Pausendauer
      SE    T     98                    
      U     T     98
      =     M     50.6                  
      L     S5T#1S                      // Impulsdauer
      SE    T     99

und

Lösung 2 (ich sag jetzt einfach mal "Georg´s manipulierte Version"):

Code:
      UN    T     97
      L     S5T#10S              // Gesamtzeit (Pause+Impuls)
      SV    T     97
      L     T     97
      L     10                   // Impulszeit*10 in sec
      <=I   
      =     M     50.5

Testdauer = 1500sec

Erwartetes Ergebnis = 150*Bit Zustand "1"

Ergebnis:
Lösung 1 = 149* "1" + 277ms
Lösung 2 = 149* "1" + 440ms

Also hat Lösung 2 gegenüber Lösung 1 immerhin 163ms auf 1500sec "herausgefahren".

Na ja Haarspalterei oder wissenschaftliches Experiment - nennt´s wie Ihr´s wollt - auf jeden Fall hat´s mich gerade etwas genauer interessiert, und wenn man eh schon mal dabei ist...

Ich werde jetzt nun jedenfalls Lösung 2 verwenden (der Aufwand muß sich ja schließlich irgendwie gelohnt haben).

Für alle Beiträge ein herzliches Dankeschön - ohne diese wäre das Ergebnis nicht möglich gewesen !
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo RS,
also wie kommen wir da nur wieder raus?;)

Nun muss man bedenken, dass wir diese 'Tests' mit PLCSIM
durchgeführt haben. Wie genau das ist? - Keine Ahnung.
Weil es mich aber auch interessiert hat, habe ich dann noch
Deine Variante; meine kurze- ; meine KOP- ; Georgs - und dazu
den OB35 aufgerufen. Alle mit einem 1s/1s Impuls/Pause Verhältnis,
respektive 2000ms / OB35. Damit habe ich dann jeweils Zähler hochgezählt.
Das Ergebnis : Georgs Variante war auch nach 880 sec. noch beim
gleichen Zählerstand wie OB35 ; meine beide Varianten 3 zurück und Deine Lösung 5 zurück. Ob nun eine Blinkleuchte nach 12 Minuten nun ein paar mal mehr oder weniger aufleuchtet, ist aberwohl wirklich egal.:rolleyes:
Einziger praktischer Nutzen hat meiner Meinung nach Georgs Lösung,
wenn ich da an S5-Programme denke, in denen man vielleicht ein paar
Timer 'frei' machen kann, die vorher für 'Blinker' benutzt wurden.

So, das solls dann von hier aus gewesen sein.

mfg.
Rolf
 
Hallo Rolf,

Ob nun eine Blinkleuchte nach 12 Minuten nun ein paar mal mehr oder weniger aufleuchtet, ist aberwohl wirklich egal.:rolleyes:

Da hast du vollkommen recht !

Ich habe die ganze "Aktion" auch mehr zu lernzwecken gebraucht als dafür wie genau die Blinkleuchte nun wirklich blinkt.

BTW: Es ging mir vom Verwendungszweck her in Richtung Lebenszeichen mit einer vom Kunden vorgeschriebenen EIN/AUS-Zeit --> Keine Ahnung wie genau die das nun auswerten, aber ich dachte ich strebe den genauest-machbaren Weg an - dann kann keiner Meckern und z.B. sagen:

"Nach 3 Monaten ist ihre Sequenz aber mal dermaßen aus dem Ruder gelaufen daß wir es hier als Störung eingefangen haben".


Aber du hast ja selbst gesehen es packt einen dann doch und man mißt es (in welcher Form auch immer) nach - eben weil man´s dann doch wissen will...

Und ob PLCSIM oder CPU spielt eigentlich keine Rolle da es ja eine Vergleichsmessung ist bei der die Probanden auf der selben Plattform laufen - also nicht der Messwert zählt sondern die Differenz der ermittelten Ergebnisse...

Mich hat es zumindest so inspiriert daß ich gleich im Anschluss eine weitere Lösung für ein anderes Problem fand das mich sonst mit sicherheit mal wieder länger beschäftigt hätte.

Zu dem habe ich in der Vergangenheit immer wieder Ärger mit den Timern gehabt - nicht umsonst hat auch mein erstes Beispiel bei deinem Test am schlechtesten abgeschnitten - ich habe also auch am meisten von diesem thread profitiert !

Irgendwie hatte ich da immer keine so glückliche Hand, und in der Form mit jemand darüber diskutiert hatte ich eben noch nicht (ich bin hier in der Firma Einzelkämpfer in der Abteilung)...

Daher gleich noch ein Hoch auf das SPS-Forum !!! :s18:


Und wo kein Versuch da auch kein Fortschritt.


Deshalb verbleibe ich in diesem Sinne...

... frohes Testen !
 
guten morgen, war 2 tage nicht da.
eins muss ich noch zu meinem Beispiel sagen, man muss dort mit Zeitbasis auspassen.
Deswegen auch die Zeile L W#16#100, damit lege ich Zeitfaktor selber fest auf: 0,1 sec.
Beim Befehl L T98 wird nur inhalt vom Timer geladen, dort steht dann nicht um welchen Zeitbasis es handelt. D.h. hätte ich L W#16#200 gesagt dann ist Zeitbasis für 1 sec, und ich müsste dann mit L 1 und nicht L10 vergleichen.
D.h. es funktioniert nur dann gut wenn die Zeiten nicht zu weit auseinenader sind. Bei Zeiten 20 min pause und 1 sec intervall wäre der Beispiel nicht gegangen.
gruß Georg
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Georg,

das ist natürlich ein Argument...

Die Lösung scheint also in der Tat am meisten Hintergrundwissen zu erfordern.

Da es leider nicht eindeutig ersichtlich ist ab welcher Schwelle der Compiler (müsste man durch Probieren rausfinden - oder jemand hat´s schon probiert und postet es :)) die Zeitbasis wechselt, wird nichts anderes übrig bleiben als es doch so (wie du) zu schreiben, oder testen wie lange die max. Zeit sein darf und einen Netzwerkkommentar entsprechend hinzufügen...

Den Vergleicher dementsprechend umzubauen daß der Zeitwert mit "LC" ausgelesen wird scheint auf den ersten Blick jedenfalls zu kompliziert, da durch weitere Vergleiche erst mal ermittelt werden müsste welche Zeitbasis denn gerade nun wirklich verwendet wird - oder ?
 
Hallo,

=======================================================
> O.K. ich weiß jetzt nervt´s langsam wirklich - aber bei so vielen hits auf das Thema muß die "Fehlerkorrektur" noch drin sein <
=======================================================


entsprechend kommentiert sieht das gar nicht mehr so schlimm aus:

Code:
      UN    T      2
      L     100             // Gesamtlaufzeit entsprechend der Zeitbasis (Wert*Basis)
      ITB   
      L     W#16#1000       // Zeitbasis W#16#0/1000/2000/3000 = 10ms/100ms/1s/10s
      OW                    // Bildung des Zeitwerts incl. Zeitbasis für den Timer
      SV    T      2
      L     T      2
      L     10              // Restzeit für Bit entsprechend Zeitbasis (Wert*Basis)
      <=I   
      =     M     50.5      // Signalbit ist "1" während Restzeit läuft

oder ?

Das wäre dann also die "EierlegendeWollMilchSau", die mit nur einem Timer und der kürzesten Laufzeit für alles offen ist.

Vorsicht ist allerdings bei den eingesetzten Zahlen schon geboten, da das Ganze natürlich nicht auf Plausibilität geprüft wird --> Wenn der Wert mit der verwendeten Basis nicht zusammenpasst geht die CPU in Stp !

=======================================================
> So - jetzt ist aber alles in trockenen Tüchern (denke ich doch) <
=======================================================
 
Zurück
Oben