Jesus 'n Jim
A mainly PC (some Mac) site w/Software, Computer Repair Info, How-To's on Using Computers
Technical Support 1-360-521-2060 (my business line cell)

CNC Software Design

 

For CNC Machining...

Q: Are several CNC's to be controlled, or just 1? (is the software only for internal use inside a CNC, or does it control multiple CNC's?)

Q: What software abstration level is provided as a base? (i.e. CAD/CAM, drivers, just serial-port hardware, libraries)

Q: Should an SDK be written for other developers for the CNC?

Q: How are the devices connected (CAN, RS-422, GPIB, ethernet...)?

Q: Is this for a specific task, or should it be made generic?

Q: Should I assume that tool paths are pre-optimized?

Q: What are the pieces of the system and its architecture?

Q: What safety regulations must apply to the software?


Motion control usually has a navigator, a path generator, and a ???.

Thread Pooling with message queueing support on NT

1. Threads must be pooled

1.1 Pooled threads have 3 basic states:

1.1.1 blocking for an event or new job

1.1.2 running a job (while peeking at the message queue for high-priority events)

1.1.3 suspended (in case of machine stop button)

1.2 Pooled threads peek at the message queue at various "safe places" in the program in case some higher-priority message comes through (such as a machine stop)

1.3 Thread Messages must be prioritized

1.3.1 high priority - machine stop

1.3.2 medium priority - thread status

1.3.2 low priority - notification of new session

1.4 Threads must send a "done"notification to the main thread when a session is done.

1.5 The main thread has thread pool Allocation & Deallocation

1.6 The main thread has a job queue. [[What if jobs need to be synchronized? what synchronization methods will be implemented?]]

1.7 The job queue must be sorted by synchronization point first, then by time [[job sequence?]]

1.7.1 A job cannot start if it requires more concurrent tasks (equal to the number of syncpoints) than the maximum concurrent threads will allow. This will be called a job queue stall.

1.7.2

1.8 Job Attributes:

1.8.1 scheduled time (if any)

1.8.2 end synchronization point handle (wait until all are done)

1.8.3 start synchronization point handle (make sure all can fire at once)

1.8.4

2. There is a maximum limit (individually set per box based on performance) on the number of threads that can be processed simultaneously.

3. Maximum thread limit can be set by an optional auto-tuning feature

 


Q: How do you model a job? is there a heirarchy of jobs? Nested transactions rather? How would you implement?

Job: a transaction that consists of multiple tasks.

problem: given the spot shape, punch a hole larger than the laser, at a consistent depth, with out melting the surrounding materials.

solutions: instead of a spiral, a modified spiral might help

Q: is the power at the edge of the beam spot consistent with the center?

Improvements: can Fractal mathematics improve on the tool path? Can spot overlap be eliminiated?

last updated 1Dec2000