Hello Ada-Lang, I have questions.
My recent discovery of Ada has made me wonder: Does anybody use Ada/SPARK in an industrial automation context?
I am an Automation Engineer (Industrial, not software), and work with PLCs, i.e., I make machines do my bidding by programming very rugged, very proprietary, and overly expensive CPUs in IEC 61131-3 languages.
Now today, sitting between two filling machines which were sloshing their contents of foulness onto the floor and permeating my clothes with the stink thereof until the end of time, I was wondering, what a type safe language could do to this industry, so I didn’t have to debug a fault caused by somebody writing 16, instead of 15 in an array, causing the whole line to power down (yes, it was me).
So, I know that the PLC world is greatly standardized, and there is a reason why they are programmed the way they are. For debugging why a sensor is not working, or why a motor isn’t running, I would chose Ladder Logic any day of the week.
But this is exactly what a PLC should do: Take a condition or a set of conditions, and either make something go, or not. Where these conditions come from is essentially irrelevant.
PLCs are perfectly capable of, but I would at times argue not meant to, take on complex tasks such as order handling, complex machine job instructions (shuttles, cranes, lifts, you name it), pathfinding, data storage/logging, data analyzing, etc.
I suppose my first question is, does anybody write software with Ada or SPARK, and then communicates with PLCs in this sense, or at least use it in an industrial context? (I am guessing yes, but I would love to hear about it)
I am self employed and rent myself out to the highest bidder - and if being able to offer my clients, who will throw a tantrum because of 5 minutes downtime, a guarantee… or at least as close to one as possible, that it’s at least not the software’s fault, I would take it.
So part two of my question is, how could I proceed with using Ada or SPARK in my professional context?
Thank you all in advance.