Nordex Plugin OPCXML with Config Files
Plugin: nordex-opcxml-ardexa
Purpose
This plugin will read from the Nordex OPC XML DA Server via SOAP. It can be used to browse, discover and log data to a device, and then sent it to the Ardexa cloud. This plugin uses configuration files, which can be generated automatically from a master mapping, to control the names of variables, tables and sources.
Configuration of the Ardexa Edge Device
Ensure you have read a copy of the manufacturer's operating and safety manual. Please review the manual for safety instructions. This plugin takes about 5 seconds per turbine/grid. You MUST ensure that the frequency allows enough time to read all the data. For example, trying to read 7 turbines every 30s WILL FAIL
Ardexa uses the Nordex OPC DA XML server to read live and historical data. The XML Server uses a SOAP-based web server to provide access to the data. It is available from a default TCP Port 8080
on the IP address for which the XML Server is located. Ardexa needs to know the IP address of the OPC XML DA server for the plant. Once the Ardexa edge device is installed on the plant's network, verify that it can "ping" the XML Server using the following command in the REMOTE SHELL (replace the IP address with the IP address of your XML Server):
Also, check that the TCP Port for XML Server is open. You can do this using the REMOTE SHELL, using the nmap command as follows. You can also use curl to check you get a valid XML response.
At the Wind park, Nordex may set up the Ardexa devices in the following way. Use the ifconfig
or ip a
command to check the interfaces.
LAN A: Internet with an IP address allocated by DHCP
LAN B: Direct connection to the OPC server, via a static IP address provided by the plant technicians
The static address needs to be applied to the interface LAN B
above. Please check the correct interface since it is possible that the interfaces may appear to be swapped. The OPC server address is almost always located at IP address 192.168.1.2/29
. To check which interface is being used for Internet access, run the route
command. It will respond with something like...
The Iface
column in the line with Destination
default tells you which interface is used for Internet access. Please don't forget to send to Ardexa:
Clear photographs of the installation
The IP address of the OPC DA XML Server
The IP address for the Ardexa edge device (to talk to the OPC Server)
The quantity and model numbers of all wind turbines at the park
Usage
Nordex wind farm data can be analysed online and control values can be transmitted to the wind farm without having to use the Nordex SCADA Remote software. This Ardexa plugin will read the Nordex data in real time, and send it to the Ardexa cloud. It is recommended that only 1 scenario be created, with a collection frequency of 30 seconds. Note again: This plugin takes about 5s per turbine/grid. You MUST ensure that the frequency allows enough time to read all the data. For example, trying to read 7 turbines every 30s WILL FAIL. Running a discover
will show the data that is to be collected to the tables. The plugin will read 3 different types of dataset as follows: analog
, counter
, timer
.
Important Note on Missing Variables
Sometimes a message may appear when doing a discover that details missing variables. This will appear as follows...
This means that there are variables which were read, but which Ardexa has no documentation. These variables will not be collected. Ardexa must be given the latest documentation on how to read these variables. Sometimes, Nordex may include or define these variables for specific plants. In these cases, it is important that the owner or operator of the plant supply Ardexa with the updated documentation for the plant, so these variables can be read.
Data Discovery
The plugin can be used to discover data in a few ways: 2. By browsing a OPCXML location to enumerate possible paths. 3. By reading data at a known path 4. By reading data from locations specified by a mapping file. The following sections detail how to undertake data discovery.
Discover Browse and Read
In order to list the available opcxml locations, the browse command can be run with through the machine plugins interface by using an empty file called browse
in the mapping file field and specifying a remote path using the MACHINE PLUGINS interface with the discover data
command. Alternatively this can be run by using the discover browse
command in the remote shell. And likewise with read
, these command server as a way of discovering data on an endpoint when setting up data collection.
To run via the RUN DISCOVERY interface do the following:
specify an IP address
select an output config file, this can be one of ``read
,
browse,
per_source`.(optional) specify a port, defaults to 8080.
(optional) specify a base path, defaults to
nordex/services/nordex_opc
.(optional) specify a remote path to browse or read, defaults to
/
, (discover only).(optional) details flag, specifies the level of detail, (discover browse only).
For example running a command such as nordex_opcxml_ardexa discover browse '{IP_ADDRESS}' "/"
or nordex_opcxml_ardexa discover data '{IP_ADDRESS}' '/opt/ardexa/config/nordex-opcxml-ardexa/browse' /
should give a result similar to:
and if the details flag is provided:
Data can also be browsed using the mapping_file
argument through the MACHINE PLUGINS interface, specifying a mapping file or per_source
file (described below). To read the data at a location, the command is similar, instead using the read
keyword inplace of browse. For example both commands nordex_opcxml_ardexa discover read '{IP_ADDRESS}' "01CWE12345/analog/ANA0"
and nordex_opcxml_ardexa discover data '{IP_ADDRESS}' /opt/ardexa/config/nordex-opcxml-ardexa/read "01CWE12345/analog/ANA0"
should produce a result similar to:
Discover Data Using Custom Mapping File
The primary purpose of a configuration file driven plugin is to provide as much flexibility as possible when defining what to capture and what to call each field. This plugin is able to read a mapping file to undertaken one or more of the following tasks:
Only collecting required variables and ignoring anything else.
Renaming all or selected variables to something else.
Scaling variables.
Changing units.
Sending data to customised tables and sources in the Ardexa cloud.
The mapping file is a comma separated file containing 7 items as follows:
Ardexa Table. This is the name of the Ardexa table, where the data will be copied.
Ardexa Source. This is the Ardexa source name given to the data.
Ardexa Variable Name. This is the name given to the variable as it will appear in the Ardexa cloud.
Item Name. This specifies the path where the data will be read form on the remote.
Type. The Ardexa variable type. Can be one of decimal, int, keyword or date
Units. The units if the variable. May be empty.
Scale. The scale of the variable. May be empty
An example of the mapping file looks like:
Note: Anything starting with #
is a comment and can be ignored.
Discovering Data Using Custom "per Source" Files
Instead of using a single mapping file (as discussed above), a separate file for each "source" can be used in conjunction with the file system to produce the desired table/source names. If the "mapping file" argument ends with the (exact) name per_source (an empty file with this exact name, path does not matter), then the plugin will recursively look for files in the directory /opt/ardexa/config/nordex-opcxml-ardexa/per-source. The file structure is very similar to that used in /opt/ardexa/logs, where the first directory is the Ardexa Table, and any subsequent directories, plus the file name (minus the extension) will form the Ardexa Source Name. For example, take the following file structure:
This file structure will produce two sources (01CWE12345, 01WEA11111) that will both log data to the Ardexa table called test_table. The contents of the file is the same as the single mapping file. Note that when using a forward slash (/) in the sourcename this will create directories for the corresponding config files, this is allowed. The command for remote shell and MACHINE PLUGINS interface is equivalent. Use nordex_opcxml_ardexa discover data '{IP_ADDRESS}' '/opt/ardexa/config/nordex-opcxml-ardexa/per_source'
. PER_SOURCE_FILE argument must ends with the name per_source (an empty file with this exact name, path does not matter), then the plugin will recursively look for files in the directory /opt/ardexa/config/nordex-opcxml-ardexa. This should produce an output similar to:
"Per Source" Mapping Generator
As discussed above, mapping files allow as much flexibility as possible. There is a very high probability that most of the time, the same OEM input field will need to be to mapped to the same output field name (such as an IEC name), for all the turbines at a site. To assist with this repetitive process, the plugin includes a generate sub-command that will accept a template CSV file (sometimes referred to as a 'master mapping'), which describes the general mapping and applies it to any turbines that can be automatically discovered. The template file for a "per source" generate command will look a "mapping" file discussed above, except it will use ${turbine}
as a placeholder for the device name in the item name and source name fields. Here is a short example:
The equivalent REMOTE SHELL command to generate the "per source" mappings files is: nordex_opcxml_ardexa generate {IP_ADDRESS} {CONFIG_FILE} {TABLE NAME}
. The MAPPING_FILE is the per source mapping file. The "TABLE NAME" is the name of the Ardexa table, where the events will be sent.
For example: nordex_opcxml_ardexa generate '123.123.123.123' nordex-opcxml-test.csv test_per_source
, running a generate command will create the directory structure shown above. The data can then be discovered and displayed.
Log
Logging data to the cloud can be enacted via the Ardexa Front End. The equivalent REMOTE SHELL command is: nordex_opcxml_ardexa log {IP_ADDRESS} {PER_SOURCE_FILE or MAPPING FILE}. If the MAPPING_FILE argument ends with the name per_source (an empty file with this exact name, path does not matter), then the plugin will recursively look for files in the directory /opt/ardexa/config/nordex-opcxml-ardexa/per-source. Otherwise, if a MAPPING FILE is used, it will use that log data.
Last updated
Was this helpful?