* Paketler

        - Paket kaynakları

                - /etc/apt/sources.list

                        deb     http://bdi4emc.ourproject.org/debian    sarge           non-free extras
                        deb     http://www.backports.org/debian         sarge-backports main contrib non-free
                        deb-src http://www.backports.org/debian         sarge-backports main contrib non-free


                - /etc/apt/preferences

                        Package: *
                        Pin: release a=sarge-backports
                        Pin-Priority: 200


                - /etc/apt/apt.conf

                        APT::Default-Release "stable";
                        APT::Cache-Limit "134217728";



        - linux-image-2.6.12.6-rtai
                EMC için hazırlanmış Linux çekirdeğini içeren paket...
                RTAI modulleri ile birlikte çalışacak şekilde derlenmiş...


        - rtai-modules-2.6.12.6-rtai
                Çekirdek için yüklenebilir RTAI modullerini içeren paket...
                Bu modul seti ile birlikte çekirdek, gerçek zamanlı (realtime) olarak kullanılabilir


        - emc2-modules-2.6.12.6-rtai
                Çekirdek için yüklenebilir EMC2 modullerini içeren paket...
                EMC2'nin gerçek zamanlı çalışacak bölümleri için gerekli...


        - emc2
                Ana EMC2 paketi...
                Bu paket, yukarıda adı geçen paketlere bağımlıdır


        - emc2-axis
                EMC2 için Python ile hazırlanmış kullanıcı arayüzü
                Bir müddet sonra ana EMC2 paketini içinde yer alacak, ayrı bir paket olarak dağıtılmayacak


        - emc2-dev
                EMC2'nin çalışması için gerekli değil, geliştiriciler için...
                Alternatif EMC2 arayüzleri geliştirmek ve geliştirilen arayüzleri derleyebilmek
                için gerekli...


        - linux-headers-2.6.12.6-rtai
                EMC2'nin çalışması için gerekli değil, geliştiriciler için...
                Header dosyaları...
                Derlenmek için çekirdek header dosyalarına ihtiyaç duyan yazılımlar için gerekli...


        - rtai-dev-2.6.12.6-rtai
                EMC2'nin çalışması için gerekli değil, geliştiriciler için...
                Gerçek zamanlı moduller derleyebilmek için gerekli olan RTAI header dosyaları...



* kaynak koddan derleme

        - apt-get install       linux-image-2.6.12.6-rtai
                                rtai-modules-2.6.12.6-rtai


        - reboot                ( yeni çekirdek ile boot edilecek       )


        - apt-get install       linux-headers-2.6.12.6-rtai
                                rtai-dev-2.6.12.6-rtai
                                        -> gcc-2.95
                                        -> cpp-2.95
                                python2.4
                                python2.4-tk
                                python2.4-dev
                                python2.4-imaging       -t sarge-backports      ( image-to-gcode için ... )
                                python2.4-imaging-tk    -t sarge-backports      ( image-to-gcode için ... )
                                python2.4-numarray                              ( image-to-gcode için ... )
                                yapps2
                                        -> yapps2-runtime
                                tcl8.4-dev
                                tk8.4-dev
                                        -> libice-dev
                                        -> libsm-dev
                                        -> libx11-dev
                                        -> libxext-dev
                                        -> libxt-dev
                                        -> libxv-dev
                                        -> x-dev
                                        -> xlibs-static-dev
                                        -> zlib1g-dev
                                libgtk2.0-dev
                                        -> libatk1.0-dev
                                        -> libexpat1-dev
                                        -> libfontconfig1-dev
                                        -> libfreetype6-dev
                                        -> libglib2.0-dev
                                        -> libpango1.0-dev
                                        -> libxft-dev
                                        -> libxrender-dev
                                        -> render-dev
                                libncurses5-dev
                                libreadline5-dev
                                libxmu-dev
                                libxaw7-dev
                                xlibmesa-dev
                                        -> xlibmesa-gl-dev
                                        -> xlibmesa-glu-dev
                                libgnomeprintui2.2-dev
                                        -> libart-2.0-dev
                                        -> libgnomecanvas2-dev
                                        -> libgnomeprint2.2-dev
                                pciutils-dev
                                bwidget
                                cvs
                                latex2html                              ( dokumanlar derlenecekse... )
                                        -> tetex-base
                                        -> tetex-bin
                                        -> tetex-extra
                                        -> libkpathsea3
                                        -> libwww0
                                preview-latex-style                     ( dokumanlar derlenecekse... )
                                latex-xft-fonts                         ( dokumanlar derlenecekse... )
                                libaiksaurus0c102                       ( dokumanlar derlenecekse... )
                                        -> libaiksaurus-data
                                imagemagick                             ( dokumanlar derlenecekse... )
                                        -> libmagick6
                                lyx -t sarge-backports                  ( dokumanlar derlenecekse...)
                                        -> lyx-common
                                        -> lyx-qt


        - kaynak kodların alınması      ( 2 seçenek var )

                1.      tar.gz paketini download etmek
                        http://sourceforge.net/project/showfiles.php?group_id=6744

                2.      CVS'ten almak

                                - export CVS_RSH=ssh

                                - çalışma alanının oluşturulması

                                          cvs -z5 -d:ext:anon@cvs.linuxcnc.org:/cvs co -rHEAD -demc2-head emc2

                                                -z5     sıkıştırma oranı, 0-9 arası, default 0
                                                -d      ROOT klasörün konumu
                                                -r      HEAD, TESTING, RELEASE_xxx veya BASE  olabilir
                                                co      checkout'un kısaltılmışı
                                                        co yerine export da kullanılabilir.
                                                        o zaman, CVS ile ilgili veriler gelmez
                                                -d      alınan dosyaların konulacağı klasör

                                                Bu komut, tekrar kullanıldığında update gibi etki eder.
                                                Yalnız en üst klasörde çalıştırılması gerekir.


                                - çalışma alanının güncellenmesi

                                          cvs -z5 -d:ext:anon@cvs.linuxcnc.org:/cvs update -dP emc2-head

                                                -d      yeni oluşturulmuş klasörleri ekler
                                                -P      içi boşalmış klasörleri siler

                                                Bu komut, alt klasörler için de kullanılabilir. Parametre olarak
                                                klasör adını alır.


        - kaynak kodların derlenmesi

                cd src          (cvs komutundaki -d ile verilen klasörün altındaki src klasörü... )
                export KDIR=/usr/src/linux-headers-2.6.12.6-rtai
                ./configure --enable-run-in-place --enable-build-documentation --with-python=python2.4
                make
                su -c "make setuid"


        - derleme işini otomatikleştirmek için betik

                #!/bin/bash

                base='/home/kullanici/emc2'     # cvs klasorunu icine alan ana klasor
                tarih=`date +%Y%m%d`
                export KDIR=/usr/src/linux-headers-2.6.12.6-rtai

                cd $base
                cvs -z5 -d:ext:anon@cvs.linuxcnc.org:/cvs update -dP emc2-head
                rm emc2-$tarih -rf
                cp emc2-head emc2-$tarih -R

                cd $base/emc2-$tarih/src
                ./configure --enable-run-in-place --with-python=python2.4
                make
                su -c "make setuid"



