ENGINEERING AND APPLIED SYSTEMS
About Me
I鈥檓 Michael Bryan, a software engineer based in Perth, WA, with a passion for building resilient systems and elegant solutions. ## Professional Overview Link to heading I鈥檓 currently a Senior Software Engineer at Multiversal Ventures, primarily focused on developing robust web crawlers at scale and leveraging ML to extract information from US healthcare websites. I specialise in writing precise, maintainable code and consider myself an expert in Rust, with extensive experience in Go, TypeScript, React, and GraphQL. I鈥檓 particularly passionate about compilers, type-safe code, and designing parsers that gracefully handle errors.
PERTHWAWINTECH ENGINEERINGMICHAEL BRYAN
INDUSTRIAL AUTOMATION AND CONTROL SYSTEMS
Announcing Adventures in Motion Control
This is the first installation in my Adventures in Motion Control series. At
$JOB we build industrial CNC machines, and while developing a simulator for our machines I noticed a distinct lack of online resources on how they work under the hood. Hopefully this series will address the situation. ## The Goal Link to heading The goal for this series is to develop a simulator which will accurately reflect how an embedded motion controller is implemented internally.WAREHOUSING AND INVENTORY SYSTEMS
Top-Level Infrastructure
As mentioned in the intro article, the first task will be to set up the application鈥檚 structure and define how the various components will communicate. ## Multitasking Link to heading Most embedded systems will implement multi-tasking by rapidly polling each system within an infinite loop.
rust loop { poll_comms(); poll_motion_planning(); poll_io(); poll_machine_events(); } A motion controller will normally spend most of its time polling, but there are places where polling isn鈥檛 appropriate. For example, accurate movement of a stepper motor relies on sending pulses at very precise times. Another scenario is in the handling of communication, where waiting for the next poll to read a byte may result in missing part of a message.EMBEDDED SYSTEMS AND FIRMWARE
FPS Counter
As mentioned in the previous article the next task is to implement our first proper
System, the FpsCounter. > A relatively easy, yet important, component is some sort of FPS counter. > Ideally there鈥檒l be a bit of text in the corner showing the number of poll()s per second and the average duration. That way we can get a better > feel for our simulator鈥檚 performance characteristics. An FpsCounter has two responsibilities,FREIGHT SHIPPING AND PORTS
The Communications System: Part 1
## Prelude Link to heading The Communications system is arguably one of the most important parts of our simulator. After all, it鈥檚 kinda hard to debug a program when you can鈥檛 ask it why something isn鈥檛 working. The user will interact with our simulated motion controller via a single Serial Port, which we鈥檒l be modelling as a simple thing which sends and receives bytes. Serial ports are a fairly old technology, and have several drawbacks compared to the Ethernet and TCP protocols that most programmers are familiar with.
ADVANCED NAVIGATION