-> Hier kostenlos registrieren
Hallo an alle!
Ich bin neu hier und auch in der Welt der Simatic-SPS-Programmierung und stehe vor einem Problem...
Ich will eine Wegstrecke messen mittels Drehencoder. Ich habe hierfür einen schnellen Zähler genommen (HC0, zählt A/B-Impulse und wird nach einer gewissen Wegstrecke (Lochscheibe und Näherungssensor) zurückgesetzt).
Das ganze klappt soweit hervorragend.
Nun war meine Idee die folgende: Ich nehme einen internen Taktgeber, hier sm0.5 und werte die steigende bzw. fallende Flanke aus zum generieren einer Zykluszeit. Bei jeder Flanke nehme ich den aktuellen Zählwert und berechne hier meine Strecke. Ich scheitere nun daaran, daß weder die steigende, noch die fallende Flanke erkannt oder ausgewertet wird. Wenn ich den Motor laufen lasse und mit der Microwin drauf schaue, dann sehe ich, daß gefühlt alle Schaltjahre mal ein Zählwert gelesen wird.
Ich habe nun versucht, mittels Merkern (z.B. = v100.x, S v100.x, 1) oder mittels Oder-Verknüpfung eines unbenutzten Eingangs eine Flanke auszuwerten, aber nein, nichts klappt. Ich bin nun etwas ratlos.
Das hier ist der bisher "letzte" Versuch mittels Merkern und eines unbenutzten Eingangs. Sehr unelegant, aber war meine letzte Hoffnung.
Was mache ich hier so grundlegend falsch??? Funktioniert die Erkennung der Flanken ausschließlich mit Eingängen?
Ich würde mich über jede Hilfe freuen!
Oh, PS: Ich benutze eine CPU 224 und Microwin 4 SP8.
Ich bin neu hier und auch in der Welt der Simatic-SPS-Programmierung und stehe vor einem Problem...
Ich will eine Wegstrecke messen mittels Drehencoder. Ich habe hierfür einen schnellen Zähler genommen (HC0, zählt A/B-Impulse und wird nach einer gewissen Wegstrecke (Lochscheibe und Näherungssensor) zurückgesetzt).
Das ganze klappt soweit hervorragend.
Nun war meine Idee die folgende: Ich nehme einen internen Taktgeber, hier sm0.5 und werte die steigende bzw. fallende Flanke aus zum generieren einer Zykluszeit. Bei jeder Flanke nehme ich den aktuellen Zählwert und berechne hier meine Strecke. Ich scheitere nun daaran, daß weder die steigende, noch die fallende Flanke erkannt oder ausgewertet wird. Wenn ich den Motor laufen lasse und mit der Microwin drauf schaue, dann sehe ich, daß gefühlt alle Schaltjahre mal ein Zählwert gelesen wird.
Ich habe nun versucht, mittels Merkern (z.B. = v100.x, S v100.x, 1) oder mittels Oder-Verknüpfung eines unbenutzten Eingangs eine Flanke auszuwerten, aber nein, nichts klappt. Ich bin nun etwas ratlos.
Das hier ist der bisher "letzte" Versuch mittels Merkern und eines unbenutzten Eingangs. Sehr unelegant, aber war meine letzte Hoffnung.
Code:
S V0.1, 1
LD E1.2
O SM0.5
//= V202.1
//LD V202.1
EU
MOVD HC0, VD100
Network 2
// Reset des Zählers erkennen
LDN E0.2
R V0.1, 1
Network 3
// Zähler auswerten
LDN SM0.5 // Zeitintervall von 0,5sec
O E1.2
= V202.0
LD V202.0
ED
MOVD HC0, VD104
LD V0.1 // nur ausführen, wenn kein Reset aktiv war!
...
Was mache ich hier so grundlegend falsch??? Funktioniert die Erkennung der Flanken ausschließlich mit Eingängen?
Ich würde mich über jede Hilfe freuen!
Oh, PS: Ich benutze eine CPU 224 und Microwin 4 SP8.