The COM UA Wrapper supports performing Read operations to DA servers of versions 2.05a and 3.
For version 2.05a, the COM UA wrapper creates a Group using the IOPCServer::AddGroup method and adds the items whose data is to be read to the Group using IOPCItemMgmt::AddItems method. The Data is retrieved for the items using the IOPCSyncIO::Read method. The VQT for each item is mapped to the DataValue structure as shown in Figure A.13. Please note that only Read from Device is supported for this version. The “maxAge” parameter is ignored.
For version 3, the COM UA Wrapper uses the IOPCItemIO::Read to retrieve the data. The VQT for each item is mapped to the DataValue structure as shown in Figure A.13. The Read supports both the Read from Device and Cache and uses the “maxAge” parameter.
If there are errors for the items in the Read from the DA server, then these are mapped to the StatusCode of the DataValue in the COM UA Wrapper.
The mapping of the OPC COM DA Read Errors code to OPC UA Status code (in the COM UA Wrapper) is shown in Table A.62:
Table A.62 – OPC DA Read error mapping
OPC DA Error ID |
OPC UA Status Code |
OPC_E_BADRIGHTS |
Bad_NotReadable |
E_OUTOFMEMORY |
Bad_OutOfMemory |
OPC_E_INVALIDHANDLE |
Bad_NodeIdUnknown |
OPC_E_UNKNOWNITEMID |
Bad_NodeIdUnknown |
E_INVALIDITEMID |
Bad_NodeIdInvalid |
E_INVALID_PID |
Bad_AttributeIdInvalid |
E_ACCESSDENIED |
Bad_OutOfService |
Others |
Bad_UnexpectedError |