In Figure 25an example of an instance of the IOLinkPortType is shown, using only the mandatory InstanceDeclarations, in order to give an overview on the ObjectType. The Object does not have Properties, its Parameters are connected via the ParameterSet, Methods via the MethodSet and both organized via different FunctionalGroups (Capabilities, Statistics, SIOProcessData, Configuration (containing another FunctionalGroup ConfiguredDevice), and Information). Note that SIOProcessData only points to optional Parameters not used in this example.

image029.png

Figure 25– Example instance of IOLinkPortType (only mandatory InstanceDeclarations)

The IOLinkPortType provides information of one port of an IO-Link Master and is formally defined in Table 8.

Table 31– IOLinkPortType Definition

Attribute

Value

BrowseName

IOLinkPortType

IsAbstract

False

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

Subtype of TopologyElementType defined in OPC 10000-100.

HasComponent

Object

2:ParameterSet

BaseObjectType

Mandatory

HasComponent

Object

2:MethodSet

BaseObjectType

Mandatory

HasProperty

Variable

DeviceConfigurationDisabled

Boolean

PropertyType

Mandatory

HasComponent

Object

Capabilities

FunctionalGroupType

Mandatory

HasComponent

Object

Information

FunctionalGroupType

Mandatory

HasComponent

Object

Statistics

FunctionalGroupType

Mandatory

HasComponent

Object

Configuration

FunctionalGroupType

Mandatory

HasComponent

Object

SIOProcessData

FunctionalGroupType

Mandatory

HasComponent

Object

Device

IOLinkDeviceType

Optional

HasComponent

Object

Alarms

FolderType

Optional

GeneratesEvent

ObjectType

IOLinkPortEventType

Defined in 9.5.

GeneratesEvent

ObjectType

IOLinkPortAlarmType

Defined in 9.10

The IOLinkPortTypeObjectType is a concrete type and can be used directly. Vendors may create subtypes of the IOLinkPortType to add vendor-specific extensions.

The ObjectType inherits the following InstanceDeclarations directly or indirectly from the TopologyElementType defined in OPC 10000-100.

  • The optional Object ParameterSetis used to reference all Parameters and shall be provided. Therefore, the ObjectType overrides the Object and changes its ModellingRule to Mandatory.
  • The optional Object MethodSetis used to reference all Methods and shall be provided. Therefore, the ObjectType overrides the Object and changes its ModellingRule to Mandatory.
  • The optional Object Identificationis not used in this ObjectType.
  • The Object <GroupIdentifier> has the ModellingRule OptionalPlaceholder and is intended to group the Parameters. It is already used in this ObjectType by adding various FunctionalGroupType Objects. Vendors may add vendor-specific Objects to group additional Parameters.
  • The optional Object Lockcan be supported by a server to provide locking capabilities (see OPC 10000-100 for details). This is intended to prevent different clients and users to configure an IO-Link Master at the same time. Locking the Port also locks the connected IO-Link Device.

The ObjectType defines additional InstanceDeclarations:

  • The mandatory Variable DeviceConfigurationDisabledindicates whether configuration changes of the connected IO-Link Device (Device Object) are allowed via OPC UA. If set to “True”, nearly all configuration settings become read-only and cannot be changed via OPC UA anymore. The Variable setting is vendor-specific, including whether it can be changed via OPC UA. For example, if a fieldbus is currently active on the IO-Link Master, a server might set this Variable to “True” on all its ports.

That includes in detail following rules:

  • For the IO-Link Device connected to the IO-Link Port (Device Object) all Parameters become read-only.
  • For the IO-Link Device connected to the IO-Link Port (Device Object) all Methods defined in the IOLinkDeviceType except ReadISDU become not executable.
  • For the IO-Link Device connected to the IO-Link Port (Device Object) all Methods created based on the IODD become not executable unless the Methods only trigger the reading of ISDUs.

The Method ResetStatistics on the IO-Link Port and ResetStatisticsOnAllPorts on the IO-Link Master shall still be executable.

