<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> </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 </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. </li> <li>Task - Modify auto configuration for EMC 2 build </li> <li>Development will expand the head of EMC2 </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 <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 /> </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> Architecture<br /> <h2><em>Feature Listing</em></h2> Intepreter Multiple interpreters rather than attempting to include all new features in head. Manual moves during interpreter pause. NML Axis gearing or slaving Commands Task ?? Motion Planner ?? IO Planner Connect to ClassicLadder Kbuild or equivalent Selection front end to the compile process. Wizard interface to EMC/HAL configuration <p> </p> <h2>Minutes of EMC Code Fest 2005 </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. <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. </p><p>The group listed some obstacles to making EMC2 the common code base. <br /> These include: </p> <ul> <li>HAL configuration doesn't use the .ini file. <br /> (Josh Hall proposed a solution that John Kasunich signed on to.) <br /> <br /> </li> <li>Ray Henry's highly-valued utilities "ioshow", "ioexec" and "dioshow" 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. <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: </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 />