It might has been discussed before, but I couldn’t google the right information I am looking for.
I have setup a RPI to control multiple devices and receive feedback from field instruments. I am thinking having Ignition as SCADA platform.
Here’s the current setup I have:
- use RPI to connect to field instruments and devices.
- On RPI, use python script to read&write I/O values to a remote database every one second.
- Ignition to read status and write command to the remote database every one second.
- Based on the value changes in the database by RPI, the RPI execute the logic to control the field devices.
In this way, the database plays the role as interface for data exchange between RPI and Ignition.
Here’s my questions:
- can ignition talk to RPI directly?
- what’s the drawback of using database as interface? there are around 50 I/Os.
- any better setup for Ignition to control RPI?
Any comments are highly appreciated.
It sounds like you’re in control of the software running on the RPi. What you proposed would work, and if you don’t have to make any changes to move forward maybe it’s the best, but it’s not what I’d consider ideal.
Whether Ignition can talk directly to the RPi or not depends on what software you can supply for it or write for it. Ideally you could make a direct OPC UA connection to a server on the RPi, but that would require you wrote a server to interface with the I/O.
Another solution would be Sparkplug + MQTT, but that would again require something running on the RPi that implements the Sparkplug side to interact with the I/O.
What do you have control over here?
Thanks for the prompt reply.
It’s controlling about 50 devices and receiving feedback from about 20 instruments, also a few comms over modbus. It’s a small size control system for a pilot plant, not a industrial standard manufacturing site, so real time and downtime requirement is not a issue.
I thought about setting up the RPI as OPC server but it will require additional engineering hours on the RPI side. So I chose to use a remote database as interface and this database server is on another machine which wont take any memory resources on the RPI. It’s RPI 4B but with 1GB memory only.
I never use Sparkplug + MQTT before, I will have a look and see whether I can do.
Thank you for the advice.
Sounds like a neat project. Let us know what you end up doing.
You could consider node-red to communicate with PRI on one end and any remote database on the other side. What the OS on RPI? Linux? Ignition would be an over kill for such a small control system in my opinion? If you use OPTO22 hw/sw in stead of your own, you get a tremendous flexibility for future extensibility to Ignition edge, OPC, PLC connection , etc!
Thanks for the advice.
Current the programming and hardware installation has been completed from RPI side, cost controlled within AUD500. The database is pgSQL on a existing server, so no cost. I created a little local HMI using pyqt, just for basic operation.
The only pending task is the SCADA system. I thought about using Django framework I have for another project, but it will still involve some amount of engineering hours for modifying the HTML pages, with which I can quickly deploy the system if to use Ignition, and the saved engineering hours to pay for a Ignition license with flexibility for future modification.
I couldn’t find any other people posting a success story of Ignition controlling RPI. Maybe it’s over kill.
What features of SCADA do you want , if you already have an HMI and a sql data base? You can certainly connect Ignition server or IgnitionEdge to your RPI some how using Ethernet port or wifi or something else! depends on what you want from SCADA?
Well, some of us have clients who don’t want competitors to know what they are doing… I recommend using the WebDev module on the Ignition side and python3 with
requests running as a systemd unit to handle communication of process data. For the UI, I recommend running Vision fullscreen as a custom desktop session with auto login and re-login at the OS level. Add the RPi 7" touchscreen for an astonishingly cheap little HMI.
I have several RPi setups with the smart pi case with the 7" touchscreen and a PoE splitter. I run this setup from Dell x1024 PoE switch that provides plenty of power (even running USB hands-free scanners) and simplifies installation. Without the scanner you are looking at under $200 for the RPi HMI. They work great too. I update and control them with Ansible, which is really handy when you need to modify something on all of them at the same time.
It’s been a while since I posted this thread.
I have tried using rpi+pgSQL+Ignition to get the control system running.
It’s a simple trial experiment and “real-time” operation is not required. I can operate 64 relays from the ignition screen and read 12 process variables from different sources via modbus with 5 seconds time interval. I can optimize it to 2-3 seconds if to create multi threading process in RPI.
Some one advised me to try home assistant or Node-Red, I will have a try but Ignition is still my favorite.
Anyway, it’s a nice try. Thank you all for the advices.