Update OPC XML DA to OPC UA|OPC UA Standard|Forum|OPC Foundation

Avatar
Search
Forum Scope


Match



Forum Options



Minimum search word length is 3 characters - maximum search word length is 84 characters
Lost password?
sp_Feed sp_PrintTopic sp_TopicIcon
Update OPC XML DA to OPC UA
Avatar
Stephane JEZIORNY
Member
Members
Forum Posts: 6
Member Since:
12/15/2022
sp_UserOfflineSmall Offline
1
02/23/2023 - 06:33
sp_Permalink sp_Print

Hello, 

 

To give the context : 

=> Scanner take picture of Serial Numer and send to Client PC

=> Client PC send the serial number by RMI (JAVA) to Server.

=> Server check the data, send a confirmation by OPC XML DA Client to the MicroBox

=> MicroBox (IPC) get confirmation by OPC XML DA server and send by Profinet to ET200 (configure with SIMATIC NET)

=> ET200 automaton set the PNIO and send information to Conveyor by SMEMA Protocol

=> Conveyor Stop/Start the line

 

Currently, we have a IPC-MicroBox with an OPC XML DA Server that is configure with SIMATIC NET V7.1 

In the last version of SIMATIC NET V7.1, OPC XML DA isn't supported ! 

 

So we want redevelop our Client Application OPC XML DA to OPC UA : 

OPC XML DA use Web Service, SOAP Protocol and XML File. 

 

To Update OPC XML DA to OPC UA...

Are there a lot of modification to do in the development ? 

Should we redevelop all the application ?

Could we keep Web Sevice ? 

... 

 

Thank you in advance for your response,

Avatar
Randy Armstrong
Admin
Forum Posts: 1457
Member Since:
05/30/2017
sp_UserOfflineSmall Offline
2
02/23/2023 - 09:03
sp_Permalink sp_Print

An OPC UA client is significantly different from OPC XML DA so you will need to rework a lot of code in the Client to migrate to OPC UA. You will likely find that everything below your internal abstraction layer needs to be rewritten.

You should probably start by identifying an OPC UA SDK that works with your development environment because that would give you the fastest/cheapest path to OPC UA. If you are using Java then Milo (https://github.com/eclipse/milo) or ProSys (https://www.prosysopc.com/prod.....-java-sdk/) are good choices.

Once you have identified the SDK you will get all of the protocols that the SDK supports so you will no longer need to use SOAP XML calls (UA TCP is more widely supported and tested).

Avatar
Stephane JEZIORNY
Member
Members
Forum Posts: 6
Member Since:
12/15/2022
sp_UserOfflineSmall Offline
3
02/24/2023 - 01:27
sp_Permalink sp_Print sp_EditHistory

Thank you for your message, 

To be honest, we are looking to limit the development as munch as possible. 

Personally, I believe OPC UA is one of the best solutions, but I'm not sure if it will be accepted by the group. 

About XML and UA I find this link : https://reference.opcfoundatio.....104/docs/D

 

If we have to rewrite the entire client, we have to considering other solutions. 

1) We don't use all the features of SIMATIC (such as Ladder programming...), perhaps it would be easier to develop an OPC XML DA Server with Profinet communication ? What do you think about this option ? 

 

2) Another Option would be use a server like KepServerEX to retrieve data from OPC XML DA client and send it to an OPC UA server.

     - I 'm not sure if this is possible ?

 

3) We also consider using REST or MQTT with IOT to control I/O. 

     - However, I read that this may be less reliable and robust ? But we have used REST with IOT before and we never had any issue. 

 

4) We are an Electronics compagnie, we could consider changing the protocol and using an SMEMA/CFX adaptor to control conveyor. 

Avatar
Randy Armstrong
Admin
Forum Posts: 1457
Member Since:
05/30/2017
sp_UserOfflineSmall Offline
4
02/24/2023 - 07:04
sp_Permalink sp_Print

All of the options you suggest will involve rewriting all of your code.

With an SDK it would only take a day or two to implement a simple UA client in your server that only calls a method/writes a value.

All of the other options sound like a lot more effort - especially the REST/MQTT option which would involve developing custom messages.

Avatar
Stephane JEZIORNY
Member
Members
Forum Posts: 6
Member Since:
12/15/2022
sp_UserOfflineSmall Offline
5
02/24/2023 - 07:10
sp_Permalink sp_Print sp_EditHistory

Ok, thank you for your answer. 

I will see in more details milo SDK. 

I repost if I have more questions about milo. 

Avatar
Randy Armstrong
Admin
Forum Posts: 1457
Member Since:
05/30/2017
sp_UserOfflineSmall Offline
6
02/24/2023 - 07:13
sp_Permalink sp_Print sp_EditHistory
Here is a simple program generated by ChatGPT that writes a value using Milo:

---
import org.eclipse.milo.opcua.sdk.client.OpcUaClient;
import org.eclipse.milo.opcua.sdk.client.api.identity.UsernameProvider;
import org.eclipse.milo.opcua.stack.core.types.builtin.DataValue;
import org.eclipse.milo.opcua.stack.core.types.builtin.NodeId;
import org.eclipse.milo.opcua.stack.core.types.builtin.StatusCode;
import org.eclipse.milo.opcua.stack.core.types.builtin.Variant;

