Device Simulator and ignition

Do you have any example code for simulation to support OPC UA ? So that we can build the same interface in our device simulation code ?

No… I don’t have any code for you. You haven’t really provided enough details even if I did.

If you want to add OPC UA support to your simulation the best approach would be to find an OPC UA SDK for whatever language you’re using to build it in.

thank you. I am writing my simulator in python. Does OPC UA SDK provides OPC UA for python ? Do you mean to say, the simulator we are developing should implement as OPC-UA Client ?

Your simulator should implement an OPC UA server.

You can then connect Ignition to it and read, write, or subscribe to the data it provides.

My simulation software is going to work as a device (like sensor/PLC in real world) sending data to OPC-UA server so that ignition can be used to design dashboard. This is what i thought. Isn’t it not correct ?

You’ve got the data flow backwards. Devices don’t typically push data to the OPC UA server. The drivers in an OPC UA server poll data from devices.

Your simulation device will have to support some protocol that Ignition’s OPC UA server has a driver for. Or you can skip that extra layer all together and support OPC UA connections directly.

Instead of exposing simulation data via OPC UA you might find it a lot simpler to expose it via Modbus (so, your device acts as a Modbus slave). Then you could connect Ignition’s Modbus Driver to it. The downside would be there’s no browsing with Modbus, but the upside is it would be much easier for you to implement than an OPC UA server.

thanks Kevin for giving different options in sending simulator data into ignition. Let me brief about our use case.
We are developing a pressure vessel simulator (like physical device connected to PLC) on aws cloud and we have already installed scada ignition software (mysql as database) on aws cloud. Now our pressure vessel simulator keeps generating data once in 30 seconds and this data should be displayed in ignition dashboard.

What is the best solution for OPC UA to pull generated data from our simulator. Need your advice here.
If OPC-UA server polls data from the device, where will my device (simulator) stores it until it gets pick by OPC-UA server ?

Also, since we already have the ignition software (along with OPC UA server) already installed, will implement one of the drivers supported by already installed OPC UA server so that OPC UA can poll the data from simulator via this driver.
Does it makes sense ?

Ahem.

Consider using my Ethernet/IP Class1 Communications Module. While not really intended to be used this way, it basically is a complete simulation of an Allen-Bradley Logix PLC’s data table within Ignition. You can write jython code called from Gateway Timer Events to simulate the periodic tasks that would otherwise be in the PLC. The simulated data table is exposed to Ignition’s OPC server as if it was a connected PLC, with address syntax largely compatible with Ignition’s latest Logix driver. The simulated data table is intended to be exposed to a control network to allow interaction with other real PLCs and/or networked I/O modules, but the simulation still works if that isn’t set up.

Edit: If there’s a real-world pressure vessel control system that you wish to simulate, and it has a Logix processor, start by exporting that processor’s contents as an .L5X file. Import that into my module and you’ll get the majority of its data table in one go (less add-on-instruction types and tags). The virtual module in Ignition will then “look” just like that real processor (with some extra simulation-related items) when browsed from inside Ignition.

the hyperlink given in your response is not taking to the right resource. Can you give me the correct url ?

Hmm. Works for me. After a brief delay (in the showcase code, I believe). But you can also go here:

https://www.automation-pros.com/modulesales.html

We have developed a simulation module (UNISEMS) that can integrate with Ignition directly thru a GCM module or thru OPC-UA (you will have to expose all tags thru OPC UA interface for this). However the simulation models will have to be written in GNU FORTRAN. See Introduction and Demo of UNISEMS. of UNISEMS module.

As you are writing your simulator in Python , UNISEMS will have to be slightly modified to suit your requirements.

If you export your telemetry via MQTT, there is a miriad of options including our simulator that simulates thousands if not MILLIONS of sensors, eg. 200k Sparkplug metrics in 5 minutes in this video


Creating a custom simulation for your vessel would probably take minutes, depending on exact requirements.

Your requirements are vague! Is there a PLC involved in the simulator? Looks like you want to only see Ignition screens/dashboards for your simulated Vessel (device). Assume you will also simulate the PLC logic in the simulated plant?. Cycle time of 30 second for update of simulation parameters is ridiculously slow!

Looks like you already have simulation written in python, in that case you can simulate the whole system using Ignition gateway scripts in jython and drive the memory tags, you don’t need OPC UA and connection to an external system!

Hi Pramanj,

I assume every simulator will have PLC involved (correct me if that is not the case) for smooth integration with real device (pressure vessel) later. Yes, we want to use ignition dashboard/screens/designer to view simulated device values and control the device from ignition dashboard.
Can we use your UNISEMS module for building pressure vessel simulator on AWS ? If so, is it production ready for the cloud ?

Hi Uwe,

Can you explain in detail about your simulator ?
Any documentation of using it and integrate it with ignition. The simulator should be controlled by ignition based on few rules (control pressure, water level, temperature, open valves etc.,). Is that possible with the simulator you mentioned here ?

Not necessary, if you use PLC connected to simulated device (Vessel) then it becomes a Stimulator not Simulator. You can as well simulate the ladder logic or PID control that you want to build in the PLC , in the models its self, defining IO points of PLC in the simulator. That way you can simulate the behaviour of the plant (device) as well as the PLC logic within Ignition. Well , it depends on what you want to achieve using the simulator? Do you want to do a POC of how your SCADA will look like to convince the customer or your top management etc or a retrofit of existing hardwired plant to a SCADA system to show it to customer and save some configuration time etc? Please specify what are your objectives.

UNISEMS has a library of equations written in FORTRAN language for mathematically modelling a process plant like flow/pressure networks for non compressible fluids , thermodynamic equations, steam tables etc. Some of these can as well be converted to python language and run inside Ignition scripts. It depends upon what does your plant look like? Just one vessel! We need a P&ID of your process plant is in the scope of the system.

Everything is in the videos and pages linked by the video I referenced.
This is an industrial automation simulation that allows you to create any scenario you want.
Our customers over 20+ years use the simulator for development, testing, pre-deployment,
training, marketing and sales of complex, large-scale applications.
To be specific, you can create ANY control system on Ignition or ANY other platform based
on MQTT.

Hi All,
We started using ignition dairy demo simulator for our work. We installed WebDev module to ignition and added all the tags required for our simulator. We found WebDev module looks more promising as it exposes REST API’s to control all ignition resources using code.

Would like to know fro the community if there are any pros and cons of ‘dairy demo simulator’/ Webdev module before we move forward.

7 posts were split to a new topic: [Bug] Webdev module not working in Beta