BadNotImplemented when calling OPCUA Method
Hi all,
I want to add a method into my opcua server, I have been trying to follow the guide in this tutotorial CppExamples/Examples/OpcPlcManager at master · PLCnext/CppExamples.
I follow all the steps, but I get the BadNotImplemented error when trying to call the method from UaExpert.
Any idea of what I could be doing wrong?
Comments
Hello. That tutorial is a follow-on from the "simpler" tutorial, here:
Did you manage to get that simpler example working?
Thanks for the answer! I haven't tried that because I am looking for a solution that uses c++. Do you have any other examples with c++ I could try?
Ok, that makes sense. The simpler tutorial uses many of the principles that are needed for the more complex C++ implementation. If you're able to get the simpler example running, then that will help to narrow down where the problem might be when you try the more complex example.
For the C++ example - are there messages in the Output.log file that confirm that your ACF component instance has started?
Yes, I do see that the component is active. I see the "Component 'MyProjectComponent1' from library 'MyProject' created."
The error I see after I call the opcua method:
Arp.Services.OpcUAServer.Internal.InformationModel.Xml.NodeManager ERROR - Method for OpcPlcManagerComponent1/Stop.UA_MethodState not implemented
Perhaps the reference to the FunctionBlock is incorrect?
<MethodTarget xmlns="http://phoenixcontact.com/OpcUA/2019/NodeSetExtensions.xsd" FunctionBlock="OpcPlcManagerComponent1/Stop"/>
I do see that the component is active. I see the "Component 'MyProjectComponent1' from library 'MyProject' created.
That is not the correct component or library name.
These steps in the example:
... should create a component instance named 'OpcPlcManagerComponent1' from library 'OpcPlcManager.OpcPlcManagerLibrary'.
You are right, that was the wrong component. I do have the right name in the project (see image below)
However, I don't see anything related to that component in the in the logs.
I have also tried to move the port to MyProjectComponent1 but I still get
Arp.Services.OpcUAServer.Internal.InformationModel.Xml.NodeManager ERROR - Method for MyProjectComponent1/GetPlcState.UA_MethodState not implemented
Ignore my last comment.
Moving the port to MyProjectComponent1 fixed the problem. I think that OpcPlcManagerComponent1 wasn't active for some reason.
Thanks for the support!
ACF projects are not deployed using PLCnext Engineer, so that might explain why the ACF component instance is not started.
The file named "How_to_deploy.txt" that is created with each new ACF project includes information on how to deploy that type of project. This e-learning module also describes this process: