Inhaltsverzeichnis

CNC Ampel

Python Programm

ein kleines Python Programm stellt LinuxCNC-Pins zur Verfügung. Diese können mit Signalen verknüpft werden.
Diese Signale werden vom Python Programm via UDP zur Ampel übertragen und dort angezeigt.

ext_udp.py.zip

Das Python Programm kopiert man in einen beliebigen Ordner. Damit das Python Programm beim Start von LinuxCNC geladen wird, muss folgender Eintrag im HAL File gemacht werden:

loadusr ~/linuxcnc/myPython/ext_UDP.py

Der Pfad muss natürlich auf den tatsächlichen Pfad geändert werden.

HAL Verknüpfungen

das Python Programm bietet einige PINs an, welche mit Daten beschickt werden müssen:

Dazu legt man ein HAL File an mit folgendem Inhalt:

# send machine data to ext_UDP PINs
# XYZA-Position, absolute and relative (G54)
net km_xposabs halui.axis.x.pos-commanded => ext_UDP.in_x_abs
net km_yposabs halui.axis.y.pos-commanded => ext_UDP.in_y_abs
.... siehe Datei:

ext_udp.hal.zip

Diese neue HAL Datei muss natürlich im ini File angegeben werden damit sie geladen wird.

[HAL]\\
HALFILE = ext_UDP.hal

Hier werden einfach diverse Maschinen-Pins and die Pins des Pythonprogramm verknüpft. Ein paar davon sind speziell von meiner Maschine und können bei anderen Maschinen evt. andere Namen haben.

Funktionsprüfung

mit einem Netzwerkmonitor (am besten wireshark) beobachtet man den Nachrichtenverkehr im Heimnetz.

Sobald LinuxCNC gestartet wird, werden alle 250ms eine UDP Nachricht mit den Maschinendaten zu sehen sein. Diese ist als Broadcast Nachricht an alle adressiert, somit muss man sich um IP Adressen keine Gedanken machen und kann auch mehrere Zusatzgeräte (Ampeln usw) gleichzeitig betreiben. Wer lieber eine feste IP für seine Ampel benutzen will, kann im Pythonprogramm natürlich auch eine feste IP eintragen.