1. Umlaufender (engl. wrapping) Zähler

Um einen Zähler zu haben, der "umspringt", müssen Sie den Preset-Pin und den Reset-Pin verwenden. Wenn Sie den Zähler erstellen, setzen Sie den Preset auf die Zahl, die Sie erreichen wollen, bevor Sie auf 0 umbrechen. Die Logik ist, wenn der Zählerwert über dem Preset liegt, dann setzen Sie den Zähler zurück und wenn der Unterlauf an ist, dann setzen Sie den Zählerwert auf den Preset-Wert. Wie Sie im Beispiel sehen können, wird der Zähler zurückgesetzt, wenn der Zählerwert größer als der Vorwahlwert ist, und der Wert ist jetzt 0. Der Unterlaufausgang %Q2 setzt den Zählerwert auf den Vorwahlwert, wenn rückwärts gezählt wird.

Umlaufender (engl. wrapping) Zähler
Abbildung 1. Umlaufender (engl. wrapping) Zähler

2. Extra-Impulse zurückweisen

Dieses Beispiel zeigt Ihnen, wie Sie zusätzliche Impulse von einem Eingang zurückweisen können. Nehmen wir an, der Eingangsimpuls %I0 hat die lästige Angewohnheit, einen zusätzlichen Impuls abzugeben, der unsere Logik stört. Der TOF (Timer Off Delay) verhindert, dass der zusätzliche Impuls unseren bereinigten Ausgang %Q0 erreicht. Das funktioniert so: Wenn der Timer einen Eingang erhält, ist der Ausgang des Timers für die Dauer der eingestellten Zeit eingeschaltet. Mit Hilfe eines Öffnerkontakts %TM0.Q blockiert der Ausgang der Zeitschaltuhr alle weiteren Eingänge, die unseren Ausgang erreichen, bis die Zeit abgelaufen ist.

Extra-Impuls ablehnen
Abbildung 2. Extra-Impuls ablehnen

3. Externer Notaus

Das Beispiel für den externen Notaus-Schalter befindet sich im Ordner /config/classicladder/cl-estop. Es verwendet ein PyVCP-Panel, um die externen Komponenten zu simulieren.

Um eine externe Notaus-Schnittstelle zu LinuxCNC und haben die externen Notaus arbeiten zusammen mit dem internen Notaus erfordert ein paar Verbindungen durch ClassicLadder.

Zuerst müssen wir die Notaus-Schleife in der Haupt-HAL-Datei öffnen, indem wir die folgenden Zeilen auskommentieren, indem wir das Doppelkreuz-Zeichen wie gezeigt hinzufügen oder sie entfernen.

# net estop-out <= iocontrol.0.user-enable-out
# net estop-out => iocontrol.0.emc-enable-in

Als Nächstes fügen wir ClassicLadder zu unserer Datei custom.hal hinzu, indem wir diese beiden Zeilen hinzufügen:

loadrt classicladder_rt
addf classicladder.0.refresh servo-thread

Als Nächstes führen wir unsere Konfiguration aus und erstellen die Leiter wie hier gezeigt.

Anzeige des Notaus-Bereichs
Abbildung 3. Anzeige des Notaus-Bereichs

Nach dem Erstellen der Leiter wählen Sie Speichern unter und speichern die Leiter als estop.clp

Fügen Sie nun die folgende Zeile in Ihre Datei custom.hal ein.

# Laden der Ladder
loadusr classicladder --nogui estop.clp

E/A-Zuweisungen

  • %I0 = Eingabe aus dem PyVCP-Panel simulierten Notaus (die Checkbox)

  • %I1 = Eingabe von LinuxCNC’s Notaus

  • %I2 = Eingang von LinuxCNC’s Notaus Reset Impuls

  • %I3 = Eingang von der PyVCP-Panel-Reset-Taste

  • %Q0 = Ausgabe an LinuxCNC zur Freigabe

  • %Q1 = Ausgang zum Freigabe-Pin der externen Treiberkarte (verwenden Sie einen N/C-Ausgang, wenn Ihre Karte einen Deaktivierungs-Pin hat)

Als nächstes fügen wir die folgenden Zeilen in die Datei custom_postgui.hal ein

# Beispiel für einen Notaus-Schalter mit PyVCP-Tasten zur Simulation externer Komponenten

# Der PyVCP-Checkbutton simuliert einen normalerweise geschlossenen externen Notaus-Schalter.
net ext-estop classicladder.0.in-00 <= pyvcp.py-estop

# Anforderung der Notaus-Freigabe von LinuxCNC
net estop-all-ok iocontrol.0.emc-enable-in <= classicladder.0.out-00

# Anforderung der E-Stop-Freigabe von PyVCP oder einer externen Quelle
net ext-estop-reset classicladder.0.in-03 <= pyvcp.py-reset

# Diese Zeile setzt den Notaus von LinuxCNC zurück.
net emc-reset-estop iocontrol.0.user-request-enable => classicladder.0.in-02

# Diese Zeile ermöglicht es LinuxCNC, den Notausschalter in ClassicLadder zu entriegeln.
net emc-estop iocontrol.0.user-enable-out => classicladder.0.in-01

# Diese Zeile schaltet den grünen Indikator ein, wenn der E-Stop beendet ist.
net estop-all-ok => pyvcp.py-es-status

Als nächstes fügen wir die folgenden Zeilen in die Datei panel.xml ein. Beachten Sie, dass Sie die Datei mit einem Texteditor öffnen müssen, nicht mit dem Standard-HTML-Viewer.

<pyvcp>
<vbox>
<label><text>"Notaus Demo"</text></label>
<led>
<halpin>"py-es-status"</halpin>
<size>50</size>
<on_color>"green"</on_color>
<off_color>"red"</off_color>
</led>
<checkbutton>
<halpin>"py-estop"</halpin>
<text>"Notaus"</text>
</checkbutton>
</vbox>
<button>
<halpin>"py-reset"</halpin>
<text>"Reset"</text>
</button>
</pyvcp>

Starten Sie nun Ihre Konfiguration und sie sollte so aussehen.

AXIS Notaus
Abbildung 4. AXIS Notaus

Beachten Sie, dass Sie in diesem Beispiel wie im wirklichen Leben den ferngesteuerten Notaus (simuliert durch das Kontrollkästchen) deaktivieren müssen, bevor der AXIS Notaus oder der externe Reset Sie in den AUS-Modus versetzt. Wenn der Not-Aus-Schalter auf dem AXIS-Bildschirm gedrückt wurde, müssen Sie ihn erneut drücken, um ihn zu deaktivieren. Nach einem Notaus in AXIS können Sie keinen externen Reset durchführen.

4. Beispiel für Timer/Bedienung

In diesem Beispiel verwenden wir den Operate-Block, um der Timer-Voreinstellung einen Wert zuzuweisen, der davon abhängt, ob ein Eingang ein- oder ausgeschaltet ist.

Beispiel für Timer/Bedienung
Abbildung 5. Beispiel für Timer/Bedienung

In diesem Fall ist %I0 wahr, so dass der voreingestellte Wert des Timers 10 ist. Wäre %I0 falsch, wäre der voreingestellte Zeitgeberwert 5.