Flanke

SCL Flanke

Zeile 1: Flankenmerker := Taster AND NOT Impulsmerker;
Zeile 2: Impulsmerker := Taster;


Sobald du den Taster drückst, ist der Flankenmerker für 1 Zyklus lang "HIGH".

PS.: Verwende KEINE temporären Variablen für den Impulsmerker und für den Flankenmerker !!!!!!!!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Oh jee!

Es fing gut an aber klappt einfach nicht.

gegeben: 1x Inkremetalgeber mit zweispuren ( eine Invertiert)

Ich will in SCL die Inkremente auf und ab zähen.

Hier meine nicht funktionierende Idee:

fms := sin1 AND NOT ipms;
ipms := sin1;
fmc := cos1 AND NOT ipmc;
ipmc := cos1;

ad := ipms AND cos1;
su := ipmc AND sin1;

IF ad=1 THEN
istwert := istwert +1;
END_IF;

IF su =1 THEN
istwert := istwert -1;
END_IF;

Was mache ich Falsch??:confused:
 
Hallo,
falls deine Inkremente nicht zu schnell für die Prozedur sind ...

Die Spuren "A" und "B" deines Inkrementalgebers (oder bei dir "sin" und "cos" genannt) haben immer Signale, nur ist es so, das beim Rechts-Drehen das Signal von "Spur A" vor dem von "Spur B" kommt und beim Links-Drehen "Spur B" vor "Spur A" kommt. Das hast du in deinem Script nicht berücksichtigt. Du addierst also erst und dann subtrahierst du wieder (oder umgekehrt - je nach Drehrichtung). Das Ergebnis müsste also einen stehenden Wert ergeben.
In deinem Script musst du also berücksitigen, welche Spur zuerst kommt, daraus die Richtung festlegen und den Flankenmerker so lange auf True halten bis beide Spuren wieder False sind.
Vielleicht in etwa so :
Code:
if sin1 AND NOT cos1 AND NOT Flanke then ad := true ; end_if ;
if cos1 AND NOT sin1 AND NOT Flanke then su := true ; end_if ;
Flanke := sin1 or sin1 ;
if not sin1 and not cos1 then
   ad := false ;
   su := false ;
end_if ;
 
if su and not Flanke_su then
   Zaehler := Zaehler -1 ;
end_if ;
Flanke_su := su ;
if ad and not Flanke_ad then
   Zaehler := Zaehler +1 ;
end_if ;
Flanke_ad := ad ;
Verbesserungs-Möglichkeiten sind natürlich noch vorhanden ...
 
Vorausgesetzt es handelt sich um ein Signal das langsam genug ist und folgende Abfolge aufweist:

Code:
        ___     ___
Ch_A  _|   |___|   |_ 
          ___     ___
Ch_B  ___|   |___|
      0 1 3 2 0 1 3 2

BA
00 = 0 
01 = 1
11 = 3
10 = 2
Würde ich das so lösen:
Code:
SIG := 0;
IF Ch_A THEN 
    SIG := SIG + 1;
END_IF;

IF Ch_B THEN 
    SIG := SIG + 2;
END_IF;
    
IF (SIGold = 0 AND SIG = 1) 
OR (SIGold = 1 AND SIG = 3) 
OR (SIGold = 3 AND SIG = 2) 
OR (SIGold = 2 AND SIG = 0) THEN
    myValue := myValue + 1;
END_IF;

IF (SIGold = 2 AND SIG = 3) 
OR (SIGold = 3 AND SIG = 1) 
OR (SIGold = 1 AND SIG = 0) 
OR (SIGold = 0 AND SIG = 2) THEN 
    myValue := myValue - 1;
END_IF;

SIGold := SIG;

Somit wird jede Flanke (positive und negative) Ausgewertet was zu einer Doppelten Auflösung führt.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
danke Ihr zwei.

Larry seins liest sich wie ich es mir dachte !
Aber Zotos sein hat auch irgend wie etwas !!!!


Was meint ihr wie schnell kann sich eine Achse mit 1024 Ink/Umdr.
sich wohl drehen wenn eine 315 2DP über PB auf ein Wago anschluß mit
dem Geber zugreift.
 
Hallo,
Was meint ihr wie schnell kann sich eine Achse mit 1024 Ink/Umdr. sich wohl drehen
bei 1024 Imp./Umdr. ist bei 1 Umdr./Minute Schluss ... Das ist absolut ein Fall für eine Zählerkarte. Bei PB würde ich da z.B. die 1Count von Siemens (6ES7-138-4DE02-0AB0 bzw. 4DA03-0AB0) nehmen.
Larry seins liest sich wie ich es mir dachte !
Aber Zotos sein hat auch irgend wie etwas !!!!
Das war bei mir auch der Ziel der Übung.
Ich muss allerdings gestehen, dass mir der Beitrag von Zotos auch gut gefällt - ist aber auch eigentlich klar, denn schließlich ist Zotos ja auch der SCL-Man im Forum ;-) ;)

Gruß
LL
 
...
bei 1024 Imp./Umdr. ist bei 1 Umdr./Minute Schluss ... Das ist absolut ein Fall für eine Zählerkarte.
...
100% Ack. ein Zählerkarte muss her.

Selbst bei nur 1 U/min darf die Zykluszeit nicht ins Stocken geraten. Das sind 1024 Imp/Umdrehung auf Spur A, sind 4096 Signalwechsel (A und B zusammen) pro Umdrehung. Das ist schon eine Menge.

...
Bei PB würde ich da z.B. die 1Count von Siemens (6ES7-138-4DE02-0AB0 bzw. 4DA03-0AB0) nehmen.
...

Würde ich nicht nehmen. Wenn ich das richtig verstehe:
...wenn eine 315 2DP über PB auf ein Wago anschluß mit
dem Geber zugreift.

Hast Du doch einen Wago Buskoppler oder was ist unter einem "Wago Anschluss" zu verstehen?
Wenn das ein Wago Buskoppler ist, würde ich zu einer Wago-Zählerkarte greifen.
 
Hi ich weis da jetzt etwas mehr!

Der Bus Koppler ist Wago 750-301 und der Eingang ist 750-634

aber bei Wago finde ich keine Beschreibung :-((

Mal sehen was die Dinger können.
 
Zurück
Oben