I’m coming to this from a Python background, so my reflex is to assign values like this to a single array and iterate over it. In my head that reduces both the amount of work and the potential for error, that is fill the array correctly and write one correct block of code for one object, versus creating, configuring and potentially maintaining several independent tags without error.
Not intending the following as a criticism, just curiosity and attempting to fill in the gaps in my knowledge. I’m new to industrial automation, and my programming background has been mostly data analysis and simulation for my PhD.
The total PLC memory that we’re using amounts to a few (<10) thousand bools and a few thousand more ints and floats. We poll a small subset of that, but were we to poll the entire system at about 1 query per second (on average, sufficient for our monitoring) We’re talking perhaps 100’s of kbps, most likely much less. I can imagine that if the frequency or number of points or both were to rise, we could eventually outstrip the capacity of our OPC network. I’m assuming that we are a somewhat edge-case SCADA user, in the sense that it is not a concern for us at the moment?
Is the use of compression and MQTT to transmit datasets as opposed to other data a necessity of OPC architecture, or is it a choice on the part of Ignition? If it’s a necessity of OPC arcitecture, does it have its roots in limitations of historical computers/networking and the need for backward compatibility, or is there a fundamental aspect of SCADA/networking as it exists today I don’t understand yet? To be fair, I don’t understand almost all aspects of both at this point :).
My point of essential confusion is why an array of values can’t be transmitted over an OPC network as such, and why report-by-exception couldn’t be applied, even to the elements of a list/array/dataset.
Also, can you explain ‘atomicity’ as it pertains to SCADA and what the benefits of atomicity are?