zwei kurze Scripte, ein Python Programm und das zugehörige HAL File, senden wichtige Maschinendaten ins lokale Netzwerk.
Das ist die Basis für alle hier vorgestellten Projekte, welche diese Daten im Netzwerk empfangen und dann entsprechend verarbeiten.
Viele Projekte sind damit möglich, wie:
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 zu den externen Geräten übertragen und dort angezeigt.
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.
das Python Programm bietet einige PINs an, welche mit Daten beschickt werden müssen:
Dazu legt man ein HAL File an mit folgendem Inhalt an:
# 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:
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.
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 externen Geräte benutzen will, kann im Pythonprogramm natürlich auch eine feste IP eintragen, oder auch an mehrere IPs senden.