I’m reading OPC Client values from PLCSIM Advanced. Everything was going ok until an array appeared.
On the gateway, I can read these values in the Quick Client with good quality, but when I try to add it to the project I get an error configuration.
I tried every type of array available even dataset and refreshed it with every try, but the error persists.
I’m using Ignition 8.0.6
Does anyone have a fix for this? I see the same thing in 8.0.12, trying to read an array of strings.
Unless this happens to be fixed by something in 8.0.13 I don’t think it’s fundamentally broken because I can pull in a String array from the public Eclipse Milo Demo Server just fine:
Can you try connecting to the demo server (opc.tcp://milo.digitalpetri.com:62541/milo
) and/or the 8.0.13 nightly and let me know if it works?
If it does the issue may be specific to the server you’re connecting to.
Looks like that works, and it must just be that our array is configured incorrectly on the PLC.
We created a tag of data type STRING[10] in studio 5000, is that not the same thing? When we browse it in ignition it shows as a folder of tags, not as a tag
Not the same thing at all. None* of our drivers use actual array types, they use folders that contain a tag per element as you see.
Can you turn the loggers OpcUaSubscriptionModel and OpcUaSubscriptionSynchronizer to TRACE and then drag the array tag that doesn’t work from the OPC browser to the tag browser again? Usually Config_Error means the monitored item couldn’t be created for some reason.
*new Omron FINS driver does support array types, none of the old ones do.
It creates a folder of tags, instead of an array the way that I would presume it does with the milo example
Is it possible to read arrays in Allen Bradley controllers through Ignition at all?
Drag the whole folder in or do a system.opc.read for all the elements. At the driver level it will optimize the request to read the whole array at once, but as far as the way it’s modeled in OPC it’s always going to be a separate tag per element.
Gotcha, we need the folder to update if the array is updated to add a new item, would the only way to do this be to poll it with system.opc.read at some interval and update the folder?
This also is going to be in a UDT theoretically, so we cant have a dynamic amount of tags, which is where this potentially also sort of breaks down.
Hmm. Not much you can do about that situation without a bunch of work.
Maybe another tag in the PLC can be used indicate the array length and if that changes you can dynamically create or delete a tag using the system.tag scripting functions.
Thanks Kevin, I appreciate the clarification! Hopefully one day we’ll be able to read these arrays