... | ... | @@ -1233,18 +1233,18 @@ The CII MAL Pub/Sub API utilizes OPC/UA Data Access Reads and Writes, as well OP |
|
|
|
|
|
- If the subscriber CII URI contains multiple nodes (i.e. the XML ICD type contains multiple attributes) then the Subscriber launches a thread to perform periodic polling of data from the OPC/UA server. The rate is based on the properties passed in creating the subscriber. e.g.
|
|
|
|
|
|
```java
|
|
|
try {
|
|
|
subscriber = factory.getSubscriber\<T>(opcua_uri, ::elt::mal::ps::qos::QoS::DEFAULT,
|
|
|
```cpp
|
|
|
try{
|
|
|
subscriber = factory.getSubscriber<T>(opcua_uri, ::elt::mal::ps::qos::QoS::DEFAULT,
|
|
|
{ {"opc.ps.outstandingPublishRequests","5"},
|
|
|
{"opc.asyncLoopExecutionPeriodMs","50"},
|
|
|
{"opc.asyncCallSubmitTimeoutMs","1000"},
|
|
|
{"opc.ps.pollingPeriodMs","20000"},
|
|
|
{"opc.asyncCallRetryPeriodMs","250"} } );
|
|
|
|
|
|
{{"opc.ps.outstandingPublishRequests","5"},{"opc.asyncLoopExecutionPeriodMs","50"},
|
|
|
{"opc.asyncCallSubmitTimeoutMs","1000"},
|
|
|
{"opc.ps.pollingPeriodMs","20000"},
|
|
|
{"opc.asyncCallRetryPeriodMs","250"}});
|
|
|
}
|
|
|
catch(...) {
|
|
|
throw;
|
|
|
}
|
|
|
} catch(...) {
|
|
|
throw;
|
|
|
}
|
|
|
```
|
|
|
|
|
|
|
... | ... | @@ -1265,18 +1265,18 @@ namespace mal { |
|
|
namespace rr {
|
|
|
namespace da {
|
|
|
|
|
|
class DataAccess : public ::elt::mal::rr::RrEntity {
|
|
|
public:
|
|
|
[...]
|
|
|
template <typename T>
|
|
|
void read(::elt::mal::ps::DataEntity\<T>& value) {
|
|
|
readUnsafe(&value);
|
|
|
}
|
|
|
|
|
|
template <typename T>
|
|
|
void write(const ::elt::mal::ps::DataEntity\<T>& value) {
|
|
|
writeUnsafe(&value);
|
|
|
}
|
|
|
class DataAccess : public ::elt::mal::rr::RrEntity {
|
|
|
public:
|
|
|
[...]
|
|
|
template <typename T>
|
|
|
void read(::elt::mal::ps::DataEntity<T>& value) {
|
|
|
readUnsafe(&value);
|
|
|
}
|
|
|
|
|
|
template <typename T>
|
|
|
void write(const ::elt::mal::ps::DataEntity<T>& value) {
|
|
|
writeUnsafe(&value);
|
|
|
}
|
|
|
```
|
|
|
|
|
|
|
... | ... | |