2020 was a crazy and chaotic year for all of us and as a software engineer it could have been much crazier. Designing software on paper doesn’t require any special technology to achieve but when it comes to writing software and testing prototypes, that’s an entirely different story.
After the first wave of stay-at-home orders came down the pipeline I immediately shifted gears towards developing simulation and emulation that was 100% software based. Normally we would use bench-top testing hardware which consisted of a PC computer that communicates with a programmable logic controllers (PLC) using Ethernet and TCP/IP. Requiring developers, engineers and programmers to bring these bench-tops to their homes was more on the impractical side.
What made more sense to me at the time was writing software that emulated the functionality of the programmable logic controllers (PLC).
Using Python I created a prototype program that emulated the PLC and because our product control code was minimal and simple, we could compile it to run in a variety of environments to include Windows (corporate grossness) and virtual machines running Linux.
Also using Python, I created a basic simulation script that simulated the inputs and outputs (IO) of the sensors and devices that connected to the PLC. This allowed our control software to communicate with the emulator as if it were a real PLC. In fact, the control software had no idea that it was communicating with an emulator and the product control software ran is if it were a real product.
We could now write software without carrying around a bunch of hardware, power supplies and IO bricks, which means we didn’t skip a beat when it came to working from home due to the pandemic.
After using the software emulation I also realized that we could write and test prototype PLC programs without actually doing any programming on the PLC itself. Even today, in 2021, engineers are still required to program logic controllers using proprietary, block style coding methods. There is no “coding” when it comes to the major players in the PLC world.
Testing our ideas with our PLC emulators allows us to fine tune the functionality before actually coding it into a real PLC.
Once the prototype was tested I handed the project off to my team who polished up the code and made it more user friendly. We now have a full simulation and testing suite which has made our world of developing simple and flexible software a much more efficient world.