-
Notifications
You must be signed in to change notification settings - Fork 4
/
opcua_mapfile.xsd
332 lines (325 loc) · 14.8 KB
/
opcua_mapfile.xsd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="https://github.com/ChimeraTK/ControlSystemAdapter-OPC-UA-Adapter"
xmlns:csa="https://github.com/ChimeraTK/ControlSystemAdapter-OPC-UA-Adapter"
elementFormDefault="unqualified"
attributeFormDefault="unqualified">
<xsd:annotation>
<xsd:documentation xml:lang="en">
Map file description schema for ChimeraTK ControlSystemAdapter-OPC-UA-Adapter.
</xsd:documentation>
</xsd:annotation>
<xsd:element name="uamapping" type="csa:UAMappingType"/>
<xsd:complexType name="UAMappingType">
<xsd:sequence>
<xsd:element name="config" type="csa:configType" minOccurs="0" maxOccurs="1">
<xsd:annotation>
<xsd:documentation xml:lang="en">
General settings realted to the mapping and the OPC UA server.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="process_variable" type="csa:pvType" minOccurs="0" maxOccurs="unbounded">
<xsd:annotation>
<xsd:documentation xml:lang="en">
Used to edit OPC UA nodes and to copy or link OPC UA nodes to new OPC UA nodes.
If new nodes are created they will still be connected to the same ChimeraTK process variable
as the source OPC UA node.
This can be used to do different things:
- change unit/description of an existing OPC UA node
- create a link to an existing OPC UA node with different browse name
Attention: If a link is used and the unit/description is changed this will affect
the source node too!
- create a new node (different browse name and node ID) connected to an existing OPC UA node
This allows to change name/unit/description independent of the source node
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="additional_variable" type="csa:additionalPVType" minOccurs="0" maxOccurs="unbounded">
<xsd:annotation>
<xsd:documentation xml:lang="en">
Used to add additional OPC UA nodes, that have a fixed value and are not linked to a ChimeraTK process variable.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="folder" type="csa:folderType" minOccurs="0" maxOccurs="unbounded">
<xsd:annotation>
<xsd:documentation xml:lang="en">
Used to create, copy or link folders.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="configType">
<xsd:sequence>
<xsd:element name="server" type="csa:serverType" minOccurs="0" maxOccurs="1">
<xsd:annotation>
<xsd:documentation xml:lang="en">
Change server properties, else defaults are used.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="security" type="csa:securityType" minOccurs="0" maxOccurs="1">
<xsd:annotation>
<xsd:documentation xml:lang="en">
Configure OPC UA server endpoints. If this element is not found in the
maping file only one unencrypted end point is created.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="login" type="csa:loginType" minOccurs="0" maxOccurs="1">
<xsd:annotation>
<xsd:documentation xml:lang="en">
If clients should be requiered to login with username and password, use
this element to set this data.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="process_variable_hierarchy" type="csa:hierarchyType" minOccurs="0" maxOccurs="1">
<xsd:annotation>
<xsd:documentation xml:lang="en">
Change the behaviour of how process varibale names and the hierarchy included in the
process variable name are represented in OPC UA.
The default is that process variable names are unrooled at "/" characters.
Folders are created for all string before the last delimiter. The last string
is used as OPC UA node browse name. However the OPC UA node ID is a string node ID
that includes the complete register path corresponding to the CHimeraTK process variable.
E.g. from a variable "A/B/myvar" the folders "A" and "B" are created and the OPC UA node "myvar"
is put into folder B. The Browse name is "myvar" and the Node ID is "/A/B/myvar".
This default behaviour corresponds to:
<unroll pathSep="/"> True </unroll>
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="mapping_exceptions" type="csa:exceptionType" minOccurs="0" maxOccurs="1">
<xsd:annotation>
<xsd:documentation xml:lang="en">
Set the bahaviour in case error occur while parsing this mapping file.
If True Exceptions occuring in the mapping process are thrown.
Else error messages are send to std::cerr and the mapping block caused exception is ignored.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="rootFolder" type="csa:nonEmptyString">
<xsd:annotation>
<xsd:documentation>
Set the name of the root node of the OPC UA server.
If not set the application name of the ChimeraTK application is used.
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="description" type="csa:nonEmptyString"/>
</xsd:complexType>
<xsd:complexType name="serverType">
<xsd:attribute name="applicationName" type="csa:nonEmptyString">
<xsd:annotation>
<xsd:documentation>
Set the name application name.
If not set the default is the ChimeraTK application name.
It is used e.g. as the Configuration Name of the end point.
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="port" type="xsd:positiveInteger">
<xsd:annotation>
<xsd:documentation>
Set the name OPC UA server port.
If not set the default 16664 is used.
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
<xsd:complexType name="securityType">
<xsd:attribute name="unsecure" type="xsd:boolean">
<xsd:annotation>
<xsd:documentation xml:lang="en">
If true also an unencrypted end point is created. Else only encrypted
endpoints are created.
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="certificate" type="csa:nonEmptyString">
<xsd:annotation>
<xsd:documentation xml:lang="en">
The server certificate given as *.der file. The certificate has
to have the v3 Subject Alternative Name field URI. It has to be set to
"urn:HOSTNAME:ChimeraTK:APPNAME", where HOST name is the name of the HOST where
the server is supposed to run. The APPNAME is the application name set in the
mapping file (applicationName attribute of the server node).
The certificate test is not excact, which means the certificate URI has to
include the above given string, but it can include aditional information.
E.g. "urn:HOSTNAME:ChimeraTK:APPNAME:PORT" will also be verified successfully.
Self-signed server certificates can be created using the python script
provided in the tools/certs directory. Use -u option to specify the
URI as pointed out before.
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="privatekey" type="csa:nonEmptyString">
<xsd:annotation>
<xsd:documentation xml:lang="en">
The servers private key given as *.der file.
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="trustlist" type="csa:nonEmptyString">
<xsd:annotation>
<xsd:documentation xml:lang="en">
Directory where to find trusted certificates, e.g. if no certification
authority (CA) is used.
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="blocklist" type="csa:nonEmptyString">
<xsd:annotation>
<xsd:documentation xml:lang="en">
Directory where to find revocation lists of CAs.
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="issuerlist" type="csa:nonEmptyString">
<xsd:annotation>
<xsd:documentation xml:lang="en">
Directory where to issuer certificates given as *.der files.
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
<xsd:complexType name="loginType">
<xsd:attribute name="username" type="csa:nonEmptyString" use="required"/>
<xsd:attribute name="password" type="csa:nonEmptyString" use="required"/>
</xsd:complexType>
<xsd:complexType name="hierarchyType">
<xsd:sequence>
<xsd:element name="unroll" type="csa:unrollType" minOccurs="1" maxOccurs="unbounded">
<xsd:annotation>
<xsd:documentation xml:lang="en">
Change the default path seperator.
Example:
a) To change the seperator to "_" one has to use:
<unroll pathSep="/"> False </unroll>
<unroll pathSep="_"> True </unroll>
b) To use two seperators:
<unroll pathSep="/"> True </unroll>
<unroll pathSep="_"> True </unroll>
</xsd:documentation>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="unrollType">
<xsd:simpleContent>
<xsd:extension base="xsd:boolean">
<xsd:attribute name="pathSep" type="csa:nonEmptyString"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="exceptionType">
<xsd:simpleContent>
<xsd:extension base="xsd:boolean"/>
</xsd:simpleContent>
</xsd:complexType>
<xsd:complexType name="pvType">
<xsd:all>
<xsd:element name="destination" type="csa:nonEmptyString" minOccurs="0" maxOccurs="1">
<xsd:annotation>
<xsd:documentation xml:lang="en">
Give target browse path of the OPC UA node.
If not used the root node of the OPC UA server is used.
The delimiter "/" should be used.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="name" type="csa:nonEmptyString" minOccurs="0" maxOccurs="1">
<xsd:annotation>
<xsd:documentation xml:lang="en">
Give the name of the new OPC UA node.
If not used the name of the original process variable is used.
This could be the case if only a destination is given, where to copy the original process variable.
The name should not contain the delimiter "/".
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="unit" type="csa:nonEmptyString" minOccurs="0" maxOccurs="1"/>
<xsd:element name="description" type="csa:nonEmptyString" minOccurs="0" maxOccurs="1"/>
</xsd:all>
<xsd:attribute name="sourceName" type="csa:nonEmptyString" use="required">
<xsd:annotation>
<xsd:documentation xml:lang="en">
The node ID of the node to be used as reference.
The delimiter used here is "/".
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="copy" type="xsd:boolean">
<xsd:annotation>
<xsd:documentation xml:lang="en">
If copy=flase a link is created to the source process variable.
Else a new OPC UA node is created - it is still connected to the same ChimeraTK process variable.
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
<xsd:complexType name="additionalPVType">
<xsd:all>
<xsd:element name="destination" type="csa:nonEmptyString" minOccurs="0" maxOccurs="1"/>
<xsd:element name="name" type="csa:nonEmptyString" minOccurs="0" maxOccurs="1"/>
<xsd:element name="value" type="xsd:string" minOccurs="0" maxOccurs="1"/>
<xsd:element name="description" type="csa:nonEmptyString" minOccurs="0" maxOccurs="1"/>
</xsd:all>
</xsd:complexType>
<xsd:complexType name="folderType">
<xsd:all>
<xsd:element name="name" type="csa:nonEmptyString" minOccurs="1" maxOccurs="1">
<xsd:annotation>
<xsd:documentation xml:lang="en">
Allows to change the folder name.
If not used the description of the original folder is used.
In case a folder is created the default description is empty.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="destination" type="csa:nonEmptyString" minOccurs="0" maxOccurs="1">
<xsd:annotation>
<xsd:documentation xml:lang="en">
Folder destination. The destination can include a hierachy, e.g. A/B. Folders in the target hierachy that do not exist are created on the fly.
The path seperator for the destination tag is "/".
If not set the default destination is the root node of the OPC UA server.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
<xsd:element name="description" type="csa:nonEmptyString" minOccurs="0" maxOccurs="1">
<xsd:annotation>
<xsd:documentation xml:lang="en">
Allows to change the folder description.
If not used the description of the original folder is used.
In case a folder is created the default description is empty.
</xsd:documentation>
</xsd:annotation>
</xsd:element>
</xsd:all>
<xsd:attribute name="sourceName" type="csa:nonEmptyString">
<xsd:annotation>
<xsd:documentation xml:lang="en">
If moving or linking exsisting folders give the path to the existing folder.
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
<xsd:attribute name="copy" type="xsd:boolean">
<xsd:annotation>
<xsd:documentation xml:lang="en">
If using exsisting folders decide if the directory should be only linked to the source
folder or if it should be copied.
By default copying is enabled.
</xsd:documentation>
</xsd:annotation>
</xsd:attribute>
</xsd:complexType>
<xsd:simpleType name="nonEmptyString">
<xsd:restriction base='xsd:string'>
<xsd:minLength value='1'/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>