A task that really pushed my limits was being the technical lead on
a project to implement a VSD controller interface from the ground up.
We sold what most folks just refer to as Drives. These are
actually one or more VSD units paired with all the accessory
electronics to switch anywhere from 100 to 5000 volts over a
wide range of frequencies. They are usually outfitted with a
controller interface of some kind that also manages things like
customer digital and analog I/O, MODBUS comms, SCADA services,
and sensors.
All of our drive models came with a controller that would manage
the components mentioned and run the whole system in several
ESP specific operating modes to minimize downtime or optimize
performance. Oh, and all of these bits of info, configuration,
and operation options where exposed via a ~4" touchscreen display
programmed with a vendor provided tool in ladder logic, function
block diagram, and a sort of scripting language.
My task was to guide a team of developers and engineers in
developing a replacement for both the hardware and software.
The main goal being to pack everything into a form that would be
open, accessible, and maintainable by as many developers and
engineers as possible.
I built a system to help organize and track manufacturing work in
several facilities across North/South America and the Middle East.
Technicians would scan a barcode and the system would lay out
the bill of materials, the work steps to build the equipment, and
generate links to lots of documentation and resources. It would also
track work progress and feed it into a kind of "pizza tracker" for
sales and customer service so that they could instantly see the state
of any process anywhere.
The system took what had been a paper-only shop and transformed it
into a connected and fairly futuristic factory. At least futuristic
for the industry.
Here's an old demo video
I made after the kiosks had been installed for awhile but before
I'd ported the UI from widgets to QML. In 2019 there were
~180 machines installed in ~20 facilities around the world.
Client Stack:
Python 3.4, PyQt5, QML, SQLAlchemy
Server Stack:
Python 3.4, Django, DRF, React
Hardware:
Touchscreen All-In-Ones great for minimizing cables in the shop
Hotswappable ~8hr powerpacks for some installations.
Cheap Barcode Scanners
Cheap RFID Readers
Wireless Backpacks and Basestations for Callipers
Raspberry Pi 3 Model B's for little camera servers
Automated Equipment Testing
I built a suite of software that performed different kinds of
automated tests on equipment.
We built and sold ESPs
as well as the motors, drives, seals, and sensors to go along with them.
In that industry customers expect you to provide detailed performance
and acceptance testing for each piece of equipment.
I inherited a few Django and PyQt codebases and added a few of
my own to upgrade how we test equipment and add test suites for
new types of equipment. These were very interesting, lots of
moving pieces, heavy machinery, high-speed data acquisition,
and the potential for life threatening situations...
I learned a lot about fluid dynamics, simulating hardware,
designing for safety, and arguing about vague specifications.