CNC mashina
CNC mashina
Az alap elképzelés még valamikor Mach3+TB6560 alapra épült volna, de azóta sok minden megváltozott, igy végeredményben egy LinuxCNC + MESA 7i96s vezérkártya lett a kiválasztott út.
Re: CNC mashina
Sokan kérdezik: "Ha a Linux ennyire stabil és profi, miért kell órákat tölteni a kernel tuningolásával, mielőtt egyáltalán megmozdulna a gép?" A válasz egyetlen szóban rejlik: Valós idő (Real-Time).
A hétköznapi operációs rendszereket (legyen az Windows vagy egy alap Linux disztribúció) az udvarias kiszolgálásra tervezték. Ha a processzor éppen egy háttérben futó frissítéssel vagy egy weboldal betöltésével van elfoglalva, a egérmutató mozgása vagy egy fájl mentése várhat pár ezredmásodpercet – észre sem veszed. Egy CNC gépnél azonban ez a pici késés végzetes. Ha a vezérlő nem kapja meg a pontos instrukciót az ezredmásodperc tört része alatt, a motor megbotlik, a szerszám eltörik, a munkadarab pedig mehet a selejtbe. Lesz szó a Jitter-szörnyről, Preempt-RT-ről, hardveres gátakról és sok minden másról. Végeredményben egy determinisztikus működés a cél, amikor nem az a lényeg, hogy gyors legyen, hanem hogy mindig ugyanannyi idő alatt történjenek a dolgok.
- Linux telepítése és első beavatkozások - Kezem ügyébe került egy kicsi kompakt, energiatakarékos de megbízható gépezet, egy Lenovo M700 tiny. Erre kerül fel egy Debian Bookworm disztribúció már eleve könnyitett XFCE grafikus felülettel(keresünk egy üres pendrive-ot, letöltünk egy Rufus nevű programot, mely bootolható eszközt varázsol a pendrive-ból, na meg kell majd a debian-12.13.0-amd64-netinst.iso, hálózati kábel, pendrive bedug, és indulhat is a buli).
- Adjunk a gépnek egyértelmű host-nevet, amig a HDD/SSD kisebb, mint 128GB, válasszuk a Guided - use entire disk opciót formázáskór.
- Software Selection-nél válasszuk ki az Xfce GNOME helyett, és adjuk hozzá az SSH server funkciót is. Itt jön egy kis technikai szünet, amig az OS összeszedi magát. Ha GNOME megis felmászott a rendszerre, akkor a következő parancs sorozattal javítható
Code: Egész kijelölése
sudo apt update sudo apt install xfce4 xfce4-goodies lightdm sudo apt purge gnome-shell gnome-session gdm3 sudo apt autoremove sudo reboot
- Ha a felhasználó valamilyen oknál fogva nem kerüld bele a SUDO csoportba, ezzel lehet korrigálni a problémát:
Code: Egész kijelölése
usermod -aG sudo [b]USER[/b]
- A /etc/apt/sources.list filet érdemes feltölteni a következő tartalommal:
és jöhet egy kis takarítás:
Code: Egész kijelölése
deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware deb http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmwareCode: Egész kijelölése
sudo apt clean sudo rm -rf /var/lib/apt/lists/* sudo apt update sudo apt install debian-archive-keyring -y sudo apt remove --purge libreoffice* firefox* thunderbird* sudo apt install debian-archive-keyring sudo apt --fix-broken install
- Én utálom, ha a NumLock nincs bekapcsolva, igy kicsit matatok rajta, nem szükséges
Code: Egész kijelölése
sudo apt install numlockx -y sudo nano /etc/lightdm/lightdm.conf [Seat:*] greeter-setup-script=/usr/bin/numlockx on
Re: CNC mashina
- SSH server, mert távoli kapcsolat kell:
ha további hangolást szeretnénk elvégezni az SSH serveren, ezt a következő file szerkesztésével elérhetjük:
Code: Egész kijelölése
sudo apt install openssh-server curl wget git sudo systemctl enable --now ssh sudo systemctl start ssh ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -N ""Code: Egész kijelölése
sudo nano /etc/ssh/sshd_config Port 2022 AllowTcpForwarding yes X11Forwarding yes PrintMotd no ClientAliveInterval 60 ClientAliveCountMax 3 AcceptEnv LANG LC_* Subsystem sftp /usr/lib/openssh/sftp-server
- Nézzük meg, hogy kell-e szív műtété végezni?
ha kimeneten valami olyasmi szerepel, hogy PREEMPT_DYNAMIC, és nem PREEMPT_RT, akkor bizony kernelt kell cserélni valós idejű jelfeldolgozáshoz.
Code: Egész kijelölése
uname -aEzzel ellesz egy darabigCode: Egész kijelölése
sudo apt install linux-image-rt-amd64 linux-headers-rt-amd64 -y sudo sudo update-grub sudo reboot
- Jöhet kicsit durvább takarítás - kinyírunk mindent, ami túl okos, vagy fölosleges.
Code: Egész kijelölése
sudo apt install rfkill -y sudo rfkill block wifi sudo rfkill block bluetooth sudo systemctl disable bluetooth sudo systemctl disable avahi-daemon.socket sudo systemctl disable avahi-daemon sudo systemctl mask avahi-daemon.socket avahi-daemon.service sudo systemctl stop ModemManager cups cups-browsed packagekit packagekit.service udisks2 upower.service smartmontools accounts-daemon.service wpa_supplicant.service sudo systemctl disable ModemManager cups cups-browsed packagekit packagekit.service udisks2 upower.service smartmontools accounts-daemon.service wpa_supplicant.service
- íés végül, kinyirjuk a virtuális memüriát is :)
Code: Egész kijelölése
sudo swapoff -a sudo nano /etc/fstab # ...swap
Re: CNC mashina
- Az nproc 4 szálat mutat, vagyis kettőt elkerítünk a LinuxCNC számára.
Mivel az ingadozásmentes működés fontos, kiiktattuk a managgert és max frekvencian fog porogni a CPU, ezért kicsit lejjebb veszem a maximumnál.
Code: Egész kijelölése
sudo nano /etc/default/grub GRUB_CMDLINE_LINUX_DEFAULT="quiet isolcpus=1,3 intel_pstate=disable" sudo update-grub sudo rebootCode: Egész kijelölése
sudo apt install linux-cpupower -y sudo cpupower frequency-set -u 3000MHz sudo cpupower frequency-set -g performance cpupower frequency-info
- Telepítsünk még pár hasznos dolgot:
Mivel én szét akarom választani a managament és a MESA kommunikációt, kicsit bonyolítom a helyzetet - ez a modul segít meg címkézni a csomagokat igy az L3 switch szeparálva fogja kezelni azokat, nem lesz fölösleges zaj a MESA csatornában
Code: Egész kijelölése
sudo apt install tmux htop ethtool net-tools sudo ethtool --set-eee eno1 eee off sudo ethtool -G eno1 rx 4096 tx 4096 sudo ethtool -C eno1 rx-usecs 0Code: Egész kijelölése
sudo apt install vlan sudo modprobe 8021q echo "8021q" | sudo tee -a /etc/modules
Re: CNC mashina
- Jöhet a LinuxCNC telepítése.
ha nyüglődik, akkor
Code: Egész kijelölése
sudo apt update sudo apt install linuxcnc-uspace linuxcnc-uspace-dev -yEzután jöhet latency test GUIból, nem SSH.Code: Egész kijelölése
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-key EF1B07FEE0EE6603 sudo add-apt-repository "deb http://linuxcnc.org/ bookworm base 2.9-uspace" sudo apt update sudo apt install linuxcnc-uspace -yÉs lás csodát - a Serov thread Max Jitter 16743ns ami még mindig 1ms alatt van. Jó lesz ez még valamire.Code: Egész kijelölése
latency-test
Re: CNC mashina
- Network Hardening - elveszem a NetworkManager munkáját is. Ezekkel óvatosan, hardware specifikusak
InterruptThrottleRate=0: Kikapcsolja a korlátozást (azonnali válasz).
Code: Egész kijelölése
sudo nano /etc/modprobe.d/e1000e.conf options e1000e InterruptThrottleRate=0,0,0,0 Copybreak=128 SmartPowerDownEnable=0
Copybreak=128: Kisebb csomagoknál elkerüli a felesleges memóriamásolást.
SmartPowerDownEnable=0: Tiltja a kártya elalvását.- Offload funkciók lelövése:
Code: Egész kijelölése
sudo ethtool -K eno1 gro off gso off tso off lro off
- Ethernet kártya konfigurálása:
Code: Egész kijelölése
sudo nano /etc/network/interfaces # Management interface auto eno1 iface eno1 inet static address 192.168.4.50 netmask 255.255.255.0 gateway 192.168.4.1 dns-nameservers 8.8.8.8 1.1.1.1 # MESA P2P interface (.120-.121) auto eno1.20 iface eno1.20 inet static address 192.168.1.122 netmask 255.255.255.252 sudo nano /etc/resolv.conf nameserver 1.1.1.1 nameserver 8.8.8.8
- Network Manager leállítása:
Code: Egész kijelölése
sudo nano /etc/NetworkManager/NetworkManager.conf [ifupdown] managed=false
- Offload funkciók lelövése:
- Sajnos a cpupower és az ethtool beállításai elszálnak, így egy indítási scriptbe égetem.
Ezt követően a kártya bután teszi a dolgát, de azt nagyon gyorsan.
Code: Egész kijelölése
sudo nano /etc/rc.local #CPU Tuning /usr/sbin/cpupower frequency-set -g performance /usr/sbin/cpupower frequency-set -u 3000MHz #NEtwork Tuning /usr/sbin/ethtool -s eno1 speed 1000 duplex full autoneg on /usr/sbin/ethtool --set-eee eno1 eee off /usr/sbin/ethtool -C eno1 rx-usecs 0 /usr/sbin/ethtool -K eno1 gro off gso off tso off lro off /usr/sbin/ethtool -s eno1 wol d # IPv6 tiltása /usr/sbin/sysctl -w net.ipv6.conf.all.disable_ipv6=1 exit 0 sudo chmod +x /etc/rc.local sudo reboot
- Még pár teszt, hogyan állt össze a rendszer.
Code: Egész kijelölése
ip addr nmcli device status 2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:23:24:bd:4e:fa brd ff:ff:ff:ff:ff:ff altname enp0s31f6 inet 192.168.4.50/24 brd 192.168.4.255 scope global eno1 valid_lft forever preferred_lft forever 3: eno1.20@eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 00:23:24:bd:4e:fa brd ff:ff:ff:ff:ff:ff inet 192.168.1.122/30 brd 192.168.1.123 scope global eno1.20 valid_lft forever preferred_lft forever [b]USER[/b]@CNCserver:~$ nmcli device status DEVICE TYPE STATE CONNECTION lo loopback connected (externally) lo eno1 ethernet unmanaged -- eno1.20 vlan unmanaged --
Re: CNC mashina
Code: Egész kijelölése
sudo apt install x11vnc
sudo x11vnc -storepasswd
sudo nano /etc/systemd/system/x11vnc.service
[Unit]
Description=VNC Server for LinuxCNC
After=display-manager.service
[Service]
Type=simple
User=root
Environment=DISPLAY=:0
ExecStart=/usr/bin/x11vnc -auth guess -display :0 -rfbport 5900 -forever -shared -noxdamage -repeat -rfbauth /home/<USER>/.v>
Restart=always
RestartSec=5
[Install]
WantedBy=graphical.target
Code: Egész kijelölése
sudo systemctl daemon-reload
sudo systemctl enable x11vnc.service
sudo systemctl start x11vnc.servicesudo systemctl restart x11vnc - Újraindítja a VNC-t a friss paraméterekkel.
sudo systemctl stop x11vnc - Leállítja a szervert.
journalctl -u x11vnc.service -f - Ez a legjobb barátod: valós időben "fűzi" a képernyőre a VNC logját (mint amit korábban másoltál nekem).
Debian cliensen:
Code: Egész kijelölése
sudo apt update
sudo install tigervnc-viewer
vncviewer -PreferredEncoding=Tight 192.168.4.50:5900Re: CNC mashina
hogy ezek mit nem találnak ki, hogy megkeserítsék az életemet ;)
BIOSban keressük meg a CPU beállítással kapcsolatos dolgokat. Pl.: Advanced -> CPU Configuration CPU -> Power Management Control oszt kapcsoljuk ki a következőket:
- Enhanced C-states
- C1E Suppor
- Intel SpeedStep
- Intel Turbo Boost
És végül, de nem utolsó sorban
Code: Egész kijelölése
systemctl status irqbalance
sudo systemctl stop irqbalance
sudo systemctl disable irqbalance
sudo apt-get purge irqbalance
Re: CNC mashina
Még pár alkatrész, és nekiállok a tápegység összerakásának. Saját "fejlesztés", meglátjuk, hogy mennyi füstöt sikerül megmenteni.
Re: CNC mashina
Eközben kiderült hogy elő kell vegyem a nyákkészítő tudásom is. Az is kiderült, hogy a jó régi Eagle tervező szoft be lett olvasztva a Fusion 360-ba. De van helyette egy másik KiKAD - teljesen jó kis nyáktervező program. Viszonylag könnyen el lehet sajátítani, mondjuk kell hozzé pár órányi oktató videó, de szépen legyártja a GRB és DRL fájlokat. Ennek örömére, úgy döntöttem, elkészítem én a nyáklapot kis 3018. gravírozóval. Ez a része mér kalandosabb volt, mert licenszért nem akartam fizetni de kicsit értelmesebb CAM programot kereste (Fusion-hez még nem értek, kicsit más világ az). Így futottam bele a FlatCAM programba, amely Béta, jó ideje nem fejlesztik, régi könyvtárakra épült, de FREE és tetszett, amit tud. Megszenvedtem vele, mert vannak benne bug-ok is, de végül használható lett. Zanzásítva leirom a általam választott best practice-t :
Code: Egész kijelölése
wget https://bitbucket.org/marius_stanciu/flatcam_beta/get/Beta_8.995.zip
unzip Beta_8.995.zip
mv marius_stanciu-flatcam_beta-* FlatCAM
rm Beta_8.995.zip
sudo apt update && sudo apt install -y \
python3-pip \
python3-venv \
libxcb-cursor0 \
libcairo2-dev \
libgeos-dev \
libgdal-dev \
gdal-bin \
git \
cd FlatCAM
# Virtuális környezet létrehozása 'fc_env' néven a mappaon belül
Code: Egész kijelölése
python3 -m venv fc_envCode: Egész kijelölése
source fc_env/bin/activate- #Belső Python függőségek telepítése és teszt futtatás
Code: Egész kijelölése
pip install --upgrade pip pip install gdal==3.6.2 pip install -r requirements.txt python3 FlatCAM.py
Code: Egész kijelölése
mkdir -p ~/.local/bin
nano ~/.local/bin/flatcam_launcher.sh
---------------------------------------------------------
#!/bin/bash
cd /home/[b]USER[/b]/FlatCAM
source /home/[b]USER[/b]/FlatCAM/fc_env/bin/activate
python3 FlatCAM.py
----------------------------------------------------------
chmod +x ~/.local/bin/flatcam_launcher.sh
Code: Egész kijelölése
nano ~/.local/share/applications/flatcam.desktop
----------------------------------------------------------
[Desktop Entry]
Version=1.0
Type=Application
Name=FlatCAM
Comment=PCB CNC Routing Software
Exec=/home/[b]USER[/b]/.local/bin/flatcam_launcher.sh
Icon=/home/[b]USER[/b]/FlatCAM/assets/resources/flatcam_icon16.png
Terminal=false
Categories=Engineering;CNC;Electronics;
Path=/home/[b]USER[/b]/FlatCAM
StartupNotify=true
----------------------------------------------------------
chmod +x ~/.local/share/applications/flatcam.desktop
update-desktop-database ~/.local/share/applications

