I have an issue I am trying to figure out. We have a connection to Keba’s Kemro OPC and I need to poll it to get some alarm information about a machine. Kemro OPC has a ReadAlarms() function that according to the Kemro manual writing any value to the function will call it. It should then return the information needed has a list. The problem I am having is the ReadAlarms() shows up as a folder in the browser. So I can not write anything to it. Anyone got any ideas on what I can do to make this work?
Calling the Function:
Return on Function:
If it’s showing up as a Folder in the OPC Browser that means it’s an ObjectNode in the server. ObjectNodes don’t have a Value attribute, so I’m not sure what the server is expecting…
If you connect with UaExpert and browse to this Node do things look any different? Maybe there’s an actual MethodNode in that folder? Ignition wouldn’t show these if they were there.
I don’t have UaExpert. I can see if the IT guys do that handle the OPC servers. I just have access to designer and that is it. No back end OPC software or Ignition gateway config stuff. So when I run into problems with something it can make it a pain to troubleshoot at times. I did play around with this some more after the OP. I found that if I manually create a tag and manually type in the OPC path it connects to the path just fine. When I try to write a value to the tag it gives me an access denied error. Which I am not sure if it is because of access rights on the gateway or Kemro server or because it does not accept the value. I have tried the tag as a string and int, both give same result. I asked IT to check access rights on both the gateway and the Kemro server but no response yet.
You are going to need at least access to the Ignition Gateway status and config sections to successfully troubleshoot this. If that’s not something you can get then you might need to have your IT call into our support for help.
IT set the Kemro OPC to read/write and I can now trigger the function call from the manually created tag as intended but I have one problem that I am hoping you or someone can help with. The ReadAlarms() function is only showing the Alarms has 1 string value and the Alarms should be another folder that contains all the list items for Alarms. Or at least this is how it shows up for the GetAlarmInfo() function. Both of the functions have the same information in the returned list. I am suspecting I will probably just have to have our IT guys call in to Inductive support to try to solve this part.
As you can see here the GetAlarmInfo() shows up good with all of the list items under alarm. The ReadAlarms() does not it just shows Alarms as a single tag.
When I run the GetAlarmInfo() function it returns all the info as expected.
When I run the ReadAlarms() it errors out for conversion because the info returned is not just a string value.
Info returned on GetAlarmInfo() and ReadAlarms().
Yeah, probably time to have someone call support. I can’t tell what that Alarm tag should be. It might be an array, which could work depending on what the datatype is, but it’s hard to figure out from just screenshots and without being able to use something like UaExpert or Wireshark.