Arduino Portenta and Ignition
In Maker Years, 2009 was LIFETIMES ago. This was the same year Alex Marcy, the founder of Corso Systems first used Ignition on a project. In the same year, he acquired an Arduino Duemilanove board. More than a decade—and many Arduinos, Ignition versions, Raspberry PIs, and other microcontrollers later—Arduino has introduced the Portenta line of controllers. This line includes the Arduino Portenta Machine Control board.
The Arduino Portenta Machine Control board is an Arduino Portenta H7 microcontroller with a breakout board. This breakout board is special since it mimics the on-board I/O of a PLC such as a Siemens S7-1200, or an Allen Bradley MicroLogix 800 series. Unlike a standard Arduino or Raspberry Pi board, the Arduino Portenta Machine Control board’s I/O is rated for 24VDC, and includes standard 4/20mA inputs as well as thermocouple inputs. This allows you to use the Arduino H7 board in standard industrial environments without having to worry about stepping your power down to 3.3VDC or 5VDC like on standard microcontroller hardware. Now, implementations like running NodeRED on a Raspberry Pi are possible without worrying about how to get data from physical devices into the system.
The Arduino Portenta platform includes two processors. One processor runs standard Arduino code, and the other one can run MicroPython, or TensorFlow for Machine Learning models. Using the Arduino PLC IDE you can even load PLC logic in any of the IEC-61131-3 languages (Ladder Logic, Structured Text, Function Block Diagram, Sequential Function Chart, and Instruction List). The two processors can communicate with each other, so you can use the I/O to feed data in and out of Machine Learning models as well as interacting with the PLC logic. By using the Vision Shield, you can use the Portenta H7 controller as part of a vision system. You can even leverage Bluetooth communication for near-field applications like yard management for shipping and receiving applications.
Enabling IIoT and Edge Computing
Many IIoT solutions involve hardware tied to a machine for sending data up to a cloud-based SCADA system. This could be as simple as an Arduino with ethernet, some sensors and a few zip ties, or as complex as a dedicated PLC doing local control while simultaneously integrated with a cloud solution. The costs with the latter option can be astronomical without much added benefit to a true edge solution. Not to mention, the extreme volatility of the supply chain right now can make hardware acquisition one of the most stressful parts of any automation person’s job!
A benefit of an Arduino Portenta Machine Control for this type of application is that you can run more advanced programs on it than on a more basic microcontroller—without the added cost of dedicated PLC hardware. You can even extend the capabilities of your control system beyond data-only by using the Vision Shield. An example use case is integrated security at a remote pump station site. The Portenta Machine Control unit could control the hardware and get data into the cloud, then by plugging in the Vision Shield, you could get alerts when there is motion or a door is opened on the pump station.
Another possible use case is setting up detailed data monitoring with a mobile app and Bluetooth communication for technicians on-site. This would reduce overall bandwidth costs, since only critical data would be sent to the cloud over a cell modem while still giving technicians access to everything they need to perform routine maintenance.
However, none of this precludes you from using the Arduino Portenta platform as a quick and easy way to get data from a machine into the cloud. For example, it works very well as a solution for feeding availability information into your OEE engine: install a Portenta inside a machine and run wires to a few sensors to get the data.
Integrating Arduino Portenta with Ignition
By either using Ignition in the cloud, running Ignition Edge locally on a panel PC, or another platform like a Jetson Nano, it is very easy to integrate the Arduino Portenta Machine Control platform with Ignition.
We’ll dive into specifics in future posts, however Modbus is built-into the platform. Also, you can easily add open source libraries for getting MQTT and Sparkplug B payloads sent to/from the Arduino Portenta to your MQTT Broker. This approach gives you the full power of Ignition without the cost of dedicated PLC hardware or the hassles of integrating microcontrollers which were not designed for industrial use cases. Integrating the Arduino Portenta Machine Control Board using MQTT and visualizing it with Ignition Perspective is one of the lowest cost and lowest effort ways to get information into the palm of your hand.
This same strategy would also make a great use case for highly distributed systems and Map-based SCADA. Generate a standard project for the Arduino Portenta Unit, have it spin up MQTT Sparkplug B Payloads when it powers on, and you will have data flowing with no operator intervention or configuration required.
Machine Learning in Ignition…For Real
The one gap we have found with Ignition and the current state of Machine Learning is that most Machine Learning tools are written in Python and Ignition uses Jython. This means you will need to roll up your sleeves and do some integrating to use libraries like TensorFlow in Ignition. Yes, you can do some Machine Learning in Ignition, however the leading tools will require some additional work to be useful.
This is where the Arduino Portenta platform shines! You can run TensorFlow on the unit directly, and easily integrate with tools like Edge Impulse that can also run models on the Portenta. Then, you can integrate the Portenta with Ignition using a variety of methods. You can feed data into the models from Ignition and the on-board I/O, and then return the results over Modbus or MQTT to impact the operation of your control system. For example, it could adjust process setpoints to address quality issues before they result in re-work or scrap, predictive maintenance monitoring, and scheduling optimization based on real-time process conditions.
While this isn’t integrating Machine Learning DIRECTLY into Ignition by importing a Python library, it is the next best thing. You don’t need to worry about the hooks into the system since the Portenta platform handles that for you out of the box.
Wrapping Up
The Arduino Portenta platform (especially with the Machine Control unit) is a very powerful tool for manufacturing companies looking to increase their data and information capabilities without a huge hardware investment.
You get the benefit of standard PLC programming languages, the power of dedicated microcontrollers, and the capability of Machine Learning and Vision systems in an easy to integrate platform.
We are excited to share more about what we are doing with the Arduino Portenta platform in future posts. We also look forward to helping you with any questions you may have on how to integrate the Arduino Portenta Machine Control board with your processes.