[Home]Preben Bohn

LinuxCNCKnowledgeBase | RecentChanges | PageIndex | Preferences | LinuxCNC.org

1. Things I would like to do
1.1. Implement an interface to machines not requiring realtime capabilities
1.1.1. Todo
1.1.2. Random notes
1.2. Adding true milling visualization capability to [AXIS]
1.2.1. What is this?
1.2.2. Todo
1.3. Document/understand the main dataflows and data structures used in EMC2
1.3.1. Todo
1.3.2. Random notes
1.3.3. Related links
1.4. Other stuff...
2. Personal motivation
3. Contributed stuff
4. Other links

1. Things I would like to do

1.1. Implement an interface to machines not requiring realtime capabilities

1.1.1. Todo

1.1.2. Random notes

1.2. Adding true milling visualization capability to [AXIS]

1.2.1. What is this?

[AXIS] is a GUI frontend to EMC2. Currently [AXIS] only displays the path as a line. It would be nice to have it show the actual milled object instead. For 3D milling (i.e. with no angular movement of the spindle or object) this is relatively easy for smaller objects with limited accuracy as it can be done by a 2D set of "rods" which are then shortened based on the traversed path (20 um accuracy on a 100 mm x 100 mm x 100 mm object would take up ~50 MB memory which is not a problem on a modern PC; larger object however drastically increases memory consumption). However in 6D (i.e. with angular movement of the spindle/object) this brute-force approach is way to memory consumption.

1.2.2. Todo

1.3. Document/understand the main dataflows and data structures used in EMC2

I only use simulated EMC2 (as I don't need the realtime stuff myself) so the following is only applicable to this; however the main dataflows for non-simulated runs should be similar I guess. EMC2 is compiled in simulated mode by using the command-line argument --enable-simulator during the configure step as described in [Installing EMC from source].

1.3.1. Todo

In no particular order:

1.3.2. Random notes

from emctaskmain.cc: emcTaskPlanRead?() (emctask.cc) makes the RS274 interpreter read the next line in the gcode file

emcStatus->task.readLine is updated with line number as well as interp_list

emcTaskPlanCommand?() is called, however this seems to do almost nothing

emcTaskPlanExecute?() (emctask.cc) is then called, which in turn calls Interp.execute() however I have no idea what this does; does not really seems to do much although the description states that machininng functions are actually called...

emc_nml.hh: EMC_TRAJ_STAT

  EmcPose? position
  EmcPose? actualPosition

EMC_MOTION_STAT

  EMC_TRAJ_STAT traj

EMC_STAT

  EMS_TAK_STAT task
  EMC_MOTION_STAT motion
  EMC_IO_STAT io

emctasmain.cc:

  EMC_STAT *emcStatus 

struct EmcPose?

  PmCartesian? tran
  double a, b, c
  double u, v, w

struct PmCartesian?

  double x, y, z

taskintf.cc

  emcmot_status_t emcmotStatus

--enable-simulator:

 SIMULATOR=yes
 RTS=simulator
 BUILD_SYS=sim

1.3.3. Related links

Note that some of these are rather old, but they are still useful. Some of the file locations are not correct though; but using find on linux is easy... You may have noticed that I havn't referenced [Developers manual]; for me it was impossible to use this to get started doing some programming on EMC...

1.4. Other stuff...

2. Personal motivation

I currently have a crude interface running for a homebuilt Hexapod. I would like to use EMC2 for controlling it, due to its G-code interpreter and nice GUI. However I have no need for hard realtime control; all servos are controlled by specialized electronics which only needs an EIA-422-B (formerly known as RS-422) interface to a PC. All error checking and safety critical parts are thus completely separated from the PC (which I personally see as a plus given the overly complex nature of modern PCs).

3. Contributed stuff

Currently I have only made a few minor changes to the wiki; hopefully this will change in the future... :-)

4. Other links

[Wiki help]

LinuxCNCKnowledgeBase | RecentChanges | PageIndex | Preferences | LinuxCNC.org
This page is read-only. Follow the BasicSteps to edit pages. | View other revisions
Last edited July 7, 2012 8:43 pm by Archivist (diff)
Search:
Published under a Creative Commons License