Hi!
I've extracted these boards from real production environment, both were part of a custom-made quality approval & test & firmware-uploading equipment. One of these was the control board of a pneumatically operated pogo-pin test fixture, and the other one was controlled some simple assembly stage, I think, a few pneumatic acutators.
The common of these boards, that both of them are using ATMEGA128, which is capable of running Arduino-developed firmware, but these boards were put in operation around 2005-2008, when Arduino wasn't widely spread. One of the boards have an extra EEPROM, a 24C64WP connected to the ATMEGA. (I think, for the error log).
One of the boards have only 8 relay outputs, and 8 relay inputs wired to the connectors, and the two UART's are simply level-translated by a MAX202. Note, the small G5V-1 relays can be easily interchanged, because all of them were mounted into a socket. The other board is a bit more complex, UART can be switched to RS485 or RS232 or USB (FT232). This board has a more sophisticated SMPS, and high-current automotive-grade open collector drivers VN340SP. In this board, inputs are only wired like zones in alarm system control panels. Note, that ADC's were multiplexed by two 4051's. Protection is zener-resistor voltage divider. The serial port is isolated by optocouplers (RxD, Txd, direction control), power is coupled by a Traco-Power TMA0505S module.
So, Arduino-like devices can be used instead of PLC's, but with limitations: you MUST specify the source code for the end-user (.ino file AND all library dependencies, custom-made low level drivers, etc), if further modifications may be performed by others than You, and You must be responsible for the proper rugging, and reliability of the I/O's. Software isn't as big problem I think, as PLC promoters will say, because You can also make a bad software for a PLC, like for an MCU. The key is proper testing before put into the production line. PLC's have the advantage, that the code can be read back to the editor software, for later modification or for transferring into another PLC. (but if the author wants, can protect it with a password, like readout lock bit on the Atmega).
If You want to design an industrial shield for your Arduino, the main points, which will help you in your project:
- use relay outputs, if you have enough space, and no PWM is needed. Put the relays into sockets.
- drive the relays with ULN2803 or some kind of good reliability transistors, or FET's. Automotive-grade open collector driver may be an overkill.
- if you have enough space, use LED's everywhere. Design them on the board, some 0603 or 0805's. They are cheap, and help you while debugging.
- use optocoupled inputs, if any of the input signal will came into the circuit more than a dozen of inches away, or from a different equipment, e.g. VFD's, remote sensors.
- use LC or RC filters around VFD's at your inputs. You may experience nasty EMC issues around high power VFD drives! Beware of ground loops!
Good luck!