CNC mashina

Gépkészítől, programozók ide
Avatar
fromi
Hozzászólások: 120
Csatlakozott: 2025 máj. 20, 02:48 pm
Tartózkodási hely: Érd

CNC mashina

Hozzászólás Szerző: fromi »

Hosszú volt ez a tél, és egy rég dédelgetett álmot próbálok megvalósítani: egy 15mm vastag habot marni/vágni képes gépet szerettem volna már rég a garázsba, de valahogy mindig jött a "majd", na de most sikerült végre megálmodni és digitálisan formát öltött.
a56e2dee-998e-4050-bdb2-17915a154b0c.jpg
- 3 tengely, 4 motor és masszív. Munkatér 1300x700x150mm.
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.
Avatar
fromi
Hozzászólások: 120
Csatlakozott: 2025 máj. 20, 02:48 pm
Tartózkodási hely: Érd

Re: CNC mashina

Hozzászólás Szerző: fromi »

Linux nyűgök, és azok orvoslása vagy másképpen szólva Miért nem elég a "gyári" rendszer a CNC-hez?
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:

      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-firmware
      és jöhet egy kis takarítás:

      Code: 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
      
Utoljára szerkesztette: fromi, ekkor: 2026 máj. 20, 02:58 pm, összesen 1 alkalommal szerkesztve.
Avatar
fromi
Hozzászólások: 120
Csatlakozott: 2025 máj. 20, 02:48 pm
Tartózkodási hely: Érd

Re: CNC mashina

Hozzászólás Szerző: fromi »

Egy kis pihenő és lehet folytatni a finomhangolást
  • SSH server, mert távoli kapcsolat kell:

    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 ""
    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 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?

    Code: Egész kijelölése

    uname -a
    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

    sudo apt install linux-image-rt-amd64 linux-headers-rt-amd64 -y
    sudo sudo update-grub
    sudo reboot
    
    Ezzel ellesz egy darabig
  • 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
Avatar
fromi
Hozzászólások: 120
Csatlakozott: 2025 máj. 20, 02:48 pm
Tartózkodási hely: Érd

Re: CNC mashina

Hozzászólás Szerző: fromi »

Van még pár apróság, amit le lehetne tiltani, de egyenlőre maradjon, majd a Latency Test megmutatja, hogy állunk, inkább matassunk egy kicsit a CPU környékén.
  • Az nproc 4 szálat mutat, vagyis kettőt elkerítünk a LinuxCNC számára.

    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 reboot
    
    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 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:

    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 0
    
    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 vlan
    sudo modprobe 8021q
    echo "8021q" | sudo tee -a /etc/modules
Utoljára szerkesztette: fromi, ekkor: 2026 ápr. 13, 03:04 pm, összesen 2 alkalommal szerkesztve.
Avatar
fromi
Hozzászólások: 120
Csatlakozott: 2025 máj. 20, 02:48 pm
Tartózkodási hely: Érd

Re: CNC mashina

Hozzászólás Szerző: fromi »

  • Jöhet a LinuxCNC telepítése.

    Code: Egész kijelölése

    sudo apt update
    sudo apt install linuxcnc-uspace linuxcnc-uspace-dev -y
    ha nyüglődik, akkor

    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
    
    Ezután jöhet latency test GUIból, nem SSH.

    Code: Egész kijelölése

    latency-test
    És lás csodát - a Serov thread Max Jitter 16743ns ami még mindig 1ms alatt van. Jó lesz ez még valamire.
Utoljára szerkesztette: fromi, ekkor: 2026 ápr. 13, 01:24 pm, összesen 1 alkalommal szerkesztve.
Avatar
fromi
Hozzászólások: 120
Csatlakozott: 2025 máj. 20, 02:48 pm
Tartózkodási hely: Érd

Re: CNC mashina

Hozzászólás Szerző: fromi »

  • Network Hardening - elveszem a NetworkManager munkáját is. Ezekkel óvatosan, hardware specifikusak

    Code: Egész kijelölése

    sudo nano /etc/modprobe.d/e1000e.conf
    	options e1000e InterruptThrottleRate=0,0,0,0 Copybreak=128 SmartPowerDownEnable=0
    InterruptThrottleRate=0: Kikapcsolja a korlátozást (azonnali válasz).
    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
  • Sajnos a cpupower és az ethtool beállításai elszálnak, így egy indítási scriptbe égetem.

    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
    
    Ezt követően a kártya bután teszi a dolgát, de azt nagyon gyorsan.
  • 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               --
    
Ezt akartam látni, nézzük a taskset -c 1,3 latency-test eredményét ....... - 3860ns, - egy kis kiszuperált energiatakarékos jószágtól már túl jó :)
Utoljára szerkesztette: fromi, ekkor: 2026 máj. 20, 02:58 pm, összesen 2 alkalommal szerkesztve.
Avatar
fromi
Hozzászólások: 120
Csatlakozott: 2025 máj. 20, 02:48 pm
Tartózkodási hely: Érd

Re: CNC mashina

Hozzászólás Szerző: fromi »

VNC telepítése, konfigurálása, mert miért ne lehetne távolról követni a munkafolyamatot.

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
   
Már csak aktiválni kell

Code: Egész kijelölése

sudo systemctl daemon-reload
sudo systemctl enable x11vnc.service
sudo systemctl start x11vnc.service
Ha meg valami baj lenne:
sudo 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:5900
És ami a legfontosabb, hogy meg full color VNC session mellett is a Latency nem haladja meg a 25K nano-szekundumot, ami még teljesen biztonságos zóna.
Avatar
fromi
Hozzászólások: 120
Csatlakozott: 2025 máj. 20, 02:48 pm
Tartózkodási hely: Érd

Re: CNC mashina

Hozzászólás Szerző: fromi »

BIOS
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
Ha a BIOS-ban nem találsz minden opciót, a Debianban a kernel paramétereknél is kikényszerítheted: a /etc/default/grub fájlban a GRUB_CMDLINE_LINUX_DEFAULT sorhoz add hozzá az intel_idle.max_cstate=0 processor.max_cstate=0 idle=poll paramétereket, majd futtasd a sudo update-grub parancsot.
É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
Avatar
fromi
Hozzászólások: 120
Csatlakozott: 2025 máj. 20, 02:48 pm
Tartózkodási hely: Érd

Re: CNC mashina

Hozzászólás Szerző: fromi »

Ahogy haladok előre a projekttel, úgy egyre nagyobb kéne legyen a rend, de nálam csak nő a káosz, és lassan az alkatrészek ellepik az asztalfelületet.
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.
IMG_20260506_071731_HDR.jpg
CNC_PSU_Final.png
Utoljára szerkesztette: fromi, ekkor: 2026 jún. 07, 08:01 pm, összesen 3 alkalommal szerkesztve.
Avatar
fromi
Hozzászólások: 120
Csatlakozott: 2025 máj. 20, 02:48 pm
Tartózkodási hely: Érd

Re: CNC mashina

Hozzászólás Szerző: fromi »

elkészült a lágy indító, és lassan szállingóznak az alkatrészek a helyükre.
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
Ezzel megvan a Python3 + FlatCAM kódja, jöhet a futtatási környezet kialakítása:

# 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_env
# A környezet aktiválása (ezt minden indítás előtt meg kell tenni)

Code: Egész kijelölése

source fc_env/bin/activate
(fc_env)
  • #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
És ha már indul, jöhet a kényelmi funkció - Indító ikon

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
és még

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
Hozzászól

Vissza: