|
[[_TOC_]]
|
|
[[_TOC_]]
|
|
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------
|
|
### How-to post-install CII services
|
|
### How-to post-install CII services
|
|
|
|
|
|
Most CII services (not: telemetry and alarms) come as part of the DevEnv installation, however some post-installation set-up is needed before they can be used.
|
|
Most CII services (not: telemetry and alarms) come as part of the DevEnv installation, however some post-installation set-up is needed before they can be used.
|
... | @@ -20,6 +21,8 @@ yum -y update elt-ciisrv-postinstall |
... | @@ -20,6 +21,8 @@ yum -y update elt-ciisrv-postinstall |
|
|
|
|
|
On DevEnv 3.5 inside ESO, and DevEnv 3.6+, there is nothing to do.
|
|
On DevEnv 3.5 inside ESO, and DevEnv 3.6+, there is nothing to do.
|
|
|
|
|
|
|
|
**Postinstall*
|
|
|
|
|
|
Afterwards, execute this command (as root):
|
|
Afterwards, execute this command (as root):
|
|
```
|
|
```
|
|
# /elt/ciisrv/postinstall/cii-postinstall <choose a role>
|
|
# /elt/ciisrv/postinstall/cii-postinstall <choose a role>
|
... | @@ -31,6 +34,7 @@ For more details and examples, see the [cii-postinstall user manual](https://elt |
... | @@ -31,6 +34,7 @@ For more details and examples, see the [cii-postinstall user manual](https://elt |
|
After postinstall, you will want to start the CII services on your host (unless you have assigned the "groupclient" role to the host, which means you will use the CII Services running on another host).
|
|
After postinstall, you will want to start the CII services on your host (unless you have assigned the "groupclient" role to the host, which means you will use the CII Services running on another host).
|
|
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------
|
|
### How-to start/stop CII services
|
|
### How-to start/stop CII services
|
|
|
|
|
|
The cii-services utility lets you start/stop/monitor the CII services. For some operations, it requires root-privileges -> it will show a password prompt when needed.
|
|
The cii-services utility lets you start/stop/monitor the CII services. For some operations, it requires root-privileges -> it will show a password prompt when needed.
|
... | @@ -58,7 +62,7 @@ To learn about the options, run the command without arguments. |
... | @@ -58,7 +62,7 @@ To learn about the options, run the command without arguments. |
|
For more details and examples, see the [cii-services user manual](https://eltjenkins.hq.eso.org/job/CII/job/Docs-Build-Master-Next/lastBuild/artifact/userManual/build/ciiman/html/docs/services.html)
|
|
For more details and examples, see the [cii-services user manual](https://eltjenkins.hq.eso.org/job/CII/job/Docs-Build-Master-Next/lastBuild/artifact/userManual/build/ciiman/html/docs/services.html)
|
|
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------
|
|
### How-to get CII Demo apps
|
|
### How-to get CII Demo apps
|
|
|
|
|
|
CII has demo apps that you can download as source, modify, and build yourself. They demonstrate the use of the CII services.
|
|
CII has demo apps that you can download as source, modify, and build yourself. They demonstrate the use of the CII services.
|
... | @@ -83,7 +87,7 @@ After this, you find the list of available demo apps in the (generated) README f |
... | @@ -83,7 +87,7 @@ After this, you find the list of available demo apps in the (generated) README f |
|
Most demo apps require CII Services be running on your host or on another host => Check that the related CII Services (e.g. config service for a a config demo app) are accessible: see [How-to start/stop CII Services](#how-to-start-stop-cii-services)
|
|
Most demo apps require CII Services be running on your host or on another host => Check that the related CII Services (e.g. config service for a a config demo app) are accessible: see [How-to start/stop CII Services](#how-to-start-stop-cii-services)
|
|
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------
|
|
### Failure to build ZPB from ICD \[ICD waf build\]
|
|
### Failure to build ZPB from ICD \[ICD waf build\]
|
|
|
|
|
|
**Problem**
|
|
**Problem**
|
... | @@ -117,7 +121,7 @@ In the first case, the code that gets generated for the member looks to the comp |
... | @@ -117,7 +121,7 @@ In the first case, the code that gets generated for the member looks to the comp |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------
|
|
### No cpp/python from ICD \[ICD waf build\]
|
|
### No cpp/python from ICD \[ICD waf build\]
|
|
|
|
|
|
**Problem**
|
|
**Problem**
|
... | @@ -143,6 +147,8 @@ declare_project(name='mytests', |
... | @@ -143,6 +147,8 @@ declare_project(name='mytests', |
|
recurse='myconfig mylsvsim icd tests')
|
|
recurse='myconfig mylsvsim icd tests')
|
|
```
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------
|
|
### Mock OLDB for unit tests \[cpp\]
|
|
### Mock OLDB for unit tests \[cpp\]
|
|
|
|
|
|
**Question**
|
|
**Question**
|
... | @@ -187,6 +193,8 @@ NOTE: For python, a MR was created to add the feature: <https://gitlab.eso.org/c |
... | @@ -187,6 +193,8 @@ NOTE: For python, a MR was created to add the feature: <https://gitlab.eso.org/c |
|
|
|
|
|
Example in <https://gitlab.eso.org/ahoffsta/cii-srv/-/blob/oldb-in-memory-missing-python-binding/oldb-client/python/oldb/test/oldbInMemoryTest.py>
|
|
Example in <https://gitlab.eso.org/ahoffsta/cii-srv/-/blob/oldb-in-memory-missing-python-binding/oldb-client/python/oldb/test/oldbInMemoryTest.py>
|
|
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------
|
|
### Catching API Exceptions \[Python\]
|
|
### Catching API Exceptions \[Python\]
|
|
|
|
|
|
**Problem**
|
|
**Problem**
|
... | @@ -267,6 +275,8 @@ Unfortunately, in the backtraces you will always see the original name instead o |
... | @@ -267,6 +275,8 @@ Unfortunately, in the backtraces you will always see the original name instead o |
|
|
|
|
|
This question was originally asked in [ECII-422](https://jira.eso.org/browse/ECII-422).
|
|
This question was originally asked in [ECII-422](https://jira.eso.org/browse/ECII-422).
|
|
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------
|
|
### access_key empty (DevEnv 3.2.0) \[OLDB\]
|
|
### access_key empty (DevEnv 3.2.0) \[OLDB\]
|
|
|
|
|
|
**Problem**
|
|
**Problem**
|
... | @@ -310,6 +320,10 @@ The CII post-install procedure is able to hotfix the settings (ECII397). |
... | @@ -310,6 +320,10 @@ The CII post-install procedure is able to hotfix the settings (ECII397). |
|
|
|
|
|
The problem will be fixed in DevEnv 3.4.
|
|
The problem will be fixed in DevEnv 3.4.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------
|
|
### Datapoint already exists \[OLDB\]
|
|
### Datapoint already exists \[OLDB\]
|
|
|
|
|
|
**Problem**
|
|
**Problem**
|
... | @@ -401,10 +415,23 @@ Update: As of [ECII-303](https://jira.eso.org/browse/ECII-303), this should no l |
... | @@ -401,10 +415,23 @@ Update: As of [ECII-303](https://jira.eso.org/browse/ECII-303), this should no l |
|
|
|
|
|
**Solution 3**
|
|
**Solution 3**
|
|
|
|
|
|
If none of the above helped, another possibility is to clean-up the metadata.
|
|
If none of the above helped, another possibility is to clean up the metadata.
|
|
|
|
|
|
This is a potentially very invasive operation. Please contact us for instructions.
|
|
Warning: This is an invasive operation. It deletes all datapoints in the OLDB.
|
|
|
|
|
|
|
|
If you feel confident, and you are on a single-developer host ("role_ownserver"), use the below commands. If you have doubts, or you are on a multi-user host, please contact us.
|
|
|
|
```
|
|
|
|
# Clean up the OLDB databases (on a role_ownserver host)
|
|
|
|
config-initEs.sh
|
|
|
|
oldb-initES
|
|
|
|
redis-cli flushall
|
|
|
|
cii-services stop config
|
|
|
|
cii-services start config
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------
|
|
### Req/Rep Connection Listeners \[MAL Python\]
|
|
### Req/Rep Connection Listeners \[MAL Python\]
|
|
|
|
|
|
**Problem**
|
|
**Problem**
|
... | @@ -475,6 +502,9 @@ Remember to delete (assign None), to this object when closing the connection to |
... | @@ -475,6 +502,9 @@ Remember to delete (assign None), to this object when closing the connection to |
|
|
|
|
|
*From \<<https://jira.eso.org/browse/ECII-212>\>*
|
|
*From \<<https://jira.eso.org/browse/ECII-212>\>*
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------
|
|
### Command Line Tools and Python snippets \[OLDB\]
|
|
### Command Line Tools and Python snippets \[OLDB\]
|
|
|
|
|
|
**Problem**
|
|
**Problem**
|
... | @@ -553,6 +583,9 @@ Type "help", "copyright", "credits" or "license" for more information. |
... | @@ -553,6 +583,9 @@ Type "help", "copyright", "credits" or "license" for more information. |
|
'my text'
|
|
'my text'
|
|
```
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------
|
|
### Latency on Pub/Sub \[MAL ZMQ\]
|
|
### Latency on Pub/Sub \[MAL ZMQ\]
|
|
|
|
|
|
**Problem**
|
|
**Problem**
|
... | @@ -588,6 +621,9 @@ The issue has been first reported in [ECII-159](https://jira.eso.org/browse/ECII |
... | @@ -588,6 +621,9 @@ The issue has been first reported in [ECII-159](https://jira.eso.org/browse/ECII |
|
|
|
|
|
The problem lies in the ZMQ send queues. Default size is 1000 and with 144MB per message (in this case) this means 144GB. Limiting this to 1 (for a test) a publisher can handle 20 subscribers (tested) without any problems. The solution is to reconfigure the send-queue size appropriately.
|
|
The problem lies in the ZMQ send queues. Default size is 1000 and with 144MB per message (in this case) this means 144GB. Limiting this to 1 (for a test) a publisher can handle 20 subscribers (tested) without any problems. The solution is to reconfigure the send-queue size appropriately.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------
|
|
### Choose middlewares to build \[MAL ICD\]
|
|
### Choose middlewares to build \[MAL ICD\]
|
|
|
|
|
|
**Problem**
|
|
**Problem**
|
... | @@ -615,6 +651,8 @@ The available options are: |
... | @@ -615,6 +651,8 @@ The available options are: |
|
- zpb_disabled = if True, disable ZEROMQ middleware generation
|
|
- zpb_disabled = if True, disable ZEROMQ middleware generation
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------
|
|
### Sending an array of unions \[MAL cpp\]
|
|
### Sending an array of unions \[MAL cpp\]
|
|
|
|
|
|
**Problem**
|
|
**Problem**
|
... | @@ -725,6 +763,9 @@ Your code does not work since you do not use union instance provided by the pare |
... | @@ -725,6 +763,9 @@ Your code does not work since you do not use union instance provided by the pare |
|
|
|
|
|
This issue was first described in [ECII-154](https://jira.eso.org/browse/ECII-154)
|
|
This issue was first described in [ECII-154](https://jira.eso.org/browse/ECII-154)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------
|
|
### config not found on remote db \[Conf\]
|
|
### config not found on remote db \[Conf\]
|
|
|
|
|
|
**Problem**
|
|
**Problem**
|
... | @@ -772,6 +813,9 @@ the config service has consequently tried to load the config from the remote con |
... | @@ -772,6 +813,9 @@ the config service has consequently tried to load the config from the remote con |
|
|
|
|
|
To that end, the error message is misleading, and should be improved (ticket [ECII-208](https://jira.eso.org/browse/ECII-208)).
|
|
To that end, the error message is misleading, and should be improved (ticket [ECII-208](https://jira.eso.org/browse/ECII-208)).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------
|
|
### Failed to send request, send queue full \[CII MAL\]
|
|
### Failed to send request, send queue full \[CII MAL\]
|
|
|
|
|
|
**Problem**
|
|
**Problem**
|
... | @@ -788,6 +832,10 @@ throw `new MalException("Failed to send request, send queue full");` |
... | @@ -788,6 +832,10 @@ throw `new MalException("Failed to send request, send queue full");` |
|
|
|
|
|
Probably you have called close() on the CiiConfigClient instance somewhere, maybe also implicitly during a try-with-resource block.
|
|
Probably you have called close() on the CiiConfigClient instance somewhere, maybe also implicitly during a try-with-resource block.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------
|
|
### Getting More Logs \[MAL\]
|
|
### Getting More Logs \[MAL\]
|
|
|
|
|
|
**Problem**
|
|
**Problem**
|
... | @@ -985,6 +1033,10 @@ Loggers for **mal-opcua** |
... | @@ -985,6 +1033,10 @@ Loggers for **mal-opcua** |
|
|
|
|
|
- malOpcuaClientEventLoop
|
|
- malOpcuaClientEventLoop
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------
|
|
### Change Log Levels at Run-time
|
|
### Change Log Levels at Run-time
|
|
|
|
|
|
**Problem**
|
|
**Problem**
|
... | @@ -1016,7 +1068,11 @@ org.apache.logging.log4j.Logger logger, final org.apache.logging.log4j.Level lev |
... | @@ -1016,7 +1068,11 @@ org.apache.logging.log4j.Logger logger, final org.apache.logging.log4j.Level lev |
|
```
|
|
```
|
|
elt.log.CiiLogManager.set_log_level(name_or_logger: Union\[str, logging.Logger\], level: logging.Level)
|
|
elt.log.CiiLogManager.set_log_level(name_or_logger: Union\[str, logging.Logger\], level: logging.Level)
|
|
```
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------
|
|
### PYBIND errors \[ICD waf build\]
|
|
### PYBIND errors \[ICD waf build\]
|
|
|
|
|
|
**Problem**
|
|
**Problem**
|
... | @@ -1054,6 +1110,9 @@ icd/src/protobenchmark.xml |
... | @@ -1054,6 +1110,9 @@ icd/src/protobenchmark.xml |
|
|
|
|
|
In general, due to the many code generation steps taking place, your freedom in ICD file naming is limited.
|
|
In general, due to the many code generation steps taking place, your freedom in ICD file naming is limited.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------
|
|
### multiple XMLs found \[ICD waf build\]
|
|
### multiple XMLs found \[ICD waf build\]
|
|
|
|
|
|
**Problem**
|
|
**Problem**
|
... | @@ -1081,6 +1140,10 @@ The code generator for malicd_topics fails when the ICD file name starts with lo |
... | @@ -1081,6 +1140,10 @@ The code generator for malicd_topics fails when the ICD file name starts with lo |
|
|
|
|
|
For more information, see also: [KB: PYBIND errors \[ICD waf build\]](onenote:#KB%20PYBIND%20errors%20[ICD%20waf%20build]§ion-id={F524F9BE-F51D-4A01-9976-93359FCC4966}&page-id={0FEE4FB9-C58B-4E8A-A276-2EC4367CFB30}&end&base-path=https://europeansouthernobservatory.sharepoint.com/sites/ELT_Control/SiteAssets/ELT_Control%20Notebook/Documentation/ELT%20Control%20KnowledgeBase.one)
|
|
For more information, see also: [KB: PYBIND errors \[ICD waf build\]](onenote:#KB%20PYBIND%20errors%20[ICD%20waf%20build]§ion-id={F524F9BE-F51D-4A01-9976-93359FCC4966}&page-id={0FEE4FB9-C58B-4E8A-A276-2EC4367CFB30}&end&base-path=https://europeansouthernobservatory.sharepoint.com/sites/ELT_Control/SiteAssets/ELT_Control%20Notebook/Documentation/ELT%20Control%20KnowledgeBase.one)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------
|
|
### g++: internal compiler error: Killed \[waf build\]
|
|
### g++: internal compiler error: Killed \[waf build\]
|
|
|
|
|
|
**Problem**
|
|
**Problem**
|
... | @@ -1161,6 +1224,10 @@ By default, ECM VMs come with 4 GB, but you want |
... | @@ -1161,6 +1224,10 @@ By default, ECM VMs come with 4 GB, but you want |
|
|
|
|
|
- 12 (if you run databases like elasticsearch on your host).
|
|
- 12 (if you run databases like elasticsearch on your host).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------
|
|
### More Frames expected \[CII MAL ZMQ\]
|
|
### More Frames expected \[CII MAL ZMQ\]
|
|
|
|
|
|
**Problem**
|
|
**Problem**
|
... | @@ -1230,6 +1297,10 @@ and |
... | @@ -1230,6 +1297,10 @@ and |
|
zpb.ps://134.171.2.220:57110/test2
|
|
zpb.ps://134.171.2.220:57110/test2
|
|
```
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------
|
|
### Address in use \[CII MAL ZMQ\]
|
|
### Address in use \[CII MAL ZMQ\]
|
|
|
|
|
|
**Problem**
|
|
**Problem**
|
... | @@ -1276,6 +1347,10 @@ The above code is trying, on host eltcii33, to publish with an endpoint eltcii28 |
... | @@ -1276,6 +1347,10 @@ The above code is trying, on host eltcii33, to publish with an endpoint eltcii28 |
|
|
|
|
|
On eltcii33, the endpoint must be eltcii33.
|
|
On eltcii33, the endpoint must be eltcii33.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------
|
|
### Scheme not supported \[CII MAL\]
|
|
### Scheme not supported \[CII MAL\]
|
|
|
|
|
|
**Problem**
|
|
**Problem**
|
... | @@ -1296,6 +1371,10 @@ The middleware is supported in fact, but failed to load. |
... | @@ -1296,6 +1371,10 @@ The middleware is supported in fact, but failed to load. |
|
|
|
|
|
- E.g. in DDS, you are using a Qos profile xml file which has some illegal syntax inside.
|
|
- E.g. in DDS, you are using a Qos profile xml file which has some illegal syntax inside.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------
|
|
### Choosing a NIC \[CII MAL DDS\]
|
|
### Choosing a NIC \[CII MAL DDS\]
|
|
|
|
|
|
**Problem**
|
|
**Problem**
|
... | @@ -1320,6 +1399,10 @@ Therefore, this boils down to configuring DDS. |
... | @@ -1320,6 +1399,10 @@ Therefore, this boils down to configuring DDS. |
|
|
|
|
|
[KB: Configuring MAL-DDS](onenote:#KB%20Configuring%20MAL-DDS§ion-id={35F80A9B-72FF-4F78-8793-5C85A09EA1FD}&page-id={3DBEC40D-B2DB-4226-917F-23EAE6A4B01C}&end&base-path=https://europeansouthernobservatory.sharepoint.com/sites/CCS/SiteAssets/CCS%20Notebook/General.one)
|
|
[KB: Configuring MAL-DDS](onenote:#KB%20Configuring%20MAL-DDS§ion-id={35F80A9B-72FF-4F78-8793-5C85A09EA1FD}&page-id={3DBEC40D-B2DB-4226-917F-23EAE6A4B01C}&end&base-path=https://europeansouthernobservatory.sharepoint.com/sites/CCS/SiteAssets/CCS%20Notebook/General.one)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------
|
|
### Configuring DDS \[CII MAL DDS\]
|
|
### Configuring DDS \[CII MAL DDS\]
|
|
|
|
|
|
**Problem**
|
|
**Problem**
|
... | @@ -1364,6 +1447,10 @@ Example (C++): |
... | @@ -1364,6 +1447,10 @@ Example (C++): |
|
export NDDS_QOS_PROFILES=\<path of XML file>
|
|
export NDDS_QOS_PROFILES=\<path of XML file>
|
|
```
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------
|
|
### Variable Tracking exceeded \[CII MAL\]
|
|
### Variable Tracking exceeded \[CII MAL\]
|
|
|
|
|
|
**Problem**
|
|
**Problem**
|
... | @@ -1403,13 +1490,21 @@ def configure(cnf): |
... | @@ -1403,13 +1490,21 @@ def configure(cnf): |
|
|
|
|
|
cnf.env.append_value('CXXFLAGS', \['-fno-var-tracking-assignments'\])
|
|
cnf.env.append_value('CXXFLAGS', \['-fno-var-tracking-assignments'\])
|
|
```
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------
|
|
### Multithreading in Java
|
|
### Multithreading in Java
|
|
|
|
|
|
Look at this document:
|
|
Look at this document:
|
|
|
|
|
|
- [Java JMM Visibility](Documents/Java-JMMVisibility.pdf)
|
|
- [Java JMM Visibility](Documents/Java-JMMVisibility.pdf)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------
|
|
### Summary of OPC/UA MAL in C++
|
|
### Summary of OPC/UA MAL in C++
|
|
|
|
|
|
This article covers integration of OPC/UA in CII MAL specifically for OPC/UA Data Access and Subscription profiles. OPC/UA method invocation is also supported in CII MAL but is not described in this article, likewise details of the Python (and Java) support are not provided. Only C++ is considered here.
|
|
This article covers integration of OPC/UA in CII MAL specifically for OPC/UA Data Access and Subscription profiles. OPC/UA method invocation is also supported in CII MAL but is not described in this article, likewise details of the Python (and Java) support are not provided. Only C++ is considered here.
|
... | @@ -1420,6 +1515,10 @@ The XML ICD definition of types in CII is used to map sets of data points togeth |
... | @@ -1420,6 +1515,10 @@ The XML ICD definition of types in CII is used to map sets of data points togeth |
|
|
|
|
|
Each attribute in the defined type is connected to a corresponding data point in the OPC/UA data space via a URI. Thus the CII URI for a complex type will contain specific addresses of multiple nodes in the OPC/UA data space.
|
|
Each attribute in the defined type is connected to a corresponding data point in the OPC/UA data space via a URI. Thus the CII URI for a complex type will contain specific addresses of multiple nodes in the OPC/UA data space.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------
|
|
#### Pub/Sub API for OPC/UA Clients:
|
|
#### Pub/Sub API for OPC/UA Clients:
|
|
|
|
|
|
The CII MAL Pub/Sub API utilizes OPC/UA Data Access Reads and Writes, as well OPC/UA subscription. A Publisher will directly trigger an OPC DA write, while a Subscriber will work in one of two ways, depending on the type associated with the subscriber:
|
|
The CII MAL Pub/Sub API utilizes OPC/UA Data Access Reads and Writes, as well OPC/UA subscription. A Publisher will directly trigger an OPC DA write, while a Subscriber will work in one of two ways, depending on the type associated with the subscriber:
|
... | @@ -1452,6 +1551,9 @@ try { |
... | @@ -1452,6 +1551,9 @@ try { |
|
}
|
|
}
|
|
```
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--------------------------------------------------------------------------
|
|
#### Request/Reply API for OPC/UA Clients:
|
|
#### Request/Reply API for OPC/UA Clients:
|
|
|
|
|
|
As OPC/UA Data Access read and write essentially follow a synchronous request/reply pattern, CII MAL also provides this interface for OPC/UA clients.
|
|
As OPC/UA Data Access read and write essentially follow a synchronous request/reply pattern, CII MAL also provides this interface for OPC/UA clients.
|
... | | ... | |