Device Plugins

All device plugins use the CoDaBix® Device Model. Each device provided is registered and managed by the CoDaBix® Device Manager.

Such devices can be:

  • Physical devices like:
    • SIMATIC S7 PLCs
    • Allen Bradley PLCs
    • Mitsubishi PLCs
    • Raspberry Pi's accessible via TCP/IP
    • Arduino / Netduino projects accessible e.g. via USB
  • Logical devices like:
    • Files in the local or remote file system, e.g. a connection to a remote drive - which could be a file in a cloud drive or a file accessible via (S)FTP - needs to be established and maintained as long as the data is accessing the file and is administrated by the system.
    • Services like local services accessible via Shared Memory or Remote Services, accessible via RPC, REST, DCOM or any other kinds of protocols such as SOAP. Such a local / remote service can be also a OPC Server (see OPC UA Client Device Plugin).

Such devices can be:

  • Physical devices like:
    • SIMATIC S7 PLCs (see S7 Device Plugin)
    • Allen Bradley PLCs
    • Mitsubishi PLCs
    • Raspberry Pi's accessible via TCP/IP
    • Arduino / Netduino projects accessible e.g. via USB
  • Logical devices like:
    • Files in the local or remote file system, e.g. a connection to a remote drive - which could be a file in a cloud drive or a file accessible via (S)FTP - needs to be established and maintained as long as the data is accessing the file and is administrated by the system.
    • Services like local services accessible via Shared Memory or Remote Services, accessible via RPC, REST, DCOM or any other kinds of protocols such as SOAP. Such a local / remote service can be also a OPC Server (see OPC UA Client Device Plugin).
The CoDaBix® Device Model extends the basic CoDaBix® Entity Model with entities typical for devices. Hereby a device entity defines the subordinated entities for control, settings, the status of the plugin and the various channels via which the plugin connects the supported devices to CoDaBix®.
Each device plugin delivered with CoDaBix® can be configured in the CoDaBix® Host application. If a plugin has configuration parameters, those can be modified in the according device entity.

Using CoDaBix®

The entire configuration of all device plugins can be found under the Node path /System/Devices. This root Node of the device plugins allows the complete configuration of the device plugins, provided that one of the actively used device plugins supplies its own device entities for the configuration.

Using an Application

Location

In case a plugin provides an application for configuration it can be located in the CoDaBix® installation directory (selected during installation). The following list illustrates the hierarchy:

  • <CodabixInstallDir>
    • <PluginConfigurationAppName>

For example:

  • C:\Program Files\TIS\CoDaBix\
    • CoDaBix.S7DevicePlugin.Configurator.exe

For example:

  • C:\Program Files\Traeger\CoDaBix\
    • CoDaBix.S7DevicePlugin.Configurator.exe

Using a Configuration File

Location

In case a plugin provides a configuration file it can be located in a plugin specific directory in the “plugins” directory in the CoDaBix® data directory (configured in CoDaBix®). The following list illustrates the hierarchy:

  • <CodabixDataDir>
    • plugins\
      • <PluginConfigurationFileName>

For example:

  • D:\Data\TIS\CoDaBix.Data\
    • CoDaBix.S7DevicePlugin.Settings.xml
    • [CoDaBix.S7DevicePlugin.Settings.xsd]

For example:

  • D:\Data\Traeger\CoDaBix.Data\
    • CoDaBix.S7DevicePlugin.Settings.xml
    • [CoDaBix.S7DevicePlugin.Settings.xsd]

Structure

Each CoDaBix® plugin defines the root of its element tree by the PluginSettings element as described in Plugin Configuration - Using a File. A device plugin expands its XML tree using the Device element, while the further defined child elements depend on the implementation of the plugin and its own custom elements and attributes.

Device Element
The Device element serves as the container for the Channels element. This element configures the whole type of device represented by the device plugin, while the further child elements depend on the implementation of the plugin and its own custom elements and attributes.

The Device element can look like the following:

<Device>
  <Channels />
</Device>

Channels Element
The Channels element serves as the container for one or more Channel elements. This element maintains all channels associated with the type and provided by the device plugin, while the further child elements depend on the implementation of the plugin and its own custom elements and attributes.

The Channels element can look like the following:

<Channels>
  <!-- 0-n Channel elements -->
</Channels>

Channel Element
The Channel element serves as the container for the Settings element, while the further child elements depend on the implementation of the plugin and its own custom elements and attributes.

Each Channel element provides the following list of attributes:

Mandatory Type Purpose
Identifier no GUID The generic unique identifier of the channel.
Name yes String The unique name (within the Channels element) of the channel.

The Channel element can look like the following:

<Channel Name="Channel No. 1">
  <Settings />
</Channel>

Settings Element
The Settings element defines the attributes to set up the channel. This attribute configures the channel connection parameters, while the further child elements depend on the implementation of the plugin and its own custom elements and attributes.

The Settings element can look like the following:

<Settings />

Example Configuration File

DevicePlugin.Settings.xml
<?xml version="1.0" encoding="utf-8" ?>
<PluginSettings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Device>
    <Channels>
      <Channel>
        <Settings />
        <!-- Plugin specific child elements -->
      </Channel>
    </Channels>
  </Device>
  <!-- Plugin specific child elements  -->
</PluginSettings>