There is no direct relation between the DeviceConfigurationDisabled Variable and the Lock Object on the IOLinkDeviceType. The Lock Object prevents different OPC UA Clients to configure the IO-Link Device at the same time whereas the DeviceConfigurationDisabled Variable indicates that the IO-Link Master is in a state that does not allow the IO-Link Device to be configured by any OPC UA Client. When the DeviceConfigurationDisabled Variable is set to “True” Servers may prevent the usage of the Lock Object for all Clients.

  • The mandatory Object Capabilitiesshall reference the Parameters defined in Table 32. Servers may add vendor-specific Parameters to the Object.

Table 32– References of Capabilities Object

References

BrowseName

Comment

Organizes

PortClass

Variable defined in Table 38.

Organizes

MaxPowerSupply

Variable defined in Table 38.

Organizes

Pin2Support

Variable defined in Table 38.

Table 33– References of Configuration Object

References

BrowseName

Comment

Organizes

CycleTime

Variable defined in Table 38.

Organizes

ValidationAndBackup

Variable defined in Table 38.

Organizes

PortMode

Variable defined in Table 38.

Organizes

Pin2Configuration

Variable defined in Table 38.

Organizes

UseIODD

Variable defined in Table 38.

Organizes

ConfiguredDevice

Object of type FunctionalGroupType with ModellingRule Mandatory, its references are defined in Table 34.

Organizes

UpdateConfiguration

Method defined in Table 43.

Table 34– References of ConfiguredDevice Object

References

BrowseName

Comment

Organizes

DeviceID

Variable defined in Table 38.

Organizes

VendorID

Variable defined in Table 38.

Table 35– References of Information Object

References

BrowseName

Comment

Organizes

Baudrate

Variable defined in Table 38.

Organizes

ActualCycleTime

Variable defined in Table 38.

Organizes

Quality

Variable defined in Table 38.

Organizes

Status

Variable defined in Table 38.

Table 36– References of SIOProcessData Object

References

BrowseName

Comment

Organizes

Pin2ProcessData

Variable defined in Table 38.

Organizes

Pin4ProcessData

Variable defined in Table 38.

Table 37– References of Statistics Object

References

BrowseName

Comment

Organizes

DateOfLastStatisticsReset

Variable defined in Table 38.

Organizes

NumberOfAborts

Variable defined in Table 38.

Organizes

NumberOfCycles

Variable defined in Table 38.

Organizes

NumberOfDeviceHasBeenExchanged

Variable defined in Table 38.

Organizes

NumberOfRetries

Variable defined in Table 38.

Organizes

ResetStatistics

Method defined in Table 43.

  • The optional AlarmsObject is used to group all alarms of the instance, in case the server supports representing the alarms as Objects in the AddressSpace. If the server does not support this, the Object shall not be provided.

In Table 38, the Parameters of the ObjectType, referenced via the ParameterSet Object, are defined.

Table 38– ParameterSet of IOLinkPortType

References

Node Class

BrowseName

DataType

TypeDefinition

Modelling Rule

The following Parameters are also referenced by the Capabilities Object

HasComponent

Variable

PortClass

Byte

MultiStateDiscreteType

Mandatory

HasComponent

Variable

MaxPowerSupply

Double

BaseDataVariableType

Mandatory

HasComponent

Variable

Pin2Support

Boolean

BaseDataVariableType

Mandatory

The following Parameters are also referenced by the Configuration Object

HasComponent

Variable

CycleTime

Duration

BaseDataVariableType

Mandatory

HasComponent

Variable

ValidationAndBackup

Byte

MultiStateDiscreteType

Mandatory

HasComponent

Variable

PortMode

Byte

MultiStateDiscreteType

Mandatory

HasComponent

Variable

Pin2Configuration

Byte

MultiStateDiscreteType

Mandatory

HasComponent

Variable

UseIODD

Boolean

BaseDataVariableType

Mandatory

The following Parameters are also referenced by the ConfiguredDevice Object, which is part of the Configuration Object

HasComponent

Variable

DeviceID

UInt32

BaseDataVariableType

Mandatory

HasComponent

Variable

VendorID

UInt16

BaseDataVariableType

Mandatory

The following Parameters are also referenced by the Information Object

HasComponent

Variable

Baudrate

Byte

MultiStateDiscreteType

Mandatory

HasComponent

Variable

ActualCycleTime

Duration

BaseDataVariableType

Mandatory

HasComponent

Variable

Quality

Byte

OptionSetType

Mandatory

HasComponent

Variable

Status

Byte

MultiStateDiscreteType

Mandatory

