Industrial Automation Consulting
From August 2019 to August 2022, I consulted as a part of the automation team at DMC, Inc. Our task was to help our clients with anything related to industrial automation. While we worked with a wide variety of sometimes unexpected technologies, our work usually fell into one of the following categories:
- PLCs - Programmable Logic Controllers - ruggedized, long-lasting controllers used for real-time control in industrial settings.
- HMIs - Human Machine Interfaces - (generally) screens and other interfaces that allowed operators and technicians to interact and control their machines.
- SCADA - Supervisory Control And Data Acquisition - (generally) plant level software used for monitoring/controlling a large network of machines and handling the data they produce.
Work at DMC was fast-paced, with project scales generally falling between 2 weeks and 6 months. I often handled projects for multiple clients at a time, designing system architecture, developing software, and travelling to client sites to commission their systems. During my second and third year at the company, I took on technical leadership and project management responsibilities for several projects.
Due to client confidientiality, I can’t go into details about the projects I worked on. However, my clients did include companies in the following sectors:
- Electric Car/Battery Manufacturing
- High-Speed Transportation
- Cell Therapy Manufacturing
- Healthcare Diagnostics Manufacturing
- Confectionary Manufacturing
- Metalworking
Throughout these projects I worked with technologies including:
- Beckhoff TwinCAT 3 PLC/HMI*
- Ignition SCADA*
- MS SQL Server
- Aveva Edge (Indusoft)
- Iconics GEN64
- Siemens TIA Portal and SIMATIC Manager
- Siemens WinCC 7.5
- Rockwell Studio 5000 Logix Designer
Technologies marked with an asterisk (*) are the platforms I spent the most time with. Because I worked with so many technologies on such varied projects, I learned how to pick up new platforms and concepts quickly. Some of the general topics I gained experience with include:
- PLC programming/architecture design
- User-friendly interface design
- Scripting (Python often, occasionally VBScript and Javascript)
- PLCOpen motion control
- Object Oriented Programming (OOP)
- Database design
- Networking
Some more detail on some noteable items:
PLCOpen motion control
I generally worked with servo motors, developing with PLCOpen style blocks for point to point motion. Occasionally, for some of the more niche jobs, I worked with more involved motion control, which typically involved using PID to control an motion output (ex: drive velocity) to achieve a desired goal (ex: force exerted on a part).
Object Oriented Programming (OOP)
Though IEC 61131-3 establishes standards for organization of code in PLC software development, object oriented programming in practice is still pretty new in the industrial automation space. Luckily, Beckhoff TwinCAT 3, a platform with which I worked extensively at DMC, implements object oriented programming concepts well.
Across several projects at DMC I helped architect and guide our OOP development. In order to aid our from-scratch development, I spent time designing and developing function blocks (classes) for PLC control libraries. These included basic control for devices like digital/analog inputs/outputs, servo control, sequencers, and more. I also pioneered the use of unit testing for these PLC control libraries at the company to help ensure quality of the developed libraries.
Database design
While I in no way claim to be an expert in database design, I did learn best practices from DMC’s application development team. I gained experience in database schema design, efficient query writing, and stored procedure writing so I could better design systems to store data from clients’ SCADA systems.