Serdecznie dziękuje za garść informacji, na pewno wykorzystam w przyszłości a innym pozwolą bardziej zoptymalizować swoje instalacje. Tak jak nadmieniłem nie jestem specjalistą nt. linuxcnc i w ogóle linuxa dzięki linuxcnc zbudowałem sobie eksperymentalną maszynę na servo sterowaną po ethercat.
pozdrawiam
Znaleziono 2 wyniki
- 29 lip 2022, 19:59
- Forum: LinuxCNC (dawniej EMC2)
- Temat: Krok po kroku - Instalacja Debian 11 + Linuxcnc 2.9.0~pre + ethercat-master + etercat-driver (lcec)
- Odpowiedzi: 7
- Odsłony: 3009
- 27 lip 2022, 19:16
- Forum: LinuxCNC (dawniej EMC2)
- Temat: Krok po kroku - Instalacja Debian 11 + Linuxcnc 2.9.0~pre + ethercat-master + etercat-driver (lcec)
- Odpowiedzi: 7
- Odsłony: 3009
Krok po kroku - Instalacja Debian 11 + Linuxcnc 2.9.0~pre + ethercat-master + etercat-driver (lcec)
Witam Wszystkich,
Przedstawiam tutorial na podstawie którego chętni będą w stanie samodzielnie zbudować sobie sterowanie urządzeń/maszyn cnc z wykorzystaniem sieci ethercat.
Zaczynamy:
Instalacja Linuxcnc 2.9.0~pre oraz ethercat master i sterowników urządzeń ethercat opracowanych przez S. Ittner’a (lcec) dla systemu Debian 11.
Ta procedura dotyczy kompilacji Linuxcnc 2.9.0~pre bez dokumentacji - nie kompiluje się bezbłędnie (na razie)
Niektóre linki stron z których korzystałem:
https://forum.linuxcnc.org/ethercat/453 ... ep-by-step
https://github.com/grotius-cnc?tab=repositories
w opisie zamieszczam przykładowe komunikatów z systemu - tak dla większej orientacji osób równie słabo orientujących się w linuxie jak ja.
Instalacja linux debian:
I. Ze strony debiana pobieramy wersję sieciową systemu debian.
II. Nagrywamy bootowalnego pendriva z systemem Debian 11 (najnowsza wersja) Bullseye.
III. Uruchamiamy system z pendriva i rozpoczynamy instalację:
1. wybieramy instalację systemu (opis poniżej dotyczy nie graficznej wersji instalatora)
2. język użytkownika (polski)
3. lokalizację (Polska)
4. układ klawiatury (polski)
5. wybieramy kartę sieciową do połączenia z internetem (ja mam zabud. dwie karty sieciowe)
(jedna do połączenia z internetem druga do sterowania ethercat)
6. nazwa hosta (pozostawiamy zaproponowaną przez system mk-linuxcnc => Dalej
7. nazwa domeny (CNC) => Dalej
8. hasło administratora (POMIJAMY) => Dalej
9. potwierdzenie hasła dla konta administratora => Dalej
10. pełna nazwa użytkownika (m.. k..)
11. nazwa konta (mirkos) => Dalej
12. hasło użytkownika (xxxxxxx) => Dalej
13. potwierdź hasło (xxxxxxx) => Dalej
14. sposób partycjonowania (cały dysk) = Dalej
15. wybierz dysk => Dalej
16. metoda partycjonowania (wszystko na jednej partycji) =Dalej
17. zakończ partycjonowanie i zapisz => ENTER
18. zapisać zmiany na dyskach (TAK) => ENTER
19. kraj serwera lustrzanego (Polska) => ENTER
20. serwer lustrzany (deb.debian.org) => ENTER
21. dane serwera pośredniczącego (nic nie wpisujemy) => Dalej
22. chcesz wziąć udział w konkursie (NIE) => ENTER
23. wybierz oprogramowanie (gnome, xfce, mate, cynamon oznacz gwiazdą – spacją) = Dalej
24. zainstalować grub (TAK) => ENTER
25. urządzenie do instalacji grub (wybieramy nasz dysk HDD) => ENTER
26. instalacja zakończona (wyciągany pendrive) => Dalej
Uruchamia się debian 11 byllseye z GUI jaki sobie wybraliśmy (testowane dla gnome, xfce).
Instalujemy jądro sytemu real time (-rt) - PREEMT-RT:
I. uruchamiamy jako administrator program synaptic
mirkos@mk-linuxcnc:~$ sudo synaptic
w zakładce działy zaznaczamy „Jądro i moduły” i w oknie pakietów wybieramy do instalacji ostatnie wersje modułów „linux-image” i „linux-headers” zawierających przyrostek”-rt” – w moim przypadku były to:
linux-headers-5.10.0-16-common-rt
linux-headers-5.10.0-16-rt-amd64
linux-headers-rt-amd64
linux-image-5.10.0-16-rt-amd64
linux-image-rt-amd64
pozostałe które w synaptic zaznaczone są jako zainstalowane odznaczamy do usunięcia. W trakcie instalacji pakietów jądra systemu odznaczamy buton (ma być pusty) zapobiegający odinstalowaniu pracującego obecnie jądra systemu.
II. Zamykamy program synaptic i restartujemy komputer
mirkos@mk-linuxcnc:~$ sudo reboot
III. sprawdzamy działającą wersję jądra systemy:
mirkos@mk-linuxcnc:~$ uname -a
Linux mk-linuxcnc 5.10.0-16-rt-amd64 #1 SMP PREEMPT_RT Debian 5.10.127-1 (2022-06-30) x86_64 GNU/Linux
wynik powinien wyglądać podobnie do powyższego: 5.10.0-16-rt-amd64 (-rt real time)
Można oczywiście w/w procedurę podzielić na dwa etapy i najpierw zainstalować nowe pakiety jądra systemy oznaczone z literami -rt i po restarcie komputera odinstalować niepotrzebne jądra systemy. Jak dotychczas bez problemów udawało mi się to jednocześnie zrobić.
Budujemy pakiety instalacyjne linuxcnc *deb:
mirkos@mk-linuxcnc:~$ sudo apt-get install git geany dpkg-dev
mirkos@mk-linuxcnc:~$ git clone https://github.com/LinuxCNC/linuxcnc.git linuxcnc-dev
mirkos@mk-linuxcnc:~$ cd linuxcnc-dev/debian
mirkos@mk-linuxcnc:~/linuxcnc-dev/debian$ ./configure uspace no-docs
uspace is accepted for compatibility, but ignored
successfully configured for 'uspace-Debian-11'..
mirkos@mk-linuxcnc:~/linuxcnc-dev/debian$ cd ..
mirkos@mk-linuxcnc:~/linuxcnc-dev$ dpkg-checkbuilddeps
dpkg-checkbuilddeps: błąd: Unmet build dependencies: debhelper-compat (= 13) dh-python libudev-dev autoconf automake bwidget (>= 1.7) gettext intltool libboost-python-dev libepoxy-dev libgl1-mesa-dev | libgl1-mesa-swx11-dev libglu1-mesa-dev libgtk2.0-dev libgtk-3-dev libmodbus-dev (>= 3.0) libeditreadline-dev libusb-1.0-0-dev libxmu-dev po4a python3-dev python3-tk python3-xlib tcl8.6-dev tclx tk8.6-dev yapps2
zamiast w/w brakujących bibliotek zainstaluje poniższe wcześniej wykorzystywane zbiory bibliotek służących do kompilacji linuxcnc zawierających pliki dokumentacji jak również pliki służące do prawidłowego wyświetlania GUI programu Linuxcnc – dla kart graficznych Intel.
libgl1-mesa-swx11-dev – podobno jest przestarzały, bez niego zainstalowany system linuxcnc 2.9.0~pre również działa prawidłowo.
mirkos@mk-linuxcnc:~/linuxcnc-dev$ sudo apt-get install -y debhelper-compat debhelper dh-python libudev-dev autoconf automake tcl8.6-dev tk8.6-dev libeditreadline-dev libusb-1.0-0-dev bwidget tclx libeditreadline-dev asciidoc dblatex docbook-xsl dvipng ghostscript graphviz groff imagemagick inkscape python3-lxml source-highlight w3c-linkchecker xsltproc texlive-extra-utils texlive-font-utils texlive-fonts-recommended texlive-lang-cyrillic texlive-lang-french texlive-lang-german texlive-lang-polish texlive-lang-spanish texlive-latex-recommended asciidoc-dblatex python3-dev python3-tk libxmu-dev libglu1-mesa-dev libgl1-mesa-dev libgtk2.0-dev libgtk-3-dev gettext intltool libboost-python-dev libmodbus-dev libusb-1.0-0-dev psmisc yapps2 libepoxy-dev python3-xlib python3-pyqt5 python3-dbus.mainloop.pyqt5 python3-pyqt5.qtopengl python3-pyqt5.qsci python3-pyqt5.qtmultimedia python3-pyqt5.qtquick qml-module-qtquick-controls gstreamer1.0-plugins-bad libqt5multimedia5-plugins pyqt5-dev-tools python3-dev python3-setuptools python3-wheel python3-pip python3-yapps dpkg-dev python3-serial libtk-img qttools5-dev qttools5-dev-tools python3-wheel espeak espeak-data espeak-ng freeglut3 gdal-data gstreamer1.0-tools libaec0 libarmadillo10 libarpack2 libcfitsio9 libcharls2 libdap27 libdapclient6v5 libepsilon1 libespeak1 libfreexl1 libfyba0 libgdal28 libgdcm3.0 libgeos-3.9.0 libgeos-c1v5 libgeotiff5 libgif7 libglew2.1 libgtksourceview-3.0-dev libhdf4-0-alt libhdf5-103-1 libhdf5-hl-100 libimagequant0 libkmlbase1 libkmldom1 libkmlengine1 liblept5 libmariadb3 libminizip1 libnetcdf18 libodbc1 libogdi4.1 libopencv-calib3d4.5 libopencv-contrib4.5 libopencv-core4.5 libopencv-dnn4.5 libopencv-features2d4.5 libopencv-flann4.5 libopencv-highgui4.5 libopencv-imgcodecs4.5 libopencv-imgproc4.5 libopencv-ml4.5 libopencv-objdetect4.5 libopencv-photo4.5 libopencv-shape4.5 libopencv-stitching4.5 libopencv-video4.5 libopencv-videoio4.5 libportaudio2 libpq5 libproj19 libprotobuf23 libqhull8.0 librttopo1 libsocket++1 libspatialite7 libsuperlu5 libsz2 libtbb2 libtesseract4 liburiparser1 libxerces-c3.2 libxml2-dev mariadb-common mesa-utils mysql-common odbcinst odbcinst1debian2 proj-bin proj-data python3-configobj python3-espeak python3-gi-cairo python3-olefile python3-opencv python3-opengl python3-pil python3-pil.imagetk python3-pyqt5.qtsvg python3-pyqt5.qtwebkit tcl-tclreadline geotiff-bin gdal-bin glew-utils libgtksourceview-3.0-doc libhdf4-doc libhdf4-alt-dev hdf4-tools odbc-postgresql tdsodbc ogdi-bin python-configobj-doc libgle3 python-pil-doc python3-pil-dbg python3-pil.imagetk-dbg python3-sqlalchemy netcat po4a
sprawdzenie jeszcze raz czy wszystkie pakiety zależne zostały zainstalowane:
mirkos@mk-linuxcnc:~/linuxcnc-dev$ dpkg-checkbuilddeps
mirkos@mk-linuxcnc:~/linuxcnc-dev$ cd src/hal
mirkos@mk-linuxcnc:~/linuxcnc-dev/src/hal$ geany hal_priv.h
zamieniamy wartość HAL_STACKSIZE i sprawdzamy HAL_SIZE
#define HAL_STACKSIZE 16384 /* realtime task stacksize */
na
#define HAL_STACKSIZE 32768 /* realtime task stacksize */
oraz
#define HAL_SIZE (256*4096)
sprawdzamy czy jest co najmniej (170*4096) – jeżeli więcej pozostawiamy bez zmian.
zapisujemy zmiany i zamykamy geany
mirkos@mk-linuxcnc:~/linuxcnc-dev/src/hal$ cd ..
mirkos@mk-linuxcnc:~/linuxcnc-dev/src$ cd ..
mirkos@mk-linuxcnc:~/linuxcnc-dev$ dpkg-buildpackage -b -uc
mirkos@mk-linuxcnc:~/linuxcnc-dev$ cd ..
mirkos@mk-linuxcnc:~$ ls
Dokumenty Pobrane Publiczny Pulpit Muzyka Obrazy Wideo Szablony
linuxcnc-dev
linuxcnc-ethercat
linuxcnc-uspace_2.9.0~pre0_amd64.deb
linuxcnc-uspace-dbgsym_2.9.0~pre0_amd64.deb
linuxcnc-uspace-dev_2.9.0~pre0_amd64.deb
linuxcnc_2.9.0~pre0_amd64.changes
linuxcnc_2.9.0~pre0_amd64.buildinfo
utworzone zostały pakiety instalacyjne linuxcnc (pogrubiona czcionka) i inne których nie wykorzystamy.
mirkos@mk-linuxcnc:~$ sudo dpkg -i linuxcnc-uspace_2.9.0~pre0_amd64.deb
[sudo] hasło użytkownika mirkos:
Wybieranie wcześniej niewybranego pakietu linuxcnc-uspace.
(Odczytywanie bazy danych ... 262550 plików i katalogów obecnie zainstalowanych.)
Przygotowywanie do rozpakowania pakietu linuxcnc-uspace_2.9.0~pre0_amd64.deb ...
Rozpakowywanie pakietu linuxcnc-uspace (1:2.9.0~pre0) ...
Konfigurowanie pakietu linuxcnc-uspace (1:2.9.0~pre0) ...
Przetwarzanie wyzwalaczy pakietu libc-bin (2.31-13+deb11u3)...
Przetwarzanie wyzwalaczy pakietu gnome-menus (3.36.0-1)...
Przetwarzanie wyzwalaczy pakietu desktop-file-utils (0.26-1)...
Przetwarzanie wyzwalaczy pakietu mailcap (3.69)...
Przetwarzanie wyzwalaczy pakietu hicolor-icon-theme (0.17-2)...
Przetwarzanie wyzwalaczy pakietu man-db (2.9.4-2)...
Przetwarzanie wyzwalaczy pakietu shared-mime-info (2.0-1)...
mirkos@mk-linuxcnc:~$ sudo apt-get --fix-broken install
Czytanie list pakietów... Gotowe
Budowanie drzewa zależności... Gotowe
Odczyt informacji o stanie... Gotowe
0 aktualizowanych, 0 nowo instalowanych, 0 usuwanych i 0 nieaktualizowanych.
mirkos@mk-linuxcnc:~$ sudo dpkg -i linuxcnc-uspace-dev_2.9.0~pre0_amd64.deb
Wybieranie wcześniej niewybranego pakietu linuxcnc-uspace-dev.
(Odczytywanie bazy danych ... 266857 plików i katalogów obecnie zainstalowanych.)
Przygotowywanie do rozpakowania pakietu linuxcnc-uspace-dev_2.9.0~pre0_amd64.deb ...
Rozpakowywanie pakietu linuxcnc-uspace-dev (1:2.9.0~pre0) ...
Konfigurowanie pakietu linuxcnc-uspace-dev (1:2.9.0~pre0) ...
Przetwarzanie wyzwalaczy pakietu man-db (2.9.4-2)...
mirkos@mk-linuxcnc:~$ halcmd status
HAL locking status:
current lock value 0 (00)
HAL_LOCK_NONE - nothing is locked
HAL memory status
used/total shared memory: 400/1048576
active/recycled components: 1/0
active/recycled pins: 0/0
active/recycled parameters: 0/0
active/recycled aliases: 0/0
active/recycled signals: 0/0
active/recycled functions: 0/0
active/recycled threads: 0/0
mirkos@mk-linuxcnc:~$ linuxcnc
LINUXCNC - 2.9.0~pre0
Machine configuration directory is '/home/mirkos/linuxcnc/configs/sim.axis'
Machine configuration file is 'axis_mm.ini'
Starting LinuxCNC...
linuxcnc TPMOD=tpmod HOMEMOD=homemod EMCMOT=motmod
Note: Using POSIX realtime
Found file(lib): /usr/share/linuxcnc/hallib/core_sim.hal
Found file(lib): /usr/share/linuxcnc/hallib/sim_spindle_encoder.hal
Found file(lib): /usr/share/linuxcnc/hallib/axis_manualtoolchange.hal
Found file(lib): /usr/share/linuxcnc/hallib/simulated_home.hal
link (updating variable file): Nie ma takiego pliku ani katalogu
No option 'tto_g11' in section: 'DEFAULT'
No option 'show_program' in section: 'DEFAULT'
No option 'show_rapids' in section: 'DEFAULT'
No option 'program_alpha' in section: 'DEFAULT'
No option 'show_live_plot' in section: 'DEFAULT'
No option 'show_tool' in section: 'DEFAULT'
No option 'show_extents' in section: 'DEFAULT'
No option 'show_offsets' in section: 'DEFAULT'
No option 'grid_size' in section: 'DEFAULT'
No option 'show_machine_limits' in section: 'DEFAULT'
No option 'show_machine_speed' in section: 'DEFAULT'
No option 'show_distance_to_go' in section: 'DEFAULT'
No option 'dro_large_font' in section: 'DEFAULT'
No option 'block_delete' in section: 'DEFAULT'
No option 'optional_stop' in section: 'DEFAULT'
note: MAXV max: 53.340 units/sec 3200.400 units/min
note: LJOG max: 53.340 units/sec 3200.400 units/min
note: LJOG default: 30.480 units/sec 1828.800 units/min
note: jog_order='XYZ'
note: jog_invert=set()
URUCHOMIŁ SIĘ GUI LINUXCNC
Po zamknięciu GUI LINUXCNC
task: main loop took 0.010016 seconds
task: main loop took 0.013675 seconds
task: main loop took 0.013883 seconds
task: main loop took 0.107338 seconds
task: main loop took 0.023352 seconds
task: main loop took 0.036037 seconds
task: main loop took 0.090500 seconds
task: main loop took 0.065163 seconds
task: main loop took 0.100858 seconds
task: main loop took 0.015104 seconds
Shutting down and cleaning up LinuxCNC...
task: 84431 cycles, min=0.000010, max=0.107338, avg=0.001063, 10 latency excursions (> 10x expected cycle time of 0.001000s)
Note: Using POSIX realtime
ETHERCAT MASTER
mirkos@mk-linuxcnc:~$ sudo apt install curl
mirkos@mk-linuxcnc:~$ sudo geany /etc/apt/sources.list
Wklej poniższy link do pliku:
deb [allow-insecure=yes] https://download.opensuse.org/repositor ... Debian_10/ ./
Zapisz i zamknij geany
mirkos@mk-linuxcnc:~$ sudo apt update
mirkos@mk-linuxcnc:~$ KEYRING=/usr/share/keyrings/ethercat.gpg
mirkos@mk-linuxcnc:~$ curl -fsSL https://download.opensuse.org/repositor ... elease.key | gpg --dearmor | sudo tee "$KEYRING" >/dev/
mirkos@mk-linuxcnc:~$ sudo apt-get install ethercat-dkms libethercat libethercat-dev ethercat-master
mirkos@mk-linuxcnc:~$ ip a
mirkos@mk-linuxcnc:~$ sudo geany /etc/ethercat.conf
Zapisujemy MAC adres karty sieciowej której użyjemy do sterownia urządzń po ethercat
w pliku dla urządzenia Master0 device wpisz zapisany numer MAC a dla device modules wpisz generic.
MASTER0_DEVICE="xx:aa:yy:zz:bb:cc"
DEVICE_MODULES="generic"
zapisz i zamknij geany, uruchom sterowanie ethercat.
mirkos@mk-linuxcnc:~$ sudo systemctl enable ethercat.service
Created symlink /etc/systemd/system/multi-user.target.wants/ethercat.service → /lib/systemd/system/ethercat.service.
mirkos@mk-linuxcnc:~$ sudo systemctl start ethercat.service
mirkos@mk-linuxcnc:~$ sudo systemctl status ethercat.service
● ethercat.service - EtherCAT Master Kernel Modules
Loaded: loaded (/lib/systemd/system/ethercat.service; enabled; vendor pres>
Active: active (exited) since Sun 2022-07-24 07:50:49 CEST; 30s ago
Process: 6115 ExecStart=/usr/sbin/ethercatctl start (code=exited, status=0/>
Main PID: 6115 (code=exited, status=0/SUCCESS)
CPU: 22ms
lip 24 07:50:49 mk-linuxcnc systemd[1]: Starting EtherCAT Master Kernel Modules>
lip 24 07:50:49 mk-linuxcnc systemd[1]: Finished EtherCAT Master Kernel Modules.
mirkos@mk-linuxcnc:~$ sudo chmod 666 /dev/EtherCAT0
Podłączy urządzenia do sieci ETHERCAT (modem komputera i ethercat-coupler)
mirkos@mk-linuxcnc:~$ ethercat slaves
0 0:0 PREOP + ProNet
1 0:1 PREOP + EK1100 EtherCAT-Koppler (2A E-Bus)
2 0:2 PREOP + EL1008 8K. Dig. Eingang 24V, 3ms
3 0:3 PREOP + EL2008 8K. Dig. Ausgang 24V, 0.5A
4 0:4 PREOP + EL4001 1K. Ana. Ausgang 0-10V, 12bit
Wykaz urządzeń podłączonych do mojej sieci ethercat: napęd servo estun PorNet, ethercat-coppler, 8-wejść cyfrowych, 8-wyjść cyfrowych, analogowe wyjście 0-10V 12bit.
Pliki typu xml, ini, hal i można sobie edytować w zależności od potrzeb.
ETHERCAT DRIVER
Zainstalowałem sterowniki (lcec) udostępnione przez p. S. Ittner’a ponieważ od kilku lat ich używam i zamierzam zmienić sterownie na na swojej maszynie testowej na linuxcnc 2.9.
mirkos@mk-linuxcnc:~$ sudo apt-get install expat libexpat1 libexpat1-dev
mirkos@mk-linuxcnc:~$ git clone https://github.com/grotius-cnc/linuxcnc-ethercat.git
mirkos@mk-linuxcnc:~$ cd linuxcnc-ethercat
edytować plik configure.mk – ustawić ścieżkę do pliku halcompile
mirkos@mk-linuxcnc:~/linuxcnc-ethercat$ geany configure.mk
COMP=/usr/bin/halcompile
zapisz i zamknij edytor geany
mirkos@mk-linuxcnc:~/linuxcnc-ethercat$ cd src
mirkos@mk-linuxcnc:~/linuxcnc-ethercat/src$ geany lcec_main.c
dodajemy nowy wpis #include „rtapi_mutex.h” poniżej istniejącego wpisu „rtapi_app.h”
po -j wpisujemy ilość rdzeni procesora lub samo make (w moim przypadku dual core)
mirkos@mk-linuxcnc:~/linuxcnc-ethercat/src$ make -j2
Makefile:10: uwaga: polecenia zakrywające dla obiektu 'install'
/usr/share/linuxcnc/Makefile.modinc:105: uwaga: ignoruję stare polecenia dla obiektu 'install'
COMP = /usr/bin/halcompile
MODINC = /usr/share/linuxcnc/Makefile.modinc
mirkos@mk-linuxcnc:~/linuxcnc-ethercat/src$ cd ..
mirkos@mk-linuxcnc:~/linuxcnc-ethercat$ sudo make install
[sudo] hasło użytkownika mirkos:
make[1]: Wejście do katalogu '/home/mirkos/linuxcnc-ethercat/src'
Makefile:10: uwaga: polecenia zakrywające dla obiektu 'install'
/usr/share/linuxcnc/Makefile.modinc:105: uwaga: ignoruję stare polecenia dla obiektu 'install'
mkdir -p /usr/lib/linuxcnc/modules
make[2]: Wejście do katalogu '/home/mirkos/linuxcnc-ethercat/src'
user.mk:15: uwaga: polecenia zakrywające dla obiektu 'install'
/usr/share/linuxcnc/Makefile.modinc:105: uwaga: ignoruję stare polecenia dla obiektu 'install'
gcc -o lcec_conf.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -URTAPI -U__MODULE__ -DULAPI -Os -c lcec_conf.c
gcc -o lcec_conf_util.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -URTAPI -U__MODULE__ -DULAPI -Os -c lcec_conf_util.c
gcc -o lcec_conf_icmds.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -URTAPI -U__MODULE__ -DULAPI -Os -c lcec_conf_icmds.c
gcc -o lcec_conf lcec_conf.o lcec_conf_util.o lcec_conf_icmds.o -Wl,-rpath,/lib -L/lib -llinuxcnchal -lexpat
mkdir -p /usr/bin
cp lcec_conf /usr/bin/
make[2]: Opuszczenie katalogu '/home/mirkos/linuxcnc-ethercat/src'
make[2]: Wejście do katalogu '/home/mirkos/linuxcnc-ethercat/src'
realtime.mk:47: uwaga: polecenia zakrywające dla obiektu 'install'
/usr/share/linuxcnc/Makefile.modinc:105: uwaga: ignoruję stare polecenia dla obiektu 'install'
gcc -o lcec_main.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_main.c
gcc -o lcec_class_enc.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_class_enc.c
gcc -o lcec_generic.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_generic.c
gcc -o lcec_ax5200.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_ax5200.c
gcc -o lcec_el1xxx.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el1xxx.c
gcc -o lcec_el1252.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el1252.c
gcc -o lcec_el1859.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el1859.c
gcc -o lcec_el2521.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el2521.c
gcc -o lcec_el2xxx.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el2xxx.c
gcc -o lcec_el2202.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el2202.c
gcc -o lcec_el31x2.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el31x2.c
gcc -o lcec_el31x4.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el31x4.c
gcc -o lcec_el3255.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el3255.c
gcc -o lcec_el40x1.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el40x1.c
gcc -o lcec_el40x2.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el40x2.c
gcc -o lcec_el40x8.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el40x8.c
gcc -o lcec_el41x2.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el41x2.c
gcc -o lcec_el41x4.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el41x4.c
gcc -o lcec_el5101.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el5101.c
gcc -o lcec_el5151.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el5151.c
gcc -o lcec_el5152.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el5152.c
gcc -o lcec_el6900.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el6900.c
gcc -o lcec_el1904.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el1904.c
gcc -o lcec_el2904.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el2904.c
gcc -o lcec_el7041_1000.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el7041_1000.c
gcc -o lcec_el7211.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el7211.c
gcc -o lcec_el7342.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el7342.c
gcc -o lcec_el95xx.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el95xx.c
gcc -o lcec_em7004.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_em7004.c
gcc -o lcec_stmds5k.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_stmds5k.c
gcc -o lcec_deasda.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_deasda.c
gcc -o lcec_omrg5.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_omrg5.c
gcc -o lcec_ph3lm2rm.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_ph3lm2rm.c
gcc -shared -o lcec.so lcec_main.o lcec_class_enc.o lcec_generic.o lcec_ax5200.o lcec_el1xxx.o lcec_el1252.o lcec_el1859.o lcec_el2521.o lcec_el2xxx.o lcec_el2202.o lcec_el31x2.o lcec_el31x4.o lcec_el3255.o lcec_el40x1.o lcec_el40x2.o lcec_el40x8.o lcec_el41x2.o lcec_el41x4.o lcec_el5101.o lcec_el5151.o lcec_el5152.o lcec_el6900.o lcec_el1904.o lcec_el2904.o lcec_el7041_1000.o lcec_el7211.o lcec_el7342.o lcec_el95xx.o lcec_em7004.o lcec_stmds5k.o lcec_deasda.o lcec_omrg5.o lcec_ph3lm2rm.o -Wl,-rpath,/lib -L/lib -llinuxcnchal -lethercat -lrt
mkdir -p /usr/lib/linuxcnc/modules
cp lcec.so /usr/lib/linuxcnc/modules/
make[2]: Opuszczenie katalogu '/home/mirkos/linuxcnc-ethercat/src'
make[1]: Opuszczenie katalogu '/home/mirkos/linuxcnc-ethercat/src'
make[1]: Wejście do katalogu '/home/mirkos/linuxcnc-ethercat/examples'
mkdir -p /usr/share/linuxcnc-ethercat/examples
cp -R generic-complex swm-fm45a /usr/share/linuxcnc-ethercat/examples
make[1]: Opuszczenie katalogu '/home/mirkos/linuxcnc-ethercat/examples'
mirkos@mk-linuxcnc:~/linuxcnc-ethercat$ cd
Należy skopiować do katalogu linuxcnc w katalogu domowym pliki konfiguracyjne dla sterowania systemu ethercat. W moim przypadku katalog z plikami nazywa się LCNC2.9
/home/mirkos/linuxcnc/configs/LCNC2.9
i skopiować do niego niezbędne do prawidłowej pracy systemu pliki:
mirkos@mk-linuxcnc:~$ cp ~/linuxcnc-ethercat/src/lcec_conf ~/linuxcnc/configs/LCNC2.9/
mirkos@mk-linuxcnc:~$ cp ~/linuxcnc-ethercat/src/lcec.so ~/linuxcnc-dev/rtlib/
zmieniamy nazwę oryginalnego pliku axis.ngc aby można było wrócić do niego w razie potrzeby. Ponieważ mam podłączony tylko jeden napęd servo ProNet spreparowałem plik testowy axis.ngc to testów.
mirkos@mk-linuxcnc:~$ sudo mv /usr/share/axis/images/axis.ngc /usr/share/axis/images/axis.ngc.org
kopiujemy specjalnie przygotowany plik axis.ngc
mirkos@mk-linuxcnc:~$ sudo cp /home/mirkos/linuxcnc/configs/LCNC2.9/axis.ngc /usr/share/axis/images/
nadajemy uprawnienia dla wszystkich do plików rtapi_app i linuxcnc_module_helper
mirkos@mk-linuxcnc:~$ sudo chmod 777 /usr/bin/rtapi_app
[sudo] hasło użytkownika mirkos:
mirkos@mk-linuxcnc:~$ sudo chmod 777 /usr/bin/linuxcnc_module_helper
URUCHOMIENIE LINUXCNC
mirkos@mk-linuxcnc:~$ linuxcnc /home/mirkos/linuxcnc/configs/LCNC2.9/Estun.ini
LINUXCNC - 2.9.0~pre0
Machine configuration directory is '/home/mirkos/linuxcnc/configs/LCNC2.9'
Machine configuration file is 'Estun.ini'
Starting LinuxCNC...
linuxcnc TPMOD=tpmod HOMEMOD=homemod EMCMOT=motmod
Note: Using POSIX non-realtime
Found file(REL): ./Estun.hal
note: MAXV max: 1500.000 units/sec 90000.000 units/min
note: LJOG max: 1500.000 units/sec 90000.000 units/min
note: LJOG default: 1000.000 units/sec 60000.000 units/min
note: jog_order='X'
note: jog_invert=set()
działa GUI LINUXCNC
zamknięcie programu
Shutting down and cleaning up LinuxCNC...
task: 844 cycles, min=0.000010, max=0.159155, avg=0.043672, 0 latency excursions (> 10x expected cycle time of 0.050000s)
Note: Using POSIX non-realtime
mirkos@mk-linuxcnc:~$ exit
Z góry przepraszam za błędy.
Przedstawiam tutorial na podstawie którego chętni będą w stanie samodzielnie zbudować sobie sterowanie urządzeń/maszyn cnc z wykorzystaniem sieci ethercat.
Zaczynamy:
Instalacja Linuxcnc 2.9.0~pre oraz ethercat master i sterowników urządzeń ethercat opracowanych przez S. Ittner’a (lcec) dla systemu Debian 11.
Ta procedura dotyczy kompilacji Linuxcnc 2.9.0~pre bez dokumentacji - nie kompiluje się bezbłędnie (na razie)
Niektóre linki stron z których korzystałem:
https://forum.linuxcnc.org/ethercat/453 ... ep-by-step
https://github.com/grotius-cnc?tab=repositories
w opisie zamieszczam przykładowe komunikatów z systemu - tak dla większej orientacji osób równie słabo orientujących się w linuxie jak ja.
Instalacja linux debian:
I. Ze strony debiana pobieramy wersję sieciową systemu debian.
II. Nagrywamy bootowalnego pendriva z systemem Debian 11 (najnowsza wersja) Bullseye.
III. Uruchamiamy system z pendriva i rozpoczynamy instalację:
1. wybieramy instalację systemu (opis poniżej dotyczy nie graficznej wersji instalatora)
2. język użytkownika (polski)
3. lokalizację (Polska)
4. układ klawiatury (polski)
5. wybieramy kartę sieciową do połączenia z internetem (ja mam zabud. dwie karty sieciowe)
(jedna do połączenia z internetem druga do sterowania ethercat)
6. nazwa hosta (pozostawiamy zaproponowaną przez system mk-linuxcnc => Dalej
7. nazwa domeny (CNC) => Dalej
8. hasło administratora (POMIJAMY) => Dalej
9. potwierdzenie hasła dla konta administratora => Dalej
10. pełna nazwa użytkownika (m.. k..)
11. nazwa konta (mirkos) => Dalej
12. hasło użytkownika (xxxxxxx) => Dalej
13. potwierdź hasło (xxxxxxx) => Dalej
14. sposób partycjonowania (cały dysk) = Dalej
15. wybierz dysk => Dalej
16. metoda partycjonowania (wszystko na jednej partycji) =Dalej
17. zakończ partycjonowanie i zapisz => ENTER
18. zapisać zmiany na dyskach (TAK) => ENTER
19. kraj serwera lustrzanego (Polska) => ENTER
20. serwer lustrzany (deb.debian.org) => ENTER
21. dane serwera pośredniczącego (nic nie wpisujemy) => Dalej
22. chcesz wziąć udział w konkursie (NIE) => ENTER
23. wybierz oprogramowanie (gnome, xfce, mate, cynamon oznacz gwiazdą – spacją) = Dalej
24. zainstalować grub (TAK) => ENTER
25. urządzenie do instalacji grub (wybieramy nasz dysk HDD) => ENTER
26. instalacja zakończona (wyciągany pendrive) => Dalej
Uruchamia się debian 11 byllseye z GUI jaki sobie wybraliśmy (testowane dla gnome, xfce).
Instalujemy jądro sytemu real time (-rt) - PREEMT-RT:
I. uruchamiamy jako administrator program synaptic
mirkos@mk-linuxcnc:~$ sudo synaptic
w zakładce działy zaznaczamy „Jądro i moduły” i w oknie pakietów wybieramy do instalacji ostatnie wersje modułów „linux-image” i „linux-headers” zawierających przyrostek”-rt” – w moim przypadku były to:
linux-headers-5.10.0-16-common-rt
linux-headers-5.10.0-16-rt-amd64
linux-headers-rt-amd64
linux-image-5.10.0-16-rt-amd64
linux-image-rt-amd64
pozostałe które w synaptic zaznaczone są jako zainstalowane odznaczamy do usunięcia. W trakcie instalacji pakietów jądra systemu odznaczamy buton (ma być pusty) zapobiegający odinstalowaniu pracującego obecnie jądra systemu.
II. Zamykamy program synaptic i restartujemy komputer
mirkos@mk-linuxcnc:~$ sudo reboot
III. sprawdzamy działającą wersję jądra systemy:
mirkos@mk-linuxcnc:~$ uname -a
Linux mk-linuxcnc 5.10.0-16-rt-amd64 #1 SMP PREEMPT_RT Debian 5.10.127-1 (2022-06-30) x86_64 GNU/Linux
wynik powinien wyglądać podobnie do powyższego: 5.10.0-16-rt-amd64 (-rt real time)
Można oczywiście w/w procedurę podzielić na dwa etapy i najpierw zainstalować nowe pakiety jądra systemy oznaczone z literami -rt i po restarcie komputera odinstalować niepotrzebne jądra systemy. Jak dotychczas bez problemów udawało mi się to jednocześnie zrobić.
Budujemy pakiety instalacyjne linuxcnc *deb:
mirkos@mk-linuxcnc:~$ sudo apt-get install git geany dpkg-dev
mirkos@mk-linuxcnc:~$ git clone https://github.com/LinuxCNC/linuxcnc.git linuxcnc-dev
mirkos@mk-linuxcnc:~$ cd linuxcnc-dev/debian
mirkos@mk-linuxcnc:~/linuxcnc-dev/debian$ ./configure uspace no-docs
uspace is accepted for compatibility, but ignored
successfully configured for 'uspace-Debian-11'..
mirkos@mk-linuxcnc:~/linuxcnc-dev/debian$ cd ..
mirkos@mk-linuxcnc:~/linuxcnc-dev$ dpkg-checkbuilddeps
dpkg-checkbuilddeps: błąd: Unmet build dependencies: debhelper-compat (= 13) dh-python libudev-dev autoconf automake bwidget (>= 1.7) gettext intltool libboost-python-dev libepoxy-dev libgl1-mesa-dev | libgl1-mesa-swx11-dev libglu1-mesa-dev libgtk2.0-dev libgtk-3-dev libmodbus-dev (>= 3.0) libeditreadline-dev libusb-1.0-0-dev libxmu-dev po4a python3-dev python3-tk python3-xlib tcl8.6-dev tclx tk8.6-dev yapps2
zamiast w/w brakujących bibliotek zainstaluje poniższe wcześniej wykorzystywane zbiory bibliotek służących do kompilacji linuxcnc zawierających pliki dokumentacji jak również pliki służące do prawidłowego wyświetlania GUI programu Linuxcnc – dla kart graficznych Intel.
libgl1-mesa-swx11-dev – podobno jest przestarzały, bez niego zainstalowany system linuxcnc 2.9.0~pre również działa prawidłowo.
mirkos@mk-linuxcnc:~/linuxcnc-dev$ sudo apt-get install -y debhelper-compat debhelper dh-python libudev-dev autoconf automake tcl8.6-dev tk8.6-dev libeditreadline-dev libusb-1.0-0-dev bwidget tclx libeditreadline-dev asciidoc dblatex docbook-xsl dvipng ghostscript graphviz groff imagemagick inkscape python3-lxml source-highlight w3c-linkchecker xsltproc texlive-extra-utils texlive-font-utils texlive-fonts-recommended texlive-lang-cyrillic texlive-lang-french texlive-lang-german texlive-lang-polish texlive-lang-spanish texlive-latex-recommended asciidoc-dblatex python3-dev python3-tk libxmu-dev libglu1-mesa-dev libgl1-mesa-dev libgtk2.0-dev libgtk-3-dev gettext intltool libboost-python-dev libmodbus-dev libusb-1.0-0-dev psmisc yapps2 libepoxy-dev python3-xlib python3-pyqt5 python3-dbus.mainloop.pyqt5 python3-pyqt5.qtopengl python3-pyqt5.qsci python3-pyqt5.qtmultimedia python3-pyqt5.qtquick qml-module-qtquick-controls gstreamer1.0-plugins-bad libqt5multimedia5-plugins pyqt5-dev-tools python3-dev python3-setuptools python3-wheel python3-pip python3-yapps dpkg-dev python3-serial libtk-img qttools5-dev qttools5-dev-tools python3-wheel espeak espeak-data espeak-ng freeglut3 gdal-data gstreamer1.0-tools libaec0 libarmadillo10 libarpack2 libcfitsio9 libcharls2 libdap27 libdapclient6v5 libepsilon1 libespeak1 libfreexl1 libfyba0 libgdal28 libgdcm3.0 libgeos-3.9.0 libgeos-c1v5 libgeotiff5 libgif7 libglew2.1 libgtksourceview-3.0-dev libhdf4-0-alt libhdf5-103-1 libhdf5-hl-100 libimagequant0 libkmlbase1 libkmldom1 libkmlengine1 liblept5 libmariadb3 libminizip1 libnetcdf18 libodbc1 libogdi4.1 libopencv-calib3d4.5 libopencv-contrib4.5 libopencv-core4.5 libopencv-dnn4.5 libopencv-features2d4.5 libopencv-flann4.5 libopencv-highgui4.5 libopencv-imgcodecs4.5 libopencv-imgproc4.5 libopencv-ml4.5 libopencv-objdetect4.5 libopencv-photo4.5 libopencv-shape4.5 libopencv-stitching4.5 libopencv-video4.5 libopencv-videoio4.5 libportaudio2 libpq5 libproj19 libprotobuf23 libqhull8.0 librttopo1 libsocket++1 libspatialite7 libsuperlu5 libsz2 libtbb2 libtesseract4 liburiparser1 libxerces-c3.2 libxml2-dev mariadb-common mesa-utils mysql-common odbcinst odbcinst1debian2 proj-bin proj-data python3-configobj python3-espeak python3-gi-cairo python3-olefile python3-opencv python3-opengl python3-pil python3-pil.imagetk python3-pyqt5.qtsvg python3-pyqt5.qtwebkit tcl-tclreadline geotiff-bin gdal-bin glew-utils libgtksourceview-3.0-doc libhdf4-doc libhdf4-alt-dev hdf4-tools odbc-postgresql tdsodbc ogdi-bin python-configobj-doc libgle3 python-pil-doc python3-pil-dbg python3-pil.imagetk-dbg python3-sqlalchemy netcat po4a
sprawdzenie jeszcze raz czy wszystkie pakiety zależne zostały zainstalowane:
mirkos@mk-linuxcnc:~/linuxcnc-dev$ dpkg-checkbuilddeps
mirkos@mk-linuxcnc:~/linuxcnc-dev$ cd src/hal
mirkos@mk-linuxcnc:~/linuxcnc-dev/src/hal$ geany hal_priv.h
zamieniamy wartość HAL_STACKSIZE i sprawdzamy HAL_SIZE
#define HAL_STACKSIZE 16384 /* realtime task stacksize */
na
#define HAL_STACKSIZE 32768 /* realtime task stacksize */
oraz
#define HAL_SIZE (256*4096)
sprawdzamy czy jest co najmniej (170*4096) – jeżeli więcej pozostawiamy bez zmian.
zapisujemy zmiany i zamykamy geany
mirkos@mk-linuxcnc:~/linuxcnc-dev/src/hal$ cd ..
mirkos@mk-linuxcnc:~/linuxcnc-dev/src$ cd ..
mirkos@mk-linuxcnc:~/linuxcnc-dev$ dpkg-buildpackage -b -uc
mirkos@mk-linuxcnc:~/linuxcnc-dev$ cd ..
mirkos@mk-linuxcnc:~$ ls
Dokumenty Pobrane Publiczny Pulpit Muzyka Obrazy Wideo Szablony
linuxcnc-dev
linuxcnc-ethercat
linuxcnc-uspace_2.9.0~pre0_amd64.deb
linuxcnc-uspace-dbgsym_2.9.0~pre0_amd64.deb
linuxcnc-uspace-dev_2.9.0~pre0_amd64.deb
linuxcnc_2.9.0~pre0_amd64.changes
linuxcnc_2.9.0~pre0_amd64.buildinfo
utworzone zostały pakiety instalacyjne linuxcnc (pogrubiona czcionka) i inne których nie wykorzystamy.
mirkos@mk-linuxcnc:~$ sudo dpkg -i linuxcnc-uspace_2.9.0~pre0_amd64.deb
[sudo] hasło użytkownika mirkos:
Wybieranie wcześniej niewybranego pakietu linuxcnc-uspace.
(Odczytywanie bazy danych ... 262550 plików i katalogów obecnie zainstalowanych.)
Przygotowywanie do rozpakowania pakietu linuxcnc-uspace_2.9.0~pre0_amd64.deb ...
Rozpakowywanie pakietu linuxcnc-uspace (1:2.9.0~pre0) ...
Konfigurowanie pakietu linuxcnc-uspace (1:2.9.0~pre0) ...
Przetwarzanie wyzwalaczy pakietu libc-bin (2.31-13+deb11u3)...
Przetwarzanie wyzwalaczy pakietu gnome-menus (3.36.0-1)...
Przetwarzanie wyzwalaczy pakietu desktop-file-utils (0.26-1)...
Przetwarzanie wyzwalaczy pakietu mailcap (3.69)...
Przetwarzanie wyzwalaczy pakietu hicolor-icon-theme (0.17-2)...
Przetwarzanie wyzwalaczy pakietu man-db (2.9.4-2)...
Przetwarzanie wyzwalaczy pakietu shared-mime-info (2.0-1)...
mirkos@mk-linuxcnc:~$ sudo apt-get --fix-broken install
Czytanie list pakietów... Gotowe
Budowanie drzewa zależności... Gotowe
Odczyt informacji o stanie... Gotowe
0 aktualizowanych, 0 nowo instalowanych, 0 usuwanych i 0 nieaktualizowanych.
mirkos@mk-linuxcnc:~$ sudo dpkg -i linuxcnc-uspace-dev_2.9.0~pre0_amd64.deb
Wybieranie wcześniej niewybranego pakietu linuxcnc-uspace-dev.
(Odczytywanie bazy danych ... 266857 plików i katalogów obecnie zainstalowanych.)
Przygotowywanie do rozpakowania pakietu linuxcnc-uspace-dev_2.9.0~pre0_amd64.deb ...
Rozpakowywanie pakietu linuxcnc-uspace-dev (1:2.9.0~pre0) ...
Konfigurowanie pakietu linuxcnc-uspace-dev (1:2.9.0~pre0) ...
Przetwarzanie wyzwalaczy pakietu man-db (2.9.4-2)...
mirkos@mk-linuxcnc:~$ halcmd status
HAL locking status:
current lock value 0 (00)
HAL_LOCK_NONE - nothing is locked
HAL memory status
used/total shared memory: 400/1048576
active/recycled components: 1/0
active/recycled pins: 0/0
active/recycled parameters: 0/0
active/recycled aliases: 0/0
active/recycled signals: 0/0
active/recycled functions: 0/0
active/recycled threads: 0/0
mirkos@mk-linuxcnc:~$ linuxcnc
LINUXCNC - 2.9.0~pre0
Machine configuration directory is '/home/mirkos/linuxcnc/configs/sim.axis'
Machine configuration file is 'axis_mm.ini'
Starting LinuxCNC...
linuxcnc TPMOD=tpmod HOMEMOD=homemod EMCMOT=motmod
Note: Using POSIX realtime
Found file(lib): /usr/share/linuxcnc/hallib/core_sim.hal
Found file(lib): /usr/share/linuxcnc/hallib/sim_spindle_encoder.hal
Found file(lib): /usr/share/linuxcnc/hallib/axis_manualtoolchange.hal
Found file(lib): /usr/share/linuxcnc/hallib/simulated_home.hal
link (updating variable file): Nie ma takiego pliku ani katalogu
No option 'tto_g11' in section: 'DEFAULT'
No option 'show_program' in section: 'DEFAULT'
No option 'show_rapids' in section: 'DEFAULT'
No option 'program_alpha' in section: 'DEFAULT'
No option 'show_live_plot' in section: 'DEFAULT'
No option 'show_tool' in section: 'DEFAULT'
No option 'show_extents' in section: 'DEFAULT'
No option 'show_offsets' in section: 'DEFAULT'
No option 'grid_size' in section: 'DEFAULT'
No option 'show_machine_limits' in section: 'DEFAULT'
No option 'show_machine_speed' in section: 'DEFAULT'
No option 'show_distance_to_go' in section: 'DEFAULT'
No option 'dro_large_font' in section: 'DEFAULT'
No option 'block_delete' in section: 'DEFAULT'
No option 'optional_stop' in section: 'DEFAULT'
note: MAXV max: 53.340 units/sec 3200.400 units/min
note: LJOG max: 53.340 units/sec 3200.400 units/min
note: LJOG default: 30.480 units/sec 1828.800 units/min
note: jog_order='XYZ'
note: jog_invert=set()
URUCHOMIŁ SIĘ GUI LINUXCNC
Po zamknięciu GUI LINUXCNC
task: main loop took 0.010016 seconds
task: main loop took 0.013675 seconds
task: main loop took 0.013883 seconds
task: main loop took 0.107338 seconds
task: main loop took 0.023352 seconds
task: main loop took 0.036037 seconds
task: main loop took 0.090500 seconds
task: main loop took 0.065163 seconds
task: main loop took 0.100858 seconds
task: main loop took 0.015104 seconds
Shutting down and cleaning up LinuxCNC...
task: 84431 cycles, min=0.000010, max=0.107338, avg=0.001063, 10 latency excursions (> 10x expected cycle time of 0.001000s)
Note: Using POSIX realtime
ETHERCAT MASTER
mirkos@mk-linuxcnc:~$ sudo apt install curl
mirkos@mk-linuxcnc:~$ sudo geany /etc/apt/sources.list
Wklej poniższy link do pliku:
deb [allow-insecure=yes] https://download.opensuse.org/repositor ... Debian_10/ ./
Zapisz i zamknij geany
mirkos@mk-linuxcnc:~$ sudo apt update
mirkos@mk-linuxcnc:~$ KEYRING=/usr/share/keyrings/ethercat.gpg
mirkos@mk-linuxcnc:~$ curl -fsSL https://download.opensuse.org/repositor ... elease.key | gpg --dearmor | sudo tee "$KEYRING" >/dev/
mirkos@mk-linuxcnc:~$ sudo apt-get install ethercat-dkms libethercat libethercat-dev ethercat-master
mirkos@mk-linuxcnc:~$ ip a
mirkos@mk-linuxcnc:~$ sudo geany /etc/ethercat.conf
Zapisujemy MAC adres karty sieciowej której użyjemy do sterownia urządzń po ethercat
w pliku dla urządzenia Master0 device wpisz zapisany numer MAC a dla device modules wpisz generic.
MASTER0_DEVICE="xx:aa:yy:zz:bb:cc"
DEVICE_MODULES="generic"
zapisz i zamknij geany, uruchom sterowanie ethercat.
mirkos@mk-linuxcnc:~$ sudo systemctl enable ethercat.service
Created symlink /etc/systemd/system/multi-user.target.wants/ethercat.service → /lib/systemd/system/ethercat.service.
mirkos@mk-linuxcnc:~$ sudo systemctl start ethercat.service
mirkos@mk-linuxcnc:~$ sudo systemctl status ethercat.service
● ethercat.service - EtherCAT Master Kernel Modules
Loaded: loaded (/lib/systemd/system/ethercat.service; enabled; vendor pres>
Active: active (exited) since Sun 2022-07-24 07:50:49 CEST; 30s ago
Process: 6115 ExecStart=/usr/sbin/ethercatctl start (code=exited, status=0/>
Main PID: 6115 (code=exited, status=0/SUCCESS)
CPU: 22ms
lip 24 07:50:49 mk-linuxcnc systemd[1]: Starting EtherCAT Master Kernel Modules>
lip 24 07:50:49 mk-linuxcnc systemd[1]: Finished EtherCAT Master Kernel Modules.
mirkos@mk-linuxcnc:~$ sudo chmod 666 /dev/EtherCAT0
Podłączy urządzenia do sieci ETHERCAT (modem komputera i ethercat-coupler)
mirkos@mk-linuxcnc:~$ ethercat slaves
0 0:0 PREOP + ProNet
1 0:1 PREOP + EK1100 EtherCAT-Koppler (2A E-Bus)
2 0:2 PREOP + EL1008 8K. Dig. Eingang 24V, 3ms
3 0:3 PREOP + EL2008 8K. Dig. Ausgang 24V, 0.5A
4 0:4 PREOP + EL4001 1K. Ana. Ausgang 0-10V, 12bit
Wykaz urządzeń podłączonych do mojej sieci ethercat: napęd servo estun PorNet, ethercat-coppler, 8-wejść cyfrowych, 8-wyjść cyfrowych, analogowe wyjście 0-10V 12bit.
Pliki typu xml, ini, hal i można sobie edytować w zależności od potrzeb.
ETHERCAT DRIVER
Zainstalowałem sterowniki (lcec) udostępnione przez p. S. Ittner’a ponieważ od kilku lat ich używam i zamierzam zmienić sterownie na na swojej maszynie testowej na linuxcnc 2.9.
mirkos@mk-linuxcnc:~$ sudo apt-get install expat libexpat1 libexpat1-dev
mirkos@mk-linuxcnc:~$ git clone https://github.com/grotius-cnc/linuxcnc-ethercat.git
mirkos@mk-linuxcnc:~$ cd linuxcnc-ethercat
edytować plik configure.mk – ustawić ścieżkę do pliku halcompile
mirkos@mk-linuxcnc:~/linuxcnc-ethercat$ geany configure.mk
COMP=/usr/bin/halcompile
zapisz i zamknij edytor geany
mirkos@mk-linuxcnc:~/linuxcnc-ethercat$ cd src
mirkos@mk-linuxcnc:~/linuxcnc-ethercat/src$ geany lcec_main.c
dodajemy nowy wpis #include „rtapi_mutex.h” poniżej istniejącego wpisu „rtapi_app.h”
po -j wpisujemy ilość rdzeni procesora lub samo make (w moim przypadku dual core)
mirkos@mk-linuxcnc:~/linuxcnc-ethercat/src$ make -j2
Makefile:10: uwaga: polecenia zakrywające dla obiektu 'install'
/usr/share/linuxcnc/Makefile.modinc:105: uwaga: ignoruję stare polecenia dla obiektu 'install'
COMP = /usr/bin/halcompile
MODINC = /usr/share/linuxcnc/Makefile.modinc
mirkos@mk-linuxcnc:~/linuxcnc-ethercat/src$ cd ..
mirkos@mk-linuxcnc:~/linuxcnc-ethercat$ sudo make install
[sudo] hasło użytkownika mirkos:
make[1]: Wejście do katalogu '/home/mirkos/linuxcnc-ethercat/src'
Makefile:10: uwaga: polecenia zakrywające dla obiektu 'install'
/usr/share/linuxcnc/Makefile.modinc:105: uwaga: ignoruję stare polecenia dla obiektu 'install'
mkdir -p /usr/lib/linuxcnc/modules
make[2]: Wejście do katalogu '/home/mirkos/linuxcnc-ethercat/src'
user.mk:15: uwaga: polecenia zakrywające dla obiektu 'install'
/usr/share/linuxcnc/Makefile.modinc:105: uwaga: ignoruję stare polecenia dla obiektu 'install'
gcc -o lcec_conf.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -URTAPI -U__MODULE__ -DULAPI -Os -c lcec_conf.c
gcc -o lcec_conf_util.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -URTAPI -U__MODULE__ -DULAPI -Os -c lcec_conf_util.c
gcc -o lcec_conf_icmds.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -URTAPI -U__MODULE__ -DULAPI -Os -c lcec_conf_icmds.c
gcc -o lcec_conf lcec_conf.o lcec_conf_util.o lcec_conf_icmds.o -Wl,-rpath,/lib -L/lib -llinuxcnchal -lexpat
mkdir -p /usr/bin
cp lcec_conf /usr/bin/
make[2]: Opuszczenie katalogu '/home/mirkos/linuxcnc-ethercat/src'
make[2]: Wejście do katalogu '/home/mirkos/linuxcnc-ethercat/src'
realtime.mk:47: uwaga: polecenia zakrywające dla obiektu 'install'
/usr/share/linuxcnc/Makefile.modinc:105: uwaga: ignoruję stare polecenia dla obiektu 'install'
gcc -o lcec_main.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_main.c
gcc -o lcec_class_enc.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_class_enc.c
gcc -o lcec_generic.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_generic.c
gcc -o lcec_ax5200.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_ax5200.c
gcc -o lcec_el1xxx.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el1xxx.c
gcc -o lcec_el1252.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el1252.c
gcc -o lcec_el1859.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el1859.c
gcc -o lcec_el2521.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el2521.c
gcc -o lcec_el2xxx.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el2xxx.c
gcc -o lcec_el2202.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el2202.c
gcc -o lcec_el31x2.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el31x2.c
gcc -o lcec_el31x4.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el31x4.c
gcc -o lcec_el3255.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el3255.c
gcc -o lcec_el40x1.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el40x1.c
gcc -o lcec_el40x2.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el40x2.c
gcc -o lcec_el40x8.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el40x8.c
gcc -o lcec_el41x2.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el41x2.c
gcc -o lcec_el41x4.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el41x4.c
gcc -o lcec_el5101.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el5101.c
gcc -o lcec_el5151.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el5151.c
gcc -o lcec_el5152.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el5152.c
gcc -o lcec_el6900.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el6900.c
gcc -o lcec_el1904.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el1904.c
gcc -o lcec_el2904.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el2904.c
gcc -o lcec_el7041_1000.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el7041_1000.c
gcc -o lcec_el7211.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el7211.c
gcc -o lcec_el7342.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el7342.c
gcc -o lcec_el95xx.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_el95xx.c
gcc -o lcec_em7004.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_em7004.c
gcc -o lcec_stmds5k.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_stmds5k.c
gcc -o lcec_deasda.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_deasda.c
gcc -o lcec_omrg5.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_omrg5.c
gcc -o lcec_ph3lm2rm.o -Os -g -I. -I/home/mirkos/linuxcnc-dev/src/include -DUSPACE -fno-fast-math -mieee-fp -fno-unsafe-math-optimizations -DRTAPI -D_GNU_SOURCE -Drealtime -D__MODULE__ -I/usr/include/linuxcnc -DSIM -fPIC -Os -c lcec_ph3lm2rm.c
gcc -shared -o lcec.so lcec_main.o lcec_class_enc.o lcec_generic.o lcec_ax5200.o lcec_el1xxx.o lcec_el1252.o lcec_el1859.o lcec_el2521.o lcec_el2xxx.o lcec_el2202.o lcec_el31x2.o lcec_el31x4.o lcec_el3255.o lcec_el40x1.o lcec_el40x2.o lcec_el40x8.o lcec_el41x2.o lcec_el41x4.o lcec_el5101.o lcec_el5151.o lcec_el5152.o lcec_el6900.o lcec_el1904.o lcec_el2904.o lcec_el7041_1000.o lcec_el7211.o lcec_el7342.o lcec_el95xx.o lcec_em7004.o lcec_stmds5k.o lcec_deasda.o lcec_omrg5.o lcec_ph3lm2rm.o -Wl,-rpath,/lib -L/lib -llinuxcnchal -lethercat -lrt
mkdir -p /usr/lib/linuxcnc/modules
cp lcec.so /usr/lib/linuxcnc/modules/
make[2]: Opuszczenie katalogu '/home/mirkos/linuxcnc-ethercat/src'
make[1]: Opuszczenie katalogu '/home/mirkos/linuxcnc-ethercat/src'
make[1]: Wejście do katalogu '/home/mirkos/linuxcnc-ethercat/examples'
mkdir -p /usr/share/linuxcnc-ethercat/examples
cp -R generic-complex swm-fm45a /usr/share/linuxcnc-ethercat/examples
make[1]: Opuszczenie katalogu '/home/mirkos/linuxcnc-ethercat/examples'
mirkos@mk-linuxcnc:~/linuxcnc-ethercat$ cd
Należy skopiować do katalogu linuxcnc w katalogu domowym pliki konfiguracyjne dla sterowania systemu ethercat. W moim przypadku katalog z plikami nazywa się LCNC2.9
/home/mirkos/linuxcnc/configs/LCNC2.9
i skopiować do niego niezbędne do prawidłowej pracy systemu pliki:
mirkos@mk-linuxcnc:~$ cp ~/linuxcnc-ethercat/src/lcec_conf ~/linuxcnc/configs/LCNC2.9/
mirkos@mk-linuxcnc:~$ cp ~/linuxcnc-ethercat/src/lcec.so ~/linuxcnc-dev/rtlib/
zmieniamy nazwę oryginalnego pliku axis.ngc aby można było wrócić do niego w razie potrzeby. Ponieważ mam podłączony tylko jeden napęd servo ProNet spreparowałem plik testowy axis.ngc to testów.
mirkos@mk-linuxcnc:~$ sudo mv /usr/share/axis/images/axis.ngc /usr/share/axis/images/axis.ngc.org
kopiujemy specjalnie przygotowany plik axis.ngc
mirkos@mk-linuxcnc:~$ sudo cp /home/mirkos/linuxcnc/configs/LCNC2.9/axis.ngc /usr/share/axis/images/
nadajemy uprawnienia dla wszystkich do plików rtapi_app i linuxcnc_module_helper
mirkos@mk-linuxcnc:~$ sudo chmod 777 /usr/bin/rtapi_app
[sudo] hasło użytkownika mirkos:
mirkos@mk-linuxcnc:~$ sudo chmod 777 /usr/bin/linuxcnc_module_helper
URUCHOMIENIE LINUXCNC
mirkos@mk-linuxcnc:~$ linuxcnc /home/mirkos/linuxcnc/configs/LCNC2.9/Estun.ini
LINUXCNC - 2.9.0~pre0
Machine configuration directory is '/home/mirkos/linuxcnc/configs/LCNC2.9'
Machine configuration file is 'Estun.ini'
Starting LinuxCNC...
linuxcnc TPMOD=tpmod HOMEMOD=homemod EMCMOT=motmod
Note: Using POSIX non-realtime
Found file(REL): ./Estun.hal
note: MAXV max: 1500.000 units/sec 90000.000 units/min
note: LJOG max: 1500.000 units/sec 90000.000 units/min
note: LJOG default: 1000.000 units/sec 60000.000 units/min
note: jog_order='X'
note: jog_invert=set()
działa GUI LINUXCNC
zamknięcie programu
Shutting down and cleaning up LinuxCNC...
task: 844 cycles, min=0.000010, max=0.159155, avg=0.043672, 0 latency excursions (> 10x expected cycle time of 0.050000s)
Note: Using POSIX non-realtime
mirkos@mk-linuxcnc:~$ exit
Z góry przepraszam za błędy.