You can subscribe to this list here.
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(12) |
Jul
(105) |
Aug
(245) |
Sep
(165) |
Oct
(100) |
Nov
(92) |
Dec
(74) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2004 |
Jan
(179) |
Feb
(233) |
Mar
(175) |
Apr
(168) |
May
(146) |
Jun
(165) |
Jul
(18) |
Aug
(95) |
Sep
(134) |
Oct
(120) |
Nov
(51) |
Dec
(65) |
2005 |
Jan
(96) |
Feb
(100) |
Mar
(113) |
Apr
(82) |
May
(281) |
Jun
(168) |
Jul
(54) |
Aug
(72) |
Sep
(104) |
Oct
(182) |
Nov
(126) |
Dec
(133) |
2006 |
Jan
(211) |
Feb
(252) |
Mar
(291) |
Apr
(199) |
May
(345) |
Jun
(282) |
Jul
(272) |
Aug
(261) |
Sep
(287) |
Oct
(464) |
Nov
(233) |
Dec
(210) |
2007 |
Jan
(669) |
Feb
(304) |
Mar
(483) |
Apr
(150) |
May
(293) |
Jun
(215) |
Jul
(178) |
Aug
(138) |
Sep
(159) |
Oct
(301) |
Nov
(367) |
Dec
(165) |
2008 |
Jan
(171) |
Feb
(148) |
Mar
(150) |
Apr
(180) |
May
(112) |
Jun
(109) |
Jul
(196) |
Aug
(319) |
Sep
(294) |
Oct
(284) |
Nov
(399) |
Dec
(280) |
2009 |
Jan
(536) |
Feb
(454) |
Mar
(382) |
Apr
(255) |
May
(321) |
Jun
(318) |
Jul
(412) |
Aug
(226) |
Sep
(76) |
Oct
(251) |
Nov
(134) |
Dec
(101) |
2010 |
Jan
(262) |
Feb
(210) |
Mar
(219) |
Apr
(55) |
May
(180) |
Jun
(225) |
Jul
(151) |
Aug
(184) |
Sep
(54) |
Oct
(160) |
Nov
(237) |
Dec
(115) |
2011 |
Jan
(141) |
Feb
(68) |
Mar
(204) |
Apr
(329) |
May
(68) |
Jun
(34) |
Jul
(304) |
Aug
(206) |
Sep
(183) |
Oct
(121) |
Nov
(1125) |
Dec
(934) |
2012 |
Jan
(466) |
Feb
(161) |
Mar
(314) |
Apr
(63) |
May
(62) |
Jun
(53) |
Jul
(47) |
Aug
(41) |
Sep
(36) |
Oct
(108) |
Nov
(297) |
Dec
(73) |
2013 |
Jan
(236) |
Feb
(81) |
Mar
(422) |
Apr
(441) |
May
(86) |
Jun
(177) |
Jul
(146) |
Aug
(140) |
Sep
(93) |
Oct
(126) |
Nov
(133) |
Dec
(230) |
2014 |
Jan
(380) |
Feb
(233) |
Mar
(251) |
Apr
(214) |
May
(168) |
Jun
(670) |
Jul
(538) |
Aug
(459) |
Sep
(330) |
Oct
(327) |
Nov
(339) |
Dec
(456) |
2015 |
Jan
(188) |
Feb
(426) |
Mar
(186) |
Apr
(71) |
May
(151) |
Jun
(283) |
Jul
(208) |
Aug
(477) |
Sep
(148) |
Oct
(302) |
Nov
(297) |
Dec
(331) |
2016 |
Jan
(474) |
Feb
(55) |
Mar
(92) |
Apr
(118) |
May
(286) |
Jun
(751) |
Jul
(494) |
Aug
(166) |
Sep
(97) |
Oct
(216) |
Nov
(41) |
Dec
(78) |
2017 |
Jan
(148) |
Feb
(205) |
Mar
(112) |
Apr
(119) |
May
(125) |
Jun
(102) |
Jul
(242) |
Aug
(26) |
Sep
(53) |
Oct
(28) |
Nov
(38) |
Dec
(97) |
2018 |
Jan
(71) |
Feb
(49) |
Mar
(43) |
Apr
(13) |
May
(19) |
Jun
(44) |
Jul
(74) |
Aug
(30) |
Sep
(44) |
Oct
(57) |
Nov
(74) |
Dec
(34) |
2019 |
Jan
(41) |
Feb
(50) |
Mar
(30) |
Apr
(24) |
May
(44) |
Jun
(101) |
Jul
(94) |
Aug
(123) |
Sep
(101) |
Oct
(81) |
Nov
(48) |
Dec
(51) |
2020 |
Jan
(74) |
Feb
(81) |
Mar
(129) |
Apr
(310) |
May
(176) |
Jun
(97) |
Jul
(137) |
Aug
(205) |
Sep
(84) |
Oct
(71) |
Nov
(106) |
Dec
(138) |
2021 |
Jan
(117) |
Feb
(94) |
Mar
(89) |
Apr
(71) |
May
(98) |
Jun
(99) |
Jul
(67) |
Aug
(129) |
Sep
(108) |
Oct
(127) |
Nov
(115) |
Dec
(114) |
2022 |
Jan
(115) |
Feb
(85) |
Mar
(97) |
Apr
(92) |
May
(102) |
Jun
(109) |
Jul
(168) |
Aug
(230) |
Sep
(183) |
Oct
(106) |
Nov
(109) |
Dec
(146) |
2023 |
Jan
(186) |
Feb
(126) |
Mar
(99) |
Apr
(92) |
May
(158) |
Jun
(74) |
Jul
(113) |
Aug
(93) |
Sep
(84) |
Oct
(163) |
Nov
(72) |
Dec
(81) |
2024 |
Jan
(71) |
Feb
(85) |
Mar
(63) |
Apr
(50) |
May
(45) |
Jun
(28) |
Jul
(106) |
Aug
(45) |
Sep
(60) |
Oct
(44) |
Nov
(53) |
Dec
(28) |
2025 |
Jan
(87) |
Feb
(58) |
Mar
(71) |
Apr
(37) |
May
(37) |
Jun
(46) |
Jul
(74) |
Aug
(26) |
Sep
(55) |
Oct
(16) |
Nov
|
Dec
|
From: <ray...@us...> - 2003-07-19 01:26:48
|
Update of /cvsroot/emc/documents/lyx In directory sc8-pr-cvs1:/tmp/cvs-serv4001 Modified Files: Master_Developer.lyx Log Message: minor fixes Index: Master_Developer.lyx =================================================================== RCS file: /cvsroot/emc/documents/lyx/Master_Developer.lyx,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** Master_Developer.lyx 16 Jul 2003 19:53:08 -0000 1.2 --- Master_Developer.lyx 19 Jul 2003 01:26:45 -0000 1.3 *************** *** 68,73 **** Copyright (c) 2000 - 03 LinuxCNC.org \layout Standard ! \added_space_top 1in \line_top \line_bottom \pextra_type 1 \pextra_widthp 10 ! 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 --- 68,72 ---- Copyright (c) 2000 - 03 LinuxCNC.org \layout Standard ! \added_space_top 1in \line_top \line_bottom 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 *************** *** 156,160 **** \start_of_appendix ! \begin_inset Include \input{GPLD_Copyright.lyx} \end_inset --- 155,167 ---- \start_of_appendix ! \begin_inset Include \include{README.lyx} ! ! \end_inset ! ! ! \layout Standard ! ! ! \begin_inset Include \include{GPLD_Copyright.lyx} \end_inset |
From: <ray...@us...> - 2003-07-18 18:54:16
|
Update of /cvsroot/emc/documents/lyx In directory sc8-pr-cvs1:/tmp/cvs-serv31392 Modified Files: User_Gcode_Basics.lyx User_Gcode_Coordinates.lyx User_Linux.lyx User_Whatis_EMC.lyx Log Message: various updates Index: User_Gcode_Basics.lyx =================================================================== RCS file: /cvsroot/emc/documents/lyx/User_Gcode_Basics.lyx,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** User_Gcode_Basics.lyx 5 Jul 2003 01:44:29 -0000 1.1 --- User_Gcode_Basics.lyx 18 Jul 2003 18:46:07 -0000 1.2 *************** *** 27,30 **** --- 27,53 ---- G Code Basics + \layout Section + + Introduction + \layout Standard + + RS274 is commonly referred to as G-code. + G-code was developed so that people who were accustomed to turning the + handles of machine tools to make cuts could tell a motor to do the turning + for them. + If you've ever tried to cut a diagonal or an arc on a manual machine you + will appreciate the coordination that G-code can give you. + \layout Standard + + Stories have it that before G-code, coordinated motion was either done by + gearing the two axes together like you might do with a lathe for smooth + turning or facing or it was done by having a person shout out the next + position to two or more operators who would then turn the handles. + This sounds a bit like the crew chief shouting stroke, stroke, stroke for + the crew of a rowboat. + Early milling of some propellers was done this way. + \layout Subsection + + RS274D \layout Standard *************** *** 46,49 **** --- 69,75 ---- cnc control tasks. + \layout Subsubsection + + RS274NGC \layout Standard *************** *** 174,178 **** within a block of nc program just yet. These will become clear as you work your way through the definitions of ! the permissible words listed in the next unit. \layout Standard --- 200,204 ---- within a block of nc program just yet. These will become clear as you work your way through the definitions of ! the permissible words listed. \layout Standard *************** *** 237,241 **** In this chapter all examples will use explicit numbers. Expressions and unary operations are treated in the computation chapter. ! The use of parameter values or variables are a described in detail in the Using Variables chapter. --- 263,267 ---- In this chapter all examples will use explicit numbers. Expressions and unary operations are treated in the computation chapter. ! The use of parameter values or variables are described in detail in the Using Variables chapter. *************** *** 305,309 **** the chapter on canned cycles. \layout Standard ! \begin_inset Tabular --- 331,335 ---- the chapter on canned cycles. \layout Standard ! \align center \begin_inset Tabular *************** *** 753,757 **** \layout Standard ! Table 2 Words acceptable to the EMC interpreter \layout Section --- 779,783 ---- \layout Standard ! \align center Table 2 Words acceptable to the EMC interpreter \layout Section *************** *** 813,817 **** X, Y, and Z words will be accepted, as will A, B, and C. \layout Standard ! \begin_inset Tabular --- 839,843 ---- X, Y, and Z words will be accepted, as will A, B, and C. \layout Standard ! \align center \begin_inset Tabular *************** *** 988,992 **** \layout Standard ! Table 3 Definition of Common Axes \layout Section --- 1014,1018 ---- \layout Standard ! \align center Table 3 Definition of Common Axes \layout Section *************** *** 1008,1012 **** Table 4 lists the currently available g words. \layout Standard ! \begin_inset Tabular --- 1034,1038 ---- Table 4 lists the currently available g words. \layout Standard ! \align center \begin_inset Tabular *************** *** 1811,1815 **** \layout Standard ! Table 4 G Code List \layout Standard --- 1837,1841 ---- \layout Standard ! \align center Table 4 G Code List \layout Standard *************** *** 1989,1995 **** by the P number. It is an error if the P number is negative. ! \layout Comment ! G10 Description here.. \layout Subsection* --- 2015,2048 ---- by the P number. It is an error if the P number is negative. ! \layout Standard ! ! \begin_inset LatexCommand \index{G10} ! ! \end_inset ! ! To set the coordinate values for the origin of a coordinate system, program ! G10 L2 P - X- Y- Z- A- B- C-, where the P number must evaluate to an integer ! in the range 1 to 9 (corresponding to G54 to G59.3) and all axis words are ! optional. ! The coordinates of the origin of the coordinate system specified by the ! P number are reset to the coordinate values given (in terms of the absolute ! coordinate system). ! Only those coordinates for which an axis word is included on the line will ! be reset. ! ! \layout Standard ! ! The coordinate system whose origin is set by a G10 command may be active ! or inactive at the time the G10 is executed. ! ! \layout Standard ! ! Example: G10 L2 P1 x 3.5 y 17.2 sets the origin of the first coordinate system ! (the one selected by G54) to a point where X is 3.5 and Y is 17.2 (in absolute ! coordinates). ! The Z coordinate of the origin (and the coordinates for any rotational ! axes) are whatever those coordinates of the origin were before the line ! was executed. \layout Subsection* *************** *** 2040,2200 **** \layout Subsection* - Fixture Offsets (G54-G59.3) - \layout Standard ! Fixture offset are used to make a part home that is different from the absolute, ! machine coordinate system. ! This allows the part programmer to set up home positions for multiple parts. ! A typical operation that uses fixture offsets would be to mill multiple ! copies of parts on "islands" in a piece, similar to the figure below: [gcode/im ! ages/offset.jpg] ! \layout Standard ! ! ! \begin_inset Figure size 360 161 ! file /usr/share/lyx/EMC_images/offsets.eps ! width 2 5 ! flags 9 \end_inset ! \layout Standard ! ! To use fixture offsets, the values of the desired home positions must be ! stored in the control, prior to running a program that uses them. ! Once there are values assigned, a call to G54, for instance, would add ! 2 to all X values in a program. ! A call to G58 would add 2 to X values and -2 to Y values in this example. ! \layout Standard ! ! ! \begin_inset LatexCommand \index{G53} \end_inset ! G53 is used to cancel out fixture offsets. ! So, calling G53 and then G0 X0 Y0 would send the machine back to the actual ! coordinates of X=0, Y=0. \layout Standard - \pextra_type 2 \pextra_alignment 0 \pextra_widthp 100 ! G53\SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! motion in machine coordinate system \layout Standard - \pextra_type 2 \pextra_alignment 0 \pextra_widthp 100 ! \begin_inset LatexCommand \index{G54} ! ! \end_inset ! ! G54\SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! use preset work coordinate system 1 \layout Standard - \pextra_type 2 \pextra_alignment 0 \pextra_widthp 100 - ! \begin_inset LatexCommand \index{G55} ! ! \end_inset ! G55\SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! use preset work coordinate system 2 \layout Standard - \pextra_type 2 \pextra_alignment 0 \pextra_widthp 100 - - - \begin_inset LatexCommand \index{G56} - - \end_inset ! G56\SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! use preset work coordinate system 3 ! \layout Standard ! \pextra_type 2 \pextra_alignment 0 \pextra_widthp 100 ! \begin_inset LatexCommand \index{G57} \end_inset - G57\SpecialChar ~ - \SpecialChar ~ - \SpecialChar ~ - \SpecialChar ~ - \SpecialChar ~ - use preset work coordinate system 4 - \layout Standard - \pextra_type 2 \pextra_alignment 0 \pextra_widthp 100 - ! \begin_inset LatexCommand \index{G58} \end_inset - G58\SpecialChar ~ - \SpecialChar ~ - \SpecialChar ~ - \SpecialChar ~ - \SpecialChar ~ - use preset work coordinate system 5 - \layout Standard - \pextra_type 2 \pextra_alignment 0 \pextra_widthp 100 - ! \begin_inset LatexCommand \index{G59} \end_inset ! G59\SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! use preset work coordinate system 6 \layout Standard - \pextra_type 2 \pextra_alignment 0 \pextra_widthp 100 ! G59.1\SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! use preset work coordinate system 7 ! \layout Standard ! \pextra_type 2 \pextra_alignment 0 \pextra_widthp 100 ! G59.2\SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! use preset work coordinate system 8 \layout Standard - \pextra_type 2 \pextra_alignment 0 \pextra_widthp 100 ! G59.3\SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! use preset work coordinate system 9 \layout Subsection* Canned Cycles/Drill Subroutines (G80-G89) ! \layout Comment ! Look here for a complete reference. \layout Subsection* --- 2093,2192 ---- \layout Subsection* ! \begin_inset LatexCommand \index{G28} \end_inset ! \begin_inset LatexCommand \index{G30} \end_inset ! Return to Home - G28 and G30 \layout Standard ! Two home positions are defined (by parameters 5161-5166 for G28 and parameters ! 5181-5186 for G30). ! The parameter values are in terms of the absolute coordinate system, but ! are in unspecified length units. ! \layout Standard + To return to home position by way of the programmed position, program G28 + X- Y- Z- A- B- C- (or use G30). + All axis words are optional. + The path is made by a traverse move from the current position to the programmed + position, followed by a traverse move to the home position. + If no axis words are programmed, the intermediate point is the current + point, so only one move is made. + \layout Subsection* ! Tool Length Compensation - G43 and G49 \layout Standard ! Are covered in detail in the chapter on tool compensation. ! \layout Subsection* ! Cutter Radius Compensation - G40, G41, and G42 \layout Standard ! These are also covered in detail in the chapter on tool compensation. ! \layout Subsection* ! \begin_inset LatexCommand \index{G61} \end_inset ! \begin_inset LatexCommand \index{G61.1} \end_inset ! \begin_inset LatexCommand \index{G64} \end_inset ! Set Path Control Mode - G61, G61.1, and G64 \layout Standard ! Program G61 to put the machining center into exact path mode, G61.1 for exact ! stop mode, or G64 for continuous mode. ! It is OK to program for the mode that is already active. ! ! \layout Quotation ! The machining center may be put into any one of three path control modes: ! (1) exact stop mode, (2) exact path mode, or (3) continuous mode. ! In exact stop mode, the machine stops briefly at the end of each programmed ! move. ! In exact path mode, the machine follows the programmed path as exactly ! as possible, slowing or stopping if necessary at sharp corners of the path. ! In continuous mode, sharp corners of the path may be rounded slightly so ! that the feed rate may be kept up. ! See Section 3.5.14 and Section 4.3.5.3 ! \layout Quotation ! ! The canonical machining functions share with the RS274 language the simplifying ! assumption that machine dynamics can be almost ignored. ! That is, in this model, acceleration and deceleration do not occur. ! Components of the machining center can be told to move at a specific rate, ! and that rate is imagined as being achieved instantaneously. ! Stopping is also imagined as instantaneous. ! This model obviously does not correspond with reality. ! The control modes provided here provide some compensation for this lack ! of consideration of dynamics. ! \begin_float footnote \layout Standard ! From Section 2.1.2.16 of RS@&$NGC document from NIST. ! \end_float \layout Subsection* Canned Cycles/Drill Subroutines (G80-G89) ! \layout Standard ! These are treated in detail in the chapter on canned cycles. \layout Subsection* Index: User_Gcode_Coordinates.lyx =================================================================== RCS file: /cvsroot/emc/documents/lyx/User_Gcode_Coordinates.lyx,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** User_Gcode_Coordinates.lyx 5 Jul 2003 01:44:29 -0000 1.1 --- User_Gcode_Coordinates.lyx 18 Jul 2003 18:46:07 -0000 1.2 *************** *** 6,10 **** \fontscheme bookman \graphics default ! \float_placement h \paperfontsize 10 \spacing single --- 6,10 ---- \fontscheme bookman \graphics default ! \float_placement !!h \paperfontsize 10 \spacing single *************** *** 26,32 **** \layout Chapter ! G92 Offsets and Coordinate Systems \layout Standard ! (here we describe these in detail) \the_end --- 26,860 ---- \layout Chapter ! Coordinate System and G92 Offsets ! \layout Section ! ! Introduction \layout Standard ! You have seen how handy a tool length offset can be. ! Having this allows the programmer to ignore the actual tool length when ! writing a part program. ! In the same way, it is really nice to be able to find a prominent part ! of a casting or block of material and work a program from that point rather ! than having to take account of the location at which the casting or block ! will be held during the machining. ! \layout Standard ! ! This chapter introduces you to offsets as they are used by the EMC. ! These include; ! \layout Itemize ! ! machine coordinates (G53) ! \layout Itemize ! ! nine offsets (G54-G59.3) ! \layout Itemize ! ! a set of global offsets (G92). ! \layout Section ! ! The Machine Position Command (G53) ! \layout Standard ! ! Regardless of any offsets that may be in effect, putting a G53 ! \begin_inset LatexCommand \index{G53} ! ! \end_inset ! ! in a block of code tells the interpreter to go to the real or absolute ! axis positions commanded in the block. ! For example ! \layout Standard ! ! g53 g0 x0 y0 z0 ! \layout Standard ! ! will get you to the actual position where these three axes are zero. ! You might use a command like this if you have a favorite position for tool ! changes or if your machine has an auto tool changer. ! You might also use this command to get the tool out of the way so that ! you can rotate or change a part in a vice. ! ! \layout Standard ! ! G53 is not a modal command. ! It must be used on each line where motion based upon absolute machine position ! is desired. ! ! \layout Section ! ! Fixture Offsets (G54-G59.3) ! \layout Standard ! ! \begin_float fig ! \layout Standard ! \align center ! ! \begin_inset Figure size 476 213 ! file ../images/offsets.eps ! width 3 80 ! flags 9 ! ! \end_inset ! ! ! \layout Caption ! ! ! \begin_inset LatexCommand \label{fig:offsets} ! ! \end_inset ! ! Work Offsets ! \end_float ! \layout Standard ! ! Work or fixture offset are used to make a part home that is different from ! the absolute, machine coordinate system. ! This allows the part programmer to set up home positions for multiple parts. ! A typical operation that uses fixture offsets would be to mill multiple ! copies of parts on "islands" in a piece, similar to figure ! \begin_inset LatexCommand \ref{fig:offsets} ! ! \end_inset ! ! ! \layout Standard ! ! The values for offsets are stored in the VAR file that is requested by the ! INI file during the startup of an EMC. ! In our example below we'll use ! \begin_inset LatexCommand \index{G55} ! ! \end_inset ! ! G55. ! The values for each axis for G55 are stored as variable numbers. ! ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! 5241\SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! 0.000000 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! 5242\SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! 0.000000 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! 5243\SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! 0.000000 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! 5244\SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! 0.000000 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! 5245\SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! 0.000000 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! 5246\SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! 0.000000 ! \layout Standard ! ! In the VAR file scheme, the first variable number stores the X offset, the ! second the Y offset and so on for all six axes. ! There are numbered sets like this for each of the fixture offsets. ! ! \layout Standard ! ! Each of the graphical interfaces has a way to set values for these offsets. ! You can also set these values by editing the VAR file itself and then issuing ! a [reset] so that the EMC reads the new values. ! For our example let's directly edit the file so that G55 takes on the following ! values. ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! 5241\SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! 2.000000 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! 5242\SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! 1.000000 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! 5243\SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! -2.000000 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! 5244\SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! 0.000000 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! 5245\SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! 0.000000 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! 5246\SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! 0.000000 ! \layout Standard ! ! You should read this as moving the zero positions of G55 to X = 2 units, ! Y= 1 unit, and Z = -2 units away from the absolute zero position. ! \layout Standard ! ! Once there are values assigned, a call to G55 in a program block would shift ! the zero reference by the values stored. ! The following line would then move each axis to the new zero position. ! Unlike G53, G54 through G59.3 are modal commands. ! They will act on all blocks of code after one of them has been set. ! The program that might be run using figure ! \begin_inset LatexCommand \ref{fig:offsets} ! ! \end_inset ! ! would require only a single coordinate reference for each of the locations ! and all of the work to be done there. ! The following code is offered as an example of making a square using the ! G55 offsets that we set above. ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! G55 G0 x0 y0 z0 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! g1 f2 z-0.2000 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! x1 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! y1 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! x0 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! y0 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! g0 z0 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! g54 x0 y0 z0 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! m2 ! \layout Standard ! ! ! \begin_inset Quotes eld ! \end_inset ! ! But, ! \begin_inset Quotes erd ! \end_inset ! ! you say, ! \begin_inset Quotes eld ! \end_inset ! ! why is there a G54 in there near the end. ! \begin_inset Quotes erd ! \end_inset ! ! Many programmers leave the G54 coordinate system with all zero values so ! that there is a modal code for the absolute machine based axis positions. ! This program assumes that we have done that and use the ending command ! as a command to machine zero. ! It would have been possible to use g53 and arrive at the same place but ! that command would not have been modal and any commands issued after it ! would have returned to using the G55 offsets because that coordinate system ! would still be in effect. ! \layout Standard ! \pextra_type 2 \pextra_alignment 0 \pextra_widthp 100 ! ! ! \begin_inset LatexCommand \index{G54} ! ! \end_inset ! ! G54\SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! use preset work coordinate system 1 ! \layout Standard ! \pextra_type 2 \pextra_alignment 0 \pextra_widthp 100 ! ! ! \begin_inset LatexCommand \index{G55} ! ! \end_inset ! ! G55\SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! use preset work coordinate system 2 ! \layout Standard ! \pextra_type 2 \pextra_alignment 0 \pextra_widthp 100 ! ! ! \begin_inset LatexCommand \index{G56} ! ! \end_inset ! ! G56\SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! use preset work coordinate system 3 ! \layout Standard ! \pextra_type 2 \pextra_alignment 0 \pextra_widthp 100 ! ! ! \begin_inset LatexCommand \index{G57} ! ! \end_inset ! ! G57\SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! use preset work coordinate system 4 ! \layout Standard ! \pextra_type 2 \pextra_alignment 0 \pextra_widthp 100 ! ! ! \begin_inset LatexCommand \index{G58} ! ! \end_inset ! ! G58\SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! use preset work coordinate system 5 ! \layout Standard ! \pextra_type 2 \pextra_alignment 0 \pextra_widthp 100 ! ! ! \begin_inset LatexCommand \index{G59} ! ! \end_inset ! ! G59\SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! use preset work coordinate system 6 ! \layout Standard ! \pextra_type 2 \pextra_alignment 0 \pextra_widthp 100 ! ! G59.1\SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! use preset work coordinate system 7 ! \layout Standard ! \pextra_type 2 \pextra_alignment 0 \pextra_widthp 100 ! ! G59.2\SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! use preset work coordinate system 8 ! \layout Standard ! \pextra_type 2 \pextra_alignment 0 \pextra_widthp 100 ! ! G59.3\SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! use preset work coordinate system 9 ! \layout Subsection ! ! Default coordinate system ! \layout Standard ! ! One other variable in the VAR file becomes important when we think about ! offset systems. ! This variable is named 5220. ! In the default files it's value is set to 1.00000. ! This means that when the EMC starts up it should use the first coordinate ! system as its default. ! If you set this to 9.00000 it would use the nineth offset system as its ! default for startup and reset. ! Any value other than an interger (decimal really) between 1 and 9 will ! cause the EMC to fault on startup. ! ! \layout Subsection ! ! Setting coordinate system values within G-code. ! \layout Standard ! ! In the general programming chapter we listed a G10 command word. ! This command can be used to change the values of the offsets in a coordinate ! system. ! (add here) ! \layout Section ! ! G92 Offsets ! \layout Standard ! ! G92 is the most misunderstood and maligned part of EMC programming. ! The way that it works has changed just a bit from the early days to the ! current releases. ! This change has confused many users. ! It should be thought of as a temporary offset that is applied to all other ! offsets. ! ! \layout Standard ! ! In response to criticism of it, Ray Henry studied it by comparing the way ! the interpreter authors expected it to work and the way that it worked ! on his Grizzly minimill. ! The following quoted paragraphs are extracted from his paper which is available ! in several text formats in the dropbox at ! \begin_inset LatexCommand \url{http://www.linuxcnc.org} ! ! \end_inset ! ! . ! \layout Subsection ! ! The G92 commands ! \layout Standard ! ! This set of commands include; ! \layout Description ! \pextra_type 1 \pextra_widthp 5 ! ! G92 This command, when used with axis names, sets values to offset variables. ! \layout Description ! \pextra_type 1 \pextra_widthp 5 ! ! G92.1 This command sets zero values to the g92 variables. ! \layout Description ! \pextra_type 1 \pextra_widthp 5 ! ! G92.2 This command suspends but does not zero out the g92 variables. ! \layout Description ! \pextra_type 1 \pextra_widthp 5 ! ! G92.3 This command applies offset values that have been suspended. ! \layout Standard ! ! When the commands are used as described above, they will work pretty much ! as you would expect. ! \layout Quotation ! ! A user must understand the correct ways that the g92 values work. ! They are set based upon the location of each axis when the g92 command ! is invoked. ! The NIST document is clear that, ! \begin_inset Quotes eld ! \end_inset ! ! To make the ! \noun on ! ! \noun default ! current point have the coordinates ! \begin_inset Quotes erd ! \end_inset ! ! x0, y0, and z0 you would use g92 x0 y0 z0. ! G92 ! \emph on ! does not work from absolute machine coordinates ! \emph default ! . ! It works from ! \emph on ! current location ! \emph default ! . ! ! \layout Quotation ! ! G92 also works from current location as modified by any other offsets that ! are in effect when the g92 command is invoked. ! While testing for differences between work offsets and actual offsets it ! was found that a g54 offset could cancel out a g92 and thus give the appearance ! that no offsets were in effect. ! However, the g92 was still in effect for all coordinates and did produce ! expected work offsets for the other coordinate systems. ! ! \layout Quotation ! ! It is likely that the absence of home switches and proper home procedures ! will result in very large errors in the application of g92 values if they ! exist in the var file. ! Many EMC users do not have home switches in place on their machines. ! For them home should be found by moving each axis to a location and issuing ! the home command. ! When each axis is in a known location, the home command will recalculate ! how the g92 values are applied and will produce consistent results. ! Without a home sequence, the values are applied to the position of the ! machine when the EMC begins to run. ! \layout Subsection ! ! Setting G92 values ! \layout Standard ! ! There are at least two ways to set G92 values. ! \layout Itemize ! ! right mouse click on position displays of tkemc will popup a window into ! which you can type a value. ! ! \layout Itemize ! ! the g92 command ! \layout Standard ! ! Both of these work from the current location of the axis to which the offset ! is to be applied. ! ! \layout Quotation ! ! Issuing g92 x y z a b c does in fact set values to the g92 variables such ! that each axis takes on the value associated with it's name. ! These values are assigned to the current position of the machine axis. ! These results satisfy paragraphs one and two of the NIST document. ! \layout Quotation ! ! G92 commands work from current axis location and add and subtract correctly ! to give the current axis position the value assigned by the g92 command. ! The effects work even though previous offsets are in. ! \layout Standard ! ! So if the X axis is currently showing 2.0000 as its position a G92 x0 will ! set an offset of -2.0000 so that the current location of X becomes zero. ! A G92 X2 will set an offset of 0.0000 and the displayed position will not ! change. ! A G92 X5.0000 will set an offset of 3.0000 so that the current displayed ! position becomes 5.0000. ! ! \layout Subsection ! ! G92 Cautions ! \layout Standard ! ! Sometimes the values of a G92 offset get stuck in the VAR file. ! When this happens reset or a startup will cause them to become active again. ! The variables are named ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! 5211\SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! 0.000000 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! 5212\SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! 0.000000 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! 5213\SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! 0.000000 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! 5214\SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! 0.000000 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! 5215\SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! 0.000000 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! 5216\SpecialChar ~ ! \SpecialChar ~ ! \SpecialChar ~ ! 0.000000 ! \layout Standard ! ! where 5211 is the X axis offset and so on. ! If you are seeing unexpected positions as the result of a commanded move, ! or even unexpected numbers in the position displays when you start up, ! look at these variables in the VAR file and see if they contain values. ! If they do, set them to zeros and the problems should go away. ! \layout Quotation ! ! With these tests we can see that reset returns g92 to the condition that ! it had when the interpreter started up. ! The reader should note that we have established ... ! that no write of these values occurs during a normal run so if no g92 was ! set at the startup, none will be read in during a reset. ! \layout Quotation ! ! It may be that this is the heart of the problem that some have experienced ! with differences between the old and the new interpreter. ! It may well be, but I leave it to others to test, that the old interpreter ! and task programs immediately wrote values to the var file and then found ! those values during a reset. ! ! \layout Standard ! ! On the other hand, if G92 values existed in the VAR file when the EMC started ! up ! \layout Quotation ! ! ... ! starting the EMC with g92 values in the var file is that it will apply ! the values to current location of each axis. ! If this is home position and home position is set as machine zero everything ! will be correct. ! Once home has been established using real machine switches or moving each ! axis to a known home position and issuing an axis home command, g92 commands ! and values work as advertised. ! \layout Quotation ! ! These tests did not study the effect of re-reading the var file while they ! contain numbers. ! This could cause problems if g92 offsets had been removed with g92.1 but ! the var file still contained the previous numbers. ! ! \layout Standard ! ! It is this complexity that causes us to say that G92 values must be treated ! as temporary. ! They should be used to set global short term offsets. ! The G54-59.3 coordinate systems should be used whenever long lasting and ! predictable offsets are needed. ! \layout Section ! ! Sample Program Using Offsets ! \layout Standard ! ! This sample engraving project mills a set of four .1 radius circles in roughly ! a star shape around a center circle. ! We can setup the individual circle pattern like this. ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! G10 L2 P1 x0 y0 z0 (ensure that g54 is set to machine zero) ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! g0 x-.1 y0 z0 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! g1 f1 z-.25 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! g3 x-.1 y0 i.1 j0 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! g0 z0 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! m2 ! \layout Standard ! ! We can issue a set of commands to create offsets for the four other circles ! like this. ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! G10 L2 P2 x0.5 (offsets g55 x value by 0.5 inch) ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! G10 L2 P3 x-0.5 (offsets g56 x value by -0.5 inch) ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! G10 L2 P4 y0.5 (offsets g57 y value by 0.5 inch) ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! G10 L2 P5 y-0.5 (offsets g58 y value by -0.5 inch) ! \layout Standard ! ! We put these together in the following program. ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! (a program for milling five small circles in a diamond shape) ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! G10 L2 P1 x0 y0 z0 (ensure that g54 is machine zero) ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! G10 L2 P2 x0.5 (offsets g55 x value by 0.5 inch) ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! G10 L2 P3 x-0.5 (offsets g56 x value by -0.5 inch) ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! G10 L2 P4 y0.5 (offsets g57 y value by 0.5 inch) ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! G10 L2 P5 y-0.5 (offsets g58 y value by -0.5 inch) ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! g54 g0 x-.1 y0 z0 (center circle) ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! g1 f1 z-.25 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! g3 x-.1 y0 i.1 j0 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! g0 z0 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! g55 g0 x-.1 y0 z0 (first offset circle) ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! g1 f1 z-.25 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! g3 x-.1 y0 i.1 j0 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! g0 z0 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! g56 g0 x-.1 y0 z0 (second offset circle) ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! g1 f1 z-.25 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! g3 x-.1 y0 i.1 j0 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! g0 z0 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! g57 g0 x-.1 y0 z0 (third offset circle) ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! g1 f1 z-.25 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! g3 x-.1 y0 i.1 j0 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! g0 z0 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! g58 g0 x-.1 y0 z0 (fourth offset circle) ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! g1 f1 z-.25 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! g3 x-.1 y0 i.1 j0 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! g54 g0 x0 y0 z0 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! m2 ! \layout Standard ! ! Now comes the time when we might apply a set of G92 offsets to this program. ! You'll see that it is running in each case at z0. ! If the mill were at the zero position, a g92 z1.0000 issued at the head ! of the program would shift everything down an inch. ! You might also shift the whole pattern around in the XY plane by adding ! some x and y offsets with g92. ! If you do this you should add a G92.1 command just before the m2 that ends ! the program. ! If you do not, other programs that you might run after this one will also ! use that g92 offset. ! Furthermore it would save the g92 values when you shut down the EMC and ! they will be recalled when you start up again. \the_end Index: User_Linux.lyx =================================================================== RCS file: /cvsroot/emc/documents/lyx/User_Linux.lyx,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** User_Linux.lyx 5 Jul 2003 01:44:29 -0000 1.1 --- User_Linux.lyx 18 Jul 2003 18:46:07 -0000 1.2 *************** *** 504,515 **** \layout Standard ! This is in essence how the entire text mode of Linux works works. At a prompt, you enter a command and press the <enter> key. ! \layout Standard ! The command may have arguments that go along with it. Let me illustrate with the Linux equivalent of the ms-dos dir command. ! That command is ls (lower case LS). The response that I get to this command is a window full of file names. They may arranged in multiple columns, but that depends upon the size of --- 504,517 ---- \layout Standard ! This is in essence how the entire text mode of Linux works. At a prompt, you enter a command and press the <enter> key. ! Linux runs the command that you have typed in and returns a response. ! If no response is called for it will return the prompt so that you can ! enter another command. \layout Standard ! A command may have arguments that go along with it. Let me illustrate with the Linux equivalent of the ms-dos dir command. ! That Linux command is ls (lower case LS). The response that I get to this command is a window full of file names. They may arranged in multiple columns, but that depends upon the size of *************** *** 588,592 **** The fact that you entered a single word, info, and the terminal executed ! a program named info is the significant point here. There are thousands of commands. Any file marked with executable permissions is an acceptable command to --- 590,594 ---- The fact that you entered a single word, info, and the terminal executed ! a program named info is the significant point. There are thousands of commands. Any file marked with executable permissions is an acceptable command to *************** *** 606,610 **** available to users of Linux. ! Right now I can almost hear you gasp -- \begin_inset Quotes eld \end_inset --- 608,612 ---- available to users of Linux. ! Right now I can almost hear you gasp, \begin_inset Quotes eld \end_inset *************** *** 614,619 **** \end_inset ! Most all of the shells will execute a command like ls and will start a ! binary file for you. Which shell you are running becomes important if the file that you want to run is a script. --- 616,621 ---- \end_inset ! The good news is that most all of the shells will execute a command like ! ls and will start a binary file for you. Which shell you are running becomes important if the file that you want to run is a script. *************** *** 1193,1197 **** It is a good idea to use this script program when you are debugging an EMC. ! From it you can cut and past the problem lines into your email requests for help. You will need to rename the typescript file after each session if you want --- 1195,1199 ---- It is a good idea to use this script program when you are debugging an EMC. ! From it you can cut and paste the problem lines into your email requests for help. You will need to rename the typescript file after each session if you want Index: User_Whatis_EMC.lyx =================================================================== RCS file: /cvsroot/emc/documents/lyx/User_Whatis_EMC.lyx,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** User_Whatis_EMC.lyx 16 Jul 2003 19:47:20 -0000 1.2 --- User_Whatis_EMC.lyx 18 Jul 2003 18:46:07 -0000 1.3 *************** *** 6,17 **** \fontscheme bookman \graphics default ! \float_placement h \paperfontsize 10 \spacing single ! \papersize Default ! \paperpackage a4wide ! \use_geometry 0 \use_amsmath 0 \paperorientation portrait \secnumdepth 5 \tocdepth 5 --- 6,23 ---- \fontscheme bookman \graphics default ! \float_placement !!h \paperfontsize 10 \spacing single ! \papersize Custom ! \paperpackage a4 ! \use_geometry 1 \use_amsmath 0 \paperorientation portrait + \paperwidth 8.5in + \paperheight 11in + \leftmargin 1.2in + \topmargin 1in + \rightmargin 0.6in + \bottommargin 0.6in \secnumdepth 5 \tocdepth 5 *************** *** 322,325 **** --- 328,337 ---- machine kinematics routines. + \layout Standard + + The motion controllers that you will be using with your stepper motors will + most likely be steppermod or freqmod. + The ability and requirements of each of these will be described when we + get to hardware and how to configure the EMC for your specific hardware. \layout Subsection *************** *** 333,336 **** --- 345,357 ---- machine actions like lube, coolant, and spindle direction and speed. + \layout Standard + + There are a couple of versions of I/O controllers that are a part of most + every EMC release. + These are minimillio and bridgeportio. + You guessed it the one that we will be working with here is minimillio. + The hardware chapter will talk just a bit about bridgeportio in case you + want to add some of the extra features available with it to your minimill. + \layout Subsection *************** *** 409,412 **** --- 430,439 ---- input or output systems and sends blocks of canonical commands to the task and motion planning programs. + \layout Standard + + There are also at least two task controllers included in most every release + of the EMC. + These are named minimilltask and bridgeporttask. + These complement the I/O programs. \layout Section *************** *** 426,430 **** Broken tools, gouged vices, and scars are the evidence of lessons taught. ! Good part finish and close tolerances are the evidence of lessons learned. No machine, no computer program, can take the place of human experience. \layout Standard --- 453,458 ---- Broken tools, gouged vices, and scars are the evidence of lessons taught. ! Good part finish, close tolerances, and careful work are the evidence of ! lessons learned. No machine, no computer program, can take the place of human experience. \layout Standard *************** *** 435,438 **** --- 463,470 ---- It is a machine that is either waiting for your command or executing the command that you have just given it. + Throughout these pages we will give information that will help you become + a good operator of the EMC minimill. + You will need some information right up front here so that the following + pages will make sense to you. \layout Subsection *************** *** 442,446 **** When an EMC is running, there are three different major modes used for inputting ! commands, manual, auto, and mdi. Changing from one mode to another makes a big difference in the way that the EMC behaves. --- 474,479 ---- When an EMC 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 EMC behaves. *************** *** 453,457 **** \layout Standard ! In manual mode, each command is entered as a separate command. In human terms a manual command might be \begin_inset Quotes eld --- 486,490 ---- \layout Standard ! In manual mode, each command is entered as separate. In human terms a manual command might be \begin_inset Quotes eld *************** *** 470,475 **** \end_inset ! These commands are normally handled on the graphical interface by pressing ! a button with the mouse or holding down a key on the keyboard. In auto mode, a similar button or keypress might be used to load or start the running of a whole program of G-code that is stored in a file. --- 503,510 ---- \end_inset ! These are roughly equivalent to flipping a switch or turning the handwheel ! 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 keypress might be used to load or start the running of a whole program of G-code that is stored in a file. *************** *** 481,484 **** --- 516,520 ---- in motion in all modes. These include abort, estop, and feedrate override. + Commands like these are pretty self explanitory. \layout Subsection *************** *** 547,552 **** Most of this is not the topic of this book but there are a few things that you will have to understand in order to make our little minimill work for ! us. \layout Subsection --- 583,662 ---- Most of this is not the topic of this book but there are a few things that you will have to understand in order to make our little minimill work for ! us like we expect it to work. ! ! \layout Subsection ! ! Units ! \layout Standard ! ! Units can be confusing. ! A newbie recently asked, ! \begin_inset Quotes eld ! \end_inset ! ! Does it work in inches, feet, centimeters, millimeters, or what? ! \begin_inset Quotes erd ! \end_inset ! ! 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. ! ! \layout Standard ! ! At a machine level, we set each axis' units to some value using an INI variable ! that looks like this. ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! UNITS=\SpecialChar ~ ! \SpecialChar ~ ! 1 ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! or ! \layout Standard ! \pextra_type 1 \pextra_widthp 5 ! ! UNITS =\SpecialChar ~ ! \SpecialChar ~ ! 0.03937007874016 ! \layout Standard ! ! Math folk will get a clue from these numbers because the long decimal number ! is the distance represented by one millimeter if we convert it into inches. + \begin_inset Quotes eld + \end_inset + + So, + \begin_inset Quotes erd + \end_inset + + you say, + \begin_inset Quotes eld + \end_inset + + the EMC uses millimeters internally. + \begin_inset Quotes erd + \end_inset + + If we use UNITS = 1 then we have defined our user units as millimeters. + If we use UNITS = 0.03937007874016 then we have defined our user units as + inches. + Using similar maths we could set our units to most any value we wanted. + (Some of the EMC people who run vehicles with the EMC set units to kilometers + or miles.) + \layout Standard + + After we have decided upon a value for the units for an axis, we tell the + emc how may step pulses or encoder pulses it should send or read for each + unit of distance to be traveled. + Once we have done this, the EMC 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. \layout Subsection *************** *** 577,599 **** There are four kinds of configuration files: INI, NML, TBL, VAR. ! These are reflected in lower case file extensions. They may be named emc.tbl or generic.tbl but they do the same thing when they are read by the EMC as it starts up. \layout Standard ! The first, emc.ini, contains all the machine parameters such as servo gains, ! scale factors, cycle times, units, etc. and will certainly need to be edited. ! emc.nml contains communication settings for shared memory and network ports you may need to override on your system, although it is likely that you can leave these settings alone. ! tool.tbl contains the tool information such as which pocket contains which tool, and the length and diameter for each tool. ! rs274ngc.var contains variables specific to the RS-274-NGC dialect of NC code, notably for setting the persistent numeric variables for the nine work coordinate systems. - We will get into some of the details of these files as we begin to hook - up and operate our little machine. \the_end --- 687,745 ---- There are four kinds of configuration files: INI, NML, TBL, VAR. ! These are reflected in lower case file extensions to a file name. They may be named emc.tbl or generic.tbl but they do the same thing when they are read by the EMC as it starts up. + Many users copy these and name them for the specific machine that they + are editing them for. + A set of these files named Sherlinemill.ini, Sherlinemill.var, Sherlinemill.tbl + and Sherlinemill.nml are certainly more descriptive than a bunch of files + named generic. \layout Standard ! These files each contain specific information for your CNC. ! \layout Itemize ! ! emc.ini, contains all the machine parameters such as servo gains, scale factors, ! cycle times, units, etc. and will certainly need to be edited. ! ! \layout Itemize ! ! emc.nml contains communication settings for shared memory and network ports you may need to override on your system, although it is likely that you can leave these settings alone. ! ! \layout Itemize ! ! tool.tbl contains the tool information such as which pocket contains which tool, and the length and diameter for each tool. ! ! \layout Itemize ! ! rs274ngc.var contains variables specific to the RS-274-NGC dialect of NC code, notably for setting the persistent numeric variables for the nine work coordinate systems. + \layout Standard + + We'll get into some of the details of these files as we begin to hook up + and operate our little machine. + \layout Standard + + In addition to these four files, there is a standard startup file. + Back in the early days of the EMC it was common to have to start up several + different tasks in different terminal windows in order to get the EMC to + run a machine. + Each of these tasks had to be supplied a bunch of information in the form + of arguments in order to be certain that the task started the way that + we expected it to. + All of this was a tedius thing. + All of this has been replaced with the run script file. + It is named with a .run extension. + This executable script file controls the startup of all of the modules + needed to run a standard version of the EMC. + These run files are all pretty much the same. + You may want to edit the name of the ini file that will be called by the + run file that you choose to use but the rest of it can be left alone. \the_end |
From: <ray...@us...> - 2003-07-16 19:53:15
|
Update of /cvsroot/emc/documents/lyx In directory sc8-pr-cvs1:/tmp/cvs-serv6980 Modified Files: Master_Developer.lyx Master_Integrator.lyx Master_User.lyx Log Message: clean up Index: Master_Developer.lyx =================================================================== RCS file: /cvsroot/emc/documents/lyx/Master_Developer.lyx,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Master_Developer.lyx 5 Jul 2003 01:37:30 -0000 1.1 --- Master_Developer.lyx 16 Jul 2003 19:53:08 -0000 1.2 *************** *** 64,74 **** and may contain errors. - \newline - \layout Standard ! \align center Copyright (c) 2000 - 03 LinuxCNC.org \layout Standard ! \added_space_top bigskip \pextra_type 1 \pextra_widthp 10 Permission is granted to copy, distribute and/or modify this document under --- 64,72 ---- and may contain errors. \layout Standard ! \added_space_top 1in \align center Copyright (c) 2000 - 03 LinuxCNC.org \layout Standard ! \added_space_top 1in \line_top \line_bottom \pextra_type 1 \pextra_widthp 10 Permission is granted to copy, distribute and/or modify this document under Index: Master_Integrator.lyx =================================================================== RCS file: /cvsroot/emc/documents/lyx/Master_Integrator.lyx,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Master_Integrator.lyx 5 Jul 2003 01:37:30 -0000 1.1 --- Master_Integrator.lyx 16 Jul 2003 19:53:09 -0000 1.2 *************** *** 53,64 **** This handbook is a work in progress. ! To see where we are in the development of this book, see the Notes in the ! appendex entitled "Road Map." \layout Standard ! \align center ! Copyright (c) 2000 LinuxCNC.org \layout Standard ! \added_space_top bigskip \pextra_type 1 \pextra_widthp 10 ! 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 --- 53,64 ---- 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@l ! ists.sourceforge.net. \layout Standard ! \added_space_top 1in \align center ! Copyright (c) 2000-3 LinuxCNC.org \layout Standard ! \added_space_top 1in \line_top \line_bottom \noindent 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 Index: Master_User.lyx =================================================================== RCS file: /cvsroot/emc/documents/lyx/Master_User.lyx,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Master_User.lyx 5 Jul 2003 01:37:30 -0000 1.1 --- Master_User.lyx 16 Jul 2003 19:53:09 -0000 1.2 *************** *** 53,64 **** This handbook is a work in progress. ! To see where we are in the development of this book, see the Notes in the ! appendex entitled "Road Map." \layout Standard ! \align center Copyright (c) 2000-3 LinuxCNC.org \layout Standard ! \added_space_top bigskip \pextra_type 1 \pextra_widthp 10 ! 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 --- 53,64 ---- 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@l ! ists.sourceforge.net. \layout Standard ! \added_space_top 1in \align center Copyright (c) 2000-3 LinuxCNC.org \layout Standard ! \added_space_top 1in \line_top \line_bottom \noindent 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 |
From: <ray...@us...> - 2003-07-16 19:47:25
|
Update of /cvsroot/emc/documents/lyx In directory sc8-pr-cvs1:/tmp/cvs-serv5439 Modified Files: User_Whatis_EMC.lyx Log Message: added some history and how it works Index: User_Whatis_EMC.lyx =================================================================== RCS file: /cvsroot/emc/documents/lyx/User_Whatis_EMC.lyx,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** User_Whatis_EMC.lyx 5 Jul 2003 01:44:29 -0000 1.1 --- User_Whatis_EMC.lyx 16 Jul 2003 19:47:20 -0000 1.2 *************** *** 54,57 **** --- 54,94 ---- these topics are covered in greater detail. + \layout Standard + + 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. + \layout Quotation + + As part of our (NIST) collaboration with the OMAC User's Group, we have + written software 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) Methodolog + y, 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 system resources such as shared memory, semaphores, + and timers. + The RCS Library also implements a communication model, the Neutral Manufacturin + g 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 to simulations + of the machine motors. + This enables entire factories of EMC machines to be set up and run in a + computer integrated manufacturing environment. + \layout Section *************** *** 59,77 **** \layout Standard ! The Enhanced Machine Controller is a multipurpose motion control program ! that was started by the National Institute of Standards and Technology ! in the United States. Most of it has been written by employees of the Departmen ! t of Commerce and is therefore public domain code. \layout Standard ! (more history here) \layout Standard ! The files that make up the computer code are kept in a repository on www.sourcefo ! rge.net. ! They are available for anyone to download and use as they see fit. Most ! of these files are copyrighted under the GPL or GPLD license. These files ! require that you make your source of them available to your users. GPL copyright also requires that if you modify the code in that file and make a public release of your revisions, you must return your modifications --- 96,154 ---- \layout Standard ! EMCs have been installed on many machines, both with servo motors and stepper ! motors. ! Here is a sampling of the earliest applications. ! ! \layout Itemize ! ! 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 estop systems. ! ! \layout Itemize ! ! 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. ! ! \layout Itemize ! ! 4-axis Kearney & Trecker horizontal machining center at General Motors Powertrai ! n in Pontiac, MI. ! This machine ran a precursor to the full-software EMC which used a hardware ! motion control board. \layout Standard ! After these early tests, Jon Elson found the Shaver Engineering notes and ! replaced a refrigerator 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 several ! news groups. ! He continues to use that installation and has produced several boards that ! are supported by the software. ! \layout Standard ! From these early applications news of the software spread around the world. ! It is now used to control many different kinds of machines. ! More recently the Sherline company ! \begin_inset LatexCommand \url{http://www.sherline.com} ! ! \end_inset ! ! has released their first CNC mill. ! It uses a standard release of the EMC. ! ! \layout Standard ! ! The source code files that make up the controller are kept in a repository ! on www.sourceforge.net. ! They are available for anyone to download and use as they see fit. Some ! of the files are public domain while others carry a GPL or GPLD copyright. ! These files require that you make your source of them available to your ! users. GPL copyright also requires that if you modify the code in that file and make a public release of your revisions, you must return your modifications *************** *** 86,109 **** common is some variant of real time extensions for the Linux OS. In addition to the raw code, some binary distributions are available. ! Most of these are a part of the Brain Dead Install or BDI as most of us ! call them. The BDI is a complete distribution. ! They contain compatable versions of Linux, the Real-Time extensions, and pre-compiled EMC files. \layout Standard ! The EMC will not run under a normal MicroSoft (tm) operating system. The reason for this is that the EMC requires a real-time environment for ! the proper opertion of its motion planning and stepper pulse outputs. It is possible to purchase additional software that will compile the EMC code and other software that creates the real-time environment so that ! it will run with a MicroSoft (tm) operating system. The cost of these make using these operating systems difficult. \layout Standard ! It would be more cost effective to use of the the commercial CNC programs ! that have been losely based around or use parts of the EMC software or ! one of programs that are available for a DOS computer. \layout Section --- 163,187 ---- common is some variant of real time extensions for the Linux OS. In addition to the raw code, some binary distributions are available. ! Most of these are a part of the Brain Dead Install or BDI. The BDI is a complete distribution. ! They contain compatible versions of Linux, the Real-Time extensions, and pre-compiled EMC files. \layout Standard ! The EMC will not run under a normal Microsoft (TM) operating system. The reason for this is that the EMC requires a real-time environment for ! the proper operation of its motion planning and stepper pulse outputs. It is possible to purchase additional software that will compile the EMC code and other software that creates the real-time environment so that ! it will run with a Microsoft (TM) operating system. The cost of these make using these operating systems difficult. \layout Standard ! Rather than purchasing a real time component for one of the other operating ! systems, it would be more cost effective to use of the the commercial CNC ! programs that have been loosely based around or use parts of the EMC software ! or one of programs that are available for a computer that runs a DOS operating ! system. \layout Section *************** *** 111,131 **** \layout Standard ! Here is part of the official NIST ! \begin_inset LatexCommand \index{NIST} ! ! \end_inset ! ! definition: "The Enhanced Machine Controller (EMC) program is a NIST effort ! to develop and validate a specification for interfaces to open architecture ! controllers."In simpler terms, EMC is a free and open source CNC controller ! 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. \layout Standard \begin_float fig \layout Standard ! \added_space_top smallskip \added_space_bottom smallskip \align center \begin_inset Figure size 357 268 --- 189,205 ---- \layout Standard ! The Enhanced Machine Controller (EMC) 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 minimill. \layout Standard \begin_float fig \layout Standard ! \added_space_top smallskip \added_space_bottom smallskip \align center \pextra_type 3 \pextra_widthp 65 ! \begin_inset Figure size 357 268 *************** *** 146,149 **** --- 220,229 ---- Typical EMC Controlled Machine \end_float + There are four main components to the EMC 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 EMC capable of running a minimill must start some version of all four + of these components in order to completely control it. + Each component is briefly described below \layout Standard *************** *** 161,164 **** --- 241,267 ---- The EMC 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 EMC we will remind + the reader of this typical machine. + \layout Subsection + + Graphical User Interfaces + \layout Standard + + The EMC comes with several types of user interfaces: + \layout Itemize + + an interactive command-line program named emcpanel + \layout Itemize + + a character-based screen graphics program named keystick + \layout Itemize + + X Windows programs named xemc and yemc + \layout Itemize + + a Java-based GUI, emcgui + \layout Itemize + + two Tcl/Tk-based GUIs named tkemc and mini. \layout Standard *************** *** 166,175 **** \begin_float fig \layout Standard ! \added_space_top smallskip \added_space_bottom smallskip \pextra_type 3 \pextra_widthp 50 ! \begin_inset Figure size 238 223 file ../images/whatpc.eps ! width 3 40 flags 15 --- 269,349 ---- \begin_float fig \layout Standard ! \added_space_top smallskip \added_space_bottom smallskip \align center ! ! \begin_inset Figure size 416 375 ! file ../images/whaty4.eps ! width 3 70 ! flags 11 + \end_inset ! ! \layout Caption ! ! ! \begin_inset LatexCommand \label{fig:Graphical_Interface} ! ! \end_inset ! ! A Graphical Interface ! \end_float ! Tkemc and Mini are most commonly used operator interfaces. ! They 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 EMC 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 Microsoft version can be ! found in the integrators handbook. ! \layout Subsection ! ! Motion Controller EMCMOT ! \layout Standard ! ! 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 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 where their commanded position should be. ! The motion controller includes programmable software limits, interfaces ! to hardware limit and home switches. ! \layout Standard ! ! 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 ! function interface and linked in to replace the default 3-axis Cartesian ! machine kinematics routines. ! ! \layout Subsection ! ! Discrete I/O Controller EMCIO ! \layout Standard ! ! 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. ! The INI file can be used with an aupiliary parallel port to control some ! machine actions like lube, coolant, and spindle direction and speed. ! ! \layout Subsection ! ! Task Executor EMCTASK ! \layout Standard ! ! \begin_float fig ! \layout Standard ! \added_space_top smallskip \added_space_bottom smallskip \align center \pextra_type 3 \pextra_widthp 70 ! ! ! \begin_inset Figure size 357 334 file ../images/whatpc.eps ! width 3 60 flags 15 *************** *** 186,189 **** --- 360,386 ---- Emc Process Diagram \end_float + 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 handwheel are coded into blocks. + If a machinist wanted his mill to move an inch in the +X direction at some + feedrate, he might slowly turn the handwheel five turns clockwise in 20 + seconds. + The same machinist programming that same move in the language of CNC's + might write the following block of code. + \layout Standard + + + \emph on + G1 F3 X1.000 + \layout Standard + + G1 means that the machine is supposed to run at a programmed feedrate rather + than at the fastest speed that it can. + (G0) The F3 means that it should travel at 3 inches a minute or 3 milimeters + a minute if it is working in metric mode. + The X1.000 assumes that the machine started at zero and is supposed to go + one inch in the positive direction. + You will read quite a bit more about G-code in the programming chapters. \layout Standard *************** *** 201,205 **** . The actual G-code can be sent using the MDI (Machine Device Interface) ! mode or it can be sent as a file when the macine is in Auto mode. These choices are made by the operator and entered using one of the Graphical User Interfaces available with the software. --- 398,402 ---- . 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. *************** *** 212,252 **** input or output systems and sends blocks of canonical commands to the task and motion planning programs. ! \layout Standard ! \begin_float fig \layout Standard - \added_space_top smallskip \added_space_bottom smallskip \align center ! \begin_inset Figure size 357 322 ! file ../images/whaty4.eps ! width 3 60 ! flags 11 \end_inset ! \layout Caption ! \begin_inset LatexCommand \label{fig:Graphical_Interface} \end_inset ! A Graphical Interface ! \end_float ! \layout Standard ! \align left ! The GUI for EMC (see figure ! \begin_inset LatexCommand \ref{fig:Graphical_Interface} ! \end_inset ! ) comes in many variations, text based, X Windows ! \begin_inset LatexCommand \index{Windows} \end_inset ! , Tcl/Tk, Java, etc... ! The user interface for EMC can easily be customized by users. \the_end --- 409,599 ---- input or output systems and sends blocks of canonical commands to the task and motion planning programs. ! \layout Section ! Thinking Like a Machine Operator \layout Standard ! This book will not even pretend that it can teach you to run a mill or a ! lathe. ! Becoming a machinist takes time and hard work. ! An author once said, ! \begin_inset Quotes eld ! \end_inset + We learn from experience, if at all. + \begin_inset Quotes erd \end_inset + Broken tools, gouged vices, and scars are the evidence of lessons taught. + Good part finish and close tolerances are the evidence of lessons learned. + No machine, no computer program, can take the place of human experience. + \layout Standard ! As you begin to work with the EMC program, you will need to place yourself ! in the position of operator. ! You need to think of yourself in the role of the one in charge of a machine. ! It is a machine that is either waiting for your command or executing the ! command that you have just given it. ! ! \layout Subsection + Modes of Operation + \layout Standard ! When an EMC is running, there are three different major modes used for inputting ! commands, manual, auto, and mdi. ! Changing from one mode to another makes a big difference in the way that ! the EMC 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. ! ! \layout Standard + In manual mode, each command is entered as a separate command. + In human terms a manual command might be + \begin_inset Quotes eld \end_inset ! turn on coolant ! \begin_inset Quotes erd \end_inset ! or ! \begin_inset Quotes eld ! \end_inset + jog X at 25 inches per minute. + \begin_inset Quotes erd \end_inset ! These commands are normally handled on the graphical interface by pressing ! a button with the mouse or holding down a key on the keyboard. ! In auto mode, a similar button or keypress 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 <return> or <enter> key on the keyboard. ! \layout Standard ! ! Some motion control commands are available and will cause the same changes ! in motion in all modes. ! These include abort, estop, and feedrate override. ! \layout Subsection ! ! Information Display ! \layout Standard ! ! While an EMC is running, each of the modules keeps up a dialog with each ! other 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 operator to understand. ! Perhaps the most important display is the mode the EMC is running in. ! You will want to keep your eye on the mode display. ! \layout Standard ! ! Right up there with mode 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. ! ! \layout Description ! \pextra_type 1 \pextra_widthp 5 ! ! Machine This is the position of an axis relative to the place where it started ! or was homed. ! \layout Description ! \pextra_type 1 \pextra_widthp 5 ! ! Relative This is the position of an axis after work or tool or other offsets ! have been applied ! \layout Description ! \pextra_type 1 \pextra_widthp 5 ! ! Actual This is the real position of the axis within the machine or relative ! system. ! \layout Description ! \pextra_type 1 \pextra_widthp 5 ! ! Commanded This is where the axis is commanded to be. ! \layout Standard ! ! 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 pulse. ! ! \layout Standard ! ! It is also important to see any messages or error codes sent by the EMC. ! These are used by operators if they need to be reminded to change a tool, ! to clear up problems in G-code programs, or to find out why the machine ! stopped running. ! \layout Standard ! ! As you work your way through this text, you will be learning, bit by bit ! how to setup and run a machine with your copy of the EMC software. ! While you are learning about setting up and running a minimill here, you ! will be thinking of other applications and other capabilities. ! These are the topics of the other LinuxCNC.org handbooks. ! \layout Section ! ! Thinking Like An Integrator ! \layout Standard ! ! The biggest task of a machine integrator is figuring out how to connect ! a PC running the EMC to a machine. ! Most of this is not the topic of this book but there are a few things that ! you will have to understand in order to make our little minimill work for ! us. ! ! \layout Subsection ! ! Some things we may not want to change. ! \layout Standard ! ! Within the EMC code are a few things that are not easily changed. ! We call these defaults. ! There are pins on the parallel port that have dedicated functions. ! There are connections that have been made between the running components ! of the EMC that we can not easily change. ! We'll see that there are displays and buttons and keyboard keys that are ! not easily shifted about. ! We'll learn about and get used to these in the chapters ahead. ! \layout Subsection ! ! Some things we will need to change. ! ! \layout Standard ! ! The EMC is configured with files that are read at startup and used to override ! the compiled defaults. ! No real controller will likely use the compiled defaults, so you will certainly ! need to edit at least some of these files to reflect the specifics of your ! machine. ! ! \layout Standard ! ! There are four kinds of configuration files: INI, NML, TBL, VAR. ! These are reflected in lower case file extensions. ! They may be named emc.tbl or generic.tbl but they do the same thing when ! they are read by the EMC as it starts up. ! ! \layout Standard ! ! The first, emc.ini, contains all the machine parameters such as servo gains, ! scale factors, cycle times, units, etc. ! and will certainly need to be edited. ! emc.nml contains communication settings for shared memory and network ports ! you may need to override on your system, although it is likely that you ! can leave these settings alone. ! tool.tbl contains the tool information such as which pocket contains which ! tool, and the length and diameter for each tool. ! rs274ngc.var contains variables specific to the RS-274-NGC dialect of NC ! code, notably for setting the persistent numeric variables for the nine ! work coordinate systems. ! We will get into some of the details of these files as we begin to hook ! up and operate our little machine. \the_end |
From: <ray...@us...> - 2003-07-16 14:27:23
|
Update of /cvsroot/emc/documents/lyx In directory sc8-pr-cvs1:/tmp/cvs-serv5574 Modified Files: User_GUI_Mini.lyx Log Message: minor graphic changes Index: User_GUI_Mini.lyx =================================================================== RCS file: /cvsroot/emc/documents/lyx/User_GUI_Mini.lyx,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** User_GUI_Mini.lyx 15 Jul 2003 19:11:51 -0000 1.2 --- User_GUI_Mini.lyx 16 Jul 2003 14:27:20 -0000 1.3 *************** *** 317,322 **** \align center ! \begin_inset Figure size 491 139 file ../images/miniman.eps flags 9 --- 317,323 ---- \align center ! \begin_inset Figure size 476 134 file ../images/miniman.eps + width 3 80 flags 9 *************** *** 434,439 **** \align center ! \begin_inset Figure size 492 136 file ../images/miniauto.eps flags 9 --- 435,441 ---- \align center ! \begin_inset Figure size 476 131 file ../images/miniauto.eps + width 3 80 flags 9 |
From: <ray...@us...> - 2003-07-16 14:25:03
|
Update of /cvsroot/emc/documents/lyx In directory sc8-pr-cvs1:/tmp/cvs-serv4966 Modified Files: User_Hardware.lyx Log Message: added pico and vigilant Index: User_Hardware.lyx =================================================================== RCS file: /cvsroot/emc/documents/lyx/User_Hardware.lyx,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** User_Hardware.lyx 5 Jul 2003 01:44:29 -0000 1.1 --- User_Hardware.lyx 16 Jul 2003 14:25:00 -0000 1.2 *************** *** 29,37 **** \layout Standard ! This section briefly describes how you can connect the EMC to your equipment. ! We assume here a stepper motor driven minimill with at most home and limit switches. ! For more detailed information on connecting to hardware you should also ! read the relevant sections in the Integrators Handbook \layout Section --- 29,46 ---- \layout Standard ! This section briefly describes how to connect the EMC to your equipment. ! We assume here a step and direction driven minimill. ! This could include stepper motors or servo motors driven by step and direction ! amplifiers. ! A brief note is included to direct the curious toward more information ! about using servo systems with the EMC. ! ! \layout Standard ! ! The mill we are considering in this chapter includes at most home and limit switches. ! For more detailed information on connecting to more advanced hardware you ! should also read the relevant sections in the Integrators Handbook. ! \layout Section *************** *** 6429,6445 **** \layout Section ! Servo To Go \layout Standard ! For machines that use servo motors, one option is to use the servo motor ! interface card from \begin_inset LatexCommand \url[Servo To Go Inc]{http://servotogo.com} \end_inset - . - - \layout Comment ! . \the_end --- 6438,6484 ---- \layout Section ! Servo Systems \layout Standard ! A step and direction servo amplifier like the Gecko or Rutex can be used ! like the stepper systems described above. ! The EMC is also capable of running servo motors in a closed loop setup ! where it reads encoders or scales attached to an axis and provides analog ! signals for velocity or current amplifiers. ! A project like this requires the use of additional hardware to read input ! and send analog signals. ! \layout Standard ! ! The following vendors have additional hardware that has been tested with ! the EMC. ! ! \layout Itemize ! ! Servo To Go -- \begin_inset LatexCommand \url[Servo To Go Inc]{http://servotogo.com} \end_inset ! \layout Itemize ! ! Pico Systems -- ! \begin_inset LatexCommand \url{http://pico-systems.com/PPMC.html} ! ! \end_inset ! ! ! \layout Itemize ! ! Vigilant Technologies ! \begin_inset LatexCommand \url{www.vigproducts.com} ! ! \end_inset ! ! ! \layout Standard ! ! These systems are not difficult to use with the EMC. ! Information about the integration of any of these products is available ! in the integrators handbook. \the_end |
From: <ray...@us...> - 2003-07-15 19:49:04
|
Update of /cvsroot/emc/documents/images In directory sc8-pr-cvs1:/tmp/cvs-serv19363 Added Files: mini01.eps mini01.png mini02.eps mini02.png miniauto.eps miniauto.png minibkplot.eps minibkplot.png miniedit.eps miniedit.png miniman.eps miniman.png minioffsets.eps minioffsets.png minitool.eps minitool.png Log Message: images for User_GUI_Mini.lyx --- NEW FILE: mini01.eps --- %!PS-Adobe-3.0 EPSF-3.0 %%Creator: (ImageMagick) %%Title: (mini01.eps) %%CreationDate: (Mon Jul 14 20:20:43 2003) %%BoundingBox: 0 0 714 541 %%DocumentData: Clean7Bit %%LanguageLevel: 1 %%Pages: 1 %%EndComments %%BeginDefaults %%PageOrientation: Portrait %%EndDefaults %%BeginProlog % % Display a color image. The image is displayed in color on % Postscript viewers or printers that support color, otherwise % it is displayed as grayscale. [...11009 lines suppressed...] 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000010b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b end %%PageTrailer %%Trailer %%EOF --- NEW FILE: mini01.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: mini02.eps --- %!PS-Adobe-3.0 EPSF-3.0 %%Creator: (ImageMagick) %%Title: (mini02.eps) %%CreationDate: (Mon Jul 14 20:20:58 2003) %%BoundingBox: 0 0 714 541 %%DocumentData: Clean7Bit %%LanguageLevel: 1 %%Pages: 1 %%EndComments %%BeginDefaults %%PageOrientation: Portrait %%EndDefaults %%BeginProlog % % Display a color image. The image is displayed in color on % Postscript viewers or printers that support color, otherwise % it is displayed as grayscale. [...11011 lines suppressed...] 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000000000000000000000000 00000000000000000000010a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a0a end %%PageTrailer %%Trailer %%EOF --- NEW FILE: mini02.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: miniauto.eps --- %!PS-Adobe-3.0 EPSF-3.0 %%Creator: (ImageMagick) %%Title: (miniauto.eps) %%CreationDate: (Tue Jul 15 13:28:12 2003) %%BoundingBox: 0 0 492 136 %%DocumentData: Clean7Bit %%LanguageLevel: 1 %%Pages: 1 %%EndComments %%BeginDefaults %%PageOrientation: Portrait %%EndDefaults %%BeginProlog % % Display a color image. The image is displayed in color on % Postscript viewers or printers that support color, otherwise % it is displayed as grayscale. [...2137 lines suppressed...] 1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f 1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1f1919 191919191919191919191919191919191919191919191919191919191919191919191919 191919191919191919191919191919191919191919191919191919191919191919191919 191919191919191919191919191919191919191919191919191919191919191919191919 191919191919191919191919191919191919191919191919191919191919191919191919 191919191919191919191919191919191919191919191919191919191919191919191919 191919191919191919191919191919191919191919191919191919191919191919191919 191919191919191919191919191919191919191919191919191919191919191919191919 191919191919191919191919191919191919191919191919191919191919191919191919 191919191919191919191919191919191919191919191919191919191919191919191919 191919191919191919191919191919191919191919191919191919191919191919191919 191919191919191919191919191919191919191919191919191919191919191919191919 191919191919191919191919191919191919191919191919191919191919191919191919 191919191919191919191919191919191919191919191919191919191919191919191919 191919191919191919191919191919191919191919191919 end %%PageTrailer %%Trailer %%EOF --- NEW FILE: miniauto.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: minibkplot.eps --- %!PS-Adobe-3.0 EPSF-3.0 %%Creator: (ImageMagick) %%Title: (minibkplot.eps) %%CreationDate: (Tue Jul 15 11:23:20 2003) %%BoundingBox: 0 0 557 348 %%DocumentData: Clean7Bit %%LanguageLevel: 1 %%Pages: 1 %%EndComments %%BeginDefaults %%PageOrientation: Portrait %%EndDefaults %%BeginProlog % % Display a color image. The image is displayed in color on % Postscript viewers or printers that support color, otherwise % it is displayed as grayscale. [...5670 lines suppressed...] 282525252525252525252525252525252525252525252525252525252525252525252525 252525252525252525252525252525252525252525252525252525252525252525252525 252525252525252525252525252525252525252525252525252525252525252525252525 252525252525252525252525252525252525252525252525252525252525252525252525 252525252525252525252525252525252525252525252525252525252525252525252525 252525252525252525252525252525252525252525252525252525252525252525252525 252525252525252525252525252525252525252525252525252525252525252525252525 252525252525252525252525252525252525252525252525252525252525252525252525 252525252525252525252525252525252525252525252525252525252525252525252525 252525252525252525252525252525252525252525252525252525252525252525252525 252525252525252525252525252525252525252525252525252525252525252525252525 252525252525252525252525252525252525252525252525252525252525252525252525 252525252525252525252525252525252525252525252525252525252525252525252525 252525252525252525252525252525252525252525252525252525252525252525252525 252525252525252525252525252525252525252525252525252525252525252525252525 2525252525251f1f02020c00 end %%PageTrailer %%Trailer %%EOF --- NEW FILE: minibkplot.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: miniedit.eps --- %!PS-Adobe-3.0 EPSF-3.0 %%Creator: (ImageMagick) %%Title: (miniedit.eps) %%CreationDate: (Tue Jul 15 12:46:16 2003) %%BoundingBox: 0 0 497 320 %%DocumentData: Clean7Bit %%LanguageLevel: 1 %%Pages: 1 %%EndComments %%BeginDefaults %%PageOrientation: Portrait %%EndDefaults %%BeginProlog % % Display a color image. The image is displayed in color on % Postscript viewers or printers that support color, otherwise % it is displayed as grayscale. [...4696 lines suppressed...] 212121212121212121212121212121212121212121212121212121212121212121212121 212121212121212121212121212121012219192121212121212121212122191902020a21 210119212121212121212121212121212121212121212121212121212121212121212121 212121212121212121212121212121212121212121212121212121212121212121212121 212121212121212121212121212121212121212121212121212121212121212121212121 212121212121212121212121212121212121212121212121212121212121212121212121 212121212121212121212121212121212121212121212121212121212121212121212121 212121212121212121212121212121212121212121212121212121212121212121212121 212121212121212121212121212121212121212121212121212121212121212121212121 212121212121212121212121212121212121212121212121212121212121212121212121 212121212121212121212121212121212121212121212121212121212121212121212121 212121212121212121212121212121212121212121212121212121212121212121212121 212121212121212121212121212121212121212121212121212121212121212121212121 212121212121212121212121212121212121212121212121212121212121212121212121 212121212121212121212121212121212121212121212121212121212121212121212121 2121212121212121012219212121212121212121212122191902020a end %%PageTrailer %%Trailer %%EOF --- NEW FILE: miniedit.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: miniman.eps --- %!PS-Adobe-3.0 EPSF-3.0 %%Creator: (ImageMagick) %%Title: (miniman.eps) %%CreationDate: (Tue Jul 15 13:27:52 2003) %%BoundingBox: 0 0 491 139 %%DocumentData: Clean7Bit %%LanguageLevel: 1 %%Pages: 1 %%EndComments %%BeginDefaults %%PageOrientation: Portrait %%EndDefaults %%BeginProlog % % Display a color image. The image is displayed in color on % Postscript viewers or printers that support color, otherwise % it is displayed as grayscale. [...2176 lines suppressed...] 191919191919191919191919191919191919191919191919191919191919191919191919 191919191919191919191919191919191919191919191919191919191919191919191919 191919191919191919191919191919191919191919191919191919191919191919191919 191919191919191919191919191919191919191919191919191919191919191919191919 191919191919191919191919191919191919191919191919191919191919191919191919 191919191919191919191919191919191919191919191919191919191919191919191919 191919191919191919191919191919191919191919191919191919191919191919191919 191919191919191919191919191919191919191919191919191919191919191919191919 191919191919191919191919191919191919191919191919191919191919191919191919 191919191919191919191919191919191919191919191919191919191919191919191919 191919191919191919191919191919191919191919191919191919191919191919191919 191919191919191919191919191919191919191919191919191919191919191919191919 191919191919191919191919191919191919191919191919191919191919191919191919 191919191919191919191919191919191919191919191919191919191919191919191919 191919191919191919191919191919191919191919191919191919191919191919191919 1919191919191919191919191919191919191919191919191919191919 end %%PageTrailer %%Trailer %%EOF --- NEW FILE: miniman.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: minioffsets.eps --- %!PS-Adobe-3.0 EPSF-3.0 %%Creator: (ImageMagick) %%Title: (minioffsets.eps) %%CreationDate: (Tue Jul 15 11:44:51 2003) %%BoundingBox: 0 0 477 294 %%DocumentData: Clean7Bit %%LanguageLevel: 1 %%Pages: 1 %%EndComments %%BeginDefaults %%PageOrientation: Portrait %%EndDefaults %%BeginProlog % % Display a color image. The image is displayed in color on % Postscript viewers or printers that support color, otherwise % it is displayed as grayscale. [...4177 lines suppressed...] 202020202020202020202020202020202020202020202020202020202020202020202020 202020202020202020202020202020202020202020202020202020202020202020202020 202020202020202020202020202020202020202020202020202020202020202020202020 202020202020202020202020202020202020202020202020202020202020202020202020 202020202020202020202020202020202020202020202020202020202020202020202020 202020202020202020202020202020202020202020202020202020202020202020202020 202020202020202020202020202020202020202020202020202020202020202020202020 202020202020202020202020202020202020202020202020202020202020202020202020 202020202020202020202020202020202020202020202020202020202020202020202020 202020202020202020202020202020202020202020202020202020202020202020202020 202020202020202020202020202020202020202020202020202020202020202020202020 202020202020202020202020202020202020202020202020202020202020202020202020 202020202020202020202020202020202020202020202020202020202020202020202020 202020202020202020202020202020202020202020202020202020202020202020202020 202020202020202020202020202020202020202020202020202020202020202020202020 202020202020202020202020202020202020 end %%PageTrailer %%Trailer %%EOF --- NEW FILE: minioffsets.png --- (This appears to be a binary file; contents omitted.) --- NEW FILE: minitool.eps --- %!PS-Adobe-3.0 EPSF-3.0 %%Creator: (ImageMagick) %%Title: (minitool.eps) %%CreationDate: (Tue Jul 15 12:45:54 2003) %%BoundingBox: 0 0 431 226 %%DocumentData: Clean7Bit %%LanguageLevel: 1 %%Pages: 1 %%EndComments %%BeginDefaults %%PageOrientation: Portrait %%EndDefaults %%BeginProlog % % Display a color image. The image is displayed in color on % Postscript viewers or printers that support color, otherwise % it is displayed as grayscale. [...2986 lines suppressed...] 202020202020202020202020202020202020202020202020202020202020202020202020 202020202020202020202020202020202020202020202020202020202020202020202020 202020202020202020202020202020202020202020202020202020202020202020202020 202020202020202020202020202020202020202020202020202020202020202020202020 202020202020202020202020202020202020202020202020202020202020202020202020 202020202020202020202020202020202020202020202020202020202020202020202020 202020202020202020202020202020202020202020202020202020202020202020202020 202020202020202020202020202020202020202020202020202020202020202020202020 202020202020202020202020202020202020202020202020202020202020202020202020 202020202020202020202020202020202020202020202020202020202020202020202020 202020202020202020202020202020202020202020202020202020202020202020202020 202020202020202020202020202020202020202020202020202020202020202020202020 202020202020202020202020202020202020202020202020202020202020202020202020 202020202020202020202020202020202020202020202020202020202020202020202020 202020202020202020202020202020202020202020202020202020202020202020202020 2020202020202020202020202020202020202020202020202020 end %%PageTrailer %%Trailer %%EOF --- NEW FILE: minitool.png --- (This appears to be a binary file; contents omitted.) |
From: <ray...@us...> - 2003-07-15 19:11:54
|
Update of /cvsroot/emc/documents/lyx In directory sc8-pr-cvs1:/tmp/cvs-serv18583 Modified Files: Int_Linux_setup.lyx User_BDI_Install.lyx User_GUI_Mini.lyx Log Message: expanded mini text and imagesUser_GUI_Mini.lyx Index: Int_Linux_setup.lyx =================================================================== RCS file: /cvsroot/emc/documents/lyx/Int_Linux_setup.lyx,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** Int_Linux_setup.lyx 5 Jul 2003 01:29:22 -0000 1.1 --- Int_Linux_setup.lyx 15 Jul 2003 19:11:51 -0000 1.2 *************** *** 58,61 **** --- 58,1020 ---- \layout Section + Patching the RedHat(tm) 8 distribution + \begin_inset LatexCommand \ref{foot:kimlux} + + \end_inset + + + \layout Standard + + The following section was written by Kim Lux. + It is a report of how to install the real time patches to the standard + kernel supplied with the RedHat(tm) release 8.0. + Kim's reports on compiling the EMC and the RCSLIB are included in the EMC + build chapter. + \begin_float footnote + \layout Standard + + CAVEAT: At the time of writing this, I have not installed nor tested EMC + on an RTAI kernel. + \end_float + \layout Standard + + Here is my foolproof method of installing EMC (and RedHat 8 with a RT OS) + on a clean hard drive. + Don't be mislead by the title of this document: you aren't a fool if you've + got problems with these instructions, they've just always worked for me. + + \layout Standard + + I'm breaking the process down into several steps: + \layout Enumerate + + Build a kernel, for the fun of it. + + \layout Enumerate + + Patch the kernel you just built with the rtai real time patch. + + \layout Enumerate + + Build a kernel for real. + \layout Enumerate + + Build and install EMC + \layout Enumerate + + Enjoy ! + \layout Standard + + These instructions are volumous, but you might learn something along the + way too. + I suggest reading them from beginning to end before starting. + The whole process is quite a bit simpler than it looks. + + \layout Standard + + A few notes before we start: + \layout Enumerate + + If you don't understand the commands I use in this document, I suggest you + try the following information sources: + \begin_deeper + \layout Enumerate + + >man <command>. + You'd be surprised how much you can learn reading man pages. + + \layout Enumerate + + google the command on the internet: www.google.com. + Try both the web and the groups. + + \end_deeper + \layout Enumerate + + I run the build process as root. + Some commands don't need you to be root, but some do. + I don't know which is which and I'm not patient so I run as root. + I think that "make install" is one that needs root for sure. + + \layout Enumerate + + There is no such thing as a dumb question, especially in the Linux community. + If you don't know, ask. + I suggest googling before asking. + Newsgroups are a wonderful thing. + alt.linux.redhat and alt.redhat are two good ones. + \layout Enumerate + + I'd like to make this document as helpful as possible. + If you've got suggestions, I'm all ears. + \layout Enumerate + + You needn't build every EMC hard drive from scratch. + I've got a "How to clone a Linux drive" document that outlines the process. + Cloning is much easier than starting from scratch every time. + I'll gladly clone you a hard drive of our EMC setup for the price of a + hard drive plus a nominal fee for someones time to run it. + + \layout Enumerate + + The modern Linux OS is a great operating system in its own right. + It is very stable, very powerful, well supported and diverse. + Those of you coming from a Windows background are probably wanting to + do as little with Linux as possible to get EMC working. + Although this document will probably help you achieve that, I urge you + to give it further consideration. + Yes, there is quite a learning curve to Linux. + However, after some reading and experience with it you'll want no other + OS. + Linux newbies are going to take a look at the process to build a kernel + and shake their head. + All this to run EMC ? The flip side to that statement is that it isn't + possible to make Windows into a real time OS to properly run something + like EMC. + Yes, Windows can be made to "work" as a CNC controller, but it isn't the + same. + + \layout Enumerate + + Linux is a user help user community. + If this document helps you install Linux/EMC, you should help someone + else out in the future. + I've personally benefited from numerous Linux people on numerous Linux + issues and thus I share this. + Now it is your turn. + \layout Enumerate + + The whole install/build process is slow. + It doesn't require much human time, but it takes a long time to run, especiall + y on a slow computer. + It also requires some concentration on the part of the person doing it. + I personally do this sort of thing at home in the evenings, away from + the office so that I'm not interrupted by co workers, ringing phones, etc. + \layout Enumerate + + First impressions are frequently wrong ! Building and patching a kernel + is just about the most complex process a typical Linux user will ever undertake. + Everyday Linux use is a lot like using Windows. + If these are your first days with Linux, don't think they will all be + like this. + Building kernels is not an everyday (or even every month) activity in + Linux. + + \layout Enumerate + + What does a "make" command do ? Make commands manipulate human readible + source code into machine executible files. + A linux archive contains literally hundreds of files containing drivers, + functions, + \layout Subsection + + Step 0: Install Redhat 8 + \layout Standard + + I'm building our EMC systems around RedHat 8 Linux because we use it on + a bunch of other computers. + I'm very familiar with RH8 and thus it makes a good starting point for + me. + Furthermore, RH8 is a fairly complete and stable OS unto itself. + I'm going to have employees operating our EMC driven equipment and I + want them to have an OS at that station that is fully equipped (ie it has + email, a desktop GUI, etc) and a simple graphical editor. + RH8 has all this and is easy to use as well. + + \layout Standard + + It seems kind of weird to be running the same basic operating system on + our CNC mill as our accounting server, but I guess that speaks to the power + and diversity of Linux. + + \layout Standard + + A few hints about installing RH8: + \layout Enumerate + + Select either the personal installation or the workstation installation, + but select the OPTIONAL inclusion of the Kernel Development Support files. + To do this you must enter the "Customize" section of the package installation + routine. + If you forget to do this during the install, you can run the "packages" + utility and install this stuff after the fact. + \layout Enumerate + + Check the validity of the install CDROMs. + One of the first options in the installation process is the ability to + check the installation disks for errors. + TWICE I've been hampered by bad CDROMs when installing Linux. + From my experience it is well worth the time to check the CDROMS. + This is a lengthy process with a slow computer/slow CDROM drive, but it + runs unattended so I do it before actually doing the install. + Preparation always pays off. + \layout Enumerate + + RH 9 is not a good EMC platform, not at the time of this writing. + RH 9 uses a different process threading system than RH8 and there isn't + an available run time patch to work with it. + I'm sure this will change in the future, but for now I recommend sticking + with RH8. + \begin_float footnote + \layout Standard + + Note: Some people are claiming success running Kernel 2.4.20 under RH9 with + the real time patch for it. + I can't say if this works or not. + + \end_float + + \layout Enumerate + + Most people, Linux newbies especially, aren't comfortable with using emacs + as their editor. + I highly recommend installing the graphical version of emacs, ie xemacs + during installation. + I think it is under "Editors" in the custom installation options. + Most of us won't need vi. + You can delete that if you like. + (I think I just insulted 80% of the Linux community...) + \layout Enumerate + + RedHat 8, workstation edition takes about 2 GB of disk space. + The personal edition takes sightly less, maybe 1.7 GB. + Gone are the days when you could fit RH with X Windows on a 1 GB drive. + That isn't necessarily a bad thing either. + \layout Enumerate + + RH8 has very good user documentation. + The last CDROM is dedicated to the documentation. + I've printed all the manuals (our printer has a duplexor) and have them + bound in a 3 ring binder for instant access. + If I were a newbie, I'd for sure print and read and make notes in the + installation document. + It outlines things like hard drive partitioning, etc. + Linux isn't Windows, it is different. + Some of what you know about Windows applies, but some things are outright + different. + There is no "C:" drive in Linux and that is a good thing. + \layout Enumerate + + I don't recommend dual booting. + I'm sure it works, but it is probably more hassle than it is worth. + If you really need to run Windows, I suggest using removeable hard drives + and leaving your Windows drive alone and installing Linux on its own hard + drive. + If you need to send data between Linux and Windows, just boot Linux and + mount your Windows drive into the file system. + The command to do that is this: + \begin_deeper + \layout Standard + + + \emph on + > mount -tvfat /dev/hd?1 /windows where ? = b,c or d, + \emph default + depending where you've got the Windows drive mounted. + (See man mount for more info.) + \layout Standard + + As far as I'm concerned, removable harddrives are highly underrated computing + accessories. + They are right up there in utility with wireless network cards, LCD touchscree + n monitors, software RAID and Linux itself. + \end_deeper + \layout Enumerate + + If you are a newbie, don't be in a hurry. + Take this process step by step and stop if you get stuck. + Think about it, come back to it. + Ask someone else for help. + One can waste a lot of time trying to solve a simple problem when trying + to do things in a hurry. + I recommend downloading and burning your RH8 disks one evening, installing + Linux another evening, compiling your first kernel another evening, compiling + the real time kernel another evening and then building and installing EMC + on the last evening. + None of these tasks should take an evening but you'll be frustrated if + you think you can just burn through the whole process in an afternoon. + Pace yourself and stop before you get tired or frustrated if you get stuck. + \layout Enumerate + + Keep notes. + This might not be your last linux installation/build ! I personally keep + a "linux journal" with all the notes from things I do in Linux. + A lot of things I remember off the top of my head, but not if I haven't + done them for 3 months ! A quick flip through my linux journal refreshes + my memory and I'm solving my problem without starting from scratch. + For instance, I haven't built a kernel in 4 months and I had to dig up + my kernel building notes to build this one. + + \layout Standard + + For further information on installing RH8, consult "The Official Redhat + Linux x86 Installation Guide", which is on the last disk of the RH8 set. + + \layout Subsection + + Step 1: Build a kernel, for the fun of it. + + \layout Standard + + Before we get all caught up in properly patching our kernel for use as a + run time kernel for EMC, I suggest building a regular kernel (from scratch) + to get a feel for the process. + (Baby steps... + walk before you run.) Building a kernel and then running it will give you + the confidence and understanding to patch and build the real time kernel. + + \layout Standard + + Here is a sure fire method for building new kernels in RH8: + \layout Subsection* + + Get the source code for the new kernel. + + \layout Standard + + RH8 ships with kernel 2.4.18-14. + That number is a version/release number. + Don't be scared by it, it is just a number. + As of this writing, the latest stable "production" kernel is 2.4.20. + There is also a real time patch available for this kernel, thus it is + the one that I am going to build in these instructions. + + \layout Standard + + Using your favorite web browser, go to www.kernel.org and follow the links + to the download section. + Find the full source code archive for 2.4.20, not the patches. + Download and save the kernel archive in your home directory ie /home/"you". + The file name you download should be something like linux-2.4.20.tar.gz. + It is about 32MB in size. + The url for that is http://www.kernel.org/pub/linux/kernel/v2.4/ + \layout Standard + + From here on in, I work in a command terminal. + Fire up your terminal, which is usually located in the Start->System Tools + menu. + Note that the fonts in your terminal may be pretty ugly or garbled. + Set the fonts to something you like by using Settings->fonts. + You have to save settings or the next time you start your terminal they + will be garbled again. + + \layout Subsection* + + Unzip the archive in /usr/src/ + \layout Standard + + First we need to copy our Linux archive (ie Linux-2.4.20.tar.gz) into the /usr/src + directory. + You can do this with the following Linux command, assuming you are in + your home directory and you saved the archive there: + \layout Standard + + check if it is there: >ls Linux* Linux-2.4.20.tar.gz + \layout Standard + + copy it to /usr/src: >cp Linux-2.4.20.tar.gz /usr/src + \layout Standard + + Now change directories to /usr/src: > cd /usr/src + \layout Standard + + Now we can unpack the archive with the following command > tar -zxvf Linux-2.4.1 + 9.tar.gz + \layout Standard + + I recommend making a new directory for each version of the kernel that you + build,ie 2.4.28, 2.4.19, etc. + Untaring the tar will do this automatically. + + \layout Subsection* + + Check that Linux actually unpacked the archive: + \layout Standard + + > ls Linux* You should see a directory called "Linux-2.4.20". + Note that there might be directories for other Linux kernels. + I've got a directory for linux-2.4.18 as well. + + \layout Subsection* + + Change directories into the new directory: > cd linux-2.4.20 + \layout Standard + + 4) Do the build process. + Don't skip any steps. + Now that we've got the source code unpacked, we are ready to start building + the kernel. + + \layout Standard + + a) Issue this command. + (You should be in /usr/src/linux-2.4.20. + You can use "pwd" to check where you are.) > make mrproper + \layout Standard + + A bunch of text is going to go scrolling by on your terminal. + It is just the make process doing its thing. + + \layout Standard + + b) Now we want to make the "oldconfig" setup. + Issue this command: + \layout Standard + + > make oldconfig + \layout Standard + + Everything is straightforward with this EXCEPT that every feature that has + been added to the Linux kernel since the last version is going to come + up for verification. + Assuming that I am happy with the way the last kernel ran, I ALWAYS just + press enter at each question, accepting the default. + \layout Standard + + c) Now we want to configure the kernel we are going to build. + We do this by using one of the two commands. + + \layout Standard + + > make xconfig + \layout Standard + + or + \layout Standard + + > menuconfig + \layout Standard + + A couple of notes here. + \layout Standard + + First, I couldn't make xconfig on some of my RH8 installations, so I had + to settle for menuconfig. + I get make errors trying to make xconfig. + I didn't bother looking into it. + \layout Standard + + Menuconfig is the graphical version, whereas xconfig is the XWindows version. + Both work equally well. + Sometimes my terminal fonts are yucky and xconfig works better. + Sometimes I can't make xconfig and I use menuconfig. + Linux gives you both. + + \layout Standard + + Secondly, when you run the config program you will be bombarded by choices + of various features, hardware, etc. + Rather than try to figure out what you want, I think it is imperative to + import the config settings from a known working RH Linux config file as + a starting point for the build. + + \layout Standard + + To do this, at the bottom of menuconfig, one can elect to import the settings + of a current config file as the starting point of the config. + I highly recommend that one does this, just to get a feel for what RedHat + included if nothing else. + The file to use as the starting point is + \layout Standard + + /boot/config-2.4.18-14 + \layout Standard + + or whatever your most current kernel is. + Note that this file does not start with .config as menuconfig (and the Kernel-HO + WTO doc) suggest. + Once you've imported the file you can look around a bit, make any changes + you want and then save and exit. + One really gets a feeling for the depth and breadth of Linux by looking + at all the various hardware and feature options. + + \layout Standard + + NOTE: THERE IS A BUG IN THE linux-2.4.20 source that might need to be addressed + here. + With the source archive that I downloaded, I need to enable "Point to + Point Protocol" and "PPP Deflate Compression" as "kernel" features in order + to get around a zlib compression and decompression include file problem. + + \layout Standard + + To enable these two items in the config process, look under the "Networking + Protocol" section and find "Point to Point Protocol". + In my version of RH8 config it was enabled as a Module feature ie with + an "M". + Change that to a "Y" for kernel feature. + A few lines down, change the "PPP deflate compression" setting to a "Y" + also. + + \layout Standard + + NOTE: THERE IS ANOTHER BUG IN THE linux-2.4.20 source: the low level SCSI + drivers for the NCR 53710 device won't compile under the version of gcc + included with RH8. + To get around this problem, I delete the drivers for the 53710 devices + by doing the following: + \layout Standard + + i) Open the SCSI Support option, then the Low Level Drivers option. + ii) Find the NCR 537,8xx driver. + Disable it, ie set it to "N". + iii) Find the Simple 53710 driver, about 10 lines below. + Disable it, ie set it to "N". + iv) Be sure to press OK on the way out of this screen. + + \layout Standard + + Another work around for this issue *might* have been to use the Alan Cox + kernels, which are typically noted as suffix -ACX, where X is the number + of the latest release. + (ie linux-2.4.20-AC3, for example.) Alan Cox is a noted Linux code cleaner + and I'm sure his source wouldn't have this problem, although I didn't try + it. + One of the possible issues with using a "-ACx" kernel is that the real + time libraries were probably built against a stock kernel and there might + be conflicts applying them to an "-ACx" kernel. + + \layout Standard + + BTW: the error caused by the lack of the zlib library files showed up during + the "make bzImage" process. + It stopped with an error complaining the zlib library wasn't available. + With the PPP options enabled as Kernel, the proper include files are included + and the problem is solved. + + \layout Standard + + The 53710 SCSI driver error showed up during "make modules". + + \layout Standard + + d) Now we build the dependency file. + Do this by issuing the following command. + + \layout Standard + + > make dep Once again you can sit back and watch text scroll by. + The only thing to watch is that each of these commands ends normally, + ie they don't end with "Error..." + \layout Standard + + e) Next we issue the following command: + \layout Standard + + > make clean + \layout Standard + + Like the command suggests, this does cleanup + \layout Standard + + f) Next we make a boot image by issuing the following command: + \layout Standard + + > make bzImage + \layout Standard + + This is a rather lengthy build, even on my machine which is a 2GHz AMD with + 512 MB of RAM. + \layout Standard + + The Kernel-HOWTO suggests that the resulting image needs to be manually + copied to the /boot directory. + This is incorrect for RH8 builds. + If you perform all of the steps in here, ie: "make install" it ends up + there on its own. + No manual copying is necessary. + + \layout Standard + + g) Next we need to make the modules for the kernel to run. + To do this we issue the following command: + \layout Standard + + > make modules + \layout Standard + + This is a really long compile, even on a fast machine. + Have entertainment ready. + Remember that Linux is multi tasking OS and you can surf the web or write + G code while waiting for this to compile. + + \layout Standard + + h) Next, we install the modules. + The command to do this is: + \layout Standard + + > make modules_install + \layout Standard + + i) Next, we install the kernel itself. + To do this we issue the following command: + \layout Standard + + > make install + \layout Standard + + 5) configure LILO or GRUB. + \layout Standard + + In previous Linux versions one had to manually configure the boot loader + (ie Lilo or Grub) to allow the kernel to be booted. + RH8 uses Grub and you don't have to configure anything. + If you open grub.conf in /boot/grub, you'll find that make adds the appropriate + lines necessary to boot the new kernel. + Here is how: + \layout Standard + + > cd /boot/grub > emacs grub.config + \layout Standard + + You'll see that there is an entry for linux-2.4.20 in the file. + The command to exit emacs is ctrl x ctrl s, I think. + I always use xemacs, so I close with the mouse... + + \layout Standard + + 6) Reboot the computer, boot your new kernel + \layout Standard + + Close your terminal window, logout of your session and reboot your computer. + During the boot process, Grub will display a number of kernels to boot. + Select your new 2.4.20 kernel. + + \layout Standard + + Congratulations, you've just built your own linux kernel ! It wasn't really + that hard, was it ? + \layout Standard + + Once the "stock" kernel building process works properly, you can make whatever + modifications you want, knowing that if there is a problem, it lies in + your kernel configuration, not the build process. + Note that we didn't destroy the old kernel. + If there is a problem with our new kernel, we can reboot our computer + and select the old kernel. + Nothing is lost and nothing is damaged. + + \layout Standard + + Other notes: + \layout Standard + + 1) make oldconfig is very important when you use a config file from a different + kernel release. + Otherwise, you can skip it. + \layout Standard + + 2) one could skip a step or three in this process. + However, I can never remember which ones to skip and thus do things in + the same order each time. + + \layout Standard + + 2) If you are already using the same kernel version and want to save the + build files, either edit the makefile to use a different EXTRAVERSION= + variable, or be sure to back up your /lib/modules/<kernelversion> directory + before doing make modules_install. + \layout Standard + + 3) if you forget which command you just ran, you can use the up arrow key + to recall it from the terminal history. + Use the down arrow key to get back to an empty line. + + \layout Standard + + Step 1a: OPTIONAL: Rename your kernel so you don't overwrite it. + + \layout Standard + + The purpose of this whole process is to build a real time 2.4.20 kernel. + However, sometimes it is nice to have a "regular" 2.4.20 kernel to run. + The way the linux kernel build process works, every time you build a 2.4.20 + kernel it installs it as a 2.4.20 kernel, overwriting the previous 2.4.20 kernel. + + \layout Standard + + In order to avoid this, we need to rename the kernel files in the /boot + directory and change the settings in the grub.conf file to match. + To change the the file names, I rename all the files ending in 2.4.20 + to something different, like this: + \layout Standard + + >cd /boot + \layout Standard + + > mv config-2.4.20 config-2.4.20-stock > mv initrd-2.4.20.img initrd-2.4.20-stock.img + > mv System.map-2.4.20 System.map-2.4.20-stock > mv vmlinuz-2.4.20 vmlinuz-2.4.20-stock + + \layout Standard + + Now I make a corresponding change in grub.config: + \layout Standard + + > cd /boot/grub > emacs grub.conf (or xemacs grub.conf) + \layout Standard + + I scroll down to the lines for my new kernel: + \layout Standard + + kernel /vmlinuz-2.4.20 ro root=LABEL=/ hdd=ide-scsi initrd + /initrd-2.4.20.img And change them to match the file names I gave + in /boot: + \layout Standard + + kernel /vmlinuz-2.4.20-stock ro root=LABEL=/ hdd=ide-scsi initrd + /initrd-2.4.20-stock.img + \layout Standard + + We are now ready to build our next 2.4.20 kernel without destroying the one + we just made. + + \layout Standard + + Here is an example of my /boot directory. + I've made a number of different kernels. + + \layout Standard + + <paste begins> $ls boot.b lost+found System.map + -2.4.20 chain.b message System.map-2.4.20.old + config-2.4.18-14 message.ja vmlinux-2.4.18-14 config-2.4.18-1 + 8.8.0 module-info vmlinux-2.4.18-18.8.0 error + module-info-2.4.18-14 vmlinuz grub module-info-2.4. + 18-18.8.0 vmlinuz-2.4.18-14 initrd-2.4.18-14.img os2_d.b + vmlinuz-2.4.18-18.8.0 initrd-2.4.18-18.8.0.img System.map vmlinuz-2.4.19 + initrd-2.4.19.img System.map-2.4.18-14 vmlinuz-2.4.19.old initrd-2.4.19-stoc + k.img System.map-2.4.18-18.8.0 vmlinuz-2.4.19-stock initrd-2.4.20.img System.map + -2.4.19 vmlinuz-2.4.20 kernel.h System.map-2.4.19.old + vmlinuz-2.4.20.old <paste ends> + \layout Standard + + and the corresponding grub.conf file: + \layout Standard + + <paste begins> # Note that you do not have to rerun grub after making changes + to this file # NOTICE: You have a /boot partition. + This means that # all kernel and initrd paths are relative to + /boot/, eg. + # root (hd0,0) # kernel /vmlinuz-version ro root=/dev/hda3 + # initrd /initrd-version.img # boot=/dev/hda default=0 timeout=10 + splashimage=(hd0,0)/grub/splash.xpm.gz title Red Hat Linux (2.4.20) root + (hd0,0) kernel /vmlinuz-2.4.20 ro root=LABEL=/ hdd=ide-scsi initr + d /initrd-2.4.20.img title Red Hat Linux (2.4.19) root (hd0,0) kernel + /vmlinuz-2.4.19 ro root=LABEL=/ hdd=ide-scsi initrd /initrd-2.4.19.img + title Red Hat Linux (2.4.19) (stock) root (hd0,0) kernel + /vmlinuz-2.4.19-stock ro root=LABEL=/ hdd=ide-scsi initrd /initrd-2.4.19-st + ock.img title Red Hat Linux (2.4.18-18.8.0) root (hd0,0) kernel + /vmlinuz-2.4.18-18.8.0 ro root=LABEL=/ hdd=ide-scsi initrd /initrd-2.4.18-18.8. + 0.img title Red Hat Linux (2.4.18-14) root (hd0,0) kernel /vmlinuz- + 2.4.18-14 ro root=LABEL=/ hdd=ide-scsi initrd /initrd-2.4.18-14.img <paste + ends> + \layout Standard + + Notice how the file names in /boot have been modified so that I have 2 2.4.19 + kernels and grub.conf has been modified to correspond to one of them. + If you do this before the second build, the boot files will not be destroyed. + (I used a 2.4.19 kernel before the 2.4.20 kernels were available.) + \layout Subsection + + Step 2: Patching the 2.4.20 kernel to include the real time functions. + + \layout Standard + + The next step in our journey to a running EMC computer is to patch the kernel + with the latest real time OS patches. + \layout Standard + + a) The first thing we need to do is to download the real time patches. + Using your favorite browser, go to www.rtai.org and download the latest patch + set for your kernel into your home directory. + The numbering scheme at rtai is that their "24" patches work with kernels + of the 2.4 series, so I downloaded 24.1.11. + \layout Standard + + b) Unpack the rtai archive. + \layout Standard + + Check that you have it: + \layout Standard + + > ls rtai* <should give you rtai-24.1.11.tgz) + \layout Standard + + Now move it to the /usr/src directory: + \layout Standard + + > mv rtai* /usr/src + \layout Standard + + Now change directories to the /usr/src directory: + \layout Standard + + >cd /usr/src >pwd (should tell you you are in /usr/src) + \layout Standard + + Check that the rtai archive is there: + \layout Standard + + >ls rtai* + \layout Standard + + Now unpack it: + \layout Standard + + >tar -xvzf rtai-24.1.11.tgz. + \layout Standard + + This will create a directory labelled rtai-24.1.11. + Check that it is there: + \layout Standard + + >ls rtai* + \layout Standard + + c) Apply the patch to the source code. + + \layout Standard + + First we need to move into the linux-2.4.20 directory: + \layout Standard + + >cd linux-2.4.20 + \layout Standard + + Now we patch the code. + Issue the following command from within the linux-2.4.20 directory: + \layout Standard + + patch =p1 < /usr/src/rtai-24.1.11/patches/patch-2.4.20-rthal5g + \layout Standard + + Watch the output and make sure there are no error messages present. + + \layout Standard + + NOTE: There is a README.INSTALL file in the rtai directory (which we left + back in /usr/src...) It speaks of patching the kernel with both rthal and + adeos. + As far as I know at this point adeos is not required to run EMC. + I did patch the kernel with both initially but experienced build errors + due to what looked like patch errors. + I applied the pathes in the order listed in the INSTALL doc, ie rthal + and then adeos. + Your mileage may vary. + + \layout Standard + + Your kernel source code is now patched with the necessary RTAI patch to + run EMC. + You need to build it in order to run it. + + \layout Standard + + d) Build yourself another kernel, this time it will be the real time kernel. + + \layout Standard + + The patching process applied the real time code changes to the kernel source + code. + You've already built a kernel before, so it should be a breeze this time. + Follow all the steps you used before, starting at "make mrproper". + Don't miss any ! Note that when it comes time to configure the kernel + you've now got 2 choices for a starting config file to import: 2.4.18-14 + or the config file for the 2.4.20 you built last time. + Remember to set the PPP settings to "kernel" if you use the 2.4.18-14 file. + They should already be in the 2.4.20 config file because you selected them + when you built the last kernel. + + \layout Standard + + e) Reboot your computer, selecting the new "real time" 2.4.20 kernel. + \layout Standard + + Note that Grub automatically boots the first kernel in the Grub file. + You may want to edit grub.config to make the run time kernel the first kernel + for the file. + This would be especially helpful if you've got employees running the computer + or there is a power outage. + Any accidental reboot without someone knowingly selecting the "real time" + kernel will result in the default (ie kernel "0") being run and EMC isn't + going to run right with a regular kernel. + Parts could be wasted and machine tools damaged until this is figured + out. + To edit grub.config, do the following: + \layout Standard + + Change directories to /boot/grub: + \layout Standard + + >cd /boot/grub + \layout Standard + + Open grub.config in xemacs: + \layout Standard + + >xemacs grub.config + \layout Standard + + Make your changes and save. + Ie copy and paste the real time kernel to be the first kernel, ie "0". + The real time kernel will now automatically boot every time. + + \layout Standard + + Conversely, one could edit the "default=0" line to default to the right + kernel. + The first kernel is 0, the second is "1", etc. + + \layout Subsection + + Step 3: Build the Kernel With the Runtime Patch. + + \layout Standard + + Building the kernel with the runtime patch is *exactly* the same as building + the previous kernel, EXCEPT: + \layout Standard + + a) when config is run (ie xconfig or menuconfig) the following changes need + to be made to the configuration: + \layout Standard + + i) In the "Processor Type and Features" options, you need to enable "Config_RTHA + L", ie change it to "y". + \layout Standard + + ii) In the "Loadable Module Support" options, you need to disable "Set version + information on all module symbols". + Otherwise the build is exactly the same. + Follow all the steps listed above and you should have no problems. + Reboot and run your new kernel. + Note that you might have to select your new kernel when grub asks for + your selection during boot. + \layout Standard + + NOTE: the RTAI README.INSTALL doc mentions that the Advanced Power Management + options should be disabled in the kernel. + I elected not to do that. + Obviously having a PC go into sleep mode or having the hard drive wind + down while executing a real time application is not a good thing. + I thus take this one step further and disable all APM functions in the + BIOS of the PC, rather than mess around with kernel options. + \begin_float footnote + \layout Standard + + + \begin_inset LatexCommand \label{foot:kimlux} + + \end_inset + + Kim Lux <lu...@di...> + \end_float + + \layout Standard + + Stay tuned ! + \layout Section + Linux Install \layout Standard Index: User_BDI_Install.lyx =================================================================== RCS file: /cvsroot/emc/documents/lyx/User_BDI_Install.lyx,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** User_BDI_Install.lyx 5 Jul 2003 01:44:29 -0000 1.1 --- User_BDI_Install.lyx 15 Jul 2003 19:11:51 -0000 1.2 *************** *** 38,73 **** This thread started as a complaint about how difficulty it was to get the EMC up and running. ! It became known as brain dead because it was so easy to install compared ! to finding and compiling all of the parts needed to make an EMC run. ! You should not consider the term brain dead to refer to the one doing the ! installation. ! ! \layout Standard ! ! These disks or downloadable images \begin_float footnote \layout Standard ! Download sites include .... ! \layout Standard ! \begin_inset LatexCommand \htmlurl[http://www.linuxcnc.org/bdi/]{http://www.linuxcnc.org/bdi/} ! ! \end_inset ! ! ! \end_float ! are called distributions because they contain all of the files needed to ! run the EMC. Each is complete in itself. ! With this CD and a reasonably standard Pentium, Cyrix, K6, or Athalon you ! can control machines. All of the current distributions have about the same EMC so you should not think that one is more capable of making chips or running a machine that is another. ! I'll briefly describe each distribution and then get to the installation ! stuff. \layout Subsection --- 38,75 ---- This thread started as a complaint about how difficulty it was to get the EMC up and running. ! Paul Corner \begin_float footnote \layout Standard ! Paul <pa...@bd...> ! \end_float ! took up the challenge posed by the thread and produced an easily installable ! but complete distribution. ! On this CD he collected all of the source code and made packages of each ! source. ! He then compiled all of the needed software and made packages of the resulting ! executable code. ! These packages were made to conform to the RedHat (tm) package manager. ! These packages are individually called RPMs. \layout Standard + Paul's first distributions became known as brain dead because they were + so easy to install compared to finding and compiling all of the parts needed + to make an EMC run. + You should not consider the term brain dead to refer to the one doing the + installation. + Using a BDI for your first encounter with the EMC is a really wise thing + to do. + \layout Standard ! These disks or downloadable images are called distributions because they ! contain all of the files needed to run the EMC. Each is complete in itself. ! With one of these distributions and a reasonably standard Pentium, Cyrix, ! K6, or Athalon you can control machines. All of the current distributions have about the same EMC so you should not think that one is more capable of making chips or running a machine that is another. ! I'll briefly describe each distribution and then get to installation. \layout Subsection *************** *** 79,91 **** here on a 200 MHz machine with a 1.5 Gig hard drive and 64 Meg of RAM. This combination runs my little Grizzly stepper mill easily at 36 ipm. ! A computer like that above is all that is needed for this distribution. This is the greatest advantage of the 2.xx series. It will run well on very old very slow computers. \layout Standard ! It's biggest limitation is in the graphical interface stuff and the hardware ! that it will recognize. ! Now days I miss having a wheel mouse run my files up and down. ! The editors and file and net browsers with this do not respond to the wheel. \layout Subsection --- 81,104 ---- here on a 200 MHz machine with a 1.5 Gig hard drive and 64 Meg of RAM. This combination runs my little Grizzly stepper mill easily at 36 ipm. ! An older, slower, smaller computer like mine is all that is needed for ! this distribution. This is the greatest advantage of the 2.xx series. It will run well on very old very slow computers. \layout Standard ! It's biggest limitation is in the graphical interface stuff which will seem ! a bit dated if you are acustomed to state of the art systems. ! A second limitation for2.xx is that it was set up for hardware a couple ! of years ago. ! This means that it is limited in the kinds of devices that it will recognize. ! ! \layout Standard ! ! Now days I miss having a wheel mouse to run my file lists up and down in ! the browser or lines of text in an editor. ! When the Linux and graphical packages that the 2.xx seriesis based on was ! set in stone, the editors and file and net browsers did not have this feature. ! It is unlikely that these packages will be updated because newer packages ! have been built around newer versions of Linux. \layout Subsection *************** *** 95,100 **** The BDI-TNG (The Next Generation) runs with the Red Hat 7.2. The TNG will require a bit more powerful machine. I recommend at least ! 400 Mhz but 800 is a lot nicer in the way it handles multiple tasks like ! running the machine while I am editing a g-code file. \layout Subsection --- 108,122 ---- The BDI-TNG (The Next Generation) runs with the Red Hat 7.2. The TNG will require a bit more powerful machine. I recommend at least ! 400 Mhz but 800 is a lot nicer in the way it handles multiple tasks quickly. ! ! \layout Standard ! ! If you just want to make chips or swarf with your minimill, this series ! will be more than you need. ! With it you will get some of the features that you may want for networking ! and for browsing about the web. ! You should think of the TNG as an experimental version rather than one ! intended for the single task of making a machine move. ! You should also think that this version may not be kept up to date. \layout Subsection *************** *** 103,258 **** The BDI-Live is based on the Morphix distribution of Linux. ! This distribution is intended as a way for potentiao users to test out ! the EMC without having to install in on a hard drive and work out dual ! boot if they need that other OS. - \layout Section - - What is the minimum specification of the computer required? \layout Standard ! An old P133 with 16-32Mb RAM, a 500Mb IDE hard drive, and a CDROM drive ! that can be booted from. ! If you want good performance from stepper motors, a Pentium 233 or better ! is recommended. \layout Section ! Can I use a laptop computer ! \layout Standard ! This is allways a difficult question to answer. ! Most of the laptop computers use non-standard hardware for the LCD screen, ! some of which are supported under Linux. ! The CDROM drive can also be a major source of trouble especially if it ! can be swapped out of the same bay as the floppy drive. \layout Standard ! In short, unless you are experienced in installing linux on a laptop, buy ! a cheap desktop computer. ! This is not to say it is impossible, rather it is outside the scope of ! this FAQ. ! \layout Section ! Do I need to install Linux first ? \layout Standard ! No - The BDI automatically installs and configures linux along with EMC. ! \layout Section ! Will it run under Windows 98 ? \layout Standard ! No. ! The install will remove the Microsoft virus for you. ! :) ! \layout Section ! Can I run a hexapod with it ? \layout Standard ! Yes you can. ! \layout Section - I get a screen full of error messages, but no graphical install screen when - I try to install the BDI ? \layout Standard ! The install CD is not recognizing some of your hardware. ! Try to change your display card to some other listed in ! \begin_inset LatexCommand \htmlurl[http://www.redhat.com/support/hardware/]{http://www.redhat.com/support/hardware/} \end_inset ! "supported-hardware"-list. ! You could also ask if there is version of BDI-CD that can handle your hardware. ! You can also look for answer from BDI's pages at ! \begin_inset LatexCommand \htmlurl[http://www.linuxcnc.org/bdi/ ]{http://www.linuxcnc.org/bdi/ } \end_inset ! \layout Section ! I can't access the floppy drive with the Floppy icon. \layout Standard ! The floppy icon on the KDE desktop need to point to the correct device/directory. ! Right click on the icon - Properties - Device.Set both 'Device' and 'Mount ! Point' to /mnt/floppy. ! \layout Section ! ! The computer crashes when I try to make a move in EMC \layout Standard ! Try to edit your .ini file. ! Problem propably lies in there. ! Try to run sim.run script and if that's ok, use that .ini file as base for ! your own ini-file. ! Later on we'll put couple of working ini-files here. ! For now, you can find them from ! \begin_inset LatexCommand \htmlurl[http://www.linuxcnc.org/dropbox]{http://www.linuxcnc.org/dropbox} ! \end_inset ! \layout Section ! Can I print from the BDI linux ? \layout Standard ! Yes - But to configure the print driver, you will need two files found on ! the Programs page. ! Install control-panel followed by printtool then open up a console window ! and run printtool (you'll need to be root to do this). ! \layout Section ! How do I burn a CD from the downloaded image ? \layout Standard ! You have downloaded the ISO image of the BDI from the web now want to burn ! a CD on a Windows box.... \layout Standard ! The following note was received from Mark Nudelman - \layout Standard ! 1) Download BDI .img file from ! \begin_inset LatexCommand \url[www.yty.net/cnc]{http://www.yty.net/cnc} ! \end_inset \layout Standard ! 2) Change the .img extension to a .iso extension \layout Standard ! 3) From a CD burning program (I used CD Creator 4.0) create a CD using the ! "Create CD from CD Image" option (do not try and create a regular data ! CD) and make sure that the file type is "ISO Image Files:. \layout Standard ! 4) Insert this CD and a Linux boot floppy in the computer that is to be ! loaded. ! ( I already had a boot floppy from my previous install, but I think that ! windows users can use a program called rawrite.exe to help them create this ! boot disk. ! There was information available on this process on the Linux site) \layout Standard ! 5) Reboot the computer and follow the BDI instructions. \layout Standard ! A couple of extra notes from correspondence with other people that have ! had trouble with the downloaded image. \layout Standard ! It would appear that one or more files can be corrupted during downloading ! or burning. ! Henkka has included a checksum so that the disk can be verifyed. ! Please follow the instructions before using the CD as a beer mat. \layout Standard ! Step 4 should not normally be necessary unless the computer will not boot ! directly from the CDROM drive. \the_end --- 125,398 ---- The BDI-Live is based on the Morphix distribution of Linux. ! This distribution is intended as a way for potential users to test out ! the EMC without having to install in on a hard drive. ! With it there are no worries that you will loose important information ! that you have on a hard drive that is tended to by another operating system. \layout Standard ! To run from the CD you pop in in the cd drive and reboot your computer. ! It will start up Linux, a simple window manager, and the EMC without doing ! anything to your computer. ! The only big requirement is that your computer be able to boot from a CDROM ! device. \layout Section ! Getting a copy of a BDI Release ! \layout Subsection ! Purchase a CD set \layout Standard ! If you reside in the western hemisphere and wish to purchase a CD copy of ! any or all of the distributions you can contact Ray Henry. ! \begin_float footnote ! \layout Standard ! re...@up... ! \end_float ! In Australasia - Contact Andrew Erwood in Queensland, Australia. ! \begin_float footnote \layout Standard ! a_...@au... ! \end_float ! \layout Standard ! For a hard copy of them elsewhere in the world you can contact Paul Corner. ! \begin_float footnote \layout Standard ! Paul <pa...@bd...> ! \end_float ! ! \layout Subsection ! Download a CD set \layout Standard ! There are also several download sites where you can get a BDI without cost. ! You will need a rather fast connection as the releases are large. ! \begin_float footnote ! \layout Standard ! ! Henry Palonen hosts ! \begin_inset LatexCommand \url[www.yty.net/cnc]{http://www.yty.net/cnc} ! ! \end_inset ! \layout Standard ! Mike Joyce hosts ! \begin_inset LatexCommand \url{www.emc.obstinate.org} \end_inset ! ! \layout Standard ! ! Till Franitza hosts ! \begin_inset LatexCommand \url{http://www.isw.uni-stuttgart.de/personen/t_franit/echtzeitlinux.index.html} \end_inset ! \end_float ! ! \layout Subsection ! Burning a CD set \layout Standard ! You have downloaded the ISO image of the BDI from the web now want to burn ! a CD on a MS-Windows box. \layout Standard ! The following list was extracted from a post received from Mark Nudelman ! - ! \layout Enumerate ! Change the .img extension to a .iso extension ! \layout Enumerate + From a CD burning program (I used CD Creator 4.0) create a CD using the "Create + CD from CD Image" option (do not try and create a regular data CD) and + make sure that the file type is "ISO Image Files:. + \layout Standard ! It would appear that one or more files can be corrupted during downloading ! or burning. ! Henry Palonen and Mike Joyce have both included a checksum so that the ! disk can be verifyed. ! Please follow the instructions or you may be left using the CD as a beer ! mat. ! ! \layout Standard ! Checksum is not a complicated thing. ! It is defined as, ! \layout Quote ! ! A simple error-detection scheme in which each transmitted message is accompanied ! by a numerical value based on the number of set bits in the message. ! The receiving station then applies the same formula to the message and ! checks to make sure the accompanying numerical value is the same. ! If not, the receiver can assume that the message has been garbled. ! \begin_float footnote \layout Standard ! http://www.webopedia.com/TERM/C/checksum.html ! \layout Standard ! Copyright, Tuesday, October 30, 2001 Jupitermedia All rights reserved. ! Reprinted with permission from http://www.internet.com.\SpecialChar ~ ! ! \end_float ! \layout Standard ! You can get a copy of checksum to run on most of the MS-Windows operating ! systems at. ! http://www.md5summer.org/source/Source_md5v11026.zip. ! You will need to follow the instructions with the download in order to ! install and run it. \layout Standard ! Under most any of the linux distributions you should already have the md5 ! checksum program. ! Here is what linux planet says about running it. ! \layout Quote ! ! You don't need a fancy tool to check an MD5 checksum. ! You don't need to download anything, either. ! The program md5sum comes with most mainstream Linux distributions, and ! if it's not installed by default it's probably on your distro's CD-ROMs ! somewhere. ! First download the file itself, and then edit the corresponding file containing ! the MD5 checksum, or copy and paste the MD5 checksum from the web site ! into a file. ! After the MD5 checksum in the file, put the name of the file you want to ! check, and the path if it's not in the same directory as the MD5 checksum ! file. ! ! \layout Quote ! ! You then use this program in the format: ! \begin_deeper ! \layout Quote ! ! ! \latex latex ! md5sum --check MD5checksumfilename ! \end_deeper ! \layout Quote ! ! The md5sum program runs a MD5 checksum on the file specified with MD5checksumfil ! ename, and then compares its answer to the MD5 checksum in the file.\SpecialChar ~ ! ! \begin_float footnote \layout Standard ! http://www.linuxplanet.com/linuxplanet/tutorials/4342/2/ ! \layout Standard ! Copyright,2003Jupitermedia All rights reserved. ! Reprinted with permission from http://www.internet.com. ! \end_float ! \layout Standard + After you've run the checksum program and the result matches the value specified + on the site from which you downloaded your copy you should be ready to + burn it. + \layout Subsection + Making a bootable floppy \layout Standard ! Making a boot disk should not normally be necessary unless the computer ! will not boot directly from the CDROM drive. ! If you do need to make a floppy, both the program to do it, and the image ! to put on it are on the BDI CD. ! The program is call rawrite.exe and it resides in the (cdrom name)/dosutils. ! The image to transfer is in the (cdrom name)/images directory and is named ! boot.img. \layout Standard ! If the version of MS-Dos that you are running allows you to start a dos ! terminal you can make the floppy by entering a single dos command. ! Let me assume that your cdrom is named D:. ! Put a disk in your floppy (A), start rawrite using the command (cdrom name)/dos ! utils/rawrite.exe. ! Rawrite will ask for the location of the image to be copied and the location ! of the floppy to copy it to. ! \layout Section ! ! Installing the BDI 2.xx \layout Standard ! The hardware required here could be as basic as an old P133 with 16-32Mb ! RAM, a 500Mb IDE hard drive, and a CDROM drive that can be booted from. ! If you want good performance from stepper motors, a Pentium 233 or better ! is recommended. ! \layout Standard ! Some folk have been successful with installations on a laptop computer but ! this is not always easy. ! Most of the laptop computers use non-standard hardware for the LCD screen, ! some of which are supported under Linux. ! The CDROM drive can also be a major source of trouble especially if it ! can be swapped out of the same bay as the floppy drive. ! I don't recommend trying to use a laptop unless you are experienced in ! installing linux. ! Buy buy a cheap desktop computer and dedicate that to the CNC. ! \layout Subsection ! ! I get a screen full of error messages, but no graphical install screen when ! I try to install the BDI ? \layout Standard ! The install CD is not recognizing some of your hardware. ! Try to change your display card to some other listed in ! \begin_inset LatexCommand \htmlurl[http://www.redhat.com/support/hardware/]{http://www.redhat.com/support/hardware/} ! ! \end_inset ! ! "supported-hardware"-list. ! You could also ask if there is version of BDI-CD that can handle your hardware. ! You can also look for answer from BDI's pages at ! \begin_inset LatexCommand \htmlurl[http://www.linuxcnc.org/bdi/ ]{http://www.linuxcnc.org/bdi/ } ! ! \end_inset ! ! ! \layout Section ! ! The computer crashes when I try to make a move in EMC \layout Standard ! This sort of failure is normall do to a miss match between the speed at ! which your computer can run and the speed that is computed from a couple ! of the variables in the ini file. ! Try to edit your .ini file. ! Problem probably lies in there. ! Try to run sim.run script and if that's ok, use that .ini file as base for ! your own ini-file. ! Later on we'll put couple of working ini-files here. ! For now, you can find them from ! \begin_inset LatexCommand \htmlurl[http://www.linuxcnc.org/dropbox]{http://www.linuxcnc.org/dropbox} ! ! \end_inset ! ! ! \layout Section ! ! Can I print from the BDI linux ? \layout Standard ! Yes - But to configure the print driver, you will need two files found on ! the Programs page. ! Install control-panel followed by printtool then open up a console window ! and run printtool (you'll need to be root to do this). \the_end Index: User_GUI_Mini.lyx =================================================================== RCS file: /cvsroot/emc/documents/lyx/User_GUI_Mini.lyx,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** User_GUI_Mini.lyx 5 Jul 2003 01:44:29 -0000 1.1 --- User_GUI_Mini.lyx 15 Jul 2003 19:11:51 -0000 1.2 *************** *** 9,17 **** \paperfontsize 10 \spacing single ! \papersize Default ! \paperpackage a4wide ! \use_geometry 0 \use_amsmath 0 \paperorientation portrait \secnumdepth 5 \tocdepth 5 --- 9,23 ---- \paperfontsize 10 \spacing single ! \papersize Custom ! \paperpackage a4 ! \use_geometry 1 \use_amsmath 0 \paperorientation portrait + \paperwidth 8.5in + \paperheight 11in + \leftmargin 1.2in + \topmargin 1in + \rightmargin 0.8in + \bottommargin 1in \secnumdepth 5 \tocdepth 5 *************** *** 21,25 **** \quotes_times 2 \papercolumns 1 ! \papersides 2 \paperpagestyle default --- 27,31 ---- \quotes_times 2 \papercolumns 1 ! \papersides 1 \paperpagestyle default *************** *** 27,33 **** Using The MINI Graphical Interface ! \layout Comment ! Describe the logic of tkemc. ! Show the screen and how to access configuration and scripts. \the_end --- 33,922 ---- Using The MINI Graphical Interface ! \layout Section ! Introduction ! \begin_float footnote ! \layout Standard ! ! Much of this chapter quotes from a chapater of the Sherline CNC operators ! manual. ! \end_float ! \layout Standard ! ! \begin_float fig ! \layout Standard ! \align center ! ! \begin_inset Figure size 476 360 ! file ../images/mini01.eps ! width 3 80 ! flags 9 ! ! \end_inset ! ! ! \layout Caption ! ! ! \begin_inset LatexCommand \label{fig:startmini} ! ! \end_inset ! ! The Mini Graphical Interface ! \end_float ! \layout Standard ! ! Mini was designed to be a full screen graphical interface. ! It was first written for the Sherline CNC but is available for anyone to ! use, copy, and distribute under the terms of the GPL copyright. ! ! \layout Standard ! ! Rather than popup new windows for each thing that an operator might want ! to do, Mini allows you to display these within the regular screen. ! Mini was written largely for the Sherline CNC mill. ! Parts of this chapter are copied from the instructions that were written ! for that mill by Joe Martin and Ray Henry. ! \layout Section ! ! Screen layout ! \layout Standard ! ! \begin_float fig ! \layout Standard ! \align center ! ! \begin_inset Figure size 476 360 ! file ../images/mini02.eps ! width 3 80 ! flags 9 ! ! \end_inset ! ! ! \layout Caption ! ! ! \begin_inset LatexCommand \label{fig:runmini} ! ! \end_inset ! ! Mini Display for a Running EMC ! \end_float ! The Mini screen is laid out in several sections. ! (See Figure ! \begin_inset LatexCommand \ref{fig:startmini} ! ! \end_inset ! ! ) These include a menu across the top, a set of main control buttons just ! below the menu and two rather large columns of information that show the ! state of your machine and allow you to enter commands or programs. ! \layout Standard ! ! When you compare figure ! \begin_inset LatexCommand \ref{fig:startmini} ! ! \end_inset ! ! with figure ! \begin_inset LatexCommand \ref{fig:runmini} ! ! \end_inset ! ! you will see many differences. ! In the second figure ! \layout Itemize ! ! each axis has been homed -- the display numbers are dark green ! \layout Itemize ! ! the EMC mode is auto -- the auto button has a light green background ! \layout Itemize ! ! the backplotter has been turned on -- backplot is visible in the pop-in ! window ! \layout Itemize ! ! the tool path from the program is showing in the display. ! ! \layout Standard ! ! Once you start working with Mini you will quickly discover how easily it ! shows the conditions of the EMC and allows you to make changes to it. ! \layout Section ! ! Menu Bar ! \layout Standard ! ! The first row is the menu bar across the top. ! Here you can configure the screen to display additional information. ! Some of the items in this menu are very different from what you may be ! acustomed to with other programs. ! You should take a few minutes and look under each menu item in order to ! familiarize yourself with the features that are there. ! ! \layout Standard ! ! The menu includes each of the following sections and subsections. ! ! \layout Description ! ! Program This menu includes both reset and exit functions. ! Reset will return the EMC to the condition that it was in when it started. ! Some startup configuration items like the normal program units can be specified ! in the ini file. ! ! \layout Description ! ! View This menu includes several screen elements that can be added so that ! you can see additional information during a run. ! These include ! \begin_deeper ! \layout Description ! ! Position_Type This menu item adds a line above the main position displays ! that shows whether the displays are in inches or metric and whether they ! are Machine or Relative location and if they are Actual positions or Commanded ! positions. ! These can be changed using the Settings menu described below. ! \layout Description ! ! Tool_Info This adds a line immediately below the main position displays ! that shows which tool has been selected and the length of offset applied. ! \layout Description ! ! Offset_Info adds a line immediately below the tool info that shows what ! offsets have been applied. ! This is a total distance for each axis from machine zero. ! \layout Description ! ! Show_Restart adds a block of buttons to the right of the program display ! in auto mode. ! These allow the operator to restart a program after an abort or estop. ! These will pop in whenever estop or abort is pressed but can be shows by ! the operator anytime auto mode is active by selecting this menu item. ! \layout Description ! ! Hide_Restart removes the block of buttons that control the restart of a ! program that has been aborted or estopped. ! \layout Description ! ! Show_Split_Right changes the nature of the right hand col... [truncated message content] |
From: <jmk...@us...> - 2003-07-15 11:42:51
|
Update of /cvsroot/emc/rtapi/src/rtapi In directory sc8-pr-cvs1:/tmp/cvs-serv9228/src/rtapi Modified Files: rtapi.h sim_rtapi.c ulapi.h Log Message: added more docs to rtapi.h, ulapi.h Index: rtapi.h =================================================================== RCS file: /cvsroot/emc/rtapi/src/rtapi/rtapi.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** rtapi.h 11 Jul 2003 02:52:43 -0000 1.2 --- rtapi.h 15 Jul 2003 11:42:48 -0000 1.3 *************** *** 2,20 **** #define RTAPI_H ! /* The mapping of actual priority to priority number depends on the */ ! /* RTOS. The 'rtapi_prio_xxxx()' functions provide a portable way to */ ! /* determind priority. Priorities range from 'rtapi_prio_lowest()' */ ! /* to 'rtapi_prio_highest()', inclusive. To use this API, use one of */ ! /* two methods: */ ! /* */ ! /* Set your lowest priority task to 'rtapi_prio_lowest()', and for */ ! /* each task of the next lowest priority, set their priorities to */ ! /* 'rtapi_prio_next_higher(previous)'. */ ! /* */ ! /* Or, */ ! /* */ ! /* Set your highest priority task to 'rtapi_prio_highest()', and for */ ! /* each task of the next highest priority, set their priorities to */ ! /* 'rtapi_prio_next_lower(previous)'. */ extern int rtapi_prio_highest(void); --- 2,22 ---- #define RTAPI_H ! ! ! /** The mapping of actual priority to priority number depends on the * ! * RTOS. The 'rtapi_prio_xxxx()' functions provide a portable way to * ! * determine priority. Priorities range from 'rtapi_prio_lowest()' * ! * to 'rtapi_prio_highest()', inclusive. To use this API, use one of * ! * two methods: * ! * * ! * Set your lowest priority task to 'rtapi_prio_lowest()', and for * ! * each task of the next lowest priority, set their priorities to * ! * 'rtapi_prio_next_higher(previous)'. * ! * * ! * Or, * ! * * ! * Set your highest priority task to 'rtapi_prio_highest()', and for * ! * each task of the next highest priority, set their priorities to * ! * 'rtapi_prio_next_lower(previous)'. */ extern int rtapi_prio_highest(void); *************** *** 24,44 **** ! /* The clock period is the basic time interval for realtime tasks */ ! /* All task periods, whether specified when starting the task, or */ ! /* changed later, will be rounded to an integer multiple of the */ ! /* period set by 'rtapi_clock_set_period()'. Note that there is only */ ! /* one hardware clock in the PC, and this call stops and resets it. */ ! /* So this function only needs to be called once, even if there are */ ! /* multiple realtime tasks in multiple kernel modules. Calling this */ ! /* function after realtime tasks have been started may disrupt the */ ! /* tasks. Returns 0 on success, an RTOS specific error code on fail. */ extern int rtapi_clock_set_period(unsigned long int nsecs); ! /* 'rtapi_task_new()' is the first step in creating a task. Returns */ ! /* a pointer to internal rtapi and rtos data that describes the task. */ ! /* All other calls that relate to the task use this pointer as a task */ ! /* handle. Normally called from module init code, may block. Returns */ ! /* a non-zero task handle on success, zero on failure. */ /* FIXME - I want to replace the current declaration with: --- 26,47 ---- ! /** The clock period is the basic time interval for realtime tasks * ! * All task periods, whether specified when starting the task, or * ! * changed later, will be rounded to an integer multiple of the * ! * period set by 'rtapi_clock_set_period()'. Note that there is only * ! * one hardware clock in the PC, and this call stops and resets it. * ! * So this function only needs to be called once, even if there are * ! * multiple realtime tasks in multiple kernel modules. Calling this * ! * function after realtime tasks have been started may disrupt the * ! * tasks. Returns 0 on success, an RTOS specific error code on fail. */ extern int rtapi_clock_set_period(unsigned long int nsecs); ! ! /** 'rtapi_task_new()' is the first step in creating a task. Returns * ! * a pointer to internal rtapi and rtos data that describes the task. * ! * All other calls that relate to the task use this pointer as a task * ! * handle. Normally called from module init code, may block. Returns * ! * a non-zero task handle on success, zero on failure. */ /* FIXME - I want to replace the current declaration with: *************** *** 60,70 **** ! /* 'rtapi_task_delete()' is the counterpart to 'rtapi_task_new()'. It */ ! /* frees memory associated with 'task', and does any other cleanup */ ! /* needed. If the task has been started, you must stop it before */ ! /* deleting it, or bad things might happen. Returns zero on success, */ ! /* an RTOS dependent error code on failure. Call from within module */ ! /* cleanup code or any _other_ task - a task should not attempt to */ ! /* delete itself! */ /* FIXME change to: --- 63,73 ---- ! /** 'rtapi_task_delete()' is the counterpart to 'rtapi_task_new()'. * ! * It frees memory associated with 'task', and does any other cleanup * ! * needed. If the task has been started, you must stop it before * ! * deleting it, or bad things might happen. Returns zero on success, * ! * an RTOS dependent error code on failure. Call from within module * ! * cleanup code or any _other_ task - a task should not attempt to * ! * delete itself! */ /* FIXME change to: *************** *** 75,94 **** ! /* 'rtapi_task_start()' does the majority of the work needed to create */ ! /* and run a realtime task. 'task' is a task handle from a call to */ ! /* rtapi_task_new(). 'taskcode' is the name of a function containing */ ! /* the task code. 'prio' is the priority, as determined by one of the */ ! /* priority functions above. 'stacksize' is the amount of stack to be */ ! /* reserved for the task - be generous, hardware interrupts use the */ ! /* same stack. 'period_nsec' is the task period in nanoseconds, which */ ! /* will be rounded to the nearest multiple of the global clock period. */ ! /* If non-zero, 'uses_fp' tells the OS that the task uses floating */ ! /* point so it can save the FPU registers on a task switch. Failing */ ! /* to save registers when needed causes the dreaded "NAN bug", so most */ ! /* tasks should set 'uses_fp' to 1. If a task definitely does not use */ ! /* floating point, setting 'uses_fp' to zero saves a few microseconds */ ! /* on each task switch. Returns zero on success, an RTOS dependent */ ! /* error code on failure. call from module init code (preferred) or */ ! /* within a realtime task. May block. */ /* FIXME - Fred, you have code in the implementations of this function --- 78,97 ---- ! /** 'rtapi_task_start()' does the bulk of the work needed to create * ! * and run a realtime task. 'task' is a task handle from a call to * ! * rtapi_task_new(). 'taskcode' is the name of a function containing * ! * the task code. 'prio' is the priority, as determined by one of the * ! * priority functions above. 'stacksize' is the amount of stack to be * ! * reserved for the task - be generous, hardware interrupts use the * ! * same stack. 'period_nsec' is the task period in nanoseconds, which * ! * will be rounded to the nearest multiple of the global clock period. * ! * If non-zero, 'uses_fp' tells the OS that the task uses floating * ! * point so it can save the FPU registers on a task switch. Failing * ! * to save registers when needed causes the dreaded "NAN bug", so most * ! * tasks should set 'uses_fp' to 1. If a task definitely does not use * ! * floating point, setting 'uses_fp' to zero saves a few microseconds * ! * on each task switch. Returns zero on success, an RTOS dependent * ! * error code on failure. call from module init code (preferred) or * ! * within a realtime task. May block. */ /* FIXME - Fred, you have code in the implementations of this function *************** *** 120,128 **** unsigned char uses_fp); ! /* 'rtapi_task_stop()' is the counterpart to 'rtapi_task_start()'. It */ ! /* permanently stops 'task', and prepares it to be deleted. Returns */ ! /* zero on success, and an RTOS dependent error code on failure. Call */ ! /* from within module cleanup code or any _other_ task - a task should */ ! /* not attempt to stop itself! */ /* FIXME - change to: --- 123,132 ---- unsigned char uses_fp); ! ! /** 'rtapi_task_stop()' is the counterpart to 'rtapi_task_start()'. * ! * Permanently stops 'task', and prepares it to be deleted. Returns * ! * zero on success, and an RTOS dependent error code on failure. Call * ! * from within module cleanup code or any _other_ task - a task should * ! * not attempt to stop itself! */ /* FIXME - change to: *************** *** 133,143 **** ! /* 'rtapi_task_pause() causes 'task' to temporarily stop execution. */ ! /* It will resume when 'rtapi_task_resume()' is called with the same */ ! /* task handle. Returns zero on success, an RTOS dependent error code */ ! /* on failure. A task can pause itself, but obviously cannot resume */ ! /* itself. Note: depending on the RTOS, multiple 'pauses' may or may */ ! /* not be canceled by a single 'resume'. To be safe, don't pause a */ ! /* task more than once. */ /* FIXME - we could modify the wrapper function to keep track of pauses --- 137,147 ---- ! /** 'rtapi_task_pause() causes 'task' to temporarily stop execution. * ! * It will resume when 'rtapi_task_resume()' is called with the same * ! * task handle. Returns zero on success, an RTOS dependent error code * ! * on failure. A task can pause itself, but obviously cannot resume * ! * itself. Note: depending on the RTOS, multiple 'pauses' may or may * ! * not be canceled by a single 'resume'. To be safe, don't pause a * ! * task more than once. */ /* FIXME - we could modify the wrapper function to keep track of pauses *************** *** 154,162 **** extern int rtapi_task_resume(void *task); ! /* 'rtapi_task_set_period()' and 'rtapi_self_set_period()' are used to */ ! /* change the period of a task. The new period is 'period_nsec', */ ! /* rounded to the nearest integer multiple of the global period as set */ ! /* by 'rtapi_clock_set_period()'. Returns zero on success, an RTOS */ ! /* dependent error code on failure. */ /* FIXME - consider deleting the 'self' version of this function, and --- 158,166 ---- extern int rtapi_task_resume(void *task); ! /** 'rtapi_task_set_period()' and 'rtapi_self_set_period()' are used * ! * to change the period of a task. The new period is 'period_nsec', * ! * rounded to the nearest integer multiple of the global period as set * ! * by 'rtapi_clock_set_period()'. Returns zero on success, an RTOS * ! * dependent error code on failure. */ /* FIXME - consider deleting the 'self' version of this function, and *************** *** 178,215 **** extern int rtapi_self_set_period(unsigned long int period_nsec); ! /* 'rtapi_wait()' suspends execution of the current task until the */ ! /* next period. At the beginning of the next period, execution will */ ! /* resume immediately after the call to 'rtapi_wait()', instead of at */ ! /* beginning of the 'taskcode' function. Returns zero on success, and */ ! /* an RTOS dependent errorcode on failure. Call only from a task. */ extern int rtapi_wait(void); - /* FIXME - need to continue documentating the rest of the API */ ! extern int rtapi_alloc_shmem(int key, unsigned int size, int *id, void **ptr); ! extern int rtapi_free_shmem(int key, unsigned int size, int id, ! const void *ptr); extern void rtapi_print(const char *fmt, ...); extern void rtapi_outb(unsigned char byte, unsigned int port); extern unsigned char rtapi_inb(unsigned int port); extern int rtapi_assign_interrupt_handler(unsigned int irq, ! void (*handler) (void)); extern int rtapi_free_interrupt_handler(unsigned int irq); extern int rtapi_enable_interrupt(unsigned int irq); extern int rtapi_disable_interrupt(unsigned int irq); extern void *rtapi_sem_new(void); extern int rtapi_sem_delete(void *sem); extern int rtapi_sem_give(void *sem); extern int rtapi_sem_take(void *sem); extern int rtapi_fifo_new(int key, int *fd, unsigned long int size); extern int rtapi_fifo_delete(int key, int fd, unsigned long int size); extern int rtapi_fifo_write(int fd, char *buf, unsigned long int size); extern int rtapi_fifo_read(int fd, char *buf, unsigned long int size); #endif /* RTAPI_H */ --- 182,390 ---- extern int rtapi_self_set_period(unsigned long int period_nsec); ! ! /** 'rtapi_wait()' suspends execution of the current task until the * ! * next period. At the beginning of the next period, execution will * ! * resume immediately after the call to 'rtapi_wait()', instead of at * ! * beginning of the 'taskcode' function. Returns zero on success, and * ! * an RTOS dependent errorcode on failure. Call only from a task. */ extern int rtapi_wait(void); ! /** 'rtapi_alloc_shmem()' allocates and maps a block of shared memory. * ! * 'key' identifies the memory block, all modules wishing to access * ! * the same memory must use the same key. The block will be at least * ! * 'size' bytes, and may be rounded up. Allocating many small blocks * ! * may be very wasteful. 'id' is a pointer to an int that may be used * ! * by rtapi_alloc_shmem() for an internal identifier - retain the value * ! * in 'id' until you call rtapi_free_shmem(). 'ptr' is a pointer to * ! * a void pointer, which will be set to point to the allocated memory. * ! * Returns zero on success, and an RTOS dependent errorcode on failure. */ ! ! extern int rtapi_alloc_shmem(int key, unsigned int size, ! int *id, void **ptr); ! ! ! /** 'rtapi_free_shmem()' frees a block of memory that was allocated by * ! * rtapi_alloc_shmem(). 'key', 'size', 'id', and 'ptr' must match the * ! * values from the call that allocated the block. Returns zero on * ! * success, and an RTOS dependent errorcode on failure. */ ! ! extern int rtapi_free_shmem(int key, unsigned int size, ! int id, const void *ptr); ! ! ! /** 'rtapi_print()' prints a printf style message. Depending on the * ! * RTOS, the message may be printed to stdout, or to the kernel message * ! * log, etc. The calling syntax and format string is similar to printf * ! * except that floating point may not be supported. For some RTOS's, * ! * a 256 byte buffer is used, so the format line and arguments should * ! * not produce a line more than 255 bytes long. Does not block, but * ! * can take a fairly long time, depending on the format string and OS. */ extern void rtapi_print(const char *fmt, ...); + + /** 'rtapi_outb() writes 'byte' to 'port'. * + * Note: This function does nothing on the simulated RTOS. */ + extern void rtapi_outb(unsigned char byte, unsigned int port); + + + /** 'rtapi_inb() gets a byte from 'port'. * + * Note: This function always returns zero on the simulated RTOS. */ + extern unsigned char rtapi_inb(unsigned int port); + + /** 'rtapi_assign_interrupt_handler()' is used to set up a handler for * + * a hardware interrupt. 'irq' is the interrupt number, and 'handler' * + * is a pointer to a function taking no arguements and returning void. * + * 'handler will be called when the interrupt occurs. Returns zero on * + * success, and an RTOS specific error code on failure. Note: The * + * simulated RTOS always returns zero, but does nothing - it does not * + * support interrupts. */ + extern int rtapi_assign_interrupt_handler(unsigned int irq, ! void (*handler) (void)); ! ! ! /** 'rtapi_free_interrupt_handler()' removes an interrupt handler that * ! * was previously installed by rtapi_assign_interrupt_handler(). 'irq' * ! * is the interrupt number. Removing a realtime module without freeing * ! * any handlers it has installed will almost certainly crash the box. * ! * Returns zero on success, an RTOS specific error code on failure. */ ! extern int rtapi_free_interrupt_handler(unsigned int irq); + + + /** 'rtapi_enable_interrupt()' and 'rtapi_disable_interrupt()' are * + * are used to enable and disable interrupts, presumably ones that have * + * handlers assigned to them. Returns 0 on success, an RTOS specific * + * error code on failure. */ + extern int rtapi_enable_interrupt(unsigned int irq); extern int rtapi_disable_interrupt(unsigned int irq); + + /** 'rtapi_sem_new()' creates a realtime semaphore. Returns a pointer * + * to RTAPI and RTOS specific data associated with the semaphore. All * + * other semaphore functions use this pointer as a semaphore handle. * + * Normally called from module init code, may block. Returns a non- * + * zero semaphore handle on success, zero on failure. */ + + /* FIXME - I want to treat semaphore handles like task handles: + + typedef struct rtapi_sem *rtapi_sem_handle; + + rtapi_sem_handle rtapi_sem_new(void); + */ + extern void *rtapi_sem_new(void); + + + /** 'rtapi_sem_delete()' is the counterpart to 'rtapi_sem_new()'. It * + * destroys the semaphore 'sem'. Any tasks blocked on 'sem' will * + * resume execution. Returns zero on success, an RTOS dependent error * + * code on failure. */ + + /* FIXME change to: + int rtapi_sem_delete( rtapi_sem_handle sem ); + */ + extern int rtapi_sem_delete(void *sem); + + + /** 'rtapi_sem_give()' unlocks a semaphore. If a higher priority task * + * is blocked on the semaphore, the calling task will block and the * + * higher priority task will begin to run. Returns zero on success, an * + * RTOS dependent error code on failure. */ + + /* FIXME change to: + int rtapi_sem_give( rtapi_sem_handle sem ); + */ + extern int rtapi_sem_give(void *sem); + + /** 'rtapi_sem_take()' locks a semaphore. If the semaphore is * + * unlocked it returns zero immediately. If the semaphore is locked, * + * the calling task blocks until the semaphore is unlocked, then it * + * returns zero. On an error, it returns an RTOS dependent error code. */ + + /* FIXME change to: + int rtapi_sem_take( rtapi_sem_handle sem ); + */ + extern int rtapi_sem_take(void *sem); + + /** 'rtapi_sem_try()' does a non-blocking attempt to lock a semaphore. * + * If the semaphore is unlocked, it returns zero. If the semaphore is * + * locked it does not block, instead it returns EAGAIN, and the caller * + * can decide how to deal with the situation. On an error, it returns * + * an RTOS dependent error code. */ + + /* FIXME this function was not in the original RTAPI. Both RTLinux and + RTAI provide the neccessary primitives, and if there is no objection I + will implement it. JMK 7/14/03 + + int rtapi_sem_try( rtapi_sem_handle sem ); + */ + + + /** 'rtapi_fifo_new()' creates a realtime fifo. 'key' identifies the * + * fifo, all modules wishing to access the same fifo must use the same * + * key. 'size' is the size of the desired fifo. 'fd' is a pointer * + * to an int used by rtapi_fifo_new() as a file descripter associated * + * with the fifo - retain the value in 'fd' until you delete the fifo. * + * Returns zero on success, and an RTOS dependent errorcode on failure. */ + extern int rtapi_fifo_new(int key, int *fd, unsigned long int size); + + + /** "rtapi_fifo_delete()' deletes a fifo that was created by a call to * + * rtapi_fifo_new(). 'key', 'fd', and 'size' must match the values * + * from the call that created the fifo. On success, returns zero or a * + * positive number that identifies the number of other modules still * + * attached to the fifo. On error, returns an RTOS dependent errorcode * + * that is negative. */ + + /* FIXME - the return value above is based on RTAI. The RTLinux docs + aren't clear about what the return value is, may be the same or maybe + not. Should we change the implementation to always return zero on + success, or is the RTAI style return value usefull? I will make the + change unless there are objections. JMK 7/14/03 */ + extern int rtapi_fifo_delete(int key, int fd, unsigned long int size); + + + /** 'rtapi_fifo_read()' reads data from a fifo. 'fd' is the fifo * + * descripter returned when the fifo was created. 'buf' is a buffer * + * for the data. 'size' is the maximum number of bytes to read. * + * Returns the number of bytes read, or a negative error code on * + * failure. Does not block. If 'size' bytes are not available, it * + * will read whatever is available, and return that count (which could * + * be zero). */ + extern int rtapi_fifo_write(int fd, char *buf, unsigned long int size); + + + /** 'rtapi_fifo_write()' writes data to a fifo. 'fd' is the descripter * + * returned when the fifo was created. 'buf' is a buffer for the data. * + * Returns the number of bytes written. If successfull, the return * + * value will match 'size'. Does not block. If 'size' bytes of space * + * are not available in the fifo, rtapi_fifo_write() will either do a * + * partial write and return the number of bytes actually written, or * + * fail and return a negative error code, depending on the RTOS. */ + + /* FIXME - different actions when the fifo is full could cause problems. + The second action can be modified to be compatible with the first - if + there isn't enough room for 'size' bytes, return zero, to indicate zero + bytes written. Any caller that can deal with the partial writes + should also be able to handle partial writes that write nothing. + I will implement this if there are no objections. JMK 7/14/03 */ + extern int rtapi_fifo_read(int fd, char *buf, unsigned long int size); + #endif /* RTAPI_H */ Index: sim_rtapi.c =================================================================== RCS file: /cvsroot/emc/rtapi/src/rtapi/sim_rtapi.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** sim_rtapi.c 8 Jul 2003 15:54:38 -0000 1.1.1.1 --- sim_rtapi.c 15 Jul 2003 11:42:48 -0000 1.2 *************** *** 132,135 **** --- 132,138 ---- r1 = shmdt(ptr); + /* FIXME - according to the man page for shmctl() on my system, id is + the first arg, cmd is the second. Is this different on different + kernel/lib versions, or just wrong here? */ r2 = shmctl(IPC_RMID, id, &d); Index: ulapi.h =================================================================== RCS file: /cvsroot/emc/rtapi/src/rtapi/ulapi.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** ulapi.h 8 Jul 2003 15:54:39 -0000 1.1.1.1 --- ulapi.h 15 Jul 2003 11:42:48 -0000 1.2 *************** *** 2,16 **** #define ULAPI_H extern int ulapi_init(void); extern int ulapi_exit(void); ! extern int ulapi_alloc_shmem(int key, unsigned int size, int *id, void **ptr); ! extern int ulapi_free_shmem(int key, unsigned int size, int id, ! const void *ptr); extern int ulapi_fifo_new(int key, int *fd, unsigned long int size); extern int ulapi_fifo_delete(int key, int fd, unsigned long int size); ! extern int ulapi_fifo_write(int fd, char *buf, unsigned long int size); extern int ulapi_fifo_read(int fd, char *buf, unsigned long int size); #endif /* ULAPI_H */ --- 2,87 ---- #define ULAPI_H + + /** 'ulapi_init() sets up the user space interface to the RTAPI. It * + * must be called before calling any ulapi functions. Returns zero on * + * success, and an RTOS specific error code on failure. */ + extern int ulapi_init(void); + + /** 'ulapi_exit()' shuts down and cleans up the user space interface * + * to the RTAPI. It must be called before program exit. Returns zero * + * on success, and an RTOS specific error code on failure. */ + extern int ulapi_exit(void); ! ! /** 'ulapi_alloc_shmem()' allocates and maps a block of shared memory. * ! * 'key' identifies the memory block, all modules wishing to access * ! * the same memory must use the same key. The block will be at least * ! * 'size' bytes, and may be rounded up. Allocating many small blocks * ! * may be very wasteful. 'id' is a pointer to an int that may be used * ! * by ulapi_alloc_shmem() for an internal identifier - retain the value * ! * in 'id' until you call ulapi_free_shmem(). 'ptr' is a pointer to * ! * a void pointer, which will be set to point to the allocated memory. * ! * Returns zero on success, and an RTOS dependent errorcode on failure. */ ! ! extern int ulapi_alloc_shmem(int key, unsigned int size, ! int *id, void **ptr); ! ! ! /** 'ulapi_free_shmem()' frees a block of memory that was allocated by * ! * ulapi_alloc_shmem(). 'key', 'size', 'id', and 'ptr' must match the * ! * values from the call that allocated the block. Returns zero on * ! * success, and an RTOS dependent errorcode on failure. */ ! ! extern int ulapi_free_shmem(int key, unsigned int size, ! int id, const void *ptr); ! ! ! /** 'ulapi_fifo_new()' creates a realtime fifo. 'key' identifies the * ! * fifo, all modules wishing to access the same fifo must use the same * ! * key. 'size' is the size of the desired fifo. 'fd' is a pointer * ! * to an int used by ulapi_fifo_new() as a file descripter associated * ! * with the fifo - retain the value in 'fd' until you delete the fifo. * ! * Returns zero on success, and an RTOS dependent errorcode on failure. */ ! ! /* FIXME - the current inplementations open the fifo using O_RDONLY. ! That means it can only be used with ulapi_fifo_read() to transfer ! data from kernel space (realtime tasks) to user space. Probably ! need to add a mode or data direction parameter to this function. */ extern int ulapi_fifo_new(int key, int *fd, unsigned long int size); + + + /** "ulapi_fifo_delete()' deletes a fifo that was created by a call to * + * ulapi_fifo_new(). 'key', 'fd', and 'size' must match the values * + * from the call that created the fifo. Returns zero on success, and * + * an RTOS dependent errorcode on failure. */ + extern int ulapi_fifo_delete(int key, int fd, unsigned long int size); ! ! ! /** 'ulapi_fifo_read()' reads data from a fifo. 'fd' is the fifo * ! * descripter returned when the fifo was created. 'buf' is a buffer * ! * for the data. 'size' is the maximum number of bytes to read. * ! * Returns the number of bytes read, or a negative error code on * ! * failure. */ ! ! /* FIXME - Blocking/nonblocking behavior depends on how the fifo ! was opened, which is not clear at this time. */ ! extern int ulapi_fifo_read(int fd, char *buf, unsigned long int size); + + + /** 'ulapi_fifo_write()' writes data to a fifo. 'fd' is the descripter * + * returned when the fifo was created. 'buf' is a buffer for the data. * + * Returns the number of bytes written. If successfull, the return * + * value will match 'size'. */ + + /* FIXME - Blocking/nonblocking behavior depends on how the fifo + was opened, which is not clear at this time. */ + + extern int ulapi_fifo_write(int fd, char *buf, unsigned long int size); + #endif /* ULAPI_H */ |
From: <ms...@us...> - 2003-07-11 06:53:57
|
Update of /cvsroot/emc/emc/src/emcmot In directory sc8-pr-cvs1:/tmp/cvs-serv28343 Modified Files: emcmot.c Log Message: MGS removed an unreachable piece of code that I discussed with Will about a week ago, and also relocated a #endif that I thought was out of place. Can someone else audit the #ifdef/#endif placement in init_module to check this? Index: emcmot.c =================================================================== RCS file: /cvsroot/emc/emc/src/emcmot/emcmot.c,v retrieving revision 1.89 retrieving revision 1.90 diff -C2 -d -r1.89 -r1.90 *** emcmot.c 10 Jun 2003 15:04:43 -0000 1.89 --- emcmot.c 11 Jul 2003 06:53:49 -0000 1.90 *************** *** 7,16 **** Modification history: ! ! 10-Jun-2003 WPS -- disable the debug stuff by default since it might use too much of the CPU on slow CPU's or stepper systems with a lot of pulses to put out. 29-Jan-2003 WPS changed call to simMotInit to extMotCycle 10-Dec-2002 WPS eliminated use of direct time stamp measurements, apparently the linux kernel no longer exports cpu_khz for modules to use although ! which is needed for direct time stamp measurments unless we want to do our own calibration or add an EMC specific kernel patch to export it. (The variable is still there and computed) 9-Dec-2002 WPS made stepping type 4 use oneshot mode and set its period --- 7,19 ---- Modification history: ! 11-Jul-2003 MGS deleted unreachable code that was shadowed by an #ifdef/#else. ! Also, moved an incorrectly placed #endif. ! 10-Jun-2003 WPS -- disable the debug stuff by default since it might use too ! much of the CPU on slow CPU's or stepper systems with a lot of pulses to put out. 29-Jan-2003 WPS changed call to simMotInit to extMotCycle 10-Dec-2002 WPS eliminated use of direct time stamp measurements, apparently the linux kernel no longer exports cpu_khz for modules to use although ! which is needed for direct time stamp measurments unless we want to do our own ! calibration or add an EMC specific kernel patch to export it. (The variable is still there and computed) 9-Dec-2002 WPS made stepping type 4 use oneshot mode and set its period *************** *** 3688,3698 **** ((double) PERIOD)); #else - - #ifdef rtai - pdmultfloat = ((double) nano2count( 1e9 / - (emcmotDebug->rawOutput[axis] * - ((double) emcmotStatus->outputScale[axis]) * - ((double) PERIOD))); - #else pdmultfloat = ((double) RT_TICKS_PER_SEC) / (emcmotDebug->rawOutput[axis] * --- 3691,3694 ---- *************** *** 3701,3705 **** #endif #endif - #endif /* round it */ if (pdmultfloat < 0.0) { --- 3697,3700 ---- *************** *** 5834,5839 **** #endif - #endif - #ifdef STEPPER_MOTORS --- 5829,5832 ---- *************** *** 5943,5946 **** --- 5936,5940 ---- #endif /* STEPPER_MOTORS */ #endif /* rtlinux */ + #endif /* rtai */ diagnostics("emcmot: init_module finished\n"); |
From: <jmk...@us...> - 2003-07-11 02:52:46
|
Update of /cvsroot/emc/rtapi/src/rtapi In directory sc8-pr-cvs1:/tmp/cvs-serv1010/src/rtapi Modified Files: rtai_rtapi.c rtapi.h Log Message: added documentation to rtapi.h Index: rtai_rtapi.c =================================================================== RCS file: /cvsroot/emc/rtapi/src/rtapi/rtai_rtapi.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** rtai_rtapi.c 8 Jul 2003 15:54:38 -0000 1.1.1.1 --- rtai_rtapi.c 11 Jul 2003 02:52:43 -0000 1.2 *************** *** 73,76 **** --- 73,77 ---- rt_set_periodic_mode(); start_rt_timer(nano2count((RTIME) nsecs)); + return 0; } Index: rtapi.h =================================================================== RCS file: /cvsroot/emc/rtapi/src/rtapi/rtapi.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** rtapi.h 8 Jul 2003 15:54:38 -0000 1.1.1.1 --- rtapi.h 11 Jul 2003 02:52:43 -0000 1.2 *************** *** 2,19 **** #define RTAPI_H ! /* ! priorities range from rtapi_prio_lowest() to rtapi_prio_highest(), ! inclusive. To use this API, use one of two methods: ! ! Set your lowest priority task to rtapi_prio_lowest(), and for each ! task of the next lowest priority, set their priorities to ! rtapi_prio_next_higher(previous). ! ! Or, ! ! Set your highest priority task to rtapi_prio_highest(), and for each ! task of the next highest priority, set their priorities to ! rtapi_prio_next_lower(previous). ! */ extern int rtapi_prio_highest(void); --- 2,20 ---- #define RTAPI_H ! /* The mapping of actual priority to priority number depends on the */ ! /* RTOS. The 'rtapi_prio_xxxx()' functions provide a portable way to */ ! /* determind priority. Priorities range from 'rtapi_prio_lowest()' */ ! /* to 'rtapi_prio_highest()', inclusive. To use this API, use one of */ ! /* two methods: */ ! /* */ ! /* Set your lowest priority task to 'rtapi_prio_lowest()', and for */ ! /* each task of the next lowest priority, set their priorities to */ ! /* 'rtapi_prio_next_higher(previous)'. */ ! /* */ ! /* Or, */ ! /* */ ! /* Set your highest priority task to 'rtapi_prio_highest()', and for */ ! /* each task of the next highest priority, set their priorities to */ ! /* 'rtapi_prio_next_lower(previous)'. */ extern int rtapi_prio_highest(void); *************** *** 22,40 **** --- 23,190 ---- extern int rtapi_prio_next_lower(int prio); + + /* The clock period is the basic time interval for realtime tasks */ + /* All task periods, whether specified when starting the task, or */ + /* changed later, will be rounded to an integer multiple of the */ + /* period set by 'rtapi_clock_set_period()'. Note that there is only */ + /* one hardware clock in the PC, and this call stops and resets it. */ + /* So this function only needs to be called once, even if there are */ + /* multiple realtime tasks in multiple kernel modules. Calling this */ + /* function after realtime tasks have been started may disrupt the */ + /* tasks. Returns 0 on success, an RTOS specific error code on fail. */ + extern int rtapi_clock_set_period(unsigned long int nsecs); + /* 'rtapi_task_new()' is the first step in creating a task. Returns */ + /* a pointer to internal rtapi and rtos data that describes the task. */ + /* All other calls that relate to the task use this pointer as a task */ + /* handle. Normally called from module init code, may block. Returns */ + /* a non-zero task handle on success, zero on failure. */ + + /* FIXME - I want to replace the current declaration with: + + typedef struct rtapi_task *rtapi_task_handle; + + rtapi_task_handle rtapi_task_new(void); + + The typedef permits typechecking on the task handle, while still + hiding the internal contents of the structure. All functions that + currently take or return a void pointer to a task would instead + take or return a rtapi_task_handle. The actual code generated is + the same, but this form allows compile time type checking. + + I will implement the change if/when we reach a concensus that it + is a good thing. John M Kasunich - 7/10/03 */ + extern void *rtapi_task_new(void); + + + /* 'rtapi_task_delete()' is the counterpart to 'rtapi_task_new()'. It */ + /* frees memory associated with 'task', and does any other cleanup */ + /* needed. If the task has been started, you must stop it before */ + /* deleting it, or bad things might happen. Returns zero on success, */ + /* an RTOS dependent error code on failure. Call from within module */ + /* cleanup code or any _other_ task - a task should not attempt to */ + /* delete itself! */ + + /* FIXME change to: + int rtapi_task_delete( rtapi_task_handle task ); + */ + extern int rtapi_task_delete(void *task); + + /* 'rtapi_task_start()' does the majority of the work needed to create */ + /* and run a realtime task. 'task' is a task handle from a call to */ + /* rtapi_task_new(). 'taskcode' is the name of a function containing */ + /* the task code. 'prio' is the priority, as determined by one of the */ + /* priority functions above. 'stacksize' is the amount of stack to be */ + /* reserved for the task - be generous, hardware interrupts use the */ + /* same stack. 'period_nsec' is the task period in nanoseconds, which */ + /* will be rounded to the nearest multiple of the global clock period. */ + /* If non-zero, 'uses_fp' tells the OS that the task uses floating */ + /* point so it can save the FPU registers on a task switch. Failing */ + /* to save registers when needed causes the dreaded "NAN bug", so most */ + /* tasks should set 'uses_fp' to 1. If a task definitely does not use */ + /* floating point, setting 'uses_fp' to zero saves a few microseconds */ + /* on each task switch. Returns zero on success, an RTOS dependent */ + /* error code on failure. call from module init code (preferred) or */ + /* within a realtime task. May block. */ + + /* FIXME - Fred, you have code in the implementations of this function + that takes special action when 'period_nsec' is zero. What did you have + in mind with that? Non-periodic tasks that simply run until they either + return, pause, wait, or block? + */ + + /* FIXME - change to: + extern int rtapi_task_start(rtapi_task_handle task, + void (*taskcode)( int ), + int arg, + int prio, + unsigned long int stacksize, + unsigned long int period_nsec, + unsigned char uses_fp); + + This declares 'taskcode' as a 'pointer to function taking one int and + returning void', which lets the compiler make sure it is really a + valid function. Adding 'arg' lets the task init code pass a parameter + to the realtime task code, which can be cast to a pointer to any kind + of data structure that might be needed. Can be useful for letting the + task code know where shared memory is located. + */ + extern int rtapi_task_start(void *task, void *taskcode, int prio, unsigned long int stacksize, unsigned long int period_nsec, unsigned char uses_fp); + + /* 'rtapi_task_stop()' is the counterpart to 'rtapi_task_start()'. It */ + /* permanently stops 'task', and prepares it to be deleted. Returns */ + /* zero on success, and an RTOS dependent error code on failure. Call */ + /* from within module cleanup code or any _other_ task - a task should */ + /* not attempt to stop itself! */ + + /* FIXME - change to: + extern int rtapi_task_stop(rtapi_task_handle task ); + */ + extern int rtapi_task_stop(void *task); + + + /* 'rtapi_task_pause() causes 'task' to temporarily stop execution. */ + /* It will resume when 'rtapi_task_resume()' is called with the same */ + /* task handle. Returns zero on success, an RTOS dependent error code */ + /* on failure. A task can pause itself, but obviously cannot resume */ + /* itself. Note: depending on the RTOS, multiple 'pauses' may or may */ + /* not be canceled by a single 'resume'. To be safe, don't pause a */ + /* task more than once. */ + + /* FIXME - we could modify the wrapper function to keep track of pauses + and resumes, and consistently provide one behavior or the other, instead + of leaving it RTOS dependent. + */ + + /* FIXME - change to: + extern int rtapi_task_pause(rtapi_task_handle task); + extern int rtapi_task_resume(rtapi_task_handle task); + */ + extern int rtapi_task_pause(void *task); extern int rtapi_task_resume(void *task); + + /* 'rtapi_task_set_period()' and 'rtapi_self_set_period()' are used to */ + /* change the period of a task. The new period is 'period_nsec', */ + /* rounded to the nearest integer multiple of the global period as set */ + /* by 'rtapi_clock_set_period()'. Returns zero on success, an RTOS */ + /* dependent error code on failure. */ + + /* FIXME - consider deleting the 'self' version of this function, and + instead provide a function that returns the handle of the current task, + like this: + rtapi_task_handle rtapi_self(void); + + That's a more generic way to allow a task to call any rtapi function + on itself. + */ + + /* FIXME - replace with: + + extern int rtapi_task_set_period(rtapi_task_handle task, + unsigned long int period_nsec); + */ + extern int rtapi_task_set_period(void *task, unsigned long int period_nsec); extern int rtapi_self_set_period(unsigned long int period_nsec); + + /* 'rtapi_wait()' suspends execution of the current task until the */ + /* next period. At the beginning of the next period, execution will */ + /* resume immediately after the call to 'rtapi_wait()', instead of at */ + /* beginning of the 'taskcode' function. Returns zero on success, and */ + /* an RTOS dependent errorcode on failure. Call only from a task. */ + extern int rtapi_wait(void); + + /* FIXME - need to continue documentating the rest of the API */ extern int rtapi_alloc_shmem(int key, unsigned int size, int *id, void **ptr); |
From: <pr...@us...> - 2003-07-09 17:51:29
|
Update of /cvsroot/emc/rtapi/src/rtapi In directory sc8-pr-cvs1:/tmp/cvs-serv31116 Modified Files: Makefile Log Message: Removed -C option from install, which is not standard and not necessary Index: Makefile =================================================================== RCS file: /cvsroot/emc/rtapi/src/rtapi/Makefile,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** Makefile 8 Jul 2003 15:54:38 -0000 1.1.1.1 --- Makefile 9 Jul 2003 17:51:26 -0000 1.2 *************** *** 25,29 **** all : $(RTAPI) $(ULAPI) $(OBJS) $(LIBS) ! - \install -C -m0664 $(HEADERS) $(INC_DIR) # explicit rules for RT objs --- 25,29 ---- all : $(RTAPI) $(ULAPI) $(OBJS) $(LIBS) ! - \install -m0664 $(HEADERS) $(INC_DIR) # explicit rules for RT objs *************** *** 71,75 **** headers : ! - \install -C -m0664 $(HEADERS) $(INC_DIR) .PHONY: all depend libdepend rtlibdepend indent install clean clean_install headers --- 71,75 ---- headers : ! - \install -m0664 $(HEADERS) $(INC_DIR) .PHONY: all depend libdepend rtlibdepend indent install clean clean_install headers |
From: <pr...@us...> - 2003-07-09 17:50:10
|
Update of /cvsroot/emc/rtapi/rtlib In directory sc8-pr-cvs1:/tmp/cvs-serv30919/rtlib Log Message: Directory /cvsroot/emc/rtapi/rtlib added to the repository |
From: <pr...@us...> - 2003-07-09 17:50:09
|
Update of /cvsroot/emc/rtapi/lib In directory sc8-pr-cvs1:/tmp/cvs-serv30919/lib Log Message: Directory /cvsroot/emc/rtapi/lib added to the repository |
From: <pr...@us...> - 2003-07-09 17:49:52
|
Update of /cvsroot/emc/rtapi/bin In directory sc8-pr-cvs1:/tmp/cvs-serv30802/bin Log Message: Directory /cvsroot/emc/rtapi/bin added to the repository |
From: <pr...@us...> - 2003-07-09 17:49:39
|
Update of /cvsroot/emc/rtapi/include In directory sc8-pr-cvs1:/tmp/cvs-serv30783/include Log Message: Directory /cvsroot/emc/rtapi/include added to the repository |
Update of /cvsroot/emc/emc_HAL/src/emcsim In directory sc8-pr-cvs1:/tmp/cvs-serv2590/src/emcsim Removed Files: Makefile amplifier.c amplifier.h dcmotor.c dcmotor.h dcmotor2.c dcmotor2.h dcmotor2test.c encoder.c encoder.h extsimaio.c extsimdio.c extsimmot.c inisim.cc sim.h simaio.c simbase.c simdio.c simmot.c simmot_n.cc simmot_n.gen simmot_n.h simstatprint.cc Log Message: Much of this was premature --- Makefile DELETED --- --- amplifier.c DELETED --- --- amplifier.h DELETED --- --- dcmotor.c DELETED --- --- dcmotor.h DELETED --- --- dcmotor2.c DELETED --- --- dcmotor2.h DELETED --- --- dcmotor2test.c DELETED --- --- encoder.c DELETED --- --- encoder.h DELETED --- --- extsimaio.c DELETED --- --- extsimdio.c DELETED --- --- extsimmot.c DELETED --- --- inisim.cc DELETED --- --- sim.h DELETED --- --- simaio.c DELETED --- --- simbase.c DELETED --- --- simdio.c DELETED --- --- simmot.c DELETED --- --- simmot_n.cc DELETED --- --- simmot_n.gen DELETED --- --- simmot_n.h DELETED --- --- simstatprint.cc DELETED --- |
From: <pa...@us...> - 2003-07-07 20:42:16
|
Update of /cvsroot/emc/emc_HAL/src/rs274ngc In directory sc8-pr-cvs1:/tmp/cvs-serv2590/src/rs274ngc Removed Files: Makefile Makefile.kramer canon.hh canon_pre.cc driver.cc rs274ngc.hh rs274ngc.tool_default rs274ngc.var rs274ngc_errors.cc rs274ngc_pre.cc rs274ngc_return.hh Log Message: Much of this was premature --- Makefile DELETED --- --- Makefile.kramer DELETED --- --- canon.hh DELETED --- --- canon_pre.cc DELETED --- --- driver.cc DELETED --- --- rs274ngc.hh DELETED --- --- rs274ngc.tool_default DELETED --- --- rs274ngc.var DELETED --- --- rs274ngc_errors.cc DELETED --- --- rs274ngc_pre.cc DELETED --- --- rs274ngc_return.hh DELETED --- |
Update of /cvsroot/emc/emc_HAL/src/emcnml In directory sc8-pr-cvs1:/tmp/cvs-serv2590/src/emcnml Removed Files: Makefile canon.hh emc.cc emc.gen emc.hh emcargs.cc emccfg.h emcglb.c emcglb.h emcnmlsize.cc emcops.cc emcpos.h emcxmlin.cc emcxmlout.cc emcxmlschema.cc extintf.h extppt.c getinput.c getinput.h iniaux.cc iniaux.hh iniaxis.cc iniaxis.hh inicool.cc inicool.hh inilube.cc inilube.hh inispin.cc inispin.hh initool.cc initool.hh initraj.cc initraj.hh inivar.c interpl.cc interpl.hh parport.c parport.h Log Message: Much of this was premature --- Makefile DELETED --- --- canon.hh DELETED --- --- emc.cc DELETED --- --- emc.gen DELETED --- --- emc.hh DELETED --- --- emcargs.cc DELETED --- --- emccfg.h DELETED --- --- emcglb.c DELETED --- --- emcglb.h DELETED --- --- emcnmlsize.cc DELETED --- --- emcops.cc DELETED --- --- emcpos.h DELETED --- --- emcxmlin.cc DELETED --- --- emcxmlout.cc DELETED --- --- emcxmlschema.cc DELETED --- --- extintf.h DELETED --- --- extppt.c DELETED --- --- getinput.c DELETED --- --- getinput.h DELETED --- --- iniaux.cc DELETED --- --- iniaux.hh DELETED --- --- iniaxis.cc DELETED --- --- iniaxis.hh DELETED --- --- inicool.cc DELETED --- --- inicool.hh DELETED --- --- inilube.cc DELETED --- --- inilube.hh DELETED --- --- inispin.cc DELETED --- --- inispin.hh DELETED --- --- initool.cc DELETED --- --- initool.hh DELETED --- --- initraj.cc DELETED --- --- initraj.hh DELETED --- --- inivar.c DELETED --- --- interpl.cc DELETED --- --- interpl.hh DELETED --- --- parport.c DELETED --- --- parport.h DELETED --- |
Update of /cvsroot/emc/emc_HAL/src/emctask In directory sc8-pr-cvs1:/tmp/cvs-serv2590/src/emctask Removed Files: Makefile alter.c bridgeporttaskintf.cc debug.c emccalib.tcl emccanon.cc emcdebug.tcl emcdummy.cc emclog.tcl emcpanel.cc emcsh.cc emcsvr.cc emctask.cc emctaskmain.cc emctesting.tcl emctuning.tcl genedit.tcl inimot.cc keystick.cc mini.tcl minimilltaskintf.cc popimage.tcl tkbackplot.tcl tkemc.tcl xemc.cc yemc.cc Log Message: Much of this was premature --- Makefile DELETED --- --- alter.c DELETED --- --- bridgeporttaskintf.cc DELETED --- --- debug.c DELETED --- --- emccalib.tcl DELETED --- --- emccanon.cc DELETED --- --- emcdebug.tcl DELETED --- --- emcdummy.cc DELETED --- --- emclog.tcl DELETED --- --- emcpanel.cc DELETED --- --- emcsh.cc DELETED --- --- emcsvr.cc DELETED --- --- emctask.cc DELETED --- --- emctaskmain.cc DELETED --- --- emctesting.tcl DELETED --- --- emctuning.tcl DELETED --- --- genedit.tcl DELETED --- --- inimot.cc DELETED --- --- keystick.cc DELETED --- --- mini.tcl DELETED --- --- minimilltaskintf.cc DELETED --- --- popimage.tcl DELETED --- --- tkbackplot.tcl DELETED --- --- tkemc.tcl DELETED --- --- xemc.cc DELETED --- --- yemc.cc DELETED --- |
Update of /cvsroot/emc/emc_HAL/src/emcmot In directory sc8-pr-cvs1:/tmp/cvs-serv2590/src/emcmot Removed Files: Makefile cubic.c cubic.h emcmot.c emcmot.h emcmotcfg.h emcmotglb.c emcmotglb.h emcmotlog.c emcmotlog.h emcmotutil.c kinematics.h mmxavg.c mmxavg.h pid.c pid.h tc.c tc.h tp.c tp.h trivkins.c usrmot.c usrmotintf.c usrmotintf.h Log Message: Much of this was premature --- Makefile DELETED --- --- cubic.c DELETED --- --- cubic.h DELETED --- --- emcmot.c DELETED --- --- emcmot.h DELETED --- --- emcmotcfg.h DELETED --- --- emcmotglb.c DELETED --- --- emcmotglb.h DELETED --- --- emcmotlog.c DELETED --- --- emcmotlog.h DELETED --- --- emcmotutil.c DELETED --- --- kinematics.h DELETED --- --- mmxavg.c DELETED --- --- mmxavg.h DELETED --- --- pid.c DELETED --- --- pid.h DELETED --- --- tc.c DELETED --- --- tc.h DELETED --- --- tp.c DELETED --- --- tp.h DELETED --- --- trivkins.c DELETED --- --- usrmot.c DELETED --- --- usrmotintf.c DELETED --- --- usrmotintf.h DELETED --- |
From: <pa...@us...> - 2003-07-07 20:42:15
|
Update of /cvsroot/emc/emc_HAL/src/drivers In directory sc8-pr-cvs1:/tmp/cvs-serv2590/src/drivers Removed Files: Makefile diagnostics.h extintf.h extppt.c extsmmot.c extstgmot.c parport.c parport.h stg.c stg.h Log Message: Much of this was premature --- Makefile DELETED --- --- diagnostics.h DELETED --- --- extintf.h DELETED --- --- extppt.c DELETED --- --- extsmmot.c DELETED --- --- extstgmot.c DELETED --- --- parport.c DELETED --- --- parport.h DELETED --- --- stg.c DELETED --- --- stg.h DELETED --- |
From: <pa...@us...> - 2003-07-07 20:42:15
|
Update of /cvsroot/emc/emc_HAL/src In directory sc8-pr-cvs1:/tmp/cvs-serv2590/src Removed Files: Makefile Makefile.inc Log Message: Much of this was premature --- Makefile DELETED --- --- Makefile.inc DELETED --- |
Update of /cvsroot/emc/emc_HAL/src/emcio In directory sc8-pr-cvs1:/tmp/cvs-serv2590/src/emcio Removed Files: Makefile bridgeportaux.cc bridgeportcool.cc bridgeportiomain.cc bridgeportlube.cc bridgeportspin.cc bridgeporttool.cc cppio.c cppio.hh dumbio.cc emcio.hh extbridgeportio.c extminimillio.c extppmcio.c inb.c iosh.cc minimillaux.cc minimilliomain.cc minimilltool.cc outb.c ppmcparport.c ppmcparport.h tkio.tcl Log Message: Much of this was premature --- Makefile DELETED --- --- bridgeportaux.cc DELETED --- --- bridgeportcool.cc DELETED --- --- bridgeportiomain.cc DELETED --- --- bridgeportlube.cc DELETED --- --- bridgeportspin.cc DELETED --- --- bridgeporttool.cc DELETED --- --- cppio.c DELETED --- --- cppio.hh DELETED --- --- dumbio.cc DELETED --- --- emcio.hh DELETED --- --- extbridgeportio.c DELETED --- --- extminimillio.c DELETED --- --- extppmcio.c DELETED --- --- inb.c DELETED --- --- iosh.cc DELETED --- --- minimillaux.cc DELETED --- --- minimilliomain.cc DELETED --- --- minimilltool.cc DELETED --- --- outb.c DELETED --- --- ppmcparport.c DELETED --- --- ppmcparport.h DELETED --- --- tkio.tcl DELETED --- |
From: <pa...@us...> - 2003-07-06 22:59:00
|
Update of /cvsroot/emc/rcslib/src/cms In directory sc8-pr-cvs1:/tmp/cvs-serv16540/src/cms Modified Files: Makefile Makefile.lib cms_cfg.cc Log Message: Someone missed a closing #endif Index: Makefile =================================================================== RCS file: /cvsroot/emc/rcslib/src/cms/Makefile,v retrieving revision 4.49 retrieving revision 4.50 diff -C2 -d -r4.49 -r4.50 *** Makefile 23 Jun 2003 13:40:39 -0000 4.49 --- Makefile 6 Jul 2003 22:58:57 -0000 4.50 *************** *** 72,76 **** COMMON_SRCS = \ cms.cc \ - cms_datetime.cc \ cmsdiag.cc \ nmldiag.cc \ --- 72,75 ---- Index: Makefile.lib =================================================================== RCS file: /cvsroot/emc/rcslib/src/cms/Makefile.lib,v retrieving revision 4.55 retrieving revision 4.56 diff -C2 -d -r4.55 -r4.56 *** Makefile.lib 2 Jul 2003 15:34:04 -0000 4.55 --- Makefile.lib 6 Jul 2003 22:58:57 -0000 4.56 *************** *** 83,87 **** crypt2.o \ cmssvrp.o \ - cms_datetime.o \ nmlqr.o \ cms_xml_up.o --- 83,86 ---- Index: cms_cfg.cc =================================================================== RCS file: /cvsroot/emc/rcslib/src/cms/cms_cfg.cc,v retrieving revision 4.43 retrieving revision 4.44 diff -C2 -d -r4.43 -r4.44 *** cms_cfg.cc 23 Jun 2003 13:40:39 -0000 4.43 --- cms_cfg.cc 6 Jul 2003 22:58:57 -0000 4.44 *************** *** 77,80 **** --- 77,81 ---- #undef CMS_CFG_USE_RTLMEM #endif + #endif #ifdef CMS_CFG_USE_RTLMEM |