[Home]ProgrammerDecisions Fest 2005

LinuxCNCKnowledgeBase | RecentChanges | PageIndex | Preferences | LinuxCNC.org

Showing revision 14

Decisions

A -- Single Main Development Path, based on EMC2
The common codebase will use NML (not rcslib) - DONE
The first task is to make it possible for EMC2 development to go forward on the 2.6 kernel - DONE
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. - DONE
Task - Modify auto configuration for EMC 2 build - DONE
Development will expand the head of EMC2
Functional equivalence to EMC(1) Servo control
Includes the HAL - DONE
HAL module configuration will be modified to be able to use EMC1 style .ini file parameters (e.g. for PID and input/output scales) - DONE
User-Space changes
Several diagnostic tools in EMC1 will be recreated in EMC2 (IOShow and the like)
Drivers for the following (needed to get EMC2 going, others to be added later):
Pico-Systems USC/PPMC - almost DONE
Sensoray
Servo-to-go - almost DONE
Motenc - DONE
HAL-ified BridgeportIO / minimillIO equvalent(s)
HAL-ified motion controller
Work towards a point where the bdi-4 branch can be merged in to HEAD and/or share much of the common code base.

the point where it can be configured equivalent to bridgeport and minimill in EMC.

Other Discussion

Architecture

Feature Listing

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 - DONE
Kbuild or equivalent
Selection front end to the compile process.
Wizard interface to EMC/HAL configuration

Minutes of EMC Code Fest 2005
The group believed that a common EMC code base would be a good thing. Currently we have several code bases: EMC1, the original, which now includes some major interpreter rework by Keith Rumley; EMC2, which includes the HAL work by John Kasunich; BDI, which is a branch of EMC2 set up by Paul Corner that is being used commercially; and the lathe branch also set up by Paul C which includes a C++ class breakdown of the interpreter.
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.
The group listed some obstacles to making EMC2 the common code base. These include:
HAL configuration doesn't use the .ini file. (Josh Hall proposed a solution that John Kasunich signed on to.)
Ray Henry's highly-valued utilities "ioshow", "ioexec" and "dioshow" don't work with EMC2. Since Ray relies on these to troubleshoot commercial EMC systems, these need to work or equivalents need to be written.
Drivers for some hardware are missing. These include Jon Elson's PPMC and related. Servo drivers should be added, but these aren't major obstacles to making EMC2 the code base since servos aren't widely used.
Kernel 2.6 is not supported. We need a port of EMC2 to kernel 2.6. - DONE
Interpreter features in the BDI are lacking in EMC2, in particular user-defined M codes.
We need better documentation.
The group ranked these obstacles and determined a plan of attack for the code fest, namely:
Kernel 2.6 port, with Paul C, John K and Stephen Padnos working on this.
Add user-defined M codes to EMC2, with Fred Proctor working on this.
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. Steve P, Martin Kuhnle and Jon E to work on this.
Status:
Progress on kernel 2.6 port was made. EMC2 now compiles / runs cleanly on 2.6.
User-defined M codes are now in EMC2. Paul C will look at moving the C++ class definition of the lathe branch interpreter into EMC2 in the longer term.
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.

LinuxCNCKnowledgeBase | RecentChanges | PageIndex | Preferences | LinuxCNC.org
This page is read-only. Follow the BasicSteps to edit pages. | View other revisions | View current revision
Edited November 30, 2005 1:56 am by Alex Joni (diff)
Search:
Published under a Creative Commons License