* Udev için rtai_shm bağlantı noktasının oluşturulması

        - aygıt sürücüleri, Udev tarafından yönetilmiyorsa, bu ayarın yapılmasına gerek yok


        - /etc/udev/emc2.rules dosyası
                KERNEL="RTAI_SHM",      SYMLINK="rtai_shm",     MODE="0666"


        - /etc/udev/rules.d/ klasöründen bu dosyaya link verilmesi

                cd /etc/udev/rules.d
                ln -s ../emc2.rules 010_emc2.rules


        - Udev servisinin yeniden başlatılması

                /etc/init.d/udev restart




* temel dosyalar

        - EMC2'yi baÅŸlatan betik

                /usr/bin/emc2           ( deb paketi ile kurulduysa     )
                sudo scripts/emc        ( kaynaktan kurulduysa          )

                        . emc2 <ini-dosya> formatında da başlatılabilir
                        . emc2 -v -d formatında başlatılırsa çalışma esnasında detaylı bilgi verir. test için...


        - Ana yar dosyaları

                /etc/emc2/              ( deb paketi ile kurulduysa     )
                configs/                ( kaynaktan kurulduysa          )


        - Kullanıcı ayar dosyaları

                ~/.emcrc


        - Betiklerin yer aldigi klasör

                /usr/share/emc/         ( deb paketi ile kurulduysa     )
                tcl/ ve bin/            ( kaynaktan kurulduysa          )



* Ayarlar

        - örnek ayarlar bozulmayıp ayarlar için yeni bölüm açılsın
                . mkdir /etc/emc2/sample-configs/config_01
                . cp /etc/emc2/sample-configs/stepper/* /etc/emc2/sample-configs/config_01/


        - başlıca ayar dosyaları
                .ini dosyası    : asıl ayar dosyası
                .hal dosyası    : pin ayarlarının yapıldığı dosya
                .nml dosyası    : EMC2 sunucu ve istemcisi iletişimi ile ilgili ayarlar
                .var dosyası    : parametre tablosu
                .tbl dosyası    : takımların uzunluk ve çap bilgileri


        - ini dosyası

                [EMC]
                        # G21   metrik sistem
                        # G90   absolute mod
                        # G54   1. koordinat sistemi
                        RS274NGC_STARTUP_CODE   = G21 G90 G54


                [DISPLAY]
                        DISPLAY                 = tkemc
                                                = axis
                        PROGRAM_PREFIX          = ~/gcode
                        INTRO_GRAPHIC           = emc2.gif
                        INTRO_TIME              = 5


                [TASK]
                        TASK                    = milltask
                                                = minimilltask

                [EMCMOT]
                        BASE_PERIOD             = 50000                 # default
                                                = 10000                 # nano saniye olarak realtime çevrimi

                [HAL]
                        HALFILE                 = ../common/core_stepper.hal
                        HALFILE                 = standart_pinout.hal


                [TRAJ]
                        AXES                    = 3
                        COORDINATES             = X Y Z
                        HOME                    = 0 0 0                 # her eksen için home pozisyonun koordinatı
                        LINEAR_UNITS            = 1.0
                        ANGULAR_UNITS           = 1.0
                        DEFAULT_VELOCITY        = 0.500                 # ilk hız
                        MAX_VELOCITY            = 30.0
                        DEFAULT_ACCELERATION    = 300.0                 # ilk ivme
                        MAX_ACCELERATION        = 500.0
                        PROBE_INDEX             = 0
                        PROBE_POLARITY          = 1


                [AXIS_0]
                        TYPE                    = LINEAR
                                                = ANGULAR
                        UNITS                   = 1.0
                        HOME                    = 0.0                   # HOME iÅŸleminden sonra gidilecek nokta
                        MAX_VELOCITY            = 30.0
                        MAX_ACCELERATION        = 500.0
                        STEPGEN_MAXVEL          = 35                    # MAX_VELOCITY'den br miktar büyük...
                        STEPGEN_MAXACCEL        = 520.0                 # MAX_ACCELERATION'dan bir miktar büyük...
                        BACKLASH                = 0.0
                        INPUT_SCALE             = 200 0                 # step motorda, birim ölçü için gereken sinyal sayısı
                        OUTPUT_SCALE            = 1.000 0               # servo için scale ve offset output
                        MIN_LIMIT               = -1000.0
                        MAX_LIMIT               = 1000.0
                        FERROR                  = 1.270                 # izin verilen maksimum yol takip etme hatası
                        MIN_FERROR              = 0.254                 # MIN_FERROR varsa, hıza göre FERROR ölçeklenir
                        HOME_OFFSET             = 0.0                   # HOME switch'in bulunduÄŸu koordinat
                        HOME_SEARCH_VEL         = 10.0                  # HOME switch'ini arama hızı
                                                                        # HOME switch yoksa bu deÄŸer 0 olacak
                        HOME_LATCH_VEL          = 1.0                   # HOME switch'ine dokunma hızı
                        HOME_USE_INDEX          = NO                    # eksende kullanılan enkoderın indeks sinyali var mı
                        HOME_IGNORE_LIMIT       = YES                   # HOME switch aranırken
                                                                        # LIMIT switch göz ardı edilsin mi

                [EMCSERVER]
                        EMCSERVER               = emcsvr                # program, uzak masaüstündeyse, bu satır iptal



        - /etc/X11/app-defaults/TkEmc2

                tkemc.tcl için ayar dosyası
                arayüzün nasıl görüneceğini ayarlar



* kendi hazırladığımız AXIS temelli arayüzün kullanılması

        - .ini ayarları

                cp configs/sim/axis.ini configs/sim/arayuz.ini

                configs/sim/arayuz.ini dosyasında
                        DISPLAY=arayuz


        - scripts/emc dosyasına eklenecek kod ( axis kodunun altına )

                if [ "$EMCDISPLAY" = "arayuz" ]; then
                        axis-remote --ping && axis-remote --quit
                fi


        - basit bir arayüz örneği
          dosya : bin/arayuz
          mod   : 755

                #!/usr/bin/python2.4

                import sys, os
                BASE = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), ".."))
                sys.path.insert(0, os.path.join(BASE, "lib", "python"))

                import emc

                c = emc.command()
                s = emc.stat()
                m = ''

                c.state(emc.STATE_ESTOP)
                c.state(emc.STATE_OFF)
                c.mode(emc.MODE_MANUAL)

                try:
                        while m != 'q':
                                m = raw_input("MDI> ")
                                if m == 's':
                                        c.state(emc.STATE_ESTOP)
                                        c.state(emc.STATE_OFF)
                                elif m == 'o':
                                        c.state(emc.STATE_ESTOP_RESET)
                                        c.state(emc.STATE_ON)
                                elif m == 'i':
                                        s.poll()
                                        print s.task_state
                                elif m == 'q':
                                        pass
                                elif m == 'h':
                                        c.mode(emc.MODE_MANUAL)
                                        c.home(1)
                                elif m == '':
                                        s.poll()
                                        print s.position
                                else:
                                        c.mode(emc.MODE_MDI)
                                        c.mdi(m)

                except (SystemExit, EOFError, KeyboardInterrupt): pass





* ilgili kelimeler
        emc emc2 axis emc2-axis debian sarge
        install build build-dep compile source scratch
        cnc linuxcnc step servo