ChimeraTK-ControlSystemAdapter-OPCUAAdapter 04.00.05
Loading...
Searching...
No Matches
csa_opcua_adapter_example2.cpp
Go to the documentation of this file.
1/*
2 * This file is part of ChimeraTKs ControlSystem-OPC-UA-Adapter.
3 *
4 * ChimeraTKs ControlSystem-OPC-UA-Adapter is free software: you can
5 * redistribute it and/or modify it under the terms of the Lesser GNU
6 * General Public License as published by the Free Software Foundation,
7 * either version 3 of the License, or (at your option) any later version.
8 *
9 * ChimeraTKs ControlSystem-OPC-UA-Adapter is distributed in the hope
10 * that it will be useful, but WITHOUT ANY WARRANTY; without even the
11 * implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12 * See the Lesser GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License
15 * along with Foobar. If not, see https://www.gnu.org/licenses/lgpl.html
16 *
17 * Copyright (c) 2016 Chris Iatrou <Chris_Paul.Iatrou@tu-dresden.de>
18 * Copyright (c) 2016 Julian Rahm <Julian.Rahm@tu-dresden.de>
19 * Copyright (c) 2018-2019 Andreas Ebner <Andreas.Ebner@iosb.fraunhofer.de>
20 */
21
22extern "C" {
23#include "csa_namespace.h"
24
25#include <signal.h>
26#include <unistd.h>
27}
28
29#include <ChimeraTK/ControlSystemAdapter/ApplicationBase.h>
30#include <ChimeraTK/ControlSystemAdapter/DevicePVManager.h>
31
32#include <errno.h>
33#include <stdlib.h>
34
35#include <chrono>
36#include <iostream>
37
38using namespace std;
39using namespace ChimeraTK;
40
41struct MyApp : public ApplicationBase {
42 MyApp() : ApplicationBase("opcuaAdapter") {}
44
45 void run() { cout << "Application run..." << endl; }
46
47 void shutdown() {
48 ApplicationBase::shutdown();
49 cout << "Application shutdown..." << endl;
50 }
51
52 void initialise() {
53 boost::shared_ptr<DevicePVManager> devManager = this->_processVariableManager;
54
55 // Generate dummy data
56 ProcessArray<int8_t>::SharedPtr intA8dev = this->_processVariableManager->createProcessArray<int8_t>(
57 SynchronizationDirection::controlSystemToDevice, "int8Scalar", 1, "Iatrou^2/Rahm");
58 ProcessArray<uint8_t>::SharedPtr intAu8dev = this->_processVariableManager->createProcessArray<uint8_t>(
59 SynchronizationDirection::controlSystemToDevice, "uint8Scalar", 1, "mIatrou*Rahm");
60 ProcessArray<int16_t>::SharedPtr intA16dev = this->_processVariableManager->createProcessArray<int16_t>(
61 SynchronizationDirection::controlSystemToDevice, "int16Scalar", 1);
62 ProcessArray<uint16_t>::SharedPtr intAu16dev = this->_processVariableManager->createProcessArray<uint16_t>(
63 SynchronizationDirection::controlSystemToDevice, "uint16Scalar", 1);
64 ProcessArray<int32_t>::SharedPtr intA32dev = this->_processVariableManager->createProcessArray<int32_t>(
65 SynchronizationDirection::controlSystemToDevice, "int32Scalar", 1);
66 ProcessArray<uint32_t>::SharedPtr intAu32dev = this->_processVariableManager->createProcessArray<uint32_t>(
67 SynchronizationDirection::controlSystemToDevice, "uint32Scalar", 1);
68 ProcessArray<float>::SharedPtr intAfdev = this->_processVariableManager->createProcessArray<float>(
69 SynchronizationDirection::controlSystemToDevice, "floatScalar", 1);
70 ProcessArray<double>::SharedPtr intAddev = this->_processVariableManager->createProcessArray<double>(
71 SynchronizationDirection::controlSystemToDevice, "doubleScalar", 1);
72 ProcessArray<string>::SharedPtr stringAddev =
73 devManager->createProcessArray<string>(SynchronizationDirection::controlSystemToDevice, "stringScalar", 1);
74 ProcessArray<string>::SharedPtr stringAddev2 = devManager->createProcessArray<string>(
75 SynchronizationDirection::deviceToControlSystem, "1/FOLDER/defaultSep/stringScalar", 1, "my unit", "desc");
76
77 ProcessArray<int8_t>::SharedPtr intB15A8dev =
78 this->_processVariableManager->createProcessArray<int8_t>(SynchronizationDirection::controlSystemToDevice,
79 "int8Array_s15", 15, "mIatrou*Rahm", "Die Einheit ist essentiel und sollte SI Einheit sein...");
80 ProcessArray<uint8_t>::SharedPtr intB10Au8dev = this->_processVariableManager->createProcessArray<uint8_t>(
81 SynchronizationDirection::controlSystemToDevice, "uint8Array_s10", 10, "1/Rahm");
82 ProcessArray<int16_t>::SharedPtr intB15A16dev = this->_processVariableManager->createProcessArray<int16_t>(
83 SynchronizationDirection::controlSystemToDevice, "int16Array_s15", 15, "Iatrou", "Beschreibung eines Iatrous");
84 ProcessArray<uint16_t>::SharedPtr intB10Au16dev = this->_processVariableManager->createProcessArray<uint16_t>(
85 SynchronizationDirection::controlSystemToDevice, "uint16Array_s10", 10);
86 ProcessArray<int32_t>::SharedPtr intB15A32dev = this->_processVariableManager->createProcessArray<int32_t>(
87 SynchronizationDirection::controlSystemToDevice, "int32Array_s15", 15);
88 ProcessArray<uint32_t>::SharedPtr intB10Au32dev = this->_processVariableManager->createProcessArray<uint32_t>(
89 SynchronizationDirection::controlSystemToDevice, "uint32Array_s10", 10);
90 ProcessArray<double>::SharedPtr intB15Afdev = this->_processVariableManager->createProcessArray<double>(
91 SynchronizationDirection::controlSystemToDevice, "doubleArray_s15", 15);
92 ProcessArray<float>::SharedPtr intB10Addev = this->_processVariableManager->createProcessArray<float>(
93 SynchronizationDirection::controlSystemToDevice, "floatArray_s10", 10);
94
95 // example mapping variable
96 ProcessArray<int8_t>::SharedPtr intB15A8devMap = devManager->createProcessArray<int8_t>(
97 SynchronizationDirection::controlSystemToDevice, "Mein/Name_ist#int8Array_s15", 15, "Iatrou^2/Rahm");
98 ProcessArray<int8_t>::SharedPtr intB15A8devMap2 = devManager->createProcessArray<int8_t>(
99 SynchronizationDirection::controlSystemToDevice, "Mein/Name_ist#int8Array", 15, "Iatrou^2/Rahm");
100 ProcessArray<uint8_t>::SharedPtr intB10Au8devMap1 =
101 devManager->createProcessArray<uint8_t>(SynchronizationDirection::controlSystemToDevice,
102 "/Dein/Name//ist/uint8Array_s10", 10, "Iatrou^2/Rahm", "Beschreibung");
103 ProcessArray<uint8_t>::SharedPtr intB10Au8devMap2 = devManager->createProcessArray<uint8_t>(
104 SynchronizationDirection::controlSystemToDevice, "Unser/Name/ist_uint8Array_s10", 10);
105 ProcessArray<uint32_t>::SharedPtr intAu32devMap = devManager->createProcessArray<uint32_t>(
106 SynchronizationDirection::controlSystemToDevice, "Ist/Name/dieser/uint32Scalar", 1);
107 ProcessArray<int32_t>::SharedPtr intA32devMap = devManager->createProcessArray<int32_t>(
108 SynchronizationDirection::controlSystemToDevice, "Ist/Name/dieser/int32Scalar", 1);
109 ProcessArray<double>::SharedPtr doubledevMap = devManager->createProcessArray<double>(
110 SynchronizationDirection::controlSystemToDevice, "Ist/Name/dieser/doubleScalar", 1);
111 }
112};
113
boost::shared_ptr< ChimeraTK::DevicePVManager > devManager