The following Parameters are also referenced by the SIOProcessData Object

HasComponent

Variable

Pin2ProcessData

BaseDataType

BaseDataVariableType

Optional

HasComponent

Variable

Pin4ProcessData

Boolean

BaseDataVariableType

Optional

The following Parameters are also referenced by the Statistics Object

HasComponent

Variable

DateOfLastStatisticsReset

DateTime

BaseDataVariableType

Optional

HasComponent

Variable

NumberOfAborts

UInt32

BaseDataVariableType

Optional

HasComponent

Variable

NumberOfCycles

UInt32

BaseDataVariableType

Optional

HasComponent

Variable

NumberOfDevice-HasBeenExchanged

UInt32

BaseDataVariableType

Optional

HasComponent

Variable

NumberOfRetries

UInt32

BaseDataVariableType

Optional

The mandatory, read-only Variable PortClassshall be mapped to the corresponding entry in PortTypes of the MasterIdent structure defined in the SMI (see IO-Link Addendum). The Unsigned8 is mapped directly to the DataType Byte. The Variable is of VariableType MultiStateDiscreteType defined in OPC 10000-8. The mandatory Property EnumStrings of the VariableType, which is an array of LocalizedText, shall contain the following content, defined in Table 39.

Table 39– Defined elements of EnumStrings array of PortClass Variable

Element number (starting with 0)

Message (for locale “en”)

0

CLASS A

1

“” (= Empty String)

2

CLASS B

Servers are only allowed to add additional entries into the EnumStrings array according to the IO-Link Addendumor updates to the IO-Link Specification, also updating element number 1 once it is defined. Servers may provide translations of the texts in different locales.

