Step 7 Merkerdoppelwort um Eins erhöhen, wenn ein Impuls da ist

websiedler

Level-1
Beiträge
5
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo liebe SPS Forum Gemeinde,

Ich möchte an einen Baustein einen Taktmerker von außen parametrieren. Dieser Takt soll in einen zB. Merkerdoppelwert abgelegt werden.
In meinem Code benutze Ich einen Impulsmerker (Flankenbildung), doch statt dass er hochzählt, wenn der eine Zyklusimpuls da ist, zählt er in jeden Zyklus hoch.

U #Zeitgeber // Zeitwert in 1/10s bilden, ist von außerhalb mit einem Taktmerker parametrierbar
FP #FMerker_1
= #IMerker_1
U #IMerker_1 // Flankenauswertung über Impulsmerker innerhalb eines Zyklus'
L MD 100
L 1 // Hier ist das Problem, dass er jeden Zyklus hochzählt und nicht innerhalb eines Zyklus'
+I
T MD 100

Ich habe es schon mit ausklammern in verschiedenen Variationen versucht, doch er lädt die 1 in jedem Zyklus in MD 100, statt in dem vorgegebenen Takt.

Ist mein Ansatz hier falsch? Sollte Ich einen anderen Weg wählen, um einen Taktmerker in einen Merkerdoppelwort zu schreiben?
Oder findet jemand eine Verbesserung zu dem obig dargestellten Problem?
Ich bin dankbar für jede Antwort.
 
Vielleicht eher so:

Code:
      U     #Zeitgeber                // Zeitwert in 1/10s bilden, ist von außerhalb mit einem Taktmerker parametrierbar
      FP    #FMerker_1
      =     #IMerker_1

      UN     #IMerker_1               // Flankenauswertung über Impulsmerker innerhalb [B]eines[/B] Zyklus'
      SPB ENDE
      L     MD   100
      L     1                             // Hier ist das Problem, dass er jeden Zyklus hochzählt und nicht innerhalb [B]eines[/B] Zyklus'
      +I    
      T     MD   100

ENDE: NOP 0
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Dieser Vorschlag sieht schon beim lesen sehr gut aus.
Ich habe es ausprobiert, und es Funktioniert perfekt.
Ich bin nicht drauf gekommen, einen Sprungbefehl zu verwenden.
Vielen dank,

Gruß websiedler :D
 
Hallo,
vielleicht noch so als Anmerkung :
Die Operation "+I" macht eine Integer-Addition. Das bewirkt dann aber einem gewissen Zahlenwert, dass in deinem MD nicht mehr das drinsteht, was drinstehen sollte - eben wegen INT.
Besser hier (und wenn man schon ein MD oder auch DBD nimmt) gleich passend angewöhnen : "+D" - bei Doppelworten auch passend addieren ...

Gruß
Larry
 
Und zu deiner Info, lade und Transferbefehle sind vom VKE unabhängig und werden immer ausgeführt.....außer sie werden übersprungen wie oben angemerkt.

Deshalb wurde in deinem Beispiel der Zähler in jedem Zyklus hochgezählt!

Grüße Pico
 
Zurück
Oben