Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

instance sampling #4

Open
jeffrey194 opened this issue Nov 30, 2021 · 2 comments
Open

instance sampling #4

jeffrey194 opened this issue Nov 30, 2021 · 2 comments

Comments

@jeffrey194
Copy link

Hi, i'm a electrical engineering Student with an internship working at AWL.

I'm using the OPC UA/DDS gateway to create a communication between a Siemens S7-1500 PLC and the DDS network. The issue i'm having is that multiple DDS instances in the same topic all subscribe to a single predefined NODE in OPC UA. which means they will overwrite eachother in the OPC UA server located in the Siemens PLC.

To use the PLC efficient i need to be able to separate the multiple instances when they get loaded in opc ua. Is there a way to configure this? or would this be a OPC UA standard limitation? I cant find a solution in the RTI dds/opc ua Gateway tutorial.

Capture

This is how i configured the publication and subscription in the gateway. i'm really curious about any functionality i might not have figured out yet.

With kind regards,

Jeffrey Dijkstra

@fgaranda
Copy link
Member

fgaranda commented Nov 30, 2021

Hi @jeffrey194,

I wanted to double check with you how data flows. First, on one side, you've got the Siemens S7-1500 PLC, which has an OPC UA Server you're monitoring, and on the other side, DDS applications that subscribe to a Topic. In the middle, you've got the Gateway that subscribes to a single Node, and then publishes an instance of that Topic. Are both ActivityRequestId and JoborderActivityID key fields of the type associated to the DDS Topic? Then I assume you have the opposite flow for responses coming from DDS applications, and that you want those to be reflected as different responses on the OPC UA Server, so that the value doesn't get overwritten all the time.

Usually, different instances of a DDS Topic could be mapped to different Nodes in an OPC UA Server. For example, the Square Topic reflects the position of different squares, identified by their color (their key field). In that case, the most natural mapping would be having different Nodes in the Server for the x and y positions of Squares of each color out there. That's what we do in the DDS to OPC UA: Getting Started tutorial. For that, you'd need to declare sample selectors, which you can use to specify which Nodes are updated when your selection condition is met (see this example). This would be the obvious solution, but I think it may not suit your needs, as Request IDs or Activity IDs may be dynamic values that get assigned at runtime, and are only use for a single request. In that case, I don't see a clear way to map responses to OPC UA. There might be a need for some intermediate actuator that triggers something within the OPC UA Server. What's the PLC supposed to do with the response?

Best regards,
Fernando

@jeffrey194
Copy link
Author

jeffrey194 commented Dec 3, 2021

hi Fgaranda,

Thank you for replying so fast!
And you are correct, both of the values are dynamic, it is a small part of the topics required in this project and there will be more dynamic instances.
The MES system in our project will create these new ActivityRequestID's so there is no way to predefine them in the Gateway. I noticed the gateway creates new Instances when the OPC UA gateway is sending data towards DDS, so the opc ua data Send part is functional. unfortunately 80% of the data needs to be send towards the OPC UA server(PLC). i guess the next step would be using the Gateway for some predefined Monitoring data, and creating a new custom application(gateway) for DDS data transfered to an OPC UA server on a siemens PLC.

The PLC is supposed to recognize these New Activityrequests and Respond to a MES system. when the MES acknowledges the Activity and sends it, The PLC will execute the Activity. I have thought about a version without Dynamic instances, as that would indeed work, but unfortunately it is a requirement for completing this project.
Thank you again, for your clarification about this matter.

Best regards,
Jeffrey

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants