The H1 Device Plugin allows reading and writing values from SIMATIC S5 PLC devices using the SINEC H1 protocol based on ISO/MAC (Industrial Ethernet).
The whole H1 Device Plugin configuration is located in the node path /System/Devices/H1 Device
.
An H1 Device Channel represents the connection to a H1 PLC.
The NIC that should be used for the network communication.
The MAC address of the remote device.
The SSAP (Source SAP) and DSAP (Destination SAP) values that should be used when reading data. A maximum of 8 characters will be used.
The SSAP (Source SAP) and DSAP (Destination SAP) values that should be used when writing data. A maximum of 8 characters will be used.
Specifies which party initiates the connection:
No
: The local machine initiates the connection.Yes
: The remote device initiates the connection.
To add a new H1 Channel, please follow these steps:
H1 Device/Channels
, or right-click on the H1 Device/Channels
node and select Add Channel
.Add Channel
dialog, specify the settings for the H1 connection.
Within the node Variables
you can create datapoint nodes which can be read and written from/to the PLC.
The Value Type
property must be set to the corresponding operand type. Currently the following types are supported:
CoDaBix Type | Operand |
---|---|
Boolean or Boolean-Array | X |
Byte /SByte or Byte-Array /SByte-Array | L (left=high byte) or R (right=low byte) |
Int16 /UInt16 or Int16-Array /UInt16-Array | W |
Int32 /UInt32 or Int32-Array /UInt32-Array | D |
Float or Float-Array | D |
TimeSpan or TimeSpan-Array | W |
Note: 32-bit values (Float
, Int32
) will be read/written using two separate (16-bit) words. This can mean that if the value changes in the PLC while reading it, you might get an inconsistent value when one word has the new value but the other one has the old value.
Note: Bit values (Boolean
) will be read/written as (16-bit) word. When writing such a boolean value, the word will be read from the PLC, then the bit(s) will be changed, and then the word will be written back to the PLC. This can mean that if at the same time some other party changes another bit in that word, that change might get lost.
The Path
property of the node is used to specify the address and optionally the type and/or (for arrays) the length of the data. Currently, only Data Block
(DB
) is supported as data area.
DB<DB number>.D<Operand> <Offset> DB<DB number>.D<Operand> <Offset>, <Length> DB<DB number>.D<Operand> <Offset>, <Type>[<Length>] DB<DB number>.DX <Offset>.<Bit>, <Length>
Placeholder | Description |
---|---|
<DB number> | The number of the data block. |
<Operand> | One of the operands as specified in the above table. |
<Offset> | The word (16-bit) offset from where the data should be accessed. |
<Bit> | When using a Boolean /Boolean-Array value you can specify the bit number in the word from 0 to 15. |
<Length> | The length of the array. |
<Type> | When using integer types, you can optionally specify a BCD type (Binary Coded Decimal) to store the values using BCD encoding. You can specify one of the following values: • BCD : The value is BCD-encoded. |
Value Type | Path | Meaning |
---|---|---|
Int16 | DB1000.DW 20 | In Data Block 1000, access the word at offset 20. |
Int16-Array | DB1000.DW 30, 10 | In Data Block 1000, start at offset 30 and read/write 10 words (exclusive end offset: 40). |
Int32 | DB1000.DD 40, BCD[4] | In Data Block 1000, start at offset 40 and read/write four 32-bit values (exclusive end offset: 48) and decode/encode the values as BCD. |
Boolean-Array | DB1000.DX 50.12, 24 | In Data Block 1000, access the bits from offset 50.12 to (exclusive) offset 52.4 (the bits are read/written as three 16-bit words). |
Byte-Array | DB1000.DR 60, 2 | In Data Block 1000, access the bytes from offset 60 (low byte) and 61 (high byte) |
The H1 Device Plugin provides different status information depending on the layer to inspect. In general the channel-based diagnostic information is produced by the connection status of the channel to the PLC. The variable-based diagnostic information is produced during the read/write access of the different variables.
To monitor and diagnose the status of a H1 Channel, take a look at the following image:
The image above depicts the H1 Channel's Control Panel which displays all status relevant information. The control panel will automatically update its status information when a new status is available.
Status Circle
To monitor and diagnose the status of the different variables, take a look at the variable's Status
property displayed in CoDaBix. Use the button “Read actual Value” to read the values from the PLC and store the result into the variables.
All channel related status information is also logged into the channel-specific log file stored in the [LoggingFolder]
. Each log file is named in the naming scheme H1 Device.<ChannelName>.log
.
The content of such a log file can look as follows:
... 2018-04-11 11:32:37.0 +2: [Error] Error (Severity=High): Code=[-1], Text=[The operation has timed-out.], Details=[] ...
Like every device plugin the H1 Device Plugin extends the basic CoDaBix Device Model.
The plugin's device type H1Device
also defines the H1DeviceChannel
and therefore extends the basic CodabixDevice
and CodabixDeviceChannel
entities. While the H1Device
just represents a concretization of the CodabixDevice
, the H1DeviceChannel
extends the CodabixDeviceChannel
with the H1 Variable Entities.
Each channel is handled by a channel worker which establishes a network connection to the PLC.
By default, the worker does not read any values. When a client or plugin requests a synchronous read of the channel's variables in CoDaBix (e.g. using the CoDaBix Web Configuration's function “Read actual value”), the channel worker reads them from the underlying PLC and then writes them into the corresponding CoDaBix Nodes.
Similarly, when a client or plugin writes values into the channel's variables, the channel worker will write those values to the underlying PLC.
To have an H1 variable being read steadily, you can edit the Node in the CoDaBix Web Configuration and set “History Options” to Yes
(which will create an internal subscription), or you can use e.g. a OPC UA Client connected to the OPC UA Server plugin and create a subscription for the H1 variable Nodes. In these cases, the channel worker reads the variables from the PLC at a regular interval and, if the value of one of the variables has changed, writes the new value into the corresponding CoDaBix Node.
Content | Path | Usage |
---|---|---|
AssemblyFolder | <CodabixInstallDir>/plugins/H1DevicePlugin/ | Contains the plugin's assembly file. |
ConfigFolder | <CodabixProjectDir>/plugins/H1DevicePlugin/ | Contains the plugin's configuration file. |
LoggingFolder | <CodabixProjectDir>/log/ | Contains the plugin's log files. |
Type | Path | Usage |
---|---|---|
Assembly | [AssemblyFolder]/CoDaBix.H1DevicePlugin.dll | The plugin's assembly file. |
Logging | [LoggingFolder]/H1 Device.<ChannelName>.log | The log file. |
Date | 2020-01-07 |
---|---|
Version | 1.0 |
Name | H1 Device Plugin |
---|---|
Node | /System/Devices/H1 Device |
Version | 1.0.0 |
Name | CoDaBix.H1DevicePlugin.dll |
---|---|
Date | 2020-01-07 |
Version | 1.0.0.0 |