| Inhoudsopgave | |
| 1 | Distributed motion system |
| 2 | Controller Area Network (CAN) |
| 3 | Processing G-code |
| 4 | Visualisation |
| 5 | Breakpoints |
| 6 | Tools and libraries |
| 7 | Technical notes |
| 8 | References, datasheets en links |
| 1 - Two processors. | Printed circuit board CONV002-CAN-USB heeft 2 processoren (c8051f320 en stm32f303). Beide microcontrollers communiceren via een standaard UART poort. De firmware in de c8051f320 bestaat voor het grootste deel uit USB HID functionaliteit. De desktop PC communiceert dus met de c8051f320. Tijdens ontwikkeling bleek dat het beter is om de USB functionaliteit buiten de stm32f303 te houden. |
| 2 - Different USB HID behaviour | Ubuntu-noble and Windows-10 show different behaviour with a USB HID device. When no IN packets send to host, Windows-10 host will send SUSPEND. In Ubuntu-noble this doesn't happen. |
| 3 - Typical steppermotor frequency | sherline 1 mm per rotation, stepper motor 200 full steps,
reduction ratio 1, feed rates : plastic 2000-4000 mm/min,
alu 1000-2500 mm/min, ss 300-800 mm/min. Step frequency : 4000 mm/min = 66.7 mm/s -> 13340 steps/s = 13kHz. Pulse period : 75 us --> reaction on start command fast enough |
| 4 - Hardware development | Schematic and pcb CONV002-CAN-USB (KiCad) Schematic and pcb STEPPER002-CAN-USB (KiCad) Schematic and pcb AUX001-CAN-USB with (KiCad) Simulate mounting pcb's in Hammond enclosures (FreeCad) |
| 5 - Embedded software development | Interfacing SPI winbond W25Q128FV (F320 master) USB functionality (F320 master) Interfacing SPI sgs L6480 (STM32 master) Interfacing SPI microchip 23LC1024 (STM32 slave) CAN functionality (STM32 master, slave) G-code's USB to W25Q128FV (F320 master) G-code's W25Q128FV to UART (F320 master) G-code's UART buffer to 23LC1024 (STM32 master) G-code's 23LC1024 to CAN (STM32 master) G-code's from CAN to 23LC1024 (STM32 slave) G-code's from 23LC1024 to stepper sequences in RAM (STM32 slave) Stepper sequences via DMA to L6480 (STM32 slave) |
| 6 - Desktop software development | GUI development Configuration G-code interpretation Path control and optimalisation Setting breakpoints Start, stop, pause, continue machine Monitor CNC proces Visualise toolpath |
| 7 - Absolute or relativ coordinates, metric or imperial units | In a G-code source file G90 en G91 determine if positions are absolute or relativ. G20 and G21 determine imperial or metric. After interpretation all positions are converted to absolute and metric. So after interpretation on the desktop G90, G91, G20, G21 are implicitly present in the generated data. Commands sent to axismodules include distance, cruise speed, accelleration and deceleration. The mastermodule keeps track of the absolute current position and stores it somewhere for later reference like visualisation. |
| 8 - Plane select | In a G-code source file G17-G19.1 (plane select) determine in which plane successiv arc movements will happen. So these commands are not visible anymore in the commands to axismodules. |
| 9 - Tool table | The tool table is stored and maintained on the desktop computer. Tool radius is already an implicit part of the slave module commands. |
| 10 - G-code interpreter : data types and scopes | During one pass a scopetree is generated. The scopetree is linked to the parsetree. This scopetree contains all symbols like variable names, variable types, variable scopes and function names. The scopetree is structured as a tree of (scope)nodes. Each node contains a hashmap of symbol objects. During runtime, values of program variables are read from or written to the scopetree. |
| 1 | Future of G-code |
reference |
| 2 | The NIST RS274NGC Interpreter - Version 3 |
reference |
| 3 | Mill series programming workbook (Haas) |
reference |
| 4 | Theory and design of CNC systems |
reference |
| 5 | Language implementation patterns (Terence Parr) |
reference |
| 6 | Definitive ANTLR4 reference (Terence Parr) |
reference |
| 7 | CNC programming handbook edition 3 | reference |
| 8 | CNC programming handbook second edition | reference |
| 9 | Crafting interpreters (Robert Nystrom) |
reference |
| 10 | Cross-Platform GUI Programming
with wxWidgets (Bruce Perens) |
referentie |
| 11 | LinuxCNC | website |
| 12 | LinuxCNC : G-Code Quick Reference Table | website |
| 13 | C8051F320 microcontroller |
datasheet |
| 14 | STM32F303 microcontroller |
datasheet |
| 15 | L6480 stepper controller |
datasheet |
| 16 | 1 Mbit spi serial ram |
datasheet |
| 17 | 128 Mbit serial flash |
datasheet |