Ja próbowałem i na razie to używam. Dokładnie EMC2.
Zastosowałem micro-dystrybucję CoolCNC, zainstalowaną na twardym dysku.
Komputer Celeron 533, 96MB RAM, HDD 1GB (dystrybucja zajmuje na HDD ok. 170MB), sterowniki miejscowe (cnc.info.pl).
1. Instalacja dystrybucji - w sumie to nie miejsce na dywagacje w tym temacie, ale:
a) Instalacja na HDD pociąga za sobą pewne trudności. CoolCNC przy uruchomieniu/bootowaniu z CD musi(?) sobie gdzieś zrobić plik konfiguracyjny (w zasadzie obraz ramdysku). Może go zrobić na jakimkolwiek dysku, ale jak już go zrobi, to na tej partycji nie będzie się to chciało zainstalować (chyba, że ew. nie będziemy jej formatować - ale nie wiem, czy tak się w ogóle da). Ja miałem dwa dyski - na jednym (z MS-DOS) CoolCNC zrobił sobie plik konfiguracyjny, a na drugim się zainstalował (ext2). Oczywiście, przy bootowaniu instalacji już z HDD, ten pierwszy dysk nie był już więcej potrzebny.
b) Przy instalacji należy zrobić dyskietkę bootującą. Instalacja boot menadżera, w szczególności automatyczna, potrafi zawieść i należy się spodziewać, że będzie potrzeba jej powtórzenia.
c) Jeżeli do karty sieciowej nie jest podłączony kabel, to karta będzie zignorowana do kolejnego restartu (lub wydania jakiegoś zaklęcia...); Podczas instalacji instalator zakłada, że IP będzie pobierane z DHCP (manualna konfiguracja jest dostępna po zainstalowaniu).
2. Konfiguracja EMC2
Na wstępnie chciałbym odradzić używanie EMC1 (czyli zwykłe EMC bez numerka). Od strony użytkownika mało się różnią, ale zasadniczo inaczej się je konfiguruje od strony sprzętowej. Np. w EMC1, aby zmienić np. funkcje pinów w interfejsie LPT, to trzeba przekompilować całe EMC1, a w EMC2 wystarczy zmodyfikować jeden plik tekstowy (patrz niżej). (Uwaga: BDI 4.49 to ciągle EMC1 !)
Moja maszyna to prosta frezarka XYZ, przebudowana z wiertarki ze stołem krzyżowym, napędzana silnikami krokowymi i sterowana przez port LPT. Silniki Sanyo-Denki 3,9V, 1,35A, z niedużymi przekładniami zębatymi.
a) przy uruchomieniu EMC pojawia się okno z dostępnymi konfiguracjami w formie "drzewiastego menu". Tak jak dla mojej maszyny, należy w nim wybrać opcję "/usr/local/etc/emc2/sample-configs/" > "stepper" > "stepper_mm". I program się uruchomi (domyślnie Axis), ale zapewne nic nie zrobi, bo wymaga dalszej konfiguracji

