In working with IoT systems, I occasionally interface with PLCs (programmable logic controllers), so I did a brief survey of the technology behind them. This is what I learned:
- It appears most PLCs are programmed in some variant of ladder logic.
- Rockwell/ABB are very popular in the US
- Rockwell software (Logix) is expensive, and in some cases difficult to deal with
- IEC 61131-3 standard defines three graphical and two textual programming languages:
- Ladder diagram (LD), graphical
- Function block diagram (FBD), graphical
- Structured text (ST), textual
- Instruction list (IL), textual (deprecated in 3rd edition of the standard[3])
- Sequential function chart (SFC), has elements to organize programs for sequential and parallel control processing, graphical.
- CODESYS
- implements IEC 61131-3
- supports a number of PLCs.
- IDE is free, but license is required for runtime on PLC. Some PLC manufacturers take care of the license for you.
- very popular for training as IDE is free to use
- can run on Raspberry PI
- liked because it is cross-platform – use the same environment on many PLCs
- regarded as a power-user’s tool
- Arduino Opta
- developed in partnership with Finder
- is proprietary (which is very odd from a company like Arduino built on OSS)
- supports the 5 IEC-61131-3 languages
- OpenPLC
- implements IEC 61131-3
- supports Arduino and Linux based targets
- does not seem to be support for many mainstream industrial PLCs
- likely not industrial grade
When building a platform that you want to scale (people/time/projects), consider the following:
- CODESYS appears to be a capable platform that will probably give you the most reuse. Additionally, as the tools are free to install, you can easily include more people in your organization in the development efforts without much friction. Text-based languages may give you more possibilities for reuse across projects.
- Arduino Opta looks interesting, but probably only applicable for one-off projects as I don’t see how this can scale.
- OpenPLC may be interested in your want to embed customizable PLC logic in a Linux-based platform or for education.
With modern technology, the most valuable solutions involve integrating multiple technologies. Therefore, the most scalable and flexible technologies are generally the most useful long-term. The days when we can rely on one vendor to provide a top-to-bottom vertically integration solution are past. The future belongs to decoupled flexible systems, open standards, and ultimately open-source.