30.03.2019 Testinstallation - Step by step auf einem Vanilla-System wget erste.de/ethraw/linCNC_eth.20190329_09.tgz (bzw. letzte aktuelle version) tar -xzvf linCNC_eth.20190329_09.tgz halcompile --compile ethraw.comp &&cp ethraw.so ........../linuxcnc.2.7.14.TEST/rtlib/ #Compiling realtime ethraw.c #Linking ethraw.so halcompile --compile ethsh.comp &&cp ethsh.so ........./linuxcnc.2.7.14.TEST/rtlib/ Compiling realtime ethsh.c Linking ethsh.so # kopieren in das rtlib-Verzeichnis cp ethraw.so ethsh.co /..path_to_linCNC-source..../linuxcnc.2.7.14.TEST/rtlib/ # compilieren vin pcIOethRaw.c # in diesem Fall ohne rtlib: //#define WITH_RT_SHMEM // we use RT-shmem gcc pcIOethRaw.c -o pcIOethRaw # starten von pcIOethRaw # Netzwerk-Device und UDP-Adresse ggf. anpassen. # letzteres nur, wenn ein UDP-Display benutzt wird sudo ./pcIOethRaw -i eno1 -r 01:02:03:04:05:06 -s 06:05:04:03:02:01 -k 12391 -u 192.168.0.242 -d 64 # linuxCNC starten linuxcnc INI/ethsh.type0.ini # wenn nun im linuxcnc manuell eine Achse verfahren wird, dann sollten die Positionen # per UDP versendet werden: # (sichtbar wg. "-d 64"-Parameter beim /pcIOethRaw-Aufruf) #Sending UDP socket: 6 port 666 floatkey:0 validfloatval: 1.112 lastfloatval: 1.112 #Sending UDP socket: 6 port 666 floatkey:0 validfloatval: 1.071 lastfloatval: 1.071 #Sending UDP socket: 6 port 666 floatkey:0 validfloatval: 1.071 lastfloatval: 1.071 # ebenfalls sichtbear sein sollten im tcpdump die RAW-eth-Pakete, die der Treiber beim # Verfahren der Achsen versendet: tcpdump -i eno1 -s 100 -n -x tcpdump -i eno1 -s 100 -n -x 13:59:28.743227 01:02:03:04:05:06 > 06:05:04:03:02:01 Null Information, send seq 0, rcv seq 0, Flags [Command], length 48 0x0000: 420d 0000 0000 0000 0000 2849 1740 9c0c 0x0010: 0000 0000 0000 0000 0000 0000 0000 0000 0x0020: 0000 0000 0000 0000 0000 0000 13:59:28.746648 01:02:03:04:05:06 Null > 06:05:04:03:02:01 SNA Information, send seq 0, rcv seq 0, Flags [Command], length 48 0x0000: 420d 0000 0000 0000 0000 2849 1740 9c0c 0x0010: 0000 0000 0000 0000 0000 0000 0000 0000 0x0020: 0000 0000 0000 0000 0000 0000 # Wenn statt "ethsh" (mit pcIOethRaw) der Treiber ethraw verwendet wird, dann ist # _kein_ pcIOethRaw erforderlich. Das Handling der Kommunikation regelt dann # der ethraw-Treiber selbst. linuxcnc INI/ethraw.type0.ini # Der tcpump sieht dann etwas anders aus, da der Treiber die zusaetzlich die # Postionsdaten mit in das RAW-Pakt einpackt: tcpdump -i eno1 -s 100 -n -x 14:02:02.098782 01:02:03:04:05:06 > 06:05:04:03:02:01 Null Information, send seq 0, rcv seq 0, Flags [Response], length 48 0x0000: 0000 0000 0000 0000 0200 0000 0000 0600 0x0010: 0000 0000 0000 0000 0000 0000 0000 0000 0x0020: 0000 0000 0000 0000 0000 0000 14:02:02.839895 01:02:03:04:05:06 > 06:05:04:03:02:01 Null Information, send seq 0, rcv seq 0, Flags [Command], length 48 0x0000: 0000 0000 0000 0000 0100 0000 0000 0700 0x0010: 0000 0000 0000 0000 0000 0000 0000 0000 0x0020: 0000 0000 0000 0000 0000 0000 # Nun zur Rapsberry-Seite. # Zunaechst ein "echtes" Raspberry (kein "Zero") zur Steuerung der Motoren. # Die Anschlussbelegung ist in GPIO.h definiert. # Compilieren des Treibers: gcc rasPIioEthRaw.c -o rasPIioEthRaw -lpthread -lbcm2835 # und starten: sudo ./rasPIioEthRaw -i eth0 -s 01:02:03:04:05:06 -r 06:05:04:03:02:01 -d 16 -u 192.168.0.241 # Durch "-d 16" werden alle eingehenden (passenden) Raw-Eth-Pakete angezeigt. # Beim Verfahren einer Achse sollte es so aussehen: # (nach dem Test den debug-Mode wieder deaktivieren nicht vergessen!) (kann das ding hier keine fixed-fonts?) Ethernet Header |-incomming source address : 01:02:03:04:05:06 |-expected source address : 01:02:03:04:05:06 |-incomming destination address: 06:05:04:03:02:01 |-expexted destination address : 06:05:04:03:02:01 |-type: 00 00 payload :04:00:00:00:00:0D size: 62 |-validoutval : 04:00:00:00:00:0D (from sender) sndrawcount: 34 |-validinval :0D:00:00:00:00:00 recrawcount: 0 |-validfloat key(05) : 0.0000 Ethernet Header |-incomming source address : 01:02:03:04:05:06 |-expected source address : 01:02:03:04:05:06 |-incomming destination address: 06:05:04:03:02:01 |-expexted destination address: 06:05:04:03:02:01 |-type: 00 00 payload : 00:00:00:00:00:0D size: 62 |-validoutval : 00:00:00:00:00:0D (from sender) sndrawcount: 35 |-validinval : 0D:00:00:00:00:00 recrawcount: 0 |-validfloat key(00) : 0.1437 #Wenn nun an den Pins 9 10 #A-Step 2 0 GPIO17 11 12 #A-Dir 3 2 GPIO27 13 14 # ein TA6600 mit STEP/und DIR und am Pin #Enable 1 7 GPIO4 7 (1==OFF) 8 # der TA6600-Enable angeschlossen wird, dann sollte sich beim manuellen Verfahren # der A-Achse der Motor drehen. # und ich dreh jetzt ne Runde mit dem Moped ;-) # Im naechsten Schitt folgt der Anschluss eines Drehwinkelgebers an diesen Motor. # Achja: wer schon ein LED-Matrix-Display mit dem 7219 gebastelt hat, der kann # das an ein Raspberry-zero anschliessen und die Ausgaben dort beobachten. #compilieren: gcc linCNC_max.c -o linCNC_max -lbcm2835 # und starten: ./linCNC_max