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
(14) |
Nov
|
Dec
|
From: <ray...@us...> - 2003-07-05 01:51:23
|
Update of /cvsroot/emc/documents/lyx In directory sc8-pr-cvs1:/tmp/cvs-serv8275 Added Files: LyX_Notes.lyx Log Message: Writer notes for documentation --- NEW FILE: LyX_Notes.lyx --- #LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass book \language english \inputencoding default \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 \paragraph_separation skip \defskip smallskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 2 \paperpagestyle default \layout Chapter \start_of_appendix Notes on LyX and docbook \layout Standard This file has been produced from a master that is written using LyX and is kept in the documents module at Sourceforge.net. That document is written using a plain book layout and the bookman font. There are a few notes below for developers who wish to edit this text. \layout Enumerate Cut'n paste table and figure methods to the relevant chapters. \layout Enumerate Although *.eps graphics are claimed to be required for rendering - These are spec'ed as *png in HTML output - Images can in fact use any valid extension which will be echoed in the output. \layout Enumerate Bare in mind that if a pdf document is required, the images need to be in a postscript format first. \layout Enumerate Perhaps an effort should be made to convert ALL images to png as a matter of course. \layout Standard Conversion of images is a simple matter of using Imagemagic from the command line with :- \layout Standard \family typewriter \shape italic \size small \color black convert image.gif image.eps \newline convert image.gif image.png \layout Standard Using anything other than *.eps can cause problems with ghostscript on startup, and also some problems with generating pdf docs. \layout Subsection Fonts \layout Itemize Bookman is the default font used in all EMC handbooks. \layout Itemize Normal text - block as standard 10 point. \layout Itemize Excerpts from ini files and sources - Smaller or Smallest Typewriter \layout Itemize Commands typed in at a command line - Smaller or Smallest Typewriter Italic \layout Itemize Output from above commands - Smaller or Smallest Typewriter Black \layout Standard Note - When more than one blank space is required between characters, use one or more \begin_inset Quotes eld \end_inset Protected Blank \begin_inset Quotes erd \end_inset from Insert -> Special Character. This will then be displayed correctly in the final printout. Failure to use Protected Blanks will result in 'strange' characters being printed ! \layout Standard Note - To avoid extra lines being inserted between each line of code or command output, terminate each line with a LineBreak (Ctrl-Return)in stead of the usual Return. It is not a good idea to use Protected Blanks at the beginning of these lines as the do not get reproduced very well. \the_end |
From: <ray...@us...> - 2003-07-05 01:49:16
|
Update of /cvsroot/emc/documents/lyx In directory sc8-pr-cvs1:/tmp/cvs-serv7939 Modified Files: Glossary.lyx Log Message: added kinematics from Sagar Index: Glossary.lyx =================================================================== RCS file: /cvsroot/emc/documents/lyx/Glossary.lyx,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** Glossary.lyx 21 Jun 2003 16:07:56 -0000 1.7 --- Glossary.lyx 5 Jul 2003 01:49:13 -0000 1.8 *************** *** 24,28 **** \paperpagestyle default ! \layout Title Glossary of Common Terms Used in the EMC Documents --- 24,28 ---- \paperpagestyle default ! \layout Chapter Glossary of Common Terms Used in the EMC Documents |
Update of /cvsroot/emc/documents/lyx In directory sc8-pr-cvs1:/tmp/cvs-serv7272 Added Files: User_BDI_Install.lyx User_Gcode_Basics.lyx User_Gcode_Computation.lyx User_Gcode_Coordinates.lyx User_Gcode_Mill_Canned.lyx User_Gcode_Tools.lyx User_Gcode_Variables.lyx User_GUI_Mini.lyx User_GUI_Tkemc.lyx User_Hardware.lyx User_Linux.lyx User_Whatis_EMC.lyx Log Message: modular files for User Handbook --- NEW FILE: User_BDI_Install.lyx --- #LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass book \language english \inputencoding default \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 \paragraph_separation skip \defskip smallskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 2 \paperpagestyle default \layout Chapter Installing The EMC from a Standard Distribution \layout Section BDI \layout Standard At the time that this was written there were three Brain Dead Install Distributi ons available. Don't be put off by the name Brain Dead. The name came from a thread on the CAD_CAM_EDM_DRO list, now at yahoogroups.com. 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 BDI 2.xx \layout Standard The BDI-2.18 uses packages from the Red Hat 6 series. The BDI is complete in itself so that nothing needs to be added to begin with. I run the 2.18 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 TNG \layout Standard 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 Live \layout Standard 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 --- NEW FILE: User_Gcode_Basics.lyx --- #LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass book \language english \inputencoding default \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 \paragraph_separation skip \defskip smallskip [...2896 lines suppressed...] Table 6 G and M Code Modal Groups \layout Standard There is some question about the reasons why some codes are included in the modal group that surrounds them. But most of the modal groupings make sense in that only one state can be active at a time. \layout Comment M words described here. \layout Section Order of Execution \layout Standard As you write g-code blocks you need to be aware that the order in which you write the words is not the order in which they will be executed. \the_end --- NEW FILE: User_Gcode_Computation.lyx --- #LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass book \language english \inputencoding default \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 \paragraph_separation skip \defskip smallskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 2 \paperpagestyle default \layout Chapter Programming With Computation \layout Standard (Write this) \the_end --- NEW FILE: User_Gcode_Coordinates.lyx --- #LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass book \language english \inputencoding default \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 \paragraph_separation skip \defskip smallskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 2 \paperpagestyle default \layout Chapter G92 Offsets and Coordinate Systems \layout Standard (here we describe these in detail) \the_end --- NEW FILE: User_Gcode_Mill_Canned.lyx --- #LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass book \language english \inputencoding default \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 \paragraph_separation skip \defskip smallskip [...1135 lines suppressed...] \layout Standard The second reason to use a canned cycle is that they all produce preliminary moves and returns that you can anticipate and control regardless of the start point of the canned cycle. \layout Comment Credits \layout Comment This page is a rather direct rip off of the relevant portion of the RS274NGC/RS2 74VGER documents from NIST. Thanks also to Dan Falck, Ron Wickersham, and Jon Elson for their comments on portions of this page. \layout Comment This page is maintained by Ray Henry Your comments and criticisms are welcome. It is part of the EMC Handbook and is covered under that GPLD copyright. \the_end --- NEW FILE: User_Gcode_Tools.lyx --- #LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass book \language english \inputencoding default \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 \paragraph_separation skip \defskip smallskip [...1332 lines suppressed...] Proctor at NIST and the cutter compensation web page of Jon Elson. \layout Standard Papers by Tom Kramer and Fred Proctor \newline http://www.isd.mel.nist.gov/personnel/kramer/publications.html \newline http://www.isd.mel.nist.gov/personnel/kramer/pubs/RS274NGC_22.pdf \newline http://www.isd.mel.nist.gov/personnel/kramer/pubs/RS274VGER_11.pdf \layout Standard Pages by Jon Elson \newline http://artsci.wustl.edu/~jmelson/ \newline http://206.19.206.56/diacomp.htm \newline http://206.19.206.56/lencomp.htm \the_end --- NEW FILE: User_Gcode_Variables.lyx --- #LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass book \language english \inputencoding default \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 \paragraph_separation skip \defskip smallskip [...2343 lines suppressed...] Such a program would be much longer and would require <restart> rather than <run>. \layout Standard As the EMC interpreter exists now, there is no good way to know which coordinate system will be used next without looking at the machine or remembering the offsets as loaded into each coordinate system. This code will also cause an error message if you attempt to run it after the nineth time. Since the loop variable is explicit, it can be reset at any time before the EMC is shut down by reloading the variable file. \layout Comment Credits \layout Comment This page is a part of the EMC Handbook and is covered by its GPLD copyright. It is maintained by Ray Henry. Comments, criticism, flames, additions, subtractions, and editing are welcomed. \the_end --- NEW FILE: User_GUI_Mini.lyx --- #LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass book \language english \inputencoding default \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 \paragraph_separation skip \defskip smallskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 2 \paperpagestyle default \layout Chapter Using The MINI Graphical Interface \layout Comment Describe the logic of tkemc. Show the screen and how to access configuration and scripts. \the_end --- NEW FILE: User_GUI_Tkemc.lyx --- #LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass book \language english \inputencoding default \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 \paragraph_separation skip \defskip smallskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 2 \paperpagestyle default \layout Chapter Using The TKEMC Graphical Interface \layout Comment Describe the logic of tkemc. Show the screen and how to access configuration and scripts \the_end --- NEW FILE: User_Hardware.lyx --- #LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass book \language english \inputencoding default \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 \paragraph_separation skip \defskip smallskip [...6406 lines suppressed...] \layout Standard John Sheahan \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 --- NEW FILE: User_Linux.lyx --- #LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass book \language english \inputencoding default \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 \paragraph_separation skip \defskip smallskip [...1160 lines suppressed...] \layout LyX-Code typescript \layout Standard In the directory in which you started the script program. After you are done running EMC you should enter the command \layout LyX-Code exit \layout Standard and a history of the complete session will be saved in a file named typescript. 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 to keep and compare the results. \the_end --- NEW FILE: User_Whatis_EMC.lyx --- #LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass book \language english \inputencoding default \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 \paragraph_separation skip \defskip smallskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 2 \paperpagestyle default \layout Chapter \begin_inset LatexCommand \label{first-section} \end_inset The Enhanced Machine Control \layout Section Introduction \layout Standard This book is intended for people who want to use the Enhanced Machine Controller to run a mill, lathe, router, or to control some other rather standard kind of machine. In order to get right into the essential task of operating it we have limited the amount of information about installation and setup. We assume that the user will install from one of the Brain Dead CD's. Machine wiring and setup is limited to what we refer to as a mini or benchtop mill that is powered by stepper motors and amps that use a single parallel port. \layout Standard If the user is interested in developing their own install using some other distribution of Linux or an other operating system, or applying the EMC to a more complex machine, they should study the Integrators Handbook where these topics are covered in greater detail. \layout Section History of the Software \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 to the developers. \layout Section Computer Operating Systems \layout Standard The EMC code can be compiled for a number of operating systems. The most 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 How the EMC Works \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 file ../images/whatstep1.eps width 3 60 flags 15 \end_inset \layout Caption \begin_inset LatexCommand \label{fig:Typical_machine} \end_inset Typical EMC Controlled Machine \end_float \layout Standard Figure \begin_inset LatexCommand \ref{fig:Typical_machine} \end_inset is a simple block diagram showing what a typical 3-axis EMC system might look like. This diagram shows a stepper motor system. The PC, running Linux as it's operating system, is actually controlling the stepper motor drives by sending signals through the printer port. These signals (pulses) make the stepper drives move the stepper motors. The EMC can also run servo motors via servo interface cards or by using an extended parallel port to connect with external control boards. \layout Standard \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 \end_inset \layout Caption \begin_inset LatexCommand \label{fig:Process_diagram} \end_inset Emc Process Diagram \end_float \layout Standard Figure \begin_inset LatexCommand \ref{fig:Process_diagram} \end_inset is a block diagram of how a personal computer running the EMC is used to control a machine with G-code \begin_inset LatexCommand \index{G-code} \end_inset . 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. \layout Standard G-code is sent to the interpreter which compares the new block with what has already been sent to it. The interpreter then figures out what needs to be done for the motion and input or output systems and sends blocks of canonical commands to the task and motion planning programs. \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 |
From: <ray...@us...> - 2003-07-05 01:38:39
|
Update of /cvsroot/emc/documents/lyx In directory sc8-pr-cvs1:/tmp/cvs-serv7204 Added Files: README.lyx README.txt Log Message: README files --- NEW FILE: README.lyx --- #LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass article \language english \inputencoding default \fontscheme bookman \graphics default \float_placement h \paperfontsize 10 \spacing single \papersize Default \paperpackage a4wide \use_geometry 0 \use_amsmath 0 \paperorientation portrait \secnumdepth 3 \tocdepth 3 \paragraph_separation skip \defskip smallskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \layout Title README \layout Section Organization of this directory \layout Standard This file has been produced from a master that is written using LyX and is kept in the documents module at Sourceforge.net. That document is written using a plain book layout and the bookman font. This SourceForge module contains the EMC documentation. \layout Section Master LyX Files \layout Standard There are three main or master files that are used to build the three handbooks. \layout Itemize \emph on Master_Developer.lyx \layout Itemize \emph on Master_Integrator.lyx \layout Itemize \emph on Master_User.lyx \layout Standard These are the master docs from which it is hoped that future handbook publicatio ns in HTML and PDF formats will be produced. These files use the LyX include command to put together sets of files which serve as chapters or appendices within each. Other combinations of these chapters could be developed using similar master files. \layout Section Chapter Files \layout Standard Chapter files intended for the user handbook have been named User_???.lyx to reflect the notion that they are intended to be placed within that handbook. Dev and Int are used in similar matter for chapters intended for those handbooks as well. \layout Standard Each chapter file is intended to cover a logical unit. Each begins with a single chapter name. \layout Section General Files \layout Standard Several general files like the glossary, faq, and copyright chapters are also included here and can be used in each of the master documents. \layout Section LyX Versions \layout Standard LyX 1.1.6fix4-1 was used to write these docs - If you wish to add to them, LyX can be downloaded from www.lyx.org. \layout Standard The latest release lyx-1.3.2 will read the docs, but according to the press release, files saved with lyx-1.2+ can not be read by lyx-1.1.6. Please bare this in mind should you wish to add to this repository. \layout Section LyX Notes \layout Subsection Path Names \layout Standard LyX seems to be unable to handle path names starting with ../ or ~/ so make a symbolic link /usr/share/lyx/EMC_images/ pointing to your documents/images/ directory. When generating a html document, absolute path names will be used, so you might want to do a search and replace on /usr/share/lyx/EMC_images. \layout Subsection Thoughts for contributors \layout Standard There are a few notes below for developers who wish to edit this text. \layout Enumerate Cut'n paste table and figure methods to the relevant chapters. \layout Enumerate Although *.eps graphics are claimed to be required for rendering - These are spec'ed as *png in HTML output - Images can in fact use any valid extension which will be echoed in the output. \layout Enumerate Bare in mind that if a pdf document is required, the images need to be in a postscript format first. \layout Enumerate Perhaps an effort should be made to convert ALL images to png as a matter of course. \layout Subsection Image conversion \layout Standard Conversion of images is a simple matter of using Imagemagic from the command line with :- \layout Standard \family typewriter \shape italic \size small \color black convert image.gif image.eps \newline convert image.gif image.png \layout Standard Using anything other than *.eps can cause problems with ghostscript on startup, and also some problems with generating pdf docs. \layout Subsection Fonts \layout Itemize Bookman is the default font used in all EMC handbooks. \layout Itemize Normal text - block as standard 10 point. \layout Itemize Excerpts from ini files and sources - Smaller or Smallest Typewriter \layout Itemize Commands typed in at a command line - Smaller or Smallest Typewriter Italic \layout Itemize Output from above commands - Smaller or Smallest Typewriter Black \layout Subsection White space \layout Standard When more than one blank space is required between characters, use one or more \begin_inset Quotes eld \end_inset Protected Blank \begin_inset Quotes erd \end_inset from Insert -> Special Character. You can also add these using <control><spacebar> from the keyboard. This will then be displayed correctly in the final printout. Failure to use Protected Blanks will result in 'strange' characters being shown and printed in pdf doucments! \layout Standard A normal enter starts a new paragraph in LyX. These will show up with extra lines between if you are using block mode or as an indented line if you are using that layout. To avoid extra lines being inserted between each line of code or command output, terminate each line with a LineBreak (Ctrl-Return)in stead of the usual Return. \layout Standard It is not a good idea to use Protected Blanks at the beginning of a paragraph as the do not get reproduced very well. \the_end --- NEW FILE: README.txt --- README 1 Organization of this directory This file has been produced from a master that is written using LyX and is kept in the documents module at Sourceforge.net. That document is written using a plain book layout and the bookman font. This SourceForge module contains the EMC documentation. 2 Master LyX Files There are three main or master files that are used to build the three handbooks. * Master_Developer.lyx * Master_Integrator.lyx * Master_User.lyx These are the master docs from which it is hoped that future handbook publications in HTML and PDF formats will be produced. These files use the LyX include command to put together sets of files which serve as chapters or appendices within each. Other combinations of these chapters could be developed using similar master files. 3 Chapter Files Chapter files intended for the user handbook have been named User_???.lyx to reflect the notion that they are intended to be placed within that handbook. Dev and Int are used in similar matter for chapters intended for those handbooks as well. Each chapter file is intended to cover a logical unit. Each begins with a single chapter name. 4 General Files Several general files like the glossary, faq, and copyright chapters are also included here and can be used in each of the master documents. 5 LyX Versions LyX 1.1.6fix4-1 was used to write these docs - If you wish to add to them, LyX can be downloaded from www.lyx.org. The latest release lyx-1.3.2 will read the docs, but according to the press release, files saved with lyx-1.2.0 can not be read by lyx-1.1.6. Please bare this in mind should you wish to add to this repository. 6 LyX Notes 6.1 Path Names LyX seems to be unable to handle path names starting with ../ or ~/ so make a symbolic link /usr/share/lyx/EMC_images/ pointing to your documents/images/ directory. When generating a html document, absolute path names will be used, so you might want to do a search and replace on /usr/share/lyx/EMC_images. 6.2 Thoughts for contributors There are a few notes below for developers who wish to edit this text. 1. Cut'n paste table and figure methods to the relevant chapters. 2. Although *.eps graphics are claimed to be required for rendering - These are spec'ed as *png in HTML output - Images can in fact use any valid extension which will be echoed in the output. 3. Bare in mind that if a pdf document is required, the images need to be in a postscript format first. 4. Perhaps an effort should be made to convert ALL images to png as a matter of course. 6.3 Image conversion Conversion of images is a simple matter of using Imagemagic from the command line with :- convert image.gif image.eps convert image.gif image.png Using anything other than *.eps can cause problems with ghostscript on startup, and also some problems with generating pdf docs. 6.4 Fonts * Bookman is the default font used in all EMC handbooks. * Normal text - block as standard 10 point. * Excerpts from ini files and sources - Smaller or Smallest Typewriter * Commands typed in at a command line - Smaller or Smallest Typewriter Italic * Output from above commands - Smaller or Smallest Typewriter Black 6.5 White space When more than one blank space is required between characters, use one or more "Protected Blank" from Insert -> Special Character. You can also add these using <control><spacebar> from the keyboard. This will then be displayed correctly in the final printout. Failure to use Protected Blanks will result in 'strange' characters being shown and printed in pdf doucments! A normal enter starts a new paragraph in LyX. These will show up with extra lines between if you are using block mode or as an indented line if you are using that layout. To avoid extra lines being inserted between each line of code or command output, terminate each line with a LineBreak (Ctrl-Return)in stead of the usual Return. It is not a good idea to use Protected Blanks at the beginning of a paragraph as the do not get reproduced very well. |
From: <ray...@us...> - 2003-07-05 01:37:33
|
Update of /cvsroot/emc/documents/lyx In directory sc8-pr-cvs1:/tmp/cvs-serv7119 Added Files: Master_Developer.lyx Master_Integrator.lyx Master_User.lyx Log Message: master files for three handbooks --- NEW FILE: Master_Developer.lyx --- #LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass book \language english \inputencoding default \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 \paragraph_separation skip \defskip smallskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 2 \paperpagestyle default \layout Title The Enhanced Machine Control \newline Developer Handbook \newline \begin_inset Figure size 288 360 file /usr/share/lyx/EMC_images/Chips.eps width 2 4 flags 9 \end_inset \layout Author The EMC Team \begin_float footnote \layout Standard Ray Henry <re...@up...> serves as the general editor. Authors include Will Shackleford, Fred Proctor, Jon Elson, Don Mclain. \end_float \layout Standard Herein follows a collection of notes and comments on the EMC source code. Much of it is taken directly from the multitude of C sources, and some cribbed from various web sites and posts. This document should be considered \begin_inset Quotes eld \end_inset work in progress \begin_inset Quotes erd \end_inset 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 the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and one Back-Cover Text: "This EMC Handbook is the product of several authors writing for linuxCNC.org. As you find it to be of value in your work, we invite you to contribute to its revision and growth." A copy of the license is included in the section entitled "GNU Free Documentation License". If you do not find the license you may order a copy from Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 \layout Standard \begin_inset LatexCommand \tableofcontents{} \end_inset \layout Standard \begin_inset Include \include{Dev_Developer.lyx} \end_inset \layout Standard \begin_inset Include \include{Dev_Source.lyx} \end_inset \layout Standard \begin_inset Include \include{Dev_Drivers.lyx} \end_inset \layout Standard \begin_inset Include \include{Dev_Makefiles.lyx} \end_inset \layout Standard \begin_inset Include \include{Dev_Custom.lyx} \end_inset \layout Standard \begin_inset Include \include{Dev_emcsh.lyx} \end_inset \layout Standard \begin_inset Include \include{Dev_iosh.lyx} \end_inset \layout Standard \begin_inset Include \include{Dev_tkio.lyx} \end_inset \layout Standard \start_of_appendix \begin_inset Include \input{GPLD_Copyright.lyx} \end_inset \layout Chapter Index \layout Standard \begin_inset LatexCommand \printindex{} \end_inset \the_end --- NEW FILE: Master_Integrator.lyx --- #LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass book \language english \inputencoding default \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 \paragraph_separation skip \defskip smallskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 2 \paperpagestyle default \layout Title The Enhanced Machine Control \newline Integrator Handbook \newline \begin_inset Figure size 288 360 file /usr/share/lyx/EMC_images/Chips.eps width 2 4 flags 9 \end_inset \layout Author The EMC Team \begin_float footnote \layout Standard Ray Henry <re...@up...> serves as the general editor. Authors include Dan Falk, Will Shackleford, Fred Proctor, Jon Elson, Henkka Palonen. \end_float \layout Standard 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 version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and one Back-Cover Text: "This EMC Handbook is the product of several authors writing for linuxCNC.org. As you find it to be of value in your work, we invite you to contribute to its revision and growth." A copy of the license is included in the section entitled "GNU Free Documentation License". If you do not find the license you may order a copy from Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 \layout Standard \begin_inset LatexCommand \tableofcontents{} \end_inset \layout Standard \begin_inset Include \include{Int_Introduction.lyx} \end_inset \layout Standard \begin_inset Include \include{Int_Linux_setup.lyx} \end_inset \layout Standard \begin_inset Include \include{Int_EMC_Compile.lyx} \end_inset \layout Standard \begin_inset Include \include{Int_parport.lyx} \end_inset \layout Standard \begin_inset Include \include{Int_ppac.lyx} \end_inset \layout Standard \begin_inset Include \include{Int_stg.lyx} \end_inset \layout Standard \begin_inset Include \include{Int_Configuration.lyx} \end_inset \begin_inset Include \include{Int_pid.lyx} \end_inset \layout Standard \begin_inset Include \include{Int_ini_reference.lyx} \end_inset \layout Standard \begin_inset Include \include{Int_Stripchart.lyx} \end_inset \begin_inset Include \include{Int_remote_operation.lyx} \end_inset \layout Standard \start_of_appendix \begin_inset Include \include{faq.lyx} \end_inset \layout Standard \begin_inset Include \include{Glossary.lyx} \end_inset \layout Standard \begin_inset Include \include{GPLD_Copyright.lyx} \end_inset \layout Chapter Index \layout Standard \begin_inset LatexCommand \printindex{} \end_inset \the_end --- NEW FILE: Master_User.lyx --- #LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass book \language english \inputencoding default \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 \paragraph_separation skip \defskip smallskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 2 \paperpagestyle default \layout Title The Enhanced Machine Control \newline User Handbook \newline \begin_inset Figure size 288 360 file /usr/share/lyx/EMC_images/Chips.eps width 2 4 flags 9 \end_inset \layout Author The EMC Team \begin_float footnote \layout Standard Ray Henry <re...@up...> serves as the general editor. Authors include Dan Falk, Will Shackleford, Fred Proctor, Jon Elson, Henkka Palonen. \end_float \layout Standard 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 version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and one Back-Cover Text: "This EMC Handbook is the product of several authors writing for linuxCNC.org. As you find it to be of value in your work, we invite you to contribute to its revision and growth." A copy of the license is included in the section entitled "GNU Free Documentation License". If you do not find the license you may order a copy from Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 \layout Standard \begin_inset LatexCommand \tableofcontents{} \end_inset \layout Standard \begin_inset Include \include{User_Whatis_EMC.lyx} \end_inset \layout Standard \begin_inset Include \include{User_BDI_Install.lyx} \end_inset \layout Standard \begin_inset Include \include{User_Linux.lyx} \end_inset \layout Standard \begin_inset Include \include{User_Hardware.lyx} \end_inset \layout Standard \begin_inset Include \include{User_GUI_Mini.lyx} \end_inset \layout Standard \begin_inset Include \include{User_GUI_Tkemc.lyx} \end_inset \layout Standard \begin_inset Include \include{User_Gcode_Basics.lyx} \end_inset \layout Standard \begin_inset Include \include{User_Gcode_Tools.lyx} \end_inset \layout Standard \begin_inset Include \include{User_Gcode_Coordinates.lyx} \end_inset \layout Standard \begin_inset Include \include{User_Gcode_Mill_Canned.lyx} \end_inset \layout Standard \begin_inset Include \include{User_Gcode_Variables.lyx} \end_inset \layout Standard \begin_inset Include \include{User_Gcode_Computation.lyx} \end_inset \layout Standard \start_of_appendix \begin_inset Include \include{Glossary.lyx} \end_inset \layout Standard \begin_inset Include \include{GPLD_Copyright.lyx} \end_inset \layout Standard \begin_inset LatexCommand \printindex{} \end_inset \the_end |
From: <ray...@us...> - 2003-07-05 01:29:24
|
Update of /cvsroot/emc/documents/lyx In directory sc8-pr-cvs1:/tmp/cvs-serv6045 Added Files: Int_Configuration.lyx Int_EMC_Compile.lyx Int_ini_reference.lyx Int_Introduction.lyx Int_Linux_setup.lyx Int_parport.lyx Int_pid.lyx Int_ppac.lyx Int_remote_operation.lyx Int_stg.lyx Int_Stripchart.lyx Log Message: modular files for integrator handbook --- NEW FILE: Int_Configuration.lyx --- #LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass book \language english \inputencoding default \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 \paragraph_separation skip \defskip smallskip [...2195 lines suppressed...] \layout Standard you miscalculated or mistyped the distance. \layout Standard the motor body moved \layout Standard the shaft marker moved (it got me!) \layout Standard the input_scale setting is wrong on that axis now switch to auto mode (F4 or the mouse) and file->open the skeleton file. click run and watch it all whir. then its probably time to connect up more mechanics and test some more. \layout Standard John Sheahan \the_end --- NEW FILE: Int_EMC_Compile.lyx --- #LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass book \language english \inputencoding default \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 \paragraph_separation skip \defskip smallskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 2 \paperpagestyle default \layout Chapter Getting and setting up EMC software \layout Section Introduction \layout Standard The third hurdle that you face when you begin to set up the EMC is getting and installing the EMC software itself. Much of the EMC and RCSLIB have been placed on SourceForge.net in a concurrent versioning repository and are available for download from that site. Along with that change there has been a change in the nature of the distributio ns. \layout Standard Installation can be a daunting task to people new to Linux. The hardest part is getting the Real Time Linux patch up and running. After that, installing EMC is pretty easy. With that said, most people have found that the easiest way to install Real Time Linux and EMC is to go to Tim Goldstein's web page and use his install script for EMC on the linux 2.0.36 release. The information on this is under the download information link above. \layout Standard Ray Henry has written a page on installation of EMC on his computer running Mandrake 7.0 with a prepatched rtlinux-2.2 kernel. Ray doesn't have an install script but the process is documented fairly well and he has some text files that you can view or download. \layout Standard Brian Pitt has written a guide to installing Linux, Real-Time Linux, and EMC on a windows formatted hard drive using a Slackware installation. This looks like a reasonably easy way to try out the system. Look for installation CDROM's soon. \layout Section EMC Download Page \layout Standard Introduction \layout Standard You will find the most recent releases of the EMC on sourceforge.net in the EMC download area. The current releases of the EMC include a set of four files made by executing the packup file in the base directory. On my machines this is /usr/local/nist*. This command creates a master tar file that includes emc - the date of the packup - .tgz The current size of this file is around 3.5 to 4 meg. \layout Standard There are three files that contain the same release but are broken into floppy sized chunks. These are indicated by the same release date but use .aaa .aab .aac. You can download these directly to an msdos floppy and put them together on your linux machine using Ray Henry's description below. \layout Standard The last file to be included in the build is the .txt file which includes information about the release. \layout Comment Some additional notes are required for rtai kernels and BDI installs. \layout Section NIST Directory Description \layout Standard This directory contains a series of EMC releases in various formats. The releases are dated according to the convention: \layout Standard emc-DD-Mon-YYYY \layout Standard where \layout Standard DD is the two-digit day number, Mon is the three-letter month abbreviation, and YYYY is the four-digit year. \layout Standard So, emc-03-Mar-1999 signifies the March 3, 1999 release. This date will be used in the examples below. There will be at least two sets of releases, possibly more. The most recent is the one you should download, unless you know otherwise. \layout Standard The suffixes indicate the type of file: \layout Standard .txt The release notes for the associated release. Read this first to decide if you want this release. \layout Standard .tgz The full EMC release in compressed tar "tape archive" format. \layout Standard Unpack and install in the /usr/local/nist directory via: \layout Standard \family typewriter \size footnotesize \color black cp emc-03-Mar-1999.tgz /usr/local/nist \layout Standard \family typewriter \size footnotesize \color black cd /usr/local/nist \newline tar xzvf emc-03-Mar-1999.tgz \layout Standard .aa* The full .tgz release is several megabytes, currently about 4Mb. This is too big to fit on a floppy. If your Linux machine is not on the network, you can copy each of these files onto a floppy (they just fit), copy them onto your Linux box, and concatenate them together to form the full release, like this: \layout Standard \family typewriter \size footnotesize \color black cat emc-03-Mar-1999.aa* > emc-03-Mar-1999.tgz \layout Standard The .aaa file is the first part, the .aab is next, etc. The * wildcard will match alphabetically so this short form will expand the file names in the right order. \layout Section Links \layout Standard Here are a few links to help you get the latest EMC release. The first two are located on a server at NIST \begin_inset LatexCommand \index{NIST} \end_inset itself: \layout Standard For the Linux 2.0.36 kernel: \newline ftp://ftp.isd.mel.nist.gov/pub/emc/emcsoft/linux_2_0_36 \layout Standard For the Linux 2.2.13 kernel: \newline ftp://ftp.isd.mel.nist.gov/pub/emc/emcsoft/linux_2_2_13 \layout Standard This next link is located in the linuxcnc.org dropbox. I set this up in case the NIST server is down: \newline http://www.linuxcnc.org/dropbox/emc-31-Jan-2000.tgz \layout Standard Here is a text file containing release notes on the January version version: \newline http://www.linuxcnc.org/dropbox/emc-31-Jan-2000.txt \layout Section Ray's three disk download procedure. \layout Standard Once I have the three EMC files on disk, the next thing I'd do is make a directory called /usr/local/nist on the Linux machine. \layout Standard \family typewriter \size scriptsize mkdir /usr/local/nist \layout Standard Now move into that directory. \layout Standard \family typewriter \size scriptsize cd /usr/local/nist \layout Standard The prompt should show nist on the right end. You can stay in this directory and copy files to it. Insert the first floppy into your machine. \layout Standard \family typewriter \size footnotesize \color black mount -t msdos /dev/fd0 /mnt/floppy \layout Standard After a second of looking at your floppy it should return your screen to your root prompt. This mount command will allow you to work with floppy files in your /mnt/floppy directory. If you have already defined /dev/fd0 as having the msdos file type you may be able to skip the -t msdos part of the above command. \layout Standard \family typewriter \size footnotesize \color black cp /mnt/floppy/* /usr/local/nist \layout Standard After a bit of floppy disk grinding you should get the prompt again. Check to see that the file was copied. \layout Standard \size footnotesize \color black ls \layout Standard You should see a list of the files in the nist directory. At this point there will be just one emc-**-***-1999.aa* if you copied it. \layout Standard \family typewriter \size footnotesize \color black umount /dev/fd0 \layout Standard After a second you should get the prompt again. If you get a "can't umount message" it is probably because umount will not work when you are in the /mnt/floppy directory. \layout Standard When umount is successful you'll need to repeat the mount, copy, ls, and umount commands for each of the disks. You don't need to type in each command every time, at the prompt, he up arrow will scroll you back to the previous commands. Just up arrow to the one you want and [enter]. \layout Standard Now that you've got a directory listing all of the emc floppy files in it, all you have to do is put them together. You can do this with the cat command. It will be easiest if your prompt and the files are in your nist directory. \layout Standard \family typewriter \shape italic \size small \color black cd /usr/local/nist \shape default \size scriptsize \color default \newline \size default \color black Type in: \size scriptsize \color default \newline \shape italic \size small \color black cat emc* > emc-dd-Mmm-yyyy.tgz \layout Standard (you should replace the dd-=Mmm_yyyy with the proper release numbers.) After a bit of work you should see the prompt again. \layout Standard \family typewriter \shape italic \size small \color black ls -l \layout Standard Those are lower case L's not one's. The big tar file should be listed as a 3+ meg file with the .tgz extension. \layout Section INSTALLING THE NIST EMC SOFTWARE \layout Standard The NIST EMC software can be installed on Linux PCs, Sun Solaris boxes, or most any Unix machine. Currently the distribution is set up for Linux. \layout Standard 0. For LINUX installations only: Download and install the New Mexico Tech RT-Linux, real-time patches and modules. If you have a system using a 2.0.x kernel get the kernel sources for 2.0.36 and RT-Linux patches and modules version 09J. If you have a 2.2.x kernel use RT-Linux 2.0 and kernel 2.2.13. The kernel sources are available from http://www.kernel.org. The New Mexico Tech RT-Linux patches and modules are available from http://www.r tlinux.org. \layout Standard 0.a: Follow the instructions from www.rtlinux.org for installing the RT-Linux, however I have the following additional recommendations. - For RedHat Linux 5.2 users, check out Tim Goldstein \begin_inset LatexCommand \index{Tim Goldstein} \end_inset 's installation instructions at \newline http://206.19.206.56/installemc.htm - Get the archive with the pre-patched kernel sources rather than patching your own. - Before untarring the archive move any existing directory or link /usr/src/lin ux to a different name. - Untar the archive in the directory /usr/src. - After untarring the archive create a symbolic link so that /usr/src/linux points to the linux directory that was included in the archive. For example cd /usr/src ln -s rtlinux-2.0/linux linux \layout Standard - When you configure the kernel, under Loadable Module Support say Yes to set version info and to enable the Kernel module loader, and under Processor type say no to Symmetric Multi-processing support unless you actually have a multi-processor system. - Test the examples in the rtl directory, before trying to install EMC. Make sure the min and max values out of the measurements example are in the thousands and not in the millions. \layout Standard 1. Download the appropriate .tgz file from either the subdirectory for your platform. Read the README file within those subdirectories for the details. The linux_2_0_36 directory contains the code/binaries tested under linux kernel version 2.0.36 with RedHat 5.2 and the New Mexico Tech RT-Linux patch 09J. Th linux_2_2_13 directory contains the code/binaries tested under linux kernel version 2.2.13 with RedHat 6.1 and the New Mexico Tech RT-Linux patch 2.0. All the distributions contain the NIST Real-time Control System (RCS) header files and linkable library, EMC source code, and other miscellaneous files. The RCS source code is not included in this archive, since it would make it larger, but is available at http://www.isd.mel.nist.gov/projects/rcs_lib. \layout Standard 2. Log in to your Linux PC. Become root. \layout Standard 3. Copy the EMC distribution archive from wherever you downloaded it to into /usr/local, cd there, and unpack the archive. This looks like: \layout Standard \family typewriter \size scriptsize root> cp emc-<date>.tgz /usr/local root> cd /usr/local root> tar xzvf emc-<date>.t gz \layout Standard 4. You should see the following files in /usr/local: \layout Standard readme -- more instructions \newline packup -- a script for making the .gz files below \newline putback -- a script for checking the code back in to NIST \newline install -- a script for installing and compiling this software \newline compile -- a script for just compiling this software \newline clean -- a script for removing EMC/RCS software (not alltar.gz) \newline rcslib.inc -- a list of files used by packup to build the RCS archive \newline rcslib.exc -- ones not to include \newline emc.inc -- a list of files used by packup to build the EMC archive \newline emc.exc -- ones not to include \newline floppy.inc -- a list of these files, for building the floppy \newline skel.tgz -- the gzip archive for the directory skeleton \newline rcslib.tgz -- the gzip RCS archive \newline emc.tgz -- the gzip EMC archive \newline linux.tgz -- the full archive \layout Standard 5. Run the 'install' script: \layout Standard \family typewriter \size scriptsize root> ./install \layout Standard The install script creates the directory skeleton for emc/plat; unzips the RCS code; and unzips the EMC code and compiles it. \layout Standard 6. For linux_2_0_36 only: You will need to setup shared memory. The linux 2.2.13 distribution of EMC uses mbuff which is a more flexible and automatic method than the linux 2.0.36 described below. \layout Standard Edit the file lilo.conf to add the line indicated. You should set the mem value to 1 Mb less than the total amount of memory you have in your system. \layout Standard \family typewriter \size scriptsize image=/boot/vmlinuz label=linux root=/dev/hda3 append="mem=31m" \family default \size default <-- add this read-only \layout Standard For a 64 MB machine, the "31" would be "63", etc. \layout Standard Run lilo, as root: \layout Standard \family typewriter \size scriptsize root> lilo \layout Standard and reboot. \layout Standard 7. Run the Controller in simulation. \layout Standard To run the EMC code on a real machine, you need to set up all the hardware, create the wrappers or use ones provided, configure system parameters via the INI files, and code up the discrete I/O controller or use one provided. However, you can just run a simulation "out of the box." \layout Standard This is done by running the bash script, emc.run, from the top-level emc directory. \layout Standard The script will run several programs in the background, and then start a graphical user interface. There are several different interfaces that can be configured, but the current default tkemc is shown in tkemc.gif in this directory. \layout Standard Before you can do anything you will need to come out of E-STOP (press the <F1> key) and turn the machine on (press the <F2> key). \layout Standard You can then jog the axis using the arrow keys and page up/page down. Press F4 to go to Auto mode where you can run rs274ngc G-code part programs. The example programs are in the programs subdirectory. cds.ngc is a standard circle-diamond-square program. \layout Standard You may want to run tkbackplot or emcplot3d (not yet available) to better visualize what is going on. \layout Standard 8. Trouble Shooting. \layout Comment [FIXME] Put in lot's of info on how to trouble shoot EMC or at least a good reference. \layout Standard 9. Editing and Recompiling \layout Standard You may need to recompile the EMC code for a number of reasons. You may have modified the source code, or you may have downloaded just a few new files. To recompile, do the following: \layout Standard \family typewriter \size small root> \shape italic \size footnotesize cd /usr/local \shape default \size small \newline root> \shape italic \size footnotesize ./compile \layout Standard If you want to compile code in any of the subdirectories individually, cd to the EMC source directory and run individual makes: \layout Standard \family typewriter \size footnotesize \color black root> \color default \shape italic \color black cd /usr/local/emc/src \shape default \color default \newline \color black root> \shape italic make PLAT=linux clean depend install \the_end --- NEW FILE: Int_ini_reference.lyx --- #LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass book \language english \inputencoding default \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 \paragraph_separation skip \defskip smallskip [...2775 lines suppressed...] \layout Standard \color black \begin_inset LatexCommand \index{OPTIONS} \end_inset OPTIONS = -f emcstrip.conf.ferror \layout Standard \color black Options for emcstripchart ussually -f something.conf. This file says which variables to plot, colors etc. -u changes the update rate. \layout Section \the_end --- NEW FILE: Int_Introduction.lyx --- #LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass book \language english \inputencoding default \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 \paragraph_separation skip \defskip smallskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 2 \paperpagestyle default \layout Chapter \begin_inset LatexCommand \label{first-section} \end_inset Introduction \layout Standard This handbook describes compiling the EMC from source and set up for specific kinds of machines. \layout Standard (flesh this out using current machine parameters) \the_end --- NEW FILE: Int_Linux_setup.lyx --- #LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass book \language english \inputencoding default \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 \paragraph_separation skip \defskip smallskip [...1573 lines suppressed...] \layout Standard \begin_inset Figure size 360 211 file /usr/share/lyx/EMC_images/konsol03.eps width 2 5 flags 9 \end_inset \layout Standard You can navigate around the menu choices with the up and down arrow keys. You can also navigate across the select, exit, and help items with the left and right arrow keys. Whenever a parameter is highlighted, you can select it with y, deselect it with n, or make it a module with m. The help files are very helpful here. \the_end --- NEW FILE: Int_parport.lyx --- #LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass book \language english \inputencoding default \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 \paragraph_separation skip \defskip smallskip [...1391 lines suppressed...] \family typewriter \size small Spare \end_inset </cell> </row> </lyxtabular> \end_inset \layout Standard Stepper motor control is implemented using a second real-time task that runs at 100 microseconds. This task writes the parallel port output with bits set or cleared based on whether the a pulse should be raised or lowered. This gives an effective period of 200 microseconds for a full up-and-down pulse, or a 5 kilohertz frequency. \the_end --- NEW FILE: Int_pid.lyx --- #LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass book \language english \inputencoding default \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 \paragraph_separation skip \defskip smallskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 2 \paperpagestyle default \layout Chapter PID Axis Tuning \layout Standard Axis tuning is a critical part of most emc setups. Until recently we have been able to ignore tuning by using steppers and steppermod.o. You can still do this but the newer motion files, freqmod and smdromod allow stepper users much smoother and better control of axis motion. Smdromod.o even allows stepper users to feed back actual position using a home built feedback board. (no more lost steps) But the consequence of these newer motion systems is that users must now learn some of the basics of axis tuning. \layout Standard The description of PID tuning that follows is not intended to be exhaustive or rigorous but should get the beginning emc user started with these newer motion files and at least able to keep their axis from tripping out on overtravel. This page assumes that the reader is acquainted with the emc.ini file where tuning values are stored for each axis. \layout Standard There are a number of excellent internet resources that will extend this description. A few links are listed at the end of this page. There are several auto tuning and computational tuning procedures but these have not been tested with EMC. \layout Standard P - proportional, I - integral, and D - derivative are three common mathematical techniques that are applied to the task of getting a working process to follow a setpoint. In the case of EMC the process we want to control is actual axis position and the setpoint is the commanded axis position. PID is NIST's chosen way to connect these two things. \layout Standard A mechanical system, something like a pantograph, will serve to illustrate the control problem. With a pantograph you can trace the stylus around a pattern and the pen or pencil will produce the result. The stylus is the commanded position, the pen the actual. The pattern need not be the same size as the resulting drawing. That relationship depends upon the linkage. \layout Standard With a pantograph, we can consider the question, "How good is the drawing?" The answer depends upon several factors, speed of movement, detail in the pattern, sharpness of the stylus and pencil, size of stylus and pencil, differences in size between the two, etc. \layout Standard When we get to electrical or electronic systems like EMC, instead of a hard linkage between the pattern and the product, we have signals created by reading nc program code, reading jog commands, or reading position from a digital image or drawing. These signals are sent to an amplifier and its output is sent to a motor. Most often the mechanical system driven by the motor has a feedback device that returns actual position to EMC. \layout Standard EMC, or any computer controlled machine. should be thought of as a pantograph made with rubber bands in place of some of the rods and squishy bearings for some of the joints. PID tuning allows the integrator to control the stiffness of the rubber bands and the squashiness of the joints. With a mechanical pantograph the forces are all controlled by the fingers on the stylus. If the fingers are capable of 0.0001 offsets in motion then the results will be that fine. Starting, stopping, and changing the direction of the pen's inertia is also totally dependent upon the fingers of the operator. But with an electrical system, all of these things must be accounted for in the signals that produce the motion. \layout Standard In any system that reproduces motion, one of the major "goodness" factors is what we call following error. Following error is a way of quantifying how close the actual position is to the commanded position while the tool follows the range of movements that can be commanded. \layout Section Ray's Experience \layout Standard All three variables (6+ really) look at what is happening between commanded and actual position in the emc. My comments below may be a bit unsatisfying for those who are accustomed to very precise things but they come from a number of years of twiddling with servo controls. \layout Standard P - process variable. \layout Standard --------------------- \layout Standard This is the gain control. It is a bit like the volume on a music system. If it is set too low you can't follow the lyrics. If it's set too high the windows rattle and the neighbors fuss. \layout Standard Some authors refer to P as proportional band. Think of it as a pair of lines, one ahead of the commanded position and one behind it. Actual position should be somewhere between the lines. If the actual position is farther behind then that below line the controller will run the axis flat out to reach the slower line. Conversely, if the actual position is ahead of the above line the controller will do all it can to bring actual position down to that upper bound. \layout Standard As long as the actual position is between the lines, the controller will ramp gain up and down so that actual approaches commanded. \layout Standard The larger the P number the narrower the space between these lines. Set P too low and your axis works like a dedicated couch potato during super bowl or world soccer finals -- even a fire may not rouse it. This condition is rather easy to spot because the axis is sluggish. \layout Standard Set P too high and your axis will develop palsy. On most machines you can hear this condition by putting your ear to the motor. You may want to do this when others aren't watching -- or use a stethoscope or a long socket extension -- or perhaps the graph function. \layout Standard Palsy will sound like a hum or grind when the motor is sitting still or moving very slowly. You can also feel palsy if you wrap your hand around the ball screw or grip the drive belt or pulley. (disclaimer -- This demonstration is done by a professional with only three remaining fingers, don't try this at home) \layout Standard Deadband may mask too much P when a motor is sitting still so you may want to move the axis very slowly and listen to the sounds around each step. If the axis keeps up with commanded position at high speed and during accelerat ion and there is not a lot of ringing, grinding, jumping at very low speed, then you are real close. \layout Standard \SpecialChar ~ \layout Standard I - Integral variable. \layout Standard ---------------------- \layout Standard Integral works a bit like a shock absorber. Any change in either actual or commanded position gets rounded off or averaged in so that acceleration/deceleration brought about by P is absorbed and released more slowly over time. \layout Standard No integral and you get the full P effect of change in commanded position. Too much integral and the axis seems to wander off on it's own without much regard for P. A little integral may smooth out some of the frequency jumps when a stepper is running right near one of those troublesome rates. \layout Standard \SpecialChar ~ \layout Standard D - Derivative variable \layout Standard ----------------------- \layout Standard Derivative works like passing gear for acceleration or a jake-brake for stopping. Whenever commanded position changes rapidly, d will really kick the amp/motor in the *** to follow the rate-of-change of the axis command rather than the difference between commanded and actual position. \layout Standard Derivative works against inertia so if you've got lots of iron to start or stop dial some in. But derivative will increase palsy so you have to balance it against gain. \layout Standard \SpecialChar ~ \layout Standard FF1-3 Feed Forward variables \layout Standard ------ \layout Standard I know very little about the effect of these variables. My first experience with them is while using EMC. I need to include an idea from Jon Elson and his work with servos and his Bridgeport. He has used a value up to 8.0 for FF1 with a somewhat reduced acceleration to very successfully minimize following error. The relevant portions of his ini file are: \layout Standard \family typewriter \size small DEFAULT_VELOCITY =\SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ 0.75 \newline MAX_VELOCITY =\SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ 1.5 \newline DEFAULT_ACCELERATION =\SpecialChar ~ \SpecialChar ~ 2.0 \newline MAX_ACCELERATION =\SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ 2.0 \newline MAX_VELOCITY =\SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ 1.2 \newline P =\SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ 100.000 \newline I =\SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ 0.000 \newline D =\SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ 0.000 \newline FF0 =\SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ 0.000 \newline FF1 =\SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ 7.500 \newline FF2 =\SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ 0.000 \layout Standard Your results will no doubt vary. \layout Standard \SpecialChar ~ \layout Standard \family typewriter \size small T - Test \layout Standard -------- \layout Standard The final proof of tuning is in the cutting. So after your best guess with all the watching, hearing, feeling done to each axis, get out a chunk of soft aluminum, a small end or ball mill, and begin to mill circles or arcs that pass 90 degrees between each pair of axis. I like outside circles because you can hold them up to the light and see how the finish looks near the quadrants. \layout Standard Digital systems will give you some steps as one axis approaches zero and the other approaches the set feedrate so don't expect a perfect mirror arc finish. Backlash and backlash compensation also affect the appearance here. Servo drives will work better than steppers. (digital vs analog) But the smoother the saw teeth the better. \layout Standard Be prepared to spend some metal on this! And make a list of your settings, changes, and a better/worse judgment about the result of each change. On occasion I've spent pages of paper and made piles of swarf to get a stubborn machine to where I wanted it. \layout Standard \SpecialChar ~ \layout Standard Good luck and may the electromotive force be with you. \layout Standard Ray <re...@up...> \layout Section Tim's Experience \layout Standard EMC now is handling steppers as if they were servos from what I understand (this is with freqmot, with or without DRO feedback) and using freqmot I can confirm that P,I, and D definitely have an effect on steppers. If I set P too low I get constant follow errors at any speed, If I set D to anything but 0 I start having a problem with the motors stalling on acceleration (probably because this setting is trying to make the motor get up to speed faster than the stepper can accelerate). I have played with various I settings between 1 and 1000 and it does seem to help me get even higher feed rates, but I have not really figured a way to see what works best on this one. \layout Standard You can easily play with these settings by going to the settings menu and selecting calibration. The values will be for the axis that is currently selected and will take effect as soon as the calibration window is closed. Make sure you remember or write down the setting you settle on as the values you put in the calibration window are not saved back to your .ini file, you have to edit them in manually. \layout Standard Tim \newline Date: Sat, 4 Mar 2000 14:28:49 -0700 \newline From: "Tim Goldstein" <ti...@kt...> \layout Section Jon's Experience \layout Standard I also found while working with the servo tuning (last summer)... FF1 (I think that is the non-zero FFn parameter in my .ini file) is VERY effective in improving following error, and is, in fact, BETTER than a PID could do, because, of course, it knows IN advance what is GOING to happen at a velocity change! I was able to get following error down to under .001" under practically all circumstances by setting FF1 to a small value, somewhere between 4 and 7.5 or so. You can see my graph at http://www.artsci.wustl.edu/~jmelson/servo.html showing a jog move at 90 IPM. Oh, yes, one other thing, the acceleration parameters in the default EMC .ini file are ridiculous. I had been ignoring jerky motion when manually jogging when I started working with EMC, until I broke a brand new toothed belt on my Y axis. This led me to realize the system was demanding much too much acceleration, and I slowed it down quite a bit. No belts have broken since then. \layout Standard Jon \newline Date: Wed, 14 Jun 2000 17:38:00 -0500 \newline From: Jon Elson <jm...@ar...> \layout Standard --2-- \layout Standard Joh...@ao... wrote: \layout Standard > Yes, it's fast, it's definitely an industrial-strength milling center. It's \newline > not a humming sound it's more like a grinding or laboring sound. It runs in \newline > my mind that it ran more "freely" before, but it might just be a result of \newline > the compensation - maybe I didn't notice when it was slamming back and forth. \layout Standard Well, I still think it is what I saw, but maybe not. Does the sound change at different jog speeds? What is your P parameter in the axis setup, in fact what are all your parameters in there? If the P gain is set too high, it could cause rough operation. Yes, it could be tuning of the servo amp, too. I found it was best to run with a conservative P, I and D set to zero, and a small value on FF1, about 5.0 This gave me really minute following error and quite solid position holding, without any instability. \layout Standard > I think the next step is going to be working with the logging program, to \newline > determine the fine tuning of the amps. Then, I think I saw in a post from \newline > Fred, that there is supposed to be a program that helps come up with the PID \newline > values. \layout Standard Unless they've done some serious repair in the PID department, the I and D are programmed wrong, and do not do anything useful. Unfortunately, the controls theory used in EMC gave a steady-state, or at least one quadrant, definition of PID algorithms. The problem is this is a motion control problem in all FOUR quadrants. And, Integral history from when you were in a different quadrant is not only irrelevant, but makes your solution MORE inaccurate, instead of reducing error. But, pedantically, because you are SUPPOSED to use the entire history of the system, EMC holds that you MUST use the entire history, even if it fails to perform the necessary goal. \layout Standard The Derivative term probably works, in the general sense, but since this is a quantized system, and in slow motion there are so few encoder \begin_inset LatexCommand \index{encoder} \end_inset counts per servo cycle, the Derivative term from each encoder cycle has WAY too much quantization noise to perform well. It needs to be smoothed a bit. Fortunately, they put in the FF0, FF1 and FF2 terms, which are both mathematica lly pure, and of great use. FF1 is actually better than some combination of I and D, because it can respond BEFORE error develops, as in a rapid acceleration of the system from rest. The I term won't know what is going on for minutes, because it is taking the average of millions of tiny errors past, and due to the quantization, you can't set the D term very high, or the system gets unstable. As long as the servo amps are well behaved, just using P and FF1 has worked VERY well for me. \layout Standard So, I don't know what the auto-tune program will do with those parameters. If good, it will also find them to be unhelpful, and leave them close to zero. \layout Standard Jon \newline Date: Wed, 12 Jul 2000 02:23:39 -0400 (EDT) \newline From: Jon Elson <jm...@ar...> \layout Section Fred's PID Report \layout Standard I had a guest researcher here at NIST for a few months, looking into automatic system identification and PID tuning. I have a few MS Word pictures showing what he did that I WinZip'ed up and put on the FTP site in the emc/emcsoft directory, as "pidtuning.zip". They're 8.5x11 posters that show the theory and some figures for our Bridgeport machine. \layout Standard It works for systems without a tachometer. We were trying to get the performance (following error) to be equal to a machine with tachometers, to reduce cost. \layout Standard The idea is to hit the axis with a step voltage, and log the resulting position v. time. The curve rises to some steady state velocity. The steady state velocity is a function of applied voltage. The time to, say, 75% of steady state is the same. For several runs, you can get an average of steady-state velocity per applied voltage, and average rise time. These can be used to deduce PID gains. \layout Standard The student, Kees ("Case") Stolk, from the University of Twente in the Netherlan ds, wrote a Tcl/Tk script that automates much of the process, including going into machine-off, opening the log, running the DAC out command, saving the log, storing multiple runs, and popping up PID gains. It's pretty slick. I'll put this up on the FTP site once I verify that it works with the new release. \layout Standard I ran this on the Bridgeport and the resulting gains outperformed my manually tuned gains for current mode (no tach), and equaled the manually tuned gains (with a FF1 feedforward term) in velocity mode (with a tach). \layout Standard Date: Mon, 6 Mar 2000 18:05:59 -0500 (EST) \newline From: Fred Proctor <pr...@cm...> \layout Section Links \layout Standard \size small \color black http://www.manufacturing.net/magazine/ce/archives/1998/ctl0301.98/03a305.htm \newline http://www.expertune.com/tutor.html \newline http://www.expertune.com/PIDspec.htm \newline http://www.manufacturing.net/magazine/ce/archives/1998/ctl0801.98/08abas.htm \newline http://members.tripod.com/aabi/index.htm \newline http://members.tripod.com/aabi/optimumpid/optimum_menu.htm \newline http://www.ctc-control.com/tutorials/pid.htm \newline http://www.newport.com/Motion_Control/Tutorial/Servo_Tuning_Principles \newline \SpecialChar ~ \hfill /Servo_Tuning_Principles/description.php \hfill \newline PID tuning: Lieslehto, J., Tampere University of Technology, Tampere, Finland, (used by Kees ("Case") Stolk) \layout Standard This last one is a good web reference for PID tuning, with Java applets. \layout Section Print Resources \layout Standard "Process Control Systems" by F. Greg Shinskey, available from the Foxboro Training Institute at 1-888-FOXBORO. \layout Standard Controller Tuning and Control Loop Performance: A Primer, Second Edition, Subtitled PID Without the Math, by David W. St. Clair (Retired DuPont Engineer) \layout Standard Process Instrumentation Applications Manual, by Bob Connel, McGraw-Hill Book Co., 1996 \layout Standard References used by Kees ("Case") Stolk while developing NIST tuning software: \layout Standard Modeling of DC Motors, Kuo, Benjamin C., Automatic Control Systems, Prentice-Hall , Englewood Cliffs, NJ, 1981. \layout Standard Nonlinear Least Squares Model Fitting, Press, William H. et al, Numerical Recipes in C: the Art of Scientific Computing, Cambridge University Press, Port Chester, NY, 1992. \layout Standard PID controllers, Åstrom, K., and Haglund, T., PID Controllers: Theory, Design and Tuning, Instrument Society of America, Research Triangle Park, NC, 1995. \layout Standard "Internal Model Control", Rivera, M., Internal Model Control for PID Controller Design, 1986.Credits \layout Comment This page is based on a recent post to em...@ni... and is maintained by Ray Henry Your comments and criticisms are welcome. Examples with drawings or screen capture would be really nice here. As would additional experience with axis tuning. \the_end --- NEW FILE: Int_ppac.lyx --- #LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass book \language english \inputencoding default \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 \paragraph_separation skip \defskip smallskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 2 \paperpagestyle default \layout Chapter PICO Parallel Port Motion Control \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://www.picosystems.com} \end_inset . This company makes a set of cards that have been integrated into the EMC and have been used in several installations. Here we attempt to document matters relating to this set of cards. The organization is FAQ-like at this point, addressing specific questions or aspects of using the PPAC. \the_end --- NEW FILE: Int_remote_operation.lyx --- #LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass book \language english \inputencoding default \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 \paragraph_separation skip \defskip smallskip [...1144 lines suppressed...] to be \begin_inset Quotes eld \end_inset shared \begin_inset Quotes erd \end_inset with the aid of Samba \begin_inset LatexCommand \index{Samba} \end_inset which will add further to the problem of path names. \layout Standard In conclusion, Whilst operating EMC across a network is possible, using a Windows computer will require some editing of Tkemc to change the way file and path names are handled. \the_end --- NEW FILE: Int_stg.lyx --- #LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass book \language english \inputencoding default \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 \paragraph_separation skip \defskip smallskip [...3524 lines suppressed...] n - ADC noise demo \newline N - ADC autozero OFF \newline e - Encoder demo \newline E - Zero Encoders \newline x - Index pulse demo \newline X - Index latch demo \newline l - External Latch Test \newline y - IRR test, continually reset index latch \newline 1..8 - Set default Axis \newline q - Quit \the_end --- NEW FILE: Int_Stripchart.lyx --- #LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass book \language english \inputencoding default \fontscheme bookman \graphics default \float_placement h \paperfontsize default \spacing single \papersize Default \paperpackage a4wide \use_geometry 0 \use_amsmath 0 \paperorientation portrait \secnumdepth 5 \tocdepth 5 \paragraph_separation skip \defskip smallskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 2 \paperpagestyle default \layout Chapter EMC Stripchart \layout Standard Stripchart can be a valuable tool for the machine integrator because it can show many of the EMC variables in much the same way that an external oscilloscope will. \layout Standard The EMC stripchart program is a modified version of GNOME stripchart program "gstripchart". This document is a modified copy of the GNOME stripchart documentation. For the original source code and/or documentaton goto www.gnome.org. \layout Section Setting up Stripchart. \layout Standard (Need to add required packages and setup and operating procedures here) \layout Section EMC Modifications \layout Standard The following modifications were made to gstripchart program to turn it into emcstripchart. \layout Itemize The "nml" configuration file option was added. \layout Itemize The "emcmot" configuration file option was added. \layout Itemize The "minimum" configuration file option was more completely implemented. \layout Itemize An additional update timeout was added. This allows the data to be polled more often than display is refreshed. The text display is updated by a timer not just by clicking on it. \layout Itemize The buttons "pause" and "go" were added. (They only pause and restart the plotting to give you more time to look at something, the EMC is not paused.) \layout Itemize The "bottom" column was added. When the scale is readjusted, if the starting the starting minimum equaled the negative of the starting maximum the scale is modified so that it will maintain this symmetry about zero. \layout Itemize Several of the defaults were changed. \layout Itemize The bindtextdomain code was disabled. \layout Itemize The original set of Makefile stuff using automake and autoconf was trashed to use a more EMC/RCS style makefile. \layout Itemize Adds the -u --update-interval command line option. \layout Itemize Linked in stripnmli.cc and stripemcmoti.cc and the RCS and EMC libraries. \layout Section Hints for EMC users. \layout Standard Click on the graph with the left mouse button to bring up the "key". The horizontal scale is indicated with the little black tick marks. The distance between ticks is aproximately 1 second. The vertical scale is different for each variable. The top is the value that variable would have to have to be plotted at the top of the scale, the bottom is the value the variable would have to have to be plotted at the bottom. Initially the top and bottom equal the maximum and minimum from the configurati on file, however if the maximum or minimum are exceeded the scale will change to keep the plot in the visible part of the graph. The file emcstrip.conf.ferror configures emstripchart to plot the following errors and high marks for the following errors. The normal build will skip this utility, to build it cd emc/src/stripchart and run "make". To make generic.run or ?.run start it every time you start EMC, base your run script on a version of generic.run that is newer than April 1, 2000 and add the following section to your .ini: \layout LyX-Code ; section for emc stripchart parameters---------------------- \layout LyX-Code [EMCSTRIP] \layout LyX-Code EMCSTRIP = emcstripchart \layout LyX-Code OPTIONS = -f emcstrip.conf.position \layout Section GNOME Stripchart Documentation \layout Standard The GNOME stripchart program charts various user-specified parameters as a function of time. Its main use is to chart system performance parameters such as CPU load, CPU utilization, network traffic levels, and the like. Other more ingenious uses are left as an exercise for the interested user. \layout Standard The gstripchart program periodically reads data from a file, extracts a value, and displays these values in one of several formats. The default format is a graphical display similar to that of a stripchart recorder. Hence the name, "gstripchart". \layout Standard On systems such as Linux, in which the system parameters are available in human-readable form in the /proc directory, the gstripchart program makes a dandy performance monitoring tool, similar to but more versatile than xload. \layout Standard Instead of being limited to a few standard performance parameters, the gstripcha rt program can plot any time-variant parameter than can be read from a file or pipe. This ability to read data from a pipe provides a very versatile and easy to use method of setting up custom displays. \layout Standard The gstripchart program determines the parameters to display by reading a configuration file. The gstripchart program will first look for a configuration file specified on the command line, then look for a file named gstripchart.conf in the current directory, then look for a file named .gstripchart.conf in the users home directory, then look for a file named /etc/gstripchart.conf. If no configuration file is found, the program is terminated. \layout Section Options \layout Standard There are a few command line switches that can be used to alter the behavior of the program. \layout Description -f, --config-file=FILE configuration file \layout Description -g, --geometry=GEOMETRY geometry \layout Description -i, --chart-interval=SECS chart update interval \layout Description -I, --chart-filter=SECS chart low-pass filter time constant \layout Description -j, --slider-interval=SECS slider update interval \layout Description -J, --slider-filter=SECS slider low-pass filter time constant \layout Description -M, --menubar add menubar \layout Description -S, --omit-slider omit slider \layout Description -t, --display-type=TYPE type of display none: no display is produced (for debugging); text: a textual numeric display is produced; graph: a textual graphic display is produced; gtk: use the default gtk-based graphic display. --class=CLASS FIXME --display=DISPLAY X display to use --gxid_host=HOST FIXME --gxid_port=PORT FIXME --name=NAME FIXME --no-xshm Don't use X shared memory extension --xim-preedit=STYLE FIXME --xim-status=STYLE FIXME \layout Description -u, --update-interval=SECS update interval to poll data \layout Description -?, --help Give this help list --usage Give a short usage message \layout Description -V, --version Print program version \layout Standard A more detailed description of some switches follows. \layout Description configuration file Specifies a file from which to read configuration information. If unspecified, the current working directory is checked for a file named "gstripchart.conf", the user's home directory is checked for a file named ".gstripchart.conf", and the /etc directory is checked for a file named "gstripch art.conf". The first such file found is used. \layout Description geometry A standard X11 geometry specification of the form WxH+X+Y. \layout Description chart-interval \layout Description slider-interval Specifies the time interval in seconds between updates to the chart window and slider window. If unspecified, the chart window will be updated every 5 seconds and the slider window will be updated every 0.2 seconds. \layout Description chart-filter \layout Description slider-filter Specifies the time constant in seconds to be used in low-pass filtering the data displayed in the chart or slider windows. A time constant of 0 seconds turns low-pass filtering off, which can result in a jumpy display. A time constant in the same range as the interval parameter, described above, is usually a good choice. Much larger values cause display updates to become sluggish. If unspecified, no low pass filtering is performed in either window. \layout Description menubar Adds an application menubar to the main window. Normally this is omitted, and the menu is popped up by right-clicking on the chart window. \layout Description omit-slider Causes the display of the slider window to be suppressed. \layout Section Configuration \layout Standard The configuration file has a paragraph of configuration information for each parameter to be ploted. Each of these paragraphs are comprised of a series of RFC-822 style "keyword: value" pairs, beginning with an "identifier:" line. A comment can be included by putting a sharp sign (#) in the first column of a line. \layout Standard The following keywords are available. Some are optional; some are only used by certain display types; many have reasonable default values, as described below. \layout Description identifier: Introduces a parameter definition, and assigns a name to the parameter. This line *must* be the first line of a parameter description. active: If a parameter is marked "active = no", it will be ignored. This provides a convenient way to disable a parameter without deleting it from a parameter file. \layout Description id_char: Provides a single-character abbreviation for a parameter. Currently unused, this is intended for the non-existant character-graphics display mode. \layout Description color: Determines the color to be used in displaying a parameter. The color names and their RGB values are taken from X11/rgb.txt. \layout Description filename: The file from which a parameter value is read. When a filename beginning with a "|" is supplied, input lines will be read from a pipe. \layout Description pattern: The pattern which identifies the line from which a parameter value is to be extracted. If no pattern is provided, the first line of the file is used. \layout Description fields: The number of fields to be split out of the first line which matches the pattern. Splitting is done on whitespace. \layout Description equation: An equation used to obtain the value to be ploted for this parameter. maximum: The largest value that can be displayed. Any value in excess of the maximum will be plotted at the top of the display. If omitted, a default value of 1.0 is used. \layout Description minimum: The smallest value that can be displayed. Any value less than the minimum will be plotted at the bottom of the display. If omitted, a default value of 0.0 is used. \layout Description nml: The name of the variable to read from NML to use for this plot. If an equation is specified this variable becomes keyword one or $1. Adding this keyword makes the filename and pattern keywords irrelavant. See the list of variables available. \layout Description emcmot: The name of the variable to read from EMCMOT to use for this plot. If an equation is specified this variable becomes field one or $1. Adding this keyword makes the filename and pattern keywords irrelavant. See the list of variables available. \layout Standard On each iteration, a value to be displayed is obtained for each parameter in the configuration file. The file named in the "filename" line is opened -- either as a pipe if the filename begins with a pipe character (|), or as a regular file otherwise -- and a line is read. \layout Standard If a pattern was specified, lines are read until one is found that contains the pattern string anywhere in the line. This line is split into the number of whitespace seperated fields specified in the "fields" line. Each of these fields is interpreted as a floating point number. \layout Standard A value is obtained by evaluating the "equation" line using these field values. The first (or only) value is denoted by $1, the next by $2, and so forth. The difference between the field values between the last and the current iteration is denoted by ~1, ~2, and so forth. The elapsed time in seconds between the last and current iteration is ~t. The requested update interval is $i (and the delta is ~i, but will always be zero). All the usual infix arithmatic operators are available. \layout Section libgtop \layout Standard If libgtop support has been compiled into the gstripchart program, a value can be obtained from this library. This provides a portable method of obtaining many system performance parameters. These are all signed long integer quantities, except for uptime, idletime, and the three loadavg values which are floating point values. \layout Standard The following libgtop parameters are available: \layout Subsection CPU Statistics \layout Standard cpu_total, cpu_user, cpu_nice, cpu_sys, cpu_idle, and cpu_freq \layout Subsection Memory Statistics \layout Standard mem_total, mem_used, mem_free, mem_shared, mem_buffer, mem_cached, mem_user, mem_locked \layout Subsection Swap Statistics \layout Standard swap_total, swap_used, swap_free, swap_pagein, swap_pageout \layout Subsection Uptime Statistics \layout Standard uptime, idletime \layout Subsection Loadavg Statistics \layout Standard loadavg_running, loadavg_tasks, loadavg_1m, loadavg_5m, loadavg_15m \layout Subsection Network Statistics \layout Standard net_pkts_in, net_pkts_out, net_pkts_total, net_bytes_in, net_bytes_out, net_bytes_total, net_errs_in, net_errs_out, net_errs_total \layout Standard Note that the network statistics don't use the libgtop library. Instead, the values are read directly from /proc/net/dev, and so are only available under Linux. \layout Section NML Variables \layout Standard This is the list of variables that can be read from NML. The array_index should be replaced with an appropriate integer. \layout Subsection Task \layout Itemize task.heartbeat, \layout Itemize task.mode \layout Itemize task.state, \layout Itemize task.execState, \layout Itemize task.interpState, \layout Itemize task.motionLine, \layout Itemize task.currentLine, \layout Itemize task.readLine, \layout Subsection Motion \layout Itemize motion.heartbeat, \layout Itemize motion.traj.linearUnits, \layout Itemize motion.traj.angularUnits, \layout Itemize motion.traj.cycleTime, \layout Itemize motion.traj.axes, \layout Itemize motion.traj.mode, \layout Itemize motion.traj.enabled, \layout Itemize motion.traj.inpos, \layout Itemize motion.traj.queue, \layout Itemize motion.traj.activeQueue, \layout Itemize motion.traj.queueFull, \layout Itemize motion.traj.id, \layout Itemize motion.traj.paused, \layout Itemize motion... [truncated message content] |
From: <ray...@us...> - 2003-07-05 01:23:46
|
Update of /cvsroot/emc/documents/lyx In directory sc8-pr-cvs1:/tmp/cvs-serv5878 Added Files: GPLD_Copyright.lyx Log Message: modular general files for handbooks --- NEW FILE: GPLD_Copyright.lyx --- #LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass book \language english \inputencoding default \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 \paragraph_separation skip \defskip smallskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 2 \paperpagestyle default \layout Chapter \start_of_appendix Legal Section \layout Section* Handbook Copyright Terms \layout Quotation Copyright (c) 2000 LinuxCNC.org \layout Quotation Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and one Back-Cover Text: "This EMC Handbook is the product of several authors writing for linuxCNC.org. As you find it to be of value in your work, we invite you to contribute to its revision and growth." A copy of the license is included in the section entitled "GNU Free Documentation License". If you do not find the license you may order a copy from Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 \layout Section GNU Free Documentation License Version 1.1, March 2000 \layout Standard Copyright (C) 2000 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. \layout Subsection GNU Free Documentation License Version 1.1, March 2000 \layout Standard \size small \color black Copyright (C) 2000 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. \layout Standard \size small \color black 0. PREAMBLE \layout Standard \size small \color black The purpose of this License is to make a manual, textbook, or other written document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. \layout Standard \size small \color black This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. \layout Standard \size small \color black We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. \layout Standard \size small \color black 1. APPLICABILITY AND DEFINITIONS \layout Standard \size small \color black This License applies to any manual or other work that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". \layout Standard \size small \color black A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. \layout Standard \size small \color black A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (For example, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. \layout Standard \size small \color black The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. \layout Standard \size small \color black The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. \layout Standard \size small \color black A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, whose contents can be viewed and edited directly and straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup has been designed to thwart or discourage subsequent modification by readers is not Transparent. A copy that is not "Transparent" is called "Opaque". \layout Standard \size small \color black Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML designed for human modification. Opaque formats include PostScript, PDF, proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-ge nerated HTML produced by some word processors for output purposes only. \layout Standard \size small \color black The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text. \layout Standard \size small \color black 2. VERBATIM COPYING \layout Standard \size small \color black You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. \layout Standard \size small \color black You may also lend copies, under the same conditions stated above, and you may publicly display copies. \layout Standard \size small \color black 3. COPYING IN QUANTITY \layout Standard \size small \color black If you publish printed copies of the Document numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. \layout Standard \size small \color black If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. \layout Standard \size small \color black If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a publicly-accessib le computer-network location containing a complete Transparent copy of the Document, free of added material, which the general network-using public has access to download anonymously at no charge using public-standard network protocols. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. \layout Standard \size small \color black It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. \layout Standard \size small \color black 4. MODIFICATIONS \layout Standard \size small \color black You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: \layout Standard \size small \color black A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has less than five). C. State on the Title page the name of the publisher of the Modified Version, as the publisher. D. Preserve all the copyright notices of the Document. E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. H. Include an unaltered copy of this License. I. Preserve the section entitled "History", and its title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. K. In any section entitled "Acknowledgements" or "Dedications", preserve the section's title, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. M. Delete any section entitled "Endorsements". Such a section may not be included in the Modified Version. N. Do not retitle any existing section as "Endorsements" or to conflict in title with any Invariant Section. \layout Standard \size small \color black If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles. \layout Standard \size small \color black You may add a section entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. \layout Standard \size small \color black You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. \layout Standard \size small \color black The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorseme nt of any Modified Version. \layout Standard \size small \color black 5. COMBINING DOCUMENTS \layout Standard \size small \color black You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice. \layout Standard \size small \color black The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. \layout Standard \size small \color black In the combination, you must combine any sections entitled "History" in the various original documents, forming one section entitled "History"; likewise combine any sections entitled "Acknowledgements", and any sections entitled "Dedications". You must delete all sections entitled "Endorsements." \layout Standard \size small \color black 6. COLLECTIONS OF DOCUMENTS \layout Standard \size small \color black You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. \layout Standard \size small \color black You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. \layout Standard \size small \color black 7. AGGREGATION WITH INDEPENDENT WORKS \layout Standard \size small \color black A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, does not as a whole count as a Modified Version of the Document, provided no compilation copyright is claimed for the compilation. Such a compilation is called an "aggregate", and this License does not apply to the other self-contained works thus compiled with the Document, on account of their being thus compiled, if they are not themselves derivative works of the Document. \layout Standard \size small \color black If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one quarter of the entire aggregate, the Document's Cover Texts may be placed on covers that surround only the Document within the aggregate. Otherwise they must appear on covers around the whole aggregate. \layout Standard \size small \color black 8. TRANSLATION \layout Standard \size small \color black Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License provided that you also include the original English version of this License. In case of a disagreement between the translation and the original English version of this License, the original English version will prevail. \layout Standard \size small \color black 9. TERMINATION \layout Standard \size small \color black You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. \layout Standard \size small \color black 10. FUTURE REVISIONS OF THIS LICENSE \layout Standard \size small \color black The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http:///www.gnu.org/copyleft/. \layout Standard \size small \color black Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundatio n. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. \layout Standard \size small \color black ADDENDUM: How to use this License for your documents \layout Standard \size small \color black To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: \layout Standard \size small \color black Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. A copy of the license is included in the section entitled "GNU Free Documentati on License". \layout Standard \size small \color black If you have no Invariant Sections, write "with no Invariant Sections" instead of saying which ones are invariant. If you have no Front-Cover Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being LIST"; likewise for Back-Cover Texts. \layout Standard \size small \color black If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software. \the_end |
From: <ray...@us...> - 2003-07-05 01:22:41
|
Update of /cvsroot/emc/documents/lyx In directory sc8-pr-cvs1:/tmp/cvs-serv5762 Added Files: g92test1.lyx Log Message: modular general files for handbooks --- NEW FILE: g92test1.lyx --- #LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass book \language english \inputencoding auto \fontscheme bookman \graphics default \paperfontsize default \spacing single \papersize letterpaper \paperpackage a4 \use_geometry 0 \use_amsmath 0 \paperorientation portrait \secnumdepth 2 \tocdepth 2 \paragraph_separation skip \defskip medskip \quotes_language english [...1650 lines suppressed...] variable were immediately written to the var file. Provision is made for this in the interpreter by a \SpecialChar ~ rs274ngc_save_parameters routine that is called when the EMC exits normally. This routine should be called whenever a change is made to a variable by a program command. This would include g92, g92.1 and g10. Since tkemc's popups that set g92 use an mdi command this would mean that they would also write to the var file as soon as the command they invoke was executed. \layout Standard This paper is a starting point for suggested further research. With the results found here, serious discussion of changes that need to be made to the code and changes that need to be made in the operation of these commands can begin to take place. The reader is encouraged to confirm each of the results found in this study and encouraged to suggest and perform other tests and report their results. \the_end |
From: <ray...@us...> - 2003-07-05 01:21:10
|
Update of /cvsroot/emc/documents/lyx In directory sc8-pr-cvs1:/tmp/cvs-serv5425 Added Files: faq.lyx Log Message: modular general files for handbooks --- NEW FILE: faq.lyx --- #LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass book \language english \inputencoding auto \fontscheme bookman \graphics default \paperfontsize 10 \spacing single \papersize a4paper \paperpackage a4 \use_geometry 0 \use_amsmath 0 \paperorientation portrait \secnumdepth 2 \tocdepth 2 \paragraph_separation indent \defskip medskip \quotes_language english [...5032 lines suppressed...] \layout Standard n150 X#1000 \layout Standard See \begin_inset LatexCommand \htmlurl[http://linuxcnc.org.handbook/gcode/variables.html]{http://linuxcnc.org.handbook/gcode/variables.html} \end_inset for more. \layout Standard Both genedit and Set_Coordinates.tcl show examples of how to control a parameter value from Tcl. You should note that you will need to re-read the var file after the set using emc_task_plan_init if you are running emcsh. And there are other effects of that command as well that will have to be restored after the read. \the_end |
Update of /cvsroot/emc/documents/lyx In directory sc8-pr-cvs1:/tmp/cvs-serv4782 Added Files: Dev_Custom.lyx Dev_Developer.lyx Dev_Drivers.lyx Dev_emcsh.lyx Dev_iosh.lyx Dev_Makefiles.lyx Dev_Source.lyx Dev_tkio.lyx Log Message: modular files for Developer handbook --- NEW FILE: Dev_Custom.lyx --- #LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass book \language english \inputencoding default \fontscheme bookman \graphics default \float_placement h \paperfontsize default \spacing single \papersize Default \paperpackage a4wide \use_geometry 0 \use_amsmath 0 \paperorientation portrait \secnumdepth 5 \tocdepth 5 \paragraph_separation skip \defskip smallskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 2 \paperpagestyle default \layout Chapter Customsing the software \layout Standard \series bold Contents \layout Itemize Re-compiling EMC along with various flags (yet to do) \layout Itemize Feed Per Rev Example \layout Itemize Adding NML codes \layout Section Re-compiling EMC along with various flags \layout Standard (add this) \layout Section Feed Per Rev Example \layout Standard From: Fred Proctor <fre...@ni...> \layout Standard To: Multiple recipients of list <em...@ni...> \layout Standard Subject: Re: emc development \layout Standard Chris, \layout Standard You wrote: \layout Standard > I have been using EMC since RTL 1.1 and now have it running under RTL2.0 > and would like to contribute by adding a feed/rev gcode. I have C > programming experience and I am a control engineer by profession. Could > you please advise me of the correct procedure to follow so that my > efforts can be easily integrated. \layout Standard Wow, great, we could use some more programmers. The correct procedure is to get registered on SourceForge as an EMC developer, as described in the email to em...@ni... by Will Shackleford here at NIST that I appended to this email. Once you do this, you can start whacking away. You should also subscribe to em...@ni... so you can ping everyone with questions. \layout Standard The hard part (and the SourceForge setup is not that easy) is figuring out how to change the EMC code to do what you want. (See chapter 1 here) \layout Standard Specifically for your case, adding a feed per rev G code, here is my guide: \layout Standard 1. Tom Kramer (tho...@ni...) wrote the G code interpreter. It's in emc/src/rs274ngc/. For questions on the interpreter itself, he's the one. Our philosophy was to implement a dialect of NC code based on a specification written by Rockwell Automation for the National Center for Manufacturing Sciences (NCMS). It's supposedly based on a Fanuc dialect. \layout Standard 2. Once the interpreter parses the G codes, it calls one of many "canonical functions" defined in emc/src/emctask/emccanon.cc. That is, when it sees a comment, it calls the COMMENT() function. When it sees a G01, it calls STRAIGHT_FEED(). In emccanon.cc, you'll see that these functions end up putting data structures on a global linked list, the interp_list. The data structures comprise the Neutral Messaging Language (NML), and is the format in which all commands and status flow around. The message set can be seen in all its gory detail in emc/src/emcnml/emc.hh. \layout Standard 3. The EMC task controller (emc/src/emctask/emctaskmain.cc) calls the interpreter with emcTaskPlanRead()/emcTaskPlanExecute() calls, then looks at the interp_lis t to see what was put on it. It then decides when the next message should be handled, and who gets it. This is the checkPreconditions(), issueCommand(), and checkPostconditions() sequence in emctaskmain.cc. \layout Standard 4. Either the motion controller or IO controller is sent the message, and does the actual work. In your case, feed per rev may be able to be converted into an equivalent straight feed at a rate calculated by looking at the S code. This wouldn't impact much at all, maybe just rs274ngc.cc. Talk to Tom Kramer for his advice. \layout Standard Best regards, \layout Standard --Fred\SpecialChar ~ \layout Section Customising NML \layout Standard NML itself can be extended. This is done when new capabilities are added to the controller, so extending NML really means extending the EMC. The last one I added was the ability to override limits temporarily, to support homing off a limit switch. This involved coding it up in the motion controller (emc/src/emcmot/emcmot.c), adding a new message and status item for this (emc/src/emcmot/emcmot.h), adding it to NML (emc/src/emcnml/emc.hh), handling this in the EMC task controller (emc/src/emctask/emctaskmain.cc), adding it to the EMC windowing shell (emc/src/emctask/emcsh.cc), then updating the tkemc script to use it. Whew. \layout Standard --Fred Proctor\SpecialChar ~ \the_end --- NEW FILE: Dev_Developer.lyx --- #LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass book \language english \inputencoding default \fontscheme bookman \graphics default \float_placement h \paperfontsize default \spacing single \papersize Default \paperpackage a4wide \use_geometry 0 \use_amsmath 0 \paperorientation portrait \secnumdepth 5 \tocdepth 5 \paragraph_separation skip \defskip smallskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 2 \paperpagestyle default \layout Chapter Becoming a Developer \layout Section My Sourceforge account. \layout Standard The development version of EMC exists on sourceforge.net so I needed to get a free user account there. Soon after I asked for an account, I received an email with a url for my final sourceforge setup. I had to enable cookies on my browser while I do this and must allow them anytime while I'm using the sourceforge service. \layout Section Becoming an EMC developer. \layout Standard As soon as I got that far, I emailed Will my login name so that he could set me up as a developer. (Now you can email any one of the people listed as adminintrators and they can add you.) Will did that and after a few minutes (hours) I was listed. Then the first thing I did was trash my developer status by a wrong click. (Sorry for the second request Will) After a bit I was a developer again. So the next thing I tried was a secure login and there I was. \layout Comment Hint Now it seems that there is a problem with ssl and some browsers so you should read the log in page carefully if you use that other browser. \layout Standard The secure login got me to my personal page. From there I searched for EMC and selected the correct one. I added messages and news and thought I was all set. I went back to my personal page and saw those added things. But when I went to the cvs repository for EMC, I was immediately lost in deep stuff. Searching around sourceforge for information was very little help! \layout Section Becoming a SSH client. \layout Standard The first question I had was how do you send the commands listed on the sourceforge cvs page. My thought was that perhaps, with the secure login, sourceforge had somehow taken over my computer so I started a virtual terminal and just typed in the stuff listed there. I got back a complaint so I read that documentation again. \layout Quotation SourceForge CVS Documentation \newline \layout Quotation For all developer (read/write) access, you will be using SSH \begin_inset LatexCommand \index{SSH} \end_inset . SSH (1.x) client must be available to your local machine. The local environment variable CVS_RSH must also be set to the path to ssh. This is done on most linux (bash) systems by typing: \newline \layout Quotation export CVS_RSH=ssh \newline \layout Quotation Anonymous CVS access uses CVS pserver and does not require SSH. If you get 'permission denied' errors with no prompt for a password, you do not have this environment variable set properly or SSH is not available to your system. Fix this before suspecting a password problem. \layout Standard Since the complaint was something about ssh, I started reading and found out that I needed something called SSH. A quick check of my system revealed that I had no commands called ssh, no files named ssh, and no package around that said anything about ssh. \layout Standard My fall back plan is an altavista search where I came up with this link. http://www.ssh.org/ Reading there confused me because it says very little about USING the thing that they call a secure terminal. I did learn that ssh is some sort of secure terminal that can be used to identify me and allow me to do work on a remote computer as a "trusted" user (little do they know). \layout Standard A little more altavista turned up a site that provides very good links to the whole world of ssh. http://www.heimhardt.de/htdocs/ssh.html. Blessings on this fellow because he has provided a bunch of links and a bunch of info (much of it I did not understand, and I do not understand it yet). \layout Subsection Downloading ssh. \layout Standard From the site above, I found a binary download for Linux 2.2.* and untarred it at the root directory. It installed several files in the /usr/local/bin directory. I considered that progress, because now when I entered the command ssh \begin_inset LatexCommand \index{ssh} \end_inset , I got a pile of options on the screen. Still a bit lost I went back to the web site above. \layout Subsection Setting up ssh \layout Standard From the heimhardt.de site, I found this site: http://www.tac.nyc.ny.us/~kim/ssh/ which provides a very good introduction to what setting ssh up on your system is about.So I followed the instructions given for setting up a public key and copied it into the file that allows remote access to my machine. This is a very mysterious process but it did provide the files that they said it should. \layout Section Sourceforge checkout. \layout Standard I know from what little concurrent version system work that I'd done around home that in order to participate fully with it I would need a current version of the repository on my computer.I returned to the cryptic documentation on sourceforge. I started this process by a secure login using my netscape browser because it doesn't have a problem with ssl. Then from my personal page at sourceforge I clicked on the EMC project near the bottom of the page. \layout Standard Hint. If you answer their questionnaire, it will be reduced to a small block and the entire page will fit on a single screen. \layout Standard The sourceforge document says: \layout Quotation How to check out source via SSH \layout Quotation Type the following, making necessary obvious substitutions for your username and project. \layout Quotation cvs -z3 -d:ext:log...@cv...:/cvsroot/yourproject co directoryname \layout Standard This did not turn out quite like I expected because what's obvious to them is still muddy to me. I got the -d:ext:loginname part okay. My name at sourceforge is rayhenry so that gets substituted right after the (-d:ext:). I got some further clues from the cvs page itself so I started my virtual terminal again (konsole) and made sure I was using bash by just typing in bash. Then I entered the line: \layout Standard \family typewriter \shape italic \size small \color black export CVS_RSH=ssh \shape default \color green \begin_inset LatexCommand \index{ssh} \end_inset \layout Standard and I was back to my prompt. Then I entered the next line but the obvious substitution of directoryname took a couple of tries because it is lowercase. \layout Standard \family typewriter \shape italic \size small \color black cvs -z3 -d:ext:ray...@cv...:/cvsroot/EMC co emc \layout Standard after a bit, sourceforge asked for my password. \begin_inset Quotes eld \end_inset Wow! Now I'm getting somewhere. \begin_inset Quotes erd \end_inset \layout Standard This checked out the entire structure and files of the emc part of the NIST system onto my machine. So I did it again for the rcslib and documents directory and after a half hour my hard drive held a copy of the sourceforge repository. \layout Section Updating your copy of the repository \layout Standard There are three commands that help you keep your repository in line with the sourceforge set of files. They are update, checkout, and remove. \layout Enumerate \emph on Update \emph default works to compare each of the files in your local repository with the same file in the sourceforge repository. Any changes that have been made there will be updated on your local copy. \layout Enumerate \emph on Checkout \emph default is required for any new files or directories that have been added to the sourceforge set. Occasionally you will need to use checkout to get the latest new files. \layout Enumerate \emph on Remove \emph default is used to delete files from the repository. If you have files on your system that no longer exist in the sourceforge set you will get a warning message when you update. \layout Subsection Update \layout Standard Once you have a working copy of the repository you can log into sourceforge, start a terminal, issue the command \family typewriter \shape italic \size small \color black export \layout Standard \family typewriter \shape italic \size small \color black CVS_RSH=ssh \shape default \color green \begin_inset LatexCommand \index{ssh} \end_inset \layout Standard and update all of a module by using the same command indicated above to check out the module. You could replace the co in that command with update. You can also cd into the directory that you wish to update and issue the command \layout Standard \emph on cvs update \layout Standard This means that you can move anyplace in your copy and update just that directory. \layout Standard I like to update my copy of the whole repository at one time. On my workstation I use a main directory named emcdevelop so I am in the habit of issuing the following set of commands after I have my login to sourceforge confirmed. \layout Standard \emph on export CVS_RSH=ssh \layout Standard \emph on cd emcdevelop \layout Standard \align left \family typewriter \shape italic \size small \color black cvs -z3 -d:ext:ray...@cv...:/cvsroot/EMC co emc \layout Standard \align left \family typewriter \shape italic \size small \color black cvs -z3 -d:ext:ray...@cv...:/cvsroot/EMC co emc \layout Standard \align left \family typewriter \shape italic \size small \color black cvs -z3 -d:ext:ray...@cv...:/cvsroot/EMC co emc \layout Standard \align left \family typewriter \shape italic \size small \color black cvs -z3 -d:ext:ray...@cv...:/cvsroot/EMC co emc \layout Standard Once a local copy of the repository has been established, cd works the same as update. \layout Standard You could also update the entire repository by a procedure like this. \layout Standard \emph on export CVS_RSH=ssh \layout Standard \emph on cd emcdevelop/emc \layout Standard \emph on cvs update \layout Standard \emph on cd ../emc-HAL \layout Standard \emph on cvs update \layout Standard \emph on cd ../rcslib \layout Standard \emph on cvs update \layout Standard \emph on cd ../documents \layout Standard \emph on cvs update \layout Standard If your development efforts are primarily in the documents module, and you are working with Lyx you might only udate that directory using a command like \layout Standard \emph on export CVS_RSH=ssh \layout Standard \emph on cd emcdevelop/documents/lyx \layout Standard \emph on cvs update \layout Subsection Update codes \layout Standard After you've run checkout to create your private copy of source from the common repository, other developers will continue changing the central source. From time to time, when it is convenient in your development process, you can use the `update' command from within your working directory to reconcile your work with any revisions applied to the source repository since your last checkout or update. While update is working, it will give you a list of the files that it looks at and will report any changes, conflicts, etc. The following info page describes that report. \layout Standard update output \layout Standard The commands \emph on update \emph default and \emph on checkout \emph default keep you informed of their progress by printing a line for each file, preceded by one character indicating the status of the file: \layout Description `U FILE' The file was brought up to date with respect to the repository. This is done for any file that exists in the repository but not in your source, and for files that you haven't changed but are not the most recent versions available in the repository. \layout Description `P FILE' Like `U', but the CVS server sends a patch instead of an entire file. These two things accomplish the same thing. \layout Description `A FILE' The file has been added to your private copy of the sources, and will be added to the source repository when you run `commit' on the file. This is a reminder to you that the file needs to be committed. \layout Description `R FILE' The file has been removed from your private copy of the sources, and will be removed from the source repository when you run `commit' on the file. This is a reminder to you that the file needs to be committed. \layout Description `M FILE' The file is modified in your working directory. \layout Description `M' can indicate one of two states for a file you're working on: either there were no modifications to the same file in the repository, so that your file remains as you last saw it; or there were modifications in the repository as well as in your copy, but they were merged successfully, without conflict, in your working directory. \layout Description CVS will print some messages if it merges your work, and a backup copy of your working file (as it looked before you ran `update') will be made. The exact name of that file is printed while `update' runs. \layout Description `C FILE' A conflict was detected while trying to merge your changes to FILE with changes from the source repository. FILE (the copy in your working directory) is now the result of attempting to merge the two revisions; an unmodified copy of your file is also in your working directory, with the name `.#FILE.REVISION' where REVISION is the revision that your modified file started from. Resolve the conflict as described in Conflicts example. (Note that some systems automatically purge files that begin with `.#' if they have not been accessed for a few days. If you intend to keep a copy of your original file, it is a very good idea to rename it.) Under VMS, the file name starts with `__' rather than `.#'. \layout Description `? FILE' FILE is in your working directory, but does not correspond to anything in the source repository, and is not in the list of files for CVS to ignore (see the description of the `-I' option, and cvsignore.). \layout Subsection Making a change to the sourceforge repository. \layout Standard So there it is. The connection has been made. The download is complete. I am a developer. Now I need to learn a little bit about using CVS lest I trash the entire repository and look to all the world like the idiot that my close friends already know me to be. \layout Standard You may work on those files with your favorite text editor and save changes. One thing that I found out is that sometimes my editor leaves backup and invisible files laying around after I close it. Another thing that I've noticed is some cases where a comparison between versions of a file will show differences between Microsoft end-of-line versus unix end-of-line characters. Or just putting a space in a line will cause diff to think that the line has been edited. So I'll need to be a little careful with these kinds of editing problems so that others can see the real differences that I've made to a file. \layout Standard Okay now that I've made changes that will add a feature that all of us want, I need to update the repository at sourceforge with the revised file and any new files and directories. \layout Standard The sourceforge documentations says: \layout Quotation After initial checkout, you can change into this directory and execute cvs commands without the -d tag. For example: \layout Quotation cvs update \layout Quotation cvs commit -m "comments for this commit" \layout Quotation or \layout Quotation cvs add myfile.c \layout Standard I am going to do this by following the commands that Will sent me that are intended to commit some of my Tcl/Tk work to the repository and make these changes a part of the next release of EMC. First I'll copy my email to Will that describes what I've done. \layout Standard > I've been working with running scripts from a variable menu under \newline > tkemc. For this I used a sub directory called emc/scripts. I see that \newline > you already have a scripts directory in the release that contains a lot of \newline > the emc setup files. \newline > \newline > I'd like to see these tcl scripts implemented as a part of the release. \newline > What do you recommend that we do for a directory name for these kinds of \newline > things. \layout Standard Will responded \layout Standard >Currently only developers see the scripts directory. When we build a \newline >distribution the script files for the appropriate platform are \newline >moved to the top level directory before the distribution is built. \newline >But end-users will probably not want the tcl scripts in the top \newline >level directory. \newline >Perhaps instead of using emc/scripts we could put it in a directory \newline >emc/tcl or emc/tclscripts. \layout Standard I suggested that we expand on this just a bit with: \layout Standard \family typewriter \size small emc/tcl/lib \newline emc/tcl/scripts \layout Standard since this would allow us to expand the tcl based stuff without adding much clutter to the main emc directory. Then all I had to do to my genedit and tkemc files was change the directory reference in the scripts menu setup code. \layout Standard Will responded with the following set of commands to use after the ssl log in and the bash shell in konsole. \layout Standard \family typewriter \shape italic \size small \color black export CVS_RSH=ssh \begin_inset LatexCommand \index{ssh} \end_inset \newline cd emc \newline mkdir tcl \newline cvs add tcl \newline cd tcl \newline mkdir lib scripts \newline cvs add lib scripts \newline cd scripts \newline cvs add * ( Copy all your scripts here. ) \newline cd ../../scripts/<PLAT> (edit the emc.inc file to add emc/tcl/lib & scripts) \newline cd ../.. \newline cvs commit \layout Standard He also suggested that I edit the file emc/scripts/emc.inc and add the new directories because, "That way the files would automatically be added the next time we build a distribution." (Will) \layout Standard I got hung up somewhere in the cvs commit command. Sourceforge kept insisting that my files had been added but I couldn't see them when I looked in the emc/tcl/scripts directory. After a bit of reading of the cvs documentation I found this helpful page. \layout Subsection Adding files to a directory \layout Standard To add a new file to a directory, follow these steps. \layout Itemize You must have a working copy of the directory. Getting the source. \layout Itemize Create the new file inside your working copy of the directory. \layout Itemize Use `cvs add FILENAME' to tell CVS that you want to version control the file. If the file contains binary data, specify `-kb' (Binary files.). \layout Itemize Use `cvs commit FILENAME' to actually check in the file into the repository. Other developers cannot see the file until you perform this step. \layout Standard You can also use the `add' command to add a new directory. \layout Standard Unlike most other commands, the `add' command is not recursive. You cannot even type `cvs add foo/bar'! Instead, you have to \layout Standard $ cd foo \newline $ cvs add bar \newline - Command: cvs add [`-k' kflag] [`-m' message] files ... \layout Standard Schedule FILES to be added to the repository. The files or directories specified with `add' must already exist in the current directory. \layout Standard The added files are not placed in the source repository until you use `commit' to make the change permanent... \layout Standard The `-m' option specifies a description for the file. This description appears in the history log (if it is enabled). It will also be saved in the version history inside the repository when the file is committed. \layout Standard For example, the following commands add the file `backend.c' to the repository: \layout Standard \family typewriter \size small $ cvs add backend.c \newline $ cvs commit -m "Early version. Not yet compilable." backend.c " \layout Standard I had successfully added the files to the repository but I had not successfully committed them. What I did was commit each file with the following set of commands. After I submitted each command, it asked me for my sourceforge password. (makes me wish I hadn't made every other letter a capital) \layout Standard \family typewriter \shape italic \size small \color black export CVS_RSH=ssh \newline cd emc/tcl/scripts \newline cvs commit -m "tkemc parport show script" IO_Show.tcl \newline cvs commit -m "tkemc script" MDI_Input.tcl \newline cvs commit -m "Experimental tkemc script" Subroutine.tcl \newline cvs commit -m "genedit gcode script" feedrate.ncw \newline cvs commit -m "genedit gcode script" gohome.ncw \newline cd ../../src/emctask \newline cvs commit -m "added script menu" genedit.tcl \newline cvs commit -m "tkemc popup" tkbackplot.tcl \layout Standard But I forgot that I edited and added a copy of emc/scripts/emc.inc so I will have to commit that one as well or it will not be visible. \layout Subsection Checkout \layout Standard When you have a working repository on your computer, checkout will compare your files with the sourceforge files and will download any new or revised files. You can run the command - cvs checkout emc - and it will update all of the emc files. I had to use the longer version to checkout all of the rcslib files. \layout Standard \family typewriter \shape italic \size small \color black cvs -z3 -d:ext:ray...@cv...:/cvsroot/EMC co rcslib \layout Standard The same command with emc or documents will check out those modules as well. \layout Subsection Remove \layout Standard The remove command is used to take files out of the repository. Normally I will not use this command at all because most of the files are not mine. But occasionally a file gets removed from the repository and I want to remove my local copy. Fortunately I can do this by just removing them from my local set and they will no longer be considered when updating. Since they have been removed from sourceforge they will not show up on the next checkout either. \layout Standard If you want to remove some of your files from the sourceforge set, the following page tells how to do that. \layout Quotation cvs add Directories change. New files are added, and old files disappear. Still, you want to be able to retrieve an exact copy of old releases. \layout Quotation Here is what you can do to remove a file, but remain able to retrieve old revisions: \layout Quotation * Make sure that you have not made any uncommitted modifications to the file. Viewing differences, for one way to do that. You can also use the `status' or `update' command. If you remove the file without committing your changes, you will of course not be able to retrieve the file as it was immediately before you deleted it. \layout Quotation * Remove the file from your working copy of the directory. You can for instance use `rm'. \layout Quotation * Use `cvs remove FILENAME' to tell CVS that you really want to delete the file. \layout Quotation * Use `cvs commit FILENAME' to actually perform the removal of the file from the repository. \layout Quotation When you commit the removal of the file, CVS records the fact that the file no longer exists. It is possible for a file to exist on only some branches and not on others, or to re-add another file with the same name later. CVS will correctly create or not create the file, based on the `-r' and `-D' options specified to `checkout' or `update'. \layout Quotation - Command: cvs remove [options] files ... \layout Quotation Schedule file(s) to be removed from the repository (files which have not already been removed from the working directory are not processed). This command does not actually remove the file from the repository until you commit the removal. For a full list of options, see Invoking CVS. \layout Quotation Here is an example of removing several files: \layout Standard \family typewriter \size small \color black $ \shape italic cd test \newline \shape default $ \shape italic rm *.c \newline \shape default $ \shape italic cvs remove \shape default \color green \newline \color default cvs remove: Removing . \newline cvs remove: scheduling a.c for removal \newline cvs remove: scheduling b.c for removal \newline cvs remove: use 'cvs commit' to remove these files permanently \newline \color black $ \shape italic cvs ci -m "Removed unneeded files" \shape default \color green \newline \color default cvs commit: Examining . \newline cvs commit: Committing . \the_end --- NEW FILE: Dev_Drivers.lyx --- #LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass book \language english \inputencoding default \fontscheme bookman \graphics default \float_placement h \paperfontsize default \spacing single \papersize Default \paperpackage a4wide \use_geometry 0 \use_amsmath 0 \paperorientation portrait \secnumdepth 5 \tocdepth 5 \paragraph_separation skip \defskip smallskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 2 \paperpagestyle default \layout Chapter Hardware Drivers \begin_inset LatexCommand \label{chap:drivers} \end_inset \layout Section Wrapper Functions \layout Standard The structure of the EMC sources are such that at present, two layers of code are expected between emcmot and the actual hardware. Listed below are the calls made by emcmot - These will then call the board specific functions in a separate source file unless the hardware does not support it. The instinctive route taken by most would be to encode the necessary functions directly. Having the abstraction layer gives the end user the option to mix and match hardware and only have to write one wrapper, or extend the functionality. The prospect of being able to mix stepper motors and servos without resorting to additional hardware is just one attraction of EMC. \newline \layout Standard For example, the initialization of the motion control card by emcmot would consist of calls to the following routines in extstgmot.c :- \layout Quotation #include <extint.h> \layout Quotation #include <stg.h> \layout Quotation int extMotInit(const char * stuff) \layout Quotation { \layout Quotation \SpecialChar ~ return stgMotInit(stuff); \layout Quotation } \layout Quotation int extDioInit(const char * stuff) \layout Quotation { \layout Quotation \SpecialChar ~ return stgDioInit(stuff); \layout Quotation } \layout Quotation int extAioInit(const char * stuff) \layout Quotation { \layout Quotation \SpecialChar ~ return stgAioInit(stuff); \layout Quotation } \layout Standard The real work of initialising the card would then be coded in stg.c :- \layout Quotation int stgMotInit(const char * stuff) \layout Quotation { \layout Quotation \SpecialChar ~ int t; \layout Quotation \SpecialChar ~ Initialize(5); \layout Quotation \SpecialChar ~ EncoderInit(); \layout Quotation \SpecialChar ~ /* output 0's to amps */ \layout Quotation \SpecialChar ~ for (t = 0; t < STG_MAX_AXIS; t++) \layout Quotation \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ { \layout Quotation \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ /* write 0 to DACs */ \layout Quotation \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ stgDacWrite(t, 0.0); \layout Quotation \SpecialChar ~ \SpecialChar ~ \SpecialChar ~ } \layout Quotation \SpecialChar ~ return 0; \layout Quotation } \newline \layout Quotation int stgDioInit(const char * stuff) \layout Quotation { \layout Quotation \SpecialChar ~ /* set digital IO bits for A,B input, C output */ \layout Quotation \SpecialChar ~ DIOdirection(0x0C); \layout Quotation \SpecialChar ~ \layout Quotation \SpecialChar ~ return 0; \layout Quotation } \newline \layout Quotation int stgAioInit(const char * stuff) \layout Quotation { \layout Quotation \SpecialChar ~ /* nothing need be done */ \layout Quotation \SpecialChar ~ return 0; \layout Quotation } \layout Standard The stgAioInit routine returns as if everything was configured correctly, but as the analogue IO is not used, only a dummy function is needed. Should we wish to add another card that supports additional anaogue IO, a set of routines can be written in a seperate source file and the calls included in extstgmot. Better still would be to create a new extstgmot (extstgPlusmot.c ?) with the additional calls included. Should we now want to use an alternative Digital IO card along side the Servo-To-Go and tne new analogue cards, it is a simple matter to re-route the calls in extstgPlusmot.c :- \layout Standard int extMotInit(const char * stuff) \layout Quotation { \layout Quotation \SpecialChar ~ return stgMotInit(stuff); \layout Quotation } \layout Quotation int extDioInit(const char * stuff) \layout Quotation { \layout Quotation \SpecialChar ~ /* Route Digital IO through a PCI card */ \layout Quotation \SpecialChar ~ return NewDioInit(stuff); \layout Quotation } \layout Quotation int extAioInit(const char * stuff) \layout Quotation { \layout Quotation \SpecialChar ~ /* And use some new Analogue hardware */ \layout Quotation \SpecialChar ~ return PlusAioInit(stuff); \layout Quotation } \layout Standard All this will pulled together during the linking stage as described in the Makefile - This is a subject for another section. \layout Standard Although this method of coding appears to be inefficient and could be reduced to just one extstgmot.c, it would require substantially more work to maintain. Mixing and matching hardware would also become a major hacking exercise. \layout Section Hardware Functions \layout Standard Functions required by emcmot running in realtime. \layout Standard \series bold extMotInit(const char * stuff) \layout Standard Args: optional. \layout Standard Returns 0 for success, or -1 if initialization failed. \newline \layout Standard Call once before any of the other motion IO functions are called. 'stuff' argument can be used to pass a pointer to board-specific stuff like config files to the initalizing routine. \newline \layout Standard \series bold extDioInit(const char * stuff) \layout Standard Args: optional. \layout Standard Returns 0 for success, or -1 if initialization failed. \newline \layout Standard Call once before any of the other digital IO functions are called, but after extMotInit. 'stuff' argument can be used to pass a pointer to board-specific stuff like config files to the initalizing routine. \newline \layout Standard \series bold extAioInit(const char * stuff) \layout Standard Args: optional. \layout Standard Returns 0 for success, or -1 if initialization failed. \newline \layout Standard Call once before any of the other analog IO functions are called, but after extMotInit and extDioInit. 'stuff' argument can be used to pass a pointer to board-specific stuff like config files to the initalizing routine. \newline \layout Standard \series bold extMotQuit() \layout Standard Args: none \layout Standard Returns void. \newline \layout Standard Calls the board quit routine once, after which point no other functions will be called until after a call to extMotInit(). \newline \layout Standard \series bold extDioQuit() \layout Standard Args: none \layout Standard Returns void. \newline \layout Standard Call once before extMotQuit, after which point no other functions will be called until after a call to extDioInit(). \newline \layout Standard \series bold extAioQuit() \layout Standard Args: none \layout Standard Returns void. \newline \layout Standard Call once before extMotQuit (and extDioQuit), after which point no other functions will be called until after a call to extAioInit(). \newline \layout Standard \series bold extMotDout \layout Standard Args: \layout Standard Returns \newline \layout Standard Intenal function in emcmot.c that pehaps should be in the hardware wrapper. \newline \layout Standard \series bold extAmpEnable(int axis, int enable) \layout Standard Args: Axis number, Enable flag \layout Standard Returns 0 if OK, -1 if not valid (axis is out of range) \newline \layout Standard enables or disables amplifier for indicated axis; enable flag is 1 to enable, 0 to disable \newline \layout Standard \series bold extAmpFault(int axis, int * fault) \layout Standard Args: Axis number, Pointer to fault flag \layout Standard Returns 0 if OK, -1 if not valid (axis out of range) \newline \layout Standard Copies into fault[axis] the fault state of the amplifier. 1 is faulted, 0 is OK. \newline \layout Standard \series bold extMaxLimitSwitchRead(int axis, int * flag) \layout Standard \series bold extMinLimitSwitchRead(int axis, int * flag) \layout Standard Args: Axis number, Pointer to limit switch flag \layout Standard Returns 0 if OK, -1 if not valid (axis is out of range). */ \newline \layout Standard sets *flag to 0 if the limit switch is not tripped, i.e., everything is fine, 1 if the limit switch is tripped, i.e., the axis went too far in the associated direction. \layout Standard Maximum is defined as the direction in which encoder values increase, minimum is the other direction. \newline \layout Standard \series bold extHomeSwitchRead(int axis, int * flag) \layout Standard Args: Axis number, Pointer to home switch flag \layout Standard Returns 0 if OK, -1 if not valid (axis is out of range). \newline \layout Standard sets *flag to 0 if the home switch is not tripped, i.e., everything is fine, 1 if the home switch is tripped. \newline \layout Standard \series bold extEncoderReadAll(int max, double * counts) \layout Standard Args: Max axis, Pointer to Encoder array. \layout Standard Returns 0 if OK or -1 \newline \layout Standard Stores the range of encoders' counts in counts[0....Max axis-1] array. Returns 0 if OK or -1 if the max is greater than number of encoders. max is number of encoders, so for encoders 0..3 max would be 4. \newline \layout Standard \series bold extEncoderSetIndexModel() \layout Standard Args: none \layout Standard Returns 1 or 2 \newline \layout Standard Returns the type of encoder indexing done by the board. \layout Standard NOTE: This function is not called by emcmot.c, it is only listed here as reference. \layout Standard The handling of index pulses for encoder homing is problematic. There are two models (at least) for how incremental encoders can be homed off the index pulse. The first assumes the encoder index pulse sets a flag when it occurs, but the count value doesn't change. The controller polls on this flag, and when it is seen to be latched the controller reads the position and uses this as an offset. There is a latency that makes this less accurate than the second method, in which the occurrence of the index pulse resets the count automatically. The problem is that the controller logic is different for the two methods, so if you replace a board which does it the first way with one that does it the second, you need to recode the logic. The function "extEncoderIndexModel()" returns the model used by the board, so at least you can detect it and if you have coded up both types you can switch automatically. \layout Standard EXT_ENCODER_INDEX_MODEL_MANUAL indicates that the index pulse sets a latch flag, but you have to read this and then the encoder value and handle offsets yourself. The board won't change its count value on the index pulse. \layout Standard EXT_ENCODER_INDEX_MODEL_AUTO indicates that the index pulse zeros the encoder count automatically. */ \layout Standard /* flags defined bit-exclusive for OR'ing if board can do multiple ways */ \layout Standard #define EXT_ENCODER_INDEX_MODEL_MANUAL 0x00000001 \layout Standard #define EXT_ENCODER_INDEX_MODEL_AUTO 0x00000002 \newline \layout Standard \series bold extEncoderSetIndexModel(unsigned int model) \layout Standard Args: Int=1 \layout Standard Returns 0 if OK or -1 \newline \layout Standard NOTE: emcmot.c only calls this function with EXT_ENCODER_INDEX_MODEL_MANUAL during the init_module() process. \layout Standard For boards that support multiple index models, select which one is to be used. Returns 0 if OK, -1 if model can't be supported. */ \newline \layout Standard \series bold extEncoderReadLatch(int encoder, int * flag) \layout Standard Args: Axis number, pointer to latch array \layout Standard Returns 0 if OK or -1 \newline \layout Standard For EXT_ENCODER_INDEX_MODEL_MANUAL, stores 1 if index has latched the flag in flag[Axis], 0 if not. For EXT_ENCODER_INDEX_MODEL_AUTO, stores 1 if the encoder has been zeroed. Returns 0 if OK, -1 if not valid. \newline \layout Standard \series bold extEncoderResetIndex(int encoder) \layout Standard Args: Axis number \layout Standard Returns 0 if OK or -1 \newline \layout Standard Resets index latching for the indicated axis. Returns 0 if OK or -1 if the index is out of range. This applies to both EXT_ENCODER_INDEX_MODEL_MANUAL and EXT_ENCODER_INDEX_MODEL _AUTO. For the first, it resets the latch flag. For the second, it enables zeroing on the next index. encoder is range 0..max encoder - 1. \newline \layout Standard \series bold extDioRead(int index, int *value) \layout Standard Args: Bit index number, Pointer to array \layout Standard Returns 0 if OK or -1 \newline \layout Standard Reads value of digital input at index, stores in value[index]. \layout Standard Note. This is a bit read, and index starts at 0. \newline \layout Standard \series bold extDacWriteAll(int max, double * volts) \layout Standard Args: Max DAC, pointer to volts array \layout Standard Returns 0 if OK or -1 \newline \layout Standard When emcmot commands a move, the raw DAC value is placed into an array of double floats. A call to extDacWriteAll is made passing the maximum number of DACs expected in the system along with a pointer to the raw DAC values. These two arguments are then passed to a routine to convert the raw values in to a suitable format before writing to the DACs. Any level shifting and output limiting should be done here before returning 0 for success or -1 for failure. \newline \layout Subsection* Additional notes \layout Standard A look at the hardware specific sources will reveal a number of other functions not listed above. These would typically be internal routines or functions used by a standalone diagnostic program. The Servo-To-Go driver being ported from a DOS driver, is a prime example of this. \layout Standard For realtime code, do NOT use any external libs such as stdout, nor should you attempt to use C++. Both of these will result in \begin_inset Quotes eld \end_inset undefined symbol \begin_inset Quotes erd \end_inset errors when an attempt is made to load the module. \layout Standard Although the kernel functions can be used instead, a number of them do not work under realtime. One is iopl(), another is the print function printk. iopl() is not implimented in either rtlinux or rtai. printk is replaced with rtl_printk (for rtlinux) and rt_printk (for rtai), the equivalent stdout function would be printf - Although printing of floats does not work in realtime. \newline \layout Standard Linux Device Drivers by Alessandro Rubini & Jonathan Corbet is recommended reading, as is the kernel documentation (try 'make psdocs pdfdocs htmldocs' in the linux source directory). \the_end --- NEW FILE: Dev_emcsh.lyx --- #LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass book \language english \inputencoding default \fontscheme bookman \graphics default \float_placement h \paperfontsize default \spacing single \papersize Default \paperpackage a4wide \use_geometry 0 \use_amsmath 0 \paperorientation portrait \secnumdepth 5 \tocdepth 5 \paragraph_separation skip \defskip smallskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 2 \paperpagestyle default \layout Chapter EMCSH \layout Section Adding Commands \layout Standard The C++ program emc/src/emctask/emcsh.cc is the back-end of tkemc. This is a replacement for "wish", the default Tcl/Tk "windowing shell" that is used to run Tcl/Tk scripts. emcsh does everything that wish does, plus connects to the EMC's communication buffers, and provides new functions like emc_mode, emc_estop to send commands, and emc_abs_act_pos, emc_rel_cmd_pos to get status. \layout Standard You can add new commands to emcsh.cc, following an example like emc_estop or emc_rel_cmd_pos for sending a command or retrieving status, respectively. The strings and their corresponding C++ functions have the same names, so you can search through the file and see what's going on. The complete list of available commands and status items provided by the EMC is in emc/src/emcnml/emc.hh. Many of these aren't yet in emcsh.cc, and therefore not accessible via tkemc. I only put in the ones that I thought would be needed in the GUI at first. \layout Section Working with emcsh \layout Standard Adding new Tcl commands to emcsh and iosh is relatively straight forward if you are familiar with C and C++. All the Tcl/Tk functions can be called at a low level in C. For descriptions of each call, take a look at the man pages, copies of which can be found at http://tcl.activestate.com/man/tcl8.0/ and http://www.elf.org. \layout Section Tcl command extensions for EMC \layout Standard The following information has been extracted from emcsh.cc. For examples of the correct usage, look at the tcl scripts in emc/src/task/tkem c.tcl or emc/plat/nonrealtime/bin/tkemc. \layout Standard To use the emcsh commands, use the following at the start of the script: \layout Standard #!/bin/sh # the next line restarts using emcsh \backslash exec plat/nonrealtime/bin/emcsh "$0" "$@" \layout Standard Using emcsh: \layout Standard emcsh {<filename>} {-- -ini <ini file>} \layout Standard With filename, it opens NML buffers to the EMC, runs the script, closes the buffers, and quits. \layout Standard With -- -ini <inifile>, uses inifile instead of emc.ini. Note that the two dashes prevents Tcl from looking at the remaining args, which would otherwise trigger a Tcl error that it doesn't understand what -ini means. \layout Standard Without filename, it runs interactively. \layout Standard The files (or manual input) are Tcl scripts, extended with EMC-specific commands. These commands are all prefixed with "emc_", which makes them somewhat inconvenient for typing but avoids name conflicts, e.g.,open. \layout Standard Some commands take 0 or more arguments. 0 arguments means they return the associated value; the argument would be to set the value. \layout Standard Commands are sent to the EMC, and control resumes immediately. You can call a timed wait until the command got there, or a timed wait until the command completed, or not wait at all. \layout Section EMC commands: \layout Itemize EMC_INIFILE Exported values of the EMC global of the same name \layout Itemize emc_plat Returns the platform for which this was compiled, e.g., linux_2_0_36 \layout Itemize emc_ini <var> <section> Returns the string value of <var> in section <section>, in EMC_INIFILE \layout Itemize emc_debug {<new value>} With no arg, returns the integer value of EMC_DEBUG, in the EMC. Note that it may not be true that the local EMC_DEBUG variable here (in emcsh and the GUIs that use it) is the same as the EMC_DEBUG value in the EMC. This can happen if the EMC is started from one .ini file, and the GUI is started with another that has a different value for DEBUG. \layout Itemize With an arg, sends a command to the EMC to set the new debug level, and sets the EMC_DEBUG global here to the same value. This will make the two values the same, since they really ought to be the same. \layout Itemize emc_set_wait none | received | done Set the wait for commands to return to be right away (none), after the command was sent and received (received), or after the command was done (done). \layout Itemize emc_wait received | done Force a wait for the previous command to be received, or done. This lets you wait in the event that "emc_set_wait none" is in effect. \layout Itemize emc_set_timeout <timeout> Set the timeout for commands to return to <timeout>, in seconds. Timeout is a real number. If it's <= 0.0, it means wait forever. Default is 0.0, wait forever. \layout Itemize emc_update (none) | none | auto With no arg, forces an update of the EMC status. With "none", doesn't cause an automatic update of status with other emc_ words. With "auto", makes emc_ words automatically update status before they return values. \layout Itemize emc_error Returns the current EMC error string, or "ok" if no error. \layout Itemize emc_operator_display Returns the current EMC operator display string, or "ok" if none. \layout Itemize emc_operator_text Returns the current EMC operator text string, or "ok" if none. \layout Itemize emc_time Returns the time, in seconds, from the start of the epoch. This starting time depends on the platform. \layout Itemize emc_estop (none) | on | off With no arg, returns the estop setting as "on" or "off". Otherwise, sends an estop on or off command. \layout Itemize emc_estop_in Returns the estop input setting as "on" or "off". \layout Itemize emc_machine (none) | on | off With no arg, returns the machine setting as "on" or "off". Otherwise, sends a machine on or off command. \layout Itemize emc_mode (none) | manual | auto | mdi With no arg, returns the mode setting as "manual", "auto", or "mdi". Otherwise, sends a mode manual, auto, or mdi command. \layout Itemize emc_mist (none) | on | off With no arg, returns the mist setting as "on" or "off". Otherwise, sends a mist on or off command. \layout Itemize emc_flood (none) | on | off With no arg, returns the flood setting as "on" or "off". Otherwise, sends a flood on or off command. \layout Itemize emc_lube (none) | on | off With no arg, returns the lubricant pump setting as "on" or "off". Otherwise, sends a lube on or off command. \layout Itemize emc_lube_level Returns the lubricant level sensor reading as "ok" or "low". \layout Itemize emc_spindle (none) | forward | reverse | increase | decrease |constant | off With no arg, returns the value of the spindle state as "forward", "reverse" , "increase", "decrease", or "off". With arg, sends the spindle command. Note that "increase" and "decrease" will cause a speed change in the correspond ing direction until a "constant" command is sent. \layout Itemize emc_brake (none) | on | off With no arg, returns the brake setting. Otherwise sets the brake. \layout Itemize emc_tool Returns the id of the currently loaded tool \layout Itemize emc_tool_offset Returns the currently applied tool length offset \layout Itemize emc_load_tool_table <file> Loads the tool table specified by <file> \layout Itemize emc_home 0 | 1 | 2 | ... Homes the indicated axis. \layout Itemize emc_jog_stop 0 | 1 | 2 | ... Stop the axis jog \layout Itemize emc_jog 0 | 1 | 2 | ... <speed> Jog the indicated axis at <speed>; sign of speed is direction \layout Itemize emc_jog_incr 0 | 1 | 2 | ... <speed> <incr> Jog the indicated axis by increment <incr> at the <speed>; sign of speed is direction \layout Itemize emc_feed_override {<percent>} With no args, returns the current feed override, as a percent. With argument, set the feed override to be the percent value \layout Itemize emc_abs_cmd_pos 0 | 1 | ... Returns double obj containing the XYZ-SXYZ commanded pos in abs coords, at given index, 0 = X, etc. \layout Itemize emc_abs_act_pos Returns double objs containing the XYZ-SXYZ actual pos in abs coords \layout Itemize emc_rel_cmd_pos 0 | 1 | ... Returns double obj containing the XYZ-SXYZ commanded pos in rel coords, at given index, 0 = X, etc., including tool length offset \layout Itemize emc_rel_act_pos Returns double objs containing the XYZ-SXYZ actual pos in rel coords, including tool length offset \layout Itemize emc_joint_pos Returns double objs containing the actual pos in absolute coords of individual joint/slider positions, excludes tool length offset \layout Itemize emc_pos_offset X | Y | Z | R | P | W Returns the position offset associated with the world coordinate provided \layout Itemize emc_joint_limit 0 | 1 | ... Returns "ok", "minsoft", "minhard", "maxsoft", "maxhard" \layout Itemize emc_joint_fault 0 | 1 | ... Returns "ok" or "fault" \layout Itemize emc_joint_homed 0 | 1 | ... Returns "homed", "not" \layout Itemize emc_mdi <string> Sends the <string> as an MDI command \layout Itemize emc_task_plan_init Initializes the program interpreter \layout Itemize emc_open <filename> Opens the named file \layout Itemize emc_run {<start line>} Without start line, runs the opened program from the beginning. With start line, runs from that line. A start line of -1 runs in verify mode. \layout Itemize emc_pause Pause program execution \layout Itemize emc_resume Resume program execution \layout Itemize emc_step Step the program one line \layout Itemize emc_program Returns the name of the currently opened program, or "none" \layout Itemize emc_program_line Returns the currently executing line of the program \layout Itemize emc_program_status Returns "idle", "running", or "paused" \layout Itemize emc_program_codes Returns the string for the currently active program codes \layout Itemize emc_joint_type <joint> Returns "linear", "angular", or "custom" for the type of the specified joint \layout Itemize emc_joint_units <joint> Returns "inch", "mm", "cm", or "deg", "rad", "grad", or "custom", for the corresponding native units of the specified axis. The type of the axis (linear or angular) is used to resolve which type of units are returned. The units are obtained heuristically, based on the EMC_AXIS_STAT::units numerical value of user units per mm or deg. For linear joints, something close to 0.03937 is deemed "inch", 1.000 is "mm", 0.1 is "cm", otherwise it's "custom". For angular joints, something close to 1.000 is deemed "deg",PI/180 is "rad", 100/90 is "grad", otherwise it's "custom". \layout Itemize emc_program_units emc_program_linear_units Returns "inch", "mm", "cm", or "none", for the corresponding linear units that are active in the program interpreter. \layout Itemize emc_program_angular_units Returns "deg", "rad", "grad", or "none" for the corresponding angular units that are active in the program interpreter. \layout Itemize emc_user_linear_units Returns "inch", "mm", "cm", or "custom", for the correspon ding native user linear units of the EMC trajectory level. This is obtained heuristically, based on the EMC_TRAJ_STAT::linearUnits numerical value of user units per mm. Something close to 0.03937 is deemed "inch", 1.000 is "mm", 0.1 is "cm", otherwise it's "custom". \layout Itemize emc_user_angular_units Returns "deg", "rad", "grad", or "custom" for the corresponding native user angular units of the EMC trajectory level. Like with linear units,this is obtained heuristically. \layout Itemize emc_display_linear_units emc_display_angular_units Returns "inch", "mm", "cm", or "deg", "rad", "grad", or "custom", for the linear or angular units that are active in the display. This is effectively the value of linearUnitConversion or angularUnitConversion, resp. \layout Itemize emc_linear_unit_conversion {inch | mm | cm | auto} With no args, returns the unit conversion active. With arg, sets the units to be displayed. If it's "auto", the units to be displayed match the program units. \layout Itemize emc_angular_unit_conversion {deg | rad | grad | auto} With no args, returns the unit conversion active. With arg, sets the units to be displayed. If it's "auto", the units to be displayed match the program units. \layout Itemize emc_log_open <file> <type> <size> <skip>{<axis>} Open a log into file named <file>. <type> is one of axis_pos, axes_inpos, axes_outpos, axis_vel, axes_ferror, traj_pos, traj_vel, traj_acc, pos_voltage. <size> is size in entries. <skip> is how many to skip. <axis> pertains only to axis_pos and axis_vel types. \layout Itemize emc_log_start emc_log_stop Starts or stops logging into the log, which must be already opened with emc_log_open. \layout Itemize emc_log_close Close the log and dump contents to the file specified in emc_log_o pen. \layout Itemize emc_probe_index Which wire is the probe on or which bit of digital IO to use? (No args gets it, one arg sets it.) \layout Itemize emc_probe_polarity Value to look for for probe tripped? (0 args gets it, one arg sets it.) \layout Itemize emc_probe_clear Clear the probe tripped flag. \layout Itemize emc_probe_tripped Has the probe been tripped since the last clear. \layout Itemize emc_probe_value Value of current probe signal. (read-only) \layout Itemize emc_probe Move toward a certain location. If the probe is tripped on the way stop motion, record the position and raise the probe tripped flag. \layout Itemize emc_teleop_enable Should motion run in teleop mode? (No args gets it, one arg sets it.) \layout Itemize emc_kinematics_type returns the type of kinematics functions used identity=1, serial=2, parallel=3, custom=4 \layout Section Additional Comments \layout Standard Further on in emcsh.cc is some additional comments regarding units. \layout Standard Unit conversion \layout Standard Length and angle units in the EMC status buffer are in user units, as defined in the INI file in [TRAJ] LINEAR,ANGULAR_UNITS. These may differ from the program units, and when they are the display is confusing. \layout Standard It may be desirable to synchronize the display units with the program units automatically, and also to break this sync and allow independent display of position values. \layout Standard The global variable "linearUnitConversion" is set by the Tcl commands emc_linear _unit_conversion to correspond to either "inch", "mm", "cm", "auto", or "custom". This forces numbers to be returned in the units specified, in program units when "auto" is set, or not converted at all if "custom" is specified. \layout Standard Ditto for "angularUnitConversion", set by emc_angular_unit_conversion to "deg", "rad", "grad", "auto", or "custom". \layout Standard With no args, emc_linear/angular_unit_conversion return the setting. \layout Standard The functions convertLinearUnits and convertAngularUnits take a length or angle value, typically from the emcStatus structure, and convert it as indicated by linearUnitConversion and angularUnitConversion, resp. \the_end --- NEW FILE: Dev_iosh.lyx --- #LyX 1.1 created this file. For more info see http://www.lyx.org/ \lyxformat 218 \textclass book \language english \inputencoding default \fontscheme bookman \graphics default \float_placement h \pap... [truncated message content] |
From: <ray...@us...> - 2003-07-05 00:39:59
|
Update of /cvsroot/emc/documents/lyx In directory sc8-pr-cvs1:/tmp/cvs-serv1164 Removed Files: emc_source.lyx Log Message: Removed single file sourcebook. --- emc_source.lyx DELETED --- |
From: <ray...@us...> - 2003-07-04 22:57:01
|
Update of /cvsroot/emc/documents/lyx In directory sc8-pr-cvs1:/tmp/cvs-serv22973 Removed Files: Handbook.lyx Log Message: Removed single file handbook. --- Handbook.lyx DELETED --- |
From: <ms...@us...> - 2003-07-03 16:55:20
|
Update of /cvsroot/emc/emc_HAL/src/emcmot In directory sc8-pr-cvs1:/tmp/cvs-serv7644 Modified Files: emcmot.c Log Message: Fix a bug I introduced by elimanating the duplicate code - I need to have this stuff tested before I commit it... Index: emcmot.c =================================================================== RCS file: /cvsroot/emc/emc_HAL/src/emcmot/emcmot.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** emcmot.c 3 Jul 2003 06:04:54 -0000 1.4 --- emcmot.c 3 Jul 2003 16:55:16 -0000 1.5 *************** *** 4674,4683 **** period = smCount[axis] / -delta; } ! up[axis] = period * (duty_cycle_up / 100); ! if (up[axis] <= 0) ! up[axis] = 1; ! down[axis] = period - up[axis]; ! if (down[axis] <= 0) ! down[axis] = 1; } --- 4674,4686 ---- period = smCount[axis] / -delta; } ! if (delta != 0) ! { ! up[axis] = period * (duty_cycle_up / 100); ! if (up[axis] <= 0) ! up[axis] = 1; ! down[axis] = period - up[axis]; ! if (down[axis] <= 0) ! down[axis] = 1; ! } } |
From: <ms...@us...> - 2003-07-03 06:04:57
|
Update of /cvsroot/emc/emc_HAL/src/emcmot In directory sc8-pr-cvs1:/tmp/cvs-serv13026 Modified Files: emcmot.c Log Message: Fixed an unmatched #endif leftover from removing the orphaned block in the last commit. Also made a small change in binfunc() that eliminates a small piece of duplicated code. Index: emcmot.c =================================================================== RCS file: /cvsroot/emc/emc_HAL/src/emcmot/emcmot.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** emcmot.c 1 Jul 2003 23:59:43 -0000 1.3 --- emcmot.c 3 Jul 2003 06:04:54 -0000 1.4 *************** *** 4206,4210 **** #endif #endif - #endif /* round it */ if (pdmultfloat < 0.0) --- 4206,4209 ---- *************** *** 4669,4678 **** direction[axis] = 1; period = smCount[axis] / +delta; - up[axis] = period * (duty_cycle_up / 100); - if (up[axis] <= 0) - up[axis] = 1; - down[axis] = period - up[axis]; - if (down[axis] <= 0) - down[axis] = 1; } else if (delta < 0) --- 4668,4671 ---- *************** *** 4680,4690 **** direction[axis] = 0; period = smCount[axis] / -delta; - up[axis] = period * (duty_cycle_up / 100); - if (up[axis] <= 0) - up[axis] = 1; - down[axis] = period - up[axis]; - if (down[axis] <= 0) - down[axis] = 1; } } --- 4673,4683 ---- direction[axis] = 0; period = smCount[axis] / -delta; } + up[axis] = period * (duty_cycle_up / 100); + if (up[axis] <= 0) + up[axis] = 1; + down[axis] = period - up[axis]; + if (down[axis] <= 0) + down[axis] = 1; } |
From: <wsh...@us...> - 2003-07-02 15:34:07
|
Update of /cvsroot/emc/rcslib/src/cms In directory sc8-pr-cvs1:/tmp/cvs-serv10874 Modified Files: Makefile.lib Log Message: copy out headers problem. Index: Makefile.lib =================================================================== RCS file: /cvsroot/emc/rcslib/src/cms/Makefile.lib,v retrieving revision 4.54 retrieving revision 4.55 diff -C2 -d -r4.54 -r4.55 *** Makefile.lib 15 May 2003 16:41:46 -0000 4.54 --- Makefile.lib 2 Jul 2003 15:34:04 -0000 4.55 *************** *** 4,8 **** ifeq (rtlinux_2, $(findstring rtlinux_2, $(PLAT))) ! LIBCMS_OBJS = rtlnml.o \ rtlinux_kernel_api_implement.o --- 4,8 ---- ifeq (rtlinux_2, $(findstring rtlinux_2, $(PLAT))) ! CMS_OBJS = rtlnml.o \ rtlinux_kernel_api_implement.o *************** *** 12,21 **** ifeq (rtlinux_3, $(findstring rtlinux_3, $(PLAT))) ! LIBCMS_OBJS = rtlnml.o \ rtlinux_kernel_api_implement.o else # ifeq (rtlinux_3, $(findstring rtlinux_3, $(PLAT))) ! LIBCMS_OBJS = endif # ifeq (rtlinux_3, $(findstring rtlinux_2, $(PLAT))) --- 12,21 ---- ifeq (rtlinux_3, $(findstring rtlinux_3, $(PLAT))) ! CMS_OBJS = rtlnml.o \ rtlinux_kernel_api_implement.o else # ifeq (rtlinux_3, $(findstring rtlinux_3, $(PLAT))) ! CMS_OBJS = endif # ifeq (rtlinux_3, $(findstring rtlinux_2, $(PLAT))) *************** *** 25,29 **** ! LIBCMS_OBJS_SET=1 endif --- 25,29 ---- ! CMS_OBJS_SET=1 endif *************** *** 32,39 **** ifeq (rtai, $(PLAT)) ! LIBCMS_OBJS = rtlnml.o \ rtai_kernel_api_implement.o ! LIBCMS_OBJS_SET=1 endif --- 32,39 ---- ifeq (rtai, $(PLAT)) ! CMS_OBJS = rtlnml.o \ rtai_kernel_api_implement.o ! CMS_OBJS_SET=1 endif *************** *** 42,50 **** NO_RPC=1 - x:=$(shell echo LIBCMS_OBJS_SET=$(LIBCMS_OBJS_SET) >>/tmp/rcslibmake.log) ! ifndef LIBCMS_OBJS_SET ! ALLPLATS_LIBCMS_OBJS= cms.o \ cmsdiag.o \ nmldiag.o \ --- 42,49 ---- NO_RPC=1 ! ifndef CMS_OBJS_SET ! ALLPLATS_CMS_OBJS= cms.o \ cmsdiag.o \ nmldiag.o \ *************** *** 84,88 **** crypt2.o \ cmssvrp.o \ ! nmlqr.o ifndef NO_XML --- 83,90 ---- crypt2.o \ cmssvrp.o \ ! cms_datetime.o \ ! nmlqr.o \ ! cms_xml_up.o ! ifndef NO_XML *************** *** 90,107 **** endif - ifdef USE_XML - LIBCMS_XML_OBJS= \ - cms_xml_up.o - - else - # ifdef USE_XML - - LIBCMS_XML_OBJS= - - endif - # ifdef USE_XML ! LIBCMS_RPC_XDR_OBJS = \ cms_xup.o \ xdr_msg.o --- 92,98 ---- endif ! CMS_RPC_XDR_OBJS = \ cms_xup.o \ xdr_msg.o *************** *** 112,119 **** ifneq ($(findstring vxworksSun, $(PLAT)),vxworksSun) ! LIBCMS_OBJS := $(LIBCMS_OBJS) \ ! $(LIBCMS_RPC_XDR_OBJS) \ ! $(ALLPLATS_LIBCMS_OBJS) \ ! $(LIBCMS_XML_OBJS) \ globmem.o \ bbdmem.o \ --- 103,110 ---- ifneq ($(findstring vxworksSun, $(PLAT)),vxworksSun) ! CMS_OBJS := $(CMS_OBJS) \ ! $(CMS_RPC_XDR_OBJS) \ ! $(ALLPLATS_CMS_OBJS) \ ! $(CMS_XML_OBJS) \ globmem.o \ bbdmem.o \ *************** *** 126,132 **** # ifneq ($(findstring vxworksSun, $(PLAT)),vxworksSun) ! LIBCMS_OBJS := $(LIBCMS_OBJS) \ ! $(ALLPLATS_LIBCMS_OBJS) \ ! $(LIBCMS_XML_OBJS) \ globmem.o \ bbdmem.o \ --- 117,123 ---- # ifneq ($(findstring vxworksSun, $(PLAT)),vxworksSun) ! CMS_OBJS := $(CMS_OBJS) \ ! $(ALLPLATS_CMS_OBJS) \ ! $(CMS_XML_OBJS) \ globmem.o \ bbdmem.o \ *************** *** 142,149 **** # ifneq ($(findstring vxworksppc, $(PLAT)),vxworksppc) ! LIBCMS_OBJS := $(LIBCMS_OBJS) \ ! $(LIBCMS_RPC_XDR_OBJS) \ ! $(ALLPLATS_LIBCMS_OBJS) \ ! $(LIBCMS_XML_OBJS) \ globmem.o \ bbdmem.o \ --- 133,140 ---- # ifneq ($(findstring vxworksppc, $(PLAT)),vxworksppc) ! CMS_OBJS := $(CMS_OBJS) \ ! $(CMS_RPC_XDR_OBJS) \ ! $(ALLPLATS_CMS_OBJS) \ ! $(CMS_XML_OBJS) \ globmem.o \ bbdmem.o \ *************** *** 158,162 **** # ifeq ($(findstring vxworks, $(PLAT)),vxworks) ! LIBCMS_TTY_OBJS = \ ttyintf.o \ ttymem.o \ --- 149,153 ---- # ifeq ($(findstring vxworks, $(PLAT)),vxworks) ! CMS_TTY_OBJS = \ ttyintf.o \ ttymem.o \ *************** *** 166,173 **** ifeq (darwin, $(findstring darwin, $(PLAT))) ! LIBCMS_OBJS := $(LIBCMS_OBJS) \ ! $(LIBCMS_RPC_XDR_OBJS) \ ! $(ALLPLATS_LIBCMS_OBJS) \ ! $(LIBCMS_XML_OBJS) else --- 157,164 ---- ifeq (darwin, $(findstring darwin, $(PLAT))) ! CMS_OBJS := $(CMS_OBJS) \ ! $(CMS_RPC_XDR_OBJS) \ ! $(ALLPLATS_CMS_OBJS) \ ! $(CMS_XML_OBJS) else *************** *** 176,192 **** ifeq (qnx, $(findstring qnx, $(PLAT))) ! LIBCMS_OBJS := $(LIBCMS_OBJS) \ ! $(LIBCMS_RPC_XDR_OBJS) \ ! $(ALLPLATS_LIBCMS_OBJS) \ ! $(LIBCMS_XML_OBJS) else # qnx ! LIBCMS_OBJS := $(LIBCMS_OBJS) \ ! $(LIBCMS_RPC_XDR_OBJS) \ ! $(LIBCMS_TTY_OBJS) \ ! $(ALLPLATS_LIBCMS_OBJS) \ ! $(LIBCMS_XML_OBJS) endif --- 167,183 ---- ifeq (qnx, $(findstring qnx, $(PLAT))) ! CMS_OBJS := $(CMS_OBJS) \ ! $(CMS_RPC_XDR_OBJS) \ ! $(ALLPLATS_CMS_OBJS) \ ! $(CMS_XML_OBJS) else # qnx ! CMS_OBJS := $(CMS_OBJS) \ ! $(CMS_RPC_XDR_OBJS) \ ! $(CMS_TTY_OBJS) \ ! $(ALLPLATS_CMS_OBJS) \ ! $(CMS_XML_OBJS) endif *************** *** 200,204 **** ifeq (linuxVME, $(PLAT)) ! LIBCMS_OBJS := $(LIBCMS_OBJS) globmem.o else # ifeq (linuxVME, $(PLAT)) --- 191,195 ---- ifeq (linuxVME, $(PLAT)) ! CMS_OBJS := $(CMS_OBJS) globmem.o else # ifeq (linuxVME, $(PLAT)) *************** *** 210,214 **** ifeq ($(PLAT),linux_rtai) ! LIBCMS_OBJS := $(LIBCMS_OBJS) \ rtlmem.o \ rtlnml.o \ --- 201,205 ---- ifeq ($(PLAT),linux_rtai) ! CMS_OBJS := $(CMS_OBJS) \ rtlmem.o \ rtlnml.o \ *************** *** 220,224 **** ifneq ($(NO_RTL),1) ! LIBCMS_OBJS := $(LIBCMS_OBJS) \ rtlmem.o \ rtlnml.o \ --- 211,215 ---- ifneq ($(NO_RTL),1) ! CMS_OBJS := $(CMS_OBJS) \ rtlmem.o \ rtlnml.o \ *************** *** 240,249 **** # ifeq (linuxVME, $(PLAT)) - x:=$(shell echo LIBCMS_OBJS=$(LIBCMS_OBJS) >>/tmp/rclsibmake.log) endif ! # ifndef LIBCMS_OBJS_SET LIBRCS_OBJS := $(LIBRCS_OBJS) \ ! $(LIBCMS_OBJS) --- 231,306 ---- # ifeq (linuxVME, $(PLAT)) endif ! # ifndef CMS_OBJS_SET ! ! CMS_HEADERS := cms.hh \ ! cmsdiag.hh \ ! nmldiag.hh \ ! cms_cfg.hh \ ! autokey.h \ ! cms_user.hh \ ! cms_up.hh \ ! cms_xup.hh \ ! cms_aup.hh \ ! cms_xml_up.hh \ ! nml.hh \ ! nmlmsg.hh \ ! globmem.hh \ ! spinlock.h \ ! shmem.hh \ ! memsem.hh \ ! rpc_host.hh \ ! cms_srv.hh \ ! nml_srv.hh \ ! phantom.hh \ ! perftype.hh \ ! _physmem.h \ ! physmem.hh \ ! rem_msg.hh \ ! rpc_srv.hh \ ! tcp_srv.hh \ ! http_srv.hh \ ! tcpmem.hh \ ! stcpmem.hh \ ! xdr_msg.hh \ ! tcp_opts.hh \ ! udp_opts.hh \ ! udpmem.hh \ ! udp_srv.hh \ ! sendmsgt.h \ ! recvmsgt.h \ ! recvn.h \ ! sendn.h \ ! msghdr.h \ ! sokintrf.h \ ! rpcintrf.h \ ! windlg.h \ ! dlgproc.h \ ! nmlperf.hh \ ! nmlwatch.h \ ! locmem.hh \ ! filemem.hh \ ! cms_dup.hh \ ! sendline.h \ ! recvline.h \ ! stcpsvr.hh \ ! stcpopts.hh \ ! gpioctl.h \ ! mapmem.h \ ! crypt2.hh \ ! bbdmem.hh \ ! bbd.h \ ! bus_lock.h \ ! dma.h \ ! nmlqr.hh \ ! bd_types.h \ ! ttyintf.h \ ! ttymem.hh \ ! tty_srv.hh \ ! rtlmem.hh \ ! rtlnml.h LIBRCS_OBJS := $(LIBRCS_OBJS) \ ! $(CMS_OBJS) |
From: <wsh...@us...> - 2003-07-02 13:46:31
|
Update of /cvsroot/emc/rcslib/src/cms In directory sc8-pr-cvs1:/tmp/cvs-serv24293 Added Files: cms_datetime.cc Log Message: this file is really only needed for OMAC XML stuff, but since I already checked in the Makefile that mentions it by mistake I'll check this in too. --- NEW FILE: cms_datetime.cc --- #include "cms.hh" #include <time.h> #include <stdio.h> #include <errno.h> void get_current_cms_date_time(struct CMS_DATE_TIME *dt) { struct tm *tm_ptr; time_t time_returned_from_time; time_t time_storage_var; if(!dt) { return; } tm_ptr=0; time_returned_from_time = time(&time_storage_var); if(((time_t)-1) == time_returned_from_time ) { perror("time:"); return; } tm_ptr = localtime(&time_returned_from_time); if(!tm_ptr) { return; } dt->seconds = tm_ptr->tm_sec; dt->minutes = tm_ptr->tm_min; dt->hours = tm_ptr->tm_hour; dt->days = tm_ptr->tm_mday; dt->months = tm_ptr->tm_mon; dt->years = tm_ptr->tm_year; } void get_current_cms_date(struct CMS_DATE *d) { struct tm *tm_ptr; time_t time_returned_from_time; time_t time_storage_var; if(!d) { return; } tm_ptr=0; time_returned_from_time = time(&time_storage_var); if(((time_t)-1) == time_returned_from_time ) { perror("time:"); return; } tm_ptr = localtime(&time_returned_from_time); if(!tm_ptr) { return; } d->days = tm_ptr->tm_mday; d->months = tm_ptr->tm_mon; d->years = tm_ptr->tm_year; } void get_current_cms_time(struct CMS_TIME *t) { struct tm *tm_ptr; time_t time_returned_from_time; time_t time_storage_var; if(!t) { return; } tm_ptr=0; time_returned_from_time = time(&time_storage_var); if(((time_t)-1) == time_returned_from_time ) { perror("time:"); return; } tm_ptr = localtime(&time_returned_from_time); if(!tm_ptr) { return; } t->seconds = tm_ptr->tm_sec; t->minutes = tm_ptr->tm_min; t->hours = tm_ptr->tm_hour; } |
From: <ms...@us...> - 2003-07-01 23:59:47
|
Update of /cvsroot/emc/emc_HAL/src/emcmot In directory sc8-pr-cvs1:/tmp/cvs-serv12656 Modified Files: emcmot.c Log Message: Changes to emcmot.c to improve stepper motor performance in freqmod & steppermod Index: emcmot.c =================================================================== RCS file: /cvsroot/emc/emc_HAL/src/emcmot/emcmot.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** emcmot.c 16 May 2003 22:02:55 -0000 1.2 --- emcmot.c 1 Jul 2003 23:59:43 -0000 1.3 *************** *** 1,2 **** --- 1,3 ---- + #define _XOPEN_SOURCE /* emcmot.c *************** *** 7,14 **** Modification history: 29-Jan-2003 WPS changed call to simMotInit to extMotCycle 10-Dec-2002 WPS eliminated use of direct time stamp measurements, apparently [...11439 lines suppressed...] ! while (!emcmot_done) ! { ! cycles++; ! delta = etime (); ! emcmotController (0); ! cur_time = etime (); ! delta = cur_time - delta; ! delta = emcmotConfig->servoCycleTime - delta; ! ! if (delta > 0.0) ! { ! esleep (delta); ! } } ! cleanup_module (); ! exit (0); } #endif /* not rtlinux */ |
From: <ray...@us...> - 2003-06-29 02:33:14
|
Update of /cvsroot/emc/emc In directory sc8-pr-cvs1:/tmp/cvs-serv29406 Modified Files: sim.var stepper.var Log Message: Removed g92 values Index: sim.var =================================================================== RCS file: /cvsroot/emc/emc/sim.var,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** sim.var 7 May 2003 19:49:50 -0000 1.10 --- sim.var 29 Jun 2003 02:33:12 -0000 1.11 *************** *** 11,21 **** 5185 0.000000 5186 0.000000 ! 5211 -0.716000 ! 5212 1.000000 ! 5213 1.000000 5214 0.000000 5215 0.000000 5216 0.000000 ! 5220 6.000000 5221 0.000000 5222 0.000000 --- 11,21 ---- 5185 0.000000 5186 0.000000 ! 5211 0.000000 ! 5212 0.000000 ! 5213 0.000000 5214 0.000000 5215 0.000000 5216 0.000000 ! 5220 0.000000 5221 0.000000 5222 0.000000 Index: stepper.var =================================================================== RCS file: /cvsroot/emc/emc/stepper.var,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** stepper.var 24 May 2002 18:05:28 -0000 1.1 --- stepper.var 29 Jun 2003 02:33:12 -0000 1.2 *************** *** 11,15 **** 5185 0.000000 5186 0.000000 ! 5211 -0.000000 5212 0.000000 5213 0.000000 --- 11,15 ---- 5185 0.000000 5186 0.000000 ! 5211 0.000000 5212 0.000000 5213 0.000000 |
From: <wsh...@us...> - 2003-06-23 13:55:52
|
Update of /cvsroot/emc/emc/src/emcsim In directory sc8-pr-cvs1:/tmp/cvs-serv27573 Modified Files: Makefile Log Message: Don't build inisim or simstatprint unless someone actually asks for it. Index: Makefile =================================================================== RCS file: /cvsroot/emc/emc/src/emcsim/Makefile,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** Makefile 13 Jun 2001 19:58:02 -0000 1.8 --- Makefile 23 Jun 2003 13:55:49 -0000 1.9 *************** *** 105,110 **** simmot_n.h ! BINS = inisim \ ! simstatprint --- 105,113 ---- simmot_n.h ! # Don't build this stuff by default: there is some chance of ! # it failing due to bad configuration stuff and not many people will ! # use it. run "make inisim" or "make simstatprint" if you want them. ! #BINS = inisim \ ! # simstatprint *************** *** 119,125 **** simdio.o \ simaio.o \ ! simbase.o \ ! inisim.o \ ! simmot_n.o endif --- 122,130 ---- simdio.o \ simaio.o \ ! simbase.o ! ! # \ ! # inisim.o \ ! # simmot_n.o endif |
From: <wsh...@us...> - 2003-06-23 13:40:43
|
Update of /cvsroot/emc/rcslib/src/cms In directory sc8-pr-cvs1:/tmp/cvs-serv25474 Modified Files: Makefile cms_cfg.cc Log Message: RTLMEM is not very often used, and it is somewhat problematic since it depends on RTAI or RTLINUX so lets avoid having cms_cfg.cc use it unless CMS_CFG_USE_RTLMEM is in the .def file or added to the make command line. Index: Makefile =================================================================== RCS file: /cvsroot/emc/rcslib/src/cms/Makefile,v retrieving revision 4.48 retrieving revision 4.49 diff -C2 -d -r4.48 -r4.49 *** Makefile 7 May 2003 19:35:28 -0000 4.48 --- Makefile 23 Jun 2003 13:40:39 -0000 4.49 *************** *** 6,11 **** endif - ifndef PLAT include ../Makefile.rcs --- 6,11 ---- endif + ifndef PLAT include ../Makefile.rcs *************** *** 44,118 **** SRCS = rtlnml.c ! OBJS = $(LIBCMS_OBJS) else ! HEADERS = cms.hh \ ! cmsdiag.hh \ ! nmldiag.hh \ ! cms_cfg.hh \ ! autokey.h \ ! cms_user.hh \ ! cms_up.hh \ ! cms_xup.hh \ ! cms_aup.hh \ ! cms_xml_up.hh \ ! nml.hh \ ! nmlmsg.hh \ ! globmem.hh \ ! spinlock.h \ ! shmem.hh \ ! memsem.hh \ ! rpc_host.hh \ ! cms_srv.hh \ ! nml_srv.hh \ ! phantom.hh \ ! perftype.hh \ ! _physmem.h \ ! physmem.hh \ ! rem_msg.hh \ ! rpc_srv.hh \ ! tcp_srv.hh \ ! http_srv.hh \ ! tcpmem.hh \ ! stcpmem.hh \ ! xdr_msg.hh \ ! tcp_opts.hh \ ! udp_opts.hh \ ! udpmem.hh \ ! udp_srv.hh \ ! sendmsgt.h \ ! recvmsgt.h \ ! recvn.h \ ! sendn.h \ ! msghdr.h \ ! sokintrf.h \ ! rpcintrf.h \ ! windlg.h \ ! dlgproc.h \ ! nmlperf.hh \ ! nmlwatch.h \ ! locmem.hh \ ! filemem.hh \ ! cms_dup.hh \ ! sendline.h \ ! recvline.h \ ! stcpsvr.hh \ ! stcpopts.hh \ ! gpioctl.h \ ! mapmem.h \ ! crypt2.hh \ ! bbdmem.hh \ ! bbd.h \ ! bus_lock.h \ ! dma.h \ ! nmlqr.hh \ ! bd_types.h \ ! ttyintf.h \ ! ttymem.hh \ ! tty_srv.hh \ ! rtlmem.hh \ ! rtlnml.h ! VXWORKS_SRCS = \ --- 44,52 ---- SRCS = rtlnml.c ! OBJS = $(CMS_OBJS) else ! HEADERS = $(CMS_HEADERS) VXWORKS_SRCS = \ *************** *** 136,140 **** ! COMMON_SRCS = cms.cc \ cmsdiag.cc \ nmldiag.cc \ --- 70,76 ---- ! COMMON_SRCS = \ ! cms.cc \ ! cms_datetime.cc \ cmsdiag.cc \ nmldiag.cc \ *************** *** 210,214 **** ! OBJS := $(LIBCMS_OBJS) endif --- 146,150 ---- ! OBJS := $(CMS_OBJS) endif *************** *** 228,231 **** --- 164,171 ---- endif + ifdef CMS_CFG_USE_RTLMEM + LOCAL_CFLAGS += -DCMS_CFG_USE_RTLMEM + endif + #Application Makefile for inclusion *************** *** 274,278 **** $(DEVP_LIB_DIR)/libcms.o: \ ! $(LIBCMS_OBJS:%=$(DEVP_LIB_DIR)/%) $(LD) -r $^ -o $@ --- 214,218 ---- $(DEVP_LIB_DIR)/libcms.o: \ ! $(CMS_OBJS:%=$(DEVP_LIB_DIR)/%) $(LD) -r $^ -o $@ *************** *** 424,431 **** iostest: $(DEVP_LIB_DIR)/iostest.o - .PHONY: nmltest nmlcfg nmlperf perfsvr nmlclean iostest strtest nmlwatch \ - nmltest.tc nmlperf.tc perfsvr.tc nmlclean.tc nmlwatch.tc spintest \ - test_con tcpproxy nmlpwd - main: $(DEVP_BIN_DIR)/main --- 364,367 ---- *************** *** 503,508 **** --- 439,455 ---- # ifdef PLAT + .PHONY: nmltest nmlcfg nmlperf perfsvr nmlclean iostest strtest nmlwatch \ + nmltest.tc nmlperf.tc perfsvr.tc nmlclean.tc nmlwatch.tc spintest \ + test_con tcpproxy nmlpwd + + + $(DEVP_BIN_DIR)/nmlsizes: nmlsizes.cc + $(CPLUSPLUS) -g -I. -I.. -I../stg_clss -I../print -I../os_intf -I../posemath -I../node $(CFLAGS) $(CPLUSPLUSFLAGS) $^ -o $@ + nmlsizes: $(DEVP_BIN_DIR)/nmlsizes + -rm ./nmlsizes + -ln -s $(DEVP_BIN_DIR)/nmlsizes nmlsizes + .PHONY: nmlsizes Index: cms_cfg.cc =================================================================== RCS file: /cvsroot/emc/rcslib/src/cms/cms_cfg.cc,v retrieving revision 4.42 retrieving revision 4.43 diff -C2 -d -r4.42 -r4.43 *** cms_cfg.cc 6 May 2003 15:18:13 -0000 4.42 --- cms_cfg.cc 23 Jun 2003 13:40:39 -0000 4.43 *************** *** 71,80 **** #endif ! #ifdef LINUX ! #if defined(HAVE_RTL) || defined(linux_rtai) ! #ifndef linux_2_0_36 ! #include "rtlmem.hh" // class RTLMEM ! #endif #endif #endif --- 71,83 ---- #endif ! ! #ifdef CMS_CFG_USE_RTLMEM ! #if !defined(linux) || ( !defined(HAVE_RTL) && !defined(linux_rtai)) || defined(linux_2_0_36) ! #warning "CMS_CFG_USE_RTLMEM should not be set for this platform." ! #undef CMS_CFG_USE_RTLMEM #endif + + #ifdef CMS_CFG_USE_RTLMEM + #include "rtlmem.hh" // class RTLMEM #endif *************** *** 1359,1365 **** } #endif /* !__MSDOS__ */ ! #ifdef LINUX ! #if defined(HAVE_RTL) || defined(linux_rtai) ! #ifndef linux_2_0_36 if (!strcmp (buffer_type, "RTLMEM")) { --- 1362,1366 ---- } #endif /* !__MSDOS__ */ ! #ifdef CMS_CFG_USE_RTLMEM if (!strcmp (buffer_type, "RTLMEM")) { *************** *** 1394,1399 **** } } - #endif - #endif #endif if (!strcmp (buffer_type, "LOCMEM")) --- 1395,1398 ---- |
From: <ray...@us...> - 2003-06-21 16:07:59
|
Update of /cvsroot/emc/documents/lyx In directory sc8-pr-cvs1:/tmp/cvs-serv27575 Modified Files: Glossary.lyx Log Message: added kinematics from Sagar Index: Glossary.lyx =================================================================== RCS file: /cvsroot/emc/documents/lyx/Glossary.lyx,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** Glossary.lyx 22 May 2003 21:53:45 -0000 1.6 --- Glossary.lyx 21 Jun 2003 16:07:56 -0000 1.7 *************** *** 40,46 **** rather than the standard style. It also uses each term as a Label so that one term can ! easily refer to another using a cross reference. ! Cross references need a space ahead and after ! so that they look good in the published documents. \end_inset --- 40,46 ---- rather than the standard style. It also uses each term as a Label so that one term can ! easily refer to another using a cross reference. ! Cross references need a space ahead and after ! so that they look good in the published documents. \end_inset *************** *** 88,92 **** \end_inset ! The amount of play or slop in a lead-screw \begin_inset LatexCommand \ref{Leadscrew} --- 88,93 ---- \end_inset ! The amount of "play" or lost motion that occurs when direction is reversed ! in a lead screw \begin_inset LatexCommand \ref{Leadscrew} *************** *** 94,97 **** --- 95,118 ---- . + or other mechanical motion driving system. + It can result from nuts that are loose on leadscrews, slippage in belts, + cable slack, "wind-up" in rotary couplings, and other places where the + mechanical system is not "tight". + Backlash will result in inaccurate motion, or in the case of motion caused + by external forces (think cutting tool pulling on the work piece) the result + can be broken cutting tools. + This can happen because of the sudden increase in chip load on the cutter + as the work piece is pulled across the backlash distance by the cutting + tool. + + \layout Description + + Backlash_compensation - Any technique that attempts to reduce the effect + of backlash without actually removing it from the mechanical system. + This is typically done in software in the controller. + This can correct the final resting place of the part in motion but fails + to solve problems related to direction changes while in motion (think circular + interpolation) and motion that is caused when external forces (think cutting + tool pulling on the work piece) are the source of the motion. \layout Description *************** *** 316,319 **** --- 337,349 ---- \layout Description + Joint_Coordinates: + \begin_inset LatexCommand \label{Joint_Coordinates} + + \end_inset + + These specify the angles between the individual joints of the machine.\SpecialChar ~ + Kinematics + \layout Description + Jog Manually moving an axis of a machine. Jogging either moves the axis a fixed amount for each key-press, or moves *************** *** 334,338 **** --- 364,385 ---- \end_inset + The position relationship between world coordinates + \begin_inset LatexCommand \ref{World_Coordinates} + + \end_inset + + and joint coordinates + \begin_inset LatexCommand \ref{Joint_Coordinates} + + \end_inset + of a machine. + There are two types of kinematics. + Forward kinematics is used to calculate world coordinates from joint coordinate + s. + Inverse kinematics is used for exactly opposite purpose.Note that kinematics + does not take into account, the forces, moments etc. + on the machine. + It is for positioning only. \layout Description *************** *** 569,571 **** --- 616,628 ---- were written. + \layout Description + + World_Coordinates: + \begin_inset LatexCommand \label{World_Coordinates} + + \end_inset + + This is the absolute frame of reference. + It gives coordinates in terms of a fixed reference frame that is attached + to some point (generally the base) of the machine tool. \the_end |
From: <ms...@us...> - 2003-06-20 20:41:42
|
Update of /cvsroot/emc/rcslib/src In directory sc8-pr-cvs1:/tmp/cvs-serv30895/src Modified Files: Makefile Log Message: Commented out a line in rcslib/src/Makefile (no rule to build test.o) Index: Makefile =================================================================== RCS file: /cvsroot/emc/rcslib/src/Makefile,v retrieving revision 4.78 retrieving revision 4.79 diff -C2 -d -r4.78 -r4.79 *** Makefile 20 Jun 2003 13:48:42 -0000 4.78 --- Makefile 20 Jun 2003 20:41:37 -0000 4.79 *************** *** 913,917 **** .PHONY: librcs archive archive_plat archive_src ! test: $(DEVP_LIB_DIR)/test.o memtest: $(DEVP_LIB_DIR)/memtest.o --- 913,918 ---- .PHONY: librcs archive archive_plat archive_src ! # 20JUN03 MGS commented out this line because make complains that there's no rule to make test.o ! #test: $(DEVP_LIB_DIR)/test.o memtest: $(DEVP_LIB_DIR)/memtest.o |
Update of /cvsroot/emc/rcslib/etc In directory sc8-pr-cvs1:/tmp/cvs-serv23088 Modified Files: platname rtlinuxdir.sh tcltklibflags.sh tcltkincflags.sh havertai.sh havertlinux.sh rtaidir Log Message: each of these scripts tries to determine something that should perhaps be set explicitly, so they now examine an environment variable and use that with no checking or guessing if it is set, they also print a warning message suggesting that an environment variable be set rather than relying on their outcome. It then goes on to give guessing a try. Index: platname =================================================================== RCS file: /cvsroot/emc/rcslib/etc/platname,v retrieving revision 1.30 retrieving revision 1.31 diff -C2 -d -r1.30 -r1.31 *** platname 19 Jun 2003 02:30:20 -0000 1.30 --- platname 20 Jun 2003 13:56:09 -0000 1.31 *************** *** 1,4 **** --- 1,23 ---- #!/bin/sh + # 20-Jun-2003 WPS moved this to the front and add warning message + # This allows this script to be more or less manually bypassed + if test "x${PLAT}" != "x" ; then + echo ${PLAT} + exit 0 + fi + + if test ! -f .platname_guess_warn -a ! -f ~/.platname_guess_warn ; then + + echo "Platform name is being guessed. Set the environment variable PLAT to override." 1>&2 + # Touch the platname_guess_warn files so we don't have to see this warning + # too many times. + touch .platname_guess_warn >/dev/null 2>/dev/null + touch ~/.platname_guess_warn >/dev/null 2>/dev/null + + fi + + + # 18JUN03 MGS made some additions to this file so that it would work on the 2.18 BDI # Hopefully, it won't break anything else... *************** *** 12,16 **** # Change to the directory containing this script ! cd $0/.. # Add this directory to the PATH environment variable --- 31,37 ---- # Change to the directory containing this script ! # cd $0/.. doesn't work with bash 2.05 and relative path names, so ! # if $0 ends up evaluating to ../etc/platname then cd ../etc/platname/.. produces# this error ../etc/platname: line 14: cd: ../etc/platname/..: No such file or directory ! cd `echo $0 | sed s#/platname## | sed s#platname##` # Add this directory to the PATH environment variable *************** *** 21,29 **** # Change back to the original directory cd $ORIGINAL_DIR - - if test "0${PLAT}" != 0 ; then - echo ${PLAT} - exit 0 - fi if test "0${HOME}" = 0 ; then --- 42,45 ---- Index: rtlinuxdir.sh =================================================================== RCS file: /cvsroot/emc/rcslib/etc/rtlinuxdir.sh,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** rtlinuxdir.sh 9 Dec 2002 20:50:06 -0000 1.1 --- rtlinuxdir.sh 20 Jun 2003 13:56:09 -0000 1.2 *************** *** 1,4 **** --- 1,17 ---- #!/bin/sh + + if test "x${RTLINUXDIR}" != "x" ; then + echo -n ${RTLINUXDIR} + exit 0 + fi + + if test ! -f .rtlinuxdir_guess_warn -a ! -f ~/.rtlinuxdir_guess_warn ; then + echo "Trying to guess where RTLINUX is installed." 1>&2 + echo "Set the environment variable RTLINUXDIR to override." 1>&2 + touch .rtlinuxdir_guess_warn >/dev/null 2>/dev/null + touch ~/.rtlinuxdir_guess_warn >/dev/null 2>/dev/null + fi + if [ -f ~/.debug_scripts ] ; then set -x; Index: tcltklibflags.sh =================================================================== RCS file: /cvsroot/emc/rcslib/etc/tcltklibflags.sh,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** tcltklibflags.sh 20 Feb 2003 13:33:07 -0000 1.3 --- tcltklibflags.sh 20 Jun 2003 13:56:09 -0000 1.4 *************** *** 1,4 **** --- 1,17 ---- #!/bin/sh + + if test "x${TCLTKLIBFLAGS}" != "x" ; then + echo ${TCLTKLIBFLAGS} + exit 0 + fi + + if test ! -f .tcltklibflags_guess_warn -a ! ~/.tcltklibflags_guess_warn ; then + echo "Trying to guess what flags need to be used to link C programs that interact with tcl/tk." 1>&2 + echo "Set the environment variable TCLTKLIBFLAGS to override this." 1>&2 + touch .tcltklibflags_guess_warn >/dev/null 2>/dev/null + touch ~/.tcltklibflags_guess_warn >/dev/null 2>/dev/null + fi + # set -x *************** *** 27,30 **** --- 40,45 ---- fi + TCLTKLIBFLAGS="$TCL_LFLAG $TCLX_LFLAG $TK_LFLAG $TKX_LFLAG" + export TCLTKLIBFLAGS echo $TCL_LFLAG $TCLX_LFLAG $TK_LFLAG $TKX_LFLAG Index: tcltkincflags.sh =================================================================== RCS file: /cvsroot/emc/rcslib/etc/tcltkincflags.sh,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** tcltkincflags.sh 20 Feb 2003 13:36:44 -0000 1.3 --- tcltkincflags.sh 20 Jun 2003 13:56:09 -0000 1.4 *************** *** 1,4 **** --- 1,18 ---- #!/bin/sh + + if test "x${TCLTKINCFLAGS}" != "x" ; then + echo ${TCLTKINCFLAGS} + exit 0 + fi + + if test ! -f .tcltkincflags_guess_warn -a ! ~.tcltkincflags_guess_warn ; then + echo "Trying to guess what flags need to be used to compile C programs that interact with tcl/tk." 1>&2 + echo "Set the environment variable TCLTKINCFLAGS to override this." 1>&2 + touch .tcltkincflags_guess_warn >/dev/null 2>/dev/null + touch ~/.tcltkincflags_guess_warn >/dev/null 2>/dev/null + fi + + if [ -f ~/.debug_scripts ] ; then set -x *************** *** 35,38 **** --- 49,55 ---- TK_IFLAGS= fi + + TCLTKINCFLAGS="$TCL_IFLAGS $TCL_EXTEND_IFLAGS $TK_IFLAGS" + export TCLTKINCFLAGS echo $TCL_IFLAGS $TCL_EXTEND_IFLAGS $TK_IFLAGS Index: havertai.sh =================================================================== RCS file: /cvsroot/emc/rcslib/etc/havertai.sh,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** havertai.sh 6 May 2003 15:18:12 -0000 1.1 --- havertai.sh 20 Jun 2003 13:56:09 -0000 1.2 *************** *** 2,5 **** --- 2,17 ---- + if test "x${HAVE_RTAI}" != "x" ; then + echo ${HAVE_RTAI} + exit 0 + fi + + if test ! -f .rtai_guess_warn -a ! -f ~/.rtai_guess_warn ; then + echo "Trying to determine if RTAI is installed." 1>&2 + echo "Set the environment variable HAVE_RTAI to YES or NO to override." 1>&2 + touch .rtai_guess_warn >/dev/null 2>/dev/null + touch ~/.rtai_guess_warn >/dev/null 2>/dev/null + fi + ECHO_CMD=echo # I would like to make this echo -n which eliminates annecessary and troublesome Index: havertlinux.sh =================================================================== RCS file: /cvsroot/emc/rcslib/etc/havertlinux.sh,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** havertlinux.sh 7 Apr 2003 15:35:25 -0000 1.5 --- havertlinux.sh 20 Jun 2003 13:56:09 -0000 1.6 *************** *** 2,5 **** --- 2,21 ---- + if test "x${HAVE_RTLINUX}" != "x" ; then + echo ${HAVE_RTLINUX} + exit 0 + fi + + if test ! -f .rtlinux_guess_warn -a ! -f ~/.rtlinux_guess_warn ; then + echo "Trying to determine if RTLINUX is installed." 1>&2 + echo "Set the environment variable HAVE_RTLINUX to YES or NO to override." 1>&2 + touch .rtlinux_guess_warn >/dev/null 2>/dev/null + touch ~/.rtlinux_guess_warn >/dev/null 2>/dev/null + fi + + + + + ECHO_CMD=echo # I would like to make this echo -n which eliminates annecessary and troublesome Index: rtaidir =================================================================== RCS file: /cvsroot/emc/rcslib/etc/rtaidir,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** rtaidir 19 Jun 2003 15:39:58 -0000 1.4 --- rtaidir 20 Jun 2003 13:56:09 -0000 1.5 *************** *** 6,11 **** fi ! echo "Trying to guess RTAI directory." 1>&2 ! echo "Set the environment variable RTAIDIR to override this." 1>&2 rev=`uname -r` --- 6,15 ---- fi ! if test ! -f ./rtaidir_guess_warn -a ! -f ~/.rtaidir_guess_warn ; then ! echo "Trying to guess RTAI directory." 1>&2 ! echo "Set the environment variable RTAIDIR to override this." 1>&2 ! touch ./rtaidir_guess_warn >/dev/null 2>/dev/null ! touch ~/.rtaidir_guess_warn >/dev/null 2>/dev/null ! fi rev=`uname -r` |
From: <emc...@li...> - 2003-06-20 13:48:45
|
Update of /cvsroot/emc/rcslib/src In directory sc8-pr-cvs1:/tmp/cvs-serv22005 Modified Files: Makefile Log Message: should eliminate the harmless errors that are shown about .depend.lists not existing the first time the make is run adds a phony target to delete .??_guess_warn_files Index: Makefile =================================================================== RCS file: /cvsroot/emc/rcslib/src/Makefile,v retrieving revision 4.77 retrieving revision 4.78 diff -C2 -d -r4.77 -r4.78 *** Makefile 15 May 2003 16:41:46 -0000 4.77 --- Makefile 20 Jun 2003 13:48:42 -0000 4.78 *************** *** 11,20 **** SRCS = rcsvers.c - x:=$(shell rm /tmp/rcslibmake.log) - x:=$(shell date >/tmp/rcslibmake.log) - x:=$(shell chmod a+rw /tmp/rcslibmake.log) - x:=$(shell echo PLAT=$(PLAT) >>/tmp/rcslibmake.log ) - x:=$(shell echo MAKE=$(MAKE) MAKEFLAGS=\"$(MAKEFLAGS)\" MAKECMDGOALS=\"$(MAKECMDGOALS)\" CURDIR=\"$(CURDIR)\" >>/tmp/rcslibmake.log ) - ifneq (java, $(findstring java, $(PLAT))) ifneq (rtlinux, $(findstring rtlinux, $(PLAT))) --- 11,14 ---- *************** *** 37,46 **** endif - x:=$(shell echo HAVE_RTAI=$(HAVE_RTAI) HAVE_RTLINUX=$(HAVE_RTLINUX) >>/tmp/rcslibmake.log ) - ifneq (YES, $(HAVE_RTLINUX)) ifneq (YES, $(HAVE_RTAI)) NO_RTL=1 - x:=$(shell echo setting NO_RTL=1 >>/tmp/rcslibmake.log ) endif endif --- 31,37 ---- *************** *** 49,54 **** endif - x:=$(shell echo NO_RTL=$(NO_RTL) >>/tmp/rcslibmake.log ) - # Include definitions of LIBRCS_OBJS include print/Makefile.lib --- 40,43 ---- *************** *** 68,77 **** nt_xdr_make_all: ! $(MAKE) -C nt_xdr all .PHONY: nt_xdr_make_all nt_xdr_make_headers: ! $(MAKE) -C nt_xdr headers endif --- 57,66 ---- nt_xdr_make_all: ! $(MAKE) PLAT=$(PLAT) -C nt_xdr all .PHONY: nt_xdr_make_all nt_xdr_make_headers: ! $(MAKE) PLAT=$(PLAT) -C nt_xdr headers endif *************** *** 84,89 **** LIBRCS_OBJS := $(LIBRCS_OBJS) - x:=$(shell echo LIBRCS_OBJS=\"$(LIBRCS_OBJS)\" >>/tmp/rcslibmake.log ) - # Declare which files are to be released. --- 73,76 ---- *************** *** 229,233 **** delete clean depend sources headers: ! (cd java; $(MAKE) $(MFLAGS) COMPILE_TOGETHER=1 $@;) else --- 216,220 ---- delete clean depend sources headers: ! (cd java; $(MAKE) PLAT=$(PLAT) $(MFLAGS) COMPILE_TOGETHER=1 $@;) else *************** *** 237,242 **** delete clean depend sources headers release_headers: ! (cd posemath; $(MAKE) $@ $(MFLAGS);) ! (cd cms; $(MAKE) $@ $(MFLAGS);) --- 224,229 ---- delete clean depend sources headers release_headers: ! (cd posemath; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) ! (cd cms; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) *************** *** 248,253 **** delete clean depend sources headers: ! (cd posemath; $(MAKE) $@ $(MFLAGS);) ! (cd cms; $(MAKE) $@ $(MFLAGS);) --- 235,240 ---- delete clean depend sources headers: ! (cd posemath; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) ! (cd cms; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) *************** *** 259,269 **** delete clean sources headers: ! (cd nt_xdr; $(MAKE) $@ $(MFLAGS);) ! (cd stg_clss; $(MAKE) $@ $(MFLAGS);) ! (cd print; $(MAKE) $@ $(MFLAGS);) ! (cd os_intf; $(MAKE) $@ $(MFLAGS);) ! (cd posemath; $(MAKE) $@ $(MFLAGS);) ! (cd cms; $(MAKE) $(MFLAGS) $@;) ! (cd node; $(MAKE) $(MFLAGS) $@;) else --- 246,256 ---- delete clean sources headers: ! (cd nt_xdr; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) ! (cd stg_clss; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) ! (cd print; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) ! (cd os_intf; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) ! (cd posemath; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) ! (cd cms; $(MAKE) PLAT=$(PLAT) $(MFLAGS) $@;) ! (cd node; $(MAKE) PLAT=$(PLAT) $(MFLAGS) $@;) else *************** *** 271,280 **** delete clean: ! $(MAKE) -C stg_clss $@ ! $(MAKE) -C print $@ ! $(MAKE) -C posemath $@ ! $(MAKE) -C os_intf $@ ! $(MAKE) -C cms $@ ! $(MAKE) -C node $@ # ! win --- 258,267 ---- delete clean: ! $(MAKE) PLAT=$(PLAT) -C stg_clss $@ ! $(MAKE) PLAT=$(PLAT) -C print $@ ! $(MAKE) PLAT=$(PLAT) -C posemath $@ ! $(MAKE) PLAT=$(PLAT) -C os_intf $@ ! $(MAKE) PLAT=$(PLAT) -C cms $@ ! $(MAKE) PLAT=$(PLAT) -C node $@ # ! win *************** *** 312,317 **** install: ! (cd java; $(MAKE) $(MFLAGS) COMPILE_TOGETHER=1 $@;) ! ($(MAKE) $(MFLAGS) archive) --- 299,304 ---- install: ! (cd java; $(MAKE) PLAT=$(PLAT) $(MFLAGS) COMPILE_TOGETHER=1 $@;) ! ($(MAKE) PLAT=$(PLAT) $(MFLAGS) archive) *************** *** 325,331 **** install: ! (cd posemath; $(MAKE) $@ $(MFLAGS);) ! (cd cms; $(MAKE) $@ $(MFLAGS);) ! ($(MAKE) $(MFLAGS) archive) --- 312,318 ---- install: ! (cd posemath; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) ! (cd cms; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) ! ($(MAKE) PLAT=$(PLAT) $(MFLAGS) archive) *************** *** 337,343 **** install: ! (cd posemath; $(MAKE) $@ $(MFLAGS);) ! (cd cms; $(MAKE) $@ $(MFLAGS);) ! ($(MAKE) $(MFLAGS) archive) --- 324,330 ---- install: ! (cd posemath; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) ! (cd cms; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) ! ($(MAKE) PLAT=$(PLAT) $(MFLAGS) archive) *************** *** 348,361 **** install: ! (cd stg_clss; $(MAKE) $@ $(MFLAGS);) ! (cd print; $(MAKE) $@ $(MFLAGS);) ! (cd os_intf; $(MAKE) $@ $(MFLAGS);) ! (cd posemath; $(MAKE) $@ $(MFLAGS);) ! (cd cms; $(MAKE) $@ $(MFLAGS);) ! (cd node; $(MAKE) $@ $(MFLAGS);) ! (cd pcio; $(MAKE) $@ $(MFLAGS);) ! (cd pmac; $(MAKE) $@ $(MFLAGS);) (if [ ! -f $(RELEASE_LIB_DIR)/libwww.$(DYNAMIC_LIB_EXTENSION) ] ; then \ ! cd w3c; $(MAKE) $@ $(MFLAGS); \ fi;) --- 335,348 ---- install: ! (cd stg_clss; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) ! (cd print; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) ! (cd os_intf; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) ! (cd posemath; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) ! (cd cms; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) ! (cd node; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) ! (cd pcio; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) ! (cd pmac; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) (if [ ! -f $(RELEASE_LIB_DIR)/libwww.$(DYNAMIC_LIB_EXTENSION) ] ; then \ ! cd w3c; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS); \ fi;) *************** *** 366,376 **** install: ! (cd nt_xdr; $(MAKE) $@ $(MFLAGS);) ! (cd stg_clss; $(MAKE) $@ $(MFLAGS);) ! (cd print; $(MAKE) $@ $(MFLAGS);) ! (cd os_intf; $(MAKE) $@ $(MFLAGS);) ! (cd posemath; $(MAKE) $@ $(MFLAGS);) ! (cd cms; $(MAKE) $@ $(MFLAGS);) ! (cd node; $(MAKE) $@ $(MFLAGS);) # win --- 353,363 ---- install: ! (cd nt_xdr; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) ! (cd stg_clss; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) ! (cd print; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) ! (cd os_intf; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) ! (cd posemath; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) ! (cd cms; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) ! (cd node; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) # win *************** *** 378,389 **** install: ! (cd stg_clss; $(MAKE) install $(MFLAGS) ;) ! (cd print; $(MAKE) install $(MFLAGS);) ! (cd os_intf; $(MAKE) install $(MFLAGS);) ! (cd posemath; $(MAKE) install $(MFLAGS);) ! (cd cms; $(MAKE) install $(MFLAGS);) ! (cd node; $(MAKE) install $(MFLAGS);) (if [ ! -f $(RELEASE_LIB_DIR)/libwww.$(DYNAMIC_LIB_EXTENSION) ] ; then \ ! cd w3c; $(MAKE) headers sources depend all install $(MFLAGS); \ fi;) --- 365,376 ---- install: ! (cd stg_clss; $(MAKE) PLAT=$(PLAT) install $(MFLAGS) ;) ! (cd print; $(MAKE) PLAT=$(PLAT) install $(MFLAGS);) ! (cd os_intf; $(MAKE) PLAT=$(PLAT) install $(MFLAGS);) ! (cd posemath; $(MAKE) PLAT=$(PLAT) install $(MFLAGS);) ! (cd cms; $(MAKE) PLAT=$(PLAT) install $(MFLAGS);) ! (cd node; $(MAKE) PLAT=$(PLAT) install $(MFLAGS);) (if [ ! -f $(RELEASE_LIB_DIR)/libwww.$(DYNAMIC_LIB_EXTENSION) ] ; then \ ! cd w3c; $(MAKE) PLAT=$(PLAT) headers sources depend all install $(MFLAGS); \ fi;) *************** *** 412,416 **** install: ! (cd java; $(MAKE) $(MFLAGS) COMPILE_TOGETHER=1 $@;) # java --- 399,403 ---- install: ! (cd java; $(MAKE) PLAT=$(PLAT) $(MFLAGS) COMPILE_TOGETHER=1 $@;) # java *************** *** 421,426 **** install: ! (cd posemath; $(MAKE) $@ $(MFLAGS);) ! (cd cms; $(MAKE) $@ $(MFLAGS);) # rtlinux --- 408,413 ---- install: ! (cd posemath; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) ! (cd cms; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) # rtlinux *************** *** 430,435 **** install: ! (cd posemath; $(MAKE) $@ $(MFLAGS);) ! (cd cms; $(MAKE) $@ $(MFLAGS);) # rtai --- 417,422 ---- install: ! (cd posemath; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) ! (cd cms; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) # rtai *************** *** 439,450 **** install: ! (cd stg_clss; $(MAKE) $(MFLAGS) $@;) ! (cd print; $(MAKE) $@ $(MFLAGS);) ! (cd os_intf; $(MAKE) $@ $(MFLAGS);) ! (cd posemath; $(MAKE) $@ $(MFLAGS);) ! (cd cms; $(MAKE) $(MFLAGS) $@;) ! (cd node; $(MAKE) $@ $(MFLAGS);) ! (cd pcio; $(MAKE) $@ $(MFLAGS);) ! (cd pmac; $(MAKE) $@ $(MFLAGS);) # lynx --- 426,437 ---- install: ! (cd stg_clss; $(MAKE) PLAT=$(PLAT) $(MFLAGS) $@;) ! (cd print; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) ! (cd os_intf; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) ! (cd posemath; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) ! (cd cms; $(MAKE) PLAT=$(PLAT) $(MFLAGS) $@;) ! (cd node; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) ! (cd pcio; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) ! (cd pmac; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) # lynx *************** *** 454,464 **** install: ! (cd nt_xdr; $(MAKE) $(MFLAGS) $@;) ! (cd stg_clss; $(MAKE) $(MFLAGS) $@;) ! (cd print; $(MAKE) $@ $(MFLAGS);) ! (cd os_intf; $(MAKE) $@ $(MFLAGS);) ! (cd posemath; $(MAKE) $@ $(MFLAGS);) ! (cd cms; $(MAKE) $(MFLAGS) $@;) ! (cd node; $(MAKE) $@ $(MFLAGS);) # win --- 441,451 ---- install: ! (cd nt_xdr; $(MAKE) PLAT=$(PLAT) $(MFLAGS) $@;) ! (cd stg_clss; $(MAKE) PLAT=$(PLAT) $(MFLAGS) $@;) ! (cd print; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) ! (cd os_intf; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) ! (cd posemath; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) ! (cd cms; $(MAKE) PLAT=$(PLAT) $(MFLAGS) $@;) ! (cd node; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) # win *************** *** 466,475 **** install: ! (cd stg_clss; $(MAKE) $(MFLAGS) $@;) ! (cd print; $(MAKE) $@ $(MFLAGS);) ! (cd os_intf; $(MAKE) $@ $(MFLAGS);) ! (cd posemath; $(MAKE) $@ $(MFLAGS);) ! (cd cms; $(MAKE) $@ $(MFLAGS);) ! (cd node; $(MAKE) $@ $(MFLAGS);) # win --- 453,462 ---- install: ! (cd stg_clss; $(MAKE) PLAT=$(PLAT) $(MFLAGS) $@;) ! (cd print; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) ! (cd os_intf; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) ! (cd posemath; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) ! (cd cms; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) ! (cd node; $(MAKE) PLAT=$(PLAT) $@ $(MFLAGS);) # win *************** *** 494,498 **** post_install_only: sendmail ! ($(MAKE) $(MFLAGS) archive) .PHONY: post_install_only --- 481,485 ---- post_install_only: sendmail ! ($(MAKE) PLAT=$(PLAT) $(MFLAGS) archive) .PHONY: post_install_only *************** *** 523,528 **** archive: ! -($(MAKE) $(MFLAGS) archive_plat) ! -($(MAKE) $(MFLAGS) archive_src) ifdef PLAT --- 510,515 ---- archive: ! -($(MAKE) PLAT=$(PLAT) $(MFLAGS) archive_plat) ! -($(MAKE) PLAT=$(PLAT) $(MFLAGS) archive_src) ifdef PLAT *************** *** 693,697 **** all: ! (cd java; $(MAKE) $(MFLAGS) COMPILE_TOGETHER=1 $@;) else --- 680,684 ---- all: ! (cd java; $(MAKE) PLAT=$(PLAT) $(MFLAGS) COMPILE_TOGETHER=1 $@;) else *************** *** 724,733 **** all: ! (cd cms; $(MAKE) $(MFLAGS) nmlcfg nmlperf perfsvr nmltest tcpproxy;) else all: ! (cd cms; $(MAKE) $(MFLAGS) nmlcfg nmlperf perfsvr nmltest tcpproxy;) -(cd $(DEVP_DIR) ; \rm -f rcslib_$(PLAT).zip; \ zip rcslib_$(PLAT).zip include/* src/* lib/librcs.a \ --- 711,720 ---- all: ! (cd cms; $(MAKE) PLAT=$(PLAT) $(MFLAGS) PLAT=$(PLAT) nmlcfg nmlclean nmlperf perfsvr nmltest tcpproxy;) else all: ! (cd cms; $(MAKE) PLAT=$(PLAT) $(MFLAGS) PLAT=$(PLAT) nmlcfg nmlclean nmlperf perfsvr nmltest tcpproxy;) -(cd $(DEVP_DIR) ; \rm -f rcslib_$(PLAT).zip; \ zip rcslib_$(PLAT).zip include/* src/* lib/librcs.a \ *************** *** 958,962 **** ifneq (rtai, $(PLAT)) ! $(DEVP_LIB_DIR)/rcsvers.o: $(DEVP_DIR)/.stg_clssbuild $(DEVP_DIR)/.printbuild $(DEVP_DIR)/.posemathbuild $(DEVP_DIR)/.os_intfbuild $(DEVP_DIR)/.cmsbuild $(DEVP_DIR)/.nodebuild --- 945,949 ---- ifneq (rtai, $(PLAT)) ! $(DEVP_LIB_DIR)/rcsvers.o: $(DEVP_DIR)/.stg_clssbuild $(DEVP_DIR)/.printbuild $(DEVP_DIR)/.posemathbuild $(DEVP_DIR)/.os_intfbuild $(DEVP_DIR)/.cmsbuild $(DEVP_DIR)/.nodebuild $(DEVP_DIR)/.nodeheaders $(DEVP_DIR)/.stg_clssheaders $(DEVP_DIR)/.printheaders $(DEVP_DIR)/.cmsheaders $(DEVP_DIR)/.os_intfheaders *************** *** 979,993 **** ifneq (java, $(findstring java, $(PLAT))) - ALLHEADERS = $(shell find . -type f -a '(' -name \*.h -o -name \*.hh ')' ) - headers: $(DEVP_DIR)/.headersbuild ! $(DEVP_DIR)/.headersbuild: $(ALLHEADERS) ! $(MAKE) -C stg_clss headers ! $(MAKE) -C print headers ! $(MAKE) -C posemath headers ! $(MAKE) -C os_intf headers ! $(MAKE) -C cms headers ! $(MAKE) -C node headers touch $@ --- 966,972 ---- ifneq (java, $(findstring java, $(PLAT))) headers: $(DEVP_DIR)/.headersbuild ! $(DEVP_DIR)/.headersbuild: touch $@ *************** *** 1002,1035 **** $(DEVP_DIR)/.stg_clssbuild : $(DEVP_DIR)/.headersbuild - $(MAKE) -C stg_clss touch $@ ! ! $(DEVP_DIR)/.printbuild : $(DEVP_DIR)/.headersbuild ! $(MAKE) -C print ! touch $@ $(DEVP_DIR)/.os_intfbuild : $(DEVP_DIR)/.headersbuild - $(MAKE) -C os_intf touch $@ $(DEVP_DIR)/.posemathbuild : $(DEVP_DIR)/.headersbuild - $(MAKE) -C posemath touch $@ $(DEVP_DIR)/.cmsbuild : $(DEVP_DIR)/.headersbuild - $(MAKE) -C cms touch $@ $(DEVP_DIR)/.nodebuild : $(DEVP_DIR)/.headersbuild - $(MAKE) -C node touch $@ --- 981,1014 ---- $(DEVP_DIR)/.stg_clssbuild : $(DEVP_DIR)/.headersbuild touch $@ + $(MAKE) PLAT=$(PLAT) -C stg_clss ! $(DEVP_DIR)/.printbuild : $(DEVP_DIR)/.headersbuild ! touch $@ ! $(MAKE) PLAT=$(PLAT) -C print $(DEVP_DIR)/.os_intfbuild : $(DEVP_DIR)/.headersbuild touch $@ + $(MAKE) PLAT=$(PLAT) -C os_intf $(DEVP_DIR)/.posemathbuild : $(DEVP_DIR)/.headersbuild touch $@ + $(MAKE) PLAT=$(PLAT) -C posemath $(DEVP_DIR)/.cmsbuild : $(DEVP_DIR)/.headersbuild touch $@ + $(MAKE) PLAT=$(PLAT) -C cms $(DEVP_DIR)/.nodebuild : $(DEVP_DIR)/.headersbuild touch $@ + $(MAKE) PLAT=$(PLAT) -C node + .DELETE_ON_ERROR: $(DEVP_DIR)/.printbuild $(DEVP_DIR)/.os_intfbuild $(DEVP_DIR)/.posemathbuid $(DEVP_DIR)/.cmsbuild $(DEVP_DIR)/.nodebuild *************** *** 1058,1067 **** $(DEVP_DIR)/.dependbuild: $(DEVP_DIR)/.sourcesbuild $(DEVP_DIR)/.headersbuild ! $(MAKE) -C stg_clss depend ! $(MAKE) -C print depend ! $(MAKE) -C posemath depend ! $(MAKE) -C os_intf depend ! $(MAKE) -C cms depend ! $(MAKE) -C node depend -\rm .cleandepend touch $@ --- 1037,1046 ---- $(DEVP_DIR)/.dependbuild: $(DEVP_DIR)/.sourcesbuild $(DEVP_DIR)/.headersbuild ! $(MAKE) PLAT=$(PLAT) -C stg_clss depend ! $(MAKE) PLAT=$(PLAT) -C print depend ! $(MAKE) PLAT=$(PLAT) -C posemath depend ! $(MAKE) PLAT=$(PLAT) -C os_intf depend ! $(MAKE) PLAT=$(PLAT) -C cms depend ! $(MAKE) PLAT=$(PLAT) -C node depend -\rm .cleandepend touch $@ *************** *** 1071,1080 **** $(DEVP_DIR)/.sourcesbuild: ! $(MAKE) -C stg_clss sources ! $(MAKE) -C print sources ! $(MAKE) -C posemath sources ! $(MAKE) -C os_intf sources ! $(MAKE) -C cms sources ! $(MAKE) -C node sources -\rm .cleandepend touch $@ --- 1050,1059 ---- $(DEVP_DIR)/.sourcesbuild: ! $(MAKE) PLAT=$(PLAT) -C stg_clss sources ! $(MAKE) PLAT=$(PLAT) -C print sources ! $(MAKE) PLAT=$(PLAT) -C posemath sources ! $(MAKE) PLAT=$(PLAT) -C os_intf sources ! $(MAKE) PLAT=$(PLAT) -C cms sources ! $(MAKE) PLAT=$(PLAT) -C node sources -\rm .cleandepend touch $@ *************** *** 1087,1091 **** cleanbuild: ! \rm -f $(DEVP_DIR)/.??*build --- 1066,1077 ---- cleanbuild: ! -\rm -f $(DEVP_DIR)/.??*build ! -\rm -f $(DEVP_DIR)/.??*headers ! -\rm -f $(DEVP_LIB_DIR)/rcsvers.o ! -\rm -f $(DEVP_INCLUDE_DIR)/rcs.hh ! -\rm -f $(DEVP_INCLUDE_DIR)/rcs_defs.hh ! -\rm -f $(DEVP_LIB_DIR)/librcs.a ! -\rm -f $(DEVP_LIB_DIR)/librcs*.so* ! *************** *** 1095,1118 **** ! .depend.lists: make_depend_lists ! depend: make_depend_lists - .PHONY: make_depend_lists ! make_depend_lists: ! -$(ECHO_MARK) \rm .depend.lists -$(ECHO_MARK) touch .depend.lists -$(ECHO_MARK) find . -type f -a '(' -name \*.c -o -name \*.cc ')' 2>/dev/null | awk '{printf("$$(DEVP_DIR)/.sourcesbuild: %s\n",$$1);}' >>.depend.lists ! -$(ECHO_MARK) find . -type f -a '(' \*.h -o -name \*.hh ')' 2>/dev/null | awk '{printf("$$(DEVP_DIR)/.headersbuild: %s\n",$$1);}' >>.depend.lists ! -$(ECHO_MARK) find cms -type f -a '(' -name \*.h -o -name \*.hh -o -name Make\* -o -name \*.c -o -name \*.cc ')' 2>/dev/null | awk '{printf("$$(DEVP_DIR)/.cmsbuild: %s\n",$$1);}' >>.depend.lists ! -$(ECHO_MARK) find posemath -type f -a '(' -name \*.h -o -name \*.hh -o -name Make\* -o -name \*.c -o -name \*.cc ')' 2>/dev/null | awk '{printf("$$(DEVP_DIR)/.posemathbuild: %s\n",$$1);}' >>.depend.lists ! -$(ECHO_MARK) find node -type f -a '(' -name \*.h -o -name \*.hh -o -name Make\* -o -name \*.c -o -name \*.cc ')' 2>/dev/null | awk '{printf("$$(DEVP_DIR)/.nodebuild: %s\n",$$1);}' >>.depend.lists ! -$(ECHO_MARK) find os_intf -type f -a '(' -name \*.h -o -name \*.hh -o -name Make\* -o -name \*.c -o -name \*.cc ')' 2>/dev/null | awk '{printf("$$(DEVP_DIR)/.os_intfbuild: %s\n",$$1);}' >>.depend.lists ! -$(ECHO_MARK) find print -type f -a '(' -name \*.h -o -name \*.hh -o -name Make\* -o -name \*.c -o -name \*.cc ')' 2>/dev/null | awk '{printf("$$(DEVP_DIR)/.printbuild: %s\n",$$1);}' >>.depend.lists ! -$(ECHO_MARK) find stg_clss -type f -a '(' -name \*.h -o -name \*.hh -o -name Make\* -o -name \*.c -o -name \*.cc ')' 2>/dev/null | awk '{printf("$$(DEVP_DIR)/.stg_clssbuild: %s\n",$$1);}' >>.depend.lists - include .depend.lists --- 1081,1230 ---- ! depend: .depend.lists ! .DELETE_ON_ERROR: .depend.lists ! ! .depend.lists: $(ALLFILES) ! -$(ECHO_MARK) if test -f .depend.lists ; then \rm .depend.lists >/dev/null 2>/dev/null ; fi -$(ECHO_MARK) touch .depend.lists -$(ECHO_MARK) find . -type f -a '(' -name \*.c -o -name \*.cc ')' 2>/dev/null | awk '{printf("$$(DEVP_DIR)/.sourcesbuild: %s\n",$$1);}' >>.depend.lists ! -$(ECHO_MARK) find . -type f -a '(' -name \*.h -o -name \*.hh ')' 2>/dev/null | awk '{printf("$$(DEVP_DIR)/.headersbuild: %s\n",$$1);}' >>.depend.lists ! -$(ECHO_MARK) find cms -type f -a '(' -name \*.h -o -name \*.hh -o \( -name Make\* -a -not -name \*~\* \) -o -name \*.c -o -name \*.cc ')' 2>/dev/null | awk '{printf("$$(DEVP_DIR)/.cmsbuild: %s\n",$$1);}' >>.depend.lists ! -$(ECHO_MARK) find posemath -type f -a '(' -name \*.h -o -name \*.hh -o \( -name Make\* -a -not -name \*~\* \) -o -name \*.c -o -name \*.cc ')' 2>/dev/null | awk '{printf("$$(DEVP_DIR)/.posemathbuild: %s\n",$$1);}' >>.depend.lists ! -$(ECHO_MARK) find node -type f -a '(' -name \*.h -o -name \*.hh -o \( -name Make\* -a -not -name \*~\* \) -o -name \*.c -o -name \*.cc ')' 2>/dev/null | awk '{printf("$$(DEVP_DIR)/.nodebuild: %s\n",$$1);}' >>.depend.lists ! -$(ECHO_MARK) find os_intf -type f -a '(' -name \*.h -o -name \*.hh -o \( -name Make\* -a -not -name \*~\* \) -o -name \*.c -o -name \*.cc ')' 2>/dev/null | awk '{printf("$$(DEVP_DIR)/.os_intfbuild: %s\n",$$1);}' >>.depend.lists ! -$(ECHO_MARK) find print -type f -a '(' -name \*.h -o -name \*.hh -o \( -name Make\* -a -not -name \*~\* \) -o -name \*.c -o -name \*.cc ')' 2>/dev/null | awk '{printf("$$(DEVP_DIR)/.printbuild: %s\n",$$1);}' >>.depend.lists ! -$(ECHO_MARK) find stg_clss -type f -a '(' -name \*.h -o -name \*.hh -o \( -name Make\* -a -not -name \*~\* \) -o -name \*.c -o -name \*.cc ')' 2>/dev/null | awk '{printf("$$(DEVP_DIR)/.stg_clssbuild: %s\n",$$1);}' >>.depend.lists + ifeq (YES, $(shell if test -f .depend.lists ; then echo YES ; fi)) + include .depend.lists + endif + $(DEVP_DIR)/.os_intfheaders: $(OS_INTF_HEADERS:%=os_intf/%) + touch $@ + $(MAKE) PLAT=$(PLAT) -C os_intf headers + + $(DEVP_DIR)/.cmsheaders: $(CMS_HEADERS:%=cms/%)* + touch $@ + $(MAKE) PLAT=$(PLAT) -C cms headers + + + $(DEVP_DIR)/.stg_clssheaders : $(STG_CLSS_HEADERS:%=stg_clss/%) + touch $@ + $(MAKE) PLAT=$(PLAT) -C stg_clss headers + + + $(DEVP_DIR)/.printheaders: $(PRINT_HEADERS:%=print/%) + touch $@ + $(MAKE) PLAT=$(PLAT) -C print headers + + + $(DEVP_DIR)/.posemathheaders: $(POSEMATH_HEADERS:%=posemath/%) + touch $@ + $(MAKE) PLAT=$(PLAT) -C posemath headers + + $(DEVP_DIR)/.nodeheaders: $(NODE_HEADERS:%=node/%) + touch $@ + $(MAKE) PLAT=$(PLAT) -C node headers + + .PHONY: makeallheaders + + $(DEVP_DIR)/.headersbuild: $(DEVP_DIR)/.nodeheaders $(DEVP_DIR)/.stg_clssheaders $(DEVP_DIR)/.printheaders $(DEVP_DIR)/.cmsheaders $(DEVP_DIR)/.os_intfheaders + + .DELETE_ON_ERROR: $(DEVP_DIR)/.headersbuild $(DEVP_DIR)/.nodeheaders $(DEVP_DIR)/.stg_clssheaders $(DEVP_DIR)/.printheaders $(DEVP_DIR)/.cmsheaders $(DEVP_DIR)/.os_intfheaders + + $(CMS_OBJS:%=$(DEVP_LIB_DIR)/%) : + -\rm -f $(DEVP_DIR)/.cmsbuild + -@ echo need $@ + make PLAT=$(PLAT) -C cms + touch $(DEVP_DIR)/.cmsbuild + + $(NODE_OBJS:%=$(DEVP_LIB_DIR)/%): + -\rm -f $(DEVP_DIR)/.nodebuild + -@ echo need $@ + make PLAT=$(PLAT) -C node + touch $(DEVP_DIR)/.nodebuild + + $(PRINT_OBJS:%=$(DEVP_LIB_DIR)/%): + -\rm -f $(DEVP_DIR)/.printbuild + -@ echo need $@ + make PLAT=$(PLAT) -C print + touch $(DEVP_DIR)/.printbuild + + $(OS_INTF_OBJS:%=$(DEVP_LIB_DIR)/%): + -\rm -f $(DEVP_DIR)/.os_intfbuild + -@ echo need $@ + make PLAT=$(PLAT) -C os_intf + touch $(DEVP_DIR)/.os_intfbuild + + $(STG_CLSS_OBJS:%=$(DEVP_LIB_DIR)/%): + -\rm -f $(DEVP_DIR)/.stg_clssbuild + -@ echo need $@ + make PLAT=$(PLAT) -C stg_clss + touch $(DEVP_DIR)/.stg_clssbuild + + $(POSEMATH_OBJS:%=$(DEVP_LIB_DIR)/%): + -\rm -f $(DEVP_DIR)/.posemathbuild + -@ echo need $@ + make PLAT=$(PLAT) -C posemath $@ + touch $(DEVP_DIR)/.posemathbuild + + $(CMS_HEADERS:%=$(DEVP_INCLUDE_DIR)/%) : + -\rm -f $(DEVP_DIR)/.cmsheaders + -@ echo need $@ + make PLAT=$(PLAT) -C cms headers + touch $(DEVP_DIR)/.cmsheaders + + $(NODE_HEADERS:%=$(DEVP_INCLUDE_DIR)/%): + -\rm -f $(DEVP_DIR)/.nodeheaders + -@ echo need $@ + make PLAT=$(PLAT) -C node headers + touch $(DEVP_DIR)/.nodeheaders + + $(PRINT_HEADERS:%=$(DEVP_INCLUDE_DIR)/%): + -\rm -f $(DEVP_DIR)/.printheaders + -@ echo need $@ + make PLAT=$(PLAT) -C print headers + touch $(DEVP_DIR)/.printheaders + + $(OS_INTF_HEADERS:%=$(DEVP_INCLUDE_DIR)/%): + -\rm -f $(DEVP_DIR)/.os_intfheaders + -@ echo need $@ + make PLAT=$(PLAT) -C os_intf headers + touch $(DEVP_DIR)/.os_intfheaders + + $(STG_CLSS_HEADERS:%=$(DEVP_INCLUDE_DIR)/%): + -\rm -f $(DEVP_DIR)/.stg_clssheaders + -@ echo need $@ + make PLAT=$(PLAT) -C stg_clss headers + touch $(DEVP_DIR)/.stg_clssheaders + + $(POSEMATH_HEADERS:%=$(DEVP_INCLUDE_DIR)/%): + -\rm -f $(DEVP_DIR)/.posemathheaders + -@ echo need $@ + make PLAT=$(PLAT) -C posemath headers + touch $(DEVP_DIR)/.posemathheaders + + all: remove_guess_warn_files + + remove_guess_warn_files: + -@\rm -f .tcltkincflags_guess_warn >/dev/null 2>/dev/null + -@\rm -f ~/.tcltkincflags_guess_warn >/dev/null 2>/dev/null + -@\rm -f .tcltklibflags_guess_warn >/dev/null 2>/dev/null + -@\rm -f ~/.tcltklibflags_guess_warn >/dev/null 2>/dev/null + -@\rm -f .rtlinux_guess_warn >/dev/null 2>/dev/null + -@\rm -f ~/.rtlinux_guess_warn >/dev/null 2>/dev/null + -@\rm -f .rtlinuxdir_guess_warn >/dev/null 2>/dev/null + -@\rm -f ~/.rtlinuxdir_guess_warn >/dev/null 2>/dev/null + -@\rm -f .rtai_guess_warn >/dev/null 2>/dev/null + -@\rm -f ~/.rtai_guess_warn >/dev/null 2>/dev/null + -@\rm -f .rtaidir_guess_warn >/dev/null 2>/dev/null + -@\rm -f ~/.rtaidir_guess_warn >/dev/null 2>/dev/null + -@\rm -f .platname_guess_warn >/dev/null 2>/dev/null + -@\rm -f ~/.platname_guess_warn >/dev/null 2>/dev/null + + .PHONY: remove_guess_warn_files |
From: <emc...@li...> - 2003-06-19 15:40:01
|
Update of /cvsroot/emc/rcslib/etc In directory sc8-pr-cvs1:/tmp/cvs-serv32167 Modified Files: rtaidir testnml_internal.sh testnml.sh Log Message: testnml needs to run from the build directory not the source directory if these are not the same. rtaidir should compensate for the /rtaidir/ in the newer rtai installs. Index: rtaidir =================================================================== RCS file: /cvsroot/emc/rcslib/etc/rtaidir,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** rtaidir 31 Jan 2003 15:05:00 -0000 1.3 --- rtaidir 19 Jun 2003 15:39:58 -0000 1.4 *************** *** 1,4 **** --- 1,12 ---- #!/bin/bash + if test "x${RTAIDIR}" != "x" ; then + echo ${RTAIDIR} + exit 0 + fi + + echo "Trying to guess RTAI directory." 1>&2 + echo "Set the environment variable RTAIDIR to override this." 1>&2 + rev=`uname -r` *************** *** 14,18 **** iver=`objdump -s -j .modinfo $i | gawk '{printf("%s", $6)} END {printf("%s\n",$NF);}'| sed 's/[.]parm.*$//' | sed 's/kernel_version=//' | sed 's/[.]$//' | sed 's/.using_.*$//' | sed 's/.license.*$//'` if [ "$iver" = "$rev" ] ; then ! echo $i | sed 's%/rtai$%%' | sed 's%/rtai.o$%%' | sed 's%/modules$%%' exit 0 fi --- 22,28 ---- iver=`objdump -s -j .modinfo $i | gawk '{printf("%s", $6)} END {printf("%s\n",$NF);}'| sed 's/[.]parm.*$//' | sed 's/kernel_version=//' | sed 's/[.]$//' | sed 's/.using_.*$//' | sed 's/.license.*$//'` if [ "$iver" = "$rev" ] ; then ! RTAIDIR=`echo $i | sed 's%/rtai$%%' | sed 's%/rtai.o$%%' | sed 's%/modules$%%' |sed 's%/rtaidir$%%' ` ! export RTAIDIR ! echo $RTAIDIR exit 0 fi *************** *** 21,27 **** } for i in /usr/src/rtai* ; do if [ -d $i ] ; then ! rtaifiles=`find $i -name rtai.o -o -name rtai` search_list fi --- 31,42 ---- } + rtaifiles=`find /usr/src/rtai/ -maxdepth 3 -type f '(' -name rtai.o -o -name rtai ')'` + if test "x${rtaifiles}" != "x" ; then + search_list + fi + for i in /usr/src/rtai* ; do if [ -d $i ] ; then ! rtaifiles=`find $i -maxdepth 3 -type f '(' -name rtai.o -o -name rtai ')'` search_list fi *************** *** 34,38 **** ! rtaifiles=/usr/src/rtai/rtai `find /usr/src/ -name rtai -type f 2>/dev/null` search_list --- 49,53 ---- ! rtaifiles=/usr/src/rtai/rtai `find /usr/src/ -maxdepth 3 -type f '(' -name rtai -o -name rtai.o ')' 2>/dev/null` search_list Index: testnml_internal.sh =================================================================== RCS file: /cvsroot/emc/rcslib/etc/testnml_internal.sh,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** testnml_internal.sh 6 May 2003 15:18:12 -0000 1.1 --- testnml_internal.sh 19 Jun 2003 15:39:58 -0000 1.2 *************** *** 25,29 **** if test "x${srcdir}" != "x" ; then ! if test ! -e ./etc -a -e "${srcdir}/etc" ; then cd "${srcdir}"; echo "Directory changed to:" --- 25,29 ---- if test "x${srcdir}" != "x" ; then ! if test ! -d ./etc -a -d "${srcdir}/etc" ; then cd "${srcdir}"; echo "Directory changed to:" *************** *** 36,39 **** --- 36,42 ---- if test -f /tmp/test.nml ; then ${builddir}/nmlclean /tmp/test.nml + if test -f nmlclean.log ; then + mv nmlclean.log /tmp/nmlclean-1-$$.log + fi \rm -f /tmp/test.nml fi *************** *** 58,62 **** echo "Testing nmlcfg . . ." ! ${builddir}/nmlcfg src/test/test.nml2 -o /tmp/test.nml if test $? -ne 0 ; then echo "nmlcfg test failed" --- 61,65 ---- echo "Testing nmlcfg . . ." ! ${builddir}/nmlcfg ${srcdir}/src/test/test.nml2 -o /tmp/test.nml if test $? -ne 0 ; then echo "nmlcfg test failed" *************** *** 275,277 **** --- 278,284 ---- ${builddir}/nmlclean /tmp/test.nml + if test -f nmlclean.log ; then + mv nmlclean.log /tmp/nmlclean-1-$$.log + fi + exit 0 Index: testnml.sh =================================================================== RCS file: /cvsroot/emc/rcslib/etc/testnml.sh,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** testnml.sh 6 May 2003 15:51:01 -0000 1.2 --- testnml.sh 19 Jun 2003 15:39:58 -0000 1.3 *************** *** 1,14 **** echo "If this test fails check /tmp/testnml.log and /tmp/testnml.err." ! echo "If it takes more than a minute or two, then it has hung and you should kill" ! echo "it and consider the test a failure." ! if test '!' -x etc/testnml_internal.sh ; then ! if test x$srcdir != x ; then ! cd $srcdir fi fi ! ! etc/testnml_internal.sh >/tmp/testnml.log 2>/tmp/testnml.err exit $? --- 1,14 ---- echo "If this test fails check /tmp/testnml.log and /tmp/testnml.err." ! echo "If it takes more than about three minutes, then it has hung and" ! echo "you should kill it and consider the test a failure." ! if test ! -f etc/testnml_internal.sh ; then ! if test "x${srcdir}" != "x" -a -f ${srcdir}/etc/testnml_internal.sh ; then ! . ${srcdir}/etc/testnml_internal.sh >/tmp/testnml.log 2>/tmp/testnml.err ! exit $? fi fi ! . etc/testnml_internal.sh >/tmp/testnml.log 2>/tmp/testnml.err exit $? |