import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;

public class OPCUAWriter {

public static void main(String[] args) throws Exception {
   String endpointUrl = "opc.tcp://localhost:53530/OPCUA/SimulationServer";
   OpcUaClient client = createClient(endpointUrl);

   NodeId nodeId = new NodeId(2, "MyVariable");
   Variant value = new Variant("Hello World!");

   StatusCode statusCode = writeValue(client, nodeId, value).get();
   System.out.println("Write status: " + statusCode);

  client.disconnect();
}

private static OpcUaClient createClient(String endpointUrl) throws Exception {
   OpcUaClient client = new OpcUaClient(endpointUrl);

   // set username and password if necessary
  client.setIdentityProvider(new UsernameProvider("username", "password"));

  // connect to the server 
  CompletableFuture future = client.connect();
  future.get();

  return client;
}

private static CompletableFuture writeValue(OpcUaClient client, NodeId nodeId, Variant value) {
   DataValue dataValue = new DataValue(value);

   return client.writeValue(nodeId, dataValue);
}

}
---
Avatar
Stephane JEZIORNY
Member
Members
Forum Posts: 6
Member Since:
12/15/2022
sp_UserOfflineSmall Offline
7
03/06/2023 - 02:59
sp_Permalink sp_Print sp_EditHistory

Thank you, for the example of client OPC UA. 

I can't try it, because I don't have OPC UA server yet.

Maybe, I can configure the old MicroBox (SIMATIC NET V7.1)... But, if it's possible, I don't know how to configure it.

 

The application is critical for the production... 

With OPC UA, it's possible to ensure easily a redundancy ? 

For exemple connecte two OPC server to the network, and if the first doesn't work use the seconde ?    

Avatar
Randy Armstrong
Admin
Forum Posts: 1457
Member Since:
05/30/2017
sp_UserOfflineSmall Offline
8
03/06/2023 - 04:02
sp_Permalink sp_Print sp_EditHistory

OPC UA has a standard mechanisms built in for redundancy.

https://reference.opcfoundatio.....5/docs/6.6

Even if the server has no special redundancy support you can create 2 identical instances and design your client to automatically failover if the primary fails. You have the option of HOT, WARM or COLD redundancy which trade off higher overhead for faster failover time.

That said, you make not need it because you do not need subscriptions. Just calling the method on multiple servers may be sufficient.

Avatar
Stephane JEZIORNY
Member
Members
Forum Posts: 6
Member Since:
12/15/2022
sp_UserOfflineSmall Offline
9
03/07/2023 - 08:32
sp_Permalink sp_Print sp_EditHistory

It's decide by the group to try : 

 - Develop only a REST Client app that using an REST API of IOT

 

The main reason is that we haven't need a central server and if one IOT doesn't work it's only one line that stop. 

To develop a redundancy system with OPC UA it's a bit complicated in our case. 

 

I'm not convinced by this solution, but I can't nothing to do...  

For me OPC UA give more flexibility, Reliability (Functionality of development), scalability (not IOT of one brand)...   

Avatar
Randy Armstrong
Admin
Forum Posts: 1457
Member Since:
05/30/2017
sp_UserOfflineSmall Offline
10
03/07/2023 - 08:49
sp_Permalink sp_Print

Develop only a REST Client app that using an REST API of IOT

This does not mean much. It is too generic. There is no "REST API of IOT" there are only custom REST interfaces that people can develop which usually come with more cost and complexity in the long run.

And implementing UA redundancy in your case should be trivial because you only need to call methods.

Avatar
Stephane JEZIORNY
Member
Members
Forum Posts: 6
Member Since:
12/15/2022
sp_UserOfflineSmall Offline
11
03/07/2023 - 09:01
sp_Permalink sp_Print

Randy Armstrong said

Develop only a REST Client app that using an REST API of IOT

This does not mean much. It is too generic. There is no "REST API of IOT" there are only custom REST interfaces that people can develop which usually come with more cost and complexity in the long run.

And implementing UA redundancy in your case should be trivial because you only need to call methods.

  

Use this IOT

Wise 4060 

we can call with a client their REST interface already made

 

For example : 

B.2 REST Resources for WISE-4000 Series

B.2.1 Digital Input

B.2.1.1 /di_value/slot_index/ch_num

Description Retrieves information about the digital input value resource on specific slot.

URL Structure http://10.0.0.1/di_value/slot_index

http://10.0.0.1/di_value/slot_.....dex/ch_num

HTTP Method

GET:Returns the representation of all of digital input value resource.

PUT:Replace all of digital input value resource

PATCH:Apply partial modifications to digital input value resource.

 

For redundancy it's a bit complicated because we need 2 S7-1200 because we have more than 16 Profinet IO devices.

Forum Timezone: America/Phoenix
Most Users Ever Online: 510
Currently Online:
Guest(s) 11
Currently Browsing this Page:
1 Guest(s)
Top Posters:
Forum Stats:
Groups: 2
Forums: 10
Topics: 1353
Posts: 4589