Home
Part I Integrators Manual
Contents
1. make_pulses freggen 0 STEP TYPE 2 14 l l x position lt p I i rawcounts l count counter a dn je counts e latch l La wie i count l e step I steplen Pea Se stepspace update_fre date eal I dirsetup frequency m step dir dirhold z logic maxireg l maxaccel q r frequenc velocity scale l genstator TT 1 1 Id velocity 09 a l ramp e i count i l 1 STEP TYPE 0 freggen 0 i capture_position I make_pulses position scale position bx I y y i ali a up i rawcounts counter HA down counts rt latch l upan l count fe I l f j update_freq i frequency Aa maxited maxaccel vay eae H jl raueney up dn velocity l ramp p count 1 STEP TYPE 1 freggen 0 I capture_position I make_pulses posit
2. AA Dar D A AN alel Pori Commecror IN1 GND alc Bioware y yo l Jack gt 3 ING OUT8 OUTO 5 IN6 ACEX FPGA OUTS OUT GND OUT4 OUT5 LED OUT2 0UT3 INO STO ST1 GND DIR3 ST3 IN9 VCC IN10 IN12 IN14 IN15 OUTO ut OUTI DIRO GND DIR1 DIR2 ST2 GND IN8 VCC GND 1N11 IN13 GND our DUTH OUTA Figure 16 4 Pluto Step Timings dirtime dirtime stepspace steplen stepspace STEP f N N SN DIRECTION CHAPTER 16 HARDWARE DRIVERS 147 16 10 4 HAL Functions Pins and Parameters A list of all loadrt arguments HAL function names pin names and parameter names is in the manual page pluto_step 9 Chapter 17 Halui 17 1 Introduction Halui is a HAL based user interface for EMC it connects HAL pins to NML commands Most of the functionality buttons indicators etc that is provided by a traditional GUI mini Axis etc is provided by HAL pins in Halui The easiest way to use halui is to modify your ini file to include HALUI halui in the HAL section 17 2 Halui pin reference 17 2 1 Machine e 317 halui machine on pin for requestiong machine on e 317 halui machine off pin for requesting machine off e 817 halui machine is on indicates machine on 17 2 2 E Stop e 317 halui estop activate pin for requesting E Stop e 317 halui estop reset pin for requesting E Stop reset e 317 h
3. J y hay parport 0 configured as input LX L 3 3 3 3 S e E a S lt SE NE LE eE Elo gt 5 lelsllns llos es y 3 fs E Ss gt S En s e slo sy E E A E al ale A os ale we 7 e L DCSAOSCGOGOOCOOG SY ASAS EY A Y EY A NAS QDAOOQQOOQOLIOCIE O i co mM N j E IN lt Re IN a A 2 IN o 3 iZ la ll ll ll bl bl ll ll ll ll Ll 5 3 if ae AA a v 2 z c z c c x E E a 2 E 3 E 28 E aU E El a a E 2 S INICIA CIMEINE gt E pa be io Ed N 2 as Sl El fal s S 8 8 8 fs 3 El E ll ls ls 3 da fa a a 3 gt co lt o Lo m N ES a ja isl a fa a fa a a fg fa Figure 16 1 Parport Block Diagram CHAPTER 16 HARDWARE DRIVERS 128 16 1 4 Functions e FUNCT parport lt portnum gt read Reads physical input pins of port lt portnum gt and up dates HAL in and i
4. o o co Lo lt e SN o oO wi lt faa o o wn wn E oO oO a lt ii oa a E N o o co Ko wo lt ma N o E wi lt faa o o N N i Z Z a 5 a a mn Figure 15 6 Five Phase Step Types CHAPTER 15 INTERNAL COMPONENTS 115 15 2 PWMgen This component provides software based generation of PWM Pulse Width Modulation and PDM Pulse Density Modulation waveforms It is a realtime component only and depending on CPU speed etc is capable of PWM frequencies from a few hundred Hertz at pretty good resolution to perhaps 10KHz with limited resolution 15 2 1 Installing emc2 halcmd loadrt pwmgen output_type lt config array gt lt config array gt is a series of comma separated decimal integers Each number causes a single PWM generator to be loaded the value of the number determines the output type For example emc2 halcmd loadrt pwmgen step _type 0 1 2 will install three PWM generators The first one will use output type 0 PWM only the next uses output type 1 PWM and direction and the last one uses output type 2 UP and DOWN There is no default value if lt config array gt is not specified no PWM generators will be installed The maximum number of frequency generators is 8 as defined by MAX_CHAN in pwmgen c Each generator is independent but all are updated by
5. m5i20 card connector P4 Function HAL pin Secondary Function HAL pin 1 in 16 enc 00 index mask 3 in 17 enc 01 index mask 5 in 18 enc 02 index mask 7 in 19 enc 03 index mask 9 in 20 11 in 21 13 in 22 15 in 23 17 in 24 enc 04 index mask 19 in 25 enc 05 index mask 21 in 26 enc 06 index mask 23 in 27 enc 07 index mask 25 in 28 27 in 29 29 in 30 31 in 31 33 out 08 35 out 09 37 out 10 39 out 11 41 out 12 43 out 13 45 out 14 47 out 15 49 Power 5 V or 3 3V all even pins Ground 16 5 4 4 LEDs 136 The status LEDs will monitor one motion channel set by the m5i20 lt board gt 1led view parameter A call to m5i20 lt board gt misc update is required to update the viewed channel LED name Output LEDO IRQLatch LED1 enc lt channel gt A LED2 enc lt channel gt B LED3 enc lt channel gt index LED4 dac lt channel gt DIR LED5 dac lt channel gt LED6 dac lt channel gt enable LED7 watchdog timeout 16 6 Vital Systems Motenc 100 and Motenc LITE The Vital Systems Motenc 100 and Motenc LITE are 8 and 4 channel servo control boards The Motenc 100 provides 8 quadrature encoder counters 8 analog inputs 8 analog outputs 64 68 digital inputs and 32 digital outputs The Motenc LITE has only 4 encoder counters 32 digital inputs and 16 digital outputs but it still has 8 analog inputs and 8 analog outputs The d
6. ma 4 4 3 8 HOME SEQUENCE so cece cnrs lt lt ee e DAG ho meee tage t hace neat ne ead haa bee ede ee dee de i 4 5 1 DCTS PIE 0 a Boe e Bo ew a OP AO ale ao 4 5 EMC2 and HAL 5 1 5 2 5 3 motion realtime s RR Re ew DL ee eae 5 1 1 P A wk Ge ER A A A RR AAA Se a 5 1 2 ec A Et GS oe es ye Ss a Ae a ia Sus ta 6 eee ae es ee a OG me a aE Ge wl axis N realtime ek ee a kada eke we ee a ewe we es a 5 2 1 Ping AAA 5 2 2 POPE eG See OE ERO ae eee Oe A A a ee iocontrol us rspace reco RR a AR A Ea a eae ba hd Pa bw hoa Ge Add a a A AA VI HAL Specifics 6 Introduction 6 1 6 2 6 3 6 4 WITT HAL a a AAA E A A A SEES bE wh 6 1 1 HAL is based on traditional system design techniques 6 111 PASA rr Me we we RR 6 1 1 2 Interconnection DESEA coo 200 e a eee Res 6 1 1 3 TIME AION o eor k o ce ee Bo a we OP ee a s we ew Ae 61 14 TEB DE coi osorno O Oe Be aa 6 1 2 oa A E we a ee ee HAL CONCEPTS sis RE A OR BG A HR ee ae wa ee HAL COMORES vido at Re SRSA SHEE a a oe eA Se le a 6 3 1 External Programs with HAL Books s o 0 0526 e bee Re dw ek ew 6 3 2 Internal Components caos a HERDER Oe wees 6 3 3 Hardware Drivers co fa we ee a oe a ae ee ee a 6 3 4 Tools and VOTES lt lt dios a ER oe Ow A a Be ee ee a Tinkertoys Erector Sets Legos and the HAL 31 31 33 33 33 33 33 33 34 34 35 35 35 36 36 36 36 37 38 38 39 CON
7. user manual net homeswitches lt parport 0 pin 10 in net homeswitches gt axis 0 home sw in net homeswitches gt axis 1 home sw in net homeswitches gt axis 2 home sw in Sample separate limit switches on the X axis axis 0 net X neg limit parport 0 pin 11 in gt axis 0 neg lim sw in net X pos limit parport 0 pin 12 in gt axis 0 pos lim sw in Just like the shared home switches example you can wire together limit switches Beware if you hit one EMC will stop but can t tell you which switch axis has faulted Use caution when recovering from this net Xlimits parport 0 pin 13 in gt axis 0 neg lim sw in axis 0 pos lim sw in The files starting with are comments and their only purpose is to guide the reader through the file 13 3 2 Overview of the standard_pinout hal There are a couple of operations that get executed when the standard_pinout hal gets executed interpreted CHAPTER 13 BASIC CONFIGURATIONS FOR A STEPPER BASED SYSTEM 100 p The Parport driver gets loaded see 16 1 for details The read amp write functions of the parport driver get assigned to the Base thread 3 The step amp direction signals for axes X Y Z get linked to pins on the parport Further IO signals get connected e stop loopback toolchanger loopback a A o N A spindle On
8. CHAPTER 18 VIRTUAL CONTROL PANELS 158 18 5 8 Spinbox Spinbox controls a FLOAT pin You increase or decrease the value of the pin by resolution by either pressing on the arrows or pointing at the spinbox and rolling your mouse wheel lt spinbox gt lt halpin gt my spinbox lt halpin gt lt min_ gt 12 lt min_ gt lt max_ gt 33 lt max_ gt lt resolution gt 0 1 lt resolution gt lt format gt 2 3f lt format gt lt font gt Arial 30 lt font gt 3 200 18 5 9 Scale Scale controls a FLOAT pin You increase or decrease the value of the pin be either dragging the slider or pointing at the scale and rolling your mouse wheel lt scale gt lt halpin gt my scale lt halpin gt lt resolution gt 0 1 lt resolution gt lt orient gt HORIZONTAL lt orient gt lt min_ gt 33 lt min_ gt lt max_ gt 26 lt max_ gt lt scale gt 18 5 10 Jogwheel Jogwheel mimics a real jogwheel by outputting a FLOAT pin which counts up or down as the wheel is turned either by dragging in a circular motion or by rolling the mouse wheel lt jogwheel gt lt halpin gt my wheel lt halpin gt lt cpr gt 45 lt cpr gt lt size gt 250 lt size gt lt jogwheel gt CHAPTER 18 VIRTUAL CONTROL PANELS 159 18 6 pyVCP Container reference Containers are widgets that contain other widgets 18 6 1 Hbox Use a Hbox when you want to stack widgets horizontally next to each other lt hbox gt lt label gt lt text
9. Pe Jo Dec 24 4 2 The Section Display window Most of the buttons are self explanitory The config button is not used in EMC The symbols button will display an editable list of symbols for the variables eg you can name the inputs outputs coils etc The symbols window will display the HAL signal names if present for I Q and W variables The quit button will only shut down the display the ladder program will still run in the back ground The check box at the top right allows you to select whether variable names or symbol names are displayed CHAPTER 24 CLASSICLADDER 186 Figure 24 2 ClassicLadder Section Display window E Section Display E 24 4 3 The Section Manager window This window allows you to name create or delete sections This is also how you name a subroutine for call coils Figure 24 3 ClassicLadder Section Manager window EJ Sections Manager fa acu aaa Section Name Language Type debug Add section Delete section 24 4 4 The Editor window Starting from the top left image E D a F WwW N SELECTOR ARROW ERASER N O N C RISING EDGE FALLING EDGE CONTACTS HORIZONTAL VERTICAL HORIZONTAL RUNNING CONNECTIONS TIMER MONOSTABLE COUNTER COMPARE N O COIL N C COIL SET COIL RESET COIL JUMP COIL CALL COIL OPERATE CHAPTER 24 CLASSICLADDER 187 Figure 24 4 ClassicLadder Editor window ok m O O
10. Ubuntu is released regularly and predictably a new release is made every six months You can use the current stable release or help improve the current development release e The Ubuntu community is entirely committed to the principles of free software development we encourage people to use open source software improve it and pass it on 2 2 EMC2 Live CD The EMC2 team now has a custom Live CD based on Ubuntu 6 06 and 8 04 that will let you try out EMC2 before installing and it s also the easiest way to install Ubuntu and EMC2 together Just download the ISO from www linuxenc org and burn it to a CD When you boot the CD on your machine you can see and experiment with the exact environment and EMC2 software that you will have if you choose to install it If you like what you see just click the Install icon on the desktop answer a few questions your name timezone password and the install completes in a few minutes This install gives you all the benefits of the community supported Ubuntu distribution as well as being automatically configured for EMC2 As new Ubuntu updates or EMC2 releases are made the Update manager will let you know and allow you to easily upgrade l Ubuntu is an ancient African word meaning humanity to others Ubuntu also means I am what I am because of who we all are The Ubuntu Linux distribution brings the spirit of Ubuntu to the software world You can read more about it at http ww
11. halcmd start Now the signal generator is running Let s look at its output pins halcmd show pin Component Pins Owner Type Dir Value Name 32769 float OUT 2 12177e 01 siggen 0 cosine 32769 float OUT 5 64055e 01 siggen 0 sawtooth 32769 float OUT 9 79820e 01 siggen 0 sine 32769 float OUT 1 00000e 00 siggen 0 square 32769 float OUT 1 28110e 01 siggen 0 triangle halcmd show pin Component Pins Owner Type Dir Value Name 32769 float OUT 5 19530e 01 siggen 0 cosine 32769 float OUT 6 73893e 01 siggen 0 sawtooth 32769 float OUT 8 54452e 01 siggen 0 sine 32769 float OUT 1 00000e 00 siggen 0 square 32769 float OUT 3 47785e 01 siggen 0 triangle CHAPTER 7 HAL TUTORIAL 51 We did two show pin commands in quick succession and you can see that the outputs are no longer zero The sine cosine sawtooth and triangle outputs are changing constantly The square output is also working however it simply switches from 1 0 to 1 0 every cycle 7 3 4 Changing parameters The real power of HAL is that you can change things For example we can use the setp command to set the value of a parameter Let s change the amplitude of the signal generator from 1 0 to 5 0 halcmd setp siggen 0 amplitude 5 emc2 Check the parameters and pins again halcmd setp siggen 0 amplitude 5 halcmd show param Parameters Owner Type Dir Value Name 32769 float RW 5 00000e 00 siggen 0 amplitude 32769 float RW 1 00000e 00 siggen
12. Pgain Proportional gain Igain Integral gain Dgain Derivative gain bias Constant offset on output FFO Zeroth order feedforward output proportional to command FF1 First order feedforward output proportional to derivative of FF2 Second order feedforward output proportional to 2nd deriva tive of command acceleration eo F eo F e F eo F eo F o F eo F LOAT LOAT LOAT LOAT LOAT LOAT LOAT pid lt pid pid pid pid pid pid lt 1 lt Loopnum gt loopnum gt loopnum gt loopnum gt loopnum gt loopnum gt oopnum gt deadband Amount of error that will be ignored maxerror Limit on error maxerrorl Limit on error integrator maxerrorD Limit on error derivative maxcmdD Limit on command derivative maxcmdDD Limit on command 2nd derivative maxoutput Limit on output value All of the max limits are implemented such that if the parameter value is zero there is no limit If debug 1 was specified when the component was installed four additional parameters will be exported e FLOAT pid e FLOAT pid e FLOAT pid e FLOAT pid lt L lt lt L lt loopnum gt loopnum gt 15 4 5 Functions oopnum gt oopnum gt error Integral of error errorD Derivative of error commandD Derivative of the command commandDD 2nd derivati
13. create a signal for the estop loopback net estop loop iocontrol 0 user enable out iocontrol 0 emc enable in create signals for tool loading loopback net tool prep loop iocontrol 0 tool prepare iocontrol 0 tool prepared net tool change loop iocontrol 0 tool change iocontrol 0 tool changed connect spindle on motion controller pin to a physical pin net spindle on motion spindle on gt parport 0 pin 09 9 out INote we are only presenting one axis to keep it short all others are similar 2Refer to section 16 1 for additional information CHAPTER 13 BASIC CONFIGURATIONS FOR A STEPPER BASED SYSTEM 99 You might use something like this to enable chopper drives when machine ON the Xen signal is defined in core_stepper hal net Xen gt parport 0 pin 01 out If you want active low for this pin invert it like this setp parport 0 pin 01 out invert 1 A sample home switch on the X axis axis 0 make a signal link the incoming parport pin to the signal then link the signal to EMC s axis 0 home switch input pin net Xhome parport 0 pin 10 in gt axis 0 home sw in Shared home switches all on one parallel port pin that s ok hook the same signal to all the axes but be sure to set HOME_IS_SHARED and HOME_SEQUENCE in the ini file See the
14. loadrt classicladder_rt addf classicladder 0 refresh servo thread 24 3 2 Variables It is possible to configure the number of each type of ladder object while loading the classicladder realtime module If you do not configure the number of ladder objects ClassicLadder will use the default values Table 24 1 ClassicLadder realtime component options Object name variable name Default value Number of rungs numRungs 100 Number of bits numBits 500 Number of word variables numWords 100 Number of timers numTimers 10 Number of monostables numMonostables 10 Number of counters numCounters 10 Number of hal inputs bit pins numPhysInputs 15 Number of hal output bit pins numPhysOuputs 15 Number of arithmetic expressions numArithmExpr 50 Number of sections numSections 10 Number of symbols numSymbols 100 Number of S32 inputs numS32in 0 Number of S32 outputs numS32out 0 Ifyou do not configure the number of ladder objects classicladder will use the default values Objects of most interest are numPhysInputs and numPhysOutputs Changing these numbers will change the number of HAL bit pins available For example loadrt classicladder_rt numRungs 12 numBits 100 numWords 10 numTimers 10 numMonostables 10 numCounters 10 numPhysInputs 10 numPhysOutputs 10 numArithmExpr 100 numSections 4 numSymbols 200 24 3 3 Loading the ClassicLadder user module Th
15. 134 If you are using in 00 to in 11 as general purpose IO then reading enc lt 4 7 gt will produce some random junk number CHAPTER 16 HARDWARE DRIVERS m5i20 card connector P3 Function HAL pin Secondary Function HAL pin 1 in 00 enc 04 A input 3 in 01 enc 04 B input 5 in 02 enc 04 index input 7 in 03 enc 05 A input 9 in 04 enc 05 B input 11 in 05 enc 05 index input 13 in 06 enc 06 A input 15 in 07 enc 06 B input 17 in 08 enc 06 index input 19 in 09 enc 07 A input 21 in 10 enc 07 B input 23 in 11 enc 07 index input 25 in 12 27 in 13 29 in 14 31 in 15 33 out 00 35 out 01 37 out 02 39 out 03 41 out 04 43 out 05 45 out 06 47 out 07 49 Power 5 V or 3 3V all even pins Ground 16 5 4 3 Connector P4 135 The index mask masks the index input of the encoder so that the encoder index can be combined with a mechanical switch or opto detector to clear or latch the encoder counter only when the mask input bit is in proper state selected by mask polarity bit and encoder index occurs This is useful for homing The behaviour of these pins is controlled by the Counter Control Register CCR however there is currently no function in the driver to change the CCR See REGMAP4 for a description of the CCR emc2 src hal drivers m5i20 REGMAP4E CHAPTER 16 HARDWARE DRIVERS
16. 2 quadrature and runs in velocity mode The default value for lt config array gt is 0 0 0 which will install three type 0 step dir generators The maximum number of step generators is 8 as defined by MAX_CHAN in stepgen c Each generator is independent but all are updated by the same function s at the same time In the following descriptions lt chan gt is the number of a specific generator The first generator is number 0 106 CHAPTER 15 INTERNAL COMPONENTS 107 H capture_position i rawcounts i i i counts dr f latch 1 i position b G gt ste
17. E GOO Z 1 No tool Position Relative Actual Figure 1 2 The AXIS Graphical Interface to the motors For servo systems the output is based on a PID compensation algorithm For stepper systems the calculations run open loop and pulses are sent to the steppers based on whether their accumulated position is more than a pulse away from their commanded position The motion controller includes programmable software limits and interfaces to hardware limit and home switches The motion controller is written to be fairly generic Initialization files with the same syntax as Microsoft Windows INI files are used to configure parameters such as number and type of axes e g linear or rotary scale factors between feedback devices e g encoder counts and axis units e g millimeters servo gains servo and trajectory planning cycle times and other system parameters Complex kinematics for robots can be coded in C according to a prescribed interface to replace the default 3 axis Cartesian machine kinematics routines 1 5 3 Discrete I O Controller EMCIO Discrete I O controllers are highly machine specific and are not customizable in general using the INI file technique used to configure the more generic motion controller However since EMC2 CHAPTER 1 THE ENHANCED MACHINE CONTROL 7 keystick FL Estop On Off FS HDI Mode PS Spend Fwd OFF SC Aborts Actions F2 Machine OnO0ff FA Reset Interp FIO Spndl Rev OFF TR Selects Params F
18. Installed method 3 4 1 Downloading the CVS version If you wish to use the TRUNK version of EMC2 or the latest branch version of EMC2 please follow the instructions on our wiki site to obtain the source code http wiki linuxcnc org cgi bin emcinfo pl CVS 3 5 Installed EMC2 follows the standard way of compiling Linux software To compile it simply go to the sources folder cd emc2 src and issue these commands emc2 src configure emc2 src make amp amp sudo make install To run it simply type emc CHAPTER 3 COMPILING FROM SOURCE 19 3 6 Run in place If you want only to test the software before installing it or if you re worried about overwriting an existing installation there is a Run In Place RIP mode which you can try out In this mode there is no installation step and no files are placed outside the top directory emc2 in this example cd emc2 src and issue these commands emc2 srcS configur nable run in plac emc2 src make amp amp sudo make setuid In a shell session where you want to use the run in place version of EMC execute emc2 src emc2 scripts emc environment By putting this command in a shell start up script such as bash_profile you do not need to manually run it in each terminal window Until you close that terminal it will be set up so that the programs and manual pages from the Run In Place directory are available without referring to
19. Manual Hode Ff Hist On DFF PA Spend Decrease BM Quits Display Fa Auto Mode FB Flood On Off Fl Spndl Increase FF Toggles Help AUTO HOMED Override 100 LUBE ON J m i Tool a LUBE Ok MIST OFF Speed 560 0 Offset 0 0000 FLOOD OFF Incr continuous Relative Act Post Program Linet Command Interpreter TILE Modal G Codes G80 619 640 620 690 694 Gh4 649 699 61 1 Modal M Codes H4 MO M46 FO S e EMC HAL SIM EHC Version 1 2 Figure 1 3 The Keystick interface uses the HAL reconfiguration of the I O subsystem has become very powerful and flexible EMC2 contains a Programmable Logic Controller module behaves just like a hardware PLC that can be used for very complex scenarios tool changers etc In EMC2 there is only one big I O controller which provides support for all kinds of actions and hardware control All its outputs and inputs are HAL pins more on this later on so you can use only the subset that fits your hardware and is necessary for your application 1 5 4 Task Executor EMCTASK The Task Executor is responsible for interpreting G and M code programs whose behavior does not vary appreciably between machines G code programming is designed to work like a machinist might work The motion or turns of a hand wheel are coded into blocks If a machinist wanted his mill to move an inch in the X direction at some feed rate he might slowly turn the hand wheel five turns clockwise in
20. e D E A short description of each of the buttons The SELECTOR ARROW button allows you to select existing objects and modify the informa tion The ERASER erases an object The N O CONTACT is a normally open contact It can be an extenal HAL pin 1 input contact an internal bit coil B contact or a external coil Q contact The Hal pin input contact is closed when the HAL pin is true The coil contacts are closed when the coresponding coil is active Y4Q2 contact closes when Q2 coil is active The N C CONTACT is a normally closed contact It is the same as the n o contact except that the contact is open when the hal pin is true or the coil is active The RISING EDGE CONTACT is a contact that is closed when the HAL pin goes from False to true or the coil from not active to active The FALLING EDGE CONTACT is a contact that is closed when the HAL pin goes from true to false or the coil from active to not The HORIZONTAL CONNECTION connects the signal to objects horizontally The VERTICAL CONNECTION connects the signal to objects vertically The HORIZONTAL RUNNING CONNECTION is a quick way to connect a long run of signal wire horizontally The TIMER is a Timer Module The MONOSTABLE is monostable module one shot The COUNTER is a counter module CHAPTER 24 CLASSICLADDER 188 e The COMPARE button allows you to compare variable to values or other variables eg W1 lt 5 or W1 W2
21. 18 3 Security of pyVCP Parts of pyVCP files are evaluated as Python code and can take any action available to Python programs Only use pyVCP xml files from a source that you trust 18 4 Using pyVCP with AXIS Since AXIS uses the same GUI toolkit Tkinter as pyVCP it is possible to include a pyVCP panel on the right side of the normal AXIS user interface A typical example is explained below Place your pyVCP XML file describing the panel in the same directory where your ini file is Say we we want to display the current spindle speed using a Bar widget Place the following in a file called spindle xml lt pyvcp gt lt label gt lt text gt Spindle speed lt text gt lt label gt lt bar gt lt halpin gt spindle speed lt halpin gt lt max_ gt 5000 lt max_ gt lt bar gt lt pyvcp gt Here we ve made a panel with a Label and a Bar widget specified that the HAL pin connected to the Bar should be named spindle speed and set the maximum value of the bar to 5000 see widget reference below for all options To make AXIS aware of this file and call it at start up we need to specify the following in the DISPLAY section of the ini file PYVCP spindle xml To make our widget actually display the spindle speed it needs to be hooked up to the appropriate HAL signal A hal file that will be run once AXIS and pyVCP have started can be specified in the HAL section of the ini file POSTGUI_HALFILE spindl
22. But much of what happens is far too fast to see with halmeter To take a closer look at what is going on inside the HAL we want an oscilloscope Fortunately HAL has one called halscope 7 6 1 Starting Halscope Halscope has two parts a realtime part that is loaded as a kernel module and a user part that supplies the GUI and display However you don t need to worry about this because the userspace portion will automatically request that the realtime part be loaded halcmd loadusr halscope The scope GUI window will open immediately followed by a Realtime function not linked dialog that looks like figure 7 4 This dialog is where you set the sampling rate for the oscilloscope For now we want to sample once per millisecond so click on the 1 03mS thread slow formerly siggen thread see footnote and leave the multiplier at 1 We will also leave the record length at 4047 samples so that we can use up to four channels at one time When you select a thread and then click OK the dialog disappears and the scope window looks something like figure 7 5 5Several of these screen captures refer to threads named siggen thread and stepgen thread instead of slow and fast When the screenshots were captured the threads component didn t exist and a different method was used to create threads giving them different names Also the screenshots show pins etc as stepgen xxx rather th
23. Rising Source None Figure 7 5 Initial scope window 60 CHAPTER 7 HAL TUTORIAL 61 7 6 2 Hooking up the scope probes At this point Halscope is ready to use We have already selected a sample rate and record length so the next step is to decide what to look at This is equivalent to hooking virtual scope probes to the HAL Halscope has 16 channels but the number you can use at any one time depends on the record length more channels means shorter records since the memory available for the record is fixed at approximately 16 000 samples The channel buttons run across the bottom of the halscope screen Click button 1 and you will see the Select Channel Source dialog figure 7 6 This dialog is very similar to the one used by Halmeter We would like to look at the signals we defined earlier so we click on the Signals tab and the dialog displays all of the signals in the HAL only two for this example MA Select Channel Source Ex selecta pin signal or parameter as the source for channel 1 Pins Signals Parameters siggen 1 cosine siggen 1 sine siggen 1 square siggen 1 triangle stepgen 1 counts stepgen 1 dir stepgen 1 position stepgen 1 step stepgen 1 velocity stepgen 2 counts stepgen 2 dir Cancel Figure 7 6 Select Channel Source dialog To choose a signal just click on it In this case we want to use channel 1 to display the signal X_ve
24. THE ENHANCED MACHINE CONTROL 11 Figure 1 7 EMC2 Process Diagram PC EMC Process overly Simplified GUI G CODE lA meme TkErnc Servo to Go Card or Es Printer Port Motion Control Roulines Drivers for Axis Motors Motors m Servo or Stepper Machine Leadscrews Axis he Actuators stopped running As you work your way through this text you will be learning bit by bit how to set up and run a machine with your copy of the EMC2 software While you are learning about setting up and running a mini mill here you will be thinking of other applications and other capabilities These are the topics of the other linuxcnc org handbooks 1 6 Thinking Like An Integrator The biggest task of a machine integrator is figuring out how to connect a PC running the EMC2 to a machine and configuring the software so that it runs the machine correctly 1 6 1 Units Units can be confusing You might ask Does it work in inches feet centimeters millimeters or what There are several possible answers to this question but the best one is that it works in the units that you set it to work in At a machine level we set each axis s units to some value using an INI variable that looks like this UNITS inch or CHAPTER 1 THE ENHANCED MACHINE CONTROL 12 UNITS mm After we have decided upon a value for the units for an axis we tell the EMC2 how may step pulses or encoder pulses it should send or read for ea
25. The variable you can use are W words T timers M monostables C counters X sequential and their attributes D done E empty F full P preset R running and V value not all atributes are available to all variables eg T2 D The math symbols are lt gt lt gt 1 exponent modulas amp and or not Math function are ABS absolute MOY average eg ABS W2 1 MOY W1 W2 lt 3 Compare cannot be placed in the right most side of the section display The OPERATE button allows you to assign values to variables eg W2 7 or W1 W2 there are two math funtions MINI and MAXI that check a variable for maximum 0x80000000 and minimum values OxO5FFFFFFF think signed values and keeps them from going beyond You may use all the math symbols and functions from above OPERATE funtions can only be placed at the right most side of the section display 24 5 ClassicLadder Variables List of known variables Bxxx Bit memory xxx boolean Wxxx Word memory xxx 32 bits integer Txx R Timer xx running boolean user read only Txx D Timer xx done boolean user read only Txx V Timer xx current value integer user read only Txx P Timer xx preset integer Mxx R Monostable xx running boolean Mxx V Monostable xx current value integer user read only Mxx P Monostable xx preset integer Cxx D Counter xx done boolean user read only Cxx E Counter xx empty overflow boolean user read
26. Unlike the others it does not need floating point math The last function freqgen update_freq is responsible for doing scaling and some other calcula tions that need to be performed only when the frequency command changes What this means for our example is that we want to run siggen 0 update at a moderate rate to calculate the sine and cosine values Immediately after we run siggen 0 update we want to run freqgen update_freq to load the new values into the step pulse generator Finally we need to run freqgen make_pulses as fast as possible for smooth pulses Because we don t use position feedback we don t need to run freqgen capture_position at all We run functions by adding them to threads Each thread runs at a specific rate Let s see what threads we have available CHAPTER 7 HAL TUTORIAL 58 halcmd show thread Realtime Threads Period FP Name 1005720 YES slow 207 0 50286 NO fast 0 O The two threads were created when we loaded threads The first one slow runs every millisec ond and is capable of running floating point functions We will use it for siggen 0 update and freqgen update_freq The second thread is fast which runs every 50 microseconds and does not support floating point We will use it for freqgen make_pulses To connect the functions to the proper thread we use the addf command We specify the function first followed by the thread halcmd addf siggen 0 update slow halcmd addf freqg
27. comp will write all this code for you automatically Compiling a HAL component is also much easier when using comp whether the component is part of the emc2 source tree or outside it For instance the ddt portion of blocks is around 80 lines of code The equivalent component is very short when written using the comp preprocessor component ddt Compute the derivative of the input function pin in float in pin out float out variable float old function _ license GPL float tmp in out tmp old fperiod old tmp and it can be compiled and installed very easily by simply placing ddt comp in src hal components and running make or by placing it anywhere on the system and running comp install ddt comp 11 2 Definitions component A component is a single real time module which is loaded with halcmd loadrt One comp file specifies one component instance A component can have zero or more instances Each instance of a component is created equal they all have the same pins parameters functions and data but behave independently when their pins parameters and data have different values singleton It is possible for a component to be a singleton in which case exactly one instance is created It seldom makes sense to write a singleton component unless there can literally only be a single object of that kind in the system for instance a component whose purpose is to provide a pin with
28. encoder lt channel gt delta Change in counts since last read FLOAT ppmc lt port gt encoder lt channel gt position Encoder position in user units BIT ppmc lt port gt encoder lt channel gt index Something to do with index pulse BIT ppmc lt port gt pwm lt channel gt enable Enables a PWM generator FLOAT ppmc lt port gt pwm lt channel gt value Value which determines the duty cycle of the PWM waveforms The value is divided by pwm lt channel gt scale and if the result is 0 6 the duty cycle will be 60 and so on Negative values result in the duty cycle being based on the absolute value and the direction pin is set to indicate negative BIT ppmc lt port gt stepgen lt channel gt enable Enables a step pulse generator FLOAT ppmc lt port gt stepgen lt channel gt velocit y Value which determines the step fre quency The value is multiplied by stepgen lt channel gt scale and the result is the frequency in steps per second Negative values result in the frequency being based on the absolute value and the direction pin is set to indicate negative BIT ppmc lt port gt in lt channel gt State of digital input pin see canonical digital input BIT ppmc lt port gt in lt channel gt not Inverted state of digital input pin see canonical digital input BIT ppmc lt port gt out lt channel gt Value to be written to digital output seen canonical dig
29. halui feed override decrease pin for decreasing the FO scale 17 2 10 Spindle override e FLOAT halui spindle override value current SO value e FLOAT halui spindle override scale pin for setting the scale on changing the SO e S32 halui spindle override counts counts from an encoder for example to change SO e BIT halui spindle override increase pin for increasing the SO scale e BIT halui spindle override decrease pin for decreasing the SO scale 17 2 11 Tool e U32 halui tool number indicates current selected tool e FLOAT halui tool length offset indicates current applied tool length offset CHAPTER 17 HALUI 151 17 2 12 Program e 317 halui program is idle e 317 halui program is running e 317 halui program is paused e 317 halui program run e 317 halui program pause e 317 halui program resume e 317 halui program step 17 2 13 General e BIT halui abort pin to send an abort message clears out most errors 17 2 14 MDI Sometimes the user wants to add more complicated tasks to be performed by the activation of a HAL pin This is possible using the following MDI commands scheme e a MDI_COMMAND is added to the ini in the section HALUI e g HALUI MDI_ COMMAND GO XO e when halui starts it will read detect the MDI_COMMAND fields in the ini and export pins of type 817 halui mdi command lt nr gt lt nr gt is a number from 00 to the number of MDI_COMMAND
30. the motion controller can determine that there has probably been a failure to meet its timing constraints Each time such a failure is detected this value is incremented motion debug bit O motion debug bit 1 motion debug float 0 motion debug float 1 These values are used for debugging purposes 5 1 3 Functions Generally these functions are both added to the servo thread in the order shown motion command handler Processes motion commands coming from user space motion controller Runs the EMC motion controller 5 2 axis N realtime These pins and parameters are created by the real time motmod module These are actually joint values but the pins and parameters are still called axis N They are read and updated by the motion controller function 5 2 1 Pins axis N amp enable out OUT bit TRUE if the amplifier for this joint should be enabled axis N amp fault in IN bit Should be driven TRUE if an external fault is detected with the amplifier for this joint axis N home sw in IN bit Should be driven TRUE if the home switch for this joint is closed axis N homing OUT bit TRUE if the joint is currently homing axis N pos lim sw in IN bit Should be driven TRUE if the positive limit switch for this joint is closed ln trivial kinematics machines there is a one to one correspondence between joints and axes CHAPTER 5 EMC2 AND HAL 37 axis N neg lim sw in IN bit Should be driven TRUE if the negative limit switch for this
31. under Gtk to see if my first idea to realise all this works And as quickly I ve found that it advanced quite well I ve continued with more complex elements timer multiples rungs etc Voila here is this work and more I ve continued to add features since then ClassicLadder has been adapted to work with emc2 s HAL and is currently beeing distributed along with emc2 If there are issues problems bugs please report them to the Enhanced Machine Controller project 24 2 Languages The most common language used when working with ClassicLadder is ladder ClassicLadder allows one to use other variants like sequential function chart Grafcet too however those aren t covered by the current documentation In the next chapters the main components of ClassicLadder will be described 24 3 Starting ClassicLadder There are 2 components belonging to ClassicLadder e The realtime module classicladder_rt e The userspace module along with a GUI classicladder 182 CHAPTER 24 CLASSICLADDER 183 24 3 1 Realtime Module Loading the ClassicLadder realtime module classicladder_rt is possible from a halfile or directly using a halemd instruction You must add two lines to your hal file for ClassicLadder to func tion The first line loads real time the ClassicLadder module The second line adds the function classicladder O refresh to the servo thread This makes ClassicLadder update at the servo thread rate
32. 0 00000e 00 X_vel lt siggen 0 cosine When a signal is connected to one or more pins the show command lists the pins immediately following the signal name The arrow shows the direction of data flow in this case data flows from pin siggen 0 cosine to signal X_vel Now let s connect the X_vel to the velocity input of a step pulse generator halcmd net X_vel gt freqgen 0 velocity We can also connect up the Y axis signal y_vel It is intended to run from the sine output of the sig nal generator to the input of the second step pulse generator The following command accomplishes in one line what two net commands accomplished for X_vel CHAPTER 7 HAL TUTORIAL 57 halcmd net Y vel siggen 0 sine gt freqgen 1 velocity Now let s take a final look at the signals and the pins connected to them halcmd show sig Signals Type Value Name float 0 00000e 00 X_ vel lt siggen 0 cosine gt freqgen 0 velocity float 0 00000e 00 Y vel lt siggen 0 sine gt freqgen 1 velocity The show sig command makes it clear exactly how data flows through the HAL For example the X_vel signal comes from pin siggen 0 cosine and goes to pin freqgen 0 velocity 7 5 3 Setting up realtime execution threads and functions Thinking about data flowing through wires makes pins and signals fairly easy to understand Threads and functions are a little more difficult Functions contain the computer instruction
33. 0 frequency 32769 float RW 0 00000e 00 siggen 0 offset 32769 32 RO 397 siggen 0 update time 32769 s32 RW 109100 siggen 0 update tmax halcmd show pin Component Pins Owner Type Dir Value Name 32769 float OUT 4 78453e 00 siggen 0 cosine 32769 float OUT 4 53106e 00 siggen 0 sawtooth 32769 float OUT 1 45198e 00 siggen 0 sine 32769 float OUT 5 00000e 00 siggen 0 square 32769 float OUT 4 02213e 00 siggen 0 triangle Note that the value of parameter siggen 0 amplitude has changed to 5 000 and that the pins now have larger values 7 3 5 Saving the HAL configuration Most of what we have done with halcmd so far has simply been viewing things with the show command However two of the commands actually changed things As we design more complex systems with HAL we will use many commands to configure things just the way we want them HAL has the memory of an elephant and will retain that configuration until we shut it down But what about next time We don t want to manually enter a bunch of commands every time we want to use the system We can save the configuration of the entire HAL with a single command halcmd save components loadrt threads namel test thread period1 1000000 loadrt siggen signals links parameter values setp siggen 0 amplitude 5 00000e 00 setp siggen 0 frequency 1 00000e 00 CHAPTER 7 HAL TUTORIAL 52 setp siggen 0 offset 0 00000e 00 realtime thread function links addf siggen
34. 13 2 Maximum step Tale kb EPR ES a Swe a ee ke ok 97 o AI he he hs aie aE Bs des A be ai EGE Se Ge aw AE ew te eda wea 98 CONTENTS 13 3 1 standard pinout bal orei aa i eai REA a ee es a amp 13 3 2 Overview of the standard_pinout hal 13 3 3 Changing the standard_pinout hal o 13 3 4 Changing the polarity of a signal saaa o 13 3 5 Adding PWM Spindle Speed Control o 13 3 6 Adding an enable signal a a 13 3 7 Adding an external E STOP button 14 HAL Components 14 1 Commands and Userspace Components 14 2 Realtime components and kernel modules o 15 Internal Components 15 2 OPN raro a IR A A A wa a dd le Re 15 1 INSISIBOS sisas a a A A A ED de x ISL REMOVE i aa a A A E a ad a ae a E O EE USE Fara OS o A AA A A A DED E eh G Ss 15 15 EP TYPOS vs una aoe oS a aS eae a e A A WIG o INE SL PAME da ASA A AAA A di o A e 8s 152 1 Jostallng ok pe ek SR a a ew ae we A ew Se ee ee e a i fee dk ea Nee eda Seeds eee ew eh ee ED ea aS ISAS AI EEE E Parameter AAA 15 25 Oulpu Tyee e aesa eee ee wa A A 12 PERICOS ns MAE ROEDER RAE A eed Bo A PORE shi oo i eee ee A eee a Ge Sapa Sele a Ae we ee Se e 15 21 CISTallS oe a a A a ee a A E a A MAE OE REE AES Oh DG eh eS ES Mae AAA A e ooe anaa ee eee ee ew we a es 1G A Ge de Ss ee Be eee Ties
35. 2000 counts per rev encoder and 10 revs inch gearing and desired units of mm we have t input_scale 2000 es 10 E rev inch 20000222S inch 4 3 9 3 Stepper related items SCALE 4000 HAL Specifies the number of pulses that corresponds to a move of one machine unit For stepper systems this is the number of step pulses issued per machine unit For servo systems this is the number of feedback pulses per machine unit A second number if specified is ignored For example on a 1 8 degree stepper motor with half stepping and 10 revs inch gearing and desired units of mm we have 2 st d input_scale LZPS fu a pd 1 8 degree rev inch t 400025 inch Older stepper configuration ini and hal used INPUT_SCALE for this value STEPGEN_MAXACCEL 21 0 HAL Acceleration limit for the step generator This should be 1 to 10 larger than the axis MAX_ACCELERATION This value improves the tuning of stepgen s position loop STEPGEN_MAXVEL 1 4 HAL Older configuration files have a velocity limit for the step gener ator as well If specified it should also be 1 to 10 larger than the axis MAX_VELOCITY Subsequent testing has shown that use of STEPGEN_MAXVEL does not improve the tuning of stepgen s position loop 4 3 10 EMCIO Section CYCLE_TIME 0 100 The period in seconds at which EMCIO will run Making it 0 0 or a negative number will tell EMCIO not to sleep at all There is usually no need to chang
36. 3 8 3 2 Function Names Hardware drivers usually only have two kinds of HAL functions ones that read the hardware and update HAL pins and ones that write to the hardware using data from HAL pins They should be named as follows lt device name gt lt device num gt lt io type gt lt chan num range gt read write lt device name gt The same as used for pins and parameters lt device num gt The specific device that the function will access lt io type gt Optional A function may access all of the I O on a board or it may access only a certain type For example there may be independent functions for reading encoder counters and reading digital I O If such independent functions exist the lt io type gt field identifies the type of I O they access If a single function reads all I O provided by the board lt io type gt is not used lt chan num range gt Optional Used only if the lt io type gt I O is broken into groups and accessed by different functions read write Indicates whether the function reads the hardware or writes to it 4One glaring exception to the channel numbers start at zero rule is the parallel port Its HAL pins are numbered with the corresponding pin number on the DB 25 connector This is convenient for wiring but inconsistent with other drivers There is some debate over whether this is a bug or a feature 5Note to driver programmers do NOT implement separate functions for different I O
37. 3 000 HOME SWITCH RELEASES LATCH_VEL NEGATIVE HOME 1 000 HOME SWITCH TRIPS USE_INDEX FALSE ld IE OVERSHOOT SEARCH FOR HOME SWITCH SEARCH_VEL l FINAL DETECTION OF SWITCH LATCH_VEL ES GO TO HOME POSITION MAX_VEL 1 000 3 000 SEARCH_VEL POSITIVE HOME_OFFSET 3 000 LATCH_VEL POSITIVE HOME 1 000 HOME SWITCH RELEASES USE_INDEX FALSE fo HOME SWITCH TRIPS SEARCH FOR HOME SWITCH SEARCH_VEL l BACK OFF OF HOME SWITCH SEARCH_VEL NAL DETECTION OF SWITCH LATCH_VEL a GO TO HOME POSITION MAX_VEL 1 000 3 000 SEARCH_VEL POSITIVE HOME_OFFSET 3 000 LATCH_VEL NEGATIVE HOME 1 000 HOME SWITCH RELEASES USE_INDEX TRUE Zp y HOME SWITCH TRIPS SEARCH FOR HOME SWITCH SEARCH_VEL FINAL DETECTION OF SWITCH AND INDEX PULSE LATCH_VEL GO TO HOME POSITION MAX_VEL 1 000 3 000 da PULSES SEARCH_VEL POSITIVE HOME_OFFSET 3 000 LATCH_VEL POSITIVE HOME 1 000 HOME SWITCH RELEASES USE_INDEX TRUE Mo HOME SWITCH TRIPS SEARCH FOR HOME SWITCH SEARCH_VEL BACK OFF OF HOME SWITCH SEARCH_VEL FINAL DETECTION OF SWITCH AND INDEX PULSE LATCH_VEL GO TO HOME POSITION MAX_VEL 1 000 Jn SU PULSES Figure 4 1 Homing Sequences 32 CHAPTER 4 INI CONFIGURATION 33 and this parameter is nonzero EMC goes ahead to the index pulse search If HOME_SEARCH_VEL is non zero and this parameter is zero it is an error and the homing operation will fa
38. 36 inputs 0 19 and 24 39 and 12 outputs 20 23 and 40 47 The second board is at address 0x300 and has 20 inputs 8 15 24 31 and 40 43 and 28 outputs 0 7 16 23 32 39 and 44 47 Up to 8 boards may be used in one system 16 3 2 Pins e BIT ax5214 lt boardnum gt out lt pinnum gt Drives a physical output pin e BIT ax5214 lt boardnum gt in lt pinnum gt Tracks a physical input pin e BIT ax5214 lt boardnum gt in lt pinnum gt not Tracks a physical input pin inverted For each pin lt boardnum gt is the board number starts at zero and lt pinnum gt is the I O channel number 0 to 47 Note that the driver assumes active LOW signals This is so that modules such as OPTO 22 will work correctly TRUE means output ON or input energized If the signals are being used directly without buffering or isolation the inversion needs to be accounted for The in HAL pin is TRUE if the physical pin is low OPTO 22 module energized and FALSE if the physical pin is high OPTO 22 module off The in lt pinnum gt not HAL pin is inverted it is FALSE if the physical pin is low OPTO 22 module energized By connecting a signal to one or the other the user can determine the state of the input 16 3 3 Parameters e BIT ax5214 lt boardnum gt out lt pinnum gt invert Inverts an output pin The invert parameter determines whether an output pin is active high or active low If invert is FALSE setting th
39. 36172 Threads 1 stepgen capture position 2 motion command handler servo thread 3 motion controller base thread 4 stepgen update freq 5 ddt 0 50286 NO base thread 6535 35508 1 parport 0 read 2 stepgen make pulses 3 parport 0 write y Enter HAL command addf ddt 0 servo thread Execute addf ddt 0 servo thread This is just for viewing so we leave position blank and get the last position in the thread Figure 10 3 shows the state of halshow after this command has been issued Next we need to connect this block to something But how do we know what pins are available The answer is look under pins There we find ddt and see this Component Pins Owner Type Dir Value Name 08 float R 0 00000e 00 ddt 0 in 08 float Ww 0 00000e 00 ddt 0 out That looks easy enough to understand but what signal or pin do we want to connect to it It could be an axis pin a stepgen pin or a signal I see this when I look at axis 0 Component Pins Owner Type Dir Value Name 03 float W 0 00000e 00 axis 0 motor pos cmd gt Xpos cmd So it looks like Xpos cmd should be a good signal to use Back to the editor where I enter the following command CHAPTER 10 TOOLS AND UTILITIES 81 linksp Xpos cmd ddt 0 in Now if I look at the Xpos cmd signal using the tree node TIl see what I ve done Signals Type Value Name float 0 00000e 00 Xpos cmd lt axis 0 motor pos cmd gt ddt 0 in gt stepgen 0
40. A 176 22 1 1 Contool loop DASICS oa es as romua E we eG 176 Ni II IEEE 177 2241 LOOP TOME be a a a dd e 177 X Ladder Logic 179 23 Ladder programming 180 o a A we dow a By Ga APG es Ge bela ee a 180 23 2 Weeiple occa cod ee ah SR A A AR a BO ew Se Se ee amp a 180 CONTENTS xiv 24 ClassicLadder 182 CAL DUTCH oe bc Rae REARS aw ER ERE A e bee a o e as 182 A I Ada a die ae a a Re wk ee Gee ak Gh ae aa on de ae Het we ok 182 24 3 Starting ClassicLagder occ dora Ree ea REAR we New a A ee Se a 182 24 3 1 Realtinie Module ociosas 04 348 4 ee be ee ae Ee be we et 183 See VADES 6 bok ek ek ee OE we A OR ee a ee a 183 24 3 3 Loading the ClassicLadder user module 183 244 ClassicLadder GUI ooo essa e Gee Eee se eae eben ds 184 224 1 The Variables window 6 66 56 sosser ia a RAR ee A 184 24 4 2 The Section Display window 2 2 e 185 24 4 3 The Section Manager window 186 24 4 4 The Editor window 0 eee ee ee ee 186 24o ClassicLadder UNTIADISS os ae eee we aw amp A a ed Gay he ee ia 188 24 UsSnegsuUMP Cole 2 25 224065 ee eh eRe A se ae ee bee ead 189 24 7 Using CALL COILS 6 bk ee ee aS le a 189 XI Hardware Examples 190 25 Spindle Speed Control 191 25 1 UTN Sprie Speeds so ros Edge A ne So ew ae Bnd A eG ee ol A e 191 292 PWM Spindle Speed ss c auo aea A ee A A RN Ay a 191 203 Spindle Feedback esad 244 cee A a ee a eee bE we e 191 29 4 Spande
41. Cover Texts on the front cover and Back Cover Texts on the back cover Both covers must also clearly and legibly identify you as the publisher of these copies The front cover must present the full title with all words of the title equally prominent and visible You may add other material on the covers in addition Copying with changes limited to the covers as long as they preserve the title of the Document and satisfy these conditions can be treated as verbatim copying in other respects If the required texts for either cover are too voluminous to fit legibly you should put the first ones listed as many as fit reasonably on the actual cover and continue the rest onto adjacent pages If you publish or distribute Opaque copies of the Document numbering more than 100 you must either include a machine readable Transparent copy along with each Opaque copy or state in or with each Opaque copy a publicly accessible computer network location containing a complete Transparent copy of the Document free of added material which the general network using public has access to download anonymously at no charge using public standard network protocols If you use the latter option you must take reasonably prudent steps when you begin distribution of Opaque copies in quantity to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy directly or through your
42. IP bu 256 0x100 if the and output is desired IP bu 512 0x200 if the or output is desired CHAPTER 11 COMP A TOOL FOR CREATING HAL MODULES IP bu 1024 0x400 if the xor exclusive or output is desired license GPL FUNCTION _ int i a 1 o 0 x 0 for i 0 i lt personality amp Oxff itt if in i 0 1 x x else a 0 if personality 0x100 and a if personality amp 0x200 or 0 if personality amp 0x400 xor x A typical load line for this component might be loadrt logic count 3 personality 0x102 0x305 0x503 which creates the following pins e A 2 input AND gate logic O and logic 0 in 00 logic 0 in 01 92 e 5 input AND and OR gates logic 1 and logic 1 or logic 1 in 00 logic 1 in 01 logic 1 in 02 logic 1 in 03 logic 1 in 04 e 3 input AND and XOR gates logic 2 and logic 2 xor logic 2 in 00 logic 2 in 01 logic 2 in 02 Chapter 12 Creating Userspace Python Components with the hal module 12 1 Basic usage A userspace component begins by creating its pins and parameters then enters a loop which will periodically drive all the outputs from the inputs The following component copies the value seen on its input pin passthrough in to its output pin passthrough out approximately once per second usr bin python import hal time h hal component passthrough h newpin in hal HAL FLOAT hal
43. If we subtract one from the other we will get 3If a machine e g a lathe is set up with only the axes X Z amp A and the EMC2 inifile holds only these 3 joints defined then the above matching will be faulty That is because we actually have jointO x jointl Z joint2 A whereas the above assumes joint1 Y To make it easily work in EMC2 one needs to define all axes XYZA then use a simple loopback in HAL for the unused Y axis 4One other way of making it work is by changing the matching code and recompiling the software CHAPTER 20 KINEMATICS IN EMC2 Figure 20 1 Bipod setup y A 0 0 Dx B Bx 0 AD BD D Dx Dy AD BD r y 2 2 x zx Be Ba y and therefore AD BD Bx 2x Ba From there we calculate y y AD x 168 Note that the calculation for y involves the square root of a difference which may not result in a real number If there is no single Cartesian coordinate for this joint position then the position is said to be a singularity In this case the forward kinematics return 1 Translated to actual code double AD2 joints 0 joints 0 double BD2 jJoints 1 joints 1 double x AD2 BD2 Bx x Bx double y2 AD2 x x x if y2 lt 0 return 1 pos gt tran x X pos gt tran y sqrt y2 return 0 2 x Bx CHAPTER 20 KINEMATICS IN EMC2 169 20 3 2 Inverse transformation The inverse kinematics is lots easier in our example
44. MAXSIZE When the array is created its size will be CONDSIZE DOC A string that documents the item String can be a C style double quoted string like Selects the desired edge TRUE means falling FALSE means rising ora Python style triple quoted string which may include embedded newlines and quote characters such as param rw bit zot TRUE The effect of this parameter also known as the orb of zot will require at least two paragraphs to explain Hopefully these paragraphs have allowed you to understand zot better wm r The documentation string is in groff man format For more information on this markup format see groff_man 7 Remember that comp interprets backslash escapes in strings so for instance to set the italic font for the word example write fIexample fB TYPE One of the HAL types bit signed unsigned or float The old names s32 and u32 may also be used but signed and unsigned are preferred PINDIRECTION One of the following in out or io A component sets a value for an out pin it reads a value from an in pin and it may read or set the value of an io pin PARAMDIRECTION One of the following r or rw A component sets a value for a r parameter and it may read or set the value of a rw parameter STARTVALUE Specifies the initial value of a pin or parameter If it is not specified then the default is 0 or FALSE depending on the type of the item fp Indi
45. RESET state and all you need to do is switch to Machine On and you ll be able to continue your work with EMC2 4An extensive explanation of hooking up E STOP circuitry is explained in the wiki linuxcnc org and in the Integrator Manual 5make sure you use a maintained switch for E STOP Chapter 14 HAL Components 14 1 Commands and Userspace Components Some of these will have expanded descriptions from the man pages Some will have limited descrip tions All of the components have man pages From this list you know what components exist and can use man n name to get additional information For example in a terminal window type man 1 axis to view the information in the man page axis remote 1 AXIS Remote Interface axis 1 bfload 1 comp 1 emc 1 hal_input 1 AXIS EMC The Enhanced Machine Controller Graphical User Interface A program for loading a Xilinx Bitfile program into the FPGA of an Anything I O board from Mesa Build compile and install EMC HAL components EMC The Enhanced Machine Controller control HAL pins with any Linux input device including USB HID devices hal_joystick 1 control HAL pins with a joystick halemd 1 halmeter 1 halrun 1 manipulate the Enhanced Machine Controller HAL from the command line observe HAL pins signals and parameters manipulate the Enhanced Machine Controller HAL from the command line halsampler 1 sample data from HAL in realtime halst
46. Sawtooth output e FLOAT siggen lt chan gt triangle Triangle wave output e FLOAT siggen lt chan gt square Square wave output All five outputs have the same frequency amplitude and offset In addition to the output pins there are three control pins e FLOAT siggen lt chan gt frequency Sets the frequency in Hertz default value is 1 Hz e FLOAT siggen lt chan gt amplitude Sets the peak amplitude of the output waveforms de fault is 1 e FLOAT siggen lt chan gt offset Sets DC offset of the output waveforms default is O For example if siggen 0 amplitude is 1 0 and siggen 0 offset is 0 0 the outputs will swing from 1 0 to 1 0 If siggen 0 amplitude is 2 5 and siggen 0 offset is 10 0 then the outputs will swing from 7 5 to 12 5 15 7 4 Parameters None 15 7 5 Functions e FUNCT siggen lt chan gt update Calculates new values for all five outputs 3Prior to version 2 1 frequency amplitude and offset were parameters They were changed to pins to allow control by other components Chapter 16 Hardware Drivers 16 1 Parport Parport is a driver for the traditional PC parallel port The port has a total of 17 physical pins The original parallel port divided those pins into three groups data control and status The data group consists of 8 output pins the control group consists of 4 pins and the status group consists of 5 input pins In the early 1990 s
47. The units on the P gain are volts per machine unit e g 22 if machine units are millimeters I 0 HAL The integral gain for the axis servo The value multiplies the cumulative error between commanded and actual position in machine units resulting in a contribution to the computed voltage for the motor amplifier The units on the I gain are volts per machine unit per second e g LL if machine units are millimeters mms D 0 HAL The derivative gain for the axis servo The value multiplies the difference between the current and previous errors resulting in a contribution to the computed voltage for the motor amplifier The units on the D gain are volts per machine unit per second e g as if machine units are millimeters FFO 0 HAL The Oth order feed forward gain This number is multiplied by the commanded position resulting in a contribution to the computed voltage for the motor amplifier The units on the FFO gain are volts per machine unit e g volt if machine units are millimeters m CHAPTER 4 INI CONFIGURATION 29 FF1 0 HAL The lst order feed forward gain This number is multiplied by the change in com manded position per second resulting in a contribution to the computed voltage for the motor amplifier The units on the FF1 gain are volts per machine unit per second e g lt if ma chine units are millimeters FF2 O HAL The 2nd order feed forward gain This number is multiplied by the change in c
48. Type Name PID State 32769 RT siggen ready 9775 User halcmd9775 9775 initializing CHAPTER 7 HAL TUTORIAL 49 Since halcmd itself is a HAL component it will always show up in the list The list also shows the siggen component that we installed in the previous step The RT under Type indicates that siggen is a realtime component Next let s see what pins siggen makes available halcmd show pin Component Pins Owner Type Dir Value Name 02 float W 0 00000e 00 siggen 0 cosine 32769 float OUT 0 00000e 00 siggen 0 sawtooth 32769 float OUT 0 00000e 00 siggen 0 sine 32769 float OUT 0 00000e 00 siggen 0 square 32769 float OUT 0 00000e 00 siggen 0 triangle This command displays all of the pins in the HAL a complex system could have dozens or hundreds of pins But right now there are only five pins All five of these pins are floating point and all five carry data out of the siggen component Since we have not yet executed the code contained within the component all the pins have a value of zero The next step is to look at parameters halcmd show param Parameters Owner Type Dir Value Name 32769 float RW 1 00000e 00 siggen 0 amplitude 32769 float RW 1 00000e 00 siggen 0 frequency 32769 float RW 0 00000e 00 siggen 0 offset 32769 s32 RO 0 siggen 0 update time 32769 s32 RW 0 siggen 0 update tmax The show param command shows all the parameters in the HAL Right now each parameter has the default value it w
49. a problem that requires the wiring diagram to be changed perhaps a part needs to be connected differently or replaced with something completely different HAL provides the software equivalents of a voltmeter oscilloscope signal generator and other tools needed for testing and tuning a system The same commands used to build the system can be used to make changes as needed 6 1 2 Summary This document is aimed at people who already know how to do this kind of hardware system inte gration but who do not know how to connect the hardware to EMC The traditional hardware design as described above ends at the edge of the main control Outside the control are a bunch of relatively simple boxes connected together to do whatever is needed Inside the control is a big mystery one huge black box that we hope works HAL extends this traditional hardware design method to the inside of the big black box It makes device drivers and even some internal parts of the controller into smaller black boxes that can be interconnected and even replaced just like the external hardware It allows the system wiring dia gram to show part of the internal controller rather than just a big black box And most importantly it allows the integrator to test and modify the controller using the same methods he would use on the rest of the hardware Terms like motors amps and encoders are familiar to most machine integrators When we talk about using extra flexi
50. add 16 Chapter 3 Compiling from Source 3 1 Introduction The third hurdle that you face when you begin to set up the EMC2 manually is getting and installing the EMC2 software itself All of EMC2 has been placed on cvs linuxcnc org in a concurrent version ing CVS repository EMC2 is also available as a precompiled package for various platforms for download from that site Again the easiest install is the Live CD Installation can be a daunting task to people new to Linux The hardest part is getting the Real Time Linux patch up and running After that installing EMC is pretty easy With that said we recently provided a completely new experience for users they only need to install Ubuntu a very friendly Linux distribution then run a single install script and they already should have the Real Time part and EMC2 working 3 2 EMC Download Page You will find the most recent releases of EMC2 announced on the Download page at http www linuxcnc org index php The releases of EMC2 will be done in three ways the Live CD sources and binary package The sources described further on consist of a tarball emc2 version tar gz which you should download and unpack into your home directory 3 3 EMC2 Release Description EMC2 will be using a release model similar to but simpler than the one used by Debian At any one time there will be three versions of EMC2 Debian uses stable testing and unstable We will be using Rel
51. agents or retailers of that edition to the public It is requested but not required that you contact the authors of the Document well before redistributing any large number of copies to give them a chance to provide you with an updated version of the Document 4 MODIFICATIONS 206 You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above provided that you release the Modified Version under precisely this License with the Modified Version filling the role of the Document thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it In addition you must do these things in the Modified Version A Use in the Title Page and on the covers if any a title distinct from that of the Document and from those of previous versions which should if there were any be listed in the History section of the Document You may use the same title as a previous version if the original publisher of that version gives permission B List on the Title Page as authors one or more persons or entities responsible for authorship of the modifications in the Modified Version together with at least five of the principal authors of the Document all of its principal authors if it has less than five C State on the Title page the name of the publisher of the Modified Version as the publisher D Preserve all the copyright notices of the Document E Add an appropriate co
52. and Utilities halemd Command line tool for configuration and tuning See section 10 1 halgui GUI tool for configuration and tuning not implemented yet halmeter A handy multimeter for HAL signals See section 10 2 halscope A full featured digital storage oscilloscope for HAL signals See section 10 3 Each of these building blocks is described in detail in later chapters 6 4 Tinkertoys Erector Sets Legos and the HAL A first introduction to HAL concepts can be mind boggling Building anything with blocks can be a challenge but some of the toys that we played with as kids can be an aid to building things with the HAL 6 4 1 Tower Pm watching as my son and his six year old daughter build a tower from a box full of random sized blocks rods jar lids and such The aim is to see how tall they can make the tower The narrower the base the more blocks left to stack on top But the narrower the base the less stable the tower I see them studying both the next block and the shelf where they want to place it to see how it will balance out with the rest of the tower The notion of stacking cards to see how tall you can make a tower is a very old and honored way of spending spare time At first read the integrator may have gotten the impression that building a HAL was a bit like that It can be but with proper planning an integrator can build a stable system as complex as the machine at hand requires 6 4 2 Erector Sets What was great abo
53. around the world It is now used to con trol many different kinds of machines More recently the Sherline company http www sherline com has released their first CNC mill It uses a standard release of the EMC The source code files that make up the controller are kept in a repository on http cvs linuxcnc org They are available for anyone to inspect or download The EMC2 source code with a few ex ceptions is released under the GNU General Public License GPL The GPL controls the terms under which EMC2 can be changed and distributed This is done in order to protect the rights of people like you to use study adapt improve and redistribute it freely now and in the future To read about your rights as a user of EMC2 and the terms under which you are allowed to distribute any modifications you may make see the full GPL at http www gnu org copyleft gpl html 1 5 How EMC2 Works The Enhanced Machine Controller EMC2 is a lot more than just another CNC mill program It can control machine tools robots or other automated devices It can control servo motors stepper motors relays and other devices related to machine tools In this handbook we focus on only a small part of that awesome capability the mini mill Figure 1 1 shows a simple block diagram showing what a typical 3 axis EMC2 system might look like This diagram shows a stepper motor system The PC running Linux as its operating system is actually controlling the stepp
54. as outputs Note that you must know the base address of the parallel port to properly configure the driver For ISA bus ports this is usually not a problem since the port is almost always at a well known address like 0278 or 0378 which is typically configured in the system BIOS The address for a PCI card is usally shown in lspci v in an I O ports line or in the kernel message log after executing sudo modprobe a parport_pc There is no default address if lt config string gt does not contain at least one address it is an error 16 1 2 Pins e BIT parport lt portnum gt pin lt pinnum gt out Drives a physical output pin e BIT parport lt portnum gt pin lt pinnum gt in Tracks a physical input pin e BIT parport lt portnum gt pin lt pinnum gt in not Tracks a physical input pin but in verted For each pin lt portnum gt is the port number and lt pinnum gt is the physical pin number in the 25 pin D shell connector For each physical output pin the driver creates a single HAL pin for example parport 0 pin 14 out Pins 2 through 9 are part of the data group and are output pins if the port is defined as an output port Output is the default Pins 1 14 16 and 17 are outputs in all modes These HAL pins control the state of the corresponding physical pins For each physical input pin the driver creates two HAL pins for example parport 0 pin 12 in and parport 0 pin 12 in not Pins
55. as we can write it directly AD Vx y BD y Bz x y or translated to actual code double x2 pos gt tran x pos gt tran x double y2 pos gt tran y pos gt tran y joints 0 sqrt x2 y2 joints 1 sqrt Bx pos gt tran x Bx pos gt tran x y2 return 0 20 4 Implementation details A kinematics module is implemented as a HAL component and is permitted to export pins and parameters It consists of several functions e int kinematicsForward const double joint EmcPose world const KINEMATICS _FORWARD_FL fflags KINEMATICS_INVERSE_ FLAGS x iflags Implements the forward kinematics function as described in section 20 3 1 e extern int kinematicsInverse const EmcPose world double joints const KINEMATICS_I xiflags KINEMATICS_FORWARD_FLAGS xfflags Implements the inverse kinematics function as described in section 20 3 2 T e extern KINEMATICS_TYPE kinematicsType void Returns the kinematics type identifier e int kinematicsHome EmcPose world double joint KINEMATICS_FORWARD_FLAGS x fflags KINEMATICS_INVERSE_FLAGS xiflags The home kinematics function sets all its arguments to their proper values at the known home position When called these should be set when known to initial values e g from an INI file If the home kinematics can accept arbitrary starting points these initial values should be used e in
56. built in pre tuned position loop so PID tuning is not required In velocity mode it drives a motor at the commanded speed while obeying velocity and acceleration limits It is a realtime component only and depending on CPU speed etc is capable of maximum step rates of 10kHz to perhaps 50kHz Figure 15 1 shows three block diagrams each is a single step pulse generator The first diagram is for step type 0 step and direction The second is for step type l up down or pseudo PWM and the third is for step types 2 through 14 various stepping patterns The first two diagrams show position mode control and the third one shows velocity mode Control mode and step type are set independently and any combination can be selected 15 1 1 Installing emc2 halcmd loadrt stepgen step type lt type array gt ctrl_type lt ctrl_array gt lt type array gt is a series of comma separated decimal integers Each number causes a single step pulse generator to be loaded the value of the number determines the stepping type lt ctrl_array gt is a comma separated series of p or v characters to specify position or velocity mode ctrl_type is optional if ommitted all of the step generators will be position mode For example emc2 halcmd loadrt stepgen o step_type 0 0 2 ctrl_type p p v will install three step generators The first two use step type 0 step and direction and run in position mode The last one uses step type
57. but are gone as soon as it is The entry box labeled Test Hal Command will accept any of the commands listed for halemd These include e loadrt unloadrt e addf delf CHAPTER 10 TOOLS AND UTILITIES 79 e newsig delsig e linkpp linksp linkps unlinkp e setp sets This little editor will enter a command any time you press lt enter gt or push the execute button An error message from halemd will show below this entry widget when these commands are not properly formed If you are not certain how to set up a proper command you ll need to read again the documentation on halemd and the specific modules that you are working with Let s use this editor to add a differential module to a hal and connect it to axis position so that we could see the rate of change in position ie acceleration We first need to load a hal module named blocks add it to the servo thread then connect it to the position pin of an axis Once that is done we can find the output of the differentiator in halscope So let s go yes I looked this one up loadrt blocks ddt 1 Now look at the components node and you should see blocks in there someplace Loaded HAL Components ID Type Name 10 User halcmd29800 09 User halcmd29374 08 RT blocks 06 RT hal_parport 05 RT scope_rt 04 RT stepgen 03 RT motmod 02 User iocontrol Sure enough there itis Notice that its id is 08 Next we need to find out what functions are available with it so we look at
58. corresponding ADC e BIT stg out lt pinnum gt invert Inverts an output pin The invert parameter determines whether an output pin is active high or active low If invert is FALSE setting the HAL out pin TRUE drives the physical pin high and FALSE drives it low If invert is TRUE then setting the HAL out pin TRUE will drive the physical pin low 16 4 4 Functions e FUNCT stg capture position Reads the encoder counters from the axis lt channel gt e FUNCT stg write dacs Writes the voltages to the DACs e FUNCT stg read adcs Reads the voltages from the ADCs e FUNCT stg di read Reads physical in pins of all ports and updates all HAL in and in lt pinnum gt not pins e FUNCT stg do write Reads all HAL out pins and updates all physical output pins 16 5 Mesa Electronics m5i20 Anything I O Card The Mesa Electronics m5i20 card consists of an FPGA that can be loaded with a wide variety of configurations and has 72 pins that leave the PC The assignment of the pins depends on the FPGA configuration Currently there is a HAL driver for the 4 axis host based motion control configuration and this FPGA configurations is also provided with EMC2 It provides 8 encoder counters 4 PWM outputs normally used as DACs and up to 48 digital I O channels 32 inputs and 16 outputs Installing loadrt hal_m5i20 loadFpga 1 0 dacRate lt rate gt If loadFpga is 1 the default
59. functions Exported Functions Owner CodeAddr Arg FP Users Name 08 E0B97630 EODC7674 YES 0 ddt 0 03 EODEF83C 00000000 YES 1 motion command handler 03 EODFOBF3 00000000 YES 1 motion controller 06 EOB541FE E0DC75B8 NO parport 0 read 06 E0B54270 EODC75B8 NO parport 0 write 06 E0B54309 EODC75B8 NO parport read all O O 06 EOB5433A EODC75B8 N parport write all 05 EOAD712D 00000000 N scope sample 04 EO0B618C1 E0DC7448 YES 1 stepgen capture position 04 EOB612F5 E0DC7448 NO 1 stepgen make pulses 04 EOB614AD E0DC7448 YES 1 stepgen update freq GOG O HP f Here we look for owner 08 and see that blocks has exported a function named ddt 0 We should be able to add ddt 0 to the servo thread and it will do its math each time the servo thread is updated Once again I look up the addf command and find that it uses three arguments like this addf lt functname gt lt threadname gt lt position gt We already know the functname ddt 0 so let s get the thread name right by expanding the thread node in the tree Here we see two threads servo thread and base thread The position of ddt 0 in the thread is not critical CHAPTER 10 TOOLS AND UTILITIES 80 Figure 10 3 Addf Command HAC Configuration File View Components _ Show Watch Modify Tune 0 Tune 1 Tune 2 Pins Parameters Realtime Threads Signals Period FP Name Time Max Time Functions 1005720 YES servo thread 7622
60. gt a vbox lt text gt lt label gt lt led gt lt led gt lt number gt lt number gt lt bar gt lt bar gt lt hbox gt a hbox O 0 0 0 0 100 0 Inside a Hbox you can use the lt boxfill fill gt lt boxanchor anchor gt and lt boxexpand expand gt tags to choose how items in the box behave when the window is re sized For details of how fill anchor and expand behave refer to the Tk pack manual page pack 3tk By default fill y anchor center expand yes 18 6 2 Vbox Use a Vbox when you want to stack widgets vertically on top of each other lt vbox gt lt label gt lt text gt a vbox lt text gt lt label gt lt led gt lt led gt lt number gt lt number gt lt bar gt lt bar gt lt vbox gt CHAPTER 18 VIRTUAL CONTROL PANELS 160 a vbox Inside a Hbox you can use the lt boxfill fill gt lt boxanchor anchor gt and lt boxexpand expand gt tags to choose how items in the box behave when the window is re sized For details of how fill anchor and expand behave refer to the Tk pack manual page pack 3tk By default fill x anchor center expand yes 18 6 3 Label A label is a piece of text on your panel lt label gt lt text gt This is a Label lt text gt lt font gt Helvetica 20 lt font gt lt label gt This is a Label A labelframe is a frame with a groove and a label at the upper left
61. has taken on a lot of different meanings over the years In the early days CNC replaced the hands of a skilled machinist with motors that followed commands in much the same way that the machinist turned the hand wheels From these early machines a language of machine tool control has grown This language is called RS274 and several standard variants of it have been put forward It has also been expanded by machine tool and control builders in order to meet the needs of specific machines If a machine changed tools during a program it needed to have tool change commands If it changed pallets in order to load new castings it had to have commands that allowed for these kinds of devices as well Like any language RS274 has evolved over time Currently there are several dialects In general each machine tool maker has been consistent within their product line but different dialects can have commands that cause quite different behavior from one machine to another More recently the language of CNC has been hidden behind or side stepped by several programming schemes that are referred to as Conversational programming languages One common feature of these kinds of programming schemes is the selection of a shape or geometry and the addition of values for the corners limits or features of that geometry The use of Computer Aided Drafting has also had an effect on the CNC programming languages Because CAD drawings are saved as a list or database of ge
62. in machine units Backlash compensation value can be used to make up for small deficiencies in the hardware used to drive an axis COMP_FILE file extension A file holding a compensation structure for the specific axis The values inside are triplets of nominal forward and reverse positions which correspond to the nominal position where it should be forward where the axis is while travelling forward and reverse where the axis is while travelling back One set of triplets per line Currently the limit inside EMC2 is for 256 triplets axis If COMP_FILE is specified BACKLASH is ignored COMP_FILE values are in machine units COMP_FILE_TYPE 1 Specifying a non zero value changes the expected format ofthe COMP_FILE For COMP_FILE_TYPE of zero the values are triplets for nominal forward amp reverse Other wise the values in the COMP_FILE are nominal forward_trim and reverse_trim These corre spond to the nominal nominal forward and nominal reverse defined above MIN_LIMIT 1000 The minimum limit soft limit for axis motion in machine units When this limit is exceeded the controller aborts axis motion MAX_LIMIT 1000 The maximum limit soft limit for axis motion in machine units When this limit is exceeded the controller aborts axis motion MIN_FERROR 0 010 This is the value in machine units by which the axis is permitted to deviate from commanded position at very low speeds If MIN_FERROR is smaller than FERROR the t
63. interconnected as needed Parameter Many hardware components have adjustments that are not connected to any other components but still need to be accessed For example servo amps often have trim pots to allow for tuning adjustments and test points where a meter or scope can be attached to view the tuning results HAL components also can have such items which are referred to as parameters There are two types of parameters Input parameters are equivalent to trim pots they are values that can be adjusted by the user and remain fixed once they are set Output parameters cannot be adjusted by the user they are equivalent to test points that allow internal signals to be monitored Pin Hardware components have terminals which are used to interconnect them The HAL equiva lent is a pin or HAL pin HAL pin is used when needed to avoid confusion All HAL pins are named and the pin names are used when interconnecting them HAL pins are software entities that exist only inside the computer Physical_Pin Many I O devices have real physical pins or terminals that connect to external hard ware for example the pins of a parallel port connector To avoid confusion these are referred to as physical pins These are the things that stick out into the real world Signal In a physical machine the terminals of real hardware components are interconnected by wires The HAL equivalent of a wire is a signal or HAL signal HAL signals
64. is always negative The corresponding digital output invert may be set to TRUE to make UPx active low rather than active high DNx The down up down mode or direction pwm direction mode signal from PWM generator X May be used as a digital output if the corresponding PWM channel is unused or the output on the channel is never negative The corresponding digital ouput invert may be set to TRUE to make DNx active low rather than active high QAx QBx The A and B signals for Quadrature counter X May be used as a digital input if the corresponding quadrature channel is unused CHAPTER 16 HARDWARE DRIVERS 143 QZx The Z index signal for quadrature counter X May be used as a digital input if the index feature of the corresponding quadrature channel is unused INx Dedicated digital input x OUTx Dedicated digital output x GND Ground VCC 3 3V regulated DC Figure 16 2 Pluto Servo Pinout AA Dara D PES INT END arallel Port Connector Deer 30 10 a Jack gt 3 ING OUTE QUTI 5 IN6 ALEX FPGA OUT6 OUT 7 GND OUT4 OUT5 LED OUT2 OUT3 INO UPU UPT GND DN3 UP3 UBO VCC QZ0 RBT DA QB2 OUTO QB3 OUTI DNO GND DN1 DN2 UP2 GND QAO VCC GND QA QZ1 GND QZ2 As 0Z3 16 9 2 Input latching and output updating e PWM duty cycles for each channel are updated at different ti
65. it The interpreter then figures out what needs to be done for the motion and input or output systems and sends blocks of canonical commands to the task and motion planning programs 1 5 5 Modes of Operation When an EMC2 is running there are three different major modes used for inputting commands These are Manual Auto and MDI Changing from one mode to another makes a big difference in the way that the EMC2 behaves There are specific things that can be done in one mode that can not be done in another An operator can home an axis in manual mode but not in auto or MDI modes An operator can cause the machine to execute a whole file full of G codes in the auto mode but not in manual or MDI In manual mode each command is entered separately In human terms a manual command might be turn on coolant or jog X at 25 inches per minute These are roughly equivalent to flipping a CHAPTER 1 THE ENHANCED MACHINE CONTROL 9 TKEMC TkEmc BackPlot File View Settings Units Scripts SETUP RESE ON MIST OFF SPINDLE OFF AUTO FLOOD OFF BRAKE ON Tool 1 Offset 0 0000 NS RaRa mm override limits y relative machine actual commanded 2 joint y world continuous home Axis Speed EM Feed Override 100 Spindle speed Override 100 G1 G17 G40 G21 G90 G94 G54 G49 G99 G64 G51 M2 M5 M9 M48 F225 51600 Program fhomefjuve emc2inc_files 3D_Chips ngc Status idle Open Run Pause Resume Step Verify Opt
66. it backs off the switch at HOME_SEARCH_VEL the direction of the back off is opposite the sign of HOME_SEARCH_VEL Then it searches for the home switch by moving in the direction specified by the sign of HOME_SEARCH_VEL at a speed determined by its absolute value When the home switch is detected the joint will stop as fast as possible but there will always be some overshoot The amount of overshoot depends on the speed If it is too high the joint might overshoot enough to hit a limit switch or crash into the end of travel On the other hand if HOME_SEARCH_VEL is too low homing can take a long time 4 4 3 2 HOME LATCH VEL Specifies the speed and direction that EMC uses when it makes its final accurate determination of the home switch if present and index pulse location if present It will usually be slower than the search velocity to maximise accuracy If HOME_SEARCH_VEL and HOME_LATCH_VEL have the same sign then the latch phase is done while moving in the same direction as the search phase In that case EMC first backs off the switch before moving towards it again at the latch velocity If HOME_SEARCH_VEL and HOME_LATCH_VEL have opposite signs the latch phase is done while moving in the opposite direction from the search phase That means EMC will latch the first pulse after it moves off the switch If HOME_SEARCH_VEL is zero meaning there is no home switch CHAPTER 4 INI CONFIGURATION SEARCH_VEL POSITIVE HOME_OFFSET
67. it down you will need it later It contains the worst latency measurement during the entire run of the test In the example above that is 10636 nano seconds or 10 6 micro seconds which is excellent However the example only ran for a few seconds it prints one line every second You should run the test for at least several minutes sometimes the worst case latency doesn t happen very often or only happens when you do some particular action I had one Intel motherboard that worked pretty well most of the time but every 64 seconds it had a very bad 300uS latency Fortunately that is fixable see FixingDapperSMIlssues in the wiki found at wiki linuxcnc org So what do the results mean If your ovl max number is less than about 15 20 microseconds 15000 20000 nanoseconds the computer should give very nice results with software stepping If the max latency is more like 30 50 microseconds you can still get good results but your maximum step rate might be a little dissapointing especially if you use microstepping or have very fine pitch leadscrews If the numbers are 100uS or more 100 000 nanoseconds then the PC is not a good candidate for software stepping Numbers over 1 millisecond 1 000 000 nanoseconds mean the PC is not a good candidate for EMC regardless of whether you use software stepping or not Note that if you get high numbers there may be ways to improve them For example one PC had very bad latency several milliseconds wh
68. joint is closed axis N index enable IO BIT Should be attached to the index enable pin of the joint s encoder to enable homing to index pulse axis N jog counts IN s32 Connect to the counts pin of an external encoder to use a physical jog wheel axis N jog enable IN bit When TRUE and in manual mode any change in jog counts will result in motion When false jog counts is ignored axis N jog scale IN float Sets the distance moved for each count on jog counts in machine units axis N jog vel mode IN bit When FALSE the default the jog wheel operates in position mode The axis will move exactly jog scale units for each count regardless of how long that might take When TRUE the wheel operates in velocity mode motion stops when the wheel stops even if that means the commanded motion is not completed axis N motor pos cmd OUT float The commanded position for this joint axis N motor pos fb IN float The actual position for this joint axis N joint pos cmd The joint as opposed to motor commanded position There may be an offset between the joint and motor positions for example the homing process sets this offset axis N joint pos fb The joint as opposed to motor feedback position 5 2 2 Parameters Many of these parameters serve as debugging aids and are subject to change or removal at any time axis N active TRUE when this joint is active axis N backlash corr Backlash or screw compensation raw valu
69. load if the Linux loop module was also present on the system When loaded halcmd show comp will show a component called hal_loop However the pin shown by halcmd show pin will be loop 0 example not hal loop 0 example CHAPTER 11 COMP A TOOL FOR CREATING HAL MODULES 91 11 13 5 arraydemo This realtime component illustrates use of fixed size arrays component arraydemo 4 bit Shift register pin in bit in pin out bit out 4 function _ nofp rr int i for i 3 i1 gt 0 i out i out 1 1 out 0 in 11 13 6 rand This userspace component changes the value on its output pin to a new random value in the range 0 1 about once every lms component rand option userspace pin out float out ir include lt unistd h gt void user_mainloop void while 1 usleep 1000 FOR_ALL_INSTS out drand48 11 13 6 1 logic This realtime component shows how to use personality to create variable size arrays and optional pins component logic pin in bit in 16 personality amp Oxff pin out bit and if personality 0x100 pin out bit or if personality amp 0x200 pin out bit xor if personality amp 0x400 function _ nofp description Experimental general logic function component Can perform and or and xor of up to 16 inputs Determine the proper value for personality by adding IP bu 4 The number of input pins usually from 2 to 16
70. may process the commandline argu ments or take other actions Its return type is void it may call exit if it wishes to terminate rather than create a hal component for instance because the commandline arguments were invalid If an option s VALUE is not specified then it is equivalent to specifying option yes The result of assigning an inappropriate value to an option is undefined The result of using any other option is undefined LICENSE Specify the license of the module for the documentation and for the MODULE_LICENSE module declaration 11 5 Per instance data storage variable CTYPE NAME variable CTYPE NAME SIZE variable CTYPE NAME DEFAULT CHAPTER 11 COMP A TOOL FOR CREATING HAL MODULES 87 variable CTYPE NAME SIZE DEFAULT Declare a per instance variable NAME of type CTYPE optionally as an array of SIZE items and optionally with a default value DEFAULT Items with no DEFAULT are initialized to all bits zero CTYPE is a simple one word C type such as float u32 s32 etc Access to array variables uses square brackets C style one line comments and C style multi line comments are both supported in the declaration section 11 6 Other restrictions on comp files Though HAL permits a pin a parameter and a function to have the same name comp does not 11 7 Convenience Macros Based on the items in the declaration section comp creates a C structure called struct state
71. minimum spindle override the user may select 0 5 means 50 of the programmed spindle speed This is useful as it s dangerous to run a program with a too low spindle speed MAX SPINDLE_OVERRIDE 1 0 The maximum spindle override the user may select 1 0 means 100 of the programmed spindle speed PROGRAM_PREFIX emc2 nc_files The default location for g code files and the location for user defined M codes INTRO_GRAPHIC emc2 gif The image shown on the splash screen INTRO_TIME 5 The maximum time to show the splash screen 4 3 2 1 AXIS Interface If your using the Axis interface the following can be used with it only DEFAULT_LINEAR_VELOCITY 25 The default velocity for linear jogs in machine units per sec ond MAX LINEAR VELOCITY 1 0 The maximum velocity for linear jogs in machine units per sec ond DEFAULT_ANGULAR_VELOCITY 25 The default velocity for angular jogs in machine units per second MAX ANGULAR _VELOCITY 1 0 The maximum velocity for angular jogs in machine units per second INCREMENTS 1 mm 5 in Defines the increments available for incremental jogs The INCRE MENTS can be used to override the default The values can be decimal numbers e g 0 1000 or fractional numbers e g 1 16 optionally followed by a unit cm mm um inch in or mil If a unit is not specified the machine unit is assumed Metric and imperial distances may be mixed INCREMENTS 1 inch 1 mil 1 cm 1 mm 1 um is a va
72. on the application Some processes must not allow an overshoot of the process variable from the setpoint Other processes must minimize the energy expended in reaching a new setpoint Generally stability of response is required and the process must not oscillate for any combination of process conditions and setpoints CHAPTER 22 PID TUNING 178 Tuning of loops is made more complicated by the response time of the process it may take minutes or hours for a setpoint change to produce a stable effect Some processes have a degree of non linearity and so parameters that work well at full load conditions don t work when the process is starting up from no load This section describes some traditional manual methods for loop tuning There are several methods for tuning a PID loop The choice of method will depend largely on whether or not the loop can be taken offline for tuning and the response speed of the system If the system can be taken offline the best tuning method often involves subjecting the system to a step change in input measuring the output as a function of time and using this response to determine the control parameters 22 1 3 0 0 4 Simple method Ifthe system must remain online one tuning method is to first set the I and D values to zero Increase the P until the output of the loop oscillates Then increase I until oscillation stops Finally increase D until the loop is acceptably quick to reach its reference A fast PID loop tun
73. only Cxx F Counter xx full overflow boolean user read only Cxx V Counter xx current value integer user read only Cxx P Counter xx preset integer Ixxx Physical input xxx boolean HAL input bit Qxxx Physical output xxx boolean HAL output bit Xxxx Activity of step xxx sequential language Xxxx V Time of activity in seconds of step xxx sequential language CHAPTER 24 CLASSICLADDER 189 24 6 Using JUMP COILs JUMP COILs are used to JUMP to another section like a goto in BASIC programming language If you look at the top left of the sections display window you will see a small lable box and a longer comment box beside it Now go to Editor gt Modify then go back to the little box type in a name Go ahead and add a comment in the comment section This lable name is the name of this rung only and is used by the JUMP COIL to identify where to go When placing a JUMP COIL add it in the right most position and change the lable to the rung you want to JUMP to JUMP COILs should be placed as the last coil of a rung because of a bug If there are coils after the JUMP COIL in the same rung they will be updated even if the JUMP COIL is true 24 7 Using CALL COILs CALL COILs are used to go to a subroutine section then return like a gosub in BASIC programming language If you go to the sections manager window hit the add section button You can name this section select what language it will use ladder or
74. pwm 0 pwmdir is TRUE this pin is the DIR output OUT11 XOR d with DNO or DIRO DN1 DIR1 When pwm 1 pwmdir is TRUE this pin is the DIR output OUT13 XOR d with DN1 or DIR1 DN2 DIR2 When pwm 2 pwmdir is TRUE this pin is the DIR output OUTI15 XOR d with DN2 or DIR2 DN3 DIRS When pwm 3 pwmdir is TRUE this pin is the DIR output OUT17 XOR d with DN3 or DIR3 QZO IN8 Read same value QZ1 IN9 Read same value QZ2 IN10 Read same value QZ3 IN11 Read same value QAO IN12 Read same value Al IN13 Read same value QA2 IN14 Read same value QA3 IN15 Read same value QBO IN16 Read same value QB1 IN17 Read same value QB2 IN18 Read same value QB3 IN19 Read same value CHAPTER 16 HARDWARE DRIVERS 145 L298 or up to 2A two motors per L298 with the supply voltage up to 46V However the L298 does not have built in current limiting a problem for motors with high stall currents For higher currents and voltages some users have reported success with International Rectifier s integrated high side low side drivers http www cnczone com forums showthread php t 25929 16 10 Pluto step 300kHz Hardware Step Generator Pluto step is suitable for control of a 3 or 4 axis CNC mill with stepper motors The large number of inputs allows for a full set of limit switches The board features e 4 step direction channels with 312 5kHz maximum step rate programmable step length space and direction change times e 14 dedicated digi
75. result from nuts that are loose on leadscrews slippage in belts cable slack wind up in rotary couplings and other places where the mechanical system is not tight Backlash will result in inaccurate motion or in the case of motion caused by external forces think cutting tool pulling on the work piece the result can be broken cutting tools This can happen because of the sudden increase in chip load on the cutter as the work piece is pulled across the backlash distance by the cutting tool Backlash Compensation Any technique that attempts to reduce the effect of backlash without actually removing it from the mechanical system This is typically done in software in the controller This can correct the final resting place of the part in motion but fails to solve problems related to direction changes while in motion think circular interpolation and motion that is caused when external forces think cutting tool pulling on the work piece are the source of the motion Ball Screw A type of lead screw that uses small hardened steel balls between the nut and screw to reduce friction Ball screws have very low friction and backlash but are usually quite expensive Ball Nut A special nut designed for use with a ball screw It contains an internal passage to re circulate the balls from one end of the screw to the other CNC Computer Numerical Control The general term used to refer to computer control of machin ery Instead of a human operator
76. signal gets defined and linked to a parport pin 13 3 3 Changing the standard_pinout hal If you want to change the standard_pinout hal file all you need is a text editor Open the file and locate the parts you want to change If you want for example to change the pin for the X axis Step amp Directions signals all you need to do is to change the number in the parport 0 pin XX out name linksp Xstep parport 0 pin 03 out linksp Xdir parport 0 pin 02 out can be changed to linksp Xstep parport 0 pin 02 out linksp Xdir parport 0 pin 03 out or basically any other numbers you like Hint make sure you don t have more than one signal connected to the same pin 13 3 4 Changing the polarity of a signal If external hardware expects an active low signal set the corresponding invert parameter For instance to invert the spindle control signal setp parport 0 pin 09 invert TRUE 13 3 5 Adding PWM Spindle Speed Control If your spindle can be controlled by a PWM signal use the pwmgen component to create the signal loadrt pwmgen output_type 0 addf pwmgen update servo thread addf pwmgen make pulses base thread net spindle speed cmd motion spindle speed out gt pwmgen 0 value net spindle on motion spindle on gt pwmgen 0 enable net spindle pwm pwmgen 0 pwm gt parport 0 pin 09 out setp pwmgen 0 scale 1800 Change to your spindle s top speed in RPM This assumes that the spindle controller s res
77. so the parport will get read and written to 193 CHAPTER 26 MPG PENDANT 194 26 2 Hook it up in HAL In your custom hal file or other hal file add the following making sure you don t have mux4 or an encoder already in use Ifyou do just increase the counts and change the reference number Jog Pendant loadrt encoder num_chan 1 loadrt mux4 count 1 addf encoder capture position servo thread addf encoder update counters base thread addf mux4 0 servo thread setp encoder 0 x4 mode 0 setp mux4 0 in0 0 1 setp mux4 0 in1 0 01 setp mux4 0 in2 0 001 net scalel mux4 0 sel0 lt parport 1 pin 09 in net scale2 mux4 0 sell lt parport 1 pin 10 in net pend scale axis 0 jog scale lt mux4 0 out net pend scale axis 1l jog scale net pend scale axis 2 jog scale net mpg a encoder 0 phase A lt parport 1 pin 02 in net mpg b encoder 0 phase B lt parport pin 03 in net mpg y axis 1 jog enable lt parport 1 1 net mpg x axis 0 jog enable lt parport 1 pin 04 in 1 pin 05 in 1 A li net mpg z axis 2 jog enable parport 1 pin 06 in net pend counts axis 0 jog counts lt encoder 0 counts net pend counts axis l jog counts net pend counts axis 2 jog counts Part XII FAQ 195 Chapter 27 Linux FAQ These are some basic Linux commands and techniques for new to Linux users More complete information can be found on the web or by using the man pages 27 1 Man Pages Man pages are automatically generated ma
78. the bidirectional parallel port was introduced which allows the data group to be used for output or input The HAL driver supports the bidirectional port and allows the user to set the data group as either input or output If configured as output a port provides a total of 12 outputs and 5 inputs If configured as input it provides 4 outputs and 13 inputs In some parallel ports the control group pins are open collectors which may also be driven low by an external gate On a board with open collector control pins the x mode allows a more flexible mode with 8 dedicated outputs 5 dedicated inputs and 4 open collector pins In other parallel ports the control group has push pull drivers and cannot be used as an input No other combinations are supported and a port cannot be changed from input to output once the driver is installed Figure 16 1 shows two block diagrams one showing the driver when the data group is configured for output and one showing it configured for input The parport driver can control up to 8 ports defined by MAX_PORTS in hal_parport c The ports are numbered starting at zero 16 1 1 Installing loadrt hal_parport cfg lt config string gt The config string consists of a hex port address followed by an optional direction repeated for each port The direction is in out or x and determines the direction of the physical pins 2 through 9 and whether to create input HAL pins for the physi
79. the driver will load the FPGA configuration on startup If it is O the driver assumes the configuration is already loaded dacRate sets the carrier frequency for the PWM outputs in Hz The default is 32000 for 32KHz PWM Valid values are from 1 to 32226 The driver prints some useful debugging message to the kernel log which can be viewed with dmesg Up to 4 boards may be used in one system Sif IIOO is defined there are 16 input pins in 00 in 15 and 16 output pins out 00 out 15 and they correspond to PORTs ABCD in 00 is PORTA O out 15 is PORTD 7 7Ideally the encoders DACs and digital I O would comply with the canonical interfaces defined earlier but they don t Fixing that is on the things to do list CHAPTER 16 HARDWARE DRIVERS 16 5 1 Pins 132 In the following pins parameters and functions lt board gt is the board ID According to the naming conventions the first board should always have an ID of zero however this driver uses the PCI board ID so it may be non zero even if there is only one board e s32 m5i20 lt board gt enc lt channel gt count Encoder position in counts FLOAT m5i20 lt board gt enc lt channel gt position Encoder position in user units B B T m5120 lt board gt enc lt channel gt index Current status of index pulse input T m5i20 lt board gt enc lt channel gt index enable when TRUE and an index pulse ap pears on the enco
80. the initial installation is done Ubuntu will prompt you when updates of EMC2 or its supporting files are available When they are you can update them easily and automatically with the Update Manager 2 5 Manual installing using apt commands The following few section will describe how to install EMC2 on Ubuntu 6 06 Dapper Drake using a console and apt commands If you know a bit about Linux and Debian flavored distributions this might be trivial If not you might consider reading 2 4 First add the repository to etc apt sources list sudo sh c echo deb http www linuxcnc org emc2 dapper emc2 2 gt gt etc apt sources list sudo sh c echo deb src http www linuxcnc org emc2 dapper emc2 2 gt gt etc apt sources list Then update amp get EMC2 sudo apt get update sudo apt get install emc2 This command will install the EMC2 package along with all dependencies You might get warnings that the packages are from an untrusted source this means your com puter doesn t recognize the GPG signature on the packages To correct that issue the following commands The dependencies are one of the nicest thing in Debian based distributions They assure you have everything installed that you need In the case of EMC2 it s even a RT patched kernel and all needed libraries CHAPTER 2 INSTALLING THE EMC2 SOFTWARE gpg keyserver pgpkeys mit edu recv key BC92B87F gpg a export BC92B87F sudo apt key
81. thes ad Sei we dea MO PY oe ine amp A ee ES SE ER SOS Ae A ee e ee LS Gi Stee ee a 154 1 Tnstalling oe a ee wa es 154 2 REMOVE ca ct Se A BS BNE ae Ev de de we ad BH Ge ws S ILLAS PWNS Ga oe ee Rhee RRR Re EBA Ee Se eB Ae ey ow Ua o A ee ee ee ee ee e 98 99 100 100 100 101 101 102 102 103 CONTENTS x 150 Slave Encoder si A ROE BE RSW we Re RE ah Ge oo 122 SaL BONE oeann era a a ao ee ae ee oe a we 122 15 52 REMOVE 64 6 oo ewe Had REED ee eee aa DES OLD Pee wd ed Od 122 LA E odos a a a A ee E ee Oh HE note eh eee Ae eS 122 Iod Pma ui AR A A A RA A A A Be ae 122 looo UOC da a a a Ga we RA 122 A A NN 123 1561 Installed 123 12 REMOVAL 8 Ee ee ee 123 Woe SPW e ra err ee ea a ee ee we ee ee ee E 123 15 5 4 PARAMS ed RAE A ER ERA ARERR aa EG Ew heh SS 123 1909 a AAA 123 USE AMB a ee A A ER RA A AO A A ew a we ee 124 ISAL Wistar a a e a a aa a 124 A a A oe REE ER eel OU ee SEE eS 124 Dee PY oe ar a a Oe we Se a eee ee ee A 124 Irat e NAAA 124 a Tomo IAN NN 124 16 Hardware Drivers 125 16 1 PRPO cues iaa a Sw a Sw Swe Ge a A A AA 8 125 PUL PR A SI 125 Miele DING ear A A dd e e GO 126 Ilo e ded oh de he de eR ee we ae Ee eet hs ae we De we 126 Lilo PATON oa Se Se ee A GS Re Se ie e we 128 IGIS Common probleme escasa aa EB eS 128 16 2 Probe PAPO ow a She a a RE de Ea Soe ew ae be ewe de ja 128 1 10 ck pes Ba Ba OM ee a he ed Gy oe lt ae a 128 IGS TRAD ZU oie we OG A eRe OE ee ae SE we GA ah ww wl e
82. unit to con l gt offset Sets the DAC offset L gt gain Sets the DAC gain scaling T m5i20 lt board gt dac lt channel gt interlaced Sets the DAC to interlaced mode Use this mode if you are filtering the PWM to generate an anaolg voltage B ital output T m5i20 lt board gt out lt channel gt invert Inverts a digital output see canonical dig 8with normal 10 bit PWM 50 duty cycle would be 512 cycles on and 512 cycles off ca 30 kHz with 33 MHz reference counter With fully interleaved PWM this would be 1 cycle on 1 cycle off for 1024 cycles 16 66 MHz if the PWM reference counter runs at 33 MHz much easier to filter The 5120 configuration interlace is somewhat between non and fully interlaced to make it easy to filter but not have as many transistions as fully interleaved CHAPTER 16 HARDWARE DRIVERS 133 e u32 m5i20 lt board gt watchdog control Configures the watchdog The value may be a bitwise OR of the following values Bit Value Meaning 0 1 Watchdog is enabled 1 2 Watchdog is automatically reset by DAC writes the HAL dac write function Typically the useful values are O watchdog disabled or 3 watchdog enabled cleared by dac write e u32 m5i20 lt board gt led view Maps some of the I O to onboard LEDs See table below 16 5 3 Functions e FUNCT m5i20 lt board gt encoder read Reads all encoder count
83. we invite you to contribute to its revision and growth A copy of the license is included in the section entitled GNU Free Documentation License Ifyou do not find the license you may order a copy from Free Software Foundation Inc 59 Temple Place Suite 330 Boston MA 02111 1307 GNU Free Documentation License GNU Free Documentation License Version 1 1 March 2000 Copyright C 2000 Free Software Foundation Inc 59 Temple Place Suite 330 Boston MA 02111 1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document but changing it is not allowed 0 PREAMBLE The purpose of this License is to make a manual textbook or other written document free in the sense of freedom to assure everyone the effective freedom to copy and redistribute it with or without modifying it either commercially or noncommercially Secondarily this License preserves for the author and publisher a way to get credit for their work while not being considered responsible for modifications made by others This License is a kind of copyleft which means that derivative works of the document must themselves be free in the same sense It complements the GNU General Public License which is a copyleft license designed for free software We have designed this License in order to use it for manuals for free software because free software needs free documentation a free program should come with manuals providing the same freedoms
84. will most likely not be getting any new development or additional widgets We strongly recommend using pyVCP However pyVCP won t be released until version 2 2 comes out and VCP is in version 2 1 That means some people will wind up using VCP so we can t simply drop it Place the following in the file tiny vcp vep main window box button halpin vcp pushbutton label text Push Me is LED halpin vcp light J The above file describes a tiny Virtual Control Panel with one push button and one light To see what it looks like we need to start HAL halrun Next we load halvcp and give it the name of our vcp file halcmd loadusr halvcp tiny vcp halcmd There may be some text printed as halvcp parses the tiny vcp file but when it finishes there should be a small window on your screen with a button and an LED It will look something like figure 19 1 So we have a button and an LED but they aren t connected to anything so nothing happens when you push the button However the LED and the button both have HAL pins associated with them lA vcp to xml translator that takes a vep file and turns it into one that pyVCP can use is on my to do list That would enable VCP users to easily switch over to pyVCP If such a translator is written VCP may be removed from the version 2 2 release 162 CHAPTER 19 VCP 163 Figure 19 1 tiny vcp on the screen halcmd show pin Component Pin
85. 0 update test thread The output of the save command is a sequence of HAL commands Ifyou start with an empty HAL and run all these commands you will get the configuration that existed when the save command was issued To save these commands for later use we simply redirect the output to a file halcmd save all saved hal 7 3 6 Restoring the HAL configuration To restore the HAL configuration stored in saved hal we need to execute all of those HAL com mands To do that we use f lt filename gt which reads commands from a file and I which shows the halemd prompt after execiting the commands emc2S halrun I f saved hal Notice that there is not a start command in saved hal It s necessary to issue it again or edit saved hal to add it there halcmd start 7 4 Looking at the HAL with halmeter You can build very complex HAL systems without ever using a graphical interface However there is something satisfying about seeing the result of your work The first and simplest GUI tool for the HAL is halmeter It is a very simple program that is the HAL equivalent of the handy Fluke multimeter or Simpson analog meter for the old timers We will use the siggen component again to check out halmeter If you just finished the previous example then siggen is already loaded If not we can load it just like we did before emc2 halrun halcmd loadrt siggen halcmd loadrt threads namel test thread period1 1000000 halcmd
86. 1 Default Plane When EMC s interperter was first written it was designed for mills That is why the default plane is XY G17 A normal lathe only uses the XZ plane G18 To change the default plane place the following line in the ini file in the RS274NGC section RS274NGC_STARTUP_CODE G18 Chapter 5 EMC2 and HAL See also the manual pages motion 9 and iocontrol 1 5 1 motion realtime These pins parameters and functions are created by the real time motmod module 5 1 1 Pins motion adaptive feed IN float When adaptive feed is enabled with M52 P1 See the G Code Man ual the commanded velocity is multiplied by this value This effect is multiplicative with the NML level feed override value and motion feed hold motion digital out NN OUT bit These pins are controlled by the M62 through M65 words motion enable IN bit If this bit is driven FALSE motion stops the machine is placed in the ma chine off state and a message is displayed for the operator For normal motion drive this bit TRUE motion feed hold IN bit When Feed Stop Control is enabled with M53 P1 See the G Code Manual and this bit is TRUE the feed rate is set to O motion motion inpos OUT bit TRUE if the machine is in position motion probe input IN bit G38 2 uses the value on this pin to determine when the probe has made contact TRUE for probe contact closed touching FALSE for probe contact open motion spindle brake OUT bit TRUE when t
87. 1 count or less between calls to the read function FLOAT velocity resolution optional The resolution of the velocity output in position units per second This is an output from the encoder driver and is intended to tell the user something about the hardware capabilities The simplest implementation of the velocity output is the change in postion from one call of the read function to the next divided by the time between calls This yields a rather coarse velocity signal that jitters back and forth between widely spaced possible values quantization error However some hardware captures both the counts and the exact time when a count occurres possibly with a very high resolution clock That data allows the driver to calculate velocity with finer resolution and less jitter 3 Functions There is only one function to read the encoder s FUNCT read Capture counts update position and velocity Chapter 10 Tools and Utilities 10 1 Halcmd Halcmd is a command line tool for manipulating the HAL There is a rather complete man page for halemd which will be installed if you have installed EMC2 from either source or a package If you have compiled EMC2 for run in place the man page is not installed but it is accessible From the main EMC2 directory do man M docs man halcmd Chapter 7 has a number of examples of halcmd usage and is a good tutorial for halemd 10 2 Halmeter Halmeter is a voltmeter for t
88. 10 11 12 13 and 15 are always input pins Pins 2 through 9 are input pins only if the port is defined as an input port The in HAL pin is TRUE if the physical pin is high and FALSE if the physical pin is low The in not HAL pin is inverted it is FALSE if the physical pin is high By connecting a signal to one or the other the user can determine the e state of the input In x mode pins 1 14 16 and 17 are also input pins 16 1 3 Parameters e BIT parport lt portnum gt pin lt pinnum gt out invert Inverts an output pin e BIT parport lt portnum gt pin lt pinnum gt out reset only for pins 2 9 TRUE if this pin should be reset when the reset function is executed e U32 parport lt portnum gt reset time The time in nanoseconds between a pin is set by write and reset by reset HAL functions The invert parameter determines whether an output pin is active high or active low If invert is FALSE setting the HAL out pin TRUE drives the physical pin high and FALSE drives it low If invert is TRUE then setting the HAL out pin TRUE will drive the physical pin low If reset is TRUE then the reset function will set the pin to the value of out invert This can be used in conjunction with stepgen s doublefreg to produce one step per period CHAPTER 16 HARDWARE DRIVERS 127 8 8 2 NEN ESA SEMEL NOU OS NSS e ll DAOHOQHQQOOQOPOOCL OEO O
89. 15 1 4 Parameters has no effect o FLOAT stepgen lt c FLOAT stepgen lt c nd squared If 0 0 has no effect FLOAT stepgen lt c FLOAT stepgen lt c p p P p p han gt step Step pulse output step type O only dir Direction output step type O only up UP pseudo PWM output step type 1 only down DOWN pseudo PWM output step type 1 only nase nase nase nase O and 1 only in nano seconds hase A Phase A output step types 2 14 only B Phase B output step types 2 14 only C Phase C output step types 3 14 only D Phase D output step types 5 14 only E Phase E output step types 11 14 only FLOAT stepgen lt chan gt position scale Steps per position unit This parameter is used for both output and feedback han gt maxvel Maximum velocity in position units per second If 0 0 han gt maxaccel Maximum accel decel rate in positions units per sec han gt frequency The current step rate in steps per second han gt steplen Length of a step pulse step type O and 1 or minimum time in a given state step types 2 14 in nano seconds FLOAT stepgen lt chan gt stepspace Minimum spacing between two step pulses step types FLOAT stepgen lt chan gt dirsetup Minimum time from a direction change to the begin ning of the next step pulse step type O only in nanoseconds FLOAT
90. 2 W 000000001 freqgen 1 dirsetup 02 float R 0 00000e 00 freqgen 1 frequency 02 float W 0 00000e 00 freqgen 1 maxaccel 02 float W 1 00000e 15 freqgen 1 maxfreq 02 float W 1 00000e 00 freqgen 1 position scale 02 s32 RS 0 fFreqgen 1 rawcounts 02 u32 W 000000001 freqgen 1 steplen 02 u32 W 000000001 freqgen 1 stepspace 02 float W 1 00000e 00 freqgen 1 velocity scale 7 5 2 Connecting pins with signals What we have is two step pulse generators and a signal generator Now it is time to create some HAL signals to connect the two components We are going to pretend that the two step pulse generators are driving the X and Y axis of a machine We want to move the table in circles To do this we will send a cosine signal to the X axis and a sine signal to the Y axis The siggen module creates the sine and cosine but we need wires to connect the modules together In the HAL wires are called signals We need to create two of them We can call them anything we want for this example they will be X_vel and Y_vel The signal X_vel is intended to run from the cosine output of the signal generator to the velocity input of the first step pulse generator The first step is to connect the signal to the signal generator output To connect a signal to a pin we use the net command halcmd net X_vel lt siggen 0 cosine To see the effect of the net command we show the signals again halcmd show sig ignals Type Value Name float
91. 2 encoder lt chan gt raw count The raw count value updated by update counters e BIT encoder lt chan gt x4 mode Sets encoder to 4x or 1x mode The 1x mode is usefull for some jogwheels e FLOAT encoder lt chan gt position scale See canonical encoder interface section 9 5 15 3 5 Functions The component exports two functions Each function acts on all of the encoder counters running different counters in different threads is not supported e FUNCT encoder update counters High speed function to count pulses no floating point e FUNCT encoder capture position Low speed function to update latches and scale posi tion CHAPTER 15 INTERNAL COMPONENTS 119 15 4 PID This component provides Proportional Integeral Derivative control loops It is a realtime compo nent only For simplicity this discussion assumes that we are talking about position loops however this component can be used to implement other feedback loops such as speed torch height tem perature etc Figure 15 8 is a block diagram of a single PID loop 15 4 1 Installing emc2 halcmd loadrt pid num_chan lt loops gt debug 1 lt loops gt is the number of PID loops that you want to install If numchan is not specified one loop will be installed The maximum number of loops is 16 as defined by MAX_CHAN in pid c Each loop is completely independent In the following descriptions lt loopnum gt is the loop number of a specifi
92. 20 seconds The same machinist programming that same move for CNC might write the following block of code G1 F3 X1 000 G1 means that the machine is supposed to run at a programmed feed rate rather than at the fastest speed that it can GO is the way to command a rapid move like you would make above the work when not cutting The F3 means that it should travel at 3 inches a minute or 3 millimeters a minute if it is working in metric mode The X1 000 assuming that the X axis started at zero means CHAPTER 1 THE ENHANCED MACHINE CONTROL 8 EMC HAL SIM Settings Info 4 Editor W Backplot 4 Tools J Offsets lh X Y al X Z Z 3D Hide Setup x 92 0000 x 36 1280 Z 10 0000 Feed Override MESSAGES N6891Y56 112 27 838 N6901Y56 1282 27 634 IN6911G0Z10 N6931M9 ERES O Figure 1 4 The Mini Graphical Interface the machine should move one inch in the positive X direction You will read quite a bit more about G code in the programming chapters Figure 1 7 is a block diagram of how a personal computer running the EMC2 is used to control a machine with G code The actual G code can be sent using the MDI Machine Device Interface mode or it can be sent as a file when the machine is in Auto mode These choices are made by the operator and entered using one of the Graphical User Interfaces available with the software G code is sent to the interpreter which compares the new block with what has already been sent to
93. 4 all glitches less than or equal to four thread periods will be rejected 15 6 5 Functions Each group of filters has one function which updates all the filters in that group simultaneously Different groups of filters can be updated from different threads at different periods e FUNCT debounce lt G gt Updates all filters in group lt G gt 2Each individual filter also has an internal state variable There is a compile time switch that can export that variable as a parameter This is intended for testing and simply wastes shared memory under normal circumstances CHAPTER 15 INTERNAL COMPONENTS 124 15 7 Siggen Siggen is a realtime component that generates square triangle and sine waves It is primarily used for testing 15 7 1 Installing emc2 halcmd loadrt siggen num_chan lt chans gt lt chans gt is the number of signal generators that you want to install If numchan is not specified one signal generator will be installed The maximum number of generators is 16 as defined by MAX_CHAN in siggen c Each generator is completely independent In the following descriptions lt chan gt is the number of a specific signal generator the numbers start at 0 15 7 2 Removing emc2 halcmd unloadrt siggen 15 7 3 Pins Each generator has five output pins e FLOAT siggen lt chan gt sine Sine wave output e FLOAT siggen lt chan gt cosine Cosine output e FLOAT siggen lt chan gt sawtooth
94. 5 2 PWM Spindle Speed If your spindle can be controlled by a PWM signal use the pwmgen component to create the signal loadrt pwmgen output_type 0 addf pwmgen update servo thread addf pwmgen make pulses base thread net spindle speed cmd motion spindle speed out gt pwmgen 0 value net spindle on motion spindle on gt pwmgen 0 enable net spindle pwm pwmgen 0 pwm gt parport 0 pin 09 out setp pwmgen 0 scale 1800 Change to your spindle s top speed in RPM This assumes that the spindle controller s response to PWM is simple 0 PWM gives ORPM 10 PWM gives 180 RPM etc If there is a minimum PWM required to get the spindle to turn follow the example in the nist lathe sample configuration to use a scale component 25 3 Spindle Feedback Add this section 191 CHAPTER 25 SPINDLE SPEED CONTROL 192 25 4 Spindle Enable If you need a spindle enable signal link your output pin to motion spindle on To link these pins to a parallel port pin put something like the following in your hal file making sure you pick the pin that is connected to your control device net spindle enable motion spindle on gt parport 0 pin 14 out 25 5 Spindle Direction If you have direction control of your spindle the hal pins motion spindle forward and motion spindle reverse are controlled by M3 and M4 S must be set to a positive non zero value for M3 4 to turn on spindle motion To link these pins to a parallel port pin put something like the fol
95. 6 Py Container EEES cdo eee ee Be ee hoe Ha ao Se o de ae 159 W350 RE 159 DOr VI eea ee eS AE 159 LA Tabel rn soe PRE Se Se Ee Se OE Oe De ee ee Be we 160 iea Lebelirame siria Sw ee ROR A IA ec we ee ae 160 6 0 Table osos eee ee ee ae ee a a els 160 CONTENTS xiii 19 VCP 162 14 1 VCR Asmal kampe go os a A e ae be ewes 162 19 2 VCP Another small example with EMC 163 e VORP SAU AIRE Be we ce a 164 19 3 1 PAGE seda ESE OTE HSS EERE SHER EEE EAE DEE SELES EES 164 VIII Advanced topics 165 20 Kinematics in EMC2 166 20 1 TrOduci n e o ss 03 ae a a A ee dea 166 20 1 1 TOS VE PRES o p e oO a ee ae a a ae a eS 166 20 2 Trivial Kinematics s e saci le ae ae ew a a we lal nw ws e eee ee 166 20 3 MNon trivial kinemaies 2 0 6 0c AV ee es 167 20 5 1 Forward transformation lt oo ee ee 167 20 32 Inverse transiormatiork oc segoe kek AA we Aw we ee aes 169 20 4 Implementation details gt lt cs ocs cosas a ee 169 IX Tuning 170 21 Stepper Tuning 171 21 1 Getting the most out of Software Stepping e 171 21 1 1 BUDA DAS TES 22 a a A A oA A S aea K A a eh A 171 21 1 2 Figure out what your drives expect o so se sass ro sew wasu rsi 172 21 1 3 Choose y ur BASE PERIOD occiso a A 173 21 1 4 Use steplen stepspace dirsetup and or dirhold 174 2115 MoO Guessing e ob ce eR A A RA 174 22 PID Tuning 176 22 1 PID Controller 0 dae aci a A a Pe a A a ak
96. AA A a 59 78 Takinga closer look with Nalecope lt s lt caf eee da a a a a eee es 59 7 6 1 Starine HSISCODE se seac Ge Re HE TERS eR EE TERRES eS ees 59 7 6 2 Hooking up the scope probes ok a 61 7 6 3 Capturing our first waveforms 2 4 0 6 so eae ee 62 7 6 4 Ver cal ACIUSTUIMEDIS ooa Se ADEE REE EES Swe ee ee be ee eS 63 7 6 5 TIEDE o a ke a a we we a eal Soe a 63 7 6 6 Horizantal Adjustments lt lt cosas sa A ee el ae aa 65 7 6 7 More e IE 66 7 6 8 MODE Samples o es oca a a A A eed 66 CONTENTS 8 General Reference Information SL INGA o e ce Sag a a Ap a a a A Ae 4 SLi Typographical Conventions lt gt oso ccoo ou lc ee a e 8 1 2 NAE a A a apg ee a A gh cs se sb e ere a eo 8 2 General Namig Conventions lt se reses bee eee g Ea da a ewe ee 8 3 Hardware Driver Naming Conventions a 8 3 1 Pin Parameter DAMES coo opus aa a a a a TLI EXABIDIES osos asas a ad ATA 8 3 2 Function NAMES asi a as Ae ee a a we a wo O21 EXAmplES ica a e a a iaa ida aa 9 Canonical Device Interfaces Mol TOU Taput e e a A we A AA AA 9 1 1 PS O e a Se op e da oe oa A See N a ae ce g 1 2 Fara RAS A A a RA A de a a 9 1 3 POUCUO S an a AAA A A RA A Hee ESR 3 2 Digtal OUIOUE lt lt ss ek ee eee A e a Ha eae Se 9 2 1 P oie a et GB Os A we a a ae Re a 9 2 2 CORALES o aS aS a A ee BO te we oe oe A 9 2 3 PUTICUONS oo ai OS oe AR oe ee ew ee A Si Andog Ip eo cos ks ne ae ee Sow ES doe BL ee ee He OA ae Ge ee ww ee 9 501
97. Dase oo ae ho O AA A Ae 192 25 Spindle Direction lt r rap eaer A RA we ee we as 192 26 MPG Pendant 193 26 1 SEcona Parallel PO o oa e a Oe A A A A 193 26 2 Hook itupinmHAL lt lt lt ew So 194 XII FAQ 195 27 Linux FAQ 196 ar E IRE POS si paraa Aa a de a es e A da a 196 Zro ASL MOUNES on i a ee a a Re hae da e dd de e ee So 196 27 9 Editing a Root Ple eo soes ai a ae Re A See dee a ee 196 27 3 1 The Command Line Way lt co ee ieee de ee daa a ae 197 ata THEGUL Way 2 ew hd PAAR REE REE HED E DEE de e 197 274 Terminal Commands ss ssas saes Ae ew Ack A ae ia da 197 er Workme Directoy vo s va SG Sa aw ee eee Eee Re BE a 197 CONTENTS 27 4 2 Changing Directories 27 4 3 Listing files in a directory 27 4 4 Finding a File 27 4 5 Searching for Text 27 5 Hardware Problems 27 5 1 Monitor Resolution XIII Glossary XIV Legal Section XV Index 203 208 Part III Introduction Chapter 1 The Enhanced Machine Control 1 1 Introduction For normal stepper based installations see the Getting Started Guide Once EMC is installed and configured see the User Manual for information on using EMC The Integrator Manual scope is on more complex machines configurations and installations As the system integrator your task is bringing together all the component subsystems into a whole and ensuring that those subsystems function together EMC being one of the subsystems 1 2 The Big CNC Picture The term CNC
98. Directors will decide when Testing is worthy of becoming Released This is a formal decision made by motion and voting on the board mailing list or board IRC channel TRUNK is a CVS term for where all the primary development takes place TRUNK can be broken at any time When TRUNK reaches a state that is deemed worthy of testing by a larger number of people the Testing tag will be moved This is an informal decision made by consensus of lead developers usually on IRC Development will immediately continue and TRUNK will once again diverge from Testing TRUNK has no version number and on a busy weekend it can literally change every 10 minutes 3 4 Download and source preparation The following few section will describe how to get EMC2 and compile it To download simply go to www linuxcnc org to the Download page and get the latest release or testing tarball Once you have it extract it to your home folder cd tar xzvf emc2 version tar gz Next you ll need to decide what kind of install you want There are two ways to try EMC2 out Installed Like most other software on Linux the files are placed in system directories and is automatically available to all users of that computer Run in place All the files for EMC2 are kept inside the emc2 directory This is useful for trying out EMC2 especially when there is another version of EMC2 already installed on the system The pre built packages for Ubuntu Linux use the
99. EMC it is under Setting Calibration can be used to set these and more interactively and verify their results so that the proper values can be put in the INI file with a minimum of trouble 4 3 9 1 Homing related items The next few parameters are Homing related for a better explanation read Section 4 4 HOME_OFFSET 0 0 The axis position of the home switch or index pulse in machine units HOME_SEARCH_VEL 0 0 Initial homing velocity in machine units per second A value of zero means assume that the current location is the home position for the machine If your machine has no home switches you will want to leave this value alone HOME_LATCH_VEL 0 0 Final homing velocity in machine units per second HOME_USE_INDEX NO If the encoder used for this axis has an index pulse and the motion card has provision for this signal you may set it to yes When it is yes it will affect the kind of home pattern used HOME_IGNORE_LIMITS NO Some machines use a limit switch as a home switch This variable should be set to yes if you machine does this 4 3 9 2 Servo related items The following items are for servo based systems and servo like systems This description assumes that the units of output from the PID component are volts P 50 HAL The proportional gain for the axis servo This value multiplies the error between commanded and actual position in machine units resulting in a contribution to the computed voltage for the motor amplifier
100. ERATION 2 0 In machines with nontrivial kinematics the acceleration used for teleop Cartesian space jogs in machine units per second per second MAX VELOCITY 5 0 The maximum velocity for any axis or coordinated move in machine units per second The value shown equals 300 units per minute MAX ACCELERATION 20 0 The maximum acceleration for any axis or coordinated axis move in machine units per second per second POSITION_ FILE position txt If set to a non empty value the joint positions are stored between runs in this file This allows the machine to start with the same coordinates it had on shut down If unset joint positions are not stored and will begin at O each time EMC is started 4 3 9 AXIS lt num gt Section The AXIS_0 AXIS_1 etc sections contains general parameters for the individual components in the axis control module The axis section names begin numbering at O and run through the number of axes specified in the TRAJ AXES entry minus 1 TYPE LINEAR The type of axes either LINEAR or ANGULAR UNITS inch If specified this setting overrides the related TRAJ UNITS setting e g TRAJ LINEAR_UNITS if the TYPE of this axis is LINEAR TRAJJANGULAR_UNITS if the TYPE of this axis is ANGULAR MAX_VELOCITY 1 2 Maximum velocity for this axis in machine units per second MAX_ACCELERATION 20 0 Maximum acceleration for this axis in machine units per second squared BACKLASH 0 000 Backlash
101. ERNAL COMPONENTS i 1 i i 1 i 1 i 1 i 1 i MEA ae osea 1 i i i i i i i i L L L f f i 9 9seyd 9 9seyd 1 l T i l i I i i i I 1 i i i ie eae l l l g eseyd l g seyd i i i L L i I i i 1 i l I y I I I I I y aseyd I I y aseyd i i i if l i l l r l pl i i i l l i i i 1 l l i i i i i Y i f l PO ihe Gt A Ge ie rh RI et c y TEIAS PAN Be o e Cae ls a CAL gas 1 i 1 i q eseyd i q eseyd t l i i l l l 9 9seyd 1 1 9 aseyd j I i I i i I i if i i i i i i i g seyd i i g seyd i i I l ji i i i l L L 1 L i i l I 1 1 1 1 I y aseyd 1 1 1 I y aseyd i i i i i i i f i i i i i i O BS A Ge RE nee ea at wht ETAS e a SO oR set ea goes gt ATALS 1 i l 1 i q eseyd i i q aseyd i i 1 9 aseyd l 1 9 9seyd I l i g oseyd i i g seyd l l l l l i i l f f E L L l 1 y seyd l y seyd i i i i i i i I i i i l i if l i I l l h I l ii I l l l i l i l l l i i ie Wen AO Fe be ibe a ato SAO y Aakaas PO a JB ine ede pW SS see tes oe he V8 daa ass Figure 15 5 Four Phase Step Types 114 CHAPTER 15 INTERNAL COMPONENTS STEP TYPE 11 STEP TYPE 12 phase A phase B
102. FFSET the axis will slightly overshoot the latched position as it stops Therefore there will always be a small move at this time unless HOME_SEARCH_VEL is zero and the entire search latch stage was skipped This final move will be made at the joint s maximum velocity Since the axis is now homed there should be no risk of crashing the machine and a rapid move is the quickest way to finish the homing sequence 4 4 3 7 HOME_IS SHARED If there is not a separate home switch input for this axis but a number of momentary switches wired to the same pin set this value to 1 to prevent homing from starting if one of the shared switches is already closed Set this value to O to permit homing even if the switch is already closed 4 4 3 8 HOME_SEQUENCE Used to define a multi axis homing sequence HOME ALL and enforce homing order e g Z may not be homed if X is not yet homed An axis may be homed after all axes with a lower HOME_SEQUENCE have already been homed and are at the HOME_OFFSET If two axes have the same HOME_SEQUENCE they may be homed at the same time If HOME_SEQUENCE is 1 or not specified then this joint will not be homed by the HOME ALL sequence HOME_SEQUENCE numbers start with O and there may be no unused numbers The distinction between home and home_offset is not as clear as I would like I intend to make a small drawing and example to help clarify it CHAPTER 4 INI CONFIGURATION 34 4 5 Lathe 4 5
103. Gecko can be improved The problem with the G202 is the 20uS hold time requirement That plus the 11uS latency is what forces us to use a slow 31uS period But the EMC2 software step generator has some parameters that let you increase the various time from one period to several For example if steplen is changed from 1 to 2 then it there will be two periods between the beginning and end of the step pulse Likewise if dirhold is changed from 1 to 3 there will be at least three periods between the step pulse and a change of the direction pin If we can use dirhold to meet the 20uS hold time requirement then the next longest time is the 4 5uS high time Add the 11uS latency to the 4 5uS high time and you get a minimum period of 15 5uS When you try 15 5uS you find that the computer is sluggish so you settle on 16uS If we leave dirhold at 1 the default then the minimum time between step and direction is the 16uS period minus the 11uS latency 5uS which is not enough We need another 15uS Since the period is 16uS we need one more period So we change dirhold from 1 to 2 Now the minimum time from the end of the step pulse to the changing direction pin is 5 16 21uS and we don t have to worry about the Gecko stepping the wrong direction because of latency If the computer has a latency of 11uS then a combination of a 16uS base period and a dirhold value of 2 ensures that we will always meet the timing requirements of the Gecko For normal s
104. HAL_IN h newpin out hal HAL _ FLOAT hal HAL_ OUT h ready try while 1 time sleep 1 h out h in except KeyboardInterrupt raise SystemExit Copy the above listing into a file named passthrough make it executable chmod x and place it on your PATH Then try it out halrun halcmd loadusr passthrough halcmd show pin Component Pins Owner Type Dir Value Name 03 float IN O passthrough in 03 float OUT O passthrough out halcmd setp passthrough in 3 14 halcmd show pin Component Pins Owner Type Dir Value Name 03 float IN 3 14 passthrough in 03 float OUT 3 14 passthrough out 93 CHAPTER 12 CREATING USERSPACE PYTHON COMPONENTS WITH THE HAL MODULE 94 12 2 Userspace components and delays If you typed show pin quickly you may see that passthrough out still had its old value of O This is because of the call to time sleep 1 which makes the assignment to the output pin occur at most once per second Because this is a userspace component the actual delay between assignments can be much longer for instance if the memory used by the passthrough component is swapped to disk the assignment could be delayed until that memory is swapped back in Thus userspace components are suitable for user interactive elements such as control panels de lays in the range of milliseconds are not noticed and longer delays are acceptable but not for sending step pulses to a stepper d
105. HAPTER 7 HAL TUTORIAL 55 7 5 A slightly more complex example Up till now we have only loaded one HAL component But the whole idea behind the HAL is to allow you to load and connect a number of simple components to make up a complex system The next example will use two components Before we can begin building this new example we want to start with a clean slate If you just finished one of the previous examples we need to remove the all components and reload the RTAPI and HAL libraries halcmd exit emc2S halrun 7 5 1 Installing the components Now we are going to load the step pulse generator component For a detailed description of this component refer to section 15 1 For now we can skip the details and just run the following commands halrun loadrt freqgen step type 0 0 halcmd loadrt siggen halcmd loadrt threads namel fast fp1 0 period1 50000 name2 slow period2 1000000 The first command loads two step generators both configured to generate stepping type O The second command loads our old friend siggen and the third one creates two threads a fast one with a period of 50 micro seconds and a slow one with a period of 1mS The fast thread doesn t support floating point functions As before we can use halcmd show to take a look at the HAL This time we have a lot more pins and parameters than before halcmd show pin Component Pins Owner Type Dir Value Name 03 float W 0 00000e 00 sigg
106. However instead of referring to the members of this structure e g x inst gt name they will generally be referred to using the macros below The details of struct state and these macros may change from one version of comp to the next FUNCTION name Use this macro to begin the definition of a realtime function which was previ ously declared with function NAME The function includes a parameter period which is the integer number of nanoseconds between calls to the function EXTRA_SETUP Use this macro to begin the definition of the function called to perform extra setup of this instance Return a negative Unix errno value to indicate failure e g return EBUSY on failure to reserve an I O port or O to indicate success EXTRA_CLEANUP Use this macro to begin the definition of the function called to perform extra cleanup of the component Note that this function must clean up all instances of the com ponent not just one The pin_name parameter_name and data macros may not be used here pin_name parameter_name For each pin pin_name or param parameter_name there is a macro which allows the name to be used on its own to refer to the pin or parameter When pin_name or parameter_name is an array the macro is of the form pin_namelidx or param_name idx where idx is the index into the pin array When the array is a variable sized array it is only legal to refer to items up to its condsize When the i
107. L threads A thread might look a bit like a centipede caterpillar or earwig A backbone of hubs HAL com ponents strung together with rods HAL signals Each component takes in it own parameters and input pins and passes on output pins and parameters to the next component Signals travel along the backbone from end to end and are added to or modified by each component in turn Threads are all about timing and doing a set of tasks from end to end A mechanical representation is available with Tinkertoys also when we think of the length of the toy as a measure of the time taken to get from one end to the other A very different thread or backbone is created by connecting the same set of hubs with different length rods The total length of the backbone can be changed by the length of rods used to connect the hubs The order of operations is the same but the time to get from beginning to end is very diferent 2Tinkertoy is now a registered trademark of the Hasbro company CHAPTER 6 INTRODUCTION 46 6 4 4 A Lego Example When Lego blocks first arrived in our stores they were pretty much all the same size and shape Sure there were half sized one and a few quarter sized as well but that rectangular one did most of the work Lego blocks interconnected by snapping the holes in the underside of one onto the pins that stuck up on another By overlapping layers the joints between could be made very strong even around corners or tees I watched m
108. PS ds se Bos Rea A BR AA OE we hi a eR oe Boe GS 9 3 2 ss 6 sk ROE ERS EEE AN 9 3 5 PFURCUORS 30 ee Ow we ele oe OG a ee a ee Da wh doh a da g4 Analog DOSUE iaa we ee ee Re wee ewe AR 9 4 1 PAYERS lt A AE RR DUP Re RA i 9 4 2 FUNGOS o o s asa ae ee ee Se eee A We a A et A a ANN RN 9 5 1 P a EEE ENRE EER ERAR EEEF ERE A 9 5 2 ca EEN 9 5 3 FPUNCHONS A III 10 Tools and Utilities A E A wo i A oe A ee OS ae Bn we a a al W SOIC i Soa ke dd Shae es ae Ge a we Re a Ge ee ae a a a o a LES Halstope oora AA i ae ee A ae BR ee we a 104 Halshow 25 i e eG 5404 SEAS ES EE eS eee eG Ne ee oe oe 4 104 1 Gbarling HalehOw e258 ei Ge eS a a ee eee 10 42 Hal Tec Ara kg ee eo Hae ER Soe Be a we eG ae eww ow A A 10 4 3 Hal Show Area omar RRA Oe RR ER AS ee ho wee hw he 10 4 4 Hal Watch Area oep ew ae a a ee lee a we ae A vii 67 67 67 67 67 68 68 69 69 70 71 71 71 71 71 71 71 72 72 72 72 72 72 72 73 73 73 73 74 74 CONTENTS viii 11 comp a tool for creating HAL modules 83 11 1 Touche c f cies a ee eos A A ew a kw oe es 83 1 DEPOR we we A as Da ee al Ee ee 83 LLS Menne RECALI N ya aaa ee A A A SE OS eS EO ite ee A 84 UVA a ek we ae AA See A Ee oe ee aE 84 11 32 Peor msi nce data Storage saccra a ORR EEE PAR ED ewe es 86 11 6 Other restrictions on comp files gt o se a ee A 87 11 7 Convenience Macros lt lt ERE RR Re Ge wl ek a we A 87 11 8 Components with one function lt e sas essa
109. Part 1 Integrators Manual V2 2 Integrators Manual October 13 2008 The EMC Team This handbook is a work in progress If you are able to help with writing editing or graphic preparation please contact any member of the writing team or join and send an email to emc users lists sourceforge net Copyright c 2000 7 LinuxCNC org Permission is granted to copy distribute and or modify this document under the terms of the GNU Free Documentation License Version 1 1 or any later version published by the Free Software Foundation with no Invariant Sections no Front Cover Texts and one Back Cover Text This EMC Handbook is the product of several authors writing for linuxCNC org As you find it to be of value in your work we invite you to contribute to its revision and growth A copy of the license is included in the section entitled GNU Free Documentation License If you do not find the license you may order a copy from Free Software Foundation Inc 59 Temple Place Suite 330 Boston MA 02111 1307 Part II Contents Contents I Integrators Manual i II Contents ii HI Introduction 1 1 The Enhanced Machine Control 2 L a i cea ek Se ewe he SO ee aE Gea dE Go ns 2 1 2 The Big CNC PICS oi Se A eR A we a Se we a De ee 2 1 3 Computer Operating Systems 2 0 66 6 6b be ee ee 3 1A History ef the Sotware oes aaacasa hE a Pee aa 3 Lo How EMC2 Works 650 483 5268 pad See eR A Sod a eG ee ta ed ee es 4 1 5 1 Graphical User Imieriact
110. S 6 6 sc eR SEE eee eee ee eas 5 1 5 2 Motion Controller EMCMOT so ee ee ee ee Pe we ed 5 1 53 Discrete I O Controller EMIGIO lt ss 6 64 ei casi a ww 6 1 5 4 Task Executor EMCTASE cosida eee eee ee bee ee es 7 1 5 5 Modes of Operation gt c e cocs a A ee a ee Pe we ae 8 1 5 6 Informatio Display so oi eac Ae oR A i ER a A E d A 9 1 5 Thinking Like An Integrator oca ccoa nuaa meaa ra a ae e ea be ee as 11 1 6 1 Mi E Ge Ton re a 11 IV Installing EMC 13 2 Installing the EMC2 software 14 al ts baw pcos ie Gp lee a wes NN 14 22 NICE ARE CI esa wae a a Sw a Se ah ee ee ae e a 14 23 Other Methods cn e eee eee Re de aa Dae Vee we da 15 24A TERS meta SOTA e sa eee soe Woe ae KY dod A a 15 2 5 Manual installing using apt commands 2 0 0 0 00 ee ae 15 iii CONTENTS 3 Compiling from Source S1 a IE 2 2 EMC Download Page 2 2 42 08 040504 ce eee Eee eee ewe ED 33 HMC2 Release DESCUIDO co cacra daa A a as eo we eS 3 4 Download and source preparation 1 e ee 3 4 1 Downloading the CVS version co es como csm ee ds e we tes me IM cia ae eG ee de wee ee da bee a GS 36 R n mpte oo hk ee a a dd as A Ne ee A Of SUN 26466 Ge ohh ah eee AA 3 8 Editing and Recompiling 0 2 eee ee V Configuration 4 INI Configuration 4 1 4 2 4 3 4 4 Files Used Tor Config ration 4 424 445 2208 WR AR RRR we be RA The INI File Layout a ee a ee ee ad 4 2 1 aa 5 ki RG eae be EOE EMER EGE ee Seed e
111. ST project EMC is able to run a wide range of motion devices 201 EMCIO The module within EMC that handles general purpose I O unrelated to the actual motion of the axes EMCMOT The module within EMC that handles the actual motion of the cutting tool It runs as a real time program and directly controls the motors Encoder A device to measure position Usually a mechanical optical device which outputs a quadrature signal The signal can be counted by special hardware or directly by the par port with EMC2 Feed Relatively slow controlled motion of the tool used when making a cut Feed rate The speed at which a motion occurs In manual mode jog speed can be set from the graphical interface In auto or mdi mode feed rate is commanded using a f word F10 would mean ten units per minute Feedback A method e g quadrature encoder signals by which EMC receives information about the position of motors Feed rate Override A manual operator controlled change in the rate at which the tool moves while cutting Often used to allow the operator to adjust for tools that are a little dull or anything else that requires the feed rate to be tweaked G Code The generic term used to refer to the most common part programming language There are several dialects of G code EMC uses RS274 NGC GUI Graphical User Interface General A type of interface that allows communications between a computer and human in most cases via the manipu
112. Section Variables 4 3 1 EMC Section VERSION SRevision 1 3 S The version number for the INI file The value shown here looks odd because it is automatically updated when using the Revision Control System It s a good idea to change this number each time you revise your file If you want to edit this manually just change the number and leave the other tags alone MACHINE My Controller This is the name of the controller which is printed out at the top of most graphical interfaces You can put whatever you want here as long as you make it a single line long 4 3 2 DISPLAY Section Different user interface programs use different options and not every option is supported by every user interface DISPLAY tkemc The name of the user interface to use Valid options may include e axis e keystick e mini e tkemc e xemc POSITION_OFFSET RELATIVE The coordinate system RELATIVE or MACHINE to show when the user interface starts The RELATIVE coordinate system reflects the G92 and G5x coordi nate offsets currently in effect POSITION_FEEDBACK ACTUAL The coordinate value COMMANDED or ACTUAL to show when the user interface starts The COMMANDED position is the ideal position requested by EMC The ACTUAL position is the feedback position of the motors CHAPTER 4 INI CONFIGURATION 24 MAX_FEED_OVERRIDE 1 2 The maximum feed override the user may select 1 2 means 120 of the programmed feed rate MIN_SPINDLE_OVERRIDE 0 5 The
113. TENTS vi 6 4 1 TORSE ina fr ek A Tha A ae ee ae eee Se GS Ee es A 44 6 4 2 Erector SEIS aia 544404 e bob S Rb ERE eRe Hee eet bene da 44 6 4 3 Taky eere raa SR OS Ee Se OEE we RAE eal oe ee Be eo a ae 45 6 4 4 A Lego Example s oa oe EA A Rw ee ee a 46 6 5 Timing Issues Ii GAL 2 cee eee OE a eed ee eee Us 46 7 HAL Tutorial 47 Val IDE westai oscar eee eG a a ls 47 7 1 1 ii s e dows a a has E a ws O we Bree A he wh et E ws R 47 7 1 2 THe RTAPI cwvironmient es sosoca ma a aTi a moia a e da di e 47 V2 Tab Gonpletion 3025 2a we ee ee ee ee a aaa da i a 48 Tom ASimple Example lt lt o where OS a we a te wd He we 48 7 3 1 Loading a realtime component 2 6 ee we ee ee 48 Pee Examining the HAL oo wi a ba a We ee he ee 48 7 3 3 Making realtime code TUT gt s a sis a ee ele a Ee we aa 50 7 3 4 Changing parameters crac RRA ER we we ee ee S 51 EA Saving the HAL configuration e 51 7 3 6 Restoring the HAL configuration lt lt e o cisnes 52 7 4 Looking at the HAL with halmeter 62a eee ras e eee eS 52 7 4 1 oring WANG co socia A a de eo 52 7 4 2 Ue ci SI eS a Bde HE ww bE Sow bed bee Ji aa 54 7 0 Aslightly more complex example s seod ee a Re Ne a eo 55 7 Del Installing The Components lt s s eaa s seenen be a ee eee 55 Lie Connecting pins with signals o ce ee ee s 56 7 9 3 Setting up realtime execution threads and functions 57 7 5 4 Seting paramers E 58 7 5 5 Vio a A AAA AA A ed
114. You can also supply arguments to halrun that are passed on to halemd or give the name of a hal file Because halrun stops the realtime system when it exits the hal file run in this way will typically end with a command that waits for completion like loadrt w halscope 7 2 Tab completion Your version of halemd may include tab completion Instead of completing filenames as a shell does it completes commands with HAL identifiers Try pressing tab after starting a HAL command halcmd lo lt TAB gt loadrt loadusr lock halcmd loadrt d lt TAB gt ddt debounce 7 3 A Simple Example 7 3 1 Loading a realtime component For the first example we will use a HAL component called siggen which is a simple signal genera tor A complete description of the siggen component can be found in section 15 7 of this document It is a realtime component implemented as a Linux kernel module To load siggen use the halcmd loadrt command halcmd loadrt siggen 7 3 2 Examining the HAL Now that the module is loaded it is time to introduce halcmd the command line tool used to config ure the HAL This tutorial will introduce some halemd features for a more complete description try man halcmd or see the halcmd reference in section 10 1 of this document The first halemd feature is the show command This command displays information about the current state of the HAL To show all installed components halcmd show comp Loaded HAL Components ID
115. _color otherwise lt led gt lt halpin gt my led lt halpin gt lt size gt 50 lt size gt lt on_color gt blue lt on_color gt lt off_color gt black lt off_color gt lt led gt lt halpin gt sets the name of the pin default is led n where n is an integer lt size gt sets the size of the led default is 20 lt on_color gt sets the color of the LED when the pin is true default is green lt off_color gt sets the color of the LED when the pin is false default is ref CHAPTER 18 VIRTUAL CONTROL PANELS 156 18 5 2 Button A button is used to control a BIT pin The pin will be set True when the button is pressed and held down and will be set False when the button is released lt button gt lt halpin gt my button lt halpin gt lt text gt ON lt text gt lt button gt ok 18 5 3 Checkbutton A checkbutton controls a BIT pin The pin will be set True when the button is checked and false when the button is unchecked lt checkbutton gt lt halpin gt my checkbutton lt halpin gt lt checkbutton gt An unchecked checkbutton A and a checked one 18 5 4 Radiobutton A radiobutton will set one of a number of BIT pins true The other pins are set false lt radiobutton gt lt choices gt one two three lt choices gt lt halpin gt my radio lt halpin gt lt radiobutton gt r ONE We two three Note that the HAL pins in the example above wil
116. aboration with the OMAC User s Group we have written soft ware which implements real time control of equipment such as machine tools robots and coordinate measuring machines The goal of this software development is twofold first to provide complete software implementations of all OMAC modules for the purpose of validating application programming interfaces and second to provide a vehicle for the transfer of control technology to small and medium sized manufacturers via the NIST Manufacturing Extension Partnership The EMC software is based on the NIST Real time Control System RCS Methodology and is programmed using the NIST RCS Library The RCS Library eases the porting of controller code to a variety of Unix and Microsoft platforms providing a neutral application programming interface API to operating sys tem resources such as shared memory semaphores and timers The RCS Library also implements a communication model the Neutral Manufacturing Language which allows control processes to read and write C data structures throughout a single homogeneous environment or a heterogeneous networked environment The EMC software is written in C and C and has been ported to the PC Linux Windows NT and Sun Solaris operating systems When running actual equipment a real time version of Linux is used to achieve the deterministic computation rates required 200 microseconds is typical The software can also be run entirely in simulation down t
117. addf siggen 0 update test thread halcmd start halcmd setp siggen 0 amplitude 5 7 4 1 Starting halmeter At this point we have the siggen component loaded and running It s time to start halmeter Since halmeter is a GUI app X must be running halcmd loadusr halmeter At the same time a halmeter window opens on your screen looking something like figure 7 1 CHAPTER 7 HAL TUTORIAL 53 X A HAL Meter x Select Exit Figure 7 1 Halmeter at startup nothing selected XA Select Item to Probe NTE Pins Signals Parameters siggen 1 cosine siggen 1 sine siggen 1 square siggen 1 triangle OK Accept Cancel Figure 7 2 Halmeter source selection dialog CHAPTER 7 HAL TUTORIAL 54 7 4 2 Using halmeter The meter in figure 7 1 isn t very useful because it isn t displaying anything To change that click on the Select button which will open the probe selection dialog figure 7 2 This dialog has three tabs The first tab displays all of the HAL pins in the system The second one displays all the signals and the third displays all the parameters We would like to look at the pin siggen 0 triangle first so click on it then click the OK button The probe selection dialog will close and the meter looks something like figure 7 3 X HAL Meter NES 3 71923e 00 siggen 1 triangle Select Exit Figure 7 3 Halmeter displaying the value of a pin You should see the value
118. ady loaded the numeric argument to halscope will have no effect Chapter 8 General Reference Information 8 1 Notation 8 1 1 Typographical Conventions Command line examples are presented in bold typewriter font Responses from the computer will be in typewriter font As of early 2006 there are no longer commands that require root privileges so all examples will be preceded by the normal user prompt Text inside square brackets like this is optional Text inside angle brackets lt like this gt represents a field that can take on different values and the adjacent paragraph will explain the appropriate values Text items separated by a vertical bar means that one or the other but not both should be present All command line examples assume that you are in the emc2 directory and you configured compiled emc2 for the run in place scenario Paths will be shown accordingly when needed 8 1 2 Names All HAL entities are accessed and manipulated by their names so documenting the names of pins signals parameters etc is very important HAL names are a maximum of 41 characters long as defined by HAL_NAME_LEN in hal h Many names will be presented in a general form with text inside angle brackets lt 1ike this gt representing fields that can take on different values When pins signals or parameters are described for the first time their names will be preceeded by their type in SMALL CAPS and followed by a brief description A ty
119. ain the text to search for in the current directory and all the subdirec tories below the current while ignoring the case The i is for ignore case and the r is for recursive include all subdirectories in the search The is a wild card for search all files 27 5 Hardware Problems 27 5 1 Monitor Resolution During installation Ubuntu attempts to detect the monitor settings If this fails you are left with a generic monitor with a maximum resolution of 800x600 Instructions for fixing this are located here https help ubuntu com community FixVideoResolutionHowto Part XIII Glossary 199 200 A listing of terms and what they mean Some terms have a general meaning and several additional meanings for users installers and developers Acme Screw A type of lead screw that uses an acme thread form Acme threads have somewhat lower friction and wear than simple triangular threads but ball screws are lower yet Most manual machine tools use acme lead screws Axis One of the computer control movable parts of the machine For a typical vertical mill the table is the X axis the saddle is the Y axis and the quill or knee is the Z axis Additional linear axes parallel to X Y and Z are called U V and W respectively Angular axes like rotary tables are referred to as A B and C Backlash The amount of play or lost motion that occurs when direction is reversed in a lead screw or other mechanical motion driving system It can
120. alui estop is activated indicates E stop reset 17 2 3 Mode e 317 halui mode manual pin for requesting manual mode e 817 halui mode is_manual indicates manual mode is on e 317 halui mode auto pin for requesting auto mode e 817 halui mode is_auto indicates auto mode is on e 317 halui mode mdi pin for requesting mdi mode e 817 halui mode is_mdi indicates mdi mode is on 148 CHAPTER 17 HALUI 149 17 2 4 Mist Flood Lube e 317 halui mist on pin for requesting mist on e 817 halui mist is on indicates mist is on e 317 halui flood on pin for requesting flood on e 817 halui flood is on indicates flood is on e 317 halui lube on pin for requesting lube on e 817 halui lube is on indicates lube is on 17 2 5 Spindle e 817 halui spindle start e 317 halui spindle stop e 817 halui spindle forward e 817 halui spindle reverse e 817 halui spindle increase e 817 halui spindle decrease e 317 halui spindle brake on pin for activating spindle brake e 317 halui spindle brake off pin for deactivating spindle brake e 817 halui spindle brake is on indicates brake is on 17 2 6 Joints lt channel gt is a number between O and 7 and selected e 817 halui joint lt channel gt home pin for homing the specific joint e 817 halui joint lt channel gt on min limit soft status pin telling joint is at the negative software limit e 817 halui joint l
121. an freqgen xxx The original name of the freqgen module was stepgen and I haven t gotten around to re doing all the screen shots since it was renamed The name stepgen now refers to a different step pulse generator one that accepts position instead of velocity commands Both are described in detail later in this document CHAPTER 7 HAL TUTORIAL gt lt Realtime function not linked lx The HALSCOPE realtime sampling function must be called from a HAL thread in to determine the sampling rate Please do one of the following Select a thread name and multiplier then click OK or Click Quit to exit HALSCOPE Thread e Sample Period Sample Rate siggen thread 1 01 mSec stepgen thread 50 3 uSec 1 Multiplier Record Length C 16191 samples 1 channel C 8095 samples 2 channels 4047 samples 4 channels C 2023 samples 8 channels C 1011 samples 16 channels OK Quit Figure 7 4 Realtime function not linked dialog XA HAL Oscilliscope Mak Horizontal Zoom 500 mSec 4047 samples C Normal Pos per div at 994 Hz C Single See IDLE sf 2 a s s f 7 6 afvofssfre iafralis ie ore Selected Channel Run Mode Stop onnofancn denon danes Vertical E Gain Pos gogan Scale Chan Off Trigger Normal C Auto Force Level Pos any Level
122. analog input channel This may be used for individual channel reads or it may cause all channels to be read 9 4 Analog Output The canonical analog output I O Type adcout This is intended for any kind of hardware that can output a more or less continuous range of values Examples are digital to analog converters or PWM generators Pins e FLOAT value The value to be written The actual value output to the hardware will depend on the scale and offset parameters e BIT enable If false then output O to the hardware regardless of the value pin CHAPTER 9 CANONICAL DEVICE INTERFACES 73 9 4 1 Parameters e FLOAT offset This will be added to the value before the hardware is updated e FLOAT scale This should be set so that an input of 1 on the value pin will cause 1V e FLOAT high limit optional When calculating the value to output to the hardware if value offset is greater than high_limit then high_limit will be used instead e FLOAT low_limit optional When calculating the value to output to the hardware if value offset is less than low_limit then low_limit will be used instead e FLOAT bit_weight optional The value of one least significant bit LSB in volts or mA for current outputs e FLOAT hw_offset optional The actual voltage or current that will be output if O is written to the hardware 9 4 2 Functions FUNCT write This causes the calculated value to be out
123. and functions for prefix option data type default none DEPRECATED If specified each instance of the component will have an associated data block of type which can be a simple type like float or the name of a type created with typedef In new components variable should be used instead option extra_setup yes default no If specified call the function defined by EXTRA_SETUP for each instance If using the automat ically defined rtapi_app_main extra_arg is the number of this instance option extra_cleanup yes default no If specified call the function defined by EXTRA_CLEANUP from the automatically defined rtapi_app_exit or if an error is detected in the automatically defined rtapi_app_main option userspace yes default no If specified this file describes a userspace component rather than a real one A userspace component may not have functions defined by the function directive Instead after all the instances are constructed the C function user_mainloop is called When this function returns the component exits Typically user_mainloop will use FOR_ALL_INSTS to perform the update action for each instance then sleep for a short time Another common action in user_mainloop may be to call the event handler loop of a GUI toolkit option userinit yes default no If specified the function userinit argc argv is called before rtapi_app_main and thus before the call to hal_init This function
124. ane feel that the cold steel of Erector Sets The heart of construction with Tinker Toys was a round connector with eight holes equally spaced around the circumference It also had a hole in the center that was perpendicular to all the holes around the hub Hubs were connected with rods of several different lengths Builders would make large wheels by using these rods as spokes sticking out from the center hub My favorite project was a rotating space station Short spokes radiated from all the holes in the center hub and connected with hubs on the ends of each spoke These outer hubs were connected to each other with longer spokes P d spend hours dreaming of living in such a device walking from hub to hub around the outside as it slowly rotated producing near gravity in weightless space Supplies traveled through the spokes in elevators that transfered them to an from rockets docked at the center hub while they transfered their precious cargos The idea of one pin or component being the hub for many connections is also an easy concept within the HAL Examples two and four see section 7 connect the meter and scope to signals that are intended to go elsewhere Less easy is the notion of a hub for several incoming signals but that is also possible with proper use of functions within that hub component that handle those signals as they arrive from other components Another thought that comes forward from this toy is a mechanical representation of HA
125. art normally And finally if you specify an item to display you can add s before the pin sig param to tell halmeter to use a small window The item name will be displayed in the title bar instead of under the value and there will be no buttons Usefull when you want a lot of meters in a small amount of screen space 10 3 Halscope Halscope is an oscilloscope for the HAL It lets you capture the value of pins signals and param eters as a function of time Complete operating instructions should be located here eventually For 75 CHAPTER 10 TOOLS AND UTILITIES now refer to section 7 6 in the tutorial chapter which explains the basics 76 CHAPTER 10 TOOLS AND UTILITIES 77 10 4 Halshow The script halshow can help you find your away around a running HAL This is a very specialized system and it must connect to a working HAL It can not run stand alone because it relies on the ability of HAL to report what it knows of itself through the halemd interface library It is discovery based Each time halshow runs with a different EMC configuration it will be different As we will soon see this ability of HAL to document itself is one key to making an effective CNC system 10 4 1 Starting Halshow Halshow is in the AXIS menu under Machine Show Hal Configuration Halshow is in the TKEMC menu under Scripts Hal Show 10 4 2 Hal Tree Area At the left of its display as shown in figure 10 1 is a tree view somewhat like
126. as given when the component was loaded Note the column labeled Dir The parameters labeled w are writeable ones that are never changed by the component itself instead they are meant to be changed by the user to control the component We will see how to do this later Parameters labeled R are read only parameters They can be changed only by the component Finally parameter labeled RW are read write parameters That means that thay are changed by the component but can also be changed by the user Note the parameters siggen 0 update time and siggen 0 update tmax are for debugging purposes and won t be covered in this section Most realtime components export one or more functions to actually run the realtime code they contain Let s see what function s siggen exported halcmd show funct Exported Functions Owner CodeAddr Arg FP Users Name 32769 b7 74ac5 b7d0c0b4 YES 0 siggen 0 update The siggen component exported a single function It requires floating point Itis not currently linked to any threads so users is zero The number after halemd in the component list is the process ID It is possible to run more than one copy of halemd at the same time in different windows for example so the PID is added to the end of the name to make it unique 2The codeaddr and arg fields were used in development and should probably be removed from the halemd listing CHAPTER 7 HAL TUTORIAL 50 7 3 3 Making realtime code run To actua
127. ased screen graphics program named keystick 1 3 e an X Windows programs named xemc 1 6 e two Tcl Tk based GUIs named tkemc 1 5 and mini 1 4 e an OpenGL based GUI with an interactive G Code previewer called AXIS 1 2 Tkemc and Mini will run on Linux Mac and Microsoft Windows if the Tcl Tk programming language has been installed The Mac and Microsoft Windows version can connect to a real time EMC2 running on a Linux machine via a network connection allowing the monitoring of the machine from a remote location Instructions for installing and configuring the connection between a Mac or Microsoft Machine and a PC running the EMC2 can be found in the Integrators Handbook 1 5 2 Motion Controller EMCMOT Motion control includes sampling the position of the axes to be controlled computing the next point on the trajectory interpolating between these trajectory points and computing an output CHAPTER 1 THE ENHANCED MACHINE CONTROL 6 axis ngc AXIS fol File Machine View Help Q fo D g gi i d IZ IN x ly JP 5 gt Manual Control F3 MDI F5 Axis Cx OY OZ Continuous w Home All Touch Off 7 Override Limits Spindle Stop E El Coolant Mist Flood Feed Override 100 Spindle Override 100 Ea Jog Speed 71 infmin AXIS 1 480 splash g code Not intended for actual milling 1 1 SH 2 01 CUT 5 3 0003 SCALE 4 60 FEED 620 Character
128. ator to understand Perhaps the most important display is the mode the EMC2 is running in You will want to keep your eye on the mode display Right up there with knowing what mode is active is consistent display of the position of each axis Most of the interfaces will allow the operator to read position based upon actual or commanded position as well as machine or relative position Machine This is the position of an axis relative to the place where it started or was homed CHAPTER 1 THE ENHANCED MACHINE CONTROL 10 Settings Help Limit Override ESTOP MIST OFF SHNDLE OFF E RV GUA RUT TETTI MANUAL PLGGD OFF BRAKE OR 0 0000 Y 0 0000 0 0000 CHO i fea i i Passe Resme Step Varify E Figure 1 6 The XEMC Graphical Interface Relative This is the position of an axis after work or tool or other offsets have been applied Actual This is the real position of the axis within the machine or relative system Commanded This is where the axis is commanded to be These may all be exactly the same if no offsets have been applied and there is no deadband set in the INI file Deadband is a small distance which is assumed to be close enough perhaps one stepper pulse or one encoder count It is also important to see any messages or error codes sent by the EMC2 These are used to request the operator change a tool to describe problems in G code programs or to tell why the machine CHAPTER 1
129. ave at least one HALFILE and stepper systems typically have two such files one which specifies the generic stepper configuration core_stepper hal and one which specifies the machine pin out xxx_pinout hal HAL command Execute command as a single hal command If HAL is specified multiple times the commands are executed in the order they appear in the ini file HAL lines are executed after all HALFILE lines SHUTDOWN shutdown hal Execute the file shutdown hal when EMC is exiting Depending on the hardware drivers used this may make it possible to set outputs to defined values when EMC is exited normally However because there is no guarantee this file will be executed for instance in the case of a computer crash it is not a replacement for a proper physical e stop chain or other protections against software failure POSTGUI_HALFILE example2 hal Only with the AXIS GUI Execute example2 hal after the GUI has created its HAL pins See section 18 for more information 4 3 8 TRAJ Section The TRAJ section contains general parameters for the trajectory planning module in EMCMOT COORDINATES X Y Z The names of the axes being controlled X Y Z A B C U V and W are all valid Only axis named in COORDINATES are accepted in g code This has no effect on the mapping from G code axis names X Y Z to joint numbers for trivial kinematics X is always joint O A is always joint 4 and U is always joint 7 and s
130. ax h out h in For all pins whether or not they are also proper Python identifiers the value may be accessed or set using the subscript syntax h out h in CHAPTER 12 CREATING USERSPACE PYTHON COMPONENTS WITH THE HAL MODULE 95 12 4 1 Driving output HAL_OUT pins Periodically usually in response to a timer all HAL_OUT pins should be driven by assigning them a new value This should be done whether or not the value is different than the last one assigned When a pin is connected to a signal its old output value is not copied into the signal so the proper value will only appear on the signal once the component assigns a new value 12 4 2 Driving bidirectional HAL_IO pins The above rule does not apply to bidirectional pins Instead a bidirectional pin should only be driven by the component when the component wishes to change the value For instance in the canonical encoder interface the encoder component only sets the index enable pin to FALSE when an index pulse is seen and the old value is TRUE but never sets it to TRUE Repeatedly driving the pin FALSE might cause the other connected component to act as though another index pulse had been seen 12 5 Exiting A halcmd unload request for the component is delivered as a KeyboardInterrupt exception When an unload request arrives the process should either exit in a short time or call the exit method on the component if substantial work such a
131. ble eight conductor shielded cable to connect an encoder to the servo input board in the computer the reader immediately understands what it is and is led to the question what kinds of connectors will I need to make up each end The same sort of thinking is essential for the HAL but the specific train of thought may take a bit to get on track Using HAL words may seem a bit strange at first but the concept of working from one connection to the next is the same This idea of extending the wiring diagram to the inside of the controller is what HAL is all about If you are comfortable with the idea of interconnecting hardware black boxes you will probably have little trouble using HAL to interconnect software black boxes CHAPTER 6 INTRODUCTION 42 6 2 HAL Concepts This section is a glossary that defines key HAL terms but it is a bit different than a traditional glossary because these terms are not arranged in alphabetical order They are arranged by their relationship or flow in the HAL way of things Component When we talked about hardware design we referred to the individual pieces as parts building blocks black boxes etc The HAL equivalent is a component or HAL component This document uses HAL component when there is likely to be confusion with other kinds of components but normally just uses component A HAL component is a piece of software with well defined inputs outputs and behavior that can be installed and
132. c loop The first loop is number 0 If debug 1 is specified the component will export a few extra parameters that may be useful during debugging and tuning By default the extra parameters are not exported to save shared memory space and avoid cluttering the parameter list 15 4 2 Removing emc2 halcmd unloadrt pid 15 4 3 Pins The three most important pins are e FLOAT pid lt loopnum gt command The desired position as commanded by another system component e FLOAT pid lt loopnum gt feedback The present position as measured by a feedback device such as an encoder e FLOAT pid lt loopnum gt output A velocity command that attempts to move from the present position to the desired position For a position loop command and feedback are in position units For a linear axis this could be inches mm meters or whatever is relevant Likewise for an angular axis it could be degrees radians etc The units of the output pin represent the change needed to make the feedback match the command As such for a position loop Output is a velocity in inches sec mm sec degrees sec etc Time units are always seconds and the velocity units match the position units If command and feedback are in meters then output is in meters per second Each loop has two other pins which are used to monitor or control the general operation of the component e FLOAT pid lt loopnum gt error Equals comma
133. cal control pins If the direction is not specified the data group defaults to output For example IHAL cannot automatically determine if the x mode bidirectional pins are actually open collectors OC If they are not they cannot be used as inputs and attempting to drive them LOW from an external source can damage the hardware To determine whether your port has open collector pins load hal_parport in x mode output a HIGH value on the pin HAL should read the pin as TRUE Next insert a 470 resistor from one of the control pins to GND If the resulting voltage on the control pin is close to OV and HAL now reads the pin as FALSE then you have an OC port If the resulting voltage is far from OV or HAL does not read the pin as FALSE then your port cannot be used in x mode The external hardware that drives the control pins should also use open collector gates e g 74LS05 Generally the out HAL pins should be set to TRUE when the physical pin is being used as an input On some machines BIOS settings may affect whether x mode can be used SPP mode is most most likely to work 125 CHAPTER 16 HARDWARE DRIVERS 126 loadrt hal_parport cfg 0x278 0x378 in 0x20A0 out This example installs drivers for one port at 0x0278 with pins 2 9 as outputs by default since neither in nor out was specified one at 0x0378 with pins 2 9 as inputs and one at 0x20A0 with pins 2 9 explicitly specified
134. cates that the function performs floating point calculations nofp Indicates that it only performs integer calculations If neither is specified fp is assumed Neither comp nor gcc can detect the use of floating point calculations in functions that are tagged nofp OPT VALUE Depending on the option name OPT the valid VALUEs vary The currently defined options are option singleton yes default no Do not create a count module parameter and always create a single instance With singleton items are named component name item name and without singleton items for numbered instances are named component name lt num gt item name CHAPTER 11 COMP A TOOL FOR CREATING HAL MODULES 86 option default_count number default 1 Normally the module parameter count defaults to O If specified the count will default to this value instead option count_function yes default no Normally the number of instances to create is specified in the module parameter count if count_function is specified the value returned by the function int get_count void is used instead and the count module parameter is not defined option rtapi_app no default yes Normally the functions rtapi_app_main and rtapi_app_exit are automatically defined With option rtapi_app no they are not and must be provided in the C code When implementing your own rtapi_app_main call the function int export char prefix long extra_arg to register the pins parameters
135. ch unit of distance to be traveled Once we have done this the EMC2 knows how to count units of distance However it is very important to understand that this counting of distance is different from the commanding of distance You can command distance in millimeters or inches without even thinking about the units that you defined There are G codes that allow you to switch easily between metric and imperial Part IV Installing EMC Chapter 2 Installing the EMC2 software 2 1 Introduction One of the problems users often complained about EMC was installing the software itself They were forced to get sources and compile themselves and try to set up a RT patched Linux etc The developers of EMC2 chose to go with a standard distribution called Ubuntu Ubuntu has been chosen because it fits perfectly into the Open Source views of EMC2 Ubuntu will always be free of charge and there is no extra fee for the enterprise edition we make our very best work available to everyone on the same Free terms Ubuntu comes with full professional support on commercial terms from hundreds of compa nies around the world if you need those services Each new version of Ubuntu receives free security updates for 18 months after release some versions are supported for even longer Ubuntu uses the very best in translations and accessibility infrastructure that the Free Soft ware community has to offer to make Ubuntu usable for as many people as possible
136. changing as siggen generates its triangle wave Halmeter refreshes its display about 5 times per second If you want to quickly look at a number of pins you can use the Accept button in the source selection dialog Click on Select to open the dialog again This time click on another pin like siggen 0 cosine and then click Accept When you click Accept the meter immediately begins to display the newly selected item but the dialog does not close Try displaying a parameter instead of a pin Click on the Parameters tab then select a parameter and click Accept again You can very quickly move the meter probes from one item to the next with a couple of clicks To shut down halmeter just click the exit button If you want to look at more than one pin signal or parameter at a time you can just start more halmeters The halmeter window was intentionally made very small so you could have a lot of them on the screen at once 3Halmeter is due for a rewrite The rewrite will do a number of things to make it nicer Scientific notation will go away it is a pain to read Some form of ranging including autoranging will be added to allow it to display a wide range of numbers without using scientific notation An analog bar graph display will also be added to give a quick indication of trends When the rewrite is done these screenshots and the accompanying text will be revised to match the new version C
137. connect HAL pins together as required by the machine builder HAL signals can be disconnected and reconnected at will even while the machine is running Type When using real hardware you would not connect a 24 volt relay output to the 10V analog input of a servo amp HAL pins have the same restrictions which are based upon their type Both pins and signals have types and signals can only be connected to pins of the same type Currently there are 4 types as follows BIT a single TRUE FALSE or ON OFF value FLOAT a 32 bit floating point value with approximately 24 bits of resolution and over 200 bits of dynamic range U32 a 32 bit unsigned integer legal values are O to 4294967295 32 a 32 bit signed integer legal values are 2147483648 to 2147483647 Function Real hardware components tend to act immediately on their inputs For example if the input voltage to a servo amp changes the output also changes automatically However software components cannot act automatically Each component has specific code that must be executed to do whatever that component is supposed to do In some cases that code simply runs as part of the component However in most cases especially in realtime components the code must run in a specific sequence and at specific intervals For example inputs should be read before calculations are performed on the input data and outputs should not be written until the calculations are done In these cas
138. corner 18 6 4 Labelframe lt labelframe text Group Title gt lt hbox gt lt led gt lt led gt lt hbox gt lt labelframe gt 18 6 5 Table A table is a container that allows layout in a grid of rows and columns Each row is started by a lt tablerow gt tag A contained widget may span rows or columns through the use ofthe lt tablespan rows cols gt tag The sides of the cells to which the contained widgets stick may be set through the use of the lt tablesticky sticky gt tag A table expands on its flexible rows and columns Example lt table flexible _rows 2 flexible _columns 1 4 gt lt tablesticky sticky new gt lt tablerow gt lt label text A cell 1 1 gt lt label text B cell 1 2 gt CHAPTER 18 VIRTUAL CONTROL PANELS lt tablespan columns 2 gt lt label text C D cells 1 3 and 1 4 gt ky sticky nsew gt lt tablespan rows 2 gt 1 text G cell 2 3 gt lt tablerow gt lt label text E cell 2 1 gt lt tablestic lt label text spans n2 rows gt lt tablesticky sticky new gt lt lab lt label text H cel DAYS lt tablerow gt lt label text J cell 3 1 gt lt label text K cell 3 2 gt lt label text M cell 3 4 gt lt table gt 161 Chapter 19 VCP 19 1 VCP A small example NOTE VCP is deprecated and
139. crs astea wae ew eee ees 88 11 9 Component Personality sm eo e moiy a A a we aw Aa 88 11 10 Compiling comp files in the source tree arenamed 0022 eee eee 88 11 11 Compiling realtime components outside the source tree 04 88 11 12 Compiling userspace components outside the source tree 89 LLIS Mame o ia a ww we ae Me a wa we a Gee ee eee ts 89 TTL constant soco hE We ew woy aa a a a ek Be aa 89 11132 BICIS coa RASHEED SREB E TES Saeed ne eb eee ds 89 MASS US coda bs we kee Sa Ee we oe a a ee 89 11 184 hal loop s csi ER RR ea A ERS oR AS SE bs Se ee we 90 LLIJS araye ssaa apa a a A a als 91 LEISG Tilo E a a a a Be a e Be ee E a n e ati Gee ee Eaa 91 TODE serosa Ge Se A ke E i a Be we Ee 91 12 Creating Userspace Python Components with the hal module 93 UD A o AA II NN 93 12 2 Userspace components and delays lt o ew ee 94 12 3 Create pins and parameters lt s oos o escri ee es 94 1231 Choangna lle prem ceras ss ea OA Bee dd 94 12 4 Reading and writing pins and parameters e 94 1241 Driving output HAL OUT PiS o s s s o w w oma a i i a oe a ar i a a s 95 12 4 2 Driving bidirectional HAL_IO pins 95 125 EI ds a A ARE wee a A A AA ee 95 126 Project ideas os scr A AA A A A Sw de A ee 95 VII EMC related HAL 96 13 Basic configurations for a stepper based system 97 13 1 Tniroduchon cues od we a ee ee Ee A AA AA RL 97
140. da Sas a a cc ES 149 17 29 SANE ocres ran e a ew Ae a ae ew as 149 o JO ce ek we ne a ee Ee a RA 149 a E IAEA 150 L726 O AAA RRA Bes wa Eee 150 172 9 Peed Oven AIN 150 17 2 1 OpUAGle PUE oc a Ad ER Res 150 U2 4A TOG 6 i ke ARRAS AE EE SR RA ERASE EDR A e hae 150 W712 Program she awe Oa ee RA Oe ee ak a a AAA 151 17 215 Centralia Dae SES EE ae ORE ew EERE al UN ee EE 151 EA MED ook oe eR Re amp PE ee A EG a Seed ae eh eG we 151 UA Case SIGS osa a Paes AS Pa SES PGES bes be ee a 151 18 Virtual Control Panels 152 161 Tnirodneton oaos ay oe al A ee A Ge ete Sh Ad Gis Bo a 152 Laa eh de dee dose ee a Aa SR ae a a Oe bs eo ae GS 152 153 Seite PY gah be anyk SEER eR ba ba whee bee wee 153 184 Using per CP wih BAIS ooga a aa BY we DG A aa eee ee AA 153 18 5 py VCP Wiksel TEO oe ee Ce ee we eae OE Ee aS a 154 LEO UVES AAN 154 16 590 2General NOR a a dee Be a ag rh Ais a es A A Sek de Be A 155 Week IED ek Sh bw ore wes a ae aw ware Sas PP a ee be ee ee eR ER 155 18 22 Button oa ek RRA RR AA EERO A eh Ga ew bad 156 19 6 9 Checkbutlon cx 00m eRe ae a Re a ae ew A 156 13 52 Badiobuuen ca cic ui ve Gia ative wdeewa Yaw habe Va wih eS 156 1895 Number cs ccoa ee he eh HBR AREER OS Re oe we ee aG 156 USO IA 157 E I te ed ee a ee SE a a Sw GE a ee de A 157 Lee o 6 a i a oO EAR Aw AS OEE Ee RO Re hee ee 158 EA GOA ce ob ek eek HE ae a SE a Sie a Ga he le ae Hig ae a ws 158 19 510 Jogwheel css ew we ee als 158 18
141. der driver will never set index enable True However some other component may do so If index enable is True then when the next index pulse arrives the encoder counter will be reset to zero and the driver will set index enable False That will let the other component know that an index pulse arrived This is a form of handshaking the other component sets index enable True to request a index pulse reset and the driver sets it False when the request has been satisfied CHAPTER 9 CANONICAL DEVICE INTERFACES 74 9 5 2 Parameters 9 5 FLOAT scale The scale factor used to convert counts to position units It is in counts per position unit For example if you have a 512 count per turn encoder on a 5 turn per inch screw the scale should be 512 5 2560 counts per inch which will result in position in inches and velocity in inches per second FLOAT max index vel optional The maximum velocity in position units per second at which the encoder can reset on an index pulse with 1 count accuracy This is an output from the encoder driver and is intended to tell the user something about the hardware capa bilities Some hardware can reset the counter at the exact moment the index pulse arrives Other hardware can only tell that an index pulse arrived sometime since the last time the read function was called For the latter 1 count accuracy can only be achieved if the encoder advances by
142. der input reset counter to zero and clear index enable B B T m5120 lt board gt enc lt channel gt volts if false reset When true counter is forced to zero T m5i20 lt board gt dac lt channel gt enable Enables DAC if true DAC outputs zero FLOAT m5i20 lt board gt dac lt channel gt value Analog output value for PWM DAC in user units see scale and offset B B T m5i20 lt board gt in lt channel gt n ital input T m5i20 lt board gt watchdog reset T m5i20 lt board gt in lt channel gt State of digital input pin see canonical digital input ot Inverted state of digital input pin see canonical T m5i20 lt board gt out lt channel gt Value to be written to digital output see canonical ital output T m5i20 lt board gt estop in Dedicated estop input more details needed T m5i20 lt board gt estop in not Inverted state of dedicated estop input Bidirectional Set TRUE to reset watchdog once is automatically cleared If bit value 16 is set in watchdog control then this value is not used and the hardware watchdog is cleared every time the dac write function is executed 16 5 2 Parameters E vert from counts to units E E B LOAT LOAT m5i20 lt board gt dac lt channel m5i20 lt board gt dac lt channel LOAT m5i20 lt board gt enc lt channel gt scale The number of counts user
143. driven FALSE when an external e stop condition exists iocontrol 0 lube iocontrol 0 lube_level Should be driven TRUE when iocontrol 0 tool change TRUE when a tool change is requested iocontrol 0 tool changed Should be driven TRUE when a tool change is completed iocontrol 0 tool prep number The number of the next tool from the RS274NGC T word iocontrol 0 tool prepare TRUE when a tool prepare is requested iocontrol 0 tool prepared Should be driven TRUE when a tool prepare is completed iocontrol 0 user enable out FALSE when an internal e stop condition exists iocontrol 0 user request enable TRUE when the user has requested that e stop be cleared Part VI HAL Specifics 39 Chapter 6 Introduction 6 1 What is HAL HAL stands for Hardware Abstraction Layer At the highest level it is simply a way to allow a number of building blocks to be loaded and interconnected to assemble a complex system The Hardware part is because HAL was originally designed to make it easier to configure EMC for a wide variety of hardware devices Many of the building blocks are drivers for hardware devices However HAL can do more than just configure hardware drivers 6 1 1 HAL is based on traditional system design techniques HAL is based on the same principles that are used to design hardware circuits and systems so it is useful to examine those principles first Any system including a CNC machine consists of interconnected components For th
144. e axis N backlash filt Backlash or screw compensation filtered value respecting motion limits axis N backlash vel Backlash or screw compensation velocity axis N coarse pos cmd axis N error TRUE when this joint has encountered an error such as a limit switch closing axis N f error The actual following error axis N f error lim The following error limit axis N f errored TRUE when this joint has exceeded the following error limit axis N free pos cmd The free planner commanded position for this joint axis N free tp enable TRUE when the free planner is enabled for this joint axis N free vel lim The velocity limit for the free planner axis N home state Reflects the step of homing currently taking place axis N homed TRUE if the joint has been homed axis N in position TRUE if the joint is using the free planner and has come to a stop axis N joint vel cmd The joint s commanded velocity CHAPTER 5 EMC2 AND HAL 38 axis N neg hard limit The negative hard limit for the joint axis N neg soft limit The negative soft limit for the joint axis N pos hard limit The positive hard limit for the joint axis N pos soft limit The positive soft limit for the joint 5 3 iocontrol userspace These pins are created by the userspace IO controller usually called io 5 3 1 Pins iocontrol 0 coolant flood TRUE when flood coolant is requested iocontrol 0 coolant mist TRUE when mist coolant is requested iocontrol 0 emc enable in Should be
145. e Even though halemd doesn t recognize the tree structure proper choice of naming conventions will let it group related items together since it sorts the names In addition higher level tools can be designed to recognize such structure if the names provide the neccessary information To do that all HAL modules should follow these rules e Dots separate levels of the heirarchy This is analogous to the slash in a filename e e Hypens separate words or fields in the same level of the heirarchy e HAL modules should not use underscores or MixedCase e Use only lowercase letters and numbers in names 8 3 Hardware Driver Naming Conventions 8 3 1 Pin Parameter names Hardware drivers should use five fields on three levels to make up a pin or parameter name as follows lt device name gt lt device num gt lt io type gt lt chan num gt lt specific name gt The individual fields are lt device name gt The device that the driver is intended to work with This is most often an interface board of some type but there are other possibilities lt device num gt It is possible to install more than one servo board parallel port or other hardware device in a computer The device number identifies a specific device Device numbers start at O and increment lt io type gt Most devices provide more than one type of I O Even the simple parallel port has both digital inputs and digital o
146. e 4 Hee 8 4 2 2 OCIO Ss i ke A A BR AOE RR AA RM Reha kh ho Bale 4 2 3 WAVES a A A Hho A e a a ES 4 2 4 Denniions css 25 Sea G ee ee eae wee ee ee A INI Sector Variables cos ia we a dd 4 3 1 EMO Seton 2s eea aaa a a a we a a aea a a iia i a a a 4 3 2 DISPLAY Section nes cn 44 Cee eR do a a e r Lal AXIO UTOE aa oe e O a aS A a e a Ta a 4 3 3 FILER Secon eco oo On aw oe Ee a a A A 4 3 4 IRS2Z74NGC SECOS 6 6 dk ia a a e AR we ae de a ae A 4 3 5 EMEMOTISECION ocios ieee eee a eR e a 4 3 6 TASK SOCOM sio ERS eA ee Le ee eS 4 3 7 HAT secto cia A A A OR OE ae wha ae di 4 3 8 TRAJ SECO aiii we we OE ER me a A ee ee a 4 3 9 AXIS lt numi gt Section scudo ES ON ee ROH wee aw A 4 3 9 1 Homing related items os cs cre nio ha ee ee Oe ee ee ee ae 4 3 9 2 Servo Telated items 6 ee a ewe 4 3 9 3 Stepper relaied TEMS gt c s RHE Lee ees 43 10 EMCIO Secho occ we Se ke Be eee oe el we A a TIO eb Bose ic Ra we oh we Ed te E A Ble a we Were Stee E Bese a da 4 4 1 CERIO o 6s he RAR BLS Aaa A A A e ee we 4 4 2 HNOS SOQUEHES es e go eB Id Sod We ae la we a 4 4 3 COMAS i a a da ee aw Atal 17 17 17 17 18 18 18 19 19 19 20 CONTENTS 4 5 2 4 5 1 HOME SEARCH VEL s oop m main oe i o aaa YA Ge ee ew 4 4 3 2 HOME LATCH VEL os sca bee ee a a a a a 4 4 3 3 HOME_IGNORE_LIMITS o e eee 4 4 3 4 HOME_USE_INDEX o ee e 443 6 HOME OFFSET io iaa a a 2450 AAN 4 4 3 7 HOME_IS SHARED
147. e CNC ma chine those components might be the main controller servo amps or stepper drives motors en coders limit switches pushbutton pendants perhaps a VFD for the spindle drive a PLC to runa toolchanger etc The machine builder must select mount and wire these pieces together to make a complete system 6 1 1 1 Part Selection The machine builder does not need to worry about how each individual part works He treats them as black boxes During the design stage he decides which parts he is going to use steppers or servos which brand of servo amp what kind of limit switches and how many etc The integrator s decisions about which specific components to use is based on what that component does and the specifications supplied by the manufacturer of the device The size of a motor and the load it must drive will affect the choice of amplifier needed to run it The choice of amplifier may affect the kinds of feedback needed by the amp and the velocity or position signals that must be sent to the amp from a control In the HAL world the integrator must decide what HAL components are needed Usually every interface card will require a driver Additional components may be needed for software generation of step pulses PLC functionality and a wide variety of other tasks 6 1 1 2 Interconnection Design The designer of a hardware system not only selects the parts he also decides how those parts will be interconnected Each black box has
148. e HAL out pin TRUE drives the physical pin low turning ON an attached OPTO 22 module and FALSE drives it high turning OFF the OPTO 22 module If invert is TRUE then setting the HAL out pin TRUE will drive the physical pin high and turn the module OFF 16 3 4 Functions e FUNCT ax5214 lt boardnum gt read Reads all digital inputs on one board e FUNCT ax5214 lt boardnum gt write Writes all digital outputs on one board 3In fact it may be a pair of 8255 chips but I m not sure If when someone starts a driver for an 8255 they should look at the ax5214 code much of the work is already done CHAPTER 16 HARDWARE DRIVERS 130 16 4 Servo To Go The Servo To Go is one of the first PC motion control cards supported by EMC It is an ISA card and it exists in different flavours all supported by this driver The board includes up to 8 channels of quadrature encoder input 8 channels of analog input and output 32 bits digital I O an interval timer with interrupt and a watchdog 16 4 1 Installing loadrt hal_stg base lt address gt num_chan lt nr gt dio lt dio string gt model lt model gt The base address field is optional if it s not provided the driver attempts to autodetect the board The num_chan field is used to specify the number of channels available on the card if not used the 8 axis version is assumed The digital inputs outputs configuration is determined by a config string passed to in
149. e simpler setups because the motors run open loop no feedback comes back from the motors yet the system needs to be configured properly so the motors don t stall or lose steps Most of this chapter is based on the sample config released along with EMC2 The config is called stepper and usually it is found in etc emc2 sample configs stepper 13 2 Maximum step rate With software step generation the maximum step rate is one step per two BASE_PERIODs for step and direction output The maximum requested step rate is the product of an axis s MAX_VELOCITY and its INPUT_SCALE If the requested step rate is not attainable following errors will occur par ticularly during fast jogs and GO moves If your stepper driver can accept quadrature input use this mode With a quadrature signal one step is possible for each BASE_PERIOD doubling the maximum step rate The other remedies are to decrease one or more of the BASE_PERIOD setting this too low will cause the machine to become unresponsive or even lock up the INPUT_SCALE if you can select different step sizes on your stepper driver change pulley ratios or leadscrew pitch or the MAX_VELOCITY and STEPGEN_MAXVEL If no valid combination of BASE_PERIOD INPUT_SCALE and MAX_VELOCITY is acceptable then hardware step generation such as with the EMC2 supported Universal Stepper Controller 97 CHAPTER 13 BASIC CONFIGURATIONS FOR A STEPPER BASED SYSTEM 98 13 3 Pinout One of the
150. e this number TOOL TABLE tool tbl The file which contains tool information For more information see the G Code Manual TOOL_CHANGE_POSITION 0 O 2 Specifies the XYZ location to move to when performing a tool change CHAPTER 4 INI CONFIGURATION 31 SEARCH_VEL LATCH_VEL USE_INDEX Homing Type nonzero nonzero NO Switch only nonzero nonzero YES Switch Index 0 nonzero YES Index only 0 0 NO None Other combinations Error Table 4 1 Homing Types 4 4 Homing 4 4 1 Overview Homing seems simple enough just move each joint to a known location and set EMC s internal variables accordingly However different machines have different requirements and homing is actually quite complicated 4 4 2 Homing Sequence Figure 4 1 shows four possible homing sequences along with the associated configuration param eters For a more detailed description of what each configuration parameter does see the following section 4 4 3 Configuration There are six pieces of information that determine exactly how the home sequence behaves They are defined in an AXIS section of the ini file 4 4 3 1 HOME_SEARCH_VEL The default value is zero A value of zero causes EMC to assume that there is no home switch the search stage of homing is skipped If HOME SEARCH VEL is non zero then EMC assumes that there is a home switch It be gins by checking whether the home switch is already tripped If so
151. e_to_pyvcp hal This change will run the HAL commands specified in spindle_to_pyvcp hal In our example the contents could look like this CHAPTER 18 VIRTUAL CONTROL PANELS 154 linksp spindle rpm filtered pyvcp spindle speed assuming that a signal called spindle rpm filtered already exists Note that when running together with AXIS all pyVCP widget HAL pins have names that start with pyvcp RX lathe pawn nge AXIS Pe ar File Machine View Help CUBANO Manual Control F3 MDI F5 History m3s3250 Spindle speed 1000 0 0 0 5000 MDI Command Active G Codes G1 G17 640 G21 G90 G94 G54 649 699 G64 GO M2 M5 M9 N48 M53 F75 51000 Feed Override 100 HIB Spindle Override 100 aya Jog Speed 12 infmin y 621 2 G64 G18 GOO X13 5 21 0 1000 M3 20 488 gt 20 975 GOO X0 383 21 269 gt X13 5 ON No tool Position Relative Actual This is what the newly created pyVCP panel should look like in AXIS The sim lathe configuration is already configured this way 18 5 pyVCP Widget reference HAL signals come in two variants BIT and FLOAT pyVCP can either display the value of the signal with an indicator widget or modify the signal value with a control widget Thus there are four classes of pyVCP widgets that you can connect to a HAL signal A fifth class of helper widgets allow you to organize and label your panel 1 Widgets for indicating BIT si
152. eased Testing and Head For the latest information click on the version you are interested in Released is exactly that a released version of EMC2 with a version number It is tested by both developers and beta users before being released and is suitable for the average user Most de velopers and IRC mailing list regulars are able to help support people running a released version Released is available in several forms including debs for Ubuntu and source tarballs for local compilation There will be a Debian repository which will always have the latest released version and thus allows for easy upgrades from one stable release to the next Testing is a version of EMC2 that is ready for beta testing but not for general release Before a version is labeled testing it will be known to compile and run on several different platforms 17 CHAPTER 3 COMPILING FROM SOURCE 18 but there will probably be various limitations and known problems The Testing wiki page will attempt to list known problems and workarounds but there will probably also be undiscovered bugs Since Testing is beta software it should not be used for anything critical Users of Testing need to understand that it is beta software and must be willing to give detailed bug reports if things go wrong Testing is available primarily as a tag in CVS although for convenience of testers a testing Debian repository and or tarballs may also be available The EMC Board of
153. eeded This section lists some of the available components and a brief description of what each does Complete details for each component are available later in this document 6 3 1 External Programs with HAL hooks motion A realtime module that accepts NML motion commands and interacts with HAL iocontrol A user space module that accepts NML I O commands and interacts with HAL classicladder A PLC using HAL for all I O halui A user space program that interacts with HAL and sends NML commands it is intended to work as a full User Interface using external knobs amp switches 6 3 2 Internal Components stepgen Software step pulse generator with position loop See section 15 1 encoder Software based encoder counter See section 15 3 pid Proportional Integral Derivative control loops See section 15 4 siggen A sine cosine triangle square wave generator for testing See section 15 7 supply a simple source for testing blocks assorted useful components mux demux or and integ ddt limit wcomp etc CHAPTER 6 INTRODUCTION 44 6 3 3 Hardware Drivers hal_ax5214h A driver for the Axiom Measurement amp Control AX5241H digital I O board hal m5i20 Mesa Electronics 5i20 board hal_motenc Vital Systems MOTENC 100 board hal_parport PC parallel port See section 16 1 hal_ppmc Pico Systems family of controllers PPMC USC and UPC hal_stg Servo To Go card version 1 2 hal vti Vigilant Technologies PCI ENCDAC 4 controller 6 3 4 Tools
154. en 0 cosine 03 float W 0 00000e 00 siggen 0 sawtooth 03 float W 0 00000e 00 siggen 0 sine 03 float W 0 00000e 00 siggen 0 square 03 float W 0 00000e 00 siggen 0 triangle 02 s32 W 0 freggen 0 counts 02 bit W FALSE freqgen 0 dir 02 float W 0 00000e 00 freqgen 0 position 02 bit W FALSE freggen 0 step 02 float R 0 00000e 00 fregqgen 0 velocity 02 s32 W 0 freggen 1l counts 02 bit W FALSE freqgen 1 dir 02 float W 0 00000e 00 freagen l position 02 bit W FALSE freqgen 1 step 02 float R 0 00000e 00 freqgen 1 velocity halcmd show param Parameters Owner Type Dir Value Name 03 float W 1 00000e 00 siggen 0 amplitude The at the end of a long line indicates line wrapping needed for formatting this document When entering the commands at the command line simply skip the do not hit enter and keep typing from the following line CHAPTER 7 HAL TUTORIAL 56 03 float W 1 00000e 00 siggen 0 frequency 03 float W 00000e 00 siggen 0 offset 02 u32 W 000000001 freqgen 0 dirhold 02 u32 W 000000001 freagen 0 dirsetup 02 float R 0 00000e 00 freqgen 0 frequency 02 float W 0 00000e 00 freqgen 0 maxaccel 02 float W 1 00000e 15 freqgen 0 maxfreq 02 float W 1 00000e 00 freqgen 0 position scale 02 s32 R 0 freggen 0 rawcounts 02 u32 W 000000001 freqgen 0 steplen 02 u32 W 000000001 freqgen 0 stepspace 02 float W 1 00000e 00 freqgen 0 velocity scale 02 u32 W 000000001 freqgen 1 dirhold 02 u3
155. en and edit 27 4 Terminal Commands 27 4 1 Working Directory To find out the path to the present working directory in the terminal window type pwd 27 4 2 Changing Directories To move up one level in the terminal window type ed To move down to the emc2 configs subdirectory in the terminal window type cd emc2 configs 27 4 3 Listing files in a directory To view a list of all the files and subdirectories in the terminal window type dir or ls 27 4 4 Finding a File The find command can be a bit confusing to a new Linux user The basic syntax is find starting directory parameters actions For example to find all the ini files in your EMC2 directory you first need to use the pwd command to find out the directory Open a new terminal window and type pwd CHAPTER 27 LINUX FAQ 198 might return the following result home joe With this information put the command together like this find home joe emc2 name ini print The name is the name of the file your looking for and the print tells it to print out the result to the terminal window The ini tells find to return all files that have the ini extension To find all the files in the directory named and all the subdirectories under that add the L option to the find command like this find L home joe emc2 name ini print 27 4 5 Searching for Text grep i r text to search for To find all the files that cont
156. en update_freq slow halcmd addf freqgen make_pulses fast After we give these commands we can run the show thread command again to see what happened halcmd show thread Realtime Threads Period FP Name Time Max Time 1005720 YES slow C0540 3 1 siggen 0 update 2 freqgen update freg 50286 NO fast 0 0 1 freqgen make pulses Now each thread is followed by the names of the functions in the order in which the functions will run 7 5 4 Setting parameters We are almost ready to start our HAL system However we still need to adjust a few parameters By default the siggen component generates signals that swing from 1 to 1 For our example that is fine we want the table speed to vary from 1 to 1 inches per second However the scaling of the step pulse generator isn t quite right By default it generates an output frequency of 1 step per second with an input of 1 000 It is unlikely that one step per second will give us one inch per second of table movement Let s assume instead that we have a 5 turn per inch leadscrew connected to a 200 step per rev stepper with 10x microstepping So it takes 2000 steps for one revolution of the screw and 5 revolutions to travel one inch that means the overall scaling is 10000 steps per inch We need to multiply the velocity input to the step pulse generator by 10000 to get the proper output That is exactly what the parameter freqgen n velocity scale is for In this case both the X and Y ax
157. en using the onboard video But a 5 used Matrox video card solved the problem EMC does not require bleeding edge hardware 21 1 2 Figure out what your drives expect Different brands of stepper drives have different timing requirements on their step and direction inputs So you need to dig out or Google for the data sheet that has your drive s specs For example the Gecko G202 manual says this Step Frequency O to 200 kHz CHAPTER 21 STEPPER TUNING 173 Step Pulse 0 Time 0 5 uS min Step on falling edge Step Pulse 1 Time 4 5 uS min Direction Setup 1 uS min 20 uS min hold time after Step edge The Gecko G203V specifications are Step Frequency O to 333 kHz Step Pulse 0 Time 2 0 uS min Step on rising edge Step Pulse 1 Time 1 0 uS min Direction Setup 200 nS 0 2uS before step pulse rising edge 200 nS 0 2uS hold after step pulse rising edge A Xylotex drive datasheet has a nice drawing of the timing requirements which are Minimum DIR setup time before rising edge of STEP Pulse 200nS Minimum DIR hold time after rising edge of STEP pulse 200nS Minimum STEP pulse high time 2 0uS Minimum STEP pulse low time 1 0uS Step happens on rising edge Once you find the numbers write them down too you need them in the next step 21 1 3 Choose your BASE_PERIOD BASE_PERIOD is the heartbeat of your EMC computer Every period the software step generator decides if it is time for another step
158. eps per second But you can t start celebrating yet Note that 13uS is a very short period If you try to run the step generator every 13uS there might not be enough time left to run anything else and your computer will lock up If you are aiming for periods of less than 25uS you should start at 25uS or more run EMC and see how things respond If all is well you can gradually decrease the period If the mouse pointer starts getting sluggish and everything else on the PC slows down your period is a little too short Go back to the previous value that let the computer run smoothly In this case sppose you started at 25uS trying to get to 13uS but you find that around 16uS is the limit any less and the computer doesn t respond very well So you use 16uS With a 16uS period and 11uS latency the shortest output time will be 16 11 5uS The drive only needs 2uS so you have some margin Margin is good you don t want to lose steps because you cut the timing too close What is the maximum step rate Remember two periods to make a step You settled on 16uS for the period so a step takes 32uS That works out to a not bad 31 250 steps per second 21 1 4 Use steplen stepspace dirsetup and or dirhold In the last section we got the Xylotex drive to a 16uS period and a 31 250 step per second maximum speed But the Gecko was stuck at 31uS and a not so nice 16 129 steps per second The Xylotex example is as good as we can make it But the
159. er With a PLC if the coil is OFF and the contact is closed when the PLC begins to evaluate the rung then when it finishes that pass the coil is ON The fact that turning on the coil opens the contact feeding it is ignored until the next pass On the next pass the PLC sees that the contact is open and de energizes the coil So the relay still switches rapidly between on and off but at a rate determined by how often the PLC evaluates the rung In HAL the function is the code that evaluates the rung s In fact the HAL aware realtime version of ClassicLadder exports a function to do exactly that Meanwhile a thread is the thing that runs the function at specific time intervals Just like you can choose to have a PLC evaluate all its rungs every 10mS or every second you can define HAL threads with different periods What distinguishes one thread from another is not what the thread does that is determined by which functions are connected to it The real distinction is simply how often a thread runs In EMC you might have a 50us thread and a Ims thread These would be created baseds on BASE_PERIOD and SERVO_PERIOD the actual times depend on the ini The next step is to decide what each thread needs to do Some of those decisions are the same in nearly any emc system For instance motion command handler is always added to servo thread Other connections would be made by the integrator These might include hooking the STG driver s enc
160. er left edge of the display This menu is shown in figure xx 10 4 3 Hal Show Area Clicking on the node name rather than its plus or minus sign the word Components for example will show you all that hal knows about the contents of it Figure 10 1 shows a list exactly like you will see if you click the Components name while you are running a standard m5i20 servo card The information display is exactly like those shown in traditional text based HAL analysis tools The advantage here is that we have mouse click access Access that can be as broad or as focused as you need If we take a closer look at the tree display we can see that the six major parts of a HAL can all be expanded at least one level As these levels are expanded you can get more focused with the reply when you click on the rightmost tree node You will find that there are some hal pins and parameters that show more than one reply This is do to the nature of the search routines in halemd itself If you search one pin you may get two like this Component Pins Owner Type Dir Value Name 06 bit W TRUE parport 0 pin 10 in 06 bit W FALSE parport 0 pin 10 in not The second pins name contains the complete name of the first Below the show area on the right is a set of widgets that will allow you to play with the running HAL The commands you enter here and the effect that they have on the running HAL are not saved They will persist as long as the emc remains up
161. er motor drives by sending signals through the printer port These signals pulses make the stepper drives move the stepper motors The EMC2 can also run servo motors via servo interface cards or by using an extended parallel port to connect with external control boards As we examine each of the components that make up an EMC2 system we will remind the reader of this typical machine There are four main components to the EMC2 software a motion controller EMCMOT a discrete I O controller EMCIO a task executor which coordinates them EMCTASK and a collection of text based or graphical user interfaces An EMC2 capable of running a mini mill must start some version of all four of these components in order to completely control it Each component is briefly described below In addition there is a layer called HAL Hardware Abstraction Layer which allows simple reconfiguration of EMC2 without the need of recompiling 2some parts of EMC2 are released under the Lesser GPL LPGL which allows them to be used with proprietary software as long as certain restrictions are observed CHAPTER 1 THE ENHANCED MACHINE CONTROL 5 Figure 1 1 Simple EMC2 Controlled Machine Power supply Linux PC emc2 installed Stepper Stepper drives motors 1 5 1 Graphical User Interfaces A graphical interface is the part of the EMC2 that the machine tool operator interacts with The EMC2 comes with several types of user interfaces e a character b
162. ere are options while loading the user module e help displays basically this list then exits e version displays the version surprise then exits e nogui starts classicladder while loading a ladder program if specified with no GUI CHAPTER 24 CLASSICLADDER 184 modbus_port port sets up the modbus port number EMC doesn t use it config file Sets up the number of the each ladder object only if there is no realtime support In EMC you load this with the realtime module Ill get to this in a minute w Used when ClassicLadder is used with a HAL file and not loaded with EMC It tells HAL not to close down the HAL environment until ClassicLadder is finished Use the GUI when setting up your system then change it to nogui when running The only other thing you can do while loading the user module is specify a ladder program to load ladder programs are specified by the clp ending e loadusr classicladder nogui myladder clp loads the classicladder user module ladder program myladder and displays nothing e loadusr classicladder myladder clp loads the classicladder user module ladder program myladder and starts the classicladder GUI e loadusr classicladder loads the classicladder user module starts the GUI but loads no laddder program 24 4 ClassicLadder GUI If you load classicladder with the GUI it will display three windows vars section display and section manager 24 4 1 The Variables window I
163. ers e FUNCT m5i20 lt board gt digital in read Reads digital inputs e FUNCT m5i20 lt board gt dac write Writes the voltages PWM duty cycles to the DACs e FUNCT m5i20 lt board gt digital out write Writes digital outputs e FUNCT m5i20 lt board gt misc update Writes watchdog timer configuration to hardware Resets watchdog timer Updates E stop pin more info needed Updates onboard LEDs 16 5 4 Connector pinout The Hostmot 4 FPGA configuration has the following pinout There are three 50 pin ribbon cable connectors on the card P2 P3 and P4 There are also 8 status LEDs CHAPTER 16 HARDWARE DRIVERS 16 5 4 1 Connector P2 m5i20 card connector P2 Function HAL pin 1 enc 01 A input 3 enc 01 B input 5 enc 00 A input 7 enc 00 B input 9 enc 01 index input 11 enc 00 index input 13 dac 01 output 15 dac 00 output 17 DIR output for dac 01 19 DIR output for dac 00 21 dac 01 enable output 23 dac 00 enable output 25 enc 03 B input 27 enc 03 A input 29 enc 02 B input 31 enc 02 A input 33 enc 03 index input 35 enc 02 index input 37 dac 03 output 39 dac 02 output 41 DIR output for dac 03 43 DIR output for dac 02 45 dac 03 enable output 47 dac 02 enable output 49 Power 5 V or 3 3V all even pins Ground 16 5 4 2 Connector P3 Encoder counters 4 7 work simultaneously with in 00 to in 11
164. es the code is made available to the system in CHAPTER 6 INTRODUCTION 43 the form of one or more functions Each function is a block of code that performs a specific action The system integrator can use threads to schedule a series of functions to be executed in a particular order and at specific time intervals Thread A thread is a list of functions that runs at specific intervals as part of a realtime task When a thread is first created it has a specific time interval period but no functions Func tions can be added to the thread and will be executed in order every time the thread runs As an example suppose we have a parport component named hal_parport That component defines one or more HAL pins for each physical pin The pins are described in that component s doc section their names how each pin relates to the physical pin are they inverted can you change polarity etc But that alone doesn t get the data from the HAL pins to the physical pins It takes code to do that and that is where functions come into the picture The parport component needs at least two functions one to read the physical input pins and update the HAL pins the other to take data from the HAL pins and write it to the physical output pins Both of these functions are part of the parport driver 6 3 HAL components Each HAL component is a piece of software with well defined inputs outputs and behavior that can be installed and interconnected as n
165. eter 42 HAL Physical Pin 42 HAL Pin 42 HAL Signal 42 HAL Thread 43 HAL Type 42 hal ax5214h 44 hal m5i20 44 hal motenc 44 hal parport 44 hal ppmc 44 hal stg 44 hal vti 44 halemd 44 halmeter 44 halscope 44 halui 43 HOME 33 home 201 HOME IGNORE LIMITS 33 HOME IS SHARED 33 HOME LATCH VEL 31 HOME OFFSET 33 HOME SEARCH VEL 28 31 HOME SEQUENCE 33 HOME USE INDEX 33 INI 6 21 201 ini AXIS Section 27 ini DISPLAY Section 23 ini EMC Section 23 ini EMCIO Section 30 209 INDEX ini EMCMOT Section 25 ini FILTER Section 24 INI RS274NGC Section 25 ini TASK Section 26 INPUT SCALE 30 Installing LiveCD 14 Installing manual 15 Installing script 15 iocontrol 43 iocontrol HAL pins 38 jog 201 joint coordinates 201 keystick 5 22 kinematics 166 201 lead screw 201 LINEAR UNITS 26 Linux 4 Linux FAQ 196 Listing files in a directory 197 loop 202 ls 197 machine on 101 machine units 201 Man Pages 196 Manual 8 MAX ACCELERATION 27 MAX LIMIT 27 MAX VELOCITY 27 MDI 8 202 MIN FERROR 27 MIN LIMIT 27 mini 5 22 motion 43 motion hal pins 35 NIST 3 202 NML 21 offsets 202 OMAC 3 Open Source 14 parallel port 125 part Program 202 pid 43 119 pinout 98 PLC 7 Pluto P 140 pluto servo 142 pluto servo alternate pin functions 144 pluto servo pinout 143 pluto step 145 pluto step p
166. f the screen only For larger adjustments the offset button should be used see the halscope reference in section 10 3 for details 7 6 5 Triggering Using the Force button is a rather unsatisfying way to trigger the scope To set up real triggering click on the Source button at the bottom right It will pop up the Trigger Source dialog which is simply a list of all the probes that are currently connected Figure 7 8 Select a probe to use for triggering by clicking on it For this example we will use channel 3 the triangle wave XA Trigger Source x Select a channel to use for triggering Chan Source 2 Y_vel 3 siggen 1 triangle 4 siggen 1 square 5 6 ae 7 a 8 zone 3 10 11 12 Cancel Figure 7 8 Trigger Source Dialog After setting the trigger source you can adjust the trigger level and trigger position using the sliders in the Trigger box along the right edge The level can be adjusted from the top to the bottom of the screen and is displayed below the sliders The position is the location of the trigger point within the overall record With the slider all the way down the trigger point is at the end of the record and halscope displays what happened before the trigger point When the slider is all the way up the trigger point is at the beginning of the record displaying what happened after it was triggered The trigger point is visible as a
167. firmware or emc2 can leave the Pluto P pins in an undefined state In pwm dir mode by default dir is HIGH for negative values and LOW for positive values To select HIGH for positive values and LOW for negative values set the corresponding dout NN invert parameter TRUE to invert the signal The index input is triggered on the rising edge Initial testing has shown that the QZx inputs are particularly noise sensitive due to being polled every 25ns Digital filtering has been added to filter pulses shorter than 175ns seven polling times Additional external filtering on all input pins such as a Schmitt buffer or inverter RC filter or differential receiver if applicable is recommended The IN1 IN7 pins have 22 ohm series resistors to their associated FPGA pins No other pins have any sort of protection for out of spec voltages or currents It is up to the integrator to add appropriate isolation and protection Traditional parallel port optoisolator boards do not work with pluto_servo due to the bidirectional nature of the EPP protocol 16 8 4 LED e When the device is unprogrammed the LED glows faintly When the device is programmed the LED glows according to the duty cycle of PWMO LED UPO xor DOWNO or STEPGENO LED STEPO xor DIRO 16 8 5 Power e A small amount of current may be drawn from VCC The available current depends on the unregulated DC input to the board Alternately regulated 3 3VDC may be supplied to the FPGA t
168. fset FLOAT motenc lt board gt adc lt channel gt gain Sets the ADC gain scaling CHAPTER 16 HARDWARE DRIVERS 138 e BIT motenc lt board gt out lt channel gt invert Inverts a digital output see canonical dig ital output e u32 motenc lt board gt watchdog control Configures the watchdog The value may be a bitwise OR of the following values Bit Value Meaning 0 1 Timeout is 16ms if set 8ms if unset 2 4 Watchdog is enabled 4 16 Watchdog is automatically reset by DAC writes the HAL dac write function Typically the useful values are O watchdog disabled or 20 8ms watchdog enabled cleared by dac write e u32 motenc lt board gt led view Maps some of the I O to onboard LEDs 16 6 3 Functions e FUNCT motenc lt board gt encoder read Reads all encoder counters e FUNCT motenc lt board gt adc read Reads the analog to digital converters e FUNCT motenc lt board gt digital in read Reads digital inputs e FUNCT motenc lt board gt dac write Writes the voltages to the DACs e FUNCT motenc lt board gt digital out write Writes digital outputs e FUNCT motenc lt board gt misc update Updates misc stuff 16 7 Pico Systems PPMC Parallel Port Motion Control Pico Systems has a family of boards for doing servo stepper and pwm control The boards connect to the PC through a parallel port working i
169. generally available and the machine generated HTML produced by some word processors for output purposes only The Title Page means for a printed book the title page itself plus such following pages as are needed to hold legibly the material this License requires to appear in the title page For works in formats which do not have any title page as such Title Page means the text near the most prominent appearance of the work s title preceding the beginning of the body of the text 2 VERBATIM COPYING You may copy and distribute the Document in any medium either commercially or noncommercially provided that this License the copyright notices and the license notice saying this License applies to the Document are reproduced in all copies and that you add no other conditions whatsoever to those of this License You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute However you may accept compensation in exchange for copies If you distribute a large enough number of copies you must also follow the conditions in section 3 You may also lend copies under the same conditions stated above and you may publicly display copies 3 COPYING IN QUANTITY If you publish printed copies of the Document numbering more than 100 and the Documents license notice requires Cover Texts you must enclose the copies in covers that carry clearly and legibly all these Cover Texts Front
170. gnals LED 2 Widgets for controlling BIT signals Button Checkbutton Radiobutton 3 Widgets for indicating FLOAT signals Number Bar Meter 4 Widgets for controlling FLOAT signals Spinbox Scale Jogwheel 5 Helper widgets Hbox Vbox Tabel Label Labelframe 18 5 0 1 Syntax Each widget is described briefly followed by the markup used and a screen shot All tags inside the main widget tag are optional CHAPTER 18 VIRTUAL CONTROL PANELS 155 18 5 0 2 General Notes At the present time both a tag based and an attribute based syntax are supported For instance the following XML fragments are treated identically lt led halpin my led gt and lt led gt lt halpin gt my led lt halpin gt lt led gt When the attribute based syntax is used the following rules are used to turn the attributes value into a Python value 1 If the first character of the attribute is one of the following it is evaluated as a Python expres sion 2 If the string is accepted by int the value is treated as an integer 3 If the string is accepted by float the value is treated as floating point 4 Otherwise the string is accepted as a string When the tag based syntax is used the text within the tag is always evaluated as a Python expres sion The examples below show a mix of formats 18 5 1 LED A LED is used to indicate the status of a BIT signal The LED color will be on_color when the BIT signal is true and off
171. hat you are dealing with is to run the RTAI latency test DO NOT TRY TO RUN EMC2 WHILE THE TEST IS RUNNING On Ubuntu Dapper you can run the test by opening a shell and doing sudo mkdir dev rtf sudo mknod dev rtf 3 c 150 3 sudo mknod dev rtf3 c 150 3 cd usr realtimex testsuite kern latency run 171 CHAPTER 21 STEPPER TUNING 172 and then you should see something like this ubuntu usr realtime 2 6 12 magma testsuite kern latencyS run x Type C to stop this application RTAI latency calibration tool period 100000 ns avrgtime 1 s do not use the FPU start the timer timer_mode is oneshot RTAI Testsuite KERNEL latency all data in nanoseconds RTH lat min ovl min lat avg lat max ovl max overruns RTD 1571 1571 1622 8446 8446 0 RTD 1558 T57L 1607 7704 8446 0 RTD 1568 1571 1640 7359 8446 0 RTD 1568 157I 1653 7594 8446 0 RTD 1568 ziS AI 1640 10636 10636 0 RTD 1568 S571 1640 10636 10636 0 While the test is running you should abuse the computer Move windows around on the screen Surf the web Copy some large files around on the disk Play some music Run an OpenGL program such as glxgears The idea is to put the PC through its paces while the latency test checks to see what the worst case numbers are The last number in the column labeled ovl max is the most important Write
172. he HAL It lets you look at a pin signal or parameter and displays the current value of that item It is pretty simple to use Start it by typing halmeter in a X windows shell Halmeter is a GUI application It will pop up a small window with two buttons labeled Select and Exit Exit is easy it shuts down the program Select pops up a larger window with three tabs One tab lists all the pins currently defined in the HAL The next lists all the signals and the last tab lists all the parameters Click on a tab then click on a pin signal parameter Then click on OK The lists will disappear and the small window will display the name and value of the selected item The display is updated approximately 10 times per second If you click Accept instead of OK the small window will display the name and value of the selected item but the large window will remain on the screen This is convenient if you want to look at a number of different items quickly You can have many halmeters running at the same time if you want to monitor several items If you want to launch a halmeter without tying up a shell window type halmeter amp to run it in the background You can also make halmeter start displaying a specific item immediately by adding pin sig par am lt name gt to the command line It will display the pin signal or parameter lt name gt as soon as it starts If there is no such item it will simply st
173. he spindle brake should be applied motion spindle forward OUT bit TRUE when the spindle should rotate forward motion spindle reverse OUT bit TRUE when the spindle should rotate backward motion spindle on OUT bit TRUE when spindle should rotate motion spindle speed out OUT float Desired spindle speed in rotations per minute motion spindle index enable I O bit For correct operation of spindle synchronized moves this signal must be hooked to the index enable pin of the spindle encoder motion spindle revs IN float For correct operation of spindle synchronized moves this signal must be hooked to the position pin of the spindle encoder 35 CHAPTER 5 EMC2 AND HAL 36 5 1 2 Parameters Many of these parameters serve as debugging aids and are subject to change or removal at any time motion coord error TRUE when motion has encountered an error such as exceeding a soft limit motion coord mode TRUE when motion is in coordinated mode as opposed to teleop mode motion in position Same as the pin motion motion inpos motion motion enabled TRUE when motion is enabled motion servo last period The number of CPU cycles between invocations of the servo thread Typ ically this number divided by the CPU speed gives the time in seconds and can be used to determine whether the real time motion controller is meeting its timing constraints motion servo overruns By noting large differences between successive values of motion servo last period
174. here in Europe the style is to draw the rails horizontal along the top and bottom of the page while the rungs are drawn sequentially from left to right A program in ladder logic also called a ladder diagram is similar to a schematic for a set of relay circuits Ladder logic is useful because a wide variety of engineers and technicians can understand and use it without much additional training because of the resemblance Ladder logic is widely used to program PLCs where sequential control of a process or manufacturing operation is required Ladder logic is useful for simple but critical control systems or for reworking old hardwired relay circuits As programmable logic controllers became more sophisticated it has also been used in very complex automation systems Ladder logic can be thought of as a rule based language rather than a procedural language A rung in the ladder represents a rule When implemented with relays and other electromechani cal devices the various rules execute simultaneously and immediately When implemented in a programmable logic controller the rules are typically executed sequentially by software in a loop By executing the loop fast enough typically many times per second the effect of simultaneous and immediate execution is obtained 23 2 Example The most common components of ladder are contacts inputs these usually are either NC normally closed or NO normally open and coils outputs e the NO c
175. hine setups robots puma scara hexapods etc Each of them is set up using linear and rotary joints These joints don t usually match with the Cartesian coordinates therefor there needs to be a kinematics function which does the conversion actually 2 functions forward and inverse kinematics function To illustrate the above we will analyze a simple kinematics called bipod a simplified version of the tripod which is a simplified version of the hexapod The Bipod we are talking about is a device that consists of 2 motors placed on a wall from which a device is hanged using some wire The joints in this case are the distances from the motors to the device named AD and BD in figure 20 1 The position of the motors is fixed by convention Motor A is in 0 0 which means that its X coordinate is O and its Y coordinate is also O Motor B is placed in Bx 0 which means that its X coordinate is Bx Our tooltip will be in point D which gets defined by the distances AD and BD and by the Cartesian coordinates Dx Dy The job of the kinematics is to transform from joint lengths AD BD to Cartesian coordinates Dx Dy and vice versa 20 3 1 Forward transformation To transform from joint space into Cartesian space we will use some trigonometry rules the right triangles determined by the points 0 0 Dx 0 Dx Dy and the triangle Dx 0 Bx 0 and Dx Dy we can easily see that AD x y likewise BD Br x y
176. hrough these VCC pins The required current is not yet known but is probably around 50mA plus I O current e The regulator on the Pluto P board is a low dropout type Supplying 5V at the power jack will allow the regulator to work properly 16 8 6 PC interface e At present only a single pluto_servo or pluto_step board is supported At present there is no provision for multiple boards on one parallel port because all boards reside at the same EPP address but supporting one board per parallel port should be possible 16 8 7 Rebuilding the FPGA firmware The src hal drivers pluto_servo_firmware and src hal drivers pluto_step_firmware subdirectories contain the Verilog source code plus additional files used by Quartus for the FPGA firmwares Altera s Quartus II software is required to rebuild the FPGA firmware To rebuild the CHAPTER 16 HARDWARE DRIVERS 142 firmware from the hdl and other source files open the qpf file and press CTRL L Then recompile emc2 Like the HAL hardware driver the FPGA firmware is licensed under the terms of the GNU General Public License The gratis version of Quartus II runs only on Microsoft Windows although there is apparently a paid version that runs on Linux 16 8 8 For more information The Pluto P board may be ordered from http www kn3jn com ShopBoards_Parallel html US based international shipping is available Some additional information about it is available from http www fpga4fu
177. i i l i clear i i A i i i i i i i L I i I i i i i I l i i i i 1 I j Figure 15 7 Encoder Counter Block Diagram 15 3 1 Installing emc2S halcmd loadrt encoder num _chan lt counters gt lt counters gt is the number of encoder counters that you want to install If numchan is not specified three counters will be installed The maximum number of counters is 8 as defined by MAX_CHAN in encoder c Each counter is independent but all are updated by the same function s at the same time In the following descriptions lt chan gt is the number of a specific counter The first counter is number 0 15 3 2 Removing emc2S halemd unloadrt encoder CHAPTER 15 INTERNAL COMPONENTS 118 15 3 3 Pins e BIT encoder lt chan gt phase A Phase A of the quadrature encoder signal e BIT encoder lt chan gt phase B Phase B of the quadrature encoder signal e BIT encoder lt chan gt phase Z Phase Z index pulse of the quadrature encoder signal e BIT encoder lt chan gt reset See canonical encoder interface section 9 5 e BIT encoder lt chan gt velocity Estimated speed of the quadrature signal e BIT encoder lt chan gt index enable See canonical encoder interface e s32 encoder lt chan gt count See canonical encoder interface e FLOAT encoder lt chan gt position See canonical encoder interface 15 3 4 Parameters e s3
178. igger source To add new channels select channel 5 and choose pin stepgen 1 dir then channel 6 and select stepgen 1 step Then click run mode Normal to start the scope and adjust the horizontal zoom to 5mS per division You should see the step pulses slow down as the velocity command channel 1 approaches zero then the direction pin changes state and the step pulses speed up again You might want to increase the gain on channel 1 to about 20m per division to better see the change in the velocity command The result should look like figure 7 11 XA HAL Oscilliscope BAA Horizontal Run Mode Trigger Zoom 5 00 mSec 4047 samples Normal e Normal Pos per div at 19 9 KHz C Single C Auto SSS TRIGGERED C stop Force Vertical Level Pos Gain Pos a i re ION l z 1 fdiv 0 000 alsje 7 8 3 10111 12 13 14 15 16f Ofset Rising Selected Channel 6 stepgen 1 step Chan Off Figure 7 11 Looking at Step Pulses 7 6 8 More samples If you want to record more samples at once restart realtime and load halscope with a numeric argument which indicates the number of samples you want to capture such as halcmd loadusr halscope 80000 if the scope_rt component was not already loaded halscope will load it and request 80000 total samples so that when sampling 4 channels at a time there will be 20000 samples per channel If scope_rt was alre
179. il The default value is zero 4 4 3 3 HOME_IGNORE_LIMITS Can hold the values YES NO This flag determines whether EMC will ignore the limit switch inputs Some machine configurations do not use a separate home switch instead they route one of the limit switch signals to the home switch input as well In this case EMC needs to ignore that limit during homing The default value for this parameter is NO 4 4 3 4 HOME_USE_INDEX Specifies whether or not there is an index pulse If the flag is true HOME_USE_INDEX YES EMC will latch on the rising edge of the index pulse If false EMC will latch on either the rising or falling edge of the home switch depending on the signs of HOME_SEARCH_VEL and HOME_LATCH_VEL The default value is NO 4 4 3 5 HOME OFFSET Contains the location of the home switch or index pulse in joint coordinates It can also be treated as the distance between the point where the switch or index pulse is latched and the zero point of the joint After detecting the index pulse EMC sets the joint coordinate of the current point to HOME OFFSET The default value is zero 4 4 3 6 HOME The position that the joint will go to upon completion of the homing sequence After detecting the index pulse and setting the coordinate of that point to HOME_OFFSET EMC makes a move to HOME as the final step of the homing process The default value is zero Note that even if this parameter is the same as HOME _O
180. il tight push button But virtual panels can be used for testing or monitoring things that don t require physical buttons and lights to temporarily replace real I O devices while debugging ladder logic or perhaps to simulate a physical panel before you build it and wire it to an I O board 18 2 pyVCP The layout of a pyVCP panel is specified with an XML file that contains widget tags between lt pyvcp gt and lt pyvcp gt For example lt pyvcp gt lt label text This is a LED indicator gt lt led gt lt pyvcp gt a mypanel mE This is a LED indicator If you place this text in a file called tiny xml and run 152 CHAPTER 18 VIRTUAL CONTROL PANELS 153 halrun I loadusr pyvcp c mypanel tiny xml pyVCP will create the panel for you which includes two widgets a Label with the text This is a LED indicator and a LED used for displaying the state of a HAL BIT signal It will also create a HAL component named mypanel all widgets in this panel are connected to pins that start with mypanel Since no lt halpin gt tag was present inside the lt led gt tag pyVCP will automatically name the HAL pin for the LED widget mypanel led O For a list of widgets and their tags and options see the widget reference below Once you have created your panel connecting HAL signals to and from the pyVCP pins is done with halemd linksp as usual If you are new to HAL the HAL Tutorial7 is recommended
181. imum frequency is 1 000 000 000 divided by steplen and as in the other modes maxfreq will be lowered if it is above the limit 15 1 6 Functions The component exports three functions Each function acts on all of the step pulse generators running different generators in different threads is not supported e FUNCT stepgen make pulses High speed function to generate and count pulses no float ing point e FUNCT stepgen update freq Low speed function does position to velocity conversion scaling and limiting e FUNCT stepgen capture position Low speed function for feedback updates latches and scales position CHAPTER 15 INTERNAL COMPONENTS step EN po A stepspace stepspace steplen min t steplen min steplen dirsetup dirhold dirsetup min min min direction Figure 15 3 Step and Direction Timing The high speed function stepgen make pulses should be run in a very fast thread from 10 to 50uS depending on the capabilities of the computer That thread s period determines the maximum step frequency since steplen stepspace dirsetup dirhold and dirdelay are all rounded up to a integer multiple of the thread periond in nanoseconds The other two functions can be called at a much lower rate 112 CHAPTER 15 INTERNAL COMPONENTS 5 aseyd g aseud y eseud AdAL d31S Figure 15 4 Three Phase step types 113 CHAPTER 15 INT
182. ing usually overshoots slightly to reach the setpoint more quickly however some systems cannot accept overshoot Parameter Rise Time Overshoot Settling Time S S Error p Decrease Increase Small Change Decrease I Decrease Increase Increase Eliminate D Small Change Decrease Decrease Small Change Effects of increasing parameters 22 1 3 0 0 5 Ziegler Nichols method Another tuning method is formally known as the Ziegler Nichols method introduced by John G Ziegler and Nathaniel B Nichols It starts in the same way as the method described before first set the I and D gains to zero and then increase the P gain until the output of the loop starts to oscillate Write down the critical gain K and the oscillation period of the output P Then adjust the P I and D controls as the table shows Control type P I D P 5Ke PI 45Ke 1 2 Po PID 6K 2 P Px P 8 Part X Ladder Logic 179 Chapter 23 Ladder programming 23 1 Introduction Ladder logic or the Ladder programming language is a method of drawing electrical logic schematics It is now a graphical language very popular for programming Programmable Logic Controllers PLCs It was originally invented to describe logic made from relays The name is based on the observation that programs in this language resemble ladders with two vertical rails and a series of rungs between them In Germany and elsew
183. inout 146 pluto step timings 146 210 Position Actual 10 Position Commanded 10 Position Machine 9 Position Relative 10 program units 202 pwd 197 pwmgen 115 rapid 202 RCS 3 real time 202 RS274NGC 202 RS274NGC STARTUP CODE 25 RTAI 202 RTAPI 202 RTLINUX 202 Searching for Text 198 servo motor 202 SERVO PERIOD 25 Sherline 4 siggen 43 124 signal polarity 100 sim encoder 122 spindle 202 spindle speed control 100 standard pinout 98 step rate 97 stepgen 43 106 stepper 97 stepper motor 202 sudo gedit 197 supply 43 TASK 202 TBL 21 Terminal Commands 197 Tk 202 tkemc 5 22 TRAJ inifile section 26 TRAJ PERIOD 25 Trivial Kinematics 166 Ubuntu 3 14 UNITS 27 units 6 11 202 VAR 21 Working Directory 197 world coordinates 202 xemc 5
184. ion scale l PA phase A hase B position A 1 p ke i state lookup K NA i rawcounts counter table La l counter mn I prado I a phase E dn e a counts ni latch i a a count f l l j update_freq i frequency m l Aa maxiteg f maxaccel velocity scale al l aT gt l up dn elocit G ami velocity x i RR count fi Figure 15 2 Step Pulse Generator Block Diagram velocity mode CHAPTER 15 INTERNAL COMPONENTS 109 15 1 2 Removing emc2 halcmd unloadrt stepgen 15 1 3 Pins Each step pulse generator will have only some of these pins depending on the step type and control type selected e FLOAT stepgen lt chan gt position cmd Desired motor position in position units position mode only FLOAT stepgen lt chan gt velocity cmd Desired motor velocity in position units per sec ond velocity mode only s32 stepgen lt chan gt counts Feedback position in counts updated by capture_position FLOAT stepgen lt chan gt position fb Feedback position in position units updated by capture_position BIT stepgen BIT stepgen BIT stepgen BIT stepgen BIT stepgen w 4 w 4 BIT stepgen BIT stepgen stepgen stepgen lt Q lt c lt c lt e lt c e lt c lt c lt C nan gt nan gt nan gt nan gt nan gt nan gt nan gt nan gt
185. ional Stop N6871Y56 0612 28 146 N6881Y56 1052 27 894 N6891Y56 112 27 838 N6901 Y56 1262 27 634 N6911 G0Z10 N6931 M9 Figure 1 5 The TkEmc Graphical Interface switch or turning the hand wheel for an axis These commands are normally handled on one of the graphical interfaces by pressing a button with the mouse or holding down a key on the keyboard In auto mode a similar button or key press might be used to load or start the running of a whole program of G code that is stored in a file In the MDI mode the operator might type in a block of code and tell the machine to execute it by pressing the lt return gt or lt enter gt key on the keyboard Some motion control commands are available and will cause the same changes in motion in all modes These include ABORT ESTOP and FEED RATE OVERRIDE Commands like these should be self explanatory The AXIS user interface removes some of the distinctions between Auto and the other modes by making Auto commands available at most times It also blurs the distinction between Manual and MDI because some Manual commands like Touch Off are actually implemented by sending MDI commands 1 5 6 Information Display While an EMC2 is running each of the modules keeps up a conversation with the others and with the graphical display It is up to the display to select from that stream of information what the operator needs to see and to arrange it on the screen in a way that makes it easy for the oper
186. is have the same scaling so we set the scaling parameters for both to 10000 halcmd setp freqgen 0 velocity scale 10000 halcmd setp freqgen 1 velocity scale 10000 This velocity scaling means that when the pin freqgen 0 velocity is 1 000 the step generator will generate 10000 pulses per second 10KHz With the motor and leadscrew described above that will result in the axis moving at exactly 1 000 inches per second This illustrates a key HAL concept things like scaling are done at the lowest possible level in this case in the step pulse generator The internal signal X_vel is the velocity of the table in inches per second and other components such as siggen don t know or care about the scaling at all If we changed the leadscrew or motor we would change only the scaling parameter of the step pulse generator CHAPTER 7 HAL TUTORIAL 59 7 5 5 Runit We now have everything configured and are ready to start it up Just like in the first example we use the start command halcmd start Although nothing appears to happen inside the computer the step pulse generator is cranking out step pulses varying from 10KHz forward to 10KHz reverse and back again every second Later in this tutorial we ll see how to bring those internal signals out to run motors in the real world but first we want to look at them and see what is happening 7 6 Taking a closer look with halscope The previous example generates some very interesting signals
187. ital output 16 7 2 Parameters FLOAT ppmce lt port gt enc lt channel gt scale The number of counts user unit to convert from counts to units FLOAT ppmc lt port gt pwm lt channel range gt freq The PWM carrier frequency in Hz Ap plies to a group of four consecutive PWM generators as indicated by lt channel range gt Min imum is 153Hz maximum is 500KHz FLOAT ppmc lt port gt pwm lt channel gt scale Scaling for PWM generator If scale is X then the duty cycle will be 100 when the value pin is X or X nj FLOAT ppmc lt port gt pwm lt channel gt max dc Maximum duty cycle from 0 0 to 1 0 rj LOAT ppmc lt port gt pwm lt channel gt min dc Minimum duty cycle from 0 0 to 1 0 FLOAT ppmc lt port gt pwm lt channel gt duty cycle Actual duty cycle used mostly for trou bleshooting BIT ppmc lt port gt pwm lt channel gt bootstrap If true the PWM generator will generate a short sequence of pulses of both polarities when it is enabled to charge the bootstrap capaca tors used on some MOSFET gate drivers U32 ppmc lt port gt stepgen lt channel range gt setup time Sets minimum time between direction change and step pulse in units of 100nS Applies to a group fof four consecutive PWM generators as indicated by lt channel range gt U32 ppmc lt port gt stepgen lt channel range gt pulse width Sets width of s
188. l When we click on X_vel the dialog closes and the channel is now selected The channel 1 button is pressed in and channel number 1 and the name X_vel appear below the row of buttons That display always indicates the selected channel you can have many channels on the screen but the selected one is highlighted and the various controls like vertical position and scale always work on the selected one To add a signal to channel 2 click the 2 button When the dialog pops up click the Signals tab then click on Y_vel We also want to look at the square and triangle wave outputs There are no signals connected to those pins so we use the Pins tab instead For channel 3 select siggen 0 triangle and for channel 4 select siggen 0 square CHAPTER 7 HAL TUTORIAL 62 7 6 3 Capturing our first waveforms Now that we have several probes hooked to the HAL it s time to capture some waveforms To start the scope click the Normal button in the Run Mode section of the screen upper right Since we have a 4000 sample record length and are acquiring 1000 samples per second it will take halscope about 2 seconds to fill half of its buffer During that time a progress bar just above the main screen will show the buffer filling Once the buffer is half full the scope waits for a trigger Since we haven t configured one yet it will wait forever To manually trigger it click the Force butt
189. l me named my radio one my radio two and my radio three In the image above three is the selected value 18 5 5 Number The number widget displays the value of a FLOAT signal lt number gt lt halpin gt my number lt halpin gt lt font gt Helvetica 50 lt font gt lt format gt 4 3 lt format gt lt number gt CHAPTER 18 VIRTUAL CONTROL PANELS 157 12 345 lt font gt is a Tkinter font type and size specification Note that on Ubuntu 6 06 Helvetica is not available in sizes above ca 40 or 50 One font that will show up to at least size 200 is courier 10 pitch so for a really big Number widget you could specify lt font gt courier 10 pitch 100 lt font gt lt format gt is a C style format specified that determines how the number is displayed 18 5 6 Bar A bar widget displays the value of a FLOAT signal both graphically using a bar display and numeri cally lt bar gt lt halpin gt my bar lt halpin gt lt min_ gt 0 lt min_ gt lt max_ gt 123 lt max_ gt lt bgcolor gt grey lt bgcolor gt lt fillcolor gt red lt fillcolor gt lt bar gt ee Th 0 0 124 18 5 7 Meter Meter displays the value of a FLOAT signal using a traditional dial indicator lt meter gt lt halpin gt my meter lt halpin gt lt text gt Voltage lt text gt lt size gt 300 lt size gt lt min_ gt 12 lt min_ gt lt max_ gt 33 lt max_ gt lt meter gt
190. l wae ee 129 Vio ELI oa peer ec sas Oe age Sas a e eee oe ee dea 129 Woe UNG 6 oe Sheehan AGE EOLEREER SE DEES ERED S we RS Hwee 129 a e PADS 26g soe Eo BG ON we Ea SS SE se eet he he We Se ae we 129 Uno PUNCO oo uta Gd AS ee GE RS Be a GS NO alte e Ae 129 Lis AEREO ok we aa a Rs oad ade ee Rd wea ae 130 16 4 1 Installing 2 ck EER ER ERE EERE RY OE REA Ee Ew ED 130 e A ee fk ev ow a POM Ba ey BOM ee ey wk a eG eke we se R 130 Voss TAPETES osas GS a Ba GS ee He hw ae wl A e 131 Via DONS a aes aa ae ee ee RS A we Ke ete oe Be Ge 131 16 5 Mesa Electronics m5i20 Anything I O Card o o oo ooo ooo 000 131 CONTENTS xi 16 5 1 PING casa PRO RRR kan E k a Ge aa a 132 6 52 e o AI 132 DO BUON 2h Dd a e Ss Ee es Ee ds ee Ee ee 133 16 5 2 Copnector pinout lt s sss seat AA RL 133 169A I Connecdor PZ aia A e e e R 134 16 54 2Connector PS cios a wee A RA E 134 16 54 SComecorPd 6 eed AAA EE a AR ey eo 135 IG GAALEOS oo cios iia ER EER LE SRL EE EGE ES 136 16 6 Vital Systems Motenc 100 and Motene LITE o 136 16 6 1 FING AENA Se EG gk ie ow 137 O52 PO bb Oe Eee EOE SDE ERE E EHS SS RRO SHED EM 137 186 5 FURCHONS oc a we aa ee A ala Se a 138 16 7 Pico Systems PPMC Parallel Port Motion Control 0 138 IGAL PG boo a AD REA EATER A HEH eae ee e a 138 16 72 Parameters co sis ew Ee oe a es ee 139 e A ie a 4s tase wee we aS eA ww EO Se eS ie ey eS a 140 16 5 P
191. lation of icons and other elements widgets on a computer screen EMC An application that presents a graphical screen to the machine operator allowing manip ulation of machine and the corresponding controlling program Home A specific location in the machine s work envelope that is used to make sure the computer and the actual machine both agree on the tool position ini file A text file that contains most of the information that configures EMC for a particular ma chine Joint Coordinates These specify the angles between the individual joints of the machine See also Kinematics Jog Manually moving an axis of a machine Jogging either moves the axis a fixed amount for each key press or moves the axis at a constant speed as long as you hold down the key kernel space See real time Kinematics The position relationship between world coordinates and joint coordinates of a ma chine There are two types of kinematics Forward kinematics is used to calculate world co ordinates from joint coordinates Inverse kinematics is used for exactly opposite purpose Note that kinematics does not take into account the forces moments etc on the machine It is for positioning only Lead screw An screw that is rotated by a motor to move a table or other part of a machine Lead screws are usually either ball screws or acme screws although conventional triangu lar threaded screws may be used where accuracy and long life are not as important as low cos
192. le The desired value on the gauge is called a setpoint also called set value The difference between the gauge s needle and the setpoint is the error A control loop consists of three parts 1 Measurement by a sensor connected to the process e g encoder 2 Decision in a controller element 3 Action through an output device such as an motor As the controller reads a sensor it subtracts this measurement from the setpoint to determine the error It then uses the error to calculate a correction to the process s input variable the action so that this correction will remove the error from the process s output measurement In a PID loop correction is calculated from the error in three ways cancel out the current er ror directly Proportional the amount of time the error has continued uncorrected Integral and anticipate the future error from the rate of change of the error over time Derivative 1This Subsection is taken from an much more extensive article found at http en wikipedia org wiki PID_controller 176 CHAPTER 22 PID TUNING 177 A PID controller can be used to control any measurable variable which can be affected by manipu lating some other process variable For example it can be used to control temperature pressure flow rate chemical composition speed or other variables Automobile cruise control is an example of a process outside of industry which utilizes crude PID control Some contr
193. lid entry OPEN FILE full path to file nge The file to show in the preview plot when AXIS starts EDITOR gedit The editor to use when selecting File gt Edit or File Edit Tool Table from the AXIS menu This must be configured for these menu items to work Another valid entry is gnome terminal e vim 4 3 3 FILTER Section AXIS has the ability to send loaded files through a filter program This filter can do any desired task Something as simple as making sure the file ends with M2 or something as complicated as detecting whether the input is a depth image and generating g code to mill the shape it defines The FILTER section of the ini file controls how filters work First for each type of file write a PROGRAM_EXTENSION line Then specify the program to execute for each type of file This program is given the name of the input file as its first argument and must write rs274ngc code to standard output This output is what will be displayed in the text area previewed in the display area and executed by emc when Run The following lines add support for the image to gcode converter included with emc2 PROGRAM_EXTENSION png gif Greyscale Depth Image CHAPTER 4 INI CONFIGURATION 25 png image to gcode gif image to gcode It is also possible to specify an interpreter PROGRAM_EXTENSION py Python Script py python In this way any Python script can be opened and its output is treated as g code One such example
194. lly run the code contained in the function siggen 0 update we need a realtime thread The component called threads that is used to create a new thread Lets create a thread called test thread with a period of 1mS 1000000nS halcmd loadrt threads namel test thread period1 1000000 Let s see if that worked halcmd show thread Realtime Threads Period FP Name Time Max Time 999849 YES test thread 0 0 It did The period is not exactly 1000000nS because of hardware limitations but we have a thread that runs at approximately the correct rate and which can handle floating point functions The next step is to connect the function to the thread halcmd addf siggen 0 update test thread Up till now we ve been using halcma only to look at the HAL However this time we used the addf add function command to actually change something in the HAL We told halcmd to add the function siggen 0 update to the thread test thread and if we look at the thread list again we see that it succeeded halcmd show thread Realtime Threads Period FP Name Time Max Time 999849 YES test thread 07 08 1 siggen 0 update There is one more step needed before the siggen component starts generating signals When the HAL is first started the thread s are not actually running This is to allow you to completely configure the system before the realtime code starts Once you are happy with the configuration you can start the realtime code like this
195. logic gate and to allow for a selection of any of the basic boolean logic functions and or and xor 11 10 Compiling comp files in the source tree Place the comp file in the source directory emc2 src hal components and re run make Comp files are automatically detected by the build system If a comp file is a driver for hardware it may be placed in emc2 src hal components and will be built except if emc2 is configured as a userspace simulator 11 11 Compiling realtime components outside the source tree comp can process compile and install a realtime component in a single step placing rtexample ko in the emc2 realtime module directory comp install rtexample comp Or it can process and compile in one step leaving example ko or example so for the simulator in the current directory comp compile rtexample comp Or it can simply process leaving example c in the current directory comp rtexample comp comp can also compile and install a component written in C using the install and compile options shown above comp install rtexample2 c man format documentation can also be created from the information in the declaration section comp document rtexample comp The resulting manpage example 9 can be viewed with man example 9 or copied to a standard location for manual pages CHAPTER 11 COMP A TOOL FOR CREATING HAL MODULES 89 11 12 Compiling userspace components outside the source tree comp can pr
196. lowing in your hal file making sure you pick the pin that is connected to your control device net spindle fwd motion spindle forward gt parport 0 pin 16 out net spindle rev motion spindle reverse gt parport 0 pin 17 out Chapter 26 MPG Pendant This example is to explain how to hook up the common MPG pendants found on the market place today This example uses a MPG3 pendant and a C22 pendant interface card from CNC4PC and a second parallel port plugged into the PCI slot This example gives you 3 axis with 3 step increments of 0 1 0 01 0 001 26 1 Second Parallel Port In this example we are using a second parallel port connected to the MPG Pendant that is plugged into a PCI slot To find the address of your parallel port card open a terminal window and type lspci v You will see something similar to this 0000 00 10 0 Communication controller NetMos Technology PCI 1 port parallel adapter rev 01 Subsystem LSI Logic Symbios Logic Unknown device 0010 Flags medium devsel IRQ 11 I O ports at a800 size 8 I O ports at ac00 size 8 I O ports at b000 size 8 I O ports at b400 size 8 I O ports at b800 size 8 I O ports at bc00 size 16 In my case the address was the first one so I changed my hal file from loadrt hal _parport cfg 0x378 to loadrt hal _parport cfg 0x378 0xa800 in note the double quotes surrounding the addresses and added addf parport l read base thread addf parport 1 write base thread
197. luto F generalis so e eso a a RE EE Si a ew athe wd 140 16 5 1 REQUIPEMENTS cc i ss to ee ae aa oe pI ee e ae ea 140 IOGA O AE 140 168 3 Physical PIS 64 a edo e A A a ek eS 141 1584 IED ck a a a we a a A 141 Li E ew aera a a we eS we OR Ee ae a a e ias 141 1686 POMC yc be ba heed AA AR ha ee Pee dats ee kes 141 16 8 7 Rebuilding the FPGA firmware 00 000 pees 141 16 8 9 Por miore Mmiormationi s be esas aa we a a a a a 142 16 9 pluto servo Hardware PWM and quadrature counting 142 IGS POUC o sa goea Sw ae tg A Aare Si a we we el we we 142 16 9 2 Input latching and output updating lt ss s ss ss erene ase wia ei 143 16 9 3 HAL Functions Pins and Parameters sse wa 143 16 9 4 Compatible driver hardware eee eee eee 143 16 10 Pluto step 300kHz Hardware Step Generator o 00 000 000 145 VOL PIO o EE ae AAA Ad a Geel si he aa do 145 16 10 2 Input latching and output updating 145 16 10 38 Step Waveform Timings a ee es 145 16 10 4 HAL Functions Pins and Parameters cscs 6 6608 lt lt o on on eed 147 CONTENTS xii 17 Halui 148 17 1 TEITOCUEGON 2464554545058 ee Gee bb ew ae ee bee ede 148 UY Haloi pin rererence ia SA A A a we A AAA AA ee 148 17 21 Machine sie m e Fk Bw ARA A AA we A A a Be 148 1722 TAS 0 a eRe a e A A A A 148 IA MA a e te heen as da A tad de ak a Ataca 148 17 24 Mist Flood LUDE ocres va
198. m the corresponding ADC e BIT stg in lt pinnum gt Tracks a physical input pin e BIT stg in lt pinnum gt not Tracks a physical input pin but inverted e BIT stg out lt pinnum gt Drives a physical output pin a motion control card usually is a board containing devices to control one or more axes the control devices are usually DAC s to set an analog voltage encoder counting chips for feedback etc 5hint after starting up the driver dmesg can be consulted for messages relevant to the driver e g autodetected version number and base address CHAPTER 16 HARDWARE DRIVERS 131 For each pin lt channe1 gt is the axis number and lt pinnum gt is the logic pin number of the STG The in HAL pin is TRUE if the physical pin is high and FALSE if the physical pin is low The in lt pinnum gt not HAL pin is inverted it is FALSE if the physical pin is high By connecting a signal to one or the other the user can determine the state of the input 16 4 3 Parameters e FLOAT stg lt channel gt position scale The number of counts user unit to convert from counts to units e FLOAT stg lt channel gt dac offset Sets the offset for the corresponding DAC e FLOAT stg lt channel gt dac gain Sets the gain of the corresponding DAC e FLOAT stg lt channel gt adc offset Sets the offset of the corresponding ADC e FLOAT stg lt channel gt adc gain Sets the gain of the
199. major flaws in EMC was that you couldn t specify the pinout without recompiling the source code EMC2 is far more flexible and now thanks to the Hardware Abstraction Layer you can easily specify which signal goes where read the 6 1 section for more information about the HAL As it is described in the HAL Introduction and tutorial we have signals pins and parameters inside the HAL The ones relevant for our pinout are Signals Xstep Xdir amp Xen pins parport 0 pin XX out parport 0 pin XX in z Depending on what you have chosen in your ini file you are using either standard_pinout hal or xylotex_pinout hal These are two files that instruct the HAL how to link the various signals amp pins Further on we ll investigate the standard_pinout hal 13 3 1 standard_pinout hal This file contains several HAL commands and usually looks like this 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 read inputs first addf parport 0 read base thread 1 write outputs last addf parport 0 write base thread 1 finally connect physical pins to the signals net Xstep gt parport 0 pin 03 out net Xdir gt parport 0 pin 02 out net Ystep gt parport 0 pin 05 out net Ydir gt parport 0 pin 04 out net Zstep gt parport 0 pin 07 out net Zdir gt parport 0 pin 06 out
200. mes e Digital outputs OUTO through OUTS are all updated at the same time Digital outputs OUT10 through OUT17 are updated at the same time as the pwm function they are shared with e Digital inputs INO through IN19 are all latched at the same time e Quadrature positions for each channel are latched at different times 16 9 3 HAL Functions Pins and Parameters A list of all loadrt arguments HAL function names pin names and parameter names is in the manual page pluto_servo 9 16 9 4 Compatible driver hardware A schematic for a 2A 2 axis PWM servo amplifier board is available http emergent unpy net projects 01148303608 The L298 H Bridge L298 H bridge http www st com stonline books pdf docs 1773 paf is inexpensive and can easily be used for motors up to 4A one motor per CHAPTER 16 HARDWARE DRIVERS 144 Table 16 1 Pluto Servo Alternate Pin Functions Primary function Alternate Function Behavior if both functions used UPO PWMO When pwm 0 pwmdir is TRUE this pin is the PWM output OUT10 XOR d with UPO or PWMO UP1 PWM1 When pwm l pwmdir is TRUE this pin is the PWM output OUT12 XOR d with UP1 or PWM1 UP2 PWM2 When pwm 2 pwmdir is TRUE this pin is the PWM output OUT14 XOR d with UP2 or PWM2 UP3 PWM3 When pwm 3 pwmdir is TRUE this pin is the PWM output OUTI16 XOR d with UP3 or PWM3 DNO DIRO When
201. ms including RTAI and RTLINUX RS 274 NGC The formal name for the language used by EMC part programs Servo Motor Servo Loop Spindle On a mill or drill the spindle holds the cutting tool On a lathe the spindle holds the workpiece Stepper Motor A type of motor that turns in fixed steps By counting steps it is possible to deter mine how far the motor has turned If the load exceeds the torque capability of the motor it will skip one or more steps causing position errors TASK The module within EMC that coordinates the overall execution and interprets the part pro gram Tcl Tk A scripting language and graphical widget toolkit with which EMC s most popular GUI s were written Units See Machine Units Display Units or Program Units above World Coordinates This is the absolute frame of reference It gives coordinates in terms of a fixed reference frame that is attached to some point generally the base of the machine tool Part XIV Legal Section Legal Section Copyright Terms Copyright c 2000 LinuxCNC org Permission is granted to copy distribute and or modify this document under the terms of the GNU Free Documentation License Version 1 1 or any later version published by the Free Software Foundation with no Invariant Sections no Front Cover Texts and one Back Cover Text This EMC Handbook is the product of several authors writing for linuxCNC org As you find it to be of value in your work
202. n 9 software step pulse generation for more information see 15 1 steptest 9 Used by Stepconf to allow testing of acceleration and velocity values for an axis streamer 9 stream file data into HAL in real time sum2 9 Sum of two inputs each with a gain and an offset supply 9 set output pins with values from parameters deprecated threads 9 creates hard realtime HAL threads threadtest 9 timedelta 9 toggle 9 push on push off from momentary pushbuttons tripodkins 9 kinematics definitions for emc2 tristate_bit 9 Place a signal on an I O pin only when enabled similar to a tristate buffer in electronics tristate_float 9 Place a signal on an I O pin only when enabled similar to a tristate buffer in electronics trivkins 9 kinematics definitions for emc2 updown 9 Counts up or down with optional limits and wraparound behavior wcomp 9 Window comparator weighted_sum 9 convert a group of bits to an integer xor2 9 Two input XOR exclusive OR gate Chapter 15 Internal Components Most components have unix style manual pages To view manual pages for real time components type man 9 componentname at the terminal prompt This document focuses on more complicated components which have figures which are hard to reproduce in the manual page format 15 1 Stepgen This component provides software based generation of step pulses in response to position or velocity commands In position mode it has a
203. n EPP mode Although most users connect one board to a parallel port in theory any mix of up to 8 or 16 boards can be used on a single parport One driver serves all types of boards The final mix of I O depends on the connected board s The driver doesn t distinguish between boards it simply numbers I O channels encoders etc starting from O on the first card Installing loadrt hal_ppmc port_addr lt addr1 gt lt addr2 gt lt addr3 gt The port_addr parameter tells the driver what parallel port s to check By default lt addr1 gt is 0x0378 and lt addr2 gt and following are not used The driver searches the entire address space of the enhanced parallel port s at port_addr looking for any board s in the PPMC family It then exports HAL pins for whatever it finds During loading or attempted loading the driver prints some usefull debugging message to the kernel log which can be viewed with dmesg Up to 3 parport busses may be used and each bus may have up to 8 devices on it 16 7 1 Pins In the following pins parameters and functions lt board gt is the board ID According to the naming conventions the first board should always have an ID of zero However this driver sets the ID based on a pair of jumpers on the baord so it may be non zero even if there is only one board e s32 ppmc lt port gt encoder lt channel gt count Encoder position in counts CHAPTER 16 HARDWARE DRIVERS 139 s32 ppmc lt port gt
204. n com board_pluto P htm1 and from the developer s blog http emergent unpy net 01165081407 16 9 pluto servo Hardware PWM and quadrature counting The pluto_servo system is suitable for control of a 4 axis CNC mill with servo motors a 3 axis mill with PWM spindle control a lathe with spindle encoder etc The large number of inputs allows a full set of limit switches This driver features e 4 quadrature channels with 40MHz sample rate The counters operate in 4x mode The maximum useful quadrature rate is 8191 counts per emc2 servo cycle or about 8MHz for EMC2 s default 1ms servo rate e 4 PWM channels up down or pwm dir style 4095 duty cycles from 100 to 100 including 0 The PWM period is approximately 19 5kHz 40MHz 2047 A PDM like mode is also available 18 digital outputs 10 dedicated 8 shared with PWM functions Example A lathe with unidirectional PWM spindle control may use 13 total digital outputs 20 digital inputs 8 dedicated 12 shared with Quadrature functions Example A lathe with index pulse only on the spindle may use 13 total digital inputs EPP communication with the PC The EPP communication typically takes around 100uS on machines tested so far enabling servo rates above 1kHz 16 9 1 Pinout UPx The up up down mode or pwm pwm direction mode signal from PWM generator X May be used as a digital output if the corresponding PWM channel is unused or the output on the channel
205. n not pins e nj UNCT parport read all Reads physical input pins of all ports and updates HAL in and in not pins e FUNCT parport lt portnum gt write Reads HAL out pins of port lt portnum gt and updates that port s physical output pins e FUNCT parport write all Reads HAL out pins of all ports and updates all physical output pins e FUNCT parport lt portnum gt reset Waits until reset time has elapsed since the associ ated write then resets pins to values indicated by out invert and out invert settings reset must be later in the same thread as write The individual functions are provided for situations where one port needs to be updated in a very fast thread but other ports can be updated in a slower thread to save CPU time It is probably not a good idea to use both an a11 function and an individual function at the same time 16 1 5 Common problems If loading the module reports insmod error inserting home jepler emc2 rtlib hal_parport ko 1 Device or resource busy then ensure that the standard kernel module parport_pc is not loaded and that no other device in the system has claimed the I O ports If the module loads but does not appear to function then the port address is incorrect or the probe_parport module is required 16 2 probe_parport In modern PCs the parallel port may require plug and play PNP configuration before it can be used The probe_parport module pe
206. n num gt phase B Quadrature output e BIT sim encoder lt chan num gt phase Z Index pulse output When speed is positive phase A leads phase B 15 5 4 Parameters e U32 sim encoder lt chan num gt ppr Pulses Per Revolution e FLOAT sim encoder lt chan num gt scale Scale Factor for speed The default is 1 0 which means that speed is in revolutions per second Change to 60 for RPM to 360 for degrees per second 6 283185 for radians per seconed etc Note that pulses per revolution is not the same as counts per revolution A pulse is a complete quadrature cycle Most encoder counters will count four times during one complete cycle 15 5 5 Functions The component exports two functions Each function affects all simulated encoders e FUNCT sim encoder make pulses High speed function to generate quadrature pulses no floating point e FUNCT sim encoder update speed Low speed function to read speed do scaling and set up make pulses CHAPTER 15 INTERNAL COMPONENTS 123 15 6 Debounce Debounce is a realtime component that can filter the glitches created by mechanical switch contacts It may also be useful in other applications where short pulses are to be rejected 15 6 1 Installing emc2 halcmd loadrt debounce cfg lt config string gt lt config string gt is a series of space separated decimal integers Each number installs a group of identical debounce filters the number de
207. nal documents forming one section entitled History likewise combine any sections entitled Acknowledgements and any sections entitled Dedications You must delete all sections entitled Endorsements 207 6 COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License and replace the individual copies of this License in the various documents with a single copy that is included in the collection provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects You may extract a single document from such a collection and distribute it individually under this License provided you insert a copy of this License into the extracted document and follow this License in all other respects regarding verbatim copying of that document 7 AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works in or on a volume of a storage or distribution medium does not as a whole count as a Modified Version of the Document provided no compilation copyright is claimed for the compilation Such a compilation is called an aggregate and this License does not apply to the other self contained works thus compiled with the Document on account of their being thus compiled if they are not themselves derivative works of the Document If the Cover Text requireme
208. nd minus feedback e BIT pid lt loopnum gt enable A bit that enables the loop If enable is false all integrators are reset and the output is forced to zero If enable is true the loop operates normally 120 CHAPTER 15 INTERNAL COMPONENTS ndino jqeu y eqp puewwoo dqpwo xew 0 pid lp p yndjno xew edd ES ip ey p ldd apw9 xew AN ey 044 Y seq q10119 xew F AN ip ey P ureBq pueqpeap ON Seu eS g i uiebd 10119 XEU 110119 X8 Wu E f ee J ueb 10119 Figure 15 8 PID Loop Block Diagram CHAPTER 15 INTERNAL COMPONENTS 121 15 4 4 Parameters The PID gains limits and other tunable features of the loop are implemented as parameters e FLOAT pid e FLOAT pid e FLOAT pid e FLOAT pid po e nj F LOAT pid sition lt lt lt lt lt loopnum gt loopnum gt loopnum gt loopnum gt loopnum gt LOAT pid lt loopnum gt command velocity LOAT pid lt l lLoopnum gt
209. ns whose titles are designated as being those of Invariant Sections in the notice that says that the Document is released under this License The Cover Texts are certain short passages of text that are listed as Front Cover Texts or Back Cover Texts in the notice that says that the Document is released under this License A Transparent copy of the Document means a machine readable copy represented in a format whose specifi cation is available to the general public whose contents can be viewed and edited directly and straightforwardly with generic text editors or for images composed of pixels generic paint programs or for drawings some widely available drawing editor and that is suitable for input to text formatters or for automatic translation to a vari ety of formats suitable for input to text formatters A copy made in an otherwise Transparent file format whose markup has been designed to thwart or discourage subsequent modification by readers is not Transparent A copy that is not Transparent is called Opaque Examples of suitable formats for Transparent copies include plain ASCII without markup Texinfo input format BIFX input format SGML or XML using a publicly available DTD and standard conforming simple HTML designed for human modification Opaque formats include PostScript PDF proprietary formats that can be read and edited only by proprietary word processors SGML or XML for which the DTD and or processing tools are not
210. nt of section 3 is applicable to these copies of the Document then if the Document is less than one quarter of the entire aggregate the Document s Cover Texts may be placed on covers that surround only the Document within the aggregate Otherwise they must appear on covers around the whole aggregate 8 TRANSLATION Translation is considered a kind of modification so you may distribute translations of the Document under the terms of section 4 Replacing Invariant Sections with translations requires special permission from their copyright holders but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections You may include a translation of this License provided that you also include the original English version of this License In case of a disagreement between the translation and the original English version of this License the original English version will prevail 9 TERMINATION You may not copy modify sublicense or distribute the Document except as expressly provided for under this License Any other attempt to copy modify sublicense or distribute the Document is void and will automatically terminate your rights under this License However parties who have received copies or rights from you under this License will not have their licenses terminated so long as such parties remain in full compliance 10 FUTURE REVISIONS OF THIS LICENSE The Free Software Foundati
211. nual pages in most cases Man pages are usually avail able for most programs and commands in Linux To view a man page open up a terminal window by going to Applications Accessories Terminal For example if you wanted to find out something about the find command in the terminal window type man find Use the Page Up and Page Down keys to view the man page and the Q key to quit viewing 27 2 List Modules Sometimes when troubleshooting you need to get a list of modules that are loaded In a terminal window type lsmod If you want to send the output from lsmod to a text file in a terminal window type lsmod gt mymod txt The resulting text file will be located in the home directory if you did not change directories when you opened up the terminal window and it will be named mymod txt or what ever you named it 27 3 Editing a Root File Editing some root files can have bad results Be careful when editing root files You can open and view most root files normally but they will open in read only mode 196 CHAPTER 27 LINUX FAQ 197 27 3 1 The Command Line Way Open up Applications Accessories Terminal In the terminal window type sudo gedit Open the file with File Open then edit 27 3 2 The GUI Way 1 Right click on the desktop and select Create Launcher 2 Type a name in like sudo edit 3 Type gksudo gnome open u as the command and save the launcher to your desktop 4 Drag a file onto your launcher to op
212. o P is an inexpensive 60 FPGA board featuring the ACEX1K chip from Altera 16 8 1 Requirements 1 A Pluto P board 2 An EPP compatible parallel port configured for EPP mode in the system BIOS 16 8 2 Connectors e The Pluto P board is shipped with the left connector presoldered with the key in the indicated position The other connectors are unpopulated There does not seem to be a standard 12 pin IDC connector but some of the pins of a 16P connector can hang off the board next to QA3 QZ3 e The bottom and right connectors are on the same 1 grid but the left connector is not If OUT2 OUT9 are not required a single IDC connector can span the bottom connector and the bottom two rows of the right connector 12In a future version this will be changed from invert to invert to better match the HAL canonical bit interface CHAPTER 16 HARDWARE DRIVERS 141 16 8 3 Physical Pins Read the ACEXIK datasheet for information about input and output voltage thresholds The pins are all configured in LVTTL LVCMOS mode and are generally compatible with 5V TTL logic Before configuration and after properly exiting emc2 all Pluto P pins are tristated with weak pull ups 20kQ min 50kQ max If the watchdog timer is enabled the default these pins are also tristated after an interruption of communication between emc2 and the board The watch dog timer takes approximately 6 5ms to activate However software bugs in the pluto_servo
213. o on It is permitted to write an axis name twice e g X Y Y Z for a gantry machine but this has no effect AXES 3 One more than the number of the highest joint number in the system For an XYZ machine the joints are numbered O 1 and 2 in this case AXES should be 3 For an XYUV machine using trivial kinematics the V joint is numbered 7 and therefore AXES should be 8 For a machine with nontrivial kinematics e g scarakins this will generally be the number of controlled joints HOME 0 0 O Coordinates of the homed position of each axis Again for a fourth axis you will need 0000 This value is only used for machines with nontrivial kinematics On machines with trivial kinematics this value is ignored LINEAR_UNITS lt units gt Specifies the machine units for linear axes Possible choices are in inch imperial metric mm This does not affect the linear units in NC code the G20 and G21 words do this ANGULAR_UNITS lt units gt Specifies the machine units for rotational axes Possible choices are deg degree 360 per circle rad radian 2pi per circle grad or gon 400 per circle This does not affect the angular units of NC code In RS274NGC A B and C words are always expressed in degrees CHAPTER 4 INI CONFIGURATION 27 DEFAULT_VELOCITY 0 0167 The initial rate for jogs of linear axes in machine units per second The value shown equals one unit per minute DEFAULT _ ACCEL
214. o simulations of the machine motors This enables entire factories of EMC machines to be set up and run in a computer integrated manufacturing environment CHAPTER 1 THE ENHANCED MACHINE CONTROL 4 EMC has been installed on many machines both with servo motors and stepper motors Here is a sampling of the earliest applications e 3 axis Bridgeport knee mill at Shaver Engineering The machine uses DC brush servo motors and encoders for motion control and OPTO 22 compatible I O interfaced to the PC parallel port for digital I O to the spindle coolant lube and e stop systems e 3 axis desktop milling machine used for prototype development The machine uses DC brush servo motors and encoders Spindle control is accomplished using the 4th motion control axis The machine cuts wax parts e 4 axis Kearney amp Trecker horizontal machining center at General Motors Powertrain in Pontiac MI This machine ran a precursor to the full software EMC which used a hardware motion control board After these early tests Jon Elson found the Shaver Engineering notes and replaced a refrigera tor sized Allen Bradley 7300 control on his Bridgeport with the EMC running on a Red Hat 5 2 distribution of Linux He was so pleased with the result that he advertised the software on sev eral newsgroups He continues to use that installation and has produced several boards that are supported by the software From these early applications news of the software spread
215. ocess compile install and document userspace components comp usrexample comp comp compile usrexample comp comp install usrexample comp comp document usrexample comp This only works for comp files not for c files 11 13 Examples 11 13 1 constant This component functions like the one in blocks including the default value of 1 0 The declaration function _ creates functions named constant 0 etc component constant pin out float out param r float value 1 0 function _ rr FUNCTION _ out value 11 13 2 sincos This component computes the sine and cosine of an input angle in radians It has different ca pabilities than the sine and cosine outputs of siggen because the input is an angle rather than running freely based on a frequency parameter The pins are declared with the names sin_ and cos_ in the source code so that they do not interfere with the functions sin and cos The HAL pins are still called sincos lt num gt sin component sincos pin out float sin_ pin out float cos_ pin in float theta function _ tr include lt rtapi_math h gt FUNCTION _ sin_ sin theta cos_ cos theta 11 13 3 out8 This component is a driver for a fictional card called out8 which has 8 pins of digital output which are treated as a single 8 bit value There can be a varying number of such cards in the system and they can be a
216. oder read and DAC write functions to the servo thread or hooking stepgen s function to the base thread along with the parport function s to write the steps to the port 3The Lego name is a trademark of the Lego company Chapter 7 HAL Tutorial 7 1 Before we start Configuration moves from theory to device HAL device that is For those who have had just a bit of computer programming this section is the Hello World of the HAL As noted above halrun can be used to create a working system It is a command line or text file tool for configuration and tuning The following examples illustrate its setup and operation 7 1 1 Notation Command line examples are presented in bold typewriter font Responses from the computer will be in typewriter font Text inside square brackets like this is optional Text inside angle brackets lt like this gt represents a field that can take on different values and the adjacent paragraph will explain the appropriate values Text items separated by a vertical bar means that one or the other but not both should be present All command line examples assume that you are in the emc2 directory and paths will be shown accordingly when needed 7 1 2 The RTAPI environment RTAPI stands for Real Time Application Programming Interface Many HAL components work in realtime and all HAL components store data in shared memory so realtime components can ac cess it Normal Linux does not support realtime pr
217. ogramming or the type of shared memory that HAL needs Fortunately there are realtime operating systems RTOS s that provide the neccessary extensions to Linux Unfortunately each RTOS does things a little differently To address these differences the EMC team came up with RTAPI which provides a consistent way for programs to talk to the RTOS If you are a programmer who wants to work on the internals of EMC you may want to study emc2 src rtapi rtapi h to understand the API But if you are a normal person all you need to know about RTAPI is that it and the RTOS needs to be loaded into the memory of your computer before you do anything with HAL For this tutorial we are going to assume that you have successfully compiled the emc2 source tree and if necessary invoked the emc environment script to prepare your shell In that case all you need to do is load the required RTOS and RTAPI modules into memory Just run the following command emc2S halrun halcmd 47 CHAPTER 7 HAL TUTORIAL 48 With the realtime OS and RTAPI loaded we can move into the first example Notice that the prompt has changed from the shell s to halemd This is because subsequent commands will be inter preted as HAL commands not shell commands halrun is a simple shell script and it is more or less equivalent to running emc2 realtime start emc2S halcmd kf When halcmd exits halrun stops the realtime system just like emc2 realtime stop
218. ol systems arrange PID controllers in cascades or networks That is a master control produces signals used by slave controllers One common situation is motor controls one often wants the motor to have a controlled speed with the slave controller often built into a variable frequency drive directly managing the speed based on a proportional input This slave input is fed by the master controllers output which is controlling based upon a related variable 22 1 2 Theory PID is named after its three correcting calculations which all add to and adjust the controlled quantity These additions are actually subtractions of error because the proportions are usually negative 22 1 2 0 0 1 Proportional To handle the present the error is multiplied by a negative constant P for proportional and added to subtracting error from the controlled quantity P is only valid in the band over which a controller s output is proportional to the error of the system Note that when the error is zero a proportional controller s output is zero 22 1 2 0 0 2 Integral To learn from the past the error is integrated added up over a period of time and then multiplied by a negative constant I making an average and added to subtracting error from the controlled quantity I averages the measured error to find the process output s aver age error from the setpoint A simple proportional system either oscillates moving back and forth a
219. om manded position per second per second resulting in a contribution to the computed voltage for the motor amplifier The units on the FF2 gain are volts per machine unit per second per second e g 25 if machine units are millimeters mm s2 OUTPUT_SCALE 1 000 OUTPUT_OFFSET 0 000 HAL These two values are the scale and offset factors for the axis output to the motor amplifiers The second value offset is subtracted from the computed output in volts and divided by the first value scale factor before being written to the D A converters The units on the scale value are in true volts per DAC output volts The units on the offset value are in volts These can be used to linearize a DAC Specifically when writing outputs the EMC first converts the desired output in quasi SI units to raw actuator values e g volts for an amplifier DAC This scaling looks like _ output of f set scale The value for scale can be obtained analytically by doing a unit analysis i e units are output SI units actuator units For example on a machine with a velocity mode amplifier such that 1 volt results in 250 mm sec velocity mm ampli fier volts output 2 s offset 250 ec secvolt Note that the units of the offset are in machine units e g mm sec and they are pre subtracted from the sensor readings The value for this offset is obtained by finding the value of your output which yields 0 0 for the actuator outp
220. ometries and variables associated with each they are available to be interpreted into G Code These interpreters are called CAM Computer Aided Machining programs Like the CAD converters the rise of drawing programs like Corel and the whole bunch of paint programs converters have been written that will take a bitmap or raster or vector image and turn it into G Code that can be run with a CNC You re asking yourself Why did I want to know this The answer is that the EMC2 as it currently exists does not directly take in CAD or any image and run a machine using it The EMC2 uses a 1One machine tool manufacturer Hurco claims to have a right to the use of these programming schemes and to the use of the term conversational when used in this context CHAPTER 1 THE ENHANCED MACHINE CONTROL 3 variant of the earlier CNC language named RS274NGC Next Generation Controller All of the com mands given to the EMC2 must be in a form that is recognized and have meaning to the RS274NGC interpreter This means that if you want to carve parts that were drawn in some graphical or draft ing program you will also have to find a converter that will transform the image or geometry list into commands that are acceptable to the EMC2 interpreter Several commercial CAD CAM programs are available to do this conversion At least one converter Ace has been written that carries a copyright that makes it available to the public There has been recen
221. on in the Trigger section at the top right You should see the remainder of the buffer fill then the screen will display the captured waveforms The result will look something like figure 7 7 X A HAL Oscilliscope mak Horizontal Run Mode Trigger Zoom 500 mSec 4047 samples Normal e Normal Pos per div at 994 Hz C Single C Auto SaaS TRIGGER C stop Force Vertical Level Pos Gain Pos ovens OR Scale Level 1 fdiv elel a sfrofrifizfrafiafis re onset _ rising Selected Channel 0 000 4 siggen 1 square Chan Off Source None Figure 7 7 Captured Waveforms The Selected Channel box at the bottom tells you that the green trace is the currently selected one channel 4 which is displaying the value of the pin siggen 1 square Try clicking channel buttons 1 through 3 to highlight the other three traces CHAPTER 7 HAL TUTORIAL 63 7 6 4 Vertical Adjustments The traces are rather hard to distinguish since all four are on top of each other To fix this we use the Vertical controls in the box to the right of the screen These controls act on the currently selected channel When adjusting the gain notice that it covers a huge range unlike a real scope this one can display signals ranging from very tiny pico units to very large Tera units The position control moves the displayed trace up and down over the height o
222. on may publish new revised versions of the GNU Free Documentation License from time to time Such new versions will be similar in spirit to the present version but may differ in detail to address new problems or concerns See http www gnu org copyleft Each version of the License is given a distinguishing version number If the Document specifies that a particular numbered version of this License or any later version applies to it you have the option of following the terms and conditions either of that specified version or of any later version that has been published not as a draft by the Free Software Foundation If the Document does not specify a version number of this License you may choose any version ever published not as a draft by the Free Software Foundation ADDENDUM How to use this License for your documents To use this License in a document you have written include a copy of the License in the document and put the following copyright and license notices just after the title page Copyright c YEAR YOUR NAME Permission is granted to copy distribute and or modify this document under the terms of the GNU Free Documentation License Version 1 1 or any later version published by the Free Software Foundation with the Invariant Sections being LIST THEIR TITLES with the Front Cover Texts being LIST and with the Back Cover Texts being LIST A copy of the license is included in the section entitled GNU Free Documentation Licen
223. ons is unimportant The following sections are used by EMC e EMC general information 4 3 1 e DISPLAY settings related to the graphical user interface 4 3 2 e FILTER settings input filter programs 4 3 3 e RS274NGC settings used by the g code interpreter e EMCMOT settings used by the real time motion controller 4 3 5 e HAL specifies hal files 4 3 7 e TASK settings used by the task controller 4 3 6 e TRAJ additional settings used by the real time motion controller 4 3 8 e AXIS_0 AXIS_n individual axis variables 4 3 9 e EMCIO settings used by the I O Controller 4 3 10 CHAPTER 4 INI CONFIGURATION 23 4 2 3 Variables A variable line is made up of a variable name an equals sign and a value Everything from the first non white space character after the up to the end of the line is passed as the value so you can embed spaces in string symbols if you want to or need to A variable name is often called a keyword The following sections detail each section of the configuration file using sample values for the configuration lines Some of the variables are used by EMC and must always use the section names and variable names shown Other variables are used only by HAL and the section names and variable names shown are those used in the sample configuration files 4 2 4 Definitions Machine Units The units of length or angle specified in the ini file for a particular axis 4 3 INI
224. ontact e the NC contact e the coil output 180 CHAPTER 23 LADDER PROGRAMMING 181 Of course there are way more components to a full ladder language but understanding these will help grasp the overall concept The ladder consists of one or more rungs These rungs are horizontal traces with components on them inputs outputs and other which get evaluated left to right Bl GO _ This example is the simplest rung The input on the left a normal open contact is connected to the output on the right QO Now imagine a voltage gets applied to the leftmost end as soon as the BO turns true e g the input is activated or the user pushed the NO contact the voltage reaches the right part QO As a consequence the QO output will turn from O to 1 Chapter 24 ClassicLadder 24 1 Introduction ClassicLadder is a free implementation of a ladder interpreter released under the LGPL It has been written by Marc Le Douarain He describes the beginning of the project on his website I decided to program a ladder language only for test purposes at the start in february 2001 It was planned that I would have to participate to a new product after leaving the enterprise in which I was working at that time And I was thinking that to have a ladder language in thoses products could be a nice option to considerate And so I started to code the first lines for calculating a rung with minimal elements and displaying dynamically it
225. p i i i i AA AA A A AIE ae 4 i steplen th i 3 c f stepidir 1 stepspace logic frequency je and L dirsetup timing position scale i dhol pos err i A i control i position hold d vel err i dT as STEP TYPE 0 maxireq i 7 t update_freq mares j make_pulses stepgen 0 crau tve position 1 uses i i H capture_position i rawcounts la counts lt a up latch 1 position tb L_ f down AAA este Be ee AA Me Se ete coe E ae 4 i steplen i th i a i upldown stepspace logic frequency and H timing position scale i dirdelay i pos err i i o control f position hold position cmd equation J H vamp accumulator a D gt or STEP TYPE N i ar as j i maxieq j i 7 R update_freq mararey i i stepgen 0 crau tvPe posimion make_pulses f i i capture_position i rawcounts i phase A i I counts t phase B i latch i lookup hase position fb table pu f i phase D I i L phase E 1 state A A VAENE Sa ee oe E ee eee se 4 i t i state steplen i counter frequency i and dirdelay timing position scale i i a y postion hold velocity cmd x ramp ramp SONA STEP TYPE 2 14 maxieq i i i L update_freq mans 1 i stepgen 0 cra rye vetocity i make_pulses Figure 15 1 Step Pulse Generator Block Diagram position mode CHAPTER 15 INTERNAL COMPONENTS capture_position position scale
226. pical pin definition will look something like these examples e BIT parport lt portnum gt pin lt pinnum gt in The HAL pin associated with the physical input pin lt pinnum gt on the 25 pin D shell connector e FLOAT pid lt loopnum gt output The output of the PID loop At times a shortened version of a name may be used for example the second pin above might be referred to simply as output when it can be done without causing confusion 8 2 General Naming Conventions Consistent naming conventions would make HAL much easier to use For example if every encoder driver provided the same set of pins and named them the same way it would be easy to change from one type of encoder driver to another Unfortunately like many open source projects HAL is 67 CHAPTER 8 GENERAL REFERENCE INFORMATION 68 a combination of things that were designed and things that simply evolved As a result there are many inconsistencies This section attempts to address that problem by defining some conventions but it will probably be a while before all the modules are converted to follow them Halemd and other low level HAL utilities treat HAL names as single entities with no internal struc ture However most modules do have some implicit structure For example a board provides several functional blocks each block might have several channels and each channel has one or more pins This results in a structure that resembles a directory tre
227. ponse to PWM is simple 0 PWM gives ORPM 10 PWM gives 180 RPM etc If there is a minimum PWM required to get the spindle to turn follow the example in the nist lathe sample configuration to use a scale component 3the fastest thread in the EMC2 setup usually the code gets executed every few microseconds CHAPTER 13 BASIC CONFIGURATIONS FOR A STEPPER BASED SYSTEM 101 13 3 6 Adding an enable signal Some amplifiers drives require an enable signal before they accept and command movement of the motors For this reason there are already defined signals called Xen Yen Zen To connect them use the following example linksp Xen parport 0 pin 08 out You can either have one single pin that enables all drives or several depending on the setup you have Note however that usually when one axis faults all the other ones will be disabled as well so having only one signal pin is perfectly safe 13 3 7 Adding an external E STOP button you can see in 13 3 1 by default the stepper configuration assumes no external E STOP button To add a simple external button you need to replace the line linkpp iocontrol 0 user enable out iocontrol 0 emc enable in with linkpp parport 0 pin 01 in iocontrol 0 emc enable in This assumes an E STOP switch connected to pin 01 on the parport As long as the switch will stay pushed EMC2 will be in the E STOP state When the external button gets released EMC2 will immediately switch to the E STOP
228. position cmd We see that this signal comes from axis o motor pos cmd and goes to both ddt 0 in and stepgen 0 position cmd By connecting our block to the signal we have avoided any complications with the normal flow of this motion command The Hal Show Area uses halemd to discover what is happening in a running HAL It gives you complete information about what it has discovered It also updates as you issue commands from the little editor panel to modify that HAL There are times when you want a different set of things displayed without all of the information available in this area That is where the Hal Watch Area is of value 10 4 4 Hal Watch Area Clicking the watch tab produces a blank canvas You can add signals and pins to this canvas and watch their values You can add signals or pins when the watch tab is displayed by clicking on the name of it Figure 10 4 shows this canvas with several bit type signals These signals include enable out for the first three axes and two of the three iocontrol estop signals Notice that the axes are not enabled even though the estop signals say that the EMC is not in estop A quick look at themc shows that the condition of the EMC is ESTOP RESET The amp enables do not turn true until the machine has been turned on The two colors of circles aka leds always show dark brown when a bit signal or pin is false They show the light yellow whenever that signal is true If you select a pin or signal
229. processor like Open Office produce files with paragraphs and word wrapping and lots of embedded codes that control font size and such A text editor does none of this 2Usually this file is in the users home directory e g home user 21 CHAPTER 4 INI CONFIGURATION 22 e sections e variables Each of these elements is separated on single lines Each end of line or newline character creates a new element 4 2 1 Comments A comment line is started with a or a mark When the ini reader sees either of these marks at the start a line the rest of the line is ignored by the software Comments can be used to describe what some INI element will do This is my little mill configuration file I set it up on January 12 2006 Comments can also be used to select between several values of a single variable DISPLAY tkemc DISPLAY axis DISPLAY mini DISPLAY keystick In this list the DISPLAY variable will be set to axis because all of the others are commented out If someone carelessly edits a list like this and leaves two of the lines uncommented the first one encountered will be used 6 99 Note that inside a variable the and characters do not denote comments INCORRECT valu and a comment 4 2 2 Sections Related parts of an ini file are separated into sections A section line looks like THIS_SECTION The name of the section is enclosed in brackets The order of secti
230. pulse A shorter period will allow you to generate more pulses per second within limits But if you go too short your computer will spend so much time generating step pulses that everything else will slow to a crawl or maybe even lock up Latency and stepper drive requirements affect the shortest period you can use as we will see in a minute Let s look at the Gecko example first The G202 can handle step pulses that go low for 0 5uS and high for 4 5uS it needs the direction pin to be stable 1uS before the falling edge and remain stable for 20uS after the falling edge The longest timing requirement is the 20uS hold time A simple approach would be to set the period at 20uS That means that all changes on the STEP and DIR lines are separated by 20uS All is good right Wrong If there was ZERO latency then all edges would be separated by 20uS and everything would be fine But all computers have some latency Latency means lateness If the computer has 11uS of latency that means sometimes the software runs as much as 11uS later than it was supposed to If one run of the software is 11uS late and the next one is on time the delay from the first to the second is only 9uS If the first one generated a step pulse and the second one changed the direction bit you just violated the 20uS G202 hold time requirement That means your drive might have taken a step in the wrong direction and your part will be the wrong size The really nasty part about
231. put to the hardware If enable is false then the output will be O regardles of value scale and offset The meaning of 0 is dependent on the hardware For example a bipolar 12 bit A D may need to write Ox1FF mid scale to the D A get O volts from the hardware pin If enable is true read scale offset and value and output to the adc scale value offset If enable is false then output 0 9 5 Encoder The canonical encoder interface I O type field encoder provides the functionality needed for homing to an index pulse and doing spindle synchronization as well as basic position and or ve locity control This interface should be implementable regardless of the actual underlying hardware although some hardware will provide better results For example capture the index position to 1 count while moving faster or have less jitter on the velocity pin 9 5 1 Pins e S32 count Encoder value in counts e FLOAT position Encoder value in position units see parameter scale e FLOAT velocity Velocity in position units per second e BIT reset When True force counter to zero e BIT index enable bidirectional When True reset to zero on next index pulse and set pin False The index enable pin is bi directional and might require a little more explanation If index enable is False the index channel of the encoder will be ignored and the counter will count normally The enco
232. pyright notice for your modifications adjacent to the other copyright notices F Include immediately after the copyright notices a license notice giving the public permission to use the Modified Version under the terms of this License in the form shown in the Addendum below G Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document s license notice H Include an unaltered copy of this License I Preserve the section entitled History and its title and add to it an item stating at least the title year new authors and publisher of the Modified Version as given on the Title Page If there is no section entitled History in the Document create one stating the title year authors and publisher of the Document as given on its Title Page then add an item describing the Modified Version as stated in the previous sentence J Preserve the network location if any given in the Document for public access to a Transparent copy of the Document and likewise the network locations given in the Document for previous versions it was based on These may be placed in the History section You may omit a network location for a work that was published at least four years before the Document itself or if the original publisher of the version it refers to gives permission K In any section entitled Acknowledgements or Dedications preserve the section s title and preserve in the section all the subs
233. rd gt enc lt channel gt reset count If this pin is true the counter will immediately be reset to zero and the pin will be cleared FLOAT motenc lt board gt dac lt channel gt value Analog output value for DAC in user units see gain and offset FLOAT motenc lt board gt adc lt channel gt value Analog input value read by ADC in user units see gain and offset BIT motenc lt board gt BIT motenc lt board gt digital input BIT motenc lt board gt digital output BIT motenc lt board gt BIT motenc lt board gt BIT motenc lt board gt is automatically cleared 16 6 2 Parameters in lt channel gt State of digital input pin see canonical digital input in lt channel gt not Inverted state of digital input pin see canonical out lt channel gt Value to be written to digital output seen canonical estop in Dedicated estop input more details needed stop in not Inverted state of dedicated estop input watchdog reset Bidirectional Set TRUE to reset watchdog once FLOAT motenc lt board gt enc lt channel gt scale The number of counts user unit to convert from counts to units FLOAT motenc lt board gt dac lt channel gt offset Sets the DAC offset FLOAT motenc lt board gt dac lt channel gt gain Sets the DAC gain scaling FLOAT motenc lt board gt adc lt channel gt offset Sets the ADC of
234. re four extra parameters that determine the exact timing of the step and direction signals See figure 15 3 for the meaning of these parameters The parameters are in nanoseconds but will be rounded up to an integer multiple of the thread period for the threaed that calls make_pulses For example if make_pulses is called every 16uS and steplen is 20000 then the step pulses will be 2 x 16 32uS long The default value for all four of the parameters is 1nS but the automatic rounding takes effect the first time the code runs Since one step requires steplen nS high and stepspace nS low the maximum frequency is 1 000 000 000 divided by steplen stepspace If maxfreq is set higher than that limit it will be lowered automatically If maxfreq is zero it will remain zero but the output frequency will still be limited Step type 1 has two outputs up and down Pulses appear on one or the other depending on the direction of travel Each pulse is steplen nS long and the pulses are separated by at least stepspace nS The maximum frequency is the same as for step type O If maxfreq is set higher than the limit it will be lowered If maxfreq is zero it will remain zero but the output frequency will still be limited Step types 2 through 14 are state based and have from two to five outputs On each step a state counter is incremented or decremented Figures 15 4 15 5 and 15 6 show the output patterns as a function of the state counter The max
235. reamer 1 stream file data into HAL in real time halui 1 io 1 iocontrol 1 pyvep 1 observe HAL pins and command EMC through NML accepts NML I O commands interacts with HAL in userspace accepts NML I O commands interacts with HAL in userspace Virtual Control Panel for EMC2 102 CHAPTER 14 HAL COMPONENTS 103 14 2 Realtime components and kernel modules Some of these will have expanded descriptions from the man pages Some will have limited descrip tions All of the components have man pages From this list you know what components exist and can use man n name to get additional information abs 9 Compute the absolute value and sign of the input signal and2 9 Two input AND gate at_pid 9 proportional integral derivative controller with auto tuning axis 9 accepts NML motion commands interacts with HAL in realtime biquad 9 Biquad IIR filter blend 9 Perform linear interpolation between two values blocks 9 Old style HAL blocks deprecated charge_pump 9 Create a square wave for the charge pump input of some controller boards clarke2 9 Two input version of Clarke transform clarke3 9 Clarke 3 phase to cartesian transform clarkeinv 9 Inverse Clarke transform classicladder 9 Realtime software plc based on ladder logic comp 9 Two input comparator with hysteresis constant 9 Use a parameter to set the value of a pin conv_bit_s32 9 Convert a value from bit to s32 conv_bit_u32 9 Convert a val
236. rforms configuration of any PNP ports present and should be loaded before hal_parport On machines without PNP ports it may be loaded but has no effect 16 2 1 Installing loadrt probe_parport loadrt hal_parport If the Linux kernel prints a message similar to parport PnPBIOS parport detected when the parport_pe module is loaded sudo modprobe a parport_pc sudo rmmod parport_pc then use of this module is probably required 2In the emc packages for Ubuntu the file ete modprobe d emc2 generally prevents parport_pc from being automatically loaded CHAPTER 16 HARDWARE DRIVERS 129 16 3 AX5214H The Axiom Measurement amp Control AX5214H is a 48 channel digital I O board It plugs into an ISA bus and resembles a pair of 8255 chips 16 3 1 Installing loadrt hal_ax5214h cfg lt config string gt The config string consists of a hex port address followed by an 8 character string of I and O which sets groups of pins as inputs and outputs The first two character set the direction of the first two 8 bit blocks of pins 0 7 and 8 15 The next two set blocks of 4 pins 16 19 and 20 23 The pattern then repeats two more blocks of 8 bits 24 31 and 32 39 and two blocks of 4 bits 40 43 and 44 47 If more than one board is installed the data for the second board follows the first As an example the string 0x220 IIIOIIOO 0x300 OIOOIOIO installs drivers for two boards The first board is at address 0x220 and has
237. river automatically identifies the installed board and exports the appropriate HAL objects Installing lOIdeally the encoders DACs ADCs and digital I O would comply with the canonical interfaces defined earlier but they don t Fixing that is on the things to do list CHAPTER 16 HARDWARE DRIVERS 137 loadrt hal_motenc During loading or attempted loading the driver prints some usefull debugging message to the kernel log which can be viewed with dmesg Up to 4 boards may be used in one system 16 6 1 Pins In the following pins parameters and functions lt board gt is the board ID According to the naming conventions the first board should always have an ID of zero However this driver sets the ID based on a pair of jumpers on the baord so it may be non zero even if there is only one board e 532 motenc lt board gt enc lt channel gt count Encoder position in counts FLOAT motenc lt board gt enc lt channel gt position Encoder position in user units BIT motenc lt board gt enc lt channel gt index Current status of index pulse input BIT motenc lt board gt enc lt channel gt idx latch Driver sets this pin true when it latches an index pulse enabled by latch index Cleared by clearing latch index BIT motenc lt board gt enc lt channel gt latch index If this pin is true the driver will reset the counter on the next index pulse BIT motenc lt boa
238. river board delays must always be in the range of microseconds no matter what 12 3 Create pins and parameters h hal component passthrough The component itself is created by a call to the constructor hal component The arguments are the HAL component name and optionally the prefix used for pin and parameter names If the prefix is not specified the component name is used h newpin in hal HAL FLOAT hal HAL_IN Then pins are created by calls to methods on the component object The arguments are pin name suffix pin type and pin direction For parameters the arguments are parameter name suffix parameter type and parameter direction Table 12 1 HAL Option Names Pin and Parameter Types HAL _BIT HAL FLOAT HAL_S32 HAL_U32 Pin Directions HAL_IN HAL_OUT HAL_IO Parameter Directions HAL_RO HAL RW e s The full pin or parameter name is formed by joining the prefix and the suffix with a so in the example the pin created is called passthrough in h ready Once all the pins and parameters have been created call the ready method 12 3 1 Changing the prefix The prefix can be changed by calling the setprefix method The current prefix can be retrieved by calling the getprefix method 12 4 Reading and writing pins and parameters For pins and parameters which are also proper Python identifiers the value may be accessed or set using the attribute synt
239. round the setpoint because there s nothing to remove the error when it overshoots or oscillates and or stabilizes at a too low or too high value By adding a negative proportion of i e subtracting part of the average error from the process input the average difference between the process output and the setpoint is always being reduced Therefore eventually a well tuned PID loop s process output will settle down at the setpoint 22 1 2 0 0 3 Derivative To handle the future the first derivative the slope of the error over time is calculated and multiplied by another negative constant D and also added to subtracting error from the controlled quantity The derivative term controls the response to a change in the system The larger the derivative term the more rapidly the controller responds to changes in the process s output More technically a PID loop can be characterized as a filter applied to a complex frequency domain system This is useful in order to calculate whether it will actually reach a stable value If the values are chosen incorrectly the controlled process input can oscillate and the process output may never stay at the setpoint 22 1 3 Loop Tuning Tuning a control loop is the adjustment of its control parameters gain proportional band integral gain reset derivative gain rate to the optimum values for the desired control response The opti mum behavior on a process change or setpoint change varies depending
240. rs start at zero and increment If more than one device is installed the channel numbers on additional devices start over at zero If it is possible to have a channel number greater than 9 then channel numbers should be two digits with a leading zero on numbers less than 10 to preserve sort ordering Some modules have pins and or parameters that affect more than one channel For example a PWM generator might have four channels with four independent duty cycle inputs but one frequency parameter that controls all four channels due to hardware limitations The frequency parameter should use 0 3 as the channel number lt specific name gt An individual I O channel might have just a single HAL pin associated with it but most have more than one For example a digital input has two pins one is the state of the physical pin the other is the same thing inverted That allows the configurator to choose between active high and active low inputs For most io types there is a standard set of pins and parameters referred to as the canonical interface that the driver should implement The canonical interfaces are described in chapter 9 8 3 1 1 Examples motenc 0 encoder 2 position the position output of the third encoder channel on the first Motenc board stg 0 din 03 in the state of the fourth digital input on the first Servo to Go board ppme 0 pwm 00 03 frequency the carrier frequency used for PWM channels O through
241. s Owner Type Dir Value Name 03 bit IN FALSE vep light 03 bit OUT FALSE vcp pushbutton halcmd To make something happen we can connect a HAL signal between the button and the light halcmd newsig Jumper bit halcmd linksp jumper vcp pushbutton halcmd linksp Jumper vcp light halcmd show sig Signals Type Value Name bit FALSE jumper gt vcp light lt vcp pushbutton halcmd Now push the button and the the LED should light up 19 2 VCP Another small example with EMC Place the following in the file estop vcp vep main window toggle halpin vcp estop In your hal file remove any existing signal linked to iocontrol 0 emc enable in and add the following lines loadusr W halvcp estop vcp newsig estop bit linkps vcp estop gt estop linkps estop gt jocontrol 0 emc enable in Now when running your machine the ESTOP button in the GUI is disabled and the ESTOP button in the VCP window is used instead CHAPTER 19 VCP 164 19 3 VCP Syntax 19 3 1 Block A block s format is tag contents The contents can consist of attributes that describe the block or other blocks that nest inside it A attributes format is name value The attribute names that are acceptable for each block depend on the block tag and will be listed later Part VII Advanced topics 165 Chapter 20 Kinematics in EMC2 20 1 Introduction When we talk about CNC machines
242. s found in the ini e when the pin halui mdi command lt nr gt is activated halui will try to send the MDI command defined in the ini This will not always succeed depending on the operating mode emc2 is in e g while in AUTO halui can t successfully send MDI commands 17 3 Case Studies User descriptions of working halui and hardware EMC control panels here Chapter 18 Virtual Control Panels 18 1 Introduction Traditional machine control panels are large sheets of steel with push buttons knobs lights and sometimes meters mounted on them They have many advantages the buttons are far more rugged than a computer keyboard and large enough that you can usually operate the correct one by feel while looking elsewhere for example at the tool However they also have disadvantages The occupy a lot of panel space they are expensive and wiring them into the PC can use up a lot of I O pins That is where Virtual Control Panels come in A Virtual Control Panel VCP is a wndow on the computer screen with buttons meters switches etc When you click on a VCP button it changes the state of a HAL pin exactly as if you had pressed a physical button wired to an input pin on an I O card Likewise a VCP LED lights up when a HAL pin goes true just like a physical indicator lamp wired to an output pin on an I O card Virtual control panels are not intended to replace physical panels sometimes there is just no substitute for a big rugged o
243. s reading or writing files must be done to complete the shutdown process 12 6 Project ideas e Create an external control panel with buttons switches and indicators Connect everything to a microcontroller and connect the microcontroller to the PC using a serial interface Python has a very capable serial interface module called pyserial http pyserial sourceforge net Ubuntu package name python serial in the universe repository e Attach a LCDProc http lcdproc omnipotent net compatible LCD module and use it to display a digital readout with information of your choice Ubuntu package name ledproc in the universe repository e Create a virtual control panel using any GUI library supported by Python gtk qt wxwindows etc Part VII EMC related HAL Chapter 13 Basic configurations for a stepper based system 13 1 Introduction The preferred way to set up a standard stepper machine is with the Step Configuration Wizard See the Getting Started Guide for more information on the Step Configuration Wizard This chapter describes some of the more common settings for manually setting up a stepper based system Because of the various possibilities of configuring EMC2 it is very hard to document them all and keep this document relatively short The most common EMC2 usage is for stepper based systems These systems are using stepper motors with drives that accept step amp direction signals It is one of th
244. s that actually get things done Thread are the method used to make those instructions run when they are needed First let s look at the functions available to us halcmd show funct Exported Functions Owner CodeAddr Arg P Users Name F 03 D89051C4 D88F10FC YES 0 siggen 0 update 02 D8902868 D88F1054 YES 0 freqgen capture_position 02 D8902498 D88F1054 NO 0 freqgen make_pulses 02 D89026F0 D88F1054 YES 0 freqgen update_freq In general you will have to refer to the documentation for each component to see what its functions do In this case the function siggen 0 update is used to update the outputs of the signal gen erator Every time it is executed it calculates the values of the sine cosine triangle and square outputs To make smooth signals it needs to run at specific intervals The other three functions are related to the step pulse generators The first one freqgen capture_position is used for position feedback It captures the value of an internal counter that counts the step pulses as they are generated Assuming no missed steps this counter indicates the position of the motor The main function for the step pulse generator is freqgen make_pulses Every time make_pulses runs it decides if it is time to take a step and if so sets the outputs accordingly For smooth step pulses it should run as frequently as possible Because it needs to run so fast make_pulses is highly optimized and performs only a few calculations
245. script is available at nc_files holecircle py This script creates g code for drilling a series of holes along the circumference of a circle If the environment variable AXIS PROGRESS_BAR is set then lines written to stderr of the form FILTER_PROGRESS d will set the AXIS progress bar to the given percentage This feature should be used by any filter that runs for a long time 4 3 4 RS274NGC Section PARAMETER FILE file var The file which contains the parameters used by the interpreter saved between runs RS274NGC_STARTUP_CODE G21 G90 A siring of NC codes that the interpreter is initialized with This is not a substitute for specifying modal g codes at the top of each ngc file because the modal codes of machines differ and may be changed by g code interpreted earlier in the session 4 3 5 EMCMOT Section BASE_PERIOD 50000 HAL Base task period in nanoseconds this is the fastest thread in the machine On servo based systems there is generally no reason for BASE_PERIOD to be smaller than SERVO_PERIOD On machines with software step generation the BASE_PERIOD determines the maximum number of steps per second In the absence of long step length and step space requirements the absolute maximum step rate is one step per BASE_PERIOD Thus the BASE_PERIOD shown above gives an absolute maximum step rate of 20000 steps per second 50000ns is a fairly conservative value The smallest usable value is related to the Latency Te
246. se If you have no Invariant Sections write with no Invariant Sections instead of saying which ones are invariant If you have no Front Cover Texts write no Front Cover Texts instead of Front Cover Texts being LIST likewise for Back Cover Texts If your document contains nontrivial examples of program code we recommend releasing these examples in parallel under your choice of free software license such as the GNU General Public License to permit their use in free software Part XV Index 208 Index emcre 21 ABORT 9 ACEXIK 140 acme screw 200 ANGULAR UNITS 26 Auto 8 AXIS 5 22 axis 200 axis hal pins 36 backlash 200 backlash compensation 200 ball nut 200 ball screw 200 BASE PERIOD 25 blocks 43 Bridgeport 4 Cartesian machines 166 cd 197 Changing Directories 197 ClassicLadder 43 182 CNC 4 40 200 CNC machines 166 comments 22 coordinate measuring machine 200 CVS 4 debounce 123 dir 197 DISPLAY 22 display units 200 DRO 200 Editing a Root File 196 EDM 200 EMC 200 EMCIO 6 201 EMCMOT 201 EMCTASK 7 enable signal 101 encoder 30 43 117 201 ESTOP 9 101 feed 201 feed override 9 201 feed rate 201 feedback 201 FERROR 28 find 197 Finding a File 197 G Code 201 G code 8 gksudo 197 GNU Linux 3 GPL 4 grep 198 GUI 201 HAL 4 21 40 98 HAL inifile section 26 HAL Component 42 HAL Function 42 HAL Param
247. sent the prefix hal_ is removed from the beginning of the component name when creating pins parameters and functions In the HAL identifier for a pin or parameter denotes an array item and must be used in conjunction with a SIZE declaration The hash marks are replaced with a O padded number with the same length as the number of characters When used to create a C identifier the following changes are applied to the HALNAME o we 1 Any characters and any _ or characters immediately before them are removed e s 2 Any remaining and characters are replaced with 9 3 Repeated _ characters are changed to a single character CHAPTER 11 COMP A TOOL FOR CREATING HAL MODULES 85 A trailing _ is retained so that HAL identifiers which would otherwise collide with reserved names or keywords e g min can be used HALNAME C Identifier HAL Identifier xyz xyz X y Z X Y Z xyz X y Z x y_z_ x y_z_ X y Z x y x_y MM x MM z x x MM x MM if CONDITION An expression involving the variable personality which is nonzero when the pin or parameter should be created SIZE A number that gives the size of an array The array items are numbered from 0 to SIZE 1 MAXSIZE CONDSIZE A number that gives the maximum size of the array followed by an expres sion involving the variable personality and which always evaluates to less than
248. sequential and select what type main or subroutine Select a subroutine number SRO for exampe An empty section will be displayed and you can build your subroutine When your done that go back to the section manager and click on the your main section default name prog 1 Now you can add a CALL COIL to your program CALL COILs are to be placed at the right most position in the rung Remember to change the lable to the subroutine number you choose before There can only be one CALL COIL per rung the rest wil not be called Uf the JUMP COLL is true it should JUMP to the new rung right away and not update the rest of the coils of the current rung Part XI Hardware Examples Chapter 25 Spindle Speed Control 25 1 0 10v Spindle Speed If your spindle is controlled by a VFD with a O to 10 volt signal and your using a DAC card like the m5i20 to output the control signal First you need to figure the scale of spindle speed to control signal For this example the spindle top speed of 5000 RPM is equal to 10 volts 10 5000 0 002 so our scale factor is 0 002 We have to add a scale componet to the hal file to scale the motion spindle speed out to the O to 10 needed by the VFD if your DAC card does not do scaling loadrt scale count 1 addf scale O servo thread setp scale 0 gain 0 002 net spindle speed scale motion spindle speed out gt scale 0 in net spindle speed DAC scale 0 out gt lt your DAC pin name gt 2
249. smod when loading the module The format consists of a four character string that sets the direction of each group of pins Each character of the direction string is either I or O The first character sets the direction of port A Port A DIO 0 7 the next sets port B Port B DIO 8 15 the next sets port C Port C DIO 16 23 and the fourth sets port D Port D DIO 24 31 The model field can be used in case the driver doesn t autodetect the right card version For example loadrt hal_stg base 0x300 num_chan 4 dio IOIO This example installs the stg driver for a card found at the base address of 0x300 4 channels of encoder feedback DAC s and ADC s along with 32 bits of I O configured like this the first 8 Port A configured as Input the next 8 Port B configured as Output the next 8 Port C configured as Input and the last 8 Port D configured as Output loadrt hal_stg This example installs the driver and attempts to autodetect the board address and board model it installs 8 axes by default along with a standard I O setup Port A amp B configured as Input Port C amp D configured as Output 16 4 2 Pins e s32 stg lt channel gt counts Tracks the counted encoder ticks e FLOAT stg lt channel gt position Outputs a converted position e FLOAT stg lt channel gt dac value Drives the voltage for the corresponding DAC e FLOAT stg lt channel gt adc value Tracks the measured voltage fro
250. st result the necessary step length and the processor speed Choosing a BASE_PERIOD that is too low can lead to the Unexpected real time delay message lockups or spontaneous reboots SERVO_PERIOD 1000000 HAL Servo task period is also in nanoseconds This value will be rounded to an integer multiple of BASE_PERIOD This value is used even on systems based on stepper motors This is the rate at which new motor positions are computed following error is checked PID output values are updated and so on Most systems will not need to change this value It is the update rate of the low level motion planner TRAJ_PERIOD 1000000 HAL Trajectory Planner task period in nanoseconds This value will be rounded to an integer multiple of SERVO_PERIOD Except for machines with unusual kinematics e g hexapods there is no reason to make this value larger than SERVO_PERIOD CHAPTER 4 INI CONFIGURATION 26 4 3 6 TASK Section CYCLE_TIME 0 001 The period in seconds at which EMCTASK will run This parameter affects the polling interval when waiting for motion to complete when executing a pause instruction and when accepting a command from a user interface There is usually no need to change this number 4 3 7 HAL section HALFILE example hal Execute the file example hal at start up If HALFILE is specified multiple times the files are executed in the order they appear in the ini file Almost all configurations will h
251. stepgen lt chan gt dirhold Minmum time from the end of a step pulse to a direction change step type O only in nanoseconds CHAPTER 15 INTERNAL COMPONENTS 110 e FLOAT stepgen lt chan gt dirdelay Minmum time any step to a step in the opposite direc tion step types 1 14 only in nano seconds e s32 stepgen lt chan gt rawcounts The raw feedback count updated by make_pulses In position mode the values of maxvel and maxaccel are used by the internal position loop to avoid generating step pulse trains that the motor cannot follow When set to values that are appropriate for the motor even a large instantaneous change in commanded position will result in a smooth trapezoidal move to the new location The algorithm works by measuring both position error and velocity error and calculating an acceleration that attempts to reduce both to zero at the same time For more details including the contents of the control equation box consult the code In velocity mode maxvel is a simple limit that is applied to the commanded velocity and maxaccel is used to ramp the actual frequency if the commanded velocity changes abruptly As in position mode proper values for these parameters ensure that the motor can follow the generated pulse train 15 1 5 Step Types The step generator supports 15 different step types Step type O is the most familiar standard step and direction When configured for step type O there a
252. stepper electrical calculations Chapter 22 PID Tuning 22 1 PID Controller A proportional integral derivative controller PID controller is a common feedback loop component in industrial control systems The Controller compares a measured value from a process typically an industrial process with a reference setpoint value The difference or error signal is then used to calculate a new value for a manipulatable input to the process that brings the process measured value back to its desired setpoint Unlike simpler control algorithms the PID controller can adjust process outputs based on the history and rate of change of the error signal which gives more accurate and stable control It can be shown mathematically that a PID loop will produce accurate stable control in cases where a simple proportional control would either have a steady state error or would cause the process to oscillate 22 1 1 Control loop basics Intuitively the PID loop tries to automate what an intelligent operator with a gauge and a control knob would do The operator would read a gauge showing the output measurement of a process and use the knob to adjust the input of the process the action until the process s output measurement stabilizes at the desired value on the gauge In older control literature this adjustment process is called a reset action The position of the needle on the gauge is a measurement process value or process variab
253. t Machine units The linear and angular units used for machine configuration These units are used in the ini file HAL pins and parameters are also generally in machine units 202 MDI Manual Data Input This is a mode of operation where the controller executes single lines of G code as they are typed by the operator NIST National Institute of Standards and Technology An agency of the Department of Commerce in the United States Offsets Part Program A description of a part in a language that the controller can understand For EMC that language is RS 274 NGC commonly known as G code Program Units The linear and angular units used for part programs Rapid Fast possibly less precise motion of the tool commonly used to move between cuts If the tool meets the material during a rapid it is probably a bad thing Real time Software that is intended to meet very strict timing deadlines Under Linux in order to meet these requirements it is necessary to install RTAI or RTLINUX and build the software to run in those special environments For this reason real time software runs in kernel space RTAI Real Time Application Interface see https www rtai org one of two real time exten sions for Linux that EMC can use to achieve real time performance RTLINUX See http www rtlinux org one of two real time extensions for Linux that EMC can use to achieve real time performance RTAPI A portable interface to real time operating syste
254. t channel gt on max limit soft status pin telling joint is at the positive software limit e 817 halui joint lt channel gt on min limit hard status pin telling joint is on the negative hard ware limit switch e 817 halui joint lt channel gt on max limit hard status pin telling joint is on the positive hard ware limit switch e 817 halui joint lt channel gt fault status pin telling the joint has a fault e 817 halui joint lt channel gt homed status pin telling that the joint is homed CHAPTER 17 HALUI 150 17 2 7 Jogging lt channel gt is a number between O and 7 and selected e FLOAT halui jog speed set jog speed e 817 halui jog lt channel gt minus jog in negative direction e 817 halui jog lt channel gt plus jog in positive direction 17 2 8 Selecting a joint e U32 halui joint select select joint 0 7 internal halui e U32 halui joint selected selected joint 0 7 internal halui e BIT halui joint x select bit pins for selecting a joint internal halui e BIT halui joint x is selected bit status pin a joint is selected internal halui 17 2 9 Feed override e FLOAT halui feed override value current FO value e FLOAT halui feed override scale pin for setting the scale on changing the FO e S32 halui feed override counts counts from an encoder for example to change FO e BIT halui feed override increase pin for increasing the FO scale e BIT
255. t displays some of the variable data and variable names Notice all variable start with the sign The three edit areas at the top allow you to select what 15 variable will be displayed in each column For instance if there were 30 I variable and you entered 10 at the top of the column variable I10 to I25 would be displayed The check boxes allow you to set and un set variables but when classicladder is running hal will update the pins and change them Near the bottom are the W variables These are called word variable and represent positive and negative signed numbers and are used with compare and operate By clicking on the variable you can edit the number to display which ever you want The edit box beside it is the number stored in the variable you can change it and the drop down box beside that allow you to choose whether the number to be displayed is in hex decimal or binary The I variable represents HAL input bit pins The Q represents the relay coil and HAL output bit pins The B represents an internal relay coil or internal contact CHAPTER 24 CLASSICLADDER 185 Figure 24 1 ClassicLadder Var window 10 O BO J o Q0 O 8 O 1 Q1 O B2 0 2 Q2 O 83 0 3 Q3 O B4 OQ 4 J Q4 O Bs O I5 J Q5 O Bs g 6 Q6 O B7 0 7 Q7 O es g 8 Q8 O B9 J 9 J Q9 0 B10 J i10 O Q10 O B1l O lll Q11 O B12 12 O Q12 O B13 113 O Q13 O B14 I14 O Q14 boo fo Jrs bon fo e bara o ee paa o pe
256. t rtapi_app_main void e void rtapi_app_exit void These are the standard setup and tear down functions of RTAPI modules Part IX Tuning Chapter 21 Stepper Tuning 21 1 Getting the most out of Software Stepping Generating step pulses in software has one very big advantage it s free Just about every PC has a parallel port that is capable of outputting step pulses that are generated by the software However software step pulses also have some disadvantages e limited maximum step rate e jitter in the generated pulses e loads the CPU This chapter has some steps that can help you get the best results from software generated steps 21 1 1 Runa Latency Test The new easy way to do a latency test is described in the Getting Started Guide Latency is how long it takes the PC to stop what it is doing and respond to an external request In our case the request is the periodic heartbeat that serves as a timing reference for the step pulses The lower the latency the faster you can run the heartbeat and the faster and smoother the step pulses will be Latency is far more important than CPU speed A lowly Pentium II that responds to interrupts within 10 microseconds each and every time can give better results than the latest and fastest P4 Hyperthreading beast The CPU isn t the only factor in determining latency Motherboards video cards USB ports and a number of other things can hurt the latency The best way to find out w
257. t talk about writing a conversational or geometric interface that would allow an operator to enter programs is much the same way that several modern proprietary controls enter programs but it isn t in there yet 1 3 Computer Operating Systems The EMC2 code can be compiled on almost any GNU Linux Distribution assuming it has been patched with a real time extension In addition to the raw code some binary distributions are available The latest packages have been created around the Ubuntu GNU Linux Distribution Ubuntu is one of the distributions that is aimed at novice Linux users and has been found to be very easy to use Along with that there are lots of places around the world that offer support for it Installing EMC2 on it is trivial see section 2 2 The EMC2 will not run under a Microsoft TM operating system The reason for this is that the EMC2 requires a real time environment for the proper operation of its motion planning and stepper pulse outputs Along with that it also benefits from the much needed stability and performance of the Linux OS 1 4 History of the Software The EMC code was started by the Intelligent Systems Division at the National Institute of Standards and Technology in the United States The quotation below taken from the NIST web presence some time back should lend some understanding of the essential reasons for the existence of this software and of the NIST involvement in it As part of our NIST coll
258. t various addresses The pin is called out_ because out is an identifier used in lt asm io h gt It illustrates the use of EXTRA_SETUP and EXTRA_CLEANUP to request an I O region and then free it in case of error or when the module is unloaded CHAPTER 11 COMP A TOOL FOR CREATING HAL MODULES 90 component out8 pin out unsigned out_ Output value only low 8 bits are used param r unsigned ioaddr function _ option count_function option extra_setup option extra_cleanup option constructable no rr include lt asm io h gt define MAX 8 int io MAX 0 RTAPI_MP_ ARRAY _INT io MAX I O addresses of out8 boards int get_count void int i 0 for 1 0 i lt MAX amp amp io i i Nothing return i EXTRA_SETUP if rtapi_request_region io extra_arg 1 out8 set this I O port to 0 so that EXTRA_CLEANUP does not release the IO ports that were never requested iofextra_arg 0 return EBUSY ioaddr io extra_arg return 0 EXTRA_CLEANUP NE de for i 0 i lt MAX amp amp io i i rtapi_release_region io i 1 FUNCTION _ outb out_ ioaddr 11 13 4 hal_loop component hal_loop pin out float example This fragment of a component illustrates the use of the hal_ prefix in a component name loop is the name of a standard Linux kernel module so a loop component might not successfully
259. tal outputs e 16 dedicated digital inputs e EPP communuication with the PC 16 10 1 Pinout STEPx The step clock output of stepgen channel x DIRx The direction output of stepgen channel x INx Dedicated digital input x OUTx Dedicated digital output x GND Ground VCC 3 3V regulated DC While the extended main connector has a superset of signals usually found on a Step amp Direction DB25 connector 4 step generators 9 inputs and 6 general purpose outputs the layout on this header is different than the layout of a standard 26 pin ribbon cable to DB25 connector 16 10 2 Input latching and output updating e Step frequencies for each channel are updated at different times e Digital outputs are all updated at the same time e Digital inputs are all latched at the same time e Feedback positions for each channel are latched at different times 16 10 3 Step Waveform Timings The firmware and driver enforce step length space and direction change times Timings are rounded up to the next multiple of 1 65 with a maximum of 49 6us The timings are the same as for the software stepgen component except that dirhold and dirsetup have been merged into a single parameter dirtime which should be the maximum of the two and that the same step timings are always applied to all channels CHAPTER 16 HARDWARE DRIVERS 146 Figure 16 3 Pluto Step Pinout
260. tance and tone of each of the contributor acknowledgements and or dedications given therein L Preserve all the Invariant Sections of the Document unaltered in their text and in their titles Section numbers or the equivalent are not considered part of the section titles M Delete any section entitled Endorsements Such a section may not be included in the Modified Version N Do not retitle any existing section as Endorsements or to conflict in title with any Invariant Section If the Modified Version includes new front matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document you may at your option designate some or all of these sections as invariant To do this add their titles to the list of Invariant Sections in the Modified Version s license notice These titles must be distinct from any other section titles You may add a section entitled Endorsements provided it contains nothing but endorsements of your Mod ified Version by various parties for example statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard You may add a passage of up to five words as a Front Cover Text and a passage of up to 25 words as a Back Cover Text to the end of the list of Cover Texts in the Modified Version Only one passage of Front Cover Text and one of Back Cover Text may be added by or through arrangements made by any one entit
261. tem is a conditional item it is only legal to refer to it when its condition evalued to a nonzero value variable name For each variable variable name there is a macro which allows the name to be used on its own to refer to the variable When variable_name is an array the normal C style subscript is used variable_namelidx data If option data is specified this macro allows access to the instance data fperiod The floating point number of seconds between calls to this realtime function FOR_ALL_INSTS For userspace components This macro uses the variable struct state xinst to iterate over all the defined instances Inside the body of the loop the pin_name parameter_name and data macros work as they do in realtime functions CHAPTER 11 COMP A TOOL FOR CREATING HAL MODULES 88 11 8 Components with one function If a component has only one function and the string FUNCTION does not appear anywhere after then the portion after is all taken to be the body of the component s single function 11 9 Component Personality If a component has any pins or parameters with an if condition or maxsize condsize it is called a component with personality The personality of each instance is specified when the module is loaded Personality can be used to create pins only when needed For instance personality is used in the logic component to allow for a variable number of input pins to each
262. tep pulses in units of 100nS Applies to a group fof four consecutive PWM generators as indicated by lt channel range gt Index handling does _not_ comply with the canonical encoder interface and should be changed CHAPTER 16 HARDWARE DRIVERS 140 e u32 ppmc lt port gt stepgen lt channel range gt pulse space min Sets minimum time between pulses in units of 100nS The maximum step rate is 1 100nS pulse width pulse space min Applies to a group fof four consecutive PWM generators as indicated by lt channel range gt e FLOAT ppmc lt port gt stepgen lt channel gt scale Scaling for step pulse generator The step frequency in Hz is the absolute value of velocity scale e FLOAT ppmc lt port gt stepgen lt channel gt max vel The maximum value for velocity Commands greater than max vel will be clamped Also applies to negative values The abso lute value is clamped e FLOAT ppmc lt port gt stepgen lt channel gt frequency Actual step pulse frequency in Hz used mostly for troubleshooting e BIT ppmc lt port gt out lt channel gt invert Inverts a digital output see canonical digital output 1 16 7 3 Functions e FUNCT ppmc lt port gt read Reads all inputs digital inputs and encoder counters on one port e FUNCT ppmc lt port gt write Writes all outputs digital outputs stepgens PWMs on one port 16 8 Pluto P generalities The Plut
263. tepping no direction change the increased dirhold value has no effect It takes two periods totalling 32uS to make each step and we have the same 31 250 step per second rate that we got with the Xylotex The 11uS latency number used in this example is very good If you work through these examples with larger latency like 20 or 25uS the top step rate for both the Xylotex and the Gecko will be lower But the same formulas apply for calculating the optimum BASE_PERIOD and for tweaking dirhold or other step generator parameters 21 1 5 No Guessing For a fast AND reliable software based stepper system you cannot just guess at periods and other configuration paremeters You need to make measurements on your computer and do the math to CHAPTER 21 STEPPER TUNING 175 ensure that your drives get the signals they need To make the math easier I ve created an Open Office spreadsheet http wiki linuxcnc org uploads StepTimin You enter your latency test result and your stepper drive timing requirements and the spreadsheet calculates the optimum BASE_PERIOD Next you test the period to make sure it won t slow down or lock up your PC Finally you enter the actual period and the spreadsheet will tell you the stepgen parameter settings that are needed to meet your drive s timing requirements It also calculates the maximum step rate that you will be able to generate I ve added a few things to the spreadsheet to calculate max speed and
264. terminals perhaps only two for a simple switch or dozens 40 CHAPTER 6 INTRODUCTION 41 for a servo drive or PLC They need to be wired together The motors connect to the servo amps the limit switches connect to the controller and so on As the machine builder works on the design he creates a large wiring diagram that shows how all the parts should be interconnected When using HAL components are interconnected by signals The designer must decide which signals are needed and what they should connect 6 1 1 3 Implementation Once the wiring diagram is complete it is time to build the machine The pieces need to be acquired and mounted and then they are interconnected according to the wiring diagram In a physical system each interconnection is a piece of wire that needs to be cut and connected to the appropriate terminals HAL provides a number of tools to help build a HAL system Some of the tools allow you to connect or disconnect a single wire Other tools allow you to save a complete list of all the parts wires and other information about the system so that it can be rebuilt with a single command 6 1 1 4 Testing Very few machines work right the first time While testing the builder may use a meter to see whether a limit switch is working or to measure the DC voltage going to a servo motor He may hook up an oscilloscope to check the tuning of a drive or to look for electrical noise He may find
265. termines how many filters are in the group For example emc2 halcmd loadrt debounce cfg 1 4 2 will install three groups of filters Group O contains one filter group 1 contains four and group 2 contains two filters The default value for lt config string gt is 1 which will install a single group containing a single filter The maximum number of groups 8 as defined by MAX_GROUPS in debounce c The maximum number of filters in a group is limited only by shared memory space Each group is completely independent All filters in a single group are identical and they are all updated by the same function at the same time In the following descriptions lt G gt is the group number and lt F gt is the filter number within the group The first filter is group O filter O 15 6 2 Removing emc2 halcmd unloadrt debounce 15 6 3 Pins Each individual filter has two pins e BIT debounce lt G gt lt F gt in Input of filter lt F gt in group lt G gt e BIT debounce lt G gt lt F gt out Output of filter lt F gt in group lt C gt 15 6 4 Parameters Each group of filters has one parameter e s32 debounce lt G gt delay Filter delay for all filters in group lt G gt The filter delay is in units of thread periods The minimum delay is zero The output of a zero delay filter exactly follows its input it doesn t filter anything As delay increases longer and longer glitches are rejected If delay is
266. that is not a bit typed signal watch will show the numerical value Watch will quickly allow you to test switches or see the effect of changes that you make to EMC while using the graphical interface Watch s refresh rate is a bit slow to see stepper pulses but you can use it for these if you move an axis very slowly or in very small increments of distance If you ve used IO_Show in EMC the watch page in halshow can be setup to watch a parport much as it did The refresh rate of the watch display is much lower than Halmeter or Halscope If you need good resolution of the timing of signals these tools are much more effective CHAPTER 10 TOOLS AND UTILITIES Figure 10 4 Watch Display TkEMC a FX File View Settings Units Scripts Help HAL Show ESTOP RESET Tree View MANUAL Components VA WATCH Tool 0 Offset ad Fa ane axis ddt 0 O axis 0 amp enable out in axis 1 amp enable out out O axis 2 amp enable out iocontrol E 0 O iocontrol 0 user enable out coolant flood O iocontrol 0 emc enable in coolant mist emc enable in lube lube_level spindle brake spindle decr spee spindle forward spindle incr speed spindle on spindle reverse spindle speed in enindle lt need mut Axis Speed Chapter 11 comp a tool for creating HAL modules 11 1 Introduction Writing a HAL component can be a tedious process most of it in setup calls to rtapi_ and hal_ functions and associated error checking
267. that the software does But this License is not limited to software manuals it can be used for any textual work regardless of subject matter or whether it is published as a printed book We recommend this License principally for works whose purpose is instruction or reference 1 APPLICABILITY AND DEFINITIONS This License applies to any manual or other work that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License The Document below refers to any such manual or work Any member of the public is a licensee and is addressed as you A Modified Version of the Document means any work containing the Document or a portion of it either copied verbatim or with modifications and or translated into another language A Secondary Section is a named appendix or a front matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document s overall subject or to related matters and contains nothing that could fall directly within that overall subject For example if the 204 205 Document is in part a textbook of mathematics a Secondary Section may not explain any mathematics The relationship could be a matter of historical connection with the subject or with related matters or of legal commercial philosophical ethical or political position regarding them The Invariant Sections are certain Secondary Sectio
268. the current UNIX time or a hardware driver for the internal PC speaker 83 CHAPTER 11 COMP A TOOL FOR CREATING HAL MODULES 84 11 3 Instance creation For a singleton the one instance is created when the component is loaded For a non singleton the count module parameter determines how many numbered instances are created 11 4 Syntax A comp file consists of a number of declarations followed by on a line of its own followed by C code implementing the module s functions Declarations include e component HALNAME DOC e pin PINDIRECTION TYPE HALNAME SIZE MAXSIZE CONDSIZE if CONDITION STARTVALUE DOC e param PARAMDIRECTION TYPE HALNAME SIZE MAXSIZE CONDSIZE if CONDITION STARTVALUE DOC e function HALNAME fp nofp DOC e option OPT VALUE e variable CTYPE NAME SIZE e description DOC e see_also DOC e license LICENSE Parentheses indicate optional items A vertical bar indicates alternatives Words in CAPITALS indicate variable text as follows HALNAME An identifier When used to create a HAL identifier any underscores are replaced with dashes and any trailing dash or period is removed so that this_name_ will be turned into this name and if the name is _ then a trailing period is removed as well so that function _ gives a HAL function name like component lt num gt instead of component lt num gt If pre
269. the path each time After that you can run EMC2 by issuing emc2 src emc 3 7 Simulator To install EMC2 on a system without a real time kernel add enable simulator to the configure command line In this mode EMC2 runs as a purely userspace program No hardware can be controlled and real time scheduling is not guaranteed but the other features of HAL EMC and its various user interfaces are available When using nable run in place the sudo make setuid step is not needed 3 8 Editing and Recompiling You may need to recompile the EMC2 code for a number of reasons You may have modified the source code or you may have downloaded just a few new files To recompile do the following cd emc2 src emc2 src make amp amp sudo make install for run installed emc2 src make amp amp sudo make setuid for run in place emc2 src make for run in place simulator The build process is smart enough to only rebuild things that are affected by your changes Part V Configuration 20 Chapter 4 INI Configuration 4 1 Files Used for Configuration The EMC is configured with human readable text files All of these files can be read and edited in any of the common text file editors available with most any Linux distribution You ll need to be a bit careful when you edit these files Some mistakes will cause the start up to fail These files are read whenever the software starts up Some of them are read repeatedl
270. the same function s at the same time In the following descriptions lt chan gt is the number of a specific generator The first generator is number O 15 2 2 Removing emc2 halcmd unloadrt pwmgen 15 2 3 Pins Each PWM generator will have the following pins e FLOAT pwmgen lt chan gt value Command value in arbitrary units Will be scaled by the scale parameter see below e BIT pwmgen lt chan gt enable Enables or disables the PWM generator outputs Each PWM generator will also have some of these pins depending on the output type selected e BIT pwmgen lt chan gt pwm PWM or PDM output output types O and 1 only e BIT pwmgen lt chan gt dir Direction output output type 1 only e BIT pwmgen lt chan gt up PWM PDM output for positive input value output type 2 only e BIT pwmgen lt chan gt down PWM PDM output for negative input value output type 2 only CHAPTER 15 INTERNAL COMPONENTS 116 15 2 4 Parameters e FLOAT pwmgen lt chan gt scale Scaling factor to convert value from arbitrary units to duty cycle e FLOAT pwmgen lt chan gt pwm freq Desired PWM frequency in Hz If 0 0 generates PDM instead of PWM If set higher than internal limits next call of update_freq will set it to the internal limit If non zero and dither is false next call of update_freq will set it to the nearest integer multiple of the make_pulses function period e BIT p
271. this problem is that it can be very very rare Worst case latencies might only happen a few times a minute and the odds of bad latency happening just as the motor is changing direction are low So you get very rare errors that ruin a part every once in a while and are impossible to troubleshoot The simplest way to avoid this problem is to choose a BASE_PERIOD that is the sum of the longest timing requirement of your drive and the worst case latency of your computer If you are running a Gecko with a 20uS hold time requirement and your latency test said you have a maximum latency of 11uS then if you set the BASE_PERIOD to 20 11 31uS 31000 nano seconds in the ini file you are guaranteed to meet the drive s timing requirements But there is a tradeoff Making a step pulse requires at least two periods One to start the pulse and one to end it Since the period is 31uS it takes 2x31 62uS to create a step pulse That means CHAPTER 21 STEPPER TUNING 174 the maximum step rate is only 16 129 steps per second Not so good But don t give up yet we still have some tweaking to do in the next section For the Xylotex the setup and hold times are very short 200nS each 0 2uS The longest time is the 2us high time If you have 11uS latency then you can set the BASE_PERIOD as low as 11 2 13uS Getting rid of the long 20uS hold time really helps With a period of 13uS a complete step takes 2x13 26uS and the maximum step rate is 38 461 st
272. ts two functions Each function acts on all of the PWM generators running different generators in different threads is not supported e FUNCT pwmgen make pulses High speed function to generate PWM waveforms no floating point e FUNCT pwmgen update Low speed function to scale and limit value and handle other paremeters The high speed function pwmgen make pulses should be run in a very fast thread from 10 to 50uS depending on the capabilities of the computer That thread s period determines the maximum PWM carrier frequency as well as the resolution of the PWM or PDM signals The other function can be called at a much lower rate CHAPTER 15 INTERNAL COMPONENTS 117 15 3 Encoder This component provides software based counting of signals from quadrature encoders It is a realtime component only and depending on CPU speed etc is capable of maximum count rates of 10kHz to perhaps 50kHz Figure 15 7 is a block diagram of one channel of encoder counter capture position update counters position scale position Ll x NS rawcounts m counter phase A up dn quad count decode counts latch je phase B reset edge detect ry lt index enable phase Z encoder 0 i i i i 1 i I i 1 i 1 i i i i i i i 3 I l l i
273. turning cranks to move a cutting tool CNC uses a computer and motors to move the tool based on a part program Coordinate Measuring Machine A Coordinate Measuring Machine is used to make many accurate measurements on parts These machines can be used to create CAD data for parts where no drawings can be found when a hand made prototype needs to be digitized for mold making or to check the accuracy of machined or molded parts Display units The linear and angular units used for onscreen display DRO A Digital Read Out is a device attached to the slides of a machine tool or other device which has parts that move in a precise manner to indicate the current location of the tool with respect to some reference position Nearly all DRO s use linear quadrature encoders to pick up position information from the machine EDM EDM is a method of removing metal in hard or difficult to machine or tough metals or where rotating tools would not be able to produce the desired shape in a cost effective manner An excellent example is rectangular punch dies where sharp internal corners are desired Milling operations can not give sharp internal corners with finite diameter tools A wire EDM machine can make internal corners with a radius only slightly larger than the wire s radius A sinker EDM cam make corners with a radius only slightly larger than the radius on the corner of the convex EDM electrode EMC The Enhanced Machine Controller Initially a NI
274. types unless they are interruptable and can work in independent threads If interrupting an encoder read reading digital inputs and then resuming the encoder read will cause problems then implement a single function that does everything CHAPTER 8 GENERAL REFERENCE INFORMATION 70 8 3 2 1 Examples motenc 0 encoder read reads all encoders on the first motenc board generic8255 0 din 09 15 read reads the second 8 bit port on the first generic 8255 based digital I O board ppme 0 write writes all outputs step generators pwm DACs and digital on the first ppme board Chapter 9 Canonical Device Interfaces The following sections show the pins parameters and functions that are supplied by canonical devices All HAL device drivers should supply the same pins and parameters and implement the same behavior Note that the only the lt io type gt and lt specific name gt fields are defined for a canonical device The lt device name gt lt device num gt and lt chan num gt fields are set based on the characteristics of the real device 9 1 Digital Input The canonical digital input I O type field digin is quite simple 9 1 1 Pins e BIT in State of the hardware input e BIT in not Inverted state of the input 9 1 2 Parameters e None 9 1 3 Functions e FUNCT read Read hardware and set in and in not HAL pins 9 2 Digital Output The canonical digital output I O type field digo
275. uS long sampling at 1KHz isn t fast enough To change the sample rate click on the button that displays the record length and sample rate to bring up the Select Sample Rate dialog figure For this example we will click on the 50uS thread fast which gives us a sample rate of about 20KHz Now instead of displaying about 4 seconds worth of data one record is 4000 samples at 20KHz or about 0 20 seconds XA Select Sample Rate x Select a thread name and multiplier then click OK or Click Quit to exit HALSCOPE Thread stepgen thread Sample Period 50 3 uSec Sample Rate 19 9 KHz Thread Period siggenthread 1 01 mSec stepgenthread 50 3 uSec Multiplier 1 Record Length C 16191 samples 1 channel C 8095 samples 2 channels 4047 samples 4 channels C 2023 samples 8 channels C 1011 samples 16 channels OK Quit Figure 7 10 Sample Rate Dialog CHAPTER 7 HAL TUTORIAL 66 7 6 7 More Channels Now let s look at the step pulses Halscope has 16 channels but for this example we are using only 4 at a time Before we select any more channels we need to turn off a couple Click on the channel 2 button then click the Off button at the bottom of the Vertical box Then click on channel 3 turn if off and do the same for channel 4 Even though the channels are turned off they still remember what they are connected to and in fact we will continue to use channel 3 as the tr
276. ue from bit to u32 conv_float_s32 9 Convert a value from float to s32 conv_float_u32 9 Convert a value from float to u32 conv_s32_bit 9 Convert a value from s32 to bit conv_s32_float 9 Convert a value from u32 to bit conv_s32_u32 9 Convert a value from s32 to u32 conv_u32_bit 9 Convert a value from u32 to bit conv_u32_float 9 Convert a value from u32 to float conv_u32_s32 9 Convert a value from u32 to s32 counter 9 counts input pulses deprecated ddt 9 Compute the derivative of the input function deadzone 9 Return the center if within the threshold debounce 9 filter noisy digital inputs for more information see 15 6 edge 9 Edge detector encoder 9 software counting of quadrature encoder signals for more information see 15 3 CHAPTER 14 HAL COMPONENTS 104 encoder_ratio 9 an electronic gear to synchronize two axes estop_latch 9 ESTOP latch flipflop 9 D type flip flop freqgen 9 software step pulse generation genhexkins 9 kinematics definitions for emc2 hypot 9 Three input hypotenuse Euclidean distance calculator integ 9 Integrator kins 9 kinematics definitions for emc2 knob2float 9 Convert counts probably from an encoder to a float value limit 1 9 Limit the output signal to fall between min and max limit2 9 Limit the output signal to fall between min and max limit3 9 Limit the output signal to fall between min and max logic 9 lowpass 9 Low pass filter lut5 9 Arbitrar
277. ut If the DAC is linearized this offset is normally 0 0 The scale and offset can be used to linearize the DAC as well resulting in values that reflect the combined effects of amplifier gain DAC non linearity DAC units etc To do this follow this procedure 1 Build a calibration table for the output driving the DAC with a desired voltage and mea suring the result See table 4 3 9 2 for an example of voltage measurements 2 Do a least squares linear fit to get coefficients a b such that meas ax raw b 3 Note that we want raw output such that our measured result is identical to the com manded output This means a cmd a x raw b b raw cmd b a 4 As a result the a and b coefficients from the linear fit can be used as the scale and offset for the controller directly MAX_OUTPUT 10 HAL The maximum value for the output of the PID compensation that is written to the motor amplifier in volts The computed output value is clamped to this limit The limit is applied before scaling to raw output units The value is applied symmetrically to both the plus and the minus side CHAPTER 4 INI CONFIGURATION 30 Output Voltage Measurements Raw Measured 10 9 93 9 8 83 0 0 03 1 0 96 9 9 87 10 10 87 INPUT_SCALE 20000 HAL Specifies the number of pulses that corresponds to a move of one machine unit A second number if specified is ignored For example on a
278. ut is also very simple 9 2 1 Pins e BIT out Value to be written possibly inverted to the hardware output TAs of version 2 0 most of the HAL drivers don t quite match up to the canonical interfaces defined here In version 2 1 the drivers will be changed to match these specs 71 CHAPTER 9 CANONICAL DEVICE INTERFACES 72 9 2 2 Parameters e BIT invert If TRUE out is inverted before writing to the hardware 9 2 3 Functions e FUNCT write Read out and invert and set hardware output accordingly 9 3 Analog Input The canonical analog input I O type adcin This is expected to be used for analog to digital converters which convert e g voltage to a continuous range of values 9 3 1 Pins e FLOAT value The hardware reading scaled according to the scale and offset parameters Value input reading in hardware dependent units scale offset 9 3 2 Parameters e FLOAT scale The input voltage or current will be multiplied by scale before being output to value e FLOAT offset This will be subtracted from the hardware input voltage or current after the scale multiplier has been applied e FLOAT bit_weight The value of one least significant bit LSB This is effectively the granu larity of the input reading e FLOAT hw_offset The value present on the input when 0 volts is applied to the input pin s 9 3 3 Functions e FUNCT read Read the values of this
279. ut the sets was the building blocks metal struts and angles and plates all with regularly spaced holes You could design things and hold them together with the little screws and nuts 1The Erector Set was an invention of AC Gilbert CHAPTER 6 INTRODUCTION 45 I got my first erector set for my fourth birthday I know the box suggested a much older age than I was Perhaps my father was really giving himself a present I had a hard time with the little screws and nuts I really needed four arms one each for the screwdriver screw parts to be bolted together and nut Perseverence along with father s eventual boredom got me to where I had built every project in the booklet Soon I was lusting after the bigger sets that were also printed on that paper Working with those regular sized pieces opened up a world of construction for me and soon I moved well beyond the illustrated projects Hal components are not all the same size and shape but they allow for grouping into larger units that will do useful work In this sense they are like the parts of an Erector set Some components are long and thin They essentially connect high level commands to specific physical pins Other components are more like the rectangular platforms upon which whole machines could be built An integrator will quickly get beyond the brief examples and begin to bolt together components in ways that are unique to them 6 4 3 Tinkertoys Wooden Tinker toys had a more hum
280. utputs More complex boards can have digital inputs and outputs encoder counters pwm or step pulse generators analog to digital converters digital to analog converters or other unique capabilities The I O type is used to identify the kind of I O that a pin or parameter is associated with Ideally drivers that implement the same I O type even if for very different devices should provide a consistent set of pins and parameters and identical behavior For example all digital inputs should behave the same when seen from inside the HAL regardless of the device lUnderscores have all been removed but there are still a few instances of mixed case for example pid O Pgain instead of pid O p gain 2Most drivers do not follow these conventions as of version 2 0 This chapter is really a guide for future development 3Some devices use jumpers or other hardware to attach a specific ID to each board Ideally the driver provides a way for the user to specifically say device num O is the board with ID XXX and the device numbers always start at O However at present some drivers use the board ID directly as the device number That means it is possible to have a device number 2 without a device O This is a bug and will be fixed in version 2 1 CHAPTER 8 GENERAL REFERENCE INFORMATION 69 lt chan num gt Virtually every I O device has multiple channels and the channel number identifies one of them Like device numbers channel numbe
281. ve of the command The component exports one function for each PID loop This function performs all the calculations needed for the loop Since each loop has its own function individual loops can be included in different threads and execute at different rates e FUNCT pid lt loopnum gt do_pid_calcs Performs all calculations for a single PID loop If you want to understand the exact algorithm used to compute the output of the PID loop refer to figure 15 8 the comments at the beginning of emc2 src hal components pid c and of course to the code itself The loop calculations are in the C function calc_pid IFF2 is not currently implemented but it will be added Consider this note a FIXME for the code CHAPTER 15 INTERNAL COMPONENTS 122 15 5 Simulated Encoder The simulated encoder is exactly that It produces quadrature pulses with an index pulse at a speed controlled by a HAL pin Mostly useful for testing 15 5 1 Installing emc2 halemd loadrt sim encoder num_chan lt number gt lt number gt is the number of encoders that you want to simulate If not specified one encoder will be installed The maximum number is 8 as defined by MAX_CHAN in sim_encoder c 15 5 2 Removing emc2S halcmd unloadrt sim encoder 15 5 3 Pins e FLOAT sim encoder lt chan num gt speed The speed command for the simulated shaft e BIT sim encoder lt chan num gt phase A Quadrature output e BIT sim encoder lt cha
282. vertical line in the progress box above the screen The trigger polarity can be changed by clicking the button just below the trigger level display Note that changing the trigger position stops the scope once the position is adjusted you restart the scope by clicking the Normal button in the Run Mode box Now that we have adjusted the vertical controls and triggering the scope display looks something like figure 7 9 CHAPTER 7 HAL TUTORIAL XA HAL Oscilliscope ETE Horizontal Run Mode Trigger Zoom 500 mSec 4047 samples Normal e Normal Pos per div at 994 Hz C Single C Auto TRIGGERED Stop ENS gt vertical Level Pos E Gain Pos NANA y 1 Scale Level Po 500m diw 0 000 alala 5 lef 718 93 10 11 12 13 14 15 16 ofset Rising Selected Channel 0 000 2 Y_vel Chan Off Source Chan 3 Figure 7 9 Waveforms with Triggering CHAPTER 7 HAL TUTORIAL 65 7 6 6 Horizontal Adjustments To look closely at part of a waveform you can use the zoom slider at the top of the screen to expand the waveforms horizontally and the position slider to determine which part of the zoomed waveform is visible However sometimes simply expanding the waveforms isn t enough and you need to increase the sampling rate For example we would like to look at the actual step pulses that are being generated in our example Since the step pulses may be only 50
283. w ubuntu com 14 CHAPTER 2 INSTALLING THE EMC2 SOFTWARE 15 2 3 Other Methods You will find information about other install methods on the following web sites These methods are only needed if you have special needs or you just have to have the bleeding edge version http www linuxenc org Home of EMC2 http wiki linuxcnc org cgi bin emcinfo pl User maintained Wiki EMC2 site 2 4 EMC2 install script We also provide a simple script to install EMC2 on Ubuntu for users with an existing installation of Ubuntu It runs the commands explained in 2 5 To use it you need to e Download the script from http linuxenc org dapper emc2 install sh For Ubuntu 6 06 Save it on your Desktop Right click the icon select Properties Go to the Permissions tab and check the box for Owner Execute Close the Properties window Now double click the emc2 install sh icon and select Run in Terminal A terminal will appear and you will be asked for your password e When the installation asks if you are sure you want to install the EMC2 packages hit Enter to accept Now just allow the install to finish e When it is done you must reboot System gt Log Out gt Restart the Computer and when you log in again you can run EMC2 by selecting it on the Applications gt CNC Menu If you aren t ready to set up a machine configuration try the sim AXIS configuration it runs a simulated machine that requires no attached hardware Now that
284. we usually think about machines that are commanded to move to certain locations and perform various tasks In order to have an unified view of the machine space and to make it fit the human point of view over 3D space most of the machines if not all use a common coordinate system called the Cartesian Coordinate System The Cartesian Coordinate system is composed of 3 axes X Y Z each perpendicular to the other 2 1 When we talk about a G code program RS274NGC we talk about a number of commands GO Gl etc which have positions as parameters X Y Z These positions refer exactly to Cartesian positions Part of the EMC2 motion controller is responsible for translating those positions into positions which correspond to the machine kinematics 20 1 1 Joints vs Axes A joint of a CNC machine is a one of the physical degrees of freedom of the machine This might be linear leadscrews or rotary rotary tables robot arm joints There can be any number of joints on a certain machine For example a typical robot has 6 joints and a typical simple milling machine has only 3 There are certain machines where the joints are layed out to match kinematics axes joint O along axis X joint 1 along axis Y joint 2 along axis Z and these machines are called Cartesian machines or machines with Trivial Kinematics These are the most common machines used in milling but are not very common in other domains of machine control e g welding puma t
285. wmgen lt chan gt dither pwm If true enables dithering to achieve average PWM fre quencies or duty cycles that are unobtainable with pure PWM If false both the PWM frequency and the duty cycle will be rounded to values that can be achieved exactly e FLOAT pwmgen lt chan gt min dc Minimum duty cycle between 0 0 and 1 0 duty cycle will go to zero when disabled regardless of this setting e FLOAT pwmgen lt chan gt max dc Maximum duty cycle between 0 0 and 1 0 e FLOAT pwmgen lt chan gt curr dc Current duty cycle after all limiting and rounding read only 15 2 5 Output Types The PWM generator supports three different output types Type O has a single output pin Only positive commands are accepted negative values are treated as zero and will be affected by min dc if it is non zero Type 1 has two output pins one for the PWM PDM signal and one to indicate direction The duty cycle on the PWM pin is based on the absolute value of the command so negative values are acceptable The direction pin is false for positive commands and true for negative commands Finally type 2 also has two outputs called up and down For positive commands the PWM signal appears on the up output and the down output remains false For negative commands the PWM signal appears on the down output and the up output remains false Output type 2 is suitable for driving most H bridges 15 2 6 Functions The component expor
286. wo produce a ramp of error trip points You could think of this as a graph where one dimension is speed and the other is permitted following error As speed increases the amount of following error also increases toward the FERROR value 3This assumes there was no movement of the machine while powered off It helps on smaller machines without home switches CHAPTER 4 INI CONFIGURATION 28 FERROR 1 0 FERROR is the maximum allowable following error in machine units If the differ ence between commanded and sensed position exceeds this amount the controller disables servo calculations sets all the outputs to 0 0 and disables the amplifiers If MIN_FERROR is present in the ini file velocity proportional following errors are used Here the maximum al lowable following error is proportional to the speed with FERROR applying to the rapid rate set by TRAJIMAX_VELOCITY and proportionally smaller following errors for slower speeds The maximum allowable following error will always be greater than MIN_FERROR This prevents small following errors for stationary axes from inadvertently aborting motion Small following errors will always be present due to vibration etc The following polarity values determine how inputs are interpreted and how outputs are applied They can usually be set via trial and error since there are only two possibilities The EMC2 Servo Axis Calibration utility program in the AXIS interface menu Machine Calibration and in Tk
287. y If the Document already includes a cover text for the same cover previously added by you or by arrangement made by the same entity you are acting on behalf of you may not add another but you may replace the old one on explicit permission from the previous publisher that added the old one The author s and publisher s of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version 5 COMBINING DOCUMENTS You may combine the Document with other documents released under this License under the terms defined in section 4 above for modified versions provided that you include in the combination all of the Invariant Sections of all of the original documents unmodified and list them all as Invariant Sections of your combined work in its license notice The combined work need only contain one copy of this License and multiple identical Invariant Sections may be replaced with a single copy If there are multiple Invariant Sections with the same name but different contents make the title of each such section unique by adding at the end of it in parentheses the name of the original author or publisher of that section if known or else a unique number Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work In the combination you must combine any sections entitled History in the various origi
288. y 5 input logic function based on a look up table m7i43_hm2 9 RTAI driver for the Mesa 7i43 EPP Anything IO board with HostMot2 firmware maj3 9 Compute the majority of 3 inputs match8 9 8 bit binary match detector minmax 9 Track the minimum and maximum values of the input to the outputs motion 9 accepts NML motion commands interacts with HAL in realtime mult2 9 Product of two inputs mux2 9 Select from one of two input values mux4 9 Select from one of four input values not 9 Inverter offset 9 Adds an offset to an input and subtracts it from the feedback value oneshot 9 one shot pulse generator or2 9 Two input OR gate pid 9 proportional integral derivative controller for more information see 15 4 pluto_servo 9 Hardware driver and firmware for the Pluto P parallel port FPGA for use with ser vos pluto_step 9 Hardware driver and firmware for the Pluto P parallel port FPGA for use with step pers pwmgen 9 software PWM PDM generation for more information see 15 2 rotatekins 9 kinematics definitions for emc2 sample_hold 9 Sample and Hold CHAPTER 14 HAL COMPONENTS 105 sampler 9 sample data from HAL in real time scale 9 select8 9 8 bit binary match detector serport 9 Hardware driver for the digital I O bits of the 8250 and 16550 serial port siggen 9 signal generator for more information see 15 7 sim_encoder 9 simulated quadrature encoder for more information see 15 5 stepge
289. y children and grandchildren build with legos the same legos There are a few thousand of them in an old ratty but heavy duty cardboard box that sits in a corner of the recreation room It stays there in the open because it was too much trouble to put the box away and then get it back out for every visit and it is always used during a visit There must be Lego parts in there from a couple dozen different sets The little booklets that came with them are long gone but the magic of building with interlocking pieces all the same size is something to watch 6 5 Timing Issues In HAL Unlike the physical wiring models between black boxes that we have said that HAL is based upon simply connecting two pins with a hal signal falls far short of the action of the physical case True relay logic consists of relays connected together and when a contact opens or closes current flows or stops immediately Other coils may change state etc and it all just happens But in PLC style ladder logic it doesn t work that way Usually in a single pass through the ladder each rung is evaluated in the order in which it appears and only once per pass A perfect example is a single rung ladder with a NC contact in series with a coil The contact and coil belong to the same relay If this were a conventional relay as soon as the coil is energized the contacts begin to open and de energize it That means the contacts close again etc etc The relay becomes a buzz
290. y while the CNC is running Configuration files include INI The ini file overrides defaults that are compiled into the EMC code It also provides sections that are read directly by the Hardware Abstraction Layer HAL The hal files start up process modules and provide linkages between EMC signals and specific hardware pins VAR The var file provide a set of numbered variables parameters for use by the interpreter These values are saved from one run to another See the Parameters section of the G Code Manual TBL The tbl file saves tool information See Tool File section of the G Code Manual NML The nml file configures the communication channels used by the EMC It is normally setup to run all of the communication within a single computer but can be modified to communicate between several computers emerc This file saves user specific information and is created to save the name of the directory when the user first selects an EMC configuration Items marked HAL are used only by the sample HAL files and are suggested as a good convention Other items are used by EMC directly and must always have the section and item names given 4 2 The INI File Layout A typical INI file follows a rather simple layout that includes e comments Don t confuse a text editor with a word processor A text editor like gedit or kwrite produce files that are plain text They also produce lines of text that are separated from each other A word
291. you might see with some file browsers At the right is a tabbed notebook with tabs for show and watch Figure 10 1 Halshow Layout HAC Configuration Components SHOW WATCH Pins Parameters Loaded HAL Components te a hele d23376 i ser halem cias User halend23370 hal m5i20 pid motmod iocontrol m Test HAL command Execute Commands may be tested here but they will NOT be saved CHAPTER 10 TOOLS AND UTILITIES 78 Figure 10 2 Show Menu Components SHOW WATCH Pins Parameters Realtime Threads Signals Period FP Name Time Max Time cias 10006914 YES traj thread 0 0 ras 1005720 YES servo thread 43164 81162 A 1 n5i20 0 digital in read j traj thread 2 m5i20 0 misc update HL servo thread 3 n5120 0 encoder read base thread 4 motion command handler 5 motion controller 6 pid 0 do pid calcs 7 pid 1 do pid calcs C n5i20 0 dac write 10 nm5i20 0 digital out write 50286 NO base thread 0 0 Test HAL command Execute Commands may be tested here but they will NOT be saved The tree shows all of the major parts of a HAL In front of each is a small plus or minus sign in a box Clicking the plus will expand that tree node to display what is under it If that box shows a minus sign clicking it will close that section of the tree You can also expand or collapse the tree display using the Tree View menu at the upp
292. yped robots 20 2 Trivial Kinematics As we said there is a group of machines in which each joint is placed along one of the Cartesian axes On these machines the mapping from Cartesian space the G code program to the joint space the actual actuators of the machine is trivial It is a simple 1 1 mapping pos gt tran x joints 0 pos gt tran y joints 1 The word axes is also commonly and wrongly used when talking about CNC machines and referring to the moving directions of the machine 2Kinematics a two way function to transform from Cartesian space to joint space 166 CHAPTER 20 KINEMATICS IN EMC2 167 pos gt tran z joints 2 pos gt a joints 3 pos gt b joints 4 pos gt c joints 5 In the above code snippet one can see how the mapping is done the X position is identical with the joint 0 Y with joint 1 etc The above refers to the direct kinematics one way of the trans formation whereas the next code part refers to the inverse kinematics or the inverse way of the transformation joints 0 pos gt tran x joints 1 pos gt tran y joints 2 pos gt tran z joints 3 pos gt a joints 4 pos gt b joints 5 pos gt c As one can see it s pretty straightforward to do the transformation for a trivial kins or Cartesian machine It gets a bit more complicated if the machine is missing one of the axes 20 3 Non trivial kinematics There can be quite a few types of mac
Download Pdf Manuals
Related Search
Related Contents
「施工説明書」にしたがって正しく施工してください。 IH-101 iHeater Owner`s Manual Relatório de Atividades do LNEG EXPR/S Dale Tiffany GT10231 Instructions / Assembly dossier complet 2006-2007 - No *2065552* 2065552 Copyright © All rights reserved.
Failed to retrieve file