The mandatory, read-only Variable MaxPowerSupplyshall provide the maximum amount of power provided on the port. The Variable shall provide the EngineeringUnits Property defined in OPC 10000-3, having the value set to {namespaceUri = “http://www.opcfoundation.org/UA/units/un/cefact”; unitId = 4279632; displayName = {“en”,"A"}; description = {“en”, "ampere"}} (for ampere). The Property shall be read-only and have the ModellingRule Mandatory, so it is reflected on all instances. Note that the IOLinkMasterType also provides a MaxPowerSupply and potentially not all ports can consume the MaxPowerSupply at the same time.

The mandatory, read-only Variable Pin2Supportindicates whether the port does support Pin2 at all. “False” means it is not supported, “True” means it can be supported. If it is supported, the Parameter Pin2Configuration can be used to configure how to use it and in case it is used to read or write values the Parameter Pin2ProcessData can be used to access the value.

All Variables provided directly under the Configuration Object are read-only. To change the configuration, the UpdateConfiguration Method defined in Table 43needs to be executed. The Method call ensures that all configuration data is provided at once by the client in a consistent state.

The mandatory, read-only Variable CycleTimeshall be mapped to the PortCycleTime of the PortConfigList structure defined in the SMI (see IO-Link Addendum). The data type mapping is defined in 12.2.7.2, having “0” as special meaning for “as fast as possible”.

The mandatory, read-only Variable ValidationAndBackupshall be mapped to “Validation&Backup” of the PortConfigList structure defined in the SMI (see IO-Link Addendum). The Unsigned8 is mapped directly to the Byte DataType. The Variable is of VariableType MultiStateDiscreteType defined in OPC 10000-8. The mandatory Property EnumStrings of the VariableType, which is an array of LocalizedText, shall contain for locale “en” exactly the text as defined in the SMI. Servers are not allowed to add additional entries into the EnumStrings array, only based on updates of the IO-Link Specification. Servers may provide translations of the texts in different locales.

The mandatory, read-only Variable PortModeshall be mapped to PortMode of the PortConfigList structure defined in the SMI (see IO-Link Addendum). The Unsigned8 is mapped directly to the DataType Byte. The Variable is of VariableType MultiStateDiscreteType defined in OPC 10000-8. The mandatory Property EnumStrings of the VariableType, which is an array of LocalizedText, shall contain the following content, defined in Table 40.

Table 40– Defined elements of EnumStrings array of PortMode Variable

Element number (starting with 0)

Message (for locale “en”)

0

DEACTIVATED

1

IOL_MANUAL

2

IOL_AUTOSTART

3

DI_C/Q (Pin4)

4

DO_C/Q (Pin4)

Servers are allowed to add additional entries into the EnumStrings array. Servers may provide translations of the texts in different locales.

The mandatory, read-only Variable Pin2Configurationshall be mapped to “I/Q behaviour” of the PortConfigList structure defined in the SMI (see IO-Link Addendum). The Unsigned8 is mapped directly to the Byte DataType. The Variable is of VariableType MultiStateDiscreteType defined in OPC 10000-8. The mandatory Property EnumStrings of the VariableType, which is an array of LocalizedText, shall contain for locale “en” exactly the text as defined in the SMI. Servers are not allowed to add additional entries into the EnumStrings array, only based on updates of the IO-Link Specification. Servers may provide translations of the texts in different locales.

The mandatory, read-only Variable UseIODD defines whether the server shall use an IODD for the connected IO-Link Device or not. Details on the selection process are defined in section 6.1.7.

The mandatory, read-only Variable DeviceIDshall be mapped to DeviceID of the PortConfigList structure defined in the SMI (see IO-Link Addendum), both of data type UInt32.

The mandatory, read-only Variable VendorIDshall be mapped to VendorID of the PortConfigList structure defined in the SMI (see IO-Link Addendum), both of data type UInt16.

The mandatory, read-only Variable Baudrateshall be mapped to TransmissionRate of the PortStatusList structure defined in the SMI (see IO-Link Addendum). The UInteger8 shall directly be mapped to the Byte DataType. The EnumStrings Property of the MultiStateDiscreteType shall be used according to the values defined for the TransmissionRate in IO-Link Addendum, and shall at least provide all valid Values supported by the IO-Link Master.

The mandatory, read-only Variable ActualCycleTimeshall be mapped to the MasterCycleTime of the PortStatusList structure defined in the SMI (see IO-Link Addendum). The data type mapping is defined in 12.2.7.2.

The mandatory, read-only Variable Qualityshall be mapped to “PortQualityInfo” of the PortStatusList structure defined in the SMI (see IO-Link Addendum). The Unsigned8 is mapped directly to the Byte DataType. The Variable is of VariableType OptionSetType defined in OPC 10000-5. The mandatory Property OptionSetValues of the VariableType, which is an array of LocalizedText, shall contain the following content, defined in Table 41. Servers are not allowed to add additional entries into the OptionSetValues array, only based on updates of the IO-Link Specification. Servers may provide translations of the texts in different locales.

Table 41– Defined elements of OptionSetValues array of Quality Variable

Element number (starting with 0)

Text (for locale “en”)

0

PDIn invalid

1

PDOut invalid

The mandatory, read-only Variable Statusshall be mapped to PortStatusInfo of the PortStatusList structure defined in the SMI (see IO-Link Addendum). The Unsigned8 is mapped directly to the Byte DataType. The Variable is of VariableType MultiStateDiscreteType defined in OPC 10000-8. The mandatory Property EnumStrings of the VariableType, which is an array of LocalizedText, shall contain the following content, defined in Table 42.

Table 42– Defined elements of EnumStrings array of Status Variable

Element number (starting with 0)

Text (for locale “en”)

0

NO_DEVICE

1

DEACTIVATED

2

INCORRECT_DEVICE

3

PREOPERATE

4

OPERATE

5

DI_C/Q (Pin4)

6

DO_C/Q (Pin4)

7-253

“” (= Empty String)

254

PORT_FAULT

255

NOT_AVAILABLE

Servers may update the values for 7-253 when the IO-Link Specificationgets updated. Servers may provide translations of the texts in different locales.

The date since connection is running or not running is shown in SourceTimestamp of the Status. Because of this a server that supports persistent statistics shall not change the SourceTimestamp of Status on restart of the IO-Link Master or OPC UA Server.

The optional Variable Pin2ProcessDataprovides the process data value of the Pin2. The DataType is vendor-specific.

The optional Variable Pin4ProcessDataprovides the process data value of the Pin4. The Variable shall only be provided when the PortMode is set to “DI_C/Q (Pin4)” or “DO_C/Q (Pin4)”.

The optional, read-only Variable DateOfLastStatisticsResetcontains the timestamp of the answer to the last call of the Method ResetStatistics, respectively ResetStatisticsOnAllPorts defined on the IOLinkMasterType. The timestamp information shall be as precise as possible. If the reset Methods were never called then DateOfLastStatisticsReset indicates the startup time. The optional Variable shall be provided when the optional Method ResetStatistics is provided.

The following Variables indicate the incidents since DateOfLastStatisticsReset. The server should persist statistics, also when the IO-Link Master or the OPC UA Server is restarted. However, if the statistics become inconsistent, the server is allowed to do an internal reset. This will result in the update of DateOfLastStatisticsReset. If the value of a counting Variable becomes larger than the maximum value of the DataType, the value shall remain on the maximum value.

The optional, read-only Variable NumberOfCyclescontains the number of IO-Link frames on the wire since DateOfLastStatisticsReset. One cycle consists out of one request and response pair.

There are several reasons for the case that an IO-Link Master cannot receive a valid response of an IO-Link Device. It could be that electromagnetic interference (EMI) destroys a packet or that the device is not communicating or that the device was plugged off. If a master cannot receive a valid response, it sends the same frame once more (first retry) and if it gets no answer to this repetition, it sends the frame a third time (second retry). If there is no answer to the second retry, the communication is aborted.

The optional, read-only Variable NumberOfRetriescontains the number of retries since DateOfLastStatisticsReset.

The optional, read-only Variable NumberOfAbortscontains the number of times the communication was aborted since DateOfLastStatisticsReset.

The optional, read-only Variable NumberOfDeviceHasBeenExchangedcontains the number of times a device with different RevisionID, VendorID, DeviceID or SerialNumber has been plugged in since DateOfLastStatisticsReset.

The SourceTimestamp of the counting Variables shall contain the time when the incident occurred and shall not change on restart of the OPC UA Server. This allows Clients to figure out when the variable changed the last time, e.g. when there was the last retry.

In Table 43, the Methods of the ObjectType, referenced via the MethodSet Object are defined.

Table 43– MethodSet of IOLinkPortType

References

Node Class

BrowseName

Modelling Rule

The following Methods are also referenced by the Statistics Object

HasComponent

Method

ResetStatistics

Optional

The following Methods are also referenced by the Configuration Object

HasComponent

Method

UpdateConfiguration

Mandatory

The optional Method ResetStatisticsresets all statistic data of the ports. Statistic data of a port are Parameters referenced by the Statistics Object of the IOLinkPortType Object starting with “NumberOf” and potentially vendor-specific extensions. As soon as statistic data is provided by the server, the optional Method shall be provided.

Signature

ResetStatistics (

[out]Int32 Status

);

Argument

Description

Status

Returns the status of the operation.

0: OK, operation successful

-1: Operation already running

-2: Operation cannot be executed.

The Method UpdateConfigurationtakes all configuration data as input and updates the configuration of the port. The Method execution ensures that a client provides all configuration data at the same time in a consistent way and thus the server can deploy the configuration in one operation. If the configuration is not valid, the server returns a corresponding Status. As defined in the SMI (see IO-Link Addendum) depending on the configuration some arguments are treated as “don’t care”. For example, when the PortMode is IOL_AUTOSTART, the DeviceID, VendorID and ValidationAndBackup are ignored. The server shall not check those arguments and accept configurations with all possible values.

Signature

UpdateConfiguration (

(

[in]Duration CycleTime,

[in]Byte ValidationAndBackup,

[in]Byte PortMode,

[in]Byte Pin2Configuration,

[in]Boolean UseIODD,

[in]UInt32 DeviceID,

[in]UInt16 VendorID,

[out]Int32 Status

);

Argument

Description

CycleTime

Maps to CycleTime Variable defined in Table 38.

ValidationAndBackup

Maps to ValidationAndBackup Variable defined in Table 38. Only the numeric values defined for the Variable are allowed.

PortMode

Maps to PortMode Variable defined in Table 38. Only the numeric values defined for the Variable are allowed.

Pin2Configuration

Maps to Pin2Configuration Variable defined in Table 38. Only the numeric values defined for the Variable are allowed.

UseIODD

Maps to UseIODD Variable defined in Table 38.

DeviceID

Maps to DeviceID Variable defined in Table 38.

VendorID

Maps to VendorID Variable defined in Table 38.

Status

Returns the status of the operation.

0: OK, operation successful

-1: Operation already running

-2: Operation cannot be executed

-3: Invalid configuration