EMC Programmers Fest 2005

<hr width="100%" size="2" />  <p>The annual EMC software development conference, called the EMC Programmers Fest this year, was held Monday, April 25, 2005 through Thursday, April 28, 2005 at the facilities of the Manufacturing Engineering Labs of the National Institutes of Standards and Technology in Gaithersburg, Maryland, USA.</p> <br /> <hr width="100%" size="2" />  <p>The conference was well attended and many of the primary contributors to the code were present. The focus of the conference was on the further development of the software code. Organizational and business matters were not part of the conference program. Much discussion and debate about technical issues did occur. Many useful decisions were reached and progress on starting action on these decisions began at the conference itself. Plans were laid for continuing these actions in the immediate aftermath of the conference were also made and commitments to pursue this work were made by relevant parties at the conference. </p>   <p>In attendance this year were: Fred Proctor, Ray Henry, Paul Corner, John Kasunich, Jon Elson, Josh Hall, Martin Kuhnle, Stephen W. Padnos, Matt Shaver, Steve Stallings, and Tom Hubin.</p>    <p>Notes taken during the conference follow below.</p>  <h2><em>Decisions</em></h2>  <p>&nbsp;</p>   <ol>    <li>Single Main Development Path, based on EMC2<br />      <br />     </li>     <ol>      <li>The common codebase will use libNML   (not rcslib)</li>       <li>The first task is to make it   possible for EMC2 development to go   forward on the 2.6 kernel&nbsp;                     </li><li>Support kbuild system, which works on kernel 2.6 and later versions of 2.4 (2.4.27+). Efforts will be made to ensure 2.4 and 2.2 builds will still be possible within the revised make system.&nbsp;</li>           <li>Task - Modify auto configuration for EMC 2 build&nbsp;</li>           <li>Development will expand the head of EMC2&nbsp;</li>           <li>Functional equivalence to EMC(1)     Servo control<br />            <br />  </li>               </ol>        <li>Includes the HAL<br />      <br />                 <ol>        <li>HAL module configuration will be modified to be able to use EMC1 style .ini file parameters (e.g. for PID and input/output scales)<br />          <br />  </li>      </ol>        </li><li>User-Space changes         &nbsp;          <ol>        <li>Several diagnostic tools in EMC1     will be recreated in EMC2 (IOShow     and the like)</li>         <li>Drivers for the following:<br /> <br /> </li>         <li>           <ul> <li>Pico-Systems USC/PPMC<br /> &nbsp;</li> <li>Sensoray<br /> <br />       </li> <li>Servo-to-go<br /> <br />       </li> <li>Motenc<br /> <br /> </li>          </ul>      </li>                <li>HAL-ified BridgeportIO /     minimillIO equvalent(s)<br />         <br />     </li>                  <li>HAL-ified motion controller<br />         <br />     </li>                  <li>Work towards a point where the     bdi-4 branch can be merged in to     HEAD and/or share much of the common     code base.</li>            </ol>     </li>  </ol>    <p>the point where it can be configured equivalent to bridgeport and minimill in EMC. </p>  <h2><em>Other Discussion</em></h2>   &nbsp;  Architecture<br />      <h2><em>Feature Listing</em></h2> &nbsp; Intepreter &nbsp; Multiple interpreters rather than attempting to include all new features in head. &nbsp; Manual moves during interpreter pause. &nbsp; NML &nbsp; Axis gearing or slaving Commands &nbsp; Task &nbsp; ?? &nbsp; Motion Planner &nbsp; ?? &nbsp; IO Planner &nbsp; Connect to ClassicLadder &nbsp; Kbuild or equivalent &nbsp; Selection front end to the compile process. &nbsp; Wizard interface to EMC/HAL configuration <p>&nbsp; </p> <h2>Minutes of EMC Code Fest 2005   &nbsp;    </h2> <p>The group believed that a common     EMC code base would be a good thing.     Currently we have several code     bases: </p> <ul>   <li>EMC1, the original, which now     includes some major interpreter     rework by Keith Rumley; <br />   </li>   <li>EMC2, which     includes the HAL work by John     Kasunich; <br />   </li>   <li>BDI, which is a branch of     EMC2 set up by Paul Corner that is     being used commercially; <br />   </li>   <li>and the     lathe branch also set up by Paul C     which includes a C++ class breakdown     of the interpreter.    &nbsp; <br />   </li> </ul> <p>The base of the common code base should be EMC2. This is almost ready for prime time, in that it supports steppers and we used it to drive a Sherline minimill during the codefest. Future features will be added to EMC2. &nbsp; </p><p>The group listed some obstacles     to making EMC2 the common code base.     <br /> These include:     &nbsp;      </p> <ul>   <li>HAL configuration doesn't use       the .ini file. <br /> (Josh Hall proposed       a solution that John Kasunich       signed on to.)      &nbsp; <br />     <br />   </li>   <li>Ray Henry's highly-valued       utilities &quot;ioshow&quot;,       &quot;ioexec&quot; and &quot;dioshow&quot;       don't work with EMC2. <br /> Since Ray relies on these to troubleshoot commercial EMC systems, these need to work or equivalents need to be written. &nbsp; <br />     <br />   </li>   <li>Drivers for some hardware are       missing. <br /> These include Jon Elson's       PPMC and related. <br />     <br />   </li>   <li>Servo drivers should be added, but these aren't major obstacles to making EMC2 the code base since servos aren't widely used. <br />     <br />   </li>   <li>Kernel 2.6 is not supported. We       need a port of EMC2 to kernel 2.6. <br />     <br />   </li>   <li>Interpreter features in the BDI       are lacking in EMC2, in particular       user-defined M codes. <br />     <br />   </li>   <li>We need better documentation.</li> </ul> <p>The group ranked these obstacles     and determined a plan of attack for     the code fest, namely:     &nbsp;      </p> <ul>   <li>Kernel 2.6 port, with Paul C,       John K and Stephen Padnos working       on this.<br />     <br />   </li>   <li>Add user-defined M codes to       EMC2, with Fred Proctor working on       this.<br />     <br />   </li>   <li>In a move toward HAL configuration from the .ini file, work on tabularizing the HAL pin setup, using the PPMC driver as a test case.<br /> Steve P, Martin Kuhnle       and Jon E to work on this.</li> </ul> <p>Status:</p> <ul>   <li>Progress on kernel 2.6 port was       made. <br /> Paul C will work on one       directory when he gets back home.       <br /> When this works, John K will       propogate this over the rest of       the EMC2 code.<br />     <br />   </li>   <li>User-defined M codes are now in       EMC2. <br /> Paul C will look at moving the C++ class definition of the lathe branch interpreter into EMC2 in the longer term.<br />     <br />   </li>   <li>Jon E estimates a couple of weeks to do the HAL-based PPMC driver. This involves architecting the driver so that it is easy to maintain across a range of hardware. </li> </ul> <br />