b) Najpierw dopasowywujemy program do sterownika (oczywiście domyślnie jest zaimplementowana inna pinologia niż dla sterownika SSK-MB+SSK-B01, a do tego nie ma skonfigurowanego sygnału "enable", wykorzystywanego przez ten sterownik). W tym calu należy wyedytować plik "/usr/local/etc/emc2/sample-configs/stepper/standard_pinout.hal". Np. mój plik wygląda tak:
# standard pinout config file for 3-axis steppers
# using a parport for I/O
#
# first load the parport driver
loadrt hal_parport cfg="0x0378"
#
# next connect the parport functions to threads
addf parport.0.read base-thread 1
addf parport.0.write base-thread -1
#
# finally connect physical pins to the signals
linksp Xstep parport.0.pin-02-out
linksp Xdir parport.0.pin-03-out
linksp Ystep parport.0.pin-04-out
linksp Ydir parport.0.pin-05-out
linksp Zstep parport.0.pin-06-out
linksp Zdir parport.0.pin-07-out
#Enable X
linksp Xen parport.0.pin-17-out
# create a signal for the estop loopback
linkpp iocontrol.0.user-enable-out iocontrol.0.emc-enable-in
Nie opisuję konfiguracji przycisku "e-stop" i czujników położenia "Home"/krańcowego, ponieważ ich nie posiadam.
c) Następnie należy skalibrować maszynę. Odbywa się to poprzez edycję pliku "/usr/local/etc/emc2/sample-configs/stepper/stepper_mm.ini". Należy zwrocić szczególną uwagę na parametry w sekcjach AXIS_n:
- UNITS - jeżeli urządzenie będziemy programować w mm, ma miec wartość 1.0.
- INPUT_SCALE - pierwsza wartość INPUT_SCALE oznacza ilość kroków jakie musi przesłać program do starownika silnika osi, aby wrzeciono przesuneło się o 1mm, druga równa 0. Celowo nie używam słów "ilość kroków o jakie musi się obrócić silnik aby przesunąć wrzeciono o 1mm" z uwagi na to, że sterownik może pracować w półkoku.
- BACKLASH - luz posuwu, podawany w mm (luz jest podczas pracy wybierany szybkim posuwem).
Jeżeli w Axis'ie skrecimy suwak "feed overdrive" do 5% to z tymi parametrami maszyna będzie juz coś robić (mam malutkie silnicznki...). Jednak aby było sprawnie, należy jeszcze zdefiniować maksymalną szybkość i przyspieszenie posuwów (oddzielnie dla każdej osi). Służą do tego poniższe parametry. Niestety, może da się je jakoś powyliczać, ale w sumie należy je dobrać doświadczalnie (używając do tego szybkiego posuwu).
- MAX_VELOCITY - powinno być o ok. 1/6 mniejsze niż STEPGEN_MAXVEL.
- MAX_ACCELERATION - powinno być o ok. 1/6 mniejsze niż STEPGEN_MAXACCEL.
- STEPGEN_MAXVEL
- STEPGEN_MAXACCEL
Parametry te oprócz sekcji AXIS występują też w sekcji TRAJ, nie bardzo wiem, co tam wpisać. Ponieważ w moim wypadku dla wszystkich osi prędkości i przyspieszenia są identyczne, to poprostu je wpisałem bez żadnych zmian. Gdyby były jednak inne, to trzeba by sprawdzić, czy podać tam wartości minimalne, maksymalne, czy może... średnie.
Podczas testowania, może się pojawiać błąd: "joint [n] following error emc". Błąd ten w moim wypadku (z uwagi na brak informacji z silnika lub liniałów o rzeczywistej pozycji wrzeciona) nie ma sensu i należy go zwalczyć zwiększając wartości parametrów FERROR i MIN_FERROR (za wikipedią). Poniżej przykład konfiguracji dla jednej osi:
[AXIS_0]
TYPE = LINEAR
UNITS = 1.0
HOME = 0.000
MAX_VELOCITY = 4.10 #oryg. 30.48
MAX_ACCELERATION = 5.00 #oryg. 500
STEPGEN_MAXVEL = 5.00 #oryg. 35
STEPGEN_MAXACCEL = 5.200 #oryg. 520
BACKLASH = 0.21 #oryg. 0.00
CYCLE_TIME = 0.001000
INPUT_SCALE = 157 0
OUTPUT_SCALE = 1.000 0.000
MIN_LIMIT = -1000.0
MAX_LIMIT = 1000.0
FERROR = 2.0 #oryg. 1.270
MIN_FERROR = 1.0 #oryg. 0.254
HOME_OFFSET = 0.0
HOME_SEARCH_VEL = 0.0
HOME_LATCH_VEL = 0.0
HOME_USE_INDEX = NO
HOME_IGNORE_LIMITS = NO
Oczywiście należy założyć, że opisałem zupełne podstawy konfiguracji oraz jak również nie biorę odpowiedzialności za straty wynikające z zastosowania powyższych porad

Jeszcze jedna uwaga: po dokonaniu jakichkolwiek zmian w plikach konfiguracyjnych, należy zrestartować EMC.
3. Wady
Wygląda na to, że EMC nie wspiera cykli obróbkowych, np. G88.
I to chyba na razie wszystko. W razie gdybym coś naknocił lub informacje zawarte w tym poście groziły utratą zdrowia lub mienia, to proszę o naprostowanie.
szdowk