OPC Server DA and HDA - server

I was asked to provide either the OPC DA ProgID or OPC HDA ProgID.
How do I know if my OPC Server is OPC DA and/or HDA Capable? where do I look for these information?

The information is in the server's documentation.
You can also install the server and then use OPC DA / HDA client to browse for servers on the computer, and check if you see it in the list. This will also typically show the ProgID.
You can also install the server and then inspect the Windows registry. There are entries for component categories. OPC Specifications tells you what are the categories (CATIDs) for OPC DA or HDA servers (plus the categories have descriptive names). The entries for the server will be under the respective category, if the server supports it.

There are two types of OPC OPC DA(Data Access) and OPC HDA (Historical Data Access)
When you want to communicate OPC. if you want to catch the Data from the DCS system then you must have OPC DA. or you want to run in simulation mode then Install OPC as server on your system.
Historical Data Access is used for History values and OPC DA is used for Live values.
Prog ID:- You can find the prog-id from your OPC Setting.it is depend on companies which product you are using.Please check below some examples of prog- id.
Kepware.KEPServerEX.V6
Matrikon.OPC.Simulations.1
OPCSystems.NET.1
EEI.OPCSimulator
you can used OPC Expert for searching a OPC Server in your network.

Related

Alarms and Events

I have worked on Alarms and Events in OPC Classic. I was wondering if there is an equivalent option in OPC UA. I am using Siemens S71512 CPU, which has got a built-in OPC UA Server.
Regards,
Nandgate.
The classic OPC had Alarms and Events, OPC UA has Alarms and Conditions.
This is specified in part 9 of the OPC UA specification. You can get it here
Currently few OPC UA Servers and Clients supports it.

Connect main OPC UA server to secondary OPC UA server

Is it possible to connect an OPC UA server to another OPC UA server, in order to redistribute its data?
In fact, I have a small device which runs a small OPC UA server that exposes some data. The device is running in a private network. Then I have the main OPC UA server accessible from the internet, where I would like to view some of the small device's data, together with some more generic data.
Yes, it's possible, you just need a server that has this feature. It's not a standard part of OPC UA that any server will be able to do.
One option would be to use KEPServerEx's client driver.
OPC UA is a server-client architecture. Therefore, you cannot make two servers talk to each other directly. There must always be an OPC UA client implementation between them. Yes, KepServerEX does support this feature as having an OPC UA Client Driver out-of-the-box. However, you can implement your own little OPC UA client between the servers as a gateway too, which may suit your solution better I believe.
As far as I understand this will be possible by using an OPC UA Aggregation Server as main server (which is accessible from the internet).
You could test it with the open source UA-NetStandard Aggregation Server.

Does OPC Historian server exists in between SCADA to OPC UA server?

Is there a OPC Historian server in between? where PLC or SCADA connects to OPC UA
Not unless you've put one there.
I think your question needs a lot more information or it's going to get flagged.

Can I access an OPC server using a Modbus Master?

I'm trying to access an OPC Server on a Windows Machine using a Modbus Master on Linux and was wondering if that's possible
Not typically. You should use an OPC client.
No. OPC and Modbus are completely different.
Tipically you see an OPC server accessing a Modbus slave. You can model an OPC server as a two-layered component. The "upper" layer talks OPC with OPC clients. The "bottom" layer talks whatever protocol you want (in this example Modbus). The server's main task is to move data through these layers.

Close OPC DA Connections

I am using OPC Foundation's OpcNetApi.dll to communicate with an OPC DA server.
I am curious if there is a programatic way to kill specific connections which are currently active on the server using this library or a similar library.
I'm not positive, but I don't think what you are asking for is always possible (without a debugger). OPC is based on Microsoft COM. There are two ways that COM can be implemented:in-proc and out-of-proc. The choice depends on the OPC server vendor.
With an in-proc implementation, if you are running the OPC client on the same machine as the OPC server then the OPC server is just a dll that is loaded directly into the memory space of the OPC client. This dll exposes the OPC interfaces like CreateGroup, ReadAllItems, etc. Now it is probably getting the actual data through some other mechanism (named pipe, TCP/IP, etc) but this depends again on the OPC server implementation. The only way to really force stop this OPC server is to end the OPC client or get the OPC client program. Of course the OPC client or OPC server may already have implemented a mechanism to end, but there is not guarantee.
If it is an out-of-proc OPC implementation then the OPC server will run in a separate executable so you can find the name of that executable and terminate it. (You can search in regedit for the name of the OPC server to find the corresponding executable name). If I remember correctly, the OPC server can be designed so all clients share one executable or each OPC client gets their own instance of the executable.
If you are running the OPC server remotely then it is probably going to be loaded inside of a stub program if its an in-proc implementation and then tied to RPC. If you block the ports that RPC communicates over I think most clients would decide to disconnect after a while, although there is no guarentee they won't try to reconnect later.
Here's some more information:
https://www.opcsupport.com/link/portal/4164/4590/Article/711/May-I-get-a-In-Proc-and-Out-Of-Proc-explanation