12/15/2022
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,
05/30/2017
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).
12/15/2022
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.
05/30/2017
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.
05/30/2017
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); } }
---
12/15/2022
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 ?
05/30/2017
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.
12/15/2022
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)…
05/30/2017
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.
12/15/2022
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.
1 Guest(s)