Step 7 Bit in einer Schrittkette invertieren

Tmbiz

Level-2
Beiträge
640
Reaktionspunkte
21
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich habe eine Schrittkette in welcher verschiedene Aktoren gesteuert werden. Aber ein Aktor soll nur in jedem zweiten Durchlauf aktiv werden. Es werden Flaschen in eine Maschine gefördert. Es werden immer zwei Flaschen in die Maschine geschoben.

Gibt es eine Funktion, welche z.B. ein Bit invertieren kann. Dass würde ich dann in einem Schritt aufrufen und die Zuführung nur starten, wenn das Bit eine "1" hat. Oder hat jemand eine andere Idee?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Gibt es. Z.B.:
1.) x := NOT x ;
oder
2.) x := x XOR impuls ;

Bei 1.) wird jedesmal, wenn der Befehl durchlaufen wird, das Bit "umgeknippst" und bei 2.) nur dann, wenn das Bit impuls TRUE ist.
Dass würde aber bei jedem Zyklus ausgeführt. Ich müsste noch etwas einbauen, was es nur einmal in der Funktion unabhängig von der Anzahl der Zyklen ausführt. Sehe ich das richtig?
 
Aber ein Aktor soll nur in jedem zweiten Durchlauf aktiv werden.
Das sollte doch an Deiner Schrittkette leicht zu erkennen sein, wann ein Durchlauf fertig ist oder ein neuer Durchlauf startet. Da baust Du z.B. im ersten Schritt oder in einem extra Schritt, der nur 1 Zyklus lang ist, oder in einer Schrittweiterschaltung das umknippsen des Bits ein.
Oder hat die Schrittkette einen Durchlaufzähler? Da könntest Du auswerten, ob der Zählerstand gerade oder ungerade ist.

Harald
 
Dass würde aber bei jedem Zyklus ausgeführt. Ich müsste noch etwas einbauen, was es nur einmal in der Funktion unabhängig von der Anzahl der Zyklen ausführt. Sehe ich das richtig?
Das siehst Du absolut richtig.
Aber ein Aktor soll nur in jedem zweiten Durchlauf aktiv werden.
Was Du hier mit "Durchlauf" meinst, das weisst nur Du. Dass Du damit nicht den PLC-Zyklus meinst, das hatte ich bereits vermutet und (nicht nur deshalb) die Variante 2.) mit dem XOR genannt, bei der man mit dem von extern versorgten Bit 'impuls' steuern kann, ob im aktuellen PLC-Zyklus invertiert werden soll oder nicht. ;)

Was Dir weiterhelfen könnte:
Entweder eine FlankenErkennung für das Kriterium "Durchlauf" (auch erforderlich, falls Du bereits einen "DurchlaufZähler" realisiert hast, wie von Harald genannt - allein die Unterscheidung, ob gerade oder ungerade DurchlaufNummer dürfte i.A. nicht genügen)
oder das Einfügen eines zusätzlichen Schrittes, der exakt 1 PLC-Zyklus lang aktiv ist und dann bedingungslos zum nächsten Schritt weiterschaltet.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Gibt es. Z.B.:
1.) x := NOT x ;
oder
2.) x := x XOR impuls ;

Bei 1.) wird jedesmal, wenn der Befehl durchlaufen wird, das Bit "umgeknippst" und bei 2.) nur dann, wenn das Bit impuls TRUE ist.

Es geht. Ich habe in meiner Schrittkette eine Funktion, welche nur im ersten Zyklus des Schrittes aktiv ist. Da wird das Bit nun invertiert und nur wenn das Bit "high" ist wird die dazugehörige Funktion ausgeführt. Der Ergebnis ist, dass es nur in jedem zweiten Durchlauf der Schrittkette ausgeführt wird. Danke
 
Zurück
Oben