## 7.1.4 Methods of MethodSet

In Table 16, the Methods of the ObjectType, referenced via the MethodSet Object are defined. The first three Methods provide access rather on the protocol level and require the user calling the Methods to understand those protocol-level data transfers. The other Methods are specific IO-Link system commands mapped to OPC UA Methods.

Table 16 – MethodSet of IOLinkDeviceType

References Node Class BrowseName Modelling Rule
The following Methods are also referenced by the General Object
HasComponent Method WriteISDU Mandatory
HasComponent Method SystemCommand Mandatory
HasComponent Method ParamBreak Mandatory
HasComponent Method DeviceReset Mandatory
HasComponent Method ApplicationReset Mandatory
HasComponent Method RestoreFactorySettings Mandatory

The Method ReadISDU reads parameters from the device using the ISDU mechanism.

Signature

ReadISDU (
[in]	UInt16		Index,
[in]	Byte			SubIndex,
[out]	Byte[]		Result,
[out]	UInt16		ErrorType,
[out]	Int32			Status
);


Argument Description
Index Index, 8-bit index and 16-bit index are both mapped to UInt16
SubIndex SubIndex, set to 0 if not used
Result Hex Values returned as data in case of a successful operation. Data needs to be interpreted according to the IO-Link Specification. Empty array if operation was not successful.
ErrorType Hex Values converted to UInt16 returned as ErrorType in case the operation was not successful. Data needs to be interpreted according to the IO-Link Specification. 0 if the operation was successful.
Status Returns the status of the operation.
0: OK, operation successful
-1: Operation already running, either by same or different ISDU read or write
-2: Device not active, either device not connected, not in operation mode or port is configured not to be in IO-Link mode
-3: Operation executed but error code returned from device, details are provided in ErrorType

## 7.1.4.2 WriteISDU

The Method WriteISDU writes parameters on the device using the ISDU mechanism.

Signature

WriteISDU (
[in]	UInt16		Index,
[in]	Byte			SubIndex,
[in]	Byte[]		Data,
[out]	UInt16		ErrorType,
[out]	Int32			Status
);


Argument Description
Index Index, 8-bit index and 16-bit index are both mapped to UInt16
SubIndex SubIndex, set to 0 if not used
Data Hex Values that need to be composed according to the IO-Link Specification
ErrorType Hex Values converted to UInt16 returned as ErrorType in case the operation was not successful. Data needs to be interpreted according to the IO-Link Specification. 0 if the operation was successful.
Status Returns the status of the operation.
0: OK, operation successful
-1: Operation already running, either by same or different ISDU read or write
-2: Device not active, either device not connected, not in operation mode or port is configured not to be in IO-Link mode
-3: Operation executed but error code returned from device, details are provided in ErrorType

## 7.1.4.3 SystemCommand

The method SystemCommand executes an IO-Link SystemCommand as defined in IO-Link Specification.

IO-Link SystemCommands shall be executed by an ISDU write request on Index 0x0002, or, in case ISDUs are not supported, via a write on Index 0x0F on Direct Parameter Page 1.

Signature

SystemCommand (
[in]	Byte				Cmd,
[out]	UInt16			ErrorType,
[out]	Int32				Status
);


Argument Description
Cmd Index of the SystemCommand
ErrorType Hex Values converted to UInt16 returned as ErrorType in case the operation was not successful. Data needs to be interpreted according to the IO-Link Specification. 0 if the operation was successful.
Note that in case the device supports no ISDUs and the SystemCommand is triggered via writing Parameter Page 1, no indication of a positive or negative response is provided and the ErrorType is always 0.
Note that the SystemCommand is optional. In case the IO-Link Device does not support it, the ErrorType returned by the IO-Link Device shall be returned.
Status Returns the status of the operation.
0: OK, operation successful
-1: Operation already running, either by same or different ISDU read or write
-2: Device not active, either device not connected, not in operation mode or port is configured not to be in IO-Link mode
-3: Operation executed but error code returned from device, details are provided in ErrorType

This method executes the SystemCommand 0x01.

Signature

ParamUploadFromDeviceStart (
[out]	UInt16			ErrorType,
[out]	Int32				Status
);


Argument Description
ErrorType Hex Values converted to UInt16 returned as ErrorType in case the operation was not successful. Data needs to be interpreted according to the IO-Link Specification. 0 if the operation was successful.
Note that in case the device supports no ISDUs and the SystemCommand is triggered via writing Parameter Page 1, no indication of a positive or negative response is provided and the ErrorType is always a 0.
Status Returns the status of the operation.
0: OK, operation successful
-1: Operation already running, either by same or different ISDU read or write
-2: Device not active, either device not connected, not in operation mode or port is configured not to be in IO-Link mode
-3: Operation executed but error code returned from device, details are provided in ErrorType

This method executes the SystemCommand 0x02. The same argument description as for ParamUploadFromDeviceStart (see 7.1.4.4) applies.

Signature

ParamUploadFromDeviceStop (
[out]	UInt16			ErrorType,
[out]	Int32				Status
);



This method executes the SystemCommand 0x03. The same argument description as for ParamUploadFromDeviceStart (see 7.1.4.4) applies.

Signature

ParamDownloadToDeviceStart (
[out]	UInt16			ErrorType,
[out]	Int32				Status
);



This method executes the SystemCommand 0x04. The same argument description as for ParamUploadFromDeviceStart (see 7.1.4.4) applies.

Signature

ParamDownloadToDeviceStop (
[out]	UInt16			ErrorType,
[out]	Int32				Status
);



This method executes the SystemCommand 0x05. The same argument description as for ParamUploadFromDeviceStart (see 7.1.4.4) applies.

Signature

ParamDownloadToDeviceStore (
[out]	UInt16			ErrorType,
[out]	Int32				Status
);



## 7.1.4.9 ParamBreak

This method executes the SystemCommand 0x06. The same argument description as for ParamUploadFromDeviceStart (see 7.1.4.4) applies.

Signature

ParamBreak (
[out]	UInt16			ErrorType,
[out]	Int32				Status
);



## 7.1.4.10 DeviceReset

This method executes the SystemCommand 0x80. The same argument description as for ParamUploadFromDeviceStart (see 7.1.4.4) applies.

Signature

DeviceReset (
[out]	UInt16			ErrorType,
[out]	Int32				Status
);



## 7.1.4.11 ApplicationReset

This method executes the SystemCommand 0x81. The same argument description as for ParamUploadFromDeviceStart (see 7.1.4.4) applies.

Signature

ApplicationReset (
[out]	UInt16			ErrorType,
[out]	Int32				Status
);



## 7.1.4.12 RestoreFactorySettings

This method executes the SystemCommand 0x82. The same argument description as for ParamUploadFromDeviceStart (see 7.1.4.4) applies.

Signature

RestoreFactorySettings (
[out]	UInt16			ErrorType,
[out]	Int32				Status
);