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