Closed SoerenLohr closed 1 year ago
you never write the variables... no variable value change no notification in the subhandler!
Excuse me, I should have mentioned this. We usually set the variable values by an external browser like UaExpert. We also tried out a version where the server periodically modifies a value. The subhandler fires, but PF does not register anything (as opposed to when using the ProSys Server).
so PF connects to the OPC UA Server and makes a subscription but does not get notified?
Well, I am not exactly sure how PF handles this behind the scenes, but this is how the OPC works from a user perspective:
Now, if I start the server and execute the script in the PF example, the script sends data once. On subsequent runs (restarting the script), nothing gets sent, so I guess there is some kind of database in PF that is compared to, then only the deviating values are sent. Nothing gets read, however. there is an option to force the ("synchronous") reading of values in the read value method, but then it reads the values all the time. Again, when I connect to the ProSys server, the procedure described above is working as intended. Is it possible that I need specific settings for this to function? When I go to the "Address Space" of the ProSys server, I see Alias and Server objects. Does the server created by the code already contain these objects or do I need to specify them?
Don't know anything about PF!
When I go to the "Address Space" of the ProSys server, I see Alias and Server objects. Does the server created by the code already contain these objects or do I need to specify them?
the server has the UA Standard Nodes included!
Could you check if the Nodes on your Python OPC UA Server are accessible with "UAExpert"? (https://www.unified-automation.com/de/produkte/entwicklerwerkzeuge/uaexpert.html)
Just to check if there is everything running properly!
But the Server Supports Read/Write and the Subscription out of the box!
otherwise we would need a wireshark trace from both setups to figure out whats going on...
Maybe PF has some trace capabilities, which can give a glue what is not working.
one thing is sure is that that PF stuff adds its own set of concepts and strange naming so nobody else can understand what they do ;-) Good luck
Thank you for the answers. I doubt that PF has any network tracing capabilities since it's a power engineering simulation software.
I have compared the elements in the FreeOpcUa Server and the ProSys Server explicitly and noticed some differences.
In the FreeOpcUa Server, the following folders are missing, which are included in the ProSys Server by default:
Additionally, each variable in the FreeOpcUa Server has the following properties that are deviating from the ProSys Server:
I was wondering if these deviances may be the reason, what do you think? If I look at the deviances, it seems to me like it has something to do with simulation capabilities. If you think this has nothing to do with it, I will create the wireshark traces.
i bet the missing stuff is part of NamespaceIndex 1 or higher -> so its Prosys specific which of course is not part of the FreeOpcUa Server or OPC UA Core Namespace with NamespaceIndex 0!
Yes, you are correct, those new objects are specified with ns > 0. Nevertheless, do you reckon this could be the reason? The example also has an OPC DA link and a guide to set up the example using the "MatrikonOPC Server for Simulation". The guide for the UA version does not specify a guide to set up an OPC server. They claim there are no free UA servers available that are easily configurable. Perhaps I need to do extra configuration to make it a "simulation" server?
Please no questions about "OPC DA" (OPC Classic - DCOM stuff - its a completely different technologie... and not part of this Library) we only can help with OPC UA -> Unified Architecture
Matrikon and some others mix these terms which confuses a lot...
If PF tries to access Data from a SimulationVariable which not exist in you FreeOpcUa Server for sure it will not work!
Hello, We were trying to utilize the FreeOpcUa library to create a server that interfaces with a DIgSILENT PowerFactory ("PF") instance. Reading and writing values are functional, but reading has to be forced by the PF script. The standard reading mechanism in PF only returns values if it detects changes in the OPC server, which is a behavior that we want to keep. We also tried running the PF example with the ProSys OPC UA Simulation Server, where the desired behavior is functional. The fact that it works with the ProSys server leads us to believe that there are issues in the configuration of the FreeOpcUa server.
We were wondering if you have any idea on how to change the code in order to replicate the behavior of the ProSys server.
Below is the code that is used to create the server: