Protocol API
PROFINET IO Controller
V3.5.0
Hilscher Gesellschaft für Systemautomation mbH
www.hilscher.com
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public
Introduction 2/244
Table of contents
1 Introduction............................................................................................................................................. 4
1.1 About this document ...................................................................................................................... 4
1.2 List of revisions .............................................................................................................................. 4
1.3 Target group ................................................................................................................................... 5
1.4 Technical data ................................................................................................................................ 5
1.4.1 Additional features ............................................................................................................................. 5
1.4.2 Personalizing firmware via taglist ...................................................................................................... 6
1.5 Availability of the stack for netX ..................................................................................................... 6
1.6 References to documents .............................................................................................................. 7
2 Getting started ........................................................................................................................................ 8
2.1 Structure of the PROFINET IO Controller stack ............................................................................ 8
2.2 Device Identification ....................................................................................................................... 8
2.3 Operational state ............................................................................................................................ 9
2.3.1 Network state .................................................................................................................................... 9
2.4 AR communication state .............................................................................................................. 11
2.5 Configuration of PROFINET IO Controller ................................................................................... 12
2.5.1 Overview ......................................................................................................................................... 12
2.5.2 IOC Object....................................................................................................................................... 13
2.5.3 IOD Object....................................................................................................................................... 17
2.5.4 AR Parameter Object ...................................................................................................................... 21
2.5.5 IOCR Object .................................................................................................................................... 22
2.5.6 Submodule Object ........................................................................................................................... 27
2.5.7 Record Object ................................................................................................................................. 31
2.5.8 Packet configuration sequence ....................................................................................................... 70
2.6 Process data handling.................................................................................................................. 71
2.6.1 Output data handling ....................................................................................................................... 71
2.6.2 Input data handling .......................................................................................................................... 74
2.6.3 Process data timing in isochronous applications ............................................................................. 77
2.6.4 Start / Stop Communication............................................................................................................. 78
2.6.5 Conflict detection at runtime ............................................................................................................ 78
3 Application interface ............................................................................................................................ 79
3.1 Configuring the IO-Controller stack .............................................................................................. 79
3.1.1 Configure OEM Parameter service .................................................................................................. 79
3.1.2 Configure IO Controller service ....................................................................................................... 86
3.1.3 Configure IO Controller Parameter service...................................................................................... 87
3.1.4 Configure IO Device service ............................................................................................................ 89
3.1.5 Configure AR Parameters service ................................................................................................... 90
3.1.6 Configure IOCR service................................................................................................................... 91
3.1.7 Configure Submodule service ......................................................................................................... 92
3.1.8 Configure Record service ................................................................................................................ 93
3.1.9 Configure Topology service ............................................................................................................. 95
3.1.10 Download Finished service.............................................................................................................. 97
3.1.11 Load Remanent service................................................................................................................... 99
3.2 Upload Configuration .................................................................................................................101
3.2.1 Overview ....................................................................................................................................... 101
3.2.2 Get IO Controller service ............................................................................................................... 103
3.2.3 Get number of configurable objects service .................................................................................. 105
3.2.4 Get IO Device service.................................................................................................................... 107
3.2.5 Get IOCR service .......................................................................................................................... 108
3.2.6 Get submodule service .................................................................................................................. 109
3.2.7 Get next IO-Device service............................................................................................................ 110
3.2.8 Get next IOCR service................................................................................................................... 112
3.2.9 Get next Submodule service ......................................................................................................... 114
3.2.10 Get next Record service ................................................................................................................ 117
3.3 Acyclic requests .........................................................................................................................121
3.3.1 Read Submodule Record service .................................................................................................. 121
3.3.2 Write Submodule Record service .................................................................................................. 126
3.3.3 Read Implicit Record service ......................................................................................................... 128
3.3.4 Acknowledge Alarm service .......................................................................................................... 132
3.3.5 DCP Set Name service.................................................................................................................. 135
3.3.6 DCP Set IP service ........................................................................................................................ 138
3.3.7 DCP Set Signal service ................................................................................................................. 141
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Introduction 3/244
3.3.8 DCP Reset Factory Settings service ............................................................................................. 144
3.3.9 DCP Get service ............................................................................................................................ 147
3.3.10 Get Logbook Service ..................................................................................................................... 151
3.3.11 Get AR Vendor Block Response service ....................................................................................... 156
3.3.12 Set AR Status service.................................................................................................................... 158
3.3.13 Get AR State service ..................................................................................................................... 160
3.3.14 Change AR State service .............................................................................................................. 162
3.4 Network scan .............................................................................................................................164
3.5 Device Access AR (DA-AR) .......................................................................................................167
3.5.1 Overview ....................................................................................................................................... 167
3.5.2 Usage ............................................................................................................................................ 168
3.5.3 Establish Device Access AR ......................................................................................................... 169
3.5.4 Release Device Access AR ........................................................................................................... 173
3.6 Acyclic indications ......................................................................................................................175
3.6.1 Receive Alarm service ................................................................................................................... 175
3.6.2 Receive Diagnosis service ............................................................................................................ 179
3.6.3 Store Remanent service ................................................................................................................ 185
3.6.4 DCP request received service ....................................................................................................... 187
3.6.5 AR State Update service ............................................................................................................... 190
3.7 Legacy services .........................................................................................................................192
3.7.1 Read Record service (legacy) ....................................................................................................... 192
3.7.2 Write Record service (legacy) ....................................................................................................... 196
3.7.3 Read Record Implicit service (legacy) ........................................................................................... 199
3.8 Common services ......................................................................................................................203
3.8.1 Get Slave Handle service .............................................................................................................. 203
3.8.2 Get Slave Connection Info service ................................................................................................ 205
3.8.3 Link Status Changed service ......................................................................................................... 208
3.9 Dual-Port Memory (DPM)...........................................................................................................209
3.9.1 Extended Status Block .................................................................................................................. 209
3.9.2 Process data timing information .................................................................................................... 209
3.9.3 AR State Info block ........................................................................................................................ 211
3.9.4 AR State Request block ................................................................................................................ 211
4 Media Redundancy .............................................................................................................................212
4.1 Overview ....................................................................................................................................212
4.2 Topologies ..................................................................................................................................213
4.3 Configuration parameters...........................................................................................................214
5 LED ......................................................................................................................................................216
6 Requirements to the application.......................................................................................................217
6.1 What the application always has to do.......................................................................................217
6.2 Handling I/O data .......................................................................................................................217
6.3 Remanent data handling ............................................................................................................217
6.4 Changing the AR state ...............................................................................................................218
6.5 Certification requirements for applications .................................................................................218
7 Status codes / Error codes ................................................................................................................221
7.1 Error Codes of PROFINET IO Controller ...................................................................................221
7.2 Sockets.......................................................................................................................................226
7.3 PROFINET Status Code ............................................................................................................227
7.3.1 The ErrorCode Field ...................................................................................................................... 228
7.3.2 The ErrorDecode Field .................................................................................................................. 228
7.3.3 The ErrorCode1 and ErrorCode2 Fields ........................................................................................ 229
7.3.4 ErrorCode1 and ErrorCode2 for ErrorDecode = PNIO .................................................................. 230
7.3.5 ErrorCode1 and ErrorCode2 for ErrorDecode is Manufacturer Specific ........................................ 234
8 Appendix .............................................................................................................................................235
8.1 List of tables ...............................................................................................................................235
8.2 List of figures ..............................................................................................................................238
8.3 Legal Notes ................................................................................................................................239
8.4 Third party software licenses .....................................................................................................243
8.5 Contacts .....................................................................................................................................244
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Introduction 4/244
1 Introduction
1.1 About this document
This manual describes the application interface of the PROFINET IO Controller protocol stack. The
aim of this manual is to support the integration of netX-based devices into applications.
1.2 List of revisions
Rev Date Name Revision
8 2021-01-07 BMe, RGö, Firmware/stack version 3.4.0
HHe The following sections are removed:
Get IO Controller parameter list service
Get IO Controller parameter service
Get record service
Section Target group added.
Section Structure of the PROFINET IO Controller stack added.
Section Configuration of PROFINET IO Controller updated.
Section Start / Stop Communication added.
Section Upload Configuration updated.
Section Get Next Configuration Services added.
Section Configure OEM Parameter service extended.
Section What the application always has to do added.
Section Handling I/O data added.
9 2023-01-20 BMe, AMe, Firmware/stack version 3.5.0
HHe Section Availability of the stack for netX added.
Section Network state: Figure 3 added.
Section Record Object extended by new elements.
Sections Get AR State service, Change AR State service, AR State Update service,
and AR State Info block added.
Sections regarding AR Operational Mode (System-Redundancy) added.
Obsolete Set OEM parameters and Config IOC service fields removed.
Describe new DDP based startup sequence.
Rework/describe PD Interface CIM SNMP and adjust parameters.
Shorten section Technical data and give hint to technical datasheet
Add section Personalizing firmware via taglist
Add image regarding AR state.
Table 1: List of revisions
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Introduction 5/244
1.3 Target group
This manual is intended for software developers with knowledge of:
the programming language C
the PROFINET IO communication system
the netX dual-port memory interface and communication mechanism, e.g.communication via
packets
1.4 Technical data
For technical data, see firmware-specific technical datasheet.
1.4.1 Additional features
Automatic alarm handling
The PROFINET IO Controller can be configured to perform automatic alarm handling. For each
alarm type, it can be configured if the alarm is to be handled by the PROFINET IO Controller
firmware itself or if the alarm shall be passed to the application for further processing. Using
automatic alarm handling reduces the amount of indications passed to the application and can
simplify application implementation.
However, automatic alarm handling needs to be used with care. Process-relevant alarms (e.g.
alarm type Process Alarm) should never be handled automatically.
Fast startup
The PROFINET IO Controller supports Fast Startup (FSU). This feature can be configured
independently per AR.
Automatic name assignment
The PROFINET IO Controller implements automatic name assignment. That means that the
controller can automatically assign the PROFINET name of station according a previously
configured topology information to any unnamed device in the network. With that feature, it is
possible to e.g. exchange faulty PROFINET IO Devices with factory new devices without additional
effort.
Device Access AR
The PROFINET IO Controller implements Device Access AR. This AR Type is usually used to
write I&M record objects by the engineering software.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Introduction 6/244
1.4.2 Personalizing firmware via taglist
Loadable firmware supports the feature to configure firmware parameters. During startup of the
firmware, it reads the configuration parameters from the tag list of the firmware.
The firmware reads the tag list parameters
to customize the resource allocation, and
to configure features.
The “Profinet Controller Quantities” tag allows customizing quantity structures, e.g. to set the
number of supported ARs.
Each of these features configured with the parameter requires memory resources. Configuration
needs to be done in order to not exceed the available memory resource of the device.
The same applies to non-PROFINET configuration parameter tags of the taglist.
All these configuration parameters compete with each other against the same limited available
memory. It is up to the firmware user to check, if his choosen quantity features leads to a useable
firmware.
The firmware offers a service to read the remaining heap memory: HIL_MALLINFO_REQ
Recommendation: leave at least 1MB free heap
1.5 Availability of the stack for netX
Firmware generation 3 (PNMV3) available for netX
netX Available
netX 50 no
netX 51 no
netX 52 no
netX 90 no
netX 100 yes
netX 500 yes
Table 2: Availability of PROFINET IO-Controller stack V3
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Introduction 7/244
1.6 References to documents
This document refers to the following documents:
[1] PROFIBUS International: Technical Specification for PROFINET IO: Application Layer
protocol for decentralized periphery, Version 2.3Ed2MU5, March 2018, Order No. 2.722,
English.
[2] Hilscher Gesellschaft für Systemautomation mbH: Dual-Port Memory Interface Manual, netX
Dual-Port Memory Interface, Revision 17, English, 2020.
[3] Hilscher Gesellschaft für Systemautomation mbH: netX Dual-Port Memory, Packet-based
services (netX 10/50/51/52/100/500), Revision 5, English, 2021.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 8/244
2 Getting started
The following section gives an overview about general topics when using the PROFINET IO
Controller.
2.1 Structure of the PROFINET IO Controller stack
The following figure shows the internal structure of the PROFINET IO Controller stack.
Figure 1: Structure of PROFINET IO Controller stack
2.2 Device Identification
Since PROFINET IO Controller version 3.5, the Device Data Provider (DDP) mechanism is used
as common source for device data e.g. Ethernet MAC addresses, Serial Number, Order Id and
Hardware Revision. The application can only change these values while the DDP is in state
“passive” which is the case only during firmware startup. The startup mode of the DDP can be
configured by configuring the firmware with the Tag List Editor software. In order to set the
identification values as needed, the application must use Device Data Provider packet services as
described in [3] to set the values and finally set DDP to state active.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 9/244
2.3 Operational state
2.3.1 Network state
The following figure shows the state machine of the internal behaviour of the PROFINET IO
Controller firmware regarding startup, configuration and network state. The internal state has
influence to the acceptance of services received from the network and for services to be send to
the network.
Figure 2: Controller Global/Network state
The main states of the PROFINET IO Controller are defined as follows:
Startup: The device has just powered on and is waiting for DDP (Device Data Provider) to
become active and remanent data to be load. Depending on the firmware taglist settings, the
firmware will skip over this state automatically or wait for application to execute the
necessary services.
BusOff: The device will not react to received DCP requests and establish no application
relation with any IO Device. The firmware may load a configuration database or wait for
application to execute configuration services.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 10/244
Operating: In this state the PROFINET IO Controller is visible on the network and responds
to the DCP protocol. The state is split into two substates: In substate BusOn the firmware
will establish communication relations with configured devices and exchange I/O data while
in substate NetworkUp the firmware will accept DCP Set requests if allowed by
configuration. The later case allows changing the IP address or Profinet NameOfStation of
the PROFINET IO Controller via network. Depending on the configuration, the firmware will
enter BusOn automatically or wait for the application to change the state.
Note: Only a configuration using the setting “Application Controlled Startup” will meet the
requirements of PROFINET IO Controller certification.
The following figure shows the network state including the address conflict detection.
Figure 3: Controller Global/Network state (including address conflict detection)
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 11/244
2.4 AR communication state
The Profinet Controller V3 firmware supports AR granular status information and control. By
default, the status information is reported to the application by means of AR Operational Mode
service while the application can request mode changes using the. In addition to that, the firmware
can be configured to place AR status information in DPM Input area and/or take AR status control
inquiries from DPM Output area. The status valus a regular IO-AR can take and typical transitions
are shown in Figure 4.
Figure 4: State of an IO-AR
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 12/244
2.5 Configuration of PROFINET IO Controller
2.5.1 Overview
Prior to communication with any PROFINET IO Device the PROFINET IO Controller must be
configured. For this purpose, the following possibilities exist:
Configuration by the application using the packet interface
Configuration by configuration file named config.nxd
Note: The configuration file format was incompatibely changed between firmware
version 3.1.x and 3.2.x. Firmware version 3.1.x used “config.dat” whereas
firmware version 3.2.x and newer are using “config.nxd”.
The configuration of the PROFINET IO Controller is structured and organized according to
configuration objects. The data of the individual configuration object will internally be managed in
logical tables. The following diagram provides an initial overview of the relationship between all
defined configuration objects:
Figure 5: Structure of IO-Controller configuration
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 13/244
2.5.2 IOC Object
IOC object defines the basic parameters of the PROFINET IO Controller protocol stack as a
PROFINET participant.
The structure PNM_AP_CFG_IOC_DATA_T defines the following parameters:
Parameter Type Value range Description
ulStructVersion UINT32 1, 2, 3 Version of this structure. This parameter is used for
future extensions of the Configure Controller service.
ulSystemFlags UINT32 See below System flags
ulAlarmHandlingFlags UINT32 See below Automatic alarm handling flags
ulDpmWatchdogTime UINT32 0, 20 … 65535 DPM channel watchdog time
usVendorID UINT16 VendorID to be used by IO Controller
usDeviceID UINT16 DeviceID to be used by IO Controller
ulIPAddr UINT32 Valid IP address IP address to be used by IO Controller
ulNetmask UINT32 Valid subnet Subnet mask to be used by IO Controller
mask
ulGateway UINT32 Valid IP address Gateway address to be used by IO Controller
abDeviceType[25] UINT8[] Device Type to be used by IO Controller
abNameOfStation[240] UINT8[] NameOfStation to be used by IO Controller
abReserved[20] UINT8[] Obsolete. Set to Zero. Will be ignored by firmware.
usBitlistStartOffset UINT16 Start offset in DPM input area for slave status bit
lists
bPadding UINT8 0 Padding to fix structure field alignment. Set to zero
for future compatibility.
usIoTimingInfoOffset UINT16 Start offset in DPM input area for io timing
information (This field is available since structure
version 2)
usARStateInfoOffset UINT16 Start offset in DPM input area for AR state
information (This field is available since structure
version 3)
usARStateRequestOffset UINT16 Start offset in DPM output area for AR state request
(This field is available since structure version 3)
Table 3: Structure PNM_AP_CFG_IOC_DATA_T - Basic parameters of the PROFINET IO Controller protocol stack
Parameter description
Parameter ulSystemFlags
The ulSystemFlags field is a bitmask of flags defined as follows:
Option Numeric value Description
PNM_AP_IOC_FLAG_STARTMODE_ 0x00000000 The communication will be started automatically after the
AUTOMATIC PROFINET IO Controller had been configured successfully.
PNM_AP_IOC_FLAG_STARTMODE_ 0x00000001 The application must explicitly enable the bus to start
APPLICATION_CONTROLLED communication.
PNM_AP_IOC_FLAG_FORCE_NAME_ 0x00000002 The controller will assign the Name Of Station even to
ASSIGNMENT devices which are already have assigned a NameOfStation.
PNM_AP_IOC_FLAG_ENABLE_DCP 0x00000004 The controller will accept receiving DCP Set requests when
the network in state “NetworkUp” see section Network state
on page 9. If this flag is not set, all received DCP Set
requests will be rejected.
Table 4: Parameter ulSystemFlags
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 14/244
Parameter ulAlarmHandlingFlags
This parameter specifies which alarms shall be handled by the PROFINET IO Controller itself and
which alarms shall be passed to the application for processing. The field ulAlarmHandlingFlags is
defined as a bitmask where each bit corresponds to a particular alarm type. For each alarm to be
handled by the PROFINET IO Controller the corresponding bit shall be set. As a special use case it
is also possible to handle all manufacturer specific alarms within the PROFINET IO Controller
using the bitmask PNM_AP_CFG_ALARM_HANDLING_FLAG_MANUFACTURER_ALARMS.
The following bitmasks are defined:
Flag Value
PNM_AP_CFG_ALARM_HANDLING_FLAG_DIAGNOSIS 0x00000001
PNM_AP_CFG_ALARM_HANDLING_FLAG_PROCESS 0x00000002
PNM_AP_CFG_ALARM_HANDLING_FLAG_PULL 0x00000004
PNM_AP_CFG_ALARM_HANDLING_FLAG_PLUG 0x00000008
PNM_AP_CFG_ALARM_HANDLING_FLAG_PULL_MODULE 0x00000010
PNM_AP_CFG_ALARM_HANDLING_FLAG_PLUG_WRONG 0x00000020
PNM_AP_CFG_ALARM_HANDLING_FLAG_STATUS 0x00000040
PNM_AP_CFG_ALARM_HANDLING_FLAG_UPDATE 0x00000080
PNM_AP_CFG_ALARM_HANDLING_FLAG_MEDIA_REDUND 0x00000100
PNM_AP_CFG_ALARM_HANDLING_FLAG_CONTROLLED 0x00000200
PNM_AP_CFG_ALARM_HANDLING_FLAG_RELEASED 0x00000400
PNM_AP_CFG_ALARM_HANDLING_FLAG_RETURN_OF_SUBM 0x00000800
PNM_AP_CFG_ALARM_HANDLING_FLAG_MCR_MISMATCH 0x00001000
PNM_AP_CFG_ALARM_HANDLING_FLAG_PORT_DATA_CHANGE 0x00002000
PNM_AP_CFG_ALARM_HANDLING_FLAG_SYNC_DATA_CHANGE 0x00004000
PNM_AP_CFG_ALARM_HANDLING_FLAG_TIME_DATA_CHANGE 0x00008000
PNM_AP_CFG_ALARM_HANDLING_FLAG_ISOCHR_MODE_PROBLEM 0x00010000
PNM_AP_CFG_ALARM_HANDLING_FLAG_NETW_COMP_PROBLEM 0x00020000
PNM_AP_CFG_ALARM_HANDLING_FLAG_DFP_PROBLEM 0x00040000
PNM_AP_CFG_ALARM_HANDLING_FLAG_MRPD_PROBLEM 0x00080000
PNM_AP_CFG_ALARM_HANDLING_FLAG_MULT_INTF_MISMATCH 0x00100000
PNM_AP_CFG_ALARM_HANDLING_FLAG_UPLOAD_AND_RETRIVAL 0x00200000
PNM_AP_CFG_ALARM_HANDLING_FLAG_MANUFACTURER_ALARMS 0x80000000
Table 5: Definition of alarm handling flags
Parameter ulDpmWatchdogTime
This parameter specifies the DPM channel watchdog timeout in units of milliseconds.
A value of 0 means DPM Channel Watchdog supervision is explicitly disabled.
A value between 20 (Minimum) and 65535 (Maximum) means DPM Channel Watchdog
supervision is prepared with the specified watchdog time. In order to activate the watchdog,
the application must start the supervision using the standard DPM Watchdog Mechanism
after the successful configuration of the PROFINET IO Controller.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 15/244
Parameter usVendorID
This parameter specifies the PROFINET Vendor Id the controller shall use. The vendor id is a
unique identification number of the controller's vendor assigned by the PNO.
Note: This parameter is for the OEMs to handover the own VendorID number.
Parameter usDeviceID
This parameter specifies the PROFINET Device Id the controller shall use. The device id is a
unique device id assigned by the vendor of the device.
Note: This parameter is for the OEMs to handover the Vendor specific DeviceID number.
Parameter abDeviceType
The device type is a short textual description of the device. It is used in device identification when
performing network scans or when reading out identification information from a PROFINET Device
or Controller. The value shall be padded with zero(es) to the full field length.
Parameter abNameOfStation
The name of station is the bus address of a PROFINET Device or Controller. The name of station
must be unique across the communication network. According to the PROFINET specification the
characters a-z, 0-9, '-' and '.' are allowed where '.' has the special meaning of a label separator.
Several restrictions apply
The field shall be padded with zero(es) to full field length.
Parameter abOrderId
The vendor's order id of the PROFINET IO Controller. The field shall be padded with zero(es) to
full field length.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 16/244
Parameter usBitlistStartOffset
The PROFINET IO Controller manages three bit lists within the DPM Input Area. Each bit list is 128
bits (=16 byte) wide and reflects the status when the DPM Input area was updated by the
PROFINET IO Controller. The parameter usBitlistStartOffset specifies the offset in byte
from the beginning of the DPM Input Area where these lists shall placed to. The lists are always
present and cannot be deactivated. The following bit lists are defined:
Name Offset in DPM Input Area Description
Configured Bitlist usBitListStartOffset A bit is set to true if associated AR had been configured
Active Bitlist usBitListStartOffset + 16 A bit is set to true if associated AR is communicating
Diagnosis usBitListStartOffset + 32 A bit is set to true if associated AR is communicating and either a
diagnosis is pending or a configuration difference was detected
Table 6: Bit lists for parameter usBitlistStartOffset
The offset of the bit corresponding to a particular AR can be derived from the device handle as
follows:
ByteOffset = (usDeviceHandle - 1) / 8
BitMask = 0x1 << ((usDeviceHandle -1 ) % 8)
Note: The bit list area and the input IOCR data are placed within the DPM Input Area. Thus,
the application must ensure that the bit lists memory area does not overlap with input
IOCR data blocks.
Parameter usIoTimingInfoOffset
The PROFINET IO Controller firmware provides timing information about process data handling
using the PNM_AP_IOTIMINGINFO_T structure. This information can be placed in DPM input area
if required. This parameter configures the start offset of this data within the DPM input area. If the
offset is larger than the size of the DPM input area or the data does not fully fit into the DPM input
area the feature is disabled. Thus using a value 0xFFFF will disable this feature.
Note: This information is also provided in the DPM extended status block
Parameter usARStateInfoOffset
The PROFINET IO Controller firmware can place AR operational state information in the DPM
input area using the PNM_AP_ARSTATE_T structure. This parameter configures the start offset of
this data within the DPM input area. If this parameter is set to a value larger than the size of the
DPM input area or the data does not fully fit into the DPM input area the feature is disabled. Thus
using a value 0xFFFF will disable this feature.
Parameter usARStateRequestOffset
The PROFINET IO Controller firmware can take AR operational state change requests from the
DPM Output area area using the PNM_AP_ARSTATE_T structure. This parameter configures the
start offset of this data within the DPM output area. If this is parameter set to a value larger than
the size of the DPM output area or the data does not fully fit into the DPM output area the feature is
disabled. Thus using a value 0xFFFF will disable this feature.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 17/244
2.5.3 IOD Object
The IO-Device object defines the basic properties of an application relation (AR)
Data type Values Description
ulStructVersion UINT32 1 Structure version of this structure
usDeviceHandle PNM_AP_DEVICEHANDLE_T 1 … 128 Unique handle of this IO-Device
defined by the sender of this packet
bARType UINT8 0x01, 0x10 AR Type
bAddressMode UINT8 0 .. 1 IP address mode
ulFlags UINT32 Flags controlling AR behavior
tArUuid PNM_UUID_T UUID associated with this AR
ulArProperties UINT32 Properties of this AR.
usVendorID UINT16 GSDML PROFINET Vendor ID of the Device
usDeviceID UINT16 GSDML PROFINET Device ID of the Device
usInstanceID UINT16 GSDML PROFINET Instance ID of the Device
usMaxAlarmDataLength UINT16 200 … 224 Maximum alarm data length
usRTATimeoutFact UINT16 1 … 0xFFFF RTA Timeout Factor
usRTARetries UINT16 3 … 10 RTA Retries
abNameOfStation[240] UINT8[] NameOfStation of the IO Device
ulIPAddr UINT32 IP address
ulNetworkMask UINT32 Network mask
ulGatewayAddr UINT32 Gateway address (i.e. IP address of
gateway)
Table 7: PNM_AP_CFG_IOD_REQ_DATA_T
Parameter descriptions
Parameter ulStructVersion
Structure version of the configuration structure. Used for future extensions.
Parameter usDeviceHandle
This parameter specifies the handle of the AR to be configured.
Parameter bARType
This parameter describes the type of the AR
Name Numeric value Description
PNM_AP_CFG_IOD_AR_TYPE_SINGLE 0x01 AR Type for RT communication
PNM_AP_CFG_IOD_AR_TYPE_RTC3 0x10 AR Type for IRT communication
Table 8: Parameter bARType – Possible values
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 18/244
Parameter bAddressMode
This parameter describes the possible modes of ip address resolution
Name Numeric Description
value
PNM_AP_CFG_IOD_ADDRESS_MODE_DCP_IDENTIFY_ASSIGN 0 (default) In this mode, the controller discovers
the device using its station name or
alias name (only if topology info
available) and will assign the
configured ip address if required.
PNM_AP_CFG_IOD_ADDRESS_MODE_DCP_DISCOVER 1 The controller identifies the device
using its station name or alias name
and will use the IP address reported
by the device. The IP address of
device will not be reassigned in this
mode.
Please note that the Controller will
not establish the communication if
the IP address set in IO Device is set
to zero or unreachable.
Table 9: Parameter bAddressMode - possible modes of ip address resolution
Parameter ulFlags
The parameter ulFlags is a bitmask of flag bits specifying additional properties of the AR. The
following table lists the defined bits
Name Numeric Description
value
PNM_AP_CFG_IOD_FLAG_WRITE_ 0x01 Use multiple write to parameterize the device. This flag should be
MULTIPLE_SUPPORTED set if the PROFINET IO Device associated with this AR supports
multiple write. (Extracted from GSDML) The PROFINET IO
Controller will pack multiple parameter writes into one RPC
Service to save Startup Time.
RESERVED 0x02 This value is reserved for future usage. Set to 0 for compatibility
reasons.
Table 10: Parameter ulFlags
Parameter tArUUID
Unique identifier of the AR. The AR UUID shall be generated by the engineering software or
application. It is a unique id of the AR and must be non-zero.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 19/244
Parameter ulArProperties
The parameter ulARProperties is a bitmask describing PROFINET Properties of this AR. A
combination of the following values is allowed:
Name Numeric Description
value
PNM_AP_CFG_IOD_AR_PROP_FLAG_SUPERVISOR_TAKEOVER_ALLOWED 0x00000008 A supervisor is allowed to
take over submodules of
this AR.
PNM_AP_CFG_IOD_AR_PROP_FLAG_STARTUPMODE_ADVANCED 0x40000000 AR start-up is performed
according to PROFINET
specification 2.3 Advanced
Startup Mode. (Extract from
GSDML file). If the bitmask
is not set, then the
PROFINET V2.2 Startup
Mode is used.
PNM_AP_CFG_IOD_AR_PROP_FLAG_PULL_MODULE_ALARM_ALLOWED 0x80000000 The alarm type PULL
MODULE is supported by
the device. (Extract from
GSDML file)
Table 11: Parameter ulArProperties
The firmware will automatically set bit 0x10 in ARProperties on the network. Therefore, this bit is
returned as "set" when the Get Device Configuration service is used, even if the bit was not set at
configuration phase.
Parameter usVendorID
VendorID to be used by IO Controller for addressing the IO Device. (Extract from GSDML file)
Parameter usDeviceID
DeviceID to be used by IO Controller for addressing the IO Device (Extract from GSDML file)
Parameter usInstanceID
The instance ID of the device. (Extract from GSDML file, Attribute "ObjectUUID Instance")
Parameter usMaxAlarmDataLength
The maximum length of payload data to be transported in an alarm. The minimum value is 200
byte and must be supported by any PROFINET Device. The upper limit of the PROFINET IO
Controller is 224 byte.
Parameter usRTATimeoutFact
This parameter is used to specify the timeout of acyclic alarm services. When one side of the AR
sends an alarm it is expected that the other side acknowledges the alarm within
usRTATimeoutFact * 100ms. If the alarm is not acknowledged, up to usRTARetries will be
performed. If still no acknowledge is received, the AR will be aborted. Default value is 1. For
maximum compatibility values of the range 1 to 100 should be used.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 20/244
Parameter usRTARetries
Number of times an alarm shall be retried before giving up and aborting the AR, Default value is 3
Parameter abNameOfStation[240]
The parameter abNameOfStation is the PROFINET Name Of Station to be used for this AR. The
PROFINET IO Controller will establish the AR with a PROFINET IO Device with that
NameOfStation. If multiple devices with same NameOfStation exists no connection will be made.
The filed should be zero padded to full field length.
Parameter ulIPAddr
IP address to be assigned to the PROFINET IO Device. This IP Address Setting is to be specified
by the application and will be assigned to the PROFINET IO Device by the PROFINET IO
Controller on Startup.
Parameter ulNetmask
Network Mask to be assigned to the PROFINET IO Device. This IP Address Setting is to be
specified by the application and will be assigned to the PROFINET IO Device by the PROFINET IO
Controller on Startup.
Parameter ulGatewayAddr
Gateway Address to be assigned to the PROFINET IO Device. This IP Address Setting is to be
specified by the application and will be assigned to the PROFINET IO Device by the PROFINET IO
Controller on Startup.
Internal handling
IOD Objects are internally managed in table “AR”. A table entry is addressed by a device handle of
type PNM_AP_DEVICEHANDLE_T. The following values are valid values for the device handle:
Value Description
0 Implicit Handle referencing to the controller itself.
1-128 Handle of an AR of a PROFINET IO Device. The maximum value depends on the number
of supported ARs.
Table 12: Valid values of the device handle
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 21/244
2.5.4 AR Parameter Object
This object defines the basic parameters of an application relation (AR). The following table
describes structure PNM_AP_CFG_AR_PRM_DATA_T:
Variable Type Value / Description
Range
ulStructVersion UINT32 1 Structure version of this structure
usDeviceHandle PNM_AP_DEVICEHANDLE_T 1 … 128 Handle of AR this AR Parameter
belongs to
usIdentifier UINT16 Identifier for the type
uData PNM_AP_CFG_AR_PRM_UNION_T Parameter data
Table 13: AR Parameter Object - Basic parameters of an application relation (AR)
Parameter descriptions
Parameter ulStructVersion
Version of this structure. Used for future extensions.
Parameter usDeviceHandle
Reference to the AR for which to configure the AR parameter for
Parameters usIdentifier, uData
The values of usIdentifier specifies which kind of AR parameter is configured and which field
of uData is valid. Currently only AR Vendor Block is supported
Name Numeric Packet length Description
value
PNM_AP_CFG_AR_PRM_IDENT_ARVENDORBLOCKREQ 0 8 + 12 + Length of uData.tArVendorBlock
ARVendorBlockReq contains an AR Vendor
data Block Request to configure
for the AR
Table 14: PNM_AP_CFG_AR_PRM_IDENTIFIER_E
Structure PNM_AP_CFG_AR_PRM_ARVENDORBLOCK_T
Variable Type Value / Range Description
ulStructVersion UINT32 1 Structure version of this structure
usArVendorBlockHandle UINT16 1 to 256 Handle to this AR vendor block. This a
configuration wide unique handle. That means
different ARs must use different handles here.
usAPStructureIdentifier UINT16 0 to 0x7FFF, 0x8000 AP Structure Identifier according to GSDML
ulApi UINT32 any API according to GSDML
abData[] UINT8[] Byte array containing the AR VendorBlock data.
Size of this array depends on parameter
tHead.ulLen. Allowed length of array: 0 (no data) -
512
Table 15: Structure PNM_AP_CFG_AR_PRM_ARVENDORBLOCK_T
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 22/244
2.5.5 IOCR Object
This object defines the basic properties of an IO Communication Relation (IOCR) associated with
an AR.
Variable Type Value / Range Description
ulStructVersion UINT32 1 Structure version of this
structure
usIocrHandle PNM_AP_IOCR_HANDLE_T 0x1000...0x107F,0x2000...0x207F The handle of the IOCR
to configure
usDeviceHandle PNM_AP_DEVICEHANDLE_T Valid device handle The handle of the AR to
associate this IOCR to
ulFlags UINT32 0
ulIocrProp UINT32 1…3 Properties of the IOCR
usIocrType UINT16 1…3 Type of the IOCR
abMcastMACAddr[6] UINT8[] 00:00:00:00:00:00 Multicast MAC Address
to be used for this IOCR.
Reserved for future
usage. Set to zero for
compatibility.
usDataLen UINT16 1… 1440 Length of the data part of
(% 4 == 0) the IOCR without Frame
Header and APDU
Status (C_SDU Length).
Must be a multiple of 4.
usSendClockFact UINT16 8 … 128 Send Clock Factor to use
for this IOCR. Only
values with power of 2
are allowed.
usReductRatio UINT16 1 … 512 Reduction Ratio for this
IOCR. Only values with
power of 2 are allowed.
usPhase UINT16 1 … 512 Phase for this IOCR.
Must be smaller or equal
usReductionRatio
usSequence UINT16 0 Currently unused. Set to
zero for future
compatibility
usDataHoldFact UINT16 1 … 7680 Data Hold Factor for this
IOCR
ulFrameSendOffs UINT32 0 … 3999999 Frame send offset for
RTC Class 3 IOCRs. Set
to zero for non RTC
Class 3 IOCRs
usDpmOffset UINT16 0 … 5700 Start address for IOCR
(% 4 == 0) data in DPM Input or
Output Area. Must be 4-
byte aligned.
Table 16: Structure PNM_AP_CFG_IOCR_DATA_T
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 23/244
Parameter descriptions
Parameter ulStructVersion
Structure version of this structure. Used for future extensions of this structure.
Parameter usIocrHandle
The parameter usIocrHandle is a reference to the IOCR object to be configured. The following
values are defined
Value range Symbolic name Usage
0x1000 - 0x103F PNM_AP_IOCR_HANDLE_INPUT_FIRST Input IOCR for RT Class 1 / RT Class 3
0x1040 - 0x107F PNM_AP_IOCR_HANDLE_INPUT_LAST Input IOCR for RT Class 1
0x2000 - 0x203F PNM_AP_IOCR_HANDLE_OUTPUT_FIRST Output IOCR for RT Class 1 / RT Class 3
0x2040 - 0x207F PNM_AP_IOCR_HANDLE_OUTPUT_LAST Output IOCR for RT Class 1
Table 17: Parameter usIocrHandle
Parameter ulIocrProp
The IOCR properties parameter ulIocrProp is a bit field describing the IOCR in more detail. The
following values are currently defined
Symbolic name Numeric value Usage
PNM_AP_CFG_IOCR_PROP_RT_CLASS_1_LEGACY 0x01 RT_CLASS_1
PNM_AP_CFG_IOCR_PROP_RT_CLASS_1 0x02 RT_CLASS_1
PNM_AP_CFG_IOCR_PROP_RT_CLASS_3 0x03 RT_CLASS_3 (IRT)
Table 18: IOCR properties parameter ulIocrProp
Parameter usIocrType
This parameter determines the type of the IOCR. Due to the internal firmware structure, the type is
determined by the IOCR's handle value.
Symbolic name Numeric value Usage
PNM_AP_CFG_IOCR_TYPE_INPUT 1 For Input IOCR with 0x1000 <= usIocrHandle <= 0x107F
PNM_AP_CFG_IOCR_TYPE_OUTPUT 2 For Output IOCR with 0x2000 <= usIocrHandle <= 0x207F
Table 19: Type parameter usIocrType
Parameter abMcastMacAddr
This parameter is reserved for future usage. Set to zero.
Parameter usDataLen
The length of data part of the IOCR is defined by this parameter. It determines how many byte the
PROFINET IO Controller firmware will copy to / from the DPM Input / Output Area for this IOCR.
Internally, the data exchange is restricted to 4 byte- aligned operations, thus the parameter
usDataLen must be a multiple of 4.
The PROFINET IO Controller will internally pad the IOCR data block (CSDU) to the minimum size
of 40 byte if a value smaller than 40 byte is specified. This does not affect the used memory space
in DPM area. E.g. if a usDataLen = 20 byte is specified, a block of 20 byte will be used in DPM and
the IOCR C_SDU length will be 40.
When computing the length of an IOCR, the process data, provider states and consumer states
must be considered.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 24/244
Parameter usSendClockFact, usReductRatio and usPhase
These parameters are used to configure the cycle time of the IOCR and thus the associated AR
and device. PROFINET uses the concept of a Macro and Micro Cycle to provide some kind of
flexibility for Process Data Timing. The sendclock factor determines the base clock for the IOCR
(The Micro Cycle). The Send Cycle interval is calculated as follows:
usSendClockFact * 31.25 µs
All RT Class 3 IOCRs must use the same send clock factor. This micro cycle is then multiplied by
the reduction ratio usReductRatio to define the Data Cycle (Macro Cycle). The reduction ratio may
be different for different IOCRs. The data cycles defines the process data exchange interval and is
calculated as follows
usReductRatio * usSendclockFact * 31.25 µs
A network telegram will be issued for an IOCR every data cycle. Finally, the parameter usPhase
configures in which Send Cycle of a Data Cycle the IOCR shall be transmitted. This is especially
useful in case of RT Class 3 IOCR as the Data Cycles of all RT Class 3 devices are synchronized.
It is thus possible to distribute the network load more homogenous.
Figure 6: Definition of send clock factor, reduction ratio and phase
The following limits apply to these parameters:
8 <= usSendClockFact <= 128 (allowed values for IO Controller see Technical data, for IO
Devices see their GSDML)
usSendClockFact of all RT Class 3 IOCRs must be identical
1 <= usReduction <= 512 for RT Class 1 IOCRs (allowed values for IO Devices see their
GSDML)
1 <= usReduction <= 16 for RT Class 3 IOCRs (allowed values for IO Devices see their
GSDML)
1 <= usPhase <= usReduction for one IOCR
Parameter usSequence
Currently not used. Set to zero for future compatibility.
Parameter usDataHoldFact
This parameter defines the timeout for the IOCR watchdog. If no IOCR data could be exchanged
for usDataHoldFact Data Cycle repetitions, the AR will be aborted with a timeout error. The Data
Hold Timeout time can be calculated as follows:
Data Hold Timeout = (usDataHoldFact + 1) * usReductRatio * usSendclockFact * 31.25
[microseconds]
The maximum allowed value for the Data Hold Timeout is 1,92 seconds.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 25/244
It is strongly recommended to set this timeout to a value greater or equal than 3. Lower values
might cause problems with occasional network transmission failures due to external
electromagnetic noise.
Parameter ulFrameSendOffs
This parameter defines the send offset of the IOCR frame in respect to send clock cycle start. It is
used in RT Class 3 mode. The parameter must match the corresponding value in the IR Data Sets
of the associated device. In RT Class 1 mode set this parameter to 0.
Parameter usDpmOffset
This parameter defines where the PROFINET IO Controller will take the data for an Output IOCR
from the DPM Output Area or to put the data of an Input IOCR into the DPM Input Area. The value
must be 4-byte aligned due to the internal implementation oft the PROFINET IO Controller. The
following image shows the relationships between the parameter usDPMOffset, usDataLen and the
DPM Area. The sum of usDPMOffset and usDataLen shall not exceed the length of DPM Area
(5700 byte for Ouput Image, 5652 byte for Input Image).
Figure 7: Memory mapping of IOCR data (CSDU) to DPM input/output area
Internal handling
The PROFINET IO Controller uses two tables to manage all the configured IOCR objects: one
table to hold information about the input IOCRs and one table to hold the information about the
output IOCRs. Both IOCR types are addressed by an IOCR handle of the type
PNM_AP_IOCR_HANDLE_T.
Note: Due to the internal firmware structure a special constraint applies to the frame id of any
input IOCRs and the frame id of IRT output IOCRs. Thus the frame id is automatically
generated from the IOCR handle.
Depending on the IOCR's handle, the IOCR Type and the direction the PROFINET IO Controller
will internally generate a frame id for the associated IOCR.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 26/244
IOCR Handle RTC Class Frame Id Remark
0x1000 to 0x103F RTC1 Legacy 0xC000 to 0xC03F -
RTC1 0x8000 to 0x803F -
RTC3 0x0100 to 0x013F -
0x1040 to 0x107F RTC1 Legacy 0xC040 to 0xC07F -
RTC1 0x8040 to 0x807F -
0x2000 to 0x203F RTC1 Legacy - For these output IOCRs the frame id to use is
specified by the PROFINET IO Device on
Startup
RTC1 - For these output IOCRs the frame id to use is
specified by the PROFINET IO Device on
Startup
RTC3 0x0200 to 0x023F -
0x2040 to 0x207F RTC1 Legacy - For these output IOCRs the frame id to use is
specified by the PROFINET IO Device on
Startup
RTC1 - For these output IOCRs the frame id to use is
specified by the PROFINET IO Device on
Startup
Table 20: Internally generated frame id values
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 27/244
2.5.6 Submodule Object
This section describe the basic parameters of a Submodule
Variable Type Value / Description
Range
ulStructVersion UINT32 1 Structure version used for further
extensions to this packet.
usSubmoduleHandle PNM_AP_SUBMODULE_HANDLE_ 1...2048 Submodule Handle
T
usDeviceHandle PNM_AP_DEVICEHANDLE_T 1...128 AR this submodule is associated
to
usInputIocrHandle PNM_AP_IOCR_HANDLE_T 0x1000 to Input IOCR associated with this
0x107F submodule
usOutputIocrHandle PNM_AP_IOCR_HANDLE_T 0x2000 to Output IOCR associated with this
0x207F submodule
ulModuleIdentNumber UINT32 any Module identifier according to
GSDML
ulSubmoduleIdentNumber UINT32 any Submodule identifier according to
GSDML
ulApi UINT32 Submodule API according GSDML
usSlot UINT16 Submodule slot according device
configuration
usSubslot UINT16 Submodule subslot according
device configuration
usSubmoduleProperties UINT16 Properties of the Submodule
usDataLenInput UINT16 0...1439 Length of the input data this
submodule provides according to
GSDML
usDataLenOutput UINT16 0...1439 Length of the output data this
submodule consumes according to
GSDML
usFrameOffsetInput UINT16 0...1439 Offset within the Input IOCR where
the input process data and
provider status shall be placed
usFrameOffsetOutput UINT16 0...1439 Offset within the Output IOCR
where the output process data and
provider status shall be placed
usIOCSFrameOffsetInput UINT16 0...1439 Offset within the Input IOCR where
the output consumer status shall
be placed
usIOCSFrameOffsetOutput UINT16 0...1439 Offset within the Output IOCR
where the input consumer status
shall be placed
Table 21: Structure PNM_AP_CFG_SUBMODULE_DATA_T - Basic parameters of a submodule
Parameter descriptions
Parameter ulStructVersion
Version of this configuration structure. Used for future extensions.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 28/244
Parameter usSubmoduleHandle
The usSubmoduleHandle can be freely chosen from the user within the allowed range. It is a
globally unique handle associated with a submodule. Each submodule within the whole
configuration must be assigned an unique handle. This handle will be used in other services to
reference to the submodule. (E.g. Record Object Read/Write)
The following values are valid submodule handles:
Value Symbolic name Description
1– PNM_AP_IOD_SUBMODULE_HANDLE_FIRST – Handle to a submodule associated with a
0x0800 PNM_AP_IOD_SUBMODULE_HANDLE_LAST particular PROFINET IO Device.
0xFFF0 PNM_AP_IOC_INTERFACE_SUBMODULE_HANDLE Handle to virtual submodule referencing the
PROFINET IO Controller PD Interface
submodule
0xFFF1 PNM_AP_IOC_PORT0_SUBMODULE_HANDLE Handle to virtual submodule referencing the
PROFINET IO Controller PD Port 1
submodule
0xFFF2 PNM_AP_IOC_PORT1_SUBMODULE_HANDLE Handle to virtual submodule referencing the
PROFINET IO Controller PD Port 2
submodule
Table 22: Values of valid submodule handles
Parameter usDeviceHandle
The submodule will be associated with the AR referenced by usDeviceHandle. This is used
when establishing the connection with a PROFINET IO Device in order to verify the configuration
of this particular device.
Parameters UsInputIocrHandle, usOutputIocrHandle
Each submodule must be associated with an Input IOCR, which is used to transfer the submodules
input process data and provider status and output process data consumer status to the PROFINET
IO Controller. Likewise each submodule must be associated with an Output IOCR which is used
the transfer the submodules output process data and provider status and input process data
consumer status to the PROFINET IO Device. The referenced IOCRs must be associated with the
same AR as referenced by parameter usDeviceHandle.
Parameters ulModuleIdenNumber, ulSubmoduleIdentNumber
The identification numbers are unique IDs defined by the PROFINET IO Device vendor within the
GSDML file. They are used to uniquely identify the Module and Submodule
Note: The Module ID of Submodules with same ulApi and ulSlot must be identical.
Parameters ulApi, usSlot, usSubslot
The parameters ulApi, usSlot, usSubslot describe where a particular Submodule has been
configured within the PROFINET IO Device. These parameters depend on the actual configuration
of the PROFINET IO Device. Allowed values are described in the GSDML file of the device.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 29/244
Parameter usSubmoduleProperties
The usSubmoduleProperties is a bit field describing various properties of the submodule. The
following flags are defined
Flag Numeric Usage
value
PNM_AP_CFG_SUBMODULE_PROPERTIES_INPUT 0x0001 Must be set if usDataLenInput > 0 or
usDataLenOutput == 0
PNM_AP_CFG_SUBMODULE_PROPERTIES_OUTPUT 0x0002 Must be set if usDataLenOutput > 0
Table 23: Parameter usSubmoduleProperties
Parameters usDataLenInput, usDataLenOutput
The parameters usDataLenInput and usDataLenOutput specify the lengths of the submodules
input and output process data. It only contains the IO data length without IOPS. If a submodule has
neither input nor output data it is considered to be an input submodule with 0 byte of process data.
As consequence, an input provider status and input consumer status must still be allocated within
the Input and Output IOCRs associated with this submodule.
Parameters usFrameOffsetInput, usFrameOffsetOutput, usIOCSFrameOffsetInput,
usIOCSFrameOffsetOutput
These parameters describe the placement of the input and output process data and its associated
provider and consumer states within the Input and Output IOCRs and the DPM. According to
PROFINET Specification:
usFrameOffsetInput (1) and usIOCSFrameOffsetOutput (2) must be valid for input
submodules. These are submodule with input process data.
usFrameOffsetOutput (3) and usIOCSFrameOffsetInput (4) must be valid for output
submodules. These are submodules with output process data.
usFrameOffsetInput (1), usIOCSFrameOffsetOutput (2), usFrameOffsetOutput (3) and
usIOCSFrameOffsetInput (4) must be valid for input-output submodules. These are
submodule with input and output process data.
The length of the provider and consumer data status is fixed to one byte. The mapping of the
submodules data to IOCRs and DPM areas is shown in the following figure:
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 30/244
Figure 8: Mapping of submodule data to IOCRs and DPM areas
usDPMOffset and usDataLen are parameterized in Configure IOCR Service
Internal handling
The controller maintains submodule handle to hold any information related to a particular
submodule in Submodule table. The table entries are addressed by a submodule handle of type
PNM_AP_SUBMODULE_HANDLE_T
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 31/244
2.5.7 Record Object
Record object will used to hold startup record data for parameterization of the submodules while
establishing the associated AR.
2.5.7.1 Overview
This section describes the structure of the various record related configuration structures.
Manufacturer specific record data: Used to hold manufacturer specific data defined in the
GSDML file.
Profinet specific record data: Used to hold PDev specific parameters for example port
settings, neighborhood information and the planning data for IRT. Each PDev parameter has
its own structure. Such structure is identical for configuring PROFINET IO Controller and
PROFINET IO Device
The following table shows the supported record structure. Each record structure is identified by
means of a parameter type.
Type Symbolic Name Supported by Description
0 PNM_AP_CFG_RECORD_DATA_T IO-Device Contains manufacturer specific record data
1 PNM_AP_CFG_PRM_PDPORTDATACHECK IO-Device Contains a PD Port Data Check configuration
IO-Controller to be written to a Port submodule. See section
PNM_AP_CFG_PRM_PDPORTDATA_CHEC
K_T structure on page 35.
2 PNM_AP_CFG_PRM_PDPORTDATAADJUST IO-Device Contains a PD Port Data Adjust configuration
IO-Controller to be written to a Port submodule. See
PNM_AP_CFG_PRM_PDPORTDATA_ADJU
ST_T structure
3 PNM_AP_CFG_PRM_PDIRDATA_PDIRGLOB IO-Device Contains a PD IR Data Adjust Global
ALDATA IO-Controller configuration to be written to the interface
submodule of the PROFINET Controller
Firmware. See
PNM_AP_CFG_PRM_IRDATA_GLOBAL_T
structure
4 PNM_AP_CFG_PRM_PDIRDATA_PDIRFRAM IO-Device Contains a PD IR Data Adjust Frame
EDATA IO-Controller configuration to be written to an Interface
submodule. See
PNM_AP_CFG_PRM_IRDATA_FRAME_T
structure
5 PNM_AP_CFG_PRM_PDIRDATA_PDIRBEGI IO-Device Contains a PD IR Data Adjust BeginEnd
NENDDATA IO-Controller configuration to be written to a Port
submodule. See
PNM_AP_CFG_PRM_IRDATA_PHASES_T
structure
6 PNM_AP_CFG_PRM_PDSYNCDATA IO-Device Contains a Sync Data for SyncID 0
IO-Controller Configuration to be written to an Interface
Submodule. See
PNM_AP_CFG_PRM_SYNC_T structure
7 PNM_AP_CFG_PRM_PDINTFMRPDATACHEC IO-Device Contains a PD Interface MRP Data Check
K IO-Controller Configuration to be written to a Interface
Submodule. See
PNM_AP_CFG_PRM_PDINTFMRPDATACH
ECK_T structure
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 32/244
Type Symbolic Name Supported by Description
8 PNM_AP_CFG_PRM_PDINTFMRPDATAADJU IO-Device Contains a PD Interface MRP Data Adjust
ST IO-Controller Configuration to be written to a Interface
Submodule. See.
PNM_AP_CFG_PRM_PDINTFMRPDATAADJ
UST_T structure
9 PNM_AP_CFG_PRM_PDPORTMRPDATAADJU IO-Device Contains a PD Port MRP Data Adjust
ST IO-Controller Configuration to be written to a Port
Submodule. See section
PNM_AP_CFG_PRM_PDPORTMRPDATAA
DJUST_T structure on page 50.
10 PNM_AP_CFG_PRM_PDPORTFODATACHECK IO-Device Contains a PD Port FO Data Check
configuration to be written to a Port
Submodule. See
PNM_AP_CFG_PRM_PDPORTFODATACHE
CK_T structure on page 51.
11 PNM_AP_CFG_PRM_PDPORTFODATAADJUS IO-Device Contains a PD Port FO Data Adjust
T configuration to be written to a Port
Submodule. See
PNM_AP_CFG_PRM_PDPORTFODATAADJ
UST_T structure
12 PNM_AP_CFG_PRM_PDNCDATACHECK IO-Device Contains a PD NC Data check configuration
to be written to an Interface/Port Submodule.
See
PNM_AP_CFG_PRM_PDNCDATACHECK_T
structure
13 PNM_AP_CFG_PRM_PDINTERFACEADJUST IO-Device Contains a PD Interface Adjust Configuration
IO-Controller to be written to an Interface Submodule. See
PNM_AP_CFG_PRM_PDINTERFACEADJUS
T_T structure
14 PNM_AP_CFG_PRM_PDINTERFACEFSUDAT IO-Device Contains a PD Interface FSU Data Adjust
AADJUST IO-Controller Configuration to be written to an Interface
Submodule. See
PNM_AP_CFG_PRM_PDINTERFACEFSUD
ATAADJUST_T structure
15 PNM_AP_CFG_PRM_ARFSUDATAADJUST IO-Device Contains an AR FSU Data Configuration to be
IO-Controller written to a Device. See
PNM_AP_CFG_PRM_AR_FSU_PARAMETE
RS_T structure
16 PNM_AP_CFG_PRM_ISOCHRONOUSMODEDA IO-Device Conatins an Isochronous Mode Data
TA configuration to be written to a
submodule.See
PNM_AP_CFG_PRM_ISOCHRONOUSMOD
EDATA_T structure
17 PNM_AP_CFG_PRM_ISOCHRONOUSCONTRO IO-Controller Contains a Isochronous Controller Data
LLERDATA_T parameter. See
PNM_AP_CFG_PRM_ISOCHRONOUSCONT
ROLLERDATA_T structure
18 PNM_AP_CFG_PRM_PDINTERFACECIMSNM IO-Device, IO- Contains PD Interface CIM SNMP Adjust
PADJUST Controller parameter (Secuity Class 1) to be written to
an Interface Submodule. See
PNM_AP_CFG_PRM_PDINTERFACE_CIMS
NMPADJUST_T structure.
19 PNM_AP_CFG_PRM_LOCAL_SENDCLOCK IO-Controller Contains the internal SendClockFactor to be
used by IO Controller. See
PNM_AP_CFG_PRM_
LOCAL_SENDCLOCK_T structure.
Table 24: Parameter usPrmType
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 33/244
Internal handling
The record parameters are internally stored within a storage associated with the AR. The
record data is ordered and distinguished by submodule and record index. The record
storage is a memory buffer where all record parameters of the submodules of one AR are
stored. Please refer to section Technical data on page 5 for details on the available
memory amount for startup record object parameterization.
Additionally to the record data, each parameter consumes some byte for management
information.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 34/244
2.5.7.2 PNM_AP_CFG_RECORD_DATA_T structure
This record structure is used to configure manufacturer specific parameter defined in the GSDML
file.
Structure description
Variable Type Value / Range Description
ulStructVersion UINT32 1 Structure version of this structure
usIndex UINT16 1 … 0x7FFF The index of the manufacturer specific record object
usTransferSequence UINT16 any The transfer sequence for the record object
abRecordData[] UINT8[] any Record data
Table 25: PNM_AP_CFG_RECORD_DATA_T structure
Parameter descriptions
Parameter ulStructVersion
Version of this structure.
Parameter usIndex
The record object index of the record object to write. This parameter is provided in the GSDML file.
Parameter usTransferSequence
This parameter can be used to configure the order in which the record object shall be written. This
value is provided in the GSDML file of the PROFINET IO Device. The default value is zero.
Parameter abRecordData[]
This parameter contains the payload (the actual record data to be written). The length of the data is
determined from the packet length.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 35/244
2.5.7.3 PNM_AP_CFG_PRM_PDPORTDATA_CHECK_T structure
This record structure is used to configure monitoring settings of the addressed Ethernet port.
Structure description
Variable Type Value / Range Description
ulStructVersion UINT32 1 Structure version of this structure
ulEnableFlag UINT32 0 ... 63 Bitmask of Checks to activate
abPeerId[] UINT8[] The alias name of the peer port expected at this port
bReserved UINT8 0 Padding. Set to zero.
ulLineDelay UINT32 The maximum line delay
usMauType UINT16 16 Expected MAU Type of this port
usSyncMode UINT16 0…3 Synchronization Mode check bitmask
Table 26: PNM_AP_CFG_PRM_PDPORTDATA_CHECK_T structure - Structure description
Parameter descriptions
Parameter ulStructVersion
Version of this structure.
Parameter ulEnableFlag
This bitmask which of the following settings should be applied to the device. The following bits are
defined
Name Numerical Usage
Value
PNM_AP_CFG_PRM_PDPORTDATA_ 0x0001 Validate the remote peers station name and port.
CHECK_ENABLE_FLAG_PEER_ID Associated parameter abPeerId.
PNM_AP_CFG_PRM_PDPORTDATA_ 0x0002 Validate the measured line delay against reference value
CHECK_ENABLE_FLAG_LINEDELAY given by parameter ulLineDelay.
PNM_AP_CFG_PRM_PDPORTDATA_ 0x0004 Validate the MAU type against the reference value given by
CHECK_ENABLE_FLAG_MAUTYPE parameter usMauType.
PNM_AP_CFG_PRM_PDPORTDATA_ 0x0008 Check if the port detected a network link
CHECK_ENABLE_FLAG_LINKSTATE
PNM_AP_CFG_PRM_PDPORTDATA_ 0x0010 Check if the remote peer is using the synchronization mode
CHECK_ENABLE_FLAG_SYNCMODE given by parameter usSyncMode.
PNM_AP_CFG_PRM_PDPORTDATA_ 0x0020 Validate the MAU type of this port against the MAU type
CHECK_ENABLE_FLAG_MAUTYPEMODE reported by the remote port
Table 27: PNM_AP_CFG_PRM_PDPORTDATA_CHECK_T structure - Parameter ulEnableFlag
Parameters abPeerId[255]
The expected peer port alias name of this port. The value is specified using the standard
PROFINET alias name specification. E.g. if the port shall verify that it is connected to Port 1 of a
device with a name of station "mydevice" the value of this parameter should be set to "port-
001.mydevice"
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 36/244
Parameter ulLineDelay
The maximum line delay allowed on this port in nanoseconds.
Parameter usMauType
The expected MAU type of this port.
Name Numerical Description
Value
PNM_AP_CFG_IOC_PRM_PORT_ 16 Expect a 100 MBit Full Duplex on this port.
MAUTYPE_100BASETX
Table 28: PNM_AP_CFG_PRM_PDPORTDATA_CHECK_T structure - Parameter usMauType
Parameter usSyncMode
This parameter is a bitmask activating peer checks related to synchronization.
Name Numerical Description
Value
- 0x0001 Validate measured line delay of peer port against our measurement (Maximum deviation 50
ns)
- 0x0002 Validate peer's sync masters source mac address against our sync master's source mac
address
Table 29: PNM_AP_CFG_PRM_PDPORTDATA_CHECK_T structure - Parameter usSyncMode
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 37/244
2.5.7.4 PNM_AP_CFG_PRM_PDPORTDATA_ADJUST_T structure
This record structure is used to configure settings of the addressed Ethernet port.
Structure description
Variable Type Value / Range Description
ulStructVersion UINT32 1 Structure version of this structure
ulEnableFlag UINT32 Bitmask of Adjustments to active
ulDomainBoundaryIngress UINT32 0, 1 Defines If the port should block incoming PTCP
sync frames
ulDomainBoundaryEgress UINT32 0, 1 Defines If the port should block outgoing PTCP
sync frames
ulMulticastBoundary UINT32 Bitmask defining which multicast frames shall be
blocked by this port
ulPeerToPeerBoundary UINT32 0…7 Bitmask defining which peer to peer multicast
frames shall be blocked by this port
ulDCPBoundary UINT32 0…3 Bitmask defining which DCP Frames should be
blocked by this port
usMauType UINT16 MAU Type to force on this port, supported values
see GSDML of IO Device
if used to configure IO Controller only value 16 is
supported
usLinkState UINT16 2 Link State to force on this port.
usPreambleLength UINT16 7 Ethernet Preamble Length
Table 30: PNM_AP_CFG_PRM_PDPORTDATA_ADJUST_T structure - Structure description
Parameter descriptions
Parameter ulStructVersion
Version of this structure.
Parameter ulEnableFlag
This bitmask determines which of the following settings should be applied to the device.
Name Numerical Usage
Value
PNM_AP_CFG_PRM_PDPORTDATA_ 0x0001 Configure Domain Boundary specified by parameters
ADJUST_ENABLE_FLAG_ ulDomainBoundaryIngress and ulDomainBoundaryEgress for this
DOMAIN_BOUNDARY port.
PNM_AP_CFG_PRM_PDPORTDATA_ 0x0002 Configure Multicast Boundary specified by ulMulticastBoundary
ADJUST_ENABLE_FLAG_ for this port.
MULTICAST_BOUNDARY
PNM_AP_CFG_PRM_PDPORTDATA_ 0x0004 Configure PeerToPeer Boundary specified by parameter
ADJUST_ENABLE_FLAG_ ulPeerToPeerBoundary for this port
PEERTOPEER_BOUNDARY
PNM_AP_CFG_PRM_PDPORTDATA_ 0x0008 Configure DCP Boundary specified by parameter ulDCPBoundary
ADJUST_ENABLE_FLAG_ for this port.
DCP_BOUNDARY
PNM_AP_CFG_PRM_PDPORTDATA_ 0x0010 Configure MAU Type specified by parameter usMauType for this
ADJUST_ENABLE_FLAG_MAUTYPE port.
PNM_AP_CFG_PRM_PDPORTDATA_ 0x0020 Configure Link State as specified by parameter usLinkState for
ADJUST_ENABLE_FLAG_LINKSTAT this port.
E
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 38/244
Name Numerical Usage
Value
PNM_AP_CFG_PRM_PDPORTDATA_ 0x0040 Configure the Ethernet frame preamble length as specified by
ADJUST_ENABLE_FLAG_ parameter usPreambleLength.
PREAMBLELENGTH
Table 31: PNM_AP_CFG_PRM_PDPORTDATA_ADJUST_T structure - Parameter ulEnableFlag
Parameters ulDomainBoundaryIngress, ulDomainBoundaryEgress
Use these two parameters to configure a frame filter on the corresponding port. The port will block
incoming (ulDomainBoundaryIngress) and/or outgoing (ulDomainBoundaryEgress) PTCP frames if
the parameter is set to "1".
Parameter ulMulticastBoundary
This parameter configures a frame filter for the port. The value is interpreted as an bitmask where
each bit 0 to 31 represents one multicast MAC address from the range 01:0E:CF:00:02:00 to
01:0E:CF:00:02:1F. The port will block any outgoing frame with the destination MAC equal to the
MAC address associated with the corresponding bit if the bit is set.
Parameter ulPeerToPeerBoundary
This parameter configures a frame filter for Peer To Peer Multicast frames. The value is interpreted
as a bitmask where each bit corresponds to a multicast MAC address. The port will block outgoing
frames if the corresponding bit is set. The following values are defined.
Name Numerical Usage
Value
PNM_AP_CFG_PRM_PEER_TO_PEER_BOUNDARY_BLOCK_LLDP 0x00000001 Block LLDP Frames
PNM_AP_CFG_PRM_PEER_TO_PEER_BOUNDARY_BLOCK_PTCP_DELAY 0x00000002 Block PTCP Delay Frames
PNM_AP_CFG_PRM_PEER_TO_PEER_BOUNDARY_BLOCK_PTCP_PATH 0x00000003 Block PATH Delay Frames
Table 32: PNM_AP_CFG_PRM_PDPORTDATA_ADJUST_T structure - Parameter ulPeerToPeerBoundary
Parameter ulDCPBoundary
This parameter configures a frame filter for DCP frames. The value is interpreted as a bitmask
where each bit corresponds to a DCP Multicast MAC address. The port will block outgoing frames
if the corresponding bit is set. The following values are defined.
Name Numerical Usage
Value
PNM_AP_CFG_PRM_DCP_BOUNDARY_BLOCK_IDENTIFY 0x0001 Block DCP Identify with Mac Address
01:0E:CF:00:00:00
PNM_AP_CFG_PRM_DCP_BOUNDARY_BLOCK_HELLO 0x0002 Block DCP Hello with Mac Address
01:0E:CF:00:00:01
Table 33: PNM_AP_CFG_PRM_PDPORTDATA_ADJUST_T structure - Parameter ulDCPBoundary
Parameter usMauType, usLinkState
Use these parameters to configure the connection type to use on this port. Without this setting, the
port will use autonegotiation to determine the optimum connection type automatically.
Note: Only one of the parameters is used at the same time.
In order to disable the port, set usLinkState to the value 2. The following values are allowed for the
MAU type and Link State.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 39/244
usMauType usLinkState
Name Numerical Name Numerical Value Description
Value
PNM_AP_CFG_IOC_PRM_PORT_ 16 - - Use 100 MBit Full Duplex on
MAUTYPE_100BASETX this port.
- - - 2 Disable the Port
Table 34: PNM_AP_CFG_PRM_PDPORTDATA_ADJUST_T structure - Parameter usMauType, usLinkState
Parameter usPreambleLength
Use this parameter to configure the Ethernet frame preamble length. The default value is 7.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 40/244
2.5.7.5 PNM_AP_CFG_PRM_PDINTERFACEADJUST_T structure
This structure defines PD Interface Adjust Configuration to be written to an Interface Submodule.
Structure description
Variable Type Value / Range Description
ulStructVersion UINT32 1 Structure version of this structure
ulMultipleInterfaceMode UINT32 0, 1 The interface mode to use
Table 35: PNM_AP_CFG_PRM_PDINTERFACEADJUST_T - PD Interface Adjust Configuration
Parameter descriptions
Parameter ulStructVersion
Version of this structure. Used for future extensions.
Parameter ulMultipleInterfaceMpde
This parameter shall be set to "1" to enable LLDP Multiple Interface Mode according PROFINET
Specification V2.31 or to "0" to use standard LLDP Mode as defined in PROFINET specification
V2.2.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 41/244
2.5.7.6 PNM_AP_CFG_PRM_PDINTERFACEFSUDATAADJUST_T structure
In Fast Startup Mode, the device sends DCP Hello Frames. Use this record structure to configure
these frames. The record structure is associated with the PD Interface Submodule of the
corresponding device.
Structure description
Variable Type Value / Range Description
ulStructVersion UINT32 1 Structure version of this structure
ulFSHelloMode UINT32 0…2
ulFSHelloInterval UINT32 30, 50, 100, 300, The interval between two DCP Hello Frames in ms
500, 1000
ulFSHelloRetry UINT32 1 … 15 Count of repetitions of the DCP Hello Frames
ulFSHelloDelay UINT32 0, 50, 100, 500, The initial delay in ms before the first DCP Hello shall be
1000 issued
Table 36: PNM_AP_CFG_PRM_PDINTERFACEFSUDATAADJUST_T structure - Structure description
Parameter descriptions
Parameter ulStructVersion
Version of this structure. Used for future extensions.
Parameter ulFSHelloMode
The "Hello" mode the device shall use. The following values are defined:
Name Numerical Description
value
PNM_AP_FS_HELLO_MODE_OFF 0 The device shall not issue hello mode.
PNM_AP_FS_HELLO_MODE_LINKUP 1 The device shall issue DCP Hello Frames after
LinkUp
PNM_AP_FS_HELLO_MODE_LINKUP_DELAY 2 The device shall issue DCP Hello Frames with a
delay of ulFSHelloDelay milliseconds after
Linkup.
Table 37: PNM_AP_CFG_PRM_PDINTERFACEFSUDATAADJUST_T structure - Parameter ulFSHelloMode
Parameter ulFSHelloInterval
This parameter defines the time interval in milliseconds between two DCP Hello Frames sent by
the device. The following values are valid:
Name Numerical Description
value
PNM_AP_FS_HELLO_INTERVAL_30MS 30 30 ms interval
PNM_AP_FS_HELLO_INTERVAL_50MS 50 50 ms interval
PNM_AP_FS_HELLO_INTERVAL_100MS 100 100 ms interval
PNM_AP_FS_HELLO_INTERVAL_300MS 300 300 ms interval
PNM_AP_FS_HELLO_INTERVAL_500MS 500 500 ms interval
PNM_AP_FS_HELLO_INTERVAL_1000MS 1000 1000 ms interval
Table 38: PNM_AP_CFG_PRM_PDINTERFACEFSUDATAADJUST_T structure - Parameter ulFSHelloInterval
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 42/244
Parameter ulFSHelloRetry
If no AR is established, the device will resend the DCP Hello Frame up to ulFSHelloRetry
times.
Parameter ulFSHelloDelay
This parameter defines the delay between LinkUp and the first DCP Hello Frame if mode
PNM_AP_FS_HELLO_MODE_LINKUP_DELAY is used. The following values are defined:
Name Numerical Description
value
PNM_AP_FS_HELLO_DELAY_OFF 0 No Delay. Use for
PNM_AP_FS_HELLO_MODE_LINKUP
PNM_AP_FS_HELLO_DELAY_50MS 50 50 ms delay
PNM_AP_FS_HELLO_DELAY_100MS 100 100 ms delay
PNM_AP_FS_HELLO_DELAY_500MS 500 500 ms delay
PNM_AP_FS_HELLO_DELAY_1000MS 1000 1000 ms delay
Table 39: PNM_AP_CFG_PRM_PDINTERFACEFSUDATAADJUST_T structure - Parameter ulFSHelloDelay
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 43/244
2.5.7.7 PNM_AP_CFG_PRM_AR_FSU_PARAMETERS_T structure
This record structure is used to configure the Parameter Set UUID in Fast Startup Mode. In fast
startup mode, the application of the device uses the UUID when applying remanently stored
application parameter records to the submodules. If subsequent AR connects use the same UUID,
the application will apply the stored parameters immediately. This improves the startup speed of an
AR.
Note: Depending on the AR Startup Mode, this record object is either written as first record
(Legacy Startup) or parameterized already in AR Connect (Advanced Startup). This is
done automatically within the PROFINET IO Controller protocol stack.
Structure description
Variable Type Value / Range Description
ulStructVersion UINT32 1 Structure version of this structure
ulFSParamMode UINT32 1, 2 Mode of Fast Startup Parameters
tFSParamUuid UUID A UUID associated with the parameters set
Table 40: PNM_AP_CFG_PRM_AR_FSU_PARAMETERS_T structure - Structure description
Parameter descriptions
Parameter ulStructVersion
Version of this structure. Used for future extensions.
Parameter ulFSParamMode
The mode hello mode the device shall use. The following values are defined
Name Numerical Description
value
PNM_AP_CFG_AR_PRM_FSPARAM_MODE_DISABLE 1 The device shall not use fast parameterization
PNM_AP_CFG_AR_PRM_FSPARAM_MODE_ENABLE 2 The device shall use fast parameterization
Table 41: PNM_AP_CFG_PRM_AR_FSU_PARAMETERS_T structure - Parameter ulFSParamMode
Parameter tFSParamUuid
A UUID associated the with complete parameter set associated with the device. This UUID is
generated by the engineering software.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 44/244
2.5.7.8 PNM_AP_CFG_PRM_PDINTFMRPDATACHECK_T structure
Defines PD Interface MRP Data Check Configuration to be written to a Interface Submodule
Note: The structure version used to configure MRP specific record data depends on the
attributes MaxMRP_Instances and SupportedRole defined in the GSDML file. If the
attribute MaxMRP_Instances is present or SupportedRole contains the token
“Manager (Auto)” the record data have to be encoded according to structure
version 2.
Structure description
Variable Type Value / Range Description
ulStructVersion UINT32 1,2 Structure version of this structure / Encoding to be used
when transferring the record
atCheck[] Array of Structures describing one MRP Instance
Table 42: PNM_AP_CFG_PRM_PDINTFMRPDATACHECK_T structure - Structure description
Variable Type Value / Range Description
ulStructVersion UINT32 1 Structure version of this structure
bMRP_Instance UINT8 0 … 126 Reference of this MRP Instance.
It should be ignored if ulStructVersion = 0 (no multiple
interface )
bReserved1 UINT8 0 Padding. Set to zero for future extensions
usReserved1 UINT16 0 Padding. Set to zero for future extensions
tMRP_DomainUUID UINT32 0 to 3 Bitmask specifying what to check
zulMRP_Check
tMRP_DomainUUID UUID any The MRP domain uuid to validate against
Table 43: PNM_AP_CFG_PRM_MRP_INSTANCE_DATACHECK_T structure - Structure description
Parameter descriptions
Parameter ulStructVersion
Version of this structure. This field is used for future extensions. In case of
PNM_AP_CFG_PRM_PDINTFMRPDATACHECK_T the structure version specifies the encoding
to use when writing the associated record data object:
Name Numerical Usage
Value
PNM_AP_CFG_PRM_PDINFMRPDATACHECK_VERSION_1 1 Use encoding according PROFINET
Specification V2.2. Only one MRP Instance
per device is possible (field bMRP_Instance
is ignored)
PNM_AP_CFG_PRM_PDINFMRPDATACHECK_VERSION_2 2 Use encoding according PROFINET
Specification V2.31. Multiple MRP Instances
can be defined (depends on capabilities of
device).
Table 44: PNM_AP_CFG_PRM_PDINTFMRPDATACHECK_T structure - Parameter ulStructVersion
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 45/244
Parameter bMRP_Instance
A reference to the MRP instance. Only relevant for Multiple Interface Devices. Default value is
Zero.
Parameter ulMRP_Check
A bitmask that defines which parameters should be checked. The following values are defined
Name Numerical Usage
Value
PNM_AP_CFG_PRM_MRP_CHECK_MANGER_ON 0x00000001 Enable MRP Manager Diagnosis
PNM_AP_CFG_PRM_MRP_CHECK_UUID_ON 0x00000002 Enable Validation of Peer MRP Domain UUID
Table 45: PNM_AP_CFG_PRM_MRP_INSTANCE_DATACHECK_T structure - Parameter ulMRP_Check
Parameter tMRP_DomainUUID
This parameter defines the domain uuid to check against if enabled by parameter ulMRP_Check.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 46/244
2.5.7.9 PNM_AP_CFG_PRM_PDINTFMRPDATAADJUST_T structure
This structure defines the PD Interface MRP Data Adjust Configuration to be written to a Interface
Submodule.
Structure description
Variable Type Value / Description
Range
ulStructVersion UINT32 1, 2, 3 Structure version of this structure / Encoding to be used
when transferring the record
uData UNION Union container for MRP Data adjust structure versions
Table 46: Structure PNM_AP_CFG_PRM_PDINTFMRPDATAADJUST_T - Structure description Parameter descriptions
Parameter ulStructVersion
Version of this structure. This field is used for future extensions. In case of
PNM_AP_CFG_PRM_PDINTFMRPDATAADJUST_T the structure version specifies the encoding to
use when writing the associated record data object:
Name Numerical Usage
Value
PNM_AP_CFG_PRM_PDINFMRPDATAADJUST_ 1 Use encoding according PROFINET
VERSION_1 Specification V2.2. Only one MRP Instance per
device is possible (field bMRP_Instance is
ignored)
PNM_AP_CFG_PRM_PDINFMRPDATAADJUST_ 2 Use encoding according PROFINET
VERSION_2 Specification V2.31. Multiple MRP Instances can
be defined. (Depends on capabilities of IO-
Device)
PNM_AP_CFG_PRM_PDINFMRPDATAADJUST_ 3 Use encoding according PROFINET
VERSION_3 Specification V2.31. Multiple MRP Instances can
be defined, required to configure MRP
AutoManager (Depends on capabilities of IO-
Device)
Table 47: Structure PNM_AP_CFG_PRM_PDINTFMRPDATAADJUST_T - Parameter ulStructVersion
Parameter uData
This field contains the MRP data adjust parameter. The union defines the following subfields :
Variable Type Value / Description
Range
atAdjust STRUCT - Parameter structure for version 1 and 2
atAdjustV2 STRUCT - Parameter structure for version 3
Table 48: Subfields of PD Interface Data Adjust Param
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 47/244
Parameter atAdjust
The Structure PNM_AP_CFG_PRM_MRP_V1_T shall be used to configure Interface MRP Data
Adjust according to PROFINET Specification V2.2 or V2.31. In this case the devices can be
configured as either MRP Client or MRP Manager.
Variable Type Value / Range Description
ulStructVersion UINT32 1, 2 Structure version of this structure
bMRP_Instance UINT8 0 … 126 Reference of this MRP Instance
It should be ignored if ulStructVersion = 1 (no multiple
interface)
bReserved1 UINT8 0 Padding. Set to zero for future extensions
usMrpRole UINT16 0…2 Role of the Device. Defines which field of uParam is
valid.
tMrpDomainUuid UUID UUID of the MRP domain
abMrpDomainName[240] UINT8[] MRP Domain Name, minimum one character
uParamV1 UNION MRP Client or Manager Parameters
Table 49: Structure PNM_AP_CFG_PRM_MRP_V1_T - Structure description
Parameter atAdjust2
The Structure PNM_AP_CFG_PRM_MRP_V2_T provides in addition to The Structure
PNM_AP_CFG_PRM_MRP_V1_T the possibility to configure IO-Devices as AutoManger.
Variable Type Value / Range Description
ulStructVersion UINT32 3 Structure version of this structure
bMRP_Instance UINT8 0 … 126 Reference of this MRP Instance
bReserved1 UINT8 0 Padding. Set to zero for future extensions
usMrpRole UINT16 0…3 Role of the Device. Defines which field of uParam is
valid.
tMrpDomainUuid UUID UUID of the MRP domain
abMrpDomainName[240] UINT8[] MRP Domain Name, minimum one character
tParamV2 STRUCT MRP Client and Manager Parameters
Table 50: Structure PNM_AP_CFG_PRM_MRP_V2_T - Structure description
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 48/244
Parameter bMRP_Instance
A reference to the MRP instance. Only relevant for Multiple Interface Devices. Default value is
zero.
Parameter usMrpRole
The role of the device within the MRP ring. The following values are defined:
Name Numerical Usage
Value
PNM_AP_CFG_MRP_ROLE_DISABLE 0x00000000 MRP Disabled for this device
PNM_AP_CFG_MRP_ROLE_CLIENT 0x00000001 Device shall operate as MRP Client.
uParam.tClient contains the related parameters
PNM_AP_CFG_MRP_ROLE_MANAGER 0x00000002 Device shall operate as MRP Manager.
uParam.tManager contains the related
parameters
PNM_AP_CFG_MRP_ROLE_AUTOMANAGER 0x00000003 Device shall operate as MRP AutoManager.
uParam.tClient and uParam.tManager contain
the related parameters
Table 51: Structure PNM_AP_CFG_PRM_MRP_T - Parameter usMrpRole
Parameter tMRP_DomainUUID
This parameter defines the MRP domain UUID, the following value ar defined:
Name Usage
00000000-0000-0000-0000-000000000000 Reserved
00000000-0000-0000-0000-000000000001 – Allowed UUID for MRP domain
FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF
Parameter abMrpDomainName[240]
The domain name of the MRP domain. Must be a name with minimum length 1 according
PROFINET Name Of Station syntax. Even if MRP is disabled, a valid name must be specified.
Parameter uParamV1
This field contains MRP parameter. The union PNM_AP_CFG_MRP_PARAMS_V1_T with the
following subfields is defined:
Variable Type Value / Description
Range
tClient STRUCT - Contains MRP Client parameters
tManager STRUCT - Contains MRP Manager parameters
Table 52: Subfields of union PNM_AP_CFG_MRP_PARAMS_V1_T
Parameter uParamV2
This field contains MRP parameter. The struct PNM_AP_CFG_MRP_PARAMS_V2_T with the
following subfields is defined:
Variable Type Value / Description
Range
tClient STRUCT - Contains MRP Client parameters
tManager STRUCT - Contains MRP Manager parameters
Table 53: Subfields of struct PNM_AP_CFG_MRP_PARAMS_V2_T
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 49/244
Parameter tClient
Defines MRP Client parameters to be set when the IO-Device shall operate as MRP Client or MRP
AutoManager.
Variable Type Value / Range Description
usMRP_LNKdownT UINT16 1 … 1000 Interval between two subsequent link down frames
usMRP_LNKupT UINT16 1 … 1000 Interval between two subsequent link up frames
usMRP_usMRP_LNKNRma UINT16 1…5 Repeat count for link down/up frames
x
Table 54 Structure PNM_AP_CFG_MRP_CLIENT_PARAMS_T - Structure description
Parameter tManager
Defines MRP Client parameters to be set when the IO-Device shall operate as MRP Manager or
MRP AutoManager.
Variable Type Value / Range Description
usMRP_Prio UINT16 Priority of MRP Client
usMRP_TOPchgT UINT16 1 … 100 Interval between two subsequent topology change
frames
usMRP_TOPNRmax UINT16 1…5 How often the topology change frame should be
repeated
usMRP_TSTshortT UINT16 1… 500 Interval for ring test frames after a link change
usMRP_TSTdefaultT UINT16 1 … 1000 Interval for ring test frames in operation
usMRP_TSTNRmax UINT16 2 … 10 Number of ring test frames until a change of the ring
is recognized
Table 55: Structure PNM_AP_CFG_MRP_MANAGER_PARAMS_T - Structure description
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 50/244
2.5.7.10 PNM_AP_CFG_PRM_PDPORTMRPDATAADJUST_T structure
Defines PD Port MRP Data Adjust Configuration to be written to a Port Submodule.
Structure description
Variable Type Value / Range Description
ulStructVersion UINT32 1, 2 Structure version of this structure
tMRP_DomainUUID UUID A UUID associated with the MRP Domain
bMRP_Instance UINT8 0 … 126 Reference of a MRP instance
Table 56: Structure PNM_AP_CFG_PRM_PDPORTMRPDATAADJUST_T - Structure description
Parameter descriptions
Parameter ulStructVersion
Version of this structure. This field is used for future extensions.
In case of PNM_AP_CFG_PRM_PDPORTMRPDATAADJUST_T the structure version specifies the
encoding to use when writing the associated record data object:
Name Numerical Usage
Value
PNM_AP_CFG_PRM_PDPORTMRPDATAADJUST_ 1 Use encoding according PROFINET
VERSION_1 Specification V2.2. Only one MRP Instance per
device is possible (field bMRP_Instance is
ignored)
PNM_AP_CFG_PRM_PDPORTMRPDATAADJUST_ 2 Use encoding according PROFINET
VERSION_2 Specification V2.31. Multiple MRP Instances can
be defined. (Depends on capabilities of device)
Table 57: Structure PNM_AP_CFG_PRM_PDPORTMRPDATAADJUST_T - Parameter ulStructVersion
Parameter tMRP_DomainUUID
This parameter defines the UUID associated with a particular MRP domain. All Ports in one MRP
Domain must be configured with the same UUID.
Parameter bMRP_Instance
A reference to the MRP instance. Only relevant for Multiple Interface Devices. Default value is
zero.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 51/244
2.5.7.11 PNM_AP_CFG_PRM_PDPORTFODATACHECK_T structure
Use this record structure to configure the fiber optic check parameters of a fiber optic port. If the
corresponding limits are exceeded, the device will generate a diagnosis.
Structure description
Variable Type Value / Range Description
ulStructVersion UINT32 1 Structure version of this structure
ulMaintenanceRequiredPowerBudget UINT32 0, (1 to 999) | Maintenance Required Power Budget
0x80000000
ulMaintenanceDemandedPowerBudget UINT32 0, (1 to 999) | Maintenance Demanded Power Budget
0x80000000
ulErrorPowerBudget UINT32 0, (1 to 999) | Diagnosis Power Budget
0x80000000
Table 58: PNM_AP_CFG_PRM_PDPORTFODATACHECK_T structure
Parameter descriptions
Parameter ulStructVersion
Version of this structure. Used for future extensions.
Parameters ulMaintenanceRequiredPowerBudget,
ulMaintenanceDemandedPowerBudget and ulErrorPowerBudget
These parameters define the minimum power budget of the transmitter (the power reserve of the
transmitter) for a maintenance required, demanded or error diagnosis entry shall be generated. If
the power budget falls below the corresponding value, a diagnosis entry will be generated by the
device. The bits 0 to 30 of the value express the power budget in 0.1 db steps from 0 to 99,9. Bit
31 is a flag, which enables the particular check.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 52/244
2.5.7.12 PNM_AP_CFG_PRM_PDPORTFODATAADJUST_T structure
Use this record structure to configure the fiber optic parameters of a fiber optic port.
Structure description
Variable Type Value / Range Description
ulStructVersion UINT32 1 Structure version of this structure
ulFiberOpticType UINT32 0…3 Type of the fiber optic module
ulFiberOpticCableTyp UINT32 0 … 255 Type of the fiber optic cable
e
Table 59: PNM_AP_CFG_PRM_PDPORTFODATAADJUST_T structure - Structure description
Parameter descriptions
Parameter ulStructVersion
Version of this structure. Used for future extensions.
Parameters ulFiberOpticCableType and ulFiberOpticType
These parameters define the fiber optic connection on this port. The values are typically described
within the GSDML file of the Device. The following settings are valid.
Name Numerical Description
value
PNM_AP_CFG_FIBEROPTIC_CABLE_UNKNOWN 0 No cable specified
PNM_AP_CFG_FIBEROPTIC_CABLE_FIXED_ 1 Inside/Outside cable, fixed installation
INSTALLATION
PNM_AP_CFG_FIBEROPTIC_CABLE_FLIXIBLE_ 2 Inside/Outside cable, flexible installation
INSTALLATION
PNM_AP_CFG_FIBEROPTIC_CABLE_OUTDOOR_ 3 Outdoor cable, fixed installation
FIXED_INSTALLATION
Table 60: PNM_AP_CFG_PRM_PDPORTFODATAADJUST_T structure - Known values for fiber optic cable type
Numerical Description
value
0 Not Adjusted
1 9 µm single mode
2 50 µm multi mode
3 62,5 µm multi mode
4 SI-POF, NA = 0.5
5 SI-PCF, NA = 0.36
6 LowNA-POF, NA = 0.3
7 GI-POF
8 GI-PCF
0x80 to 0xFF Vendor specific
Table 61: Known values for fiber optic type
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 53/244
2.5.7.13 PNM_AP_CFG_PRM_PDNCDATACHECK_T structure
This structure defines PD NC Data check configuration to be written to an Interface/Port
Submodule.
Structure description
Variable Type Value / Range Description
ulStructVersion UINT32 1 Structure version of this structure
ulEnableFlag UINT32 0…7 Bitmask specifying which checks to enable
ulMaintenanceRequiredDro UINT32 1 … 999 Maximum number of frames dropped within 1 second
pBudget until a Maintenance Required shall be generated
ulMaintenanceDemandedD UINT32 1 … 999 Maximum number of frames dropped within 1 second
ropBudget until a Maintenance Demanded shall be generated
ulErrorDropBudget UINT32 1 … 999 Maximum number of frames dropped within 1 second
until a Diagnosis shall be generated
Table 62: PNM_AP_CFG_PRM_PDNCDATACHECK_T structure - Structure description
Parameter descriptions
Parameter ulStructVersion
Version of this structure. Used for future extensions.
Parameter ulEnableFlag
This bitmask defines which of the following Ethernet frame drop limits are active and will generate
a diagnosis.
Name Numerical Description
value
PNM_AP_CFG_PRM_NC_DROP_BUDGET_ 0x00000001 Enable Maintenance Required Limit
CHECK_VALID_FLAG_MAINTENANCE_REQUIRED
PNM_AP_CFG_PRM_NC_DROP_BUDGET_ 0x00000002 Enable Maintenance Demanded Limit
CHECK_VALID_FLAG_MAINTENANCE_DEMANDED
PNM_AP_CFG_PRM_NC_DROP_BUDGET_ 0x00000004 Enable Diagnosis (Error) Limit
CHECK_VALID_FLAG_ERROR
Table 63: PNM_AP_CFG_PRM_PDNCDATACHECK_T structure - Parameter ulEnableFlag
Parameters ulMaintenanceRequiredDropBudget, ulMaintenanceDemandedDropBudget,
ulErrorDropBudget
These parameters define the maximum number of frames being dropped within one second until
the corresponding diagnosis will be activated.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 54/244
2.5.7.14 PNM_AP_CFG_PRM_IRDATA_GLOBAL_T structure
This structure defines a PD IR Data Adjust Global configuration to be written to the interface
submodule of a PROFINET Device.
Note: The structure version used to configure IRData-Global depends on the attributes
StartupMode and ForwardingMode defined in the GSDML file. If StartupMode is set to
“Advanced” or ForwardingMode is set to “Absolute” or to “Relative”, the record data shall be
encoded according to structure version 2.
Structure description
Variable Type Value / Range Description
ulStructVersion UINT32 1, 2 Structure version of this structure
tIRDataUuid UUID UUID of the IRT Parameter set
ulMaxBridgeDelay UINT32 Maximum Bridge Delay
usStartOfRedFrameId UINT16 0x0100 to 0x013F The first frame id used for IRT
usEndOfRedFrameId UINT16 0x0200 to 0x023F The last frame id used for IRT
usNumFrames UINT16 1 … 128 Number of Frames in IR Data set
bNumPorts UINT8 Number of ports of the device as specified in
GSDML
bNumPhases UINT8 1 … 16 Number of IRT Phases
ulFrameDataProperties UINT32 0…7 Common IRT Frame Properties
atPorts[] Array of Port Description structures (one for each
port)
Table 64: PNM_AP_CFG_PRM_IRDATA_GLOBAL_T structure - Structure description
Variable Type Value / Range Description
ulMaxPortTxDelay UINT32 Maximum Port TX Delay as specified in GSDML
ulMaxPortRxDelay UINT32 Maximum Port RX Delay as specified in GSDML
ulMaxLineRxDelay UINT32 Maximum Line RX Delay
ulYellowTime UINT32 125000 Length of Yellow Interval
Table 65: PNM_AP_CFG_PRM_IRDATA_PORT_T structure - Structure description
Parameter descriptions
Parameter ulStructVersion
Version of this structure. Used to specify the encoding of the PD IR Data Record. The following
values are defined:
Name Numerical Description
Value
PNM_AP_CFG_IOC_PRM_IRDATA 0x0001 To be used when the parameter is associated with the PROFINET
_GLOBAL_STRUCT_VERSION_1 Controller Firmware itself
PNM_AP_CFG_IOD_PRM_IRDATA 0x0001 To be used when the parameter is associated with a PROFINET
_GLOBAL_STRUCT_VERSION_1 Specification 2.2 Device
PNM_AP_CFG_IOD_PRM_IRDATA 0x0002 To be used when the parameter is associated with a PROFINET
_GLOBAL_STRUCT_VERSION_2 Specification 2.3 Device
Table 66: PNM_AP_CFG_PRM_IRDATA_GLOBAL_T structure - Parameter ulStructVersion
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 55/244
Parameter tIRDataUuid
This parameter defines the UUID associated with the IRT domain. All devices of an IRT domain
have are parameterized with the same UUID.
Parameter ulMaxBridgeDelay
The maximum bridge delay of the IRT Switch. This value shall be derived from the PROFINET
Device's GSDML file. An additional delay auf 100 ns must be added to the GSDML value for
"Relative Forwarding Mode".
Parameters usStartOfRedFrameId and usEndOfRedFrameId
These parameters define the range of frame ids to be forwarded synchronously. Due to the
limitations of the PROFINET IO Controller firmware the parameter usStartOfRedFrameId should be
in the range 0x0100 to 0x013F and the parameter usEndOfRedFrameIdvalues should be in the
range of 0x0200 and 0x023F. See
on page 8 for details.
Parameter usNumFrames
This parameter defines the number of frames configured for the associated IRT switch.
Parameter bNumPorts
This parameter configures the number of ports of the associated IRT switch.
Parameter bNumPhases
This parameter specifies the number of phases used in the IRT domain. A maximum of 16 phases
is supported.
Parameter ulFrameDataProperties
This parameter is a bitmask defining additional properties of IR frame set configuration
Name Numerical Description
Value
Bit 0 - Forwarding Mode
PNM_AP_CFG_FRAME_PROP_FORWARDING_ 0x00000000 The device is an absolute forwarder.
MODE_ABSOLUTE
PNM_AP_CFG_FRAME_PROP_FORWARDING_ 0x00000001 The device is a relative forwarder
MODE_RELATIVE
Bit 1 to 2 - Fast Forwarding Mode
PNM_AP_CFG_FRAME_PROP_FAST_FORWARDING 0x00000000 The switch shall forward according PROFINET
_LEGACY Specification V2.2 using Interface Destination
Mac Address
PNM_AP_CFG_FRAME_PROP_FAST_FORWARDING 0x00000002 The switch shall forward according PROFINET
_RTC3_MCAST Specification V2.3 using RTC3 Multicast
Destination Mac Addresses
PNM_AP_CFG_FRAME_PROP_FAST_FORWARDING 0x00000004 The switch shall forward according PROFINET
_MCAST Specification V2.3 using Fast Forwarding
Multicast Destination Mac Addresses
Bit 3 to 4 - Fragmentation Mode (not supported)
Table 67: Bitmask defining additional properties of IR frame set configuration
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 56/244
Parameters ulMaxPortTxDelay, ulMaxPortRxDelay, ulMaxLineRxDelay, ulYellowTime
These parameters describe device specific and engineering related port timings. The Port Delay
values are specified in the GSDML file of the device and used as input for the IRT planning
algorithm. The Line Delay and Yellow Time Parameters are output values from the planning
algorithm. For IRT/PTCP SendClocks greater or equal to 8 (250 µs) the Yellow Time is fixed to
125000 ns. All parameters use a time base of one nanosecond.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 57/244
2.5.7.15 PNM_AP_CFG_PRM_IRDATA_FRAME_T structure
This structure defines PD IR Data Adjust Frame configuration to be written to an Interface
submodule.
Structure description
Variable Type Value / Range Description
ulStructVersion UINT32 1 Structure version of this structure
usEntryId UINT16 0 … 127 Index of the frame with PD IR Data Record
usFrameId UINT16 Frame ID of the associated frame
usCSDULength UINT16 40 …1440 Length of the C_SDU of the associated frame
usPhase UINT16 1 … 16 Phase in which the frame shall be forwarded
usReduction UINT16 1 … 16 Reduction of the frame
bFrameDetails UINT8 0 ... 3 Some details about the frame (Bitmask)
bRxPort UINT8 The port where the frame shall be received from
ulFrameSendOffset UINT32 1 to 3999999 The frame send offset related to phase start
atTxPortGroups[] UINT8 Bitmask defining to which ports the frame shall be
forwarded
Table 68: PNM_AP_CFG_PRM_IRDATA_FRAME_T structure - Structure description
Parameter descriptions
Parameter ulStructVersion
Version of this structure. Used for future extensions.
Parameter usEntryId
A reference to the frame within the PD IR Data Set. Each frame of a PD IR Data set must be
associated a unique entry id. The value must be smaller than usNumFrames parameter from
PNM_AP_CFG_PRM_IRDATA_GLOBAL_T structure on page 54. This value is used internally in
the PROFINET Controller Firmware to organize the PD IR Data set.
Parameter usFrameId
The PROFINET Frame ID of the frame to forward / inject.
Parameter usCSDULength
The length of the frames C_SDU part. That is the length of the cyclically exchanged process data
and states padded to at least 40 byte.
Parameters usPhase, usReduction and ulFrameSendOffset
The parameters describe the timing properties of the frame. The reduction defines the interval
between two subsequent frames - the cyclic data exchange interval. The time base is the time
defined by usSendClockFactor from PNM_AP_CFG_PRM_IRDATA_GLOBAL_T structure on
page 54. If a reduction greater than one is used, it is required to define in which phase the frame
shall be sent. The parameter usPhase defines the phase of a frame. It must be lower or equal than
the reduction. The parameter ulFrameSendOffset defines the time offset relative to the start of a
phase when the frame shall be sent/forwarded. Time base of this parameter is one nanosecond.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 58/244
Parameter bFrameDetails
This parameter provides additional information about the frame. It is a bitmask defined as follows:
Name Numerical Description
Value
Bits 0 to 1 - Syncframe
PNM_AP_CFG_FRAME_NO_SYSNC_FRAME 0x00 Frame is no PTCP Sync Frame
PNM_AP_CFG_FRAME_PRIMARY_SYNC_FRAME 0x01 Frame is a primary Sync Frame
PNM_AP_CFG_FRAME_SECONDARY_SYNC_FRAME 0x02 Frame is a secondary Sync Frame
Table 69: PNM_AP_CFG_PRM_IRDATA_FRAME_T structure - Parameter bFrameDetails
Parameters bRxPort, atTxPortGroups[]
These parameters describe the routing of the frame. Parameter bRxPort is the source of frame. A
value of zero corresponds to the local port, a frame, which is injected by the device itself. The
parameter atTxPortGroups is a bitmask describing the ports the frame shall be forwarded to. The
0th bit corresponds to the device's local receive port.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 59/244
2.5.7.16 PNM_AP_CFG_PRM_IRDATA_PHASES_T structure
This structure defines PD IR Data Adjust BeginEnd configuration to be written to a port submodule.
Note: For structural reasons the PNM_AP_CFG_PRM_IRDATA_PHASES_T is associated
with a port submodule. Nevertheless will the parameter write occur on the associated
interface submodule (as defined by PROFINET Specification).
Structure description
Variable Type Value / Range Description
ulStructVersion UINT32 1 Structure version of this structure
atBeginEnd[] Array of Begin End Definitions define the phase
configuration of one port.
Table 70: PNM_AP_CFG_PRM_IRDATA_PHASES_T structure - Structure description
Variable Type Value / Range Description
ulTxRedBegin UINT32 0 to 3999999 Transmit Begin of Red Interval
ulTxGreenBegin UINT32 0 to 3999999 Transmit End of Red Interval
ulRxRedBegin UINT32 0 to 4000000 Receive Begin of Red Interval
ulRxGreenBegin UINT32 0 to 3999999 Receive End of Red Interval
Table 71: PNM_AP_CFG_PRM_BEGIN_END_ASSIGNMENT_T structure - Structure description
Parameter descriptions
Parameter ulStructVersion
Version of this structure. Used for future extensions.
Parameter atBeginEnd[]
This parameter contains an array of phase descriptions for one port. The array must contain
bNumPhases entries. (See PNM_AP_CFG_PRM_IRDATA_GLOBAL_T structure on page 54)
Parameters ulTxRedBegin, ulTxGreenBegin, ulRxRedBegin, ulRxGreenBegin
These parameters describe the timing of one phase of the port. The values are the output of the
planning algorithm. The time base is one nanosecond.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 60/244
2.5.7.17 PNM_AP_CFG_PRM_SYNC_T structure
This structure defines Sync Data for SyncID 0 Configuration to be written to an Interface
Submodule.
Note: Due to the limitations of the PROFINET Controller Firmware, this parameter must
describe a sync master configuration.
Structure description
Variable Type Value / Range Description
ulStructVersion UINT32 1 Structure version of this structure
tSyncDomainUuid UUID UUID of the synchronization domain
usSyncProperties UINT16 1, 2 Synchronization Properties
usSendClockFactor UINT16 8 … 128 Sync Domain Send Clock
ulPllWindow UINT32 50 … 10000 Max PLL Sync Deviation
ulSyncSendFactor UINT32 1 … 2764800000 Reduction of the Sync Frame
usPtcpTimeoutFactor UINT16 0 … 511 Sync Frame Timeout Factor
usPtcpTakeoverTimeoutFacto UINT16 0 … 511 Sync Master Takeover Timeout Factor
r
usPtcpMasterStartupTime UINT16 0 … 300 Sync Master Startup Time
bPtcpMasterPrio1 UINT8 0 ... 63 Sync Master Priority 1
bPtcpMasterPrio2 UINT8 255 Sync Master Priority 2
abSubdomainName[] UINT8[] Synchronization Domain Name
Table 72: PNM_AP_CFG_PRM_SYNC_T structure - Structure description
Parameter descriptions
Parameter ulStructVersion
Version of this structure. Used for future extensions.
Parameter tSyncDomainUuid
This parameter defines the UUID associated with the synchronization domain. All devices in one
domain must be parameterized with the same synchronization domain.
Parameter usSyncProperties
This parameter is a bitmask defining the synchronization properties of the associated device. The
following values are defined:
Name Numerical Description
Value
PNM_AP_CFG_PRM_SYNC_SYNCPROP_ROLE_SLAVE 0x0001 The associated device is configured as
synchronization slave. To be used for a
PROFINET Device.
PNM_AP_CFG_PRM_SYNC_SYNCPROP_ROLE_MASTER 0x0002 The associated device is configured as
synchronization master. To be used for the
PROFINET Controller
Table 73: PNM_AP_CFG_PRM_SYNC_T structure - Parameter usSyncProperties
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 61/244
Parameter usSendClockFactor
This parameter defines the Base Clock of the Synchronization Domain. This is the length of a
single IRT phase and thus defines the minimum cycle time for process data exchange. The value
is encoded in units of 31.25 µs. (1ms corresponds to a factor of 32)
Parameter ulPllWindow
This parameter defines the maximum allowed deviation of a synchronization slave's local PLL from
the synchronization master. If the deviation exceeds the window the synchronization will be
regarded as lost and restarted. The value is encoded in units of 1ns. The proper value is described
within the GSDML of a PROFINET Device. The value has no meaning for a Synchronization
Master.
Parameter ulSyncSendFactor
This parameter parameterizes the frequency of the synchronization frames exchanged on the bus.
The time base for this parameter is the length of one phase configured by usSendClockFactor The
synchronization master will issue a synchronization frame every ulSyncSendFactor phases
while the synchronization slave expects a synchronization frame every ulSyncSendFactor
phases. The default value for this parameter is 30.
Parameter usPtcpTimeoutFactor
This parameter defines the synchronization timeout. A synchronization slave will regard the
synchronization master as lost if no synchronization frame has been received within the specified
interval. The time base of this parameter is defined by ulSyncSendFactor. The default value
is 6.
Parameter usPtcpTakeoverTimeoutFactor
This parameter defines the synchronization takeover timeout. If the device does not receive a
synchronization frame within the specified time, the synchronization slave tries to switch to another
synchronization master of the same domain and a secondary synchronization master tries to
become the primary synchronization master. The time base if this parameter is defined by
ulSyncSendFactor. The default value is 3 for a synchronization master and 2 for a
synchronization slave.
Parameter usPtcpMasterStartupTime
This parameter defines a timeout for a synchronization master to become the primary
synchronization master. If the synchronization master does not receive a PTCP Announce frame
within the specified time, it will become the primary synchronization master. The time base for the
parameter is one second. The default value is 60.
Parameter bPtcpMasterPrio1
This parameter is a bitmask used for the Best Master Clock Algorithm.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 62/244
The following values are defined:
Name Numerical Description
Value
Bit 0 to 2 - Priority 0x00 To be used for a synchronization slave
0x01 The device is the primary synchronization master
0x02 The device is a secondary synchronization master
Bit 3 to 5 - Level 0x00 Level 0 (highest priority)
0x08 Level 1
0x10 Level 2
0x18 Level 3
0x20 Level 4
0x28 Level 5
0x30 Level 6
0x38 Level 7 (lowest priority)
Table 74: PNM_AP_CFG_PRM_SYNC_T structure - Parameter bPtcpMasterPrio1
The default value is 0x00 for a synchronization slave and 0x01 for the synchronization master.
Parameter bPtcpMasterPrio2
The parameter is used for the Best Master Clock algorithm. Only the value 0xFF shall be used.
Parameter abSubdomainName[]
This parameter defines a human readable identifier of the synchronization domain.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 63/244
2.5.7.18 PNM_AP_CFG_PRM_ISOCHRONOUSMODEDATA_T structure
Use this record structure to configure the isochronous mode data record of a submodule. The
record data will be written when establishing an IRT AR and contains information about input and
output timing of the submodule. This parameter must only be used if the submodule support
isochronous operation (GSDML file), the submodule shall operate in isochronous mode
(Application dependent) and the submodule is part of an IRT application relation. (Engineering)
Structure description
Variable Type Value / Range Description
ulStructVersion UINT32 1 Structure version of this structure
usControllerApplicationC UINT16 0x0001 to 0x0400 Reduction of the controller application relative to time
ycleFactor data cycle
usTimeDataCycle UINT16 0x0001 to 0x0400 Length of one data cycle in units of 31.25 µs.
ulTimeIOInput UINT32 0 to 32000000 Sample point of input data relative to start of next
network cycle in nanoseconds.
ulTimeIOOutput UINT32 0 to 32000000 Apply point of output data relative to start of current
network cycle in nanoseconds
ulTimeIOInputValid UINT32 0 to 32000000 Set to zero
ulTimeIOOutputValid UINT32 0 to 32000000 Time relative to start of current network cycle when the
process data is available at the device.
Table 75: PNM_AP_CFG_PRM_ISOCHRONOUSMODEDATA_T structure - Structure description
Parameter descriptions
Parameter ulStructVersion
Version of this structure. Used for future extensions.
Parameter usControllerApplicationCycleFactor
This parameter describes the reduction of the controller application relative to time data cycle of
the submodule.
Note: For simplicity, it is strongly recommended to use the value 0x0001.
Parameter usTimeDataCycle
Length of one network cycle. This is typically the same value as the sendclock of the IRT AR
associated with this submodule
Parameter ulTimeIOInput
The time when the submodule shall sample the input value. The time is relative to the next network
cycle start. This time is calculated by the engineering software based on values from the GSDML
and controller application requirements.
Parameter ulTimeIOOutput
The time when the submodule shall apply the output values. The time is relative to the current
network cycle start. This time is calculated by the engineering software bases on values from the
GSDML, controller application requirements and the network topology. This value is always greater
then ulTimeIOOutputValid.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 64/244
Parameter ulTimeIOInputValid
This parameter is defined in PROFINET specification symmetrically to ulTimeIOOutputValid, but
this time is always zero. (There is no propagation delay of the input data to the next bus cycle).
Parameter ulTimeIOOutputValid
This time indicates when the new output process data is available at the device for processing. It is
relative to the current network cycle start and depends on the network topology.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 65/244
2.5.7.19 PNM_AP_CFG_PRM_ISOCHRONOUSCONTROLLERDATA_T structure
Use this record structure to configure the isochronous controller data record of the profinet
controller. This is an artifical record, which is not related to any record object of the PROFINET
specification. Purpose of this record is to provide timing information from the engineering software
to the host application of the PROFINET IRT controller firmware
Structure description
Variable Type Value / Range Description
ulStructVersion UINT32 1 Structure version of this structure
ulTimeController UINT32 Time required by the firmware to update the Input
ApplicationInputMin DPM area from receive buffers in nanoseconds
ulTimeController UINT32 Time required by the firmware to update the transmit
applicationOutputMin buffers from Output DPM area in nanoseconds
ulTimeController UINT32 Time when the process data has been received at the
ApplicationValid profinet controller in nanoseconds
ulTimeController UINT32 Time when the host application can start handling the
ApplicationStart process data.
ulTimeController UINT32 Time when the host application is expected to finish
ApplicationEnd handling the process data
Table 76: PNM_AP_CFG_PRM_ISOCHRONOUSCONTROLLERDATA_T structure - Structure description
Parameter descriptions
Parameter ulStructVersion
Version of this structure. Used for future extensions.
Parameter ulTimeControllerApplicationInputMin
This is the time required by the PROFINET IRT Controller firmware to copy process data from
receive buffers into the DPM input area. This time depends on the configuration and other is
estimated by the engineering software.
Parameter usTimeControllerApplicationOutputMin
This is the time required by the PROFINET IRT Controller firmware to copy process data from the
DPM output area to the transmit buffers. This time depends on the configuration and other is
estimated by the engineering software.
Parameter ulTimeControllerApplicationValid
This time offset is relative to the start of the current network cycle and defines at which time the
IRT process data exchange on the network is finished. The time depends on the network topology
and is calculated by the engineering software.
Parameter ulTimeControllerApplicationStart
This time offset is relative to the start of the current network cycle and provides an estimation when
the controller application can start handling the process data. The value depends on network
topology and includes the time required to copy the input data into the DPM inpuit area.
Note: It is not expected that the host application acts upon this time point. The DPM input
area handshake mechanism will ensure that the input process data will be available to
the application around this time point.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 66/244
Parameter ulTimeControllerApplicationEnd
This time offset is relative to the start of the current network cycle and provides an estimation when
the controller application should be finished handling the process data. The value depends mainly
on the copy time from DPM output area into the transmit buffer. Using
ulTimeControllerApplicationStart the application can calculate how much time is
available for data processing.
Note: In order for the output data to be transmitted in the next bus cycle, the application shall
handshake DPM output area before this time point.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 67/244
2.5.7.20 PNM_AP_CFG_PRM_PDINTERFACE_CIMSNMPADJUST_T structure
Defines PD Interface CIM SNMP Adjust Configuration to be written to an Interface Submodule.
Structure description
Variable Type Value / Description
Range
ulStructVersion UINT32 2 Structure version of this structure
usSNMPControl UINT16 0..2 Operation mode of SNMP protocol
bReadOnlyCommunityStringLen UINT8 0..240 Length of read only community string contained in
abCommunityStrings field
bReadWriteCommunityStringLen UINT8 0..240 Length of read write community string contained in
abCommunityStrings field
abCommunityStrings UINT8[] Max 480 Combined string containing the readonly and readwrite
characters community strings value one after another.
Table 77: Structure PNM_AP_CFG_PRM_PDINTERFACE_SECURITYADJUST_T
Parameter descriptions
Parameter ulStructVersion
Version of this structure. This field is used for future extensions.
Name Numerical Usage
Value
PNM_AP_CFG_PRM_PDINTERFACECIMSNMPAD 2 Use this value.
JUST_VERSION_2
Table 78: Structure PNM_AP_CFG_PRM_PDINTERFACE_CIMSNMPADJUST_T - Parameter ulStructVersion
Parameter usSNMPControl
Paramter control operation and access mode of SNMP protocol.
Name Numerical Usage
Value
PNM_AP_CFG_PRM_SNMPCONTROL_DISABLE 0x0000 Disable the SNMP protocol
PNM_AP_CFG_PRM_SNMPCONTROL_ENABLE 0x0001 Enable Read Access via SNMP protocol
_READACCESS
PNM_AP_CFG_PRM_SNMPCONTROL_ENABLE 0x0002 Enable Read & Write access via SNMP protocol
_READWRITE
Table 79: Structure PNM_AP_CFG_PRM_PDINTERFACE_CIMSNMPADJUST_T - Parameter usSNMPControl
Parameter bReadOnlyCommunityStringLen
Length of SNMP Community String granting read-only access to MIB database. Must be set to
non-zero value if usSNMPControl is not set to PNM_AP_CFG_PRM_SNMPCONTROL_DISABLE.
Parameter bReadWriteCommunityStringLen
Length of SNMP Community String granting read-write access to MIB database. Must be set to
non-zero value if usSNMPControl is set to
PNM_AP_CFG_PRM_SNMPCONTROL_ENABLE_READWRITE.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 68/244
Parameter abCommunityStrings
Variable length field containg the Read-Only Community String and Read-Write Community String
one afterer another without zero termination:
Index [0]…[bReadOnlyCommunityStringLen-1] is the Read Only Community String value and
Index [bReadOnlyCommunityStringLen]…
[bReadOnlyCommunityStringLen+bReadWriteCommunityStringLen-1] is the Read-Write
Community String value
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 69/244
2.5.7.21 PNM_AP_CFG_PRM_ LOCAL_SENDCLOCK_T structure
Defines the internal SendClock to be used by IO Controller for SendClockAdaption. This
configuration parameter allows the application to configure the IO Controller for using a different
SendClock than the IO Devices in the network. This internal SendClock will not be visible on the
network.
The purpose is allowing larger RT network configurations to be used than would normally be
possible and supported by the firmware.
Usage of this feature is only possible under following conditions / with these limitations:
no configured AR uses a network cycle time faster than this specified SendClock
fastest possible DPM update time equals this configured SendClock
If this feature is used to sent SendClock of 2 ms, more than 64 ARs can be configured even when
their SendClock on the network is 1 ms (their Reduction needs to be >= 2 in this case).
Structure description
Variable Type Value / Range Description
ulStructVersion UINT32 1 Structure version of this structure
usSendClockFactor UINT16 8, 16, 32, 64, 128 The SendClockFactor to be used by IO Controller
Table 80: Structure PNM_AP_CFG_PRM_PDPORTMRPDATAADJUST_T
Parameter descriptions
Parameter ulStructVersion
Version of this structure. This field is used for future extensions.
Name Numerical Value Usage
PNM_AP_CFG_PRM_LOCAL_SENDCLOCK_VERSION_1 1 Use this value.
Table 81: Structure PNM_AP_CFG_PRM_PDPORTMRPDATAADJUST_T - Parameter ulStructVersion
Parameter usSendClockFactor
The SendClockFactor to calculate the internal sendclock to be used by IO Controller.
This value multipled by 31.25 us results in the actual SendClock used.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 70/244
2.5.8 Packet configuration sequence
To configure the PROFINET IO Controller using the Packet Application Interface, perform the
following steps:
Step Configuration Service / Section Page
1 Configure basic Controller parameters Configure IO Controller service 86
This service shall be used to configure Network Parameters,
PROFINET IDs and basic DPM settings of the PROFINET IO
Controller firmware.
2 Configure Controller PDEV parameters Configure IO Controller 87
This step is optional. It should be used to configure PD Parameters Parameter service
of the Controllers Port Submodules and PTCP and IRT Settings of
the Controllers Interface Submodule.
3 Configure all application relations of the Controller Configure IO Device service 89
This service shall be used to configure basic settings of an AR like
Network Parameters, PROFINET IDs and AR Type.
4 Configure all IOCRs associated with the ARs from previous step Configure IOCR service 91
This service shall be used to configure each IOCR associated with
an AR. It specifies IOCR related parameters like IOCR type, Frame
length and Position of the IOCR data within the DPM Input and
Output Areas.
5 Configure all submodules associated with the ARs and IOCRs from Configure Submodule service 92
the previous step
This service configures the PROFINET IDs of a submodule and the
data offsets within the associated IOCRs. The data offset specifies
the position of the submodules data and data states within the DPM
Input and Output Areas
6 Configure Submodule Record Parameters for all Submodules Configure Record service 93
This service is optional. It should be used to configure manufacturer
specific record data and PROFINET IO related record data (PD
related records like Neighborhood Checks, IRT and PTCP
Configuration).
7 Configure Network Topology Configure Topology service 95
This service is optional. The step is required if the Controller shall
automatically assign the PROFINET NameOfStation to unnamed
devices.
8 Issue Configuration Done Service Download Finished service 97
As last step this service shall be used by the application. The
controller will perform a final verification of the configuration and
activate communication if requested.
Table 82: Packet configuration sequence
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 71/244
2.6 Process data handling
2.6.1 Output data handling
The transmit data is data which is sent from a device to the bus. This means for the PROFINET IO
Controller that the transmit data corresponds to the output process Data. In contrast to this, the
transmit data is the input process data for the PROFINET IO Device. Remind that the viewpoint is
always the PROFINET IO Controller application.
Due to the implementation, the data sent to one remote station (the data within one frame) will be
always consistent. Additional consistency is imposed for IRT data.
2.6.1.1 Output data timing
The following figure shows the timing relations between the application, the DPM, the protocol
stack and the network. In case of pure RT communication, the “Red Phase” does not exist in the
network. However even in this case, the firmware internal event “start of red phase” exists in the
firmware.
Figure 9: Timing diagram for output data
The output data is handled as follows for the PROFINET protocol stack:
1. The application writes the data into the DPM output area. Afterwards the application toggles
the HCF_PDx_OUT_CMD handshake bit.
2. When the HCF_PDx_OUT_CMD handshake bit is toggled, the firmware will start updating its
transmit buffers from the DPM output area. If the update is finished before the next send
clock starts, the new data will be transferred in the next red phase. If the update is not
finished before the next red phase starts, data from the previous cycle will be used again in
the next red phase and the new data will be used in the next to next red phase.
3. The firmware will confirm the buffer update on the next green phase begin after finishing the
transmitt buffer update by toggling the NCF_PDx_OUT_ACK handshake bit.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 72/244
The firmware requires a certain amount of time to prepare the transmit buffers from the DPM
output area. This time is denoted as Time_TxUpd_Min. The application must toggle the
HCF_PDx_OUT_CMD handshake bit at least Time_TxUpd_Min before the next send clock starts.
Otherwise the transmit buffer update cannot be finished before the next red phase starts. If this
happens, the firmware will send the same process data as in the previous cycle to the network and
delay the new process data by an additional send clock. The time Time_TxUpd_Min depends on
the amount and structure of the process data, the firmware, version and implementation type.
Details can be found in the coresponding protocol API manual.
Due to this implementation the process data sent to the network in the red phase will be always
consistent across all frames in one red phase. That means either all or none of transmitted frames
of a red phase contain the new data.
Note: Due to this implementation the NCF_PDx_OUT_ACK handshake bit will be toggled
atmost once per cycle, when the green phase starts. Thus the firmware enforces that
the application cannot update the process data more than once per sendclock. This
leads to the following behavior:
1. The firmware is implicitly protected from being overloaded by the application due to too
frequent process data update.
2. The application is implicitly synchronized to the network timing. This can be regarded as a
light form of bus synchronization of the application process.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 73/244
2.6.1.2 Output data in context of the cifX API
When using the cifX API, the function xChannelIOWrite is used to update the output process data.
The next figure shows the sequence when this function is onvoked by the application
Figure 10: Sequence when using xChannelIOWrite
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 74/244
2.6.2 Input data handling
The receive data is data which is received at the device from the network. This means for the
PROFINET IO Controller the receive data corresponds to the input process data. In contrast to
this, the receive data is the output process data for the PROFINET IO Device. Remind that the
viewpoint is always the PROFINET Controller IO application.
2.6.2.1 Input data timing
The following figure shows the timing relations between the application, the DPM, the protocol
stack and the network. In case of pure RT communication, the “Red Phase” does not exist in the
network. However even in this case, the firmware internal event “start of red phase” exists in the
firmware.
Figure 11: Timing diagram for input data
The receive data is handled as follows for the PROFINET protocol stack:
1. The application toggles the HCF_PDx_IN_ACK handshake bit to request the DPM input area
update. The handshake toggle will be notified by the firmware, but will not cause an
immediate action.
2. When the next green phase starts, the firmware will check if the HCF_PDx_IN_ACK
handshake bit had been toggled before. If that is the case, the DPM input area will be
updated with the received process data from the preceding red phase and the previous and
possibly current green phase. This depends on receive timing in green phase. The time
needed by the firmware for doing so is denoted as Time_RxUpd. After performing the
update, the firmware will confirm the DPM input area update by toggling the
NCF_PDx_IN_CMD handshake bit.
3. The application can now access the DPM input area to get the received data.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 75/244
In order to get the receive process data within the same cycle, the application must toggle the
HCF_PDx_IN_ACK handshake bit before the next green phase starts. Otherwise, the process data
will be updated on the next-to-next green phase begin. The firmware requires a certain amount of
time to evaluate the receive buffers into the DPM input area. The maximum time required for this
task is denoted as Time_RxUpd_Max. It depends on the amount and structure of the process data,
the firmware, version and implementation type.
Note: Due to this implementation the NCF_PDx_IN_CMD handshake bit will be toggled at
most once per cycle, after the begin of the green phase when all received process data
had been evaluated. Thus, the firmware enforces that the application cannot retrieve
the process data more than once per sendclock. This leads to the following behavior:
1. The firmware is implicitly protected from being overloaded by the application due to too
frequent process data evaluation requests
2. The application is implicitly synchronized to the network timing. This can be regarded as a
light form of bus synchronization of the application process
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 76/244
2.6.2.2 Input data in context of the cifX API
If using the cifX API, the function xChannelIORead is used to retrieve the input process data. The
next figure shows the sequence when this function is invoked by the application.
Figure 12: Sequence when using xChannelIORead
Note: If using the function xChannelIORead it must be considered, that function copies the
current content of the DPM input area to the application. The update of the DPM input
area is requested after copying the data.
Note: The DPM handling follows the buffered host controlled scheme. This means for the
receive data, that the application has to call xChannelIORead initially in order to toggle
the HCF_PDx_IN_ACK, if the application uses interrupt mode. Otherwise, no initial
interrupt will be generated.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 77/244
2.6.3 Process data timing in isochronous applications
For isochronous applications, timing constraints apply to the PROFINET devices, the PROFINET
Controller Firmware and the Host application. The engineering system calculates these timings
and includes them in the configuration of the PROFINET controller firmware.
They following figure shows the timing relations for this use case. Note that in isochronous
applications each network cycle consist of a red and a green period. The isochronous data is
exchanged between the PROFINET Controller and Devices in the red period. (Realtime Class 3
traffic)
Figure 13: Process data timing
In isochronous applications, the PROFINET Devices are required to acquire the input values at a
time point T_IOInput, before the next cycle starts. Likewise, the output values are to be applied at
time T_IOOutput after the cycle start. While the T_IOInput time only depends on the capabilities of
a particular device, the T_IOOutput value also depends on length of the red period. The length of
the red period in turn depends on the number of devices in the configuration, the amount of
process data to be exchanged and the network topology.
The length of the red period also influences the processing time available for the PROFINET
Controller Application. As shown in the image, right after the red period ends, the controller
firmware will transfer the input process data into the Dual Port Memory. Afterwards the application
can access and process the data. Finally, the PROFINET Controller Firmware will transfer the
output process data into internal buffers ready for transmission in the next red period.
The PROFINET Controller implementation of the Dual Port Memory Process Data Handshake
mechanism simplifies the application handling. Calling the cifX API Function xChannelIORead will
block until the process data of the current cycle is available.
The PROFINET Controller firmware implements a monitoring mechanism, which takes timestamps
at some critical points within this processing loop: T_InputUpdateStart, T_InputUpdateFinish,
T_OutputUpdateStart and T_OutputUpdateFinish. This timing information is placed in the extended
status block. Additionally, the firmware can be configured to provide this information in the input
area as well. In both places, the timing information is synchronized with the DPM input area
handshake.
In order to provide the PROFINET Controller Application with an estimation about the available
processing time, the Configuration Parameter Isochronous Controller Data has been defined. It is
an artificial Parameter for the Controller generated by the engineering system. (e.g. Sycon.NET)
The Application can read this parameter using the Get Ioc Parameter Service.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Getting started 78/244
2.6.4 Start / Stop Communication
As described in section IOC Object (page 2.5.2) the application has the possibility to start
communication automatically (Automatic startup mode) after power on or manually (Application
controlled mode) using the generic Start / Stop communication service defined in DPM Manual
[(see reference [2])
The following describes the possible scenarios when handling Start / Stop Communication
requests:
Start Communication:
Before the communication is started (Busstate set to “ON”), the controller checks, whether
there is another bus participant with the same nameOfStation or IP address (conflict
detection). If:
Conflict detected: Bus state remains “Off”. Error code is entred in internal Logbook. In this
case the IO-Controller will never establish the configured ARs, even if this conflict is solved
afterwards. The application shall once again try to start the communication.
No conflict detected: Bus state is set to “ON” and HIL_COMM_COS_BUS_ON flag located
in the ulCommounicationCOS field is set to „true“. The IO-Controller tries to establish all
configured ARs
Note: Please note that start communication confirmation may be delayed for few
seconds due to conflict detection timeout (ARP and DCP timeouts).
Stop Communication:
The stack follows this request in any case. As a result, all established ARs are aborted and
HIL_COMM_COS_BUS_ON flag is cleared. The IP address configuration remains
unchanged.
2.6.5 Conflict detection at runtime
The firmware continuously checks the network for NameOfStation or IP address conflicts.
If a conflict is detected at run-time the following is applied:
Bus state remains unchanged “ON”
All ARs remains established. But no AR will be re-established when is aborted.
Conflict error is indicated using Logbook service and Extended Diagnosis.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 79/244
3 Application interface
This section contains the description of all packets of the application interface.
3.1 Configuring the IO-Controller stack
This section contains the description of packets to configure the PROFINET IO Controller stack.
3.1.1 Configure OEM Parameter service
The application can use the Configure OEM Parameter service to configure various vendor specific
parameters of the firmware. The usage of this service is optional, but might be required for proper
brand labeling.
Note: The service can only be used, if bus communication is deactivated. It can also be
performed after Configure IO Controller service (page 86), if the start mode is
controlled by the application. In general, parameters affected by this service will not be
reset to power-on values, when the configuration is deleted. If this is desired, either a
system reset or power cycle must be performed. Exception from this rule are
parameters, which overwrite configuration values.
3.1.1.1 PNM_AP_CFG_OEMPRM_REQ_T request
Packet structure reference
typedef struct PNM_AP_CFG_OEMPRM_SOFTWARE_VERSION_Ttag
PNM_AP_CFG_OEMPRM_SOFTWARE_VERSION_T;
struct PNM_AP_CFG_OEMPRM_SOFTWARE_VERSION_Ttag
{
/** structure version of this structure */
uint32_t ulStructVersion;
uint16_t usReserved;
uint8_t bPrefix;
uint8_t bPadding;
uint16_t usVersionMajor;
uint16_t usVersionMinor;
uint16_t usVersionBugfix;
};
typedef struct PNM_AP_CFG_OEMPRM_ALARM_HANDLING_Ttag PNM_AP_CFG_OEMPRM_ALARM_HANDLING_T;
struct PNM_AP_CFG_OEMPRM_ALARM_HANDLING_Ttag
{
uint32_t ulStructVersion;
/** Automatic Alarm handling flags
* The definition of the ulAlarmHandlingFlags are \ref
PNM_AP_CFG_ALARM_HANDLING_FLAGS_Etag enumeration. */
uint32_t ulAlarmHandlingFlags;
};
typedef struct PNM_AP_CFG_OEMPRM_DEVICE_IDENTITY_Ttag
PNM_AP_CFG_OEMPRM_DEVICE_IDENTITY_T;
struct PNM_AP_CFG_OEMPRM_DEVICE_IDENTITY_Ttag
{
uint32_t ulStructVersion;
uint16_t usVendorId;
uint16_t usDeviceId;
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 80/244
uint16_t usInstance;
};
typedef enum
{
/** Set input data of a device to zero when associated connection is lost */
PNM_AP_CFG_OEMPRM_INPUTDATAMODE_ZERO = 0,
/** Hold last received input data of a device when associated connection is lost */
PNM_AP_CFG_OEMPRM_INPUTDATAMODE_HOLDLASTVALUE = 1,
} PNM_AP_CFG_OEMPRM_INPUTDATAMODE_E;
typedef struct PNM_AP_CFG_OEMPRM_INPUTDATAMODE_Ttag PNM_AP_CFG_OEMPRM_INPUTDATAMODE_T;
__HIL_PACKED_PRE struct __HIL_PACKED_POST PNM_AP_CFG_OEMPRM_INPUTDATAMODE_Ttag
{
uint32_t ulStructVersion;
uint8_t bInputDataMode;
} ;
enum PNM_AP_CFG_OEMPRM_TYPE_Etag
{
PNM_AP_CFG_OEMPRM_SOFTWARE_VERSION = 1,
PNM_AP_CFG_OEMPRM_ALARM_HANDLING = 4,
PNM_AP_CFG_OEMPRM_DEVICE_IDENTITY = 5,
PNM_AP_CFG_OEMPRM_INPUTDATAMODE = 6,
};
typedef enum PNM_AP_CFG_OEMPRM_TYPE_Etag PNM_AP_CFG_OEMPRM_TYPE_E;
/* parameter union */
typedef union PNM_AP_CFG_OEMPRM_UNION_Ttag PNM_AP_CFG_OEMPRM_UNION_T;
union PNM_AP_CFG_OEMPRM_UNION_Ttag
{
PNM_AP_CFG_OEMPRM_SOFTWARE_VERSION_T tSoftwareVersion;
PNM_AP_CFG_OEMPRM_ALARM_HANDLING_T tAlarmHandling;
PNM_AP_CFG_OEMPRM_DEVICE_IDENTITY_T tDeviceIdentity;
PNM_AP_CFG_OEMPRM_INPUTDATAMODE_T tInputDataMode;
};
/* allowed values for field ulStructVersion */
#define PNM_AP_CFG_OEMPRM_STRUCT_VERSION_1 (0x0001)
/** request packet data */
typedef struct PNM_AP_CFG_OEMPRM_DATA_Ttag PNM_AP_CFG_OEMPRM_DATA_T;
struct PNM_AP_CFG_OEMPRM_DATA_Ttag
{
/** structure version of this structure */
uint32_t ulStructVersion;
/** identifier see \ref PNM_AP_CFG_PRM_TYPE_E */
uint16_t usPrmType;
/** Reserved (Padding) */
uint16_t usPadding;
/** parameter data */
PNM_AP_CFG_OEMPRM_UNION_T uData;
} ;
/** request packet */
typedef struct PNM_AP_CFG_OEMPRM_REQ_Ttag PNM_AP_CFG_OEMPRM_REQ_T;
struct PNM_AP_CFG_OEMPRM_REQ_Ttag
{
/** packet header */
PNM_AP_PCK_HEADER_T tHead;
/** packet data */
PNM_AP_CFG_OEMPRM_DATA_T tData;
};
/** confirmation packet */
typedef PNM_AP_EMTPY_PCK_T PNM_AP_CFG_OEMPRM_CNF_T;
/** packet union */
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 81/244
typedef union PNM_AP_CFG_OEMPRM_PCK_Ttag PNM_AP_CFG_OEMPRM_PCK_T;
union PNM_AP_CFG_OEMPRM_PCK_Ttag
{
/** request packet */
PNM_AP_CFG_OEMPRM_REQ_T tReq;
/** confirmation packet */
PNM_AP_CFG_OEMPRM_CNF_T tCnf;
};
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x00000020 HIL_PACKET_DEST_DEFAULT_CHANNEL
ulLen UINT32 8+n Packet data length in bytes. n depends on the OEM
parameter type contained in the packet. (see below)
ulCmd UINT32 0x9412 PNM_AP_CMD_CFG_OEMPRM_REQ
ulExt UINT32 0 -
Data
ulStructVersion UINT32 1 Structure version of this structure
usPrmType UINT16 1 The parameter to configure
usPadding UINT16 N/A Ignore (for future compatibility).
uData UNION Union container for parameters
Table 83. PNM_AP_CMD_CFG_OEMPRM_REQ - Configure OEM Parameter service request
Parameter descriptions
Parameter ulStructVersion
Version of this structure. This parameter is used for future extensions of the Configure Controller
service.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 82/244
Parameter usPrmType
The usPrmType field is used to specify the parameter to configure. The following value is defined:
Option Numeric OEM Description
value Length (n)
PNM_AP_CFG_OEMPRM_SOFTWARE_VERS 1 14 The version identification of the firmware shall be
ION configured. The field uData contains software
version information according structure
PNM_AP_CFG_OEMPRM_SOFTWARE_VERSION_T.
PNM_AP_CFG_OEMPRM_ALARM_ 4 8 Defines alarm handling behavior by PROFINET IO-
HANDLING Controller stack. This service allows the application
to select, which alarm types can be handled by the
application. The field uData contains alarm
handling flags according to structure
PNM_AP_CFG_
OEMPRM_ALARM_HANDLING_T.
This parameter is overwritten, when a new
configuration is loaded. Therefore, it must be set
after configuring the Profinet IO-Controller but
before enabling the bus.
PNM_AP_CFG_OEMPRM_DEVICE_IDENTI 5 10 Overwrite Profinet VendorId, DeviceId and Instance
TY from Configuration Database with custom values.
This parameter is overwritten, when a new
configuration is loaded. Therefore is must be set
after configuring the Profinet IO-Controller but
before enabling the bus.
PNM_AP_CFG_OEMPRM_INPUTDATAMODE 6 5 Defines the handling of the input process data of
the IO devices in the DPM by the PROFINET IO
controller stack in case of a communication failure.
This parameter is overwritten, when a new
configuration is loaded. Therefore is must be set
after configuring the Profinet IO-Controller but
before enabling the bus.
Table 84: Definition of OEM parameter types
Parameter uData
This field contains the configuration parameter. The union PNM_AP_CFG_OEMPRM_UNION_T with
the following subfields is defined:
Variable Type Value / Description
Range
tVersion STRUCT - Parameter structure for version
tAlarmHandling STRUCT - Parameter structure for alarm handling flags.
tDeviceIdentity STRUCT - Parameter structure for device identity.
tInputDataMode STRUCT - Parameter structure for input data mode
Table 85: Subfields of union PNM_AP_CFG_OEMPRM_UNION_T
These substructures are defined as follows
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 83/244
Parameter uData.tSoftwareVersion
This parameter defines the version information to be reported by the protocol stack.
Note: The version information will be initialized with the Hilscher version number on startup of
the firmware.
Variable Type Value / Range Description
ulStructVersion UINT32 1 Version of the structure
usReserved UINT16 0 Obsolete field. Set to Zero.
bPrefix UINT8 'V', 'R', 'P', 'U', 'T' Indicator if the device is an officially released version ('V'), an
revised version ('R'), a prototype ('P'), a device for field test
('U') or a test device ('T')
bPadding UINT8 0 Padding. Set to zero for future compatibility
usVersionMajor UINT16 0 to 999 Major version of the product
usVersionMinor UINT16 0 to 999 Minor version of the product
usVersionBugfix UINT16 0 to 999 Bugfix version of the product
Table 86: Parameter uData.tVersiona
Note: If the firmware version of the PROFINET IO-Controller is not a release or hotfix version
and the application specifies a value of 'V' or 'R' for the prefix, then the firmware will
force the prefix to the value 'P'.
Parameter uData.tAlarmHandling
This parameter specifies which alarms shall be handled by the PROFINET IO Controller
automatically and which alarms shall be passed to the application for processing.
Note: Use this service only in conjunction with SYCON.net database configuration. The
application, which uses Configure IO Controller service may determine the alarm
handling behavior of IO Controller using ulAlarmHandlingFlags parameter in
PNM_AP_CFG_IOC_REQ_T request packet.
Variable Type Value / Range Description
ulStructVersion UINT32 1 Version of the structure
ulAlarmHandlingFlags UINT32 - Alarm flags coded as a bitmask where each bit corresponds
to a particular alarm type.
Table 87: Parameter uData.tAlarmHandling
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 84/244
Parameter uData.tDeviceIdentity
This parameter sets the PROFINET IO VendorId, DeviceId and Instance to the specified values. It
can be used to overwrite values from a configuration database.
Note: Use this service only in conjunction with SYCON.net database configuration. The
application, which uses Configure IO Controller service may set the device identity
using usVendorId, usDeviceId parameter in PNM_AP_CFG_IOC_REQ_T request
packet.
Variable Type Value / Range Description
ulStructVersion UINT32 1 Version of the structure
usVendorId UINT16 1-65535 PROFINET IO Vendor Id to use.
usDeviceId UINT16 - PROFINET IO Device Id to use.
usInstance UINT16 - PROFINET IO Instance to use. Defaults to 0.
Table 88: Parameter uData.tDeviceIdentity
Parameter uData.tInputDataMode
Using this parameter, the application can configure the behavior of the Input Process Data Image.
Variable Type Value / Range Description
ulStructVersion UINT32 1 Version of the structure
bInputDataMode UINT8 0-1 Operation mode of Input Process Data
Table 89: Parameter uData.tInputDataMode
The following input data modes are defined:
Input Data Mode Numeric Description
value
PNM_AP_CFG_OEMPRM_INPUTDATAMODE_ZERO 0 When an IOCR is shutdown (e.g. due to a connection
abort of associated AR), the whole input data area of the
IOCR is set to zero. (This is the default behavior)
PNM_AP_CFG_OEMPRM_INPUTDATAMODE_HOLD 1 When an IOCR is shutdown, the IOPS and IOCS within
LASTVALUE the input data area of the IOCR which had the value
“GOOD” before are set to special value
PNM_IOXS_BAD_BY_CONTROLLER_HOLDINGLASTVA
LUE (0x62) while the IO data is self is hold at the last
value. Effectively, this can be used to implement Hold Last
Value semantics.
Table 90: Parameter uData.tInputDataMode - defined input data modes
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 85/244
3.1.1.2 PNM_AP_CFG_OEMPRM_CNF_T confirmation
Packet structure reference
typedef PNM_AP_EMTPY_PCK_T PNM_AP_CFG_OEMPRM_CNF_T;
Packet description
Variable Type Value / Range Description
ulLen UINT32 0 Packet data length in bytes
ulSta UINT32 See section Status codes / Error codes on page 221.
ulCmd UINT32 0x9413 PNM_AP_CMD_CFG_OEMPRM_CNF
Table 91: PNM_AP_CFG_OEMPRM_CNF_T - Configure OEM Parameter service confirmation
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 86/244
3.1.2 Configure IO Controller service
This service is used to configure basic parameters of the PROFINET IO Controller. The service
shall be used exactly once at the beginning of the configuration sequence.
The service cannot be used,
if bus communication is activated
or if the configuration is locked.
3.1.2.1 PNM_AP_CFG_IOC_REQ_T request
Note: If remanent data contains a NameOfStation or IP parameters, these values inside this
request will be ignored and replaced by the value of the remanent data.
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x00000020 HIL_PACKET_DEST_DEFAULT_CHANNEL
ulLen UINT32 319 (version 1) Packet data length in bytes
322 (version 2)
326 (version 3)
ulCmd UINT32 0x9400 PNM_AP_CMD_CFG_IOC_REQ
Data
See detailed description of PNM_AP_CFG_IOC_DATA_T above in section IOC Object
Table 92: PNM_AP_CFG_IOC_REQ_T - Configure IO Controller service request
3.1.2.2 PNM_AP_CFG_IOC_CNF_T confirmation
Packet structure reference
typedef PNM_AP_EMTPY_PCK_T PNM_AP_CFG_IOC_CNF_T;
Packet description
Variable Type Value / Range Description
ulLen UINT32 0 Packet data length in bytes
ulSta UINT32 =0: no error
<> 0: see section Status codes / Error codes on page 221.
ulCmd UINT32 0x9401 PNM_AP_CMD_CFG_IOC_CNF
Table 93: PNM_AP_CFG_IOC_CNF_T - Configure IO Controller service confirmation
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 87/244
3.1.3 Configure IO Controller Parameter service
Use this service to configure parameters of the PROFINET IO-Controller.
3.1.3.1 PNM_AP_CFG_IOC_PRM_REQ_T request
Packet description
Variable Type Value / Description
Range
ulDest UINT32 0x00000020 HIL_PACKET_DEST_DEFAULT_CHANNEL
ulLen UINT32 8+n n = number of bytes used in uData
ulCmd UINT32 0x9402 PNM_AP_CMD_CFG_IOC_PRM_REQ
Data
ulStructVersion UINT32 1 Structure version of this structure
usPrmType UINT16 1 to 8, 12, 13 Parameter type (identifier)
bPortId UINT8 0 to 2 Reference of controller port to apply this parameters
to
bPadding UINT8 0 Padding. Set to zero for future compatibility.
uData PNM_AP_CFG_IOC_PRM Parameter data
_UNION_T
Table 94: PNM_AP_CMD_CFG_IOC_PRM_REQ - Configure IO Controller Parameter service request
Parameter descriptions
Parameter ulStructVersion
Version of this structure. Used for future extensions to this structure.
Parameter usPrmType
The parameter usPrmType specifies the type of the parameter data within this request packet.
This means in particular, which field within uData is to be used.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 88/244
See Table 24: Parameter usPrmTypeParameter bPortId
This parameter defines to which PD instance the parameter shall be applied:
Numerical value Description
0 Interface (submodule) of PROFINET IO Controller
1 Port 1 (submodule) of PROFINET IO Controller
2 Port 2 (submodule of PROFINET IO Controller
Table 95: Parameter bPortId
Parameter uData
The type of record data is indicated by means of usPrmType parameter. See Record Object for
details on supported record types.
3.1.3.2 PNM_AP_CFG_IOC_PRM_CNF_T confirmation
Packet structure reference
typedef PNM_AP_EMTPY_PCK_T PNM_AP_CFG_IOC_PRM_CNF_T;
Packet description
Structure PNM_AP_CFG_IOC_PRM_CNF_T Type: Confirmation
Variable Type Value / Range Description
ulLen UINT32 0 Packet data length in bytes
ulSta UINT32 =0: no error
<> 0: see section Status codes / Error codes on page 221.
ulCmd UINT32 0x9403 PNM_AP_CMD_CFG_IOC_PRM_CNF
Table 96: PNM_AP_CFG_IOC_PRM_CNF_T - Configure IO Controller Parameter service confirmation
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 89/244
3.1.4 Configure IO Device service
The application uses this service to configure the basic properties of an AR.
3.1.4.1 PNM_AP_CFG_IOD_REQ_T request
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x00000020 HIL_PACKET_DEST_DEFAULT_CHANNEL
ulLen UINT32 296 if tData.ulStructVersion == 1 Packet data length in bytes
ulCmd UINT32 0x9404 PNM_AP_CMD_CFG_IOD_REQ
Data
See detailed description of PNM_AP_CFG_IOD_DATA_T above in section IOD Object
Table 97: PNM_AP_CFG_IOD_REQ_T - Configure IO Device service request
3.1.4.2 PNM_AP_CFG_IOD_CNF_T confirmation
Packet structure reference
typedef PNM_AP_EMTPY_PCK_T PNM_AP_CFG_IOD_CNF_T;
Packet description
Variable Type Value / Range Description
ulLen UINT32 0 Packet data length in bytes
ulSta UINT32 =0: no error
<> 0: see section Status codes / Error codes on page 221.
ulCmd UINT32 0x9405 PNM_AP_CMD_CFG_IOD_CNF
Table 98: PNM_AP_CFG_IOD_CNF_T - Configure IO Device service confirmation
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 90/244
3.1.5 Configure AR Parameters service
Use this service to configure additional AR parameters.
3.1.5.1 PNM_AP_CFG_AR_PRM_REQ_T request
Packet description
Variable Type Value / Range Description
ulLen UINT32 8+n n = number of bytes used in uData
ulCmd UINT32 0x9406 PNM_AP_CMD_CFG_AR_PRM_REQ
Data
See detailed description of PNM_AP_CFG_AR_PRM_DATA_T above in section AR Parameter Object
Table 99: PNM_AP_CFG_AR_PRM_REQ_T - Configure AR Parameters service request
3.1.5.2 PNM_AP_CFG_AR_PRM_CNF_T confirmation
Packet structure reference
typedef PNM_AP_EMTPY_PCK_T PNM_AP_CFG_AR_PRM_CNF_T;
Packet description
Variable Type Value / Range Description
ulLen UINT32 0 Packet data length in bytes
ulSta UINT32 =0: no error
<> 0: see section Status codes / Error codes on page 221.
ulCmd UINT32 0x9407 PNM_AP_CMD_CFG_AR_PRM_CNF
Table 100: PNM_AP_CFG_AR_PRM_CNF_T - Configure AR Parameters service confirmation
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 91/244
3.1.6 Configure IOCR service
This service shall be used to configure the IOCRs of the PROFINET IO-Controller. Typically, each
AR is associated with one input IOCR and one output IOCR.
Note: Please remind that the PROFINET IO-Controller firmware assigns the PROFINET
frame id of an IOCR internally. The application cannot choose a particular frame id. For
details on the relationship between IOCR handle and frame id, see section IOCR
Object on page 8.
3.1.6.1 PNM_AP_CFG_IOCR_REQ_T request
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x00000020 HIL_PACKET_DEST_DEFAULT_CHANNEL
ulLen UINT32 42 Packet data length in bytes
ulCmd UINT32 0x9408 PNM_AP_CMD_CFG_IOCR_REQ
Data
See detailed description of PNM_AP_CFG_IOCR_DATA_T above in section IOCR Object.
Table 101: PNM_AP_CFG_IOCR_REQ_T - Configure IOCR service request
3.1.6.2 PNM_AP_CFG_IOCR_CNF_T confirmation
Packet structure reference
typedef PNM_AP_EMTPY_PCK_T PNM_AP_CFG_IOCR_CNF_T;
Packet description
Variable Type Value / Range Description
ulLen UINT32 0 Packet data length in bytes
ulSta UINT32 =0: no error
<> 0: see section Status codes / Error codes on page 221.
ulCmd UINT32 0x9409 PNM_AP_CMD_CFG_IOCR_CNF
Table 102: PNM_AP_CFG_IOCR_CNF_T - Configure IOCR service confirmation
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 92/244
3.1.7 Configure Submodule service
To configure a submodule of a device, the application shall use the configure submodule service.
3.1.7.1 PNM_AP_CFG_SUBMODULE_REQ_T request
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x00000020 HIL_PACKET_DEST_DEFAULT_CHANNEL
ulLen UINT32 42 Packet data length in bytes
ulCmd UINT32 0x940A PNM_AP_CMD_CFG_SUBMODULE_REQ
Data
See detailed description of PNM_AP_CFG_SUBMODULE_DATA_T above in section Submodule Object
Table 103: PNM_AP_CFG_SUBMODULE_REQ_T - Configure Submodule service request
3.1.7.2 PNM_AP_CFG_SUBMODULE_CNF_T confirmation
Packet structure reference
typedef PNM_AP_EMTPY_PCK_T PNM_AP_CFG_SUBMODULE_CNF_T;
Packet description
Variable Type Value / Range Description
ulLen UINT32 0 Packet data length in bytes
ulSta UINT32 =0: no error
<> 0: see section Status codes / Error codes on page 221.
ulCmd UINT32 0x940B PNM_AP_CMD_CFG_SUBMODULE_CNF
Table 104: PNM_AP_CFG_SUBMODULE_CNF_T - Configure Submodule service confirmation
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 93/244
3.1.8 Configure Record service
Use this service to configure record parameter objects to be written by the controller to the device
when establishing the AR. This service is optional.
Note: The record parameters are internally stored within a storage area associated with the
AR. This storage area has a limited size. Please refer to section on page 5 for details
on the available memory amount for start- up record object parameterization..
Additionally to the record data, each parameter consumes some byte for management
information. Details are described in PNM_AP_CFG_RECORD_REQ_T request (page
93).
3.1.8.1 PNM_AP_CFG_RECORD_REQ_T request
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x00000020 HIL_PACKET_DEST_DEFAULT_CHANNEL
ulLen UINT32 8+n n = number of bytes used in uData
ulCmd UINT32 0x940C PNM_AP_CMD_CFG_RECORD_REQ
Data
ulStructVersion UINT32 1 Structure version of this structure
usSubmoduleHandle PNM_AP_SUBM 1 … 2048 The handle of the submodule this record shall be
ODULE_ configured for.
HANDLE_T
usPrmType UINT16 The parameter type to configure Parameter type
specifying what kind of data is inside this dataset
(uData)
uData PNM_AP_CFG_ Union of the different support record data types
RECORD_
UNION_DATA_T
Table 105: PNM_AP_CFG_RECORD_REQ_T - Configure Record service request
Parameter descriptions
Parameter ulStructVersion
Version of this structure. Used for future extensions to this structure.
Parameter usSubmoduleHandle
This parameter specifies the submodule the record data is associated with.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 94/244
Parameter usPrmType
The parameter usPrmType specifies the type of the record data within this request packet. This is
means in particular which field within uData is to be used.
Parameter uData
The type of record data is indicated by means of usPrmType parameter. See Record Object for
details on supported record types.
3.1.8.2 PNM_AP_CFG_RECORD_CNF_T confirmation
Packet structure reference
typedef PNM_AP_EMTPY_PCK_T PNM_AP_CFG_RECORD_CNF_T;
Packet description
Variable Type Value / Range Description
ulLen UINT32 0 Packet data length in bytes
ulSta UINT32 =0: no error
<> 0: see section Status codes / Error codes on page 221.
ulCmd UINT32 0x940D PNM_AP_CMD_CFG_RECORD_CNF
Table 106: PNM_AP_CFG_RECORD_CNF_T - Configure Record service confirmation
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 95/244
3.1.9 Configure Topology service
This packet is used to configure the topology database within the PROFINET IO Controller. This
information is required in order to support automatic name assignment.
3.1.9.1 PNM_AP_CFG_TOPO_REQ_T request
Packet structure reference
#define PNM_AP_CFG_TOPO_STRUCT_VERSION_1 (0x0001)
/** request packet */
typedef struct PNM_AP_CFG_TOPO_DATA_Ttag PNM_AP_CFG_TOPO_DATA_T;
struct PNM_AP_CFG_TOPO_DATA_Ttag
{
/** @note the following rules shall apply if this Info contains topology information
about IO-Controller local Ports:
* - Device Handle shall be set to 0
* - Submodule handle shall be set to 0xFFF1 for Port 1 and to 0xFFF2 for Port 2
* */
/** structure version of this structure */
uint32_t ulStructVersion;
/** IO-Device handle of 1. submodule to connect */
PNM_AP_DEVICEHANDLE_T usDeviceHandle1;
/** submodule handle of the 1. IO-Device to be connected */
PNM_AP_SUBMODULE_HANDLE_T usSubmoduleHandle1;
/** IO-Device handle of 2. submodule to connect */
PNM_AP_DEVICEHANDLE_T usDeviceHandle2;
/** submodule handle of the 2. IO-Device to be connected */
PNM_AP_SUBMODULE_HANDLE_T usSubmoduleHandle2;
};
typedef struct PNM_AP_CFG_TOPO_REQ_Ttag PNM_AP_CFG_TOPO_REQ_T;
struct PNM_AP_CFG_TOPO_REQ_Ttag
{
PNM_AP_PCK_HEADER_T tHead;
PNM_AP_CFG_TOPO_DATA_T tData;
};
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 96/244
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x00000020 HIL_PACKET_DEST_DEFAULT_CHANNEL
ulLen UINT32 12 Packet data length in bytes
ulCmd UINT32 0x940E PNM_AP_CMD_CFG_TOPO_REQ
Data
ulStructVersion UINT32 1 Structure version of this structure
ulStructVersion UINT32 1 Structure version of this structure
usDeviceHandle1 PNM_AP_DEVIC 0, 1 … 128 Handle to Device on this side of link
EHANDLE_T
usSubmoduleHandle1 PNM_AP_SUBM 1 … 2048, Handle to submodule on this side of link
ODULE_HANDL 0xFFF1, 0xFFF2
E_T
usDeviceHandle2 PNM_AP_DEVIC 0, 1 … 128 Handle to Device on the other side of link
EHANDLE_T
usSubmoduleHandle2 PNM_AP_SUBM 1 … 2048, Handle to submodule on the other side of link
ODULE_HANDL 0xFFF1, 0xFFF2
E_T
Table 107: PNM_AP_CFG_TOPO_REQ_T - Configure Topology service request
Parameter descriptions
Parameter ulStructVersion
Version of this structure.
Parameters usDeviceHandle1, usDeviceHandle2
The device handle parameters are a reference to the devices attached to the both sides of the
network link. The value "0" shall be used to refer to the PROFINET IO Controller.
Parameters usSubmoduleHandle1, usSubmoduleHandle2
The submodule handle parameters are references to the port submodules attached to both sides
of the network link. The handles must refer to a Port Submodule of the device. The value "0xFFF1"
shall be used to refer to the PROFINET IO Controllers Port 1 and "0xFFF2" to refer to the
PROFINET IO Controllers Port 2.
3.1.9.2 PNM_AP_CFG_TOPO_CNF_T confirmation
Packet structure reference
typedef PNM_AP_EMTPY_PCK_T PNM_AP_CFG_TOPO_CNF_T;
Packet description
Variable Type Value / Range Description
ulLen UINT32 0 Packet data length in bytes
ulSta UINT32 =0: no error
<> 0: see section Status codes / Error codes on page 221.
ulCmd UINT32 0x940F PNM_AP_CMD_CFG_TOPO_CNF
Table 108: PNM_AP_CFG_TOPO_CNF_T - Configure Topology service confirmation
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 97/244
3.1.10 Download Finished service
The application shall use this service in order to finish the configuration process. The PROFINET
IO-Controller firmware will perform several consistency checks and activate the configuration. The
bus will be activated, if PNM_AP_IOC_FLAG_STARTMODE_AUTOMATIC has been used.
3.1.10.1 PNM_AP_DWNL_FIN_REQ_T request
Packet structure reference
typedef PNM_AP_EMTPY_PCK_T PNM_AP_DWNL_FIN_REQ_T;
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x00000020 HIL_PACKET_DEST_DEFAULT_CHANNEL
ulLen UINT32 0 Packet data length in bytes
ulCmd UINT32 0x9410 PNM_AP_CMD_CFG_DOWNLOAD_FINISH_REQ
Table 109: PNM_AP_DWNL_FIN_REQ_T - Download Finished service request
3.1.10.2 PNM_AP_DWNL_FIN_CNF_T confirmation
Packet structure reference
typedef struct PNM_AP_DWNL_FIN_CNF_DATA_Ttag PNM_AP_DWNL_FIN_CNF_DATA_T;
struct PNM_AP_DWNL_FIN_CNF_DATA_Ttag
{
PNM_AP_DEVICEHANDLE_T usDeviceHandle;
PNM_AP_IOCR_HANDLE_T usIocrHandle;
PNM_AP_SUBMODULE_HANDLE_T usSubmoduleHandle;
};
typedef struct PNM_AP_DWNL_FIN_CNF_Ttag PNM_AP_DWNL_FIN_CNF_T;
struct PNM_AP_DWNL_FIN_CNF_Ttag
{
PNM_AP_PCK_HEADER_T tHead;
PNM_AP_DWNL_FIN_CNF_DATA_T tData;
};
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 98/244
Packet description
Variable Type Value / Range Description
ulLen UINT32 6 Packet data length in bytes
(0 if ulSta != 0)
ulSta UINT32 =0: no error
<> 0: see section Status codes / Error codes on page
221.
ulCmd UINT32 0x9411 PNM_AP_CMD_CFG_DOWNLOAD_FINISH_CN
Data
usDeviceHandle PNM_AP_DEVI 0 No error / error related to controller configuration itself
CEHANDLE_T 1 to 128 Handle to AR causing the configuration error
usIocrHandle PNM_AP_IOC 0 No error / not an IOCR error
R_HANDLE_T 0x1000 to 0x107F Handle to IOCR causing the configuration error
0x2000 to 0x207F
usSubmoduleHandle PNM_AP_SUB 0 No error / not a submodule error
MODULE_HAN 1 to 2048 Handle to submodule causing the configuration error.
DLE_T 0xFFF0 Handle to controller PD interface submodule
0xFFF1 Handle to controller PD port 1 submodule
0xFFF2 Handle to controller PD port 2 submodule
Table 110: PNM_AP_DWNL_FIN_CNF_T - Download Finished service confirmation
Parameter descriptions
Parameters usDeviceHandle, usIocrHandle, usSubmoduleHandle
These parameters provide a reference to the configuration element, which caused the
configuration error.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 99/244
3.1.11 Load Remanent service
The application uses the load remanent service to restore remanent data after power on. Such
data has been received before from the PROFINET IO-Controller by means of the Store Remanent
service. As the length of the service’s request packet exceeds the size of the mailbox, a
fragmented packet transfer must be used with this service.
Note: The application must use this service after DDP Set Service, if DDP is in passive
mode, and always before configuring the controller and running Download Finished
For details, see 2.3.1 Network state and 6.3 Remanent data handling
3.1.11.1 PNM_AP_LOAD_REMANENT_REQ_T request
If no valid remanent data is known to the application, there are two ways to use Load Remanent
Service without valid data and fulfil the application requirement to restore remanent data:
Send an empty load remanent request packet with tHead.ulLen = 2 and
tData.usDataLength = 0.
Send a load remanent request packet with tData.usDataLength = 8192 and all data bytes set
to zero.
Packet structure reference
typedef struct PNM_AP_LOAD_REMANENT_REQ_DATA_Ttag PNM_AP_LOAD_REMANENT_REQ_DATA_T;
struct PNM_AP_LOAD_REMANENT_REQ_DATA_Ttag
{
uint16_t usLength;
uint8_t abData[];
};
typedef struct PNM_AP_LOAD_REMANENT_REQ_Ttag PNM_AP_LOAD_REMANENT_REQ_T;
struct PNM_AP_LOAD_REMANENT_REQ_Ttag
{
PNM_AP_PCK_HEADER_T tHead;
PNM_AP_LOAD_REMANENT_REQ_DATA_T tData;
};
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 100/244
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x00000020 HIL_PACKET_DEST_DEFAULT_CHANNEL
ulLen UINT32 8194 Packet data length in bytes
ulCmd UINT32 0x9442 PNM_AP_CMD_LOAD_REMANENT_REQ
Data
usLength UINT16 8192 Length of the remanent data to restore
abData[] UINT8[] any Remanent data to restore
Table 111: PNM_AP_LOAD_REMANENT_REQ_T - Load Remanent service request
Parameter descriptions
Parameter usLength
The length of the remanent data to be restored. This field should use the same value as received
in section Store Remanent service (page 185).
Parameter abData[]
The remanent data to be restored.
3.1.11.2 PNM_AP_LOAD_REMANENT_CNF_T confirmation
Packet structure reference
typedef PNM_AP_EMTPY_PCK_T PNM_AP_LOAD_REMANENT_CNF_T;
Packet description
Variable Type Value / Range Description
ulLen UINT32 0 Packet data length in bytes
ulSta UINT32 =0: no error
<> 0: see section Status codes / Error codes on page 221.
ulCmd UINT32 0x9443 PNM_AP_CMD_LOAD_REMANENT_CNF
Table 112: PNM_AP_LOAD_REMANENT_CNF_T- Load Remanent service confirmation
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 101/244
3.2 Upload Configuration
3.2.1 Overview
This section describes the services for getting information about the current configuration of
Controller. The stack provides two basic ways, in which the application can retrieve the parameter
of all the above mentioned configuration objects
3.2.1.1 Get Configuration Services
A Get Configuration Service may be used to retrieve the configuration of a certain object using a
valid Handle value. If the adressed object does not exist, the request is rejected signaling an
“Invalid Handle” error. The following table gives an overview about the available get configuration
services:
Service Request Command Confirmation Command
Get IO Controller service 0x00009454 0x00009455
Get IOD service 0x0000945A 0x0000945B
Get IOCR service 0x00009460 0x00009461
Get Submodule service 0x00009462 0x00009463
Get number of configured object service 0x00009450 0x00009451
Table 113: Get Configuration Services
3.2.1.2 Get Next Configuration Services
The Get Next Configuration service is similar to the Get Configuration service.
The Get Next Configuration service may be used for traversing the current configuration of the IO-
Controller, it allows the application to get all available objects and their configuration parameters
(Devices, IOCRs, Submodules and Records) step by steps using an iterator approach.
To start configuration upload, the application shall use a special start handle in order to retrieve the
first configuration object. The confirmation will contain object configuration including valid object
handle, which shall be used in the next request for continuing iteration,
The iteration is terminated, when no more object is available. In this case, the get next request is
rejected using ulSta = PNM_AP_CFG_NO_MORE_ENTRIES_AVAILABLE .
The status PNM_AP_CFG_NO_MORE_ENTRIES_AVAILABLE is also returned by the "get next”
request service for invalid parameter handle values of iocr, submodule and device
Note: The iteration through the configuration objects is stateless, so the iteration may be
suspended and resumed at any time.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 102/244
The following figure shows the get next sequence. In this example, there are 32 IO-devices
configured
Figure 14: Sequence of Get Next Configuration Service
The following table gives an overview about the available get next configuration services:
Service Request Command Confirmation Command
Get Next IOD service 0x00009466 0x00009467
Get Next IOCR service 0x00009468 0x00009469
Get Next Submodule service 0x0000946A 0x0000946B
Get Next Record service 0x0000946C 0x0000946D
Table 114: Overview about the available get next configuration services
Starting from Version V3.4.0.0, the following services are not supported anymore:
Get IO Controller parameter list service
Get IO Controller parameter service
Get AR parameter list service
Get AR parameter service
Get Record service
Get Confirmation services and Get Next Confirmation services use the same structures already
defined for configuration services.
There are no sections directly dealing with modules, but there is a way to retrieve the module a
given submodule belongs to described in section Read Record service (legacy) on page 192.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 103/244
In order to access data, you first have to obtain offsets (namely, the base offset and relative
offsets):
The base offset usDpmOffset can be obtained from the Get IOCR service described in
section Get IOCR service (page 108)
The following relative offsets can be obtained from the Get submodule service described in
section Get submodule service (page 109):
usFrameOffsetInput
usFrameOffsetOutput
usIOCSFrameOffsetInput
usIOCSFrameOffsetOutput
3.2.2 Get IO Controller service
This service returns the basic parameters of the IO Controller itself.
3.2.2.1 PNM_AP_CFG_GET_IOC_REQ_T request
The request packet has one parameter ulStructVersion.
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x00000020 HIL_PACKET_DEST_DEFAULT_CHANNEL
ulLen UINT32 4 Packet Data Length in bytes
ulCmd UINT32 0x9454 PNM_AP_CMD_CFG_GET_IOC_REQ
Data
ulStructVersion UINT32 1, 2, 3 Structure version
Table 115: PNM_AP_CFG_GET_IOC_REQ_T - Get IO Controller servicerequest
Parameter descriptions
Parameter ulStructVersion
This parameter specifies the structure version.
If a higher structure version than the one supported by ulStructVersion is requested, the last
supported structure version is returned so that the application at least gets valid information.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 104/244
3.2.2.2 PNM_AP_CFG_GET_IOC_CNF_T confirmation
Packet description
Variable Type Value / Range Description
ulLen UINT32 319 (version 1) Packet data length in bytes
322 (version 2)
326 (version 3)
(0 if ulSta != 0)
ulSta UINT32 0
ulCmd UINT32 0x9455 PNM_AP_CMD_CFG_GET_IOC_CNF
Data
See detailed description of PNM_AP_CFG_IOC_DATA_T in section IOC Object (page 13).
Table 116: PNM_AP_CFG_GET_IOC_CNF_T - Get IO Controller service confirmation
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 105/244
3.2.3 Get number of configurable objects service
This service returns the maximum number of configurable ARs, IOCRs and Submodules.
3.2.3.1 PNM_AP_CFG_GET_NUM_CONFIGURED_OBJECTS_REQ_T request
The request packet does not have any parameters.
Packet structure reference
/*******************************************************************************
GET NUMBER OF CONFIGURED OBJECTS
*******************************************************************************/
/** request packet */
typedef PNM_AP_EMTPY_PCK_T PNM_AP_CFG_GET_NUM_CONFIGURED_OBJECTS_REQ_T;
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x00000020 HIL_PACKET_DEST_DEFAULT_CHANNEL
ulLen UINT32 0 Packet Data Length in bytes
ulCmd UINT32 0x9450 PNM_AP_CMD_CFG_GET_NUM_CONFIGURED_OBJEC
TS_REQ
Table 117: PNM_AP_CFG_GET_NUM_CONFIGURED_OBJECTS_REQ_T - Get number of configurable objects service
request
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 106/244
3.2.3.2 PNM_AP_CFG_GET_NUM_CONFIGURED_OBJECTS_CNF_T
confirmation
Packet structure reference
/*******************************************************************************
GET NUMBER OF CONFIGURED OBJECTS
*******************************************************************************/
/** confirmation packet */
typedef struct PNM_AP_CFG_GET_NUM_CONFIGURED_OBJECTS_CNF_Ttag
PNM_AP_CFG_GET_NUM_CONFIGURED_OBJECTS_CNF_T;
struct PNM_AP_CFG_GET_NUM_CONFIGURED_OBJECTS_CNF_Ttag
{
PNM_AP_PCK_HEADER_T tHead;
PNM_AP_CFG_GET_NUM_CONFIGURED_OBJECTS_REQ_DATA_T tData;
};
typedef struct PNM_AP_CFG_GET_NUM_CONFIGURED_OBJECTS_REQ_DATA_Ttag
PNM_AP_CFG_GET_NUM_CONFIGURED_OBJECTS_REQ_DATA_T;
struct PNM_AP_CFG_GET_NUM_CONFIGURED_OBJECTS_REQ_DATA_Ttag
{
/** number of configurable ARs */
uint16_t usNumAR;
/** number of configurable IOCRs */
uint16_t usNumIocr;
/** number of configurable Submodules */
uint16_t usNumSubmodule;
};
/*******************************************************************************
Packet description
Variable Type Value / Range Description
ulLen UINT32 6 Packet data length in bytes
(0 if ulSta != 0)
ulSta UINT32 0
ulCmd UINT32 0x9451 PNM_AP_CMD_CFG_GET_NUM_CONFIGURED_OBJEC
TS_CNF
Data
usNumAR UINT16 1…128 This parameter contains the maximum number of
configurable ARs
usNumIocr UINT16 1…256 This parameter contains the maximum number of
configurable IOCRs
usNumSubmodule UINT16 1…2048 This parameter contains the maximum number of
configurable Submodules
Table 118: PNM_AP_CFG_GET_NUM_CONFIGURED_OBJECTS_CNF_T - Get number of configurable objects service
confirmation
Parameter descriptions
Parameter usNumAR
This parameter contains the maximum number of configurable ARs
Parameter usNumIocr
This parameter contains the maximum number of configurable IOCRs
Parameter usNumSubmodule
This parameter contains the maximum number of configurable Submodules
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 107/244
3.2.4 Get IO Device service
This service returns basic parameters of an IO Device referred to by "DeviceHandle".
3.2.4.1 PNM_AP_CFG_GET_IOD_REQ_T request
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x00000020 HIL_PACKET_DEST_DEFAULT_CHANNEL
ulLen UINT32 6 Packet Data Length in bytes
ulSta UINT32 0 Status unused for request. Set to zero.
ulCmd UINT32 0x945A PNM_AP_CMD_CFG_GET_IOD_REQ
Data
ulStructVersion UINT32 1 Structure version
usDeviceHandle PNM_AP_DE 1 … 128 Unique handle of this IO-Device defined by the sender of
VICEHANDL this packet
E_T
Table 119: PNM_AP_CFG_GET_IOD_REQ_DATA_T - Get IO Device service request
Parameter descriptions
Parameter ulStructVersion
Structure version of the configuration structure. Used for future extensions.
Parameter usDeviceHandle
This parameter specifies the device handle to which the data record is assigned.
3.2.4.2 PNM_AP_CFG_GET_IOD_CNF_T confirmation
Packet structure reference
See detailed description of PNM_AP_CFG_IOD_REQ_DATA_T above in section 3.1.4.1. Only the
first version of the data structure is supported.
Packet description
Variable Type Value / Range Description
ulLen UINT32 296 Packet data length in bytes
(0 if ulSta != 0)
ulSta UINT32 0
ulCmd UINT32 0x945B PNM_AP_CMD_CFG_GET_IOD_CNF
Data
See detailed description of PNM_AP_CFG_IOD_DATA_T above in section IOD Object
Table 120: PNM_AP_CFG_GET_IOD_CNF_T - Get IO Device service confirmation
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 108/244
3.2.5 Get IOCR service
This service returns the current configuration of the requested IOCR. In order to choose the IOCR,
specify the respective IOCR handle in parameter usIocrHandle of the request packet.
3.2.5.1 PNM_AP_CFG_GET_IOCR_REQ_T request
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x00000020 HIL_PACKET_DEST_DEFAULT_CHANNEL
ulLen UINT32 6 Packet Data Length in bytes
(0 if ulSta != 0)
ulSta UINT32 0 Status unused for request. Set to zero.
ulCmd UINT32 0x9460 PNM_AP_CMD_CFG_GET_IOCR_REQ
Data
ulStructVersion UINT32 1 Structure version
usIocrHandle PNM_AP_IO 0x1000...0x107F, The handle of the configured IOCR to be accessed
CR_HANDLE 0x2000...0x207F
_T
Table 121: PNM_AP_CFG_GET_IOCR_REQ_T - Get IOCR service request
Parameter descriptions
Parameter ulStructVersion
Structure version of this structure. Used for future extensions of this structure.
Parameter usIocrHandle
The parameter usIocrHandle is a reference to the IOCR object whose configuration is to be
determined. The following values are defined:
Minimum value Maximum value Usage
0x1000 0x103F Input IOCR for RT Class 1 / RT Class 3
0x1040 0x107F Input IOCR for RT Class 1
0x2000 0x203F Output IOCR for RT Class 1 / RT Class 3
0x2040 0x207F Output IOCR for RT Class 1
Table 122: PNM_AP_CFG_GET_IOCR_REQ_T - Parameter usIocrHandle
3.2.5.2 PNM_AP_CFG_GET_IOCR_CNF_T confirmation
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x00000020 HIL_PACKET_DEST_DEFAULT_CHANNEL
ulLen UINT32 42 Packet data length in bytes
(0 if ulSta != 0)
ulSta UINT32 0
ulCmd UINT32 0x9461 PNM_AP_CMD_CFG_GET_IOCR_CNF
Data
See detailed description of PNM_AP_CFG_IOCR_DATA_T above in section IOCR Object
Table 123: PNM_AP_CFG_GET_IOCR_CNF_T - Get IOCR service confirmation
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 109/244
3.2.6 Get submodule service
This service returns the submodule parameters of the requested submodule.
3.2.6.1 PNM_AP_CFG_GET_SUBMODULE_REQ_T request
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x00000020 HIL_PACKET_DEST_DEFAULT_CHANNEL
ulLen UINT32 6 Packet Data Length in bytes
ulSta UINT32 0 Status unused for request. Set to zero.
ulCmd UINT32 0x9462 PNM_AP_CMD_CFG_GET_SUBMODULE_REQ
Data
ulStructVersion UINT32 1 Structure version
usSubmoduleHandl PNM_AP_SUB Handle of submodule to retrieve
e MODULE_HAN
DLE_T
Table 124: PNM_AP_CFG_GET_SUBMODULE_REQ_T - Get submodule service request
Parameter descriptions
Parameter ulStructVersion
Structure version of the configuration structure. Used for future extensions.
Parameter usSubmoduleHandle
Handle for accessing the requested submodule.
3.2.6.2 PNM_AP_CFG_GET_SUBMODULE_CNF_T confirmation
Packet description
Variable Type Value / Range Description
ulLen UINT32 42 Packet data length in bytes
(0 if ulSta != 0)
ulSta UINT32 0
ulCmd UINT32 0x9463 PNM_AP_CMD_CFG_GET_SUBMODULE_CNF
Data
See detailed description of PNM_AP_CFG_SUBMODULE_DATA_T above in section Submodule Object
Table 125: PNM_AP_CFG_GET_SUBMODULE_CNF_T - Get submodule service confirmation
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 110/244
3.2.7 Get next IO-Device service
Use this service to retrieve the basic parameters of all configured IO Devices.
3.2.7.1 PNM_AP_CFG_GET_NEXT_IOD_REQ_T request
Packet description
Variable Type Value / Description
Range
ulDest UINT32 0x00000020 HIL_PACKET_DEST_DEFAULT_CHANNEL
ulLen UINT32 6 Packet Data Length in bytes
ulCmd UINT32 0x00009466 PNM_AP_CMD_CFG_GET_NEXT_IOD_REQ
Data
ulStructVersion UINT32 1 Structure version
usDeviceHandle PNM_AP_DEVICEHANDLE_T 1 … 128, Unique handle of last retreived IO-Device
defined by the sender of this packet.
0xFFFF
Used for starting the iteration
Table 126: PNM_AP_CFG_GET_IOD_REQ_DATA_T - Get next IO-Device service request
Parameter descriptions
Parameter ulStructVersion
Structure version of the configuration structure. Used for future extensions.
Parameter usDeviceHandle
This parameter will be used to pass the state of iteration to the protocol stack. It specifies the
position where the application want the iterating.to start from:
PNM_AP_DEVICEHANDLE_START_ITERATION (0xFFFF):
to start iteration from the beginning
Device Handle value from previous confirmation data to continue the iteration.
Possible parameter values for “get next service”:
Value Symbolic name Description
0 PNM_AP_DEVICEHANDLE_IOC Only record data associated to the IO-Controller
are retreived
1-128 PNM_AP_DEVICEHANDLE_IOAR_FIRST – Only record data associated to the addressed AR
PNM_AP_DEVICEHANDLE_IOAR_LAST (IO-Device) are retreived
0xFFFF PNM_AP_DEVICEHANDLE_START_ITERATION Filter not active. Iterate through all configured
records
Table 127: PNM_AP_CFG_GET_NEXT_IOD_REQ_T Parameter usDeviceHandle
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 111/244
3.2.7.2 PNM_AP_CFG_GET_NEXT_IOD_CNF_T confirmation
Get next IOD confirmation data contains the same parameters as of
PNM_AP_CFG_IOD_REQ_DATA_T described above in section 3.1.4.1.
Note: The iteration is terminated, when the get next request is rejected using
ulSta = PNM_AP_CFG_NO_MORE_ENTRIES_AVAILABLE
This status value is also returned by the service for invalid parameter values of
usDeviceHandle.
Packet description
Variable Type Value / Range Description
ulLen UINT32 296 Packet data length in bytes
(0 if ulSta != 0)
ulSta UINT32 0
ulCmd UINT32 0x9467 PNM_AP_CMD_CFG_GET_NEXT_IOD_CNF
Data
tData PNM_AP_CFG_IOD_REQ_DATA_ Structure described in section 3.1.4.1.
T
Table 128: PNM_AP_CFG_GET_NEXT_IOD_CNF_T - Get next IO-Device service confirmation
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 112/244
3.2.8 Get next IOCR service
Use this service to retrieve all configured IOCRs and their configuration parameters.
3.2.8.1 PNM_AP_CFG_GET_NEXT_IOCR_REQ_T request
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x00000020 HIL_PACKET_DEST_DEFAULT_
CHANNEL
ulLen UINT32 8 Packet Data Length in bytes
ulCmd UINT32 0x9468 PNM_AP_CMD_CFG_GET_NEXT_IOCR
_REQ
Data
ulStructVersion UINT32 1 Structure version
usIocrHandle PNM_AP_IOCR_HANDLE_T 0x1000...0x107F, Initial IOCR handle value to start
0x2000...0x207F, uploading IOCR configuration
IOCR handle Value from previous get
next iocr confirmation
0xFFFF Used for starting the iteration
usDeviceHandle PNM_AP_DEVICEHANDLE_T 1..128, Parameter may be used for filtering the
iteration steps
0xFFFF 0xFFFF: no filter active
Table 129: PNM_AP_CFG_GET_NEXT_IOCR_REQ_T - Get next IOCR service request
Parameter descriptions
Parameter ulStructVersion
Structure version of this structure. Used for future extensions of this structure.
Parameter usIocrHandle
The parameter usIocrHandle will be used to pass the state of iteration to the protocol stack.
It specifies the position where the application wants the iteration.to start from:
PNM_AP_IOCR_HANDLE_START_ITERATION (0xFFFF): to start iteration from the beginning
IOCR Handle value from previous confirmation data to continue the iteration.
Parameter usDeviceHandle
The parameter usDeviceHandle may be used as filter criterion for iteration result.
PNM_AP_DEVICEHANDLE_START_ITERATION (0xFFFF):
Filter not active. Iterate through all configured IOCRs
Only IOCRs associated to the addressed AR (IO-Device) are retrieved
The possible parameter values are described in Table 129.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 113/244
3.2.8.2 PNM_AP_CFG_GET_NEXT_IOCR_CNF_T confirmation
Packet structure reference
Get next IOCR confirmation data contains the same parameters as of
PNM_AP_CFG_IOCR_REQ_DATA_T described above in section PNM_AP_CFG_IOCR_REQ_T
request at page 91.
Note: The iteration is terminated, when the get next request is rejected using
ulSta = PNM_AP_CFG_NO_MORE_ENTRIES_AVAILABLE.
This status value is also returned by the service for invalid parameter values of
usIocrHandle and usDeviceHandle.
Packet description
Variable Type Value / Range Description
ulLen UINT32 42 Packet data length in bytes
(0 if ulSta != 0)
ulSta UINT32 0
ulCmd UINT32 0x9469 PNM_AP_CMD_CFG_GET_NEXT_IOCR_CNF
Data
tData PNM_AP_CF Described in section Table 16: Structure
G_IOCR_DA PNM_AP_CFG_IOCR_DATA_T
TA_T
Table 130: PNM_AP_CFG_GET_NEXT_IOCR_CNF_T - Get next IOCR service confirmation
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 114/244
3.2.9 Get next Submodule service
This service may be used to retrieve all configured submodules and their configuration parameters
3.2.9.1 PNM_AP_CFG_GET_NEXT_SUBMODULE_REQ_T request
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x00000020 HIL_PACKET_DEST_DEFAULT_CHA
NNEL
ulLen UINT32 8 Packet Data Length in bytes
ulCmd UINT32 0x946A PNM_AP_CMD_CFG_GET_NEXT_S
UBMODULE_REQ
Data
ulStructVersion UINT32 1 Structure version
usSubmoduleHand 1…0x0800, Initial Submodule handle value to start
le PNM_AP_SUBMODULE_HA 0xFFF0…0xFFF2 uploading Submodule configuration
NDLE_T Submodule handle value from
previous get next submodule
confirmation Used for starting the
0xFFFF iteration
0xFFFF: no filter active
usDeviceHandle PNM_AP_DEVICEHANDLE_ 0, Parameter may be used for filtering the
T 1..128, iteration steps
0xFFFF: no filter active
0xFFFF
Table 131: PNM_AP_CFG_GET_NEXT_SUBMODULE_REQ_T- Get next Submodule service request
Parameter descriptions
Parameter ulStructVersion
Structure version of this structure. Used for future extensions of this structure.
Parameter usSubmoduleHandle
The parameter usSubmoduleHandle will be used to pass the state of iteration to the protocol
stack. It specifies the position, where the application wants the iteration.to start from:
PNM_AP_SUBMODULE_HANDLE_START_ITERATION(0xFFFF):
to start iteration from the beginning
Submodule Handle value from previous confirmation data to continue the iteration.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 115/244
Possible parameter values for “get next service”:
Value Symbolic name Description
1 - 0x0800 PNM_AP_IOD_SUBMODULE_HANDLE_FIRST – Only record data associated to the addressed
PNM_AP_IOD_SUBMODULE_HANDLE_LAST Submodule are retrieved.
0xFFF0 PNM_AP_IOC_INTERFACE_SUBMODULE_HANDLE Only record data associated with PROFINET IO
Controller PD interface submodule are retreived
0xFFF1 PNM_AP_IOC_PORT0_SUBMODULE_HANDLE Only record data associated with PROFINET IO
Controller PD Port 1 submodule are retreived
0xFFF2 PNM_AP_IOC_PORT1_SUBMODULE_HANDLE Only record data associated with PROFINET IO
Controller PD Port 2 submodule are retreived
0xFFFF PNM_AP_SUBMODULE_HANDLE_START_ITERATIO Filter not active. Iterate through all configured
N records
Table 132: PNM_AP_CFG_GET_NEXT_SUBMODULE_REQ_T Parameter usSubmoduleHandle
Parameter usDeviceHandle
The parameter usDeviceHandle may be used as filter criterion for iteration result.
PNM_AP_DEVICEHANDLE_START_ITERATION (0xFFFF): Filter not active. Iterate through all
configured IOCRs.
Only Submodules associated to the addressed AR (IO-Device) are retrieved The possible
parameter values are described in Table 127 (page 110).
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 116/244
3.2.9.2 PNM_AP_CFG_GET_NEXT_SUBMODULE_CNF_T confirmation
Packet structure reference
Get next IOCR confirmation data contains the same parameters as of
PNM_AP_CFG_SUBMODULE_DATA_T described above in section
PNM_AP_CFG_SUBMODULE_REQ_T request (page 92).
Packet description
Variable Type Value / Range Description
ulLen UINT32 42 Packet data length in bytes
(0 if ulSta != 0)
ulSta UINT32 0
ulCmd UINT32 0x946B PNM_AP_CMD_CFG_GET_NEXT_SUBMODU
LE_CNF
Data
tData PNM_AP_CFG_GET_NE 1 Described in section
XT_SUBMODULE_CNF_ PNM_AP_CFG_GET_SUBMODULE_REQ_DA
DATA_T TA_T request
Table 133: PNM_AP_CFG_GET_NEXT_SUBMODULE_CNF_T - Get next Submodule service confirmation
Note: The iteration is terminated, when the get next request is rejected using
ulSta = PNM_AP_CFG_NO_MORE_ENTRIES_AVAILABLE.
This status value is also returned by the service for invalid parameter values of
usSubmoduleHandle and usDeviceHandle
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 117/244
3.2.10 Get next Record service
Use this service to retrieve all configured record parameter objects.
3.2.10.1 PNM_AP_CFG_GET_NEXT_RECORD_REQ_T request
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x00000020 HIL_PACKET_DEST_DEFAULT_CHANNEL
ulLen UINT32 12 Packet Data Length in bytes
ulSta UINT32 0 Status unused for request. Set to zero.
ulCmd UINT32 0x946C PNM_AP_CMD_CFG_GET_NEXT_RECORD_REQ
Data
ulStructVersion UINT32 1 Structure version
usIteratorState PNM_AP_RECOR 0…0xFFFF Initial value to start uploading record configuration
D_IT_STATE_T Iterator state from previous get next record
confirmation
usDeviceHandle PNM_AP_DEVICE 0..128, Device handle may be used for filtering the iteration
HANDLE_T steps
0xFFFF Used for starting the iteration
usSubmoduleHandle PNM_AP_SUBMO Initial Submodule handle value to start uploading
DULE_HANDLE_T 1… 0x0800, Submodule configuration
0xFFF0…0xFFF Submodule handle value from previous get next
2 submodule confirmation
0xFFFF: no filter active
0xFFFF
usPrmType UINT16 0..0xFFFF Parameter type may be used for filtering the
iteration steps
0xFFFF: no filter active
Table 134: PNM_AP_CFG_GET_NEXT_RECORD_REQ_T - Get next Record service request
Parameter descriptions
Parameter ulStructVersion
Structure version of this structure. Used for future extensions of this structure.
Parameter ulIteratorState
The parameter ulIteratorState will be used to pass the state of iteration to the protocol stack. It
specifies the position, where the application wants the iteration to start from.
PNM_AP_RECORD_IT_STATE_T (0xFFFF) shall be used in order to start iteration from the
beginning else Iterator state value from previous confirmation data to continue the iteration.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 118/244
Parameter usDeviceHandle
The parameter usDeviceHandle may be used as filter criterion for iteration result.
Value Symbolic name Description
0 PNM_AP_DEVICEHANDLE_IOC Only record data associated to the IO-Controller
are retreived
1-128 PNM_AP_DEVICEHANDLE_IOAR_FIRST – Only record data associated to the addressed AR
PNM_AP_DEVICEHANDLE_IOAR_LAST (IO-Device) are retreived
0xFFFF PNM_AP_DEVICEHANDLE_START_ITERATION Filter not active. Iterate through all configured
records
Table 135: PNM_AP_CFG_GET_NEXT_RECORD_REQ_T - Parameter usDeviceHandle
Parameter usSubmoduleHandle
The parameter usSubmoduleHandle may be used as filter criterion for iteration result.
Value Symbolic name Description
1 - 0x0800 PNM_AP_IOD_SUBMODULE_HANDLE_FIRST – Only record data associated to the addressed
PNM_AP_IOD_SUBMODULE_HANDLE_LAST Submodule are retrieved.
0xFFF0 PNM_AP_IOC_INTERFACE_SUBMODULE_HANDLE Only record data associated with PROFINET IO
Controller PD interface submodule are retreived
0xFFF1 PNM_AP_IOC_PORT0_SUBMODULE_HANDLE Only record data associated with PROFINET IO
Controller PD Port 1 submodule are retreived
0xFFF2 PNM_AP_IOC_PORT1_SUBMODULE_HANDLE Only record data associated with PROFINET IO
Controller PD Port 2 submodule are retreived
0xFFFF PNM_AP_SUBMODULE_HANDLE_START_ITERATIO Filter not active. Iterate through all configured
N records
Table 136: PNM_AP_CFG_GET_NEXT_RECORD_REQ_T - Parameter usSubmoduleHandle
Parameter usPrmType
This parameter may be used to filter iteration results based on parameter type.
To disable this filter usPrmType has to be set to 0xFFFF
Iterate through all configured PrmType
See Record Object at page 31 for details on supported record types. Table 24: Parameter
usPrmType
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 119/244
3.2.10.2 PNM_AP_CFG_GET_NEXT_RECORD_CNF_T confirmation
In case of success, this confirmation packet contains the same data structure as previously
described in PNM_AP_CFG_RECORD_REQ_T request.
Note: The iteration is terminated, when the get next request is rejected using
ulSta = PNM_AP_CFG_NO_MORE_ENTRIES_AVAILABLE.
This status value is also returned by the service for invalid parameter values of
usSubmoduleHandle and usDeviceHandle.
Packet description
Variable Type Value / Range Description
ulLen UINT32 Depends on Packet data length in bytes
returned
dataset
ulSta UINT32 0
ulCmd UINT32 0x946D PNM_AP_CMD_CFG_GET_NEXT_RECORD
_CNF
Data
ulStructVersion UINT32 1 Structure version of this structure
usIteratorState PNM_AP_RECORD_IT_S 1 .. 2048 iteration state. It references to last reported
TATE_T Record Object,
usDeviceHandle PNM_AP_DEVICEHANDL 0, The device handle associated with the record
E_T 1 – 128, data.
0xFFFF
tRecordData PNM_AP_CFG_RECORD Union of the different support record data
_T types. The type of the record set, is defined in
this record set.
Table 137: 3.2.11.2 PNM_AP_CFG_GET_NEXT_RECORD_CNF_T - Get next Record service confirmation
Parameter descriptions
Parameter ulStructVersion
Version of this structure. Used for future extensions to this structure.
Parameter usIteratorState
The ulIteratorState parameter is used as iteration state. It refers to the currently retrieved
record object. The application has to use the current value of ulIteratorState in the next
request of Get Next Record request to continue the iteration.Parameter usDeviceHandle
This parameter specifies the IO-Device the record data is associated with.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 120/244
Parameter tRecordData
This parameter contains record data related information, The following Table describes the
structure PNM_AP_CFG_RECORD_T
Variable Type Value / Range Description
ulStructVersion UINT32 1 Structure version of this structure
usSubmoduleHandle PNM_AP_SUBMODULE_ 1… 0x0800, The Submodule handle associated with
HANDLE_T 0xFFF0…0xFFF2 the record data.
usPrmType PNM_AP_DEVICEHANDL 0, Type of the record data
E_T 1 – 128,
0xFFFF
uData PNM_AP_CFG_RECORD Union of the different support record data
_UNION_DATA_T types. The type of the record set, is
defined in this record set.
Table 138 Parameter tRecordData
Parameter descriptions
Parameter ulStructVersion
Version of this structure. Used for future extensions to this structure.
Parameter usSubmoduleHandle
This parameter specifies the submodule the record data is associated with.
Parameter usPrmType
The parameter usPrmType specifies the type of the record data within this confirmation packet.
This is means in particular which field within uData is to be used.
Parameter uData
The type of record data is indicated by means of usPrmType parameter. See Record Object for
details on supported record types.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 121/244
3.3 Acyclic requests
This section contains the description of packets the application can use for requesting acyclic
services.
3.3.1 Read Submodule Record service
The application can use this service to read a record object of a previously configured submodule.
The submodule must be in data exchange for that purpose.
Note: This service can also be used to read record objects provided by the PROFINET IRT
Controller itself. For that purpose, the fix defined submodule handles of the controllers
PDEV submodules can be used.
Note: When the confirmation packet of this service might exceed the mailbox size a
fragmented transfer will be used. This is either the case if a fragmented transfer is
explicitly initiated by setting ulExt to HIL_PACKET_SEQ_LAST or when the
ulLenToRead is set to a value greater than 1530. Only one such fragmented service
might be active at the same time.
The following record objects are currently implemented by the PROFINET controller (when using
submodule handles 0xFFF0, 0xFFF1 or 0xFFF2):
Name Numerical value of Description
record index
Diagnosis in channel coding for one 0x800A Return all channel diagnosis for the specified
subslot subslot with severity “diagnosis”
Diagnosis in all codings for one 0x800B Return all diagnosis for the specified subslot with
subslot severity “diagnosis”
Diagnosis, Maintenance, Qualified 0x800C Return all diagnosis for the specified subslot
and Status for one subslot
Maintenance required in channel 0x8010 Return all channel diagnosis for the specified
coding for one subslot subslot with severity “maintenance required”
Maintenance demanded in channel 0x8011 Return all channel diagnosis for the specified
coding for one subslot subslot with severity “maintenance demanded”
Maintenance required in all codings 0x8012 Return all diagnosis for the specified subslot with
for one subslot severity “maintenance required”
Maintenance demanded in all codings 0x8013 Return all diagnosis for the specified subslot with
for one subslot severity “maintenance demanded”
PD Port Data Real 0x802A Return current Profinet Physical Device Port state.
E.g. Information about detected network peers, Mau
Type, Cable Delay. (Available for Handle 0xFFF1
and 0xFF2 only)
PD Port Statistics 0x8072 Return ethernet switch port or interface statistics,
E.g. Bytes received/Sent.
PD Interface Data Real 0x8080 Return current Profinet Physical Device Interface
state. E.g. Name Of Station, IP Address, Interface
Mac Address. (Available for Handle 0xFFF0 only)
Diagnosis in channel coding for one 0xC00A Return all channel diagnosis for the specified slot
slot with severity “diagnosis”
Diagnosis in all codings for one slot 0xC00B Return all diagnosis for the specified slot with
severity “diagnosis”
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 122/244
Name Numerical value of Description
record index
Diagnosis, Maintenance, Qualified 0xC00C Return all diagnosis for the specified slot
and Status for one slot
Maintenance required in channel 0xC010 Return all channel diagnosis for the specified slot
coding for one slot with severity “maintenance required”
Maintenance demanded in channel 0xC011 Return all channel diagnosis for the specified slot
coding for one slot with severity “maintenance demanded”
Maintenance required in all codings 0xC012 Return all diagnosis for the specified slot with
for one slot severity “maintenance required”
Maintenance demanded in all codings 0xC013 Return all diagnosis for the specified slot with
for one slot severity “maintenance demanded”
Diagnosis in channel coding for one 0xE00A Return all channel diagnosis for the specified AR
AR with severity “diagnosis”
PD Real Data 0xF841 Return combined information from PD Interface
Data Real, PD Port Data Real and PD Port
Statistics. (MRP Information not implemented)
Table 139: Read Submodule Record service
3.3.1.1 PNM_AP_READ_RECORD_SUBM_REQ_T request
Packet structure reference
/** request packet */
typedef struct PNM_AP_READ_RECORD_SUBM_REQ_DATA_Ttag PNM_AP_READ_RECORD_SUBM_REQ_DATA_T;
struct PNM_AP_READ_RECORD_SUBM_REQ_DATA_Ttag
{
/** submodule handle to read from */
PNM_AP_SUBMODULE_HANDLE_T usSubmoduleHandle;
/** index to read */
uint16_t usIndex;
/** max expected data length to request */
uint32_t ulMaxReadLen;
};
typedef struct PNM_AP_READ_RECORD_SUBM_REQ_Ttag PNM_AP_READ_RECORD_SUBM_REQ_T;
struct PNM_AP_READ_RECORD_SUBM_REQ_Ttag
{
PNM_AP_PCK_HEADER_T tHead;
PNM_AP_READ_RECORD_SUBM_REQ_DATA_T tData;
};
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x20 (LFW)
Handle (LOM)
ulSrc UINT32 0 (LFW)
Handle (LOM)
ulLen UINT32 8 Packet data length in bytes
ulCmd UINT32 0x9422 PNM_AP_CMD_READ_RECORD_SUBM_RE
Q
Data
usSubmoduleHand UINT16 1 to 2048, 0xFFF0, 0xFFF1, Handle of submodule to read data from
le 0xFFF2
usIndex UINT16 0 to 0xFFFF Index of record object to read
ulMaxReadLen UINT32 1 to 65536 Amount of data to read from object
Table 140. PNM_AP_READ_RECORD_SUBM_REQ_T - Read Submodule Record service request
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 123/244
Parameter descriptions
Parameter usSubmoduleHandle
The handle of the (previously configured) submodule to read the record object from. The following
values are defined:
Submodule handle Description
1 to 2048 Read a record object from a configured device's submodule.
0xFFF0 Read a record object from the controllers interface submodule
0xFFF1 Read a record object from the controllers first port submodule
0xFFF2 Read a record object from the controllers second port submodule
Table 141: PNM_AP_READ_RECORD_SUBM_REQ_T - Parameter usSubmoduleHandle
Parameter usIndex
The index of the record object to read.
Parameter ulMaxReadLen
The maximum number of bytes to read from the object.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 124/244
3.3.1.2 PNM_AP_READ_RECORD_SUBM_CNF_T confirmation
Packet structure reference
typedef struct PNM_AP_READ_RECORD_SUBM_CNF_DATA_Ttag PNM_AP_READ_RECORD_SUBM_CNF_DATA_T;
struct PNM_AP_READ_RECORD_SUBM_CNF_DATA_Ttag
{
PNM_AP_SUBMODULE_HANDLE_T usSubmoduleHandle;
uint16_t usIndex;
uint32_t ulDataLen;
uint32_t ulPnio;
uint16_t usAddVal1;
uint16_t usAddVal2;
uint8_t abRecordData[ARRAYS_OF_LENGTH_ZERO];
};
typedef struct PNM_AP_READ_RECORD_SUBM_CNF_Ttag PNM_AP_READ_RECORD_SUBM_CNF_T;
struct PNM_AP_READ_RECORD_SUBM_CNF_Ttag
{
PNM_AP_PCK_HEADER_T tHead;
PNM_AP_READ_RECORD_SUBM_CNF_DATA_T tData;
};
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x20 (LFW) HIL_PACKET_DEST_DEFAULT_CHANNEL
Handle (LOM)
ulLen UINT32 16 to 65552 ulLen
ulSta UINT32 =0: no error
ulCmd UINT32 0x9423 PNM_AP_CMD_READ_RECORD_SUBM_CNF
Data
usSubmoduleHand UINT16 1 to 2048 Handle of submodule the data was read from
le
usIndex UINT16 0 to 0xFFFF Index of record object read
ulReadLen UINT32 0 to 65536 Amount of data read from the object
ulPnio UINT32 any The PROFINET Status Code from the read
operation
usAddVal1 UINT16 any Additional value returned by PROFINET Device
when reading the record object
usAddVal2 UINT16 any Additional value returned by the PROFINET
Device when reading the record object
abRecordData[] UINT8 The data returned by the record object
Table 142. PNM_AP_READ_RECORD_SUBM_CNF_T - Read Submodule Record service confirmation
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 125/244
Parameter descriptions
Parameter usSubmoduleHandle
The handle of the (previously configured) submodule the record data was read from
Parameter usIndex
The index of the record object read.
Parameter ulReadLen
The number of bytes returned from the record object
Parameter ulPnio
The PROFINET status code of the acyclic operation. This field is non-zero if a PROFINET error
occurred during processing the read service. The error code is either generated by the PROFINET
IO Controller or by the associated PROFINET IO Device. Section PROFINET Status Code on page
227 describes the meanings of the PROFINET status code.
Parameters usAddVal1, usAddVal2
The PROFINET specification defines additional values to be passed from the device in read record
object service responses. The content of these values can be found in these parameters.
Parameter abRecordData[]
This parameter contains the record data returned by the device.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 126/244
3.3.2 Write Submodule Record service
This service can be used by the application to write a record object while the submodule is in cyclic
data exchange.
Note: When the request packet of this service will exceed the mailbox size, a fragmented
transfer will be used. This is the case, when the ulDataLen is set to a value greater
than 1544. Only one such fragmented service might be active at the same time.
3.3.2.1 PNM_AP_WRITE_RECORD_SUBM_REQ_T request
typedef struct PNM_AP_WRITE_RECORD_SUBM_REQ_DATA_Ttag
PNM_AP_WRITE_RECORD_SUBM_REQ_DATA_T;
struct PNM_AP_WRITE_RECORD_SUBM_REQ_DATA_Ttag
{
PNM_AP_SUBMODULE_HANDLE_T usSubmoduleHandle;
uint16_t usIndex;
uint32_t ulDataLen;
uint8_t abRecordData[ARRAYS_OF_LENGTH_ZERO];
};
typedef struct PNM_AP_WRITE_RECORD_SUBM_REQ_Ttag PNM_AP_WRITE_RECORD_SUBM_REQ_T;
struct PNM_AP_WRITE_RECORD_SUBM_REQ_Ttag
{
PNM_AP_PCK_HEADER_T tHead;
PNM_AP_WRITE_RECORD_SUBM_REQ_DATA_T tData;
};
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x00000020 HIL_PACKET_DEST_DEFAULT_CHANNEL
ulSrc UINT32 0 (LFW)/ Handle (LOM) -
ulLen UINT32 13 to 65548 Packet Data Length in bytes
ulCmd UINT32 0x9424 PNM_AP_CMD_WRITE_RECORD_SUBM_REQ
Data
usSubmoduleHandle UINT16 1 to 2048 Handle of submodule to write the data to
usIndex UINT16 0 to 0xFFFF Index of record object to write
ulDataLen UINT32 1 to 65536 Amount of data to write to the object
abRecordData[] UINT8 The record data to write
Table 143. PNM_AP_WRITE_RECORD_SUBM_REQ_T - Write Submodule Record service request
Parameter descriptions
Parameter usSubmoduleHandle
The handle of the (previously configured) submodule to write the record object for.
Parameter usIndex
The index of the record object to write.
Parameter ulDataLen
The number of bytes to write to the object
Parameter abRecordData[]
The record data to write.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 127/244
3.3.2.2 PNM_AP_WRITE_RECORD_SUBM_CNF_T confirmation
typedef struct PNM_AP_WRITE_RECORD_SUBM_CNF_DATA_Ttag
PNM_AP_WRITE_RECORD_SUBM_CNF_DATA_T;
struct PNM_AP_WRITE_RECORD_SUBM_CNF_DATA_Ttag
{
PNM_AP_SUBMODULE_HANDLE_T usSubmoduleHandle;
uint16_t usIndex;
uint32_t ulPnio;
uint16_t usAddVal1;
uint16_t usAddVal2;
};
typedef struct PNM_AP_WRITE_RECORD_SUBM_CNF_Ttag PNM_AP_WRITE_RECORD_SUBM_CNF_T;
struct PNM_AP_WRITE_RECORD_SUBM_CNF_Ttag
{
PNM_AP_PCK_HEADER_T tHead;
PNM_AP_WRITE_RECORD_SUBM_CNF_DATA_T tData;
};
Packet description
Variable Type Value / Range Description
ulLen UINT32 12 Packet data length in bytes
(0 if ulSta != 0)
ulSta UINT32 =0: no error
<> 0: see section Status codes / Error codes on page
221.
ulCmd UINT32 0x9425 PNM_AP_CMD_WRITE_RECORD_SUBM_CNF
Data
usSubmoduleHandle UINT16 1…2048 Handle of submodule the data was written to
usIndex UINT16 0…0xFFFF Index of record object written
ulPnio UINT32 any The PROFINET Status Code of the write operation
usAddVal1 UINT16 any Additional value returned by PROFINET Device when
writing the record object
usAddVal2 UINT16 any Additional value returned by the PROFINET Device
when writing the record object
Table 144. PNM_AP_WRITE_RECORD_SUBM_CNF_T - Write Submodule Record service confirmation
Parameter descriptions
Parameter usSubmoduleHandle
The handle of the (previously configured) submodule the record data was written to.
Parameter usIndex
The index of the record object written.
Parameter ulPnio
The PROFINET status code of the acyclic operation. This field is non-zero if a PROFINET error
occurred during processing the write service. The error code is either generated by the PROFINET
IO Controller or by the associated PROFINET IO Device. Section PROFINET Status Code on page
227 describes the meanings of the PROFINET status code.
Parameters usAddVal1, usAddVal2
The PROFINET specification defines additional values to be passed from the device in write record
object service responses. The content of these values can be found in these parameters.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 128/244
3.3.3 Read Implicit Record service
The application can use this service to implicitly read a record object of a device. This service
allows reading PROFINET record objects from any PROFINET IO Device with an assigned IP
Address in the network.
Note: The service involves RPC Transactions, which might timeout due to network problems
or unreachable devices. Due to these time-outs the confirmation packet might be
delayed by several seconds. This must be considered for the application
implementation.
Note: Only one Read implicit record service may be active at the same time. The application
must wait for the confirmation before the next read can be performed.
Note: When the confirmation packet of this service might exceed the mailbox size a
fragmented transfer will be used. This is either the case if a fragmented transfer is
explicitly initiated by setting ulExt to HIL_PACKET_SEQ_LAST or when the
ulMaxLenToRead field is set to a value greater than 1520.
3.3.3.1 PNM_AP_READ_IMPLICIT_RECORD_REQ_T request
Packet structure reference
typedef struct PNM_AP_READ_IMPLICIT_RECORD_REQ_DATA_Ttag
PNM_AP_READ_IMPLICIT_RECORD_REQ_DATA_T;
struct PNM_AP_READ_IMPLICIT_RECORD_REQ_DATA_Ttag
{
uint32_t ulIPAddr;
uint16_t usVendorId;
uint16_t usDeviceId;
uint16_t usInstanceId;
uint16_t usReserved1;
uint32_t ulApi;
uint16_t usSlot;
uint16_t usSubslot;
uint16_t usIndex;
uint16_t usReserved2;
uint32_t ulMaxLenToRead;
};
typedef struct PNM_AP_READ_IMPLICIT_RECORD_REQ_Ttag PNM_AP_READ_IMPLICIT_RECORD_REQ_T;
struct PNM_AP_READ_IMPLICIT_RECORD_REQ_Ttag
{
PNM_AP_PCK_HEADER_T tHead;
PNM_AP_READ_IMPLICIT_RECORD_REQ_DATA_T tData;
};
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 129/244
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x00000020 HIL_PACKET_DEST_DEFAULT_CHANNEL
ulSrc UINT32 0 (LFW) -
Handle (LOM)
ulLen UINT32 28 Packet Data Length in bytes
ulSta UINT32 0 Status unused for request. Set to zero.
ulCmd UINT32 0x9426 PNM_AP_CMD_READ_IMPLICIT_RECORD_REQ
Data
ulIpAddr UINT32 any IP address of device to read the record from
usVendorID UINT16 any PNO Vendor ID of the device to read the record from
usDeviceID UINT16 any Device ID of the device to read the record from
usInstanceID UINT16 any Instance ID of the device to read the record from
usReserved1 UINT16 0 Reserved for future use. Set to zero.
ulApi UINT32 any API to use for reading the object
usSlot UINT16 any Slot to use for reading the object
usSubslot UINT16 any Subslot to use for reading the object
usIndex UINT16 any Index of the record object to read
usReserved2 UINT16 0 Reserved for future use. Set to zero.
ulMaxLenToRead UINT32 1 … 65536 Maximum length to read
Table 145: PNM_AP_READ_IMPLICIT_RECORD_REQ_T - Read Implicit Record service request
Parameter descriptions
Parameter ulIPAddr
The IP Address of the device to read the record object from.
Parameters usVendorId, usDeviceId, usInstanceId
PROFINET Device identification according GSDML file of the device to read the record object
from.
Parameters ulApi, usSlot, usSubslot
The addressing parameters of the submodule to read the record object from.
Parameter usIndex
The index of the record object to read.
Parameter ulMaxLenToRead
The maximum number of bytes to read from the object.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 130/244
3.3.3.2 PNM_AP_READ_IMPLICIT_RECORD_CNF_T confirmation
Packet structure reference
typedef struct PNM_AP_READ_IMPLICIT_RECORD_CNF_DATA_Ttag
PNM_AP_READ_IMPLICIT_RECORD_CNF_DATA_T;
struct PNM_AP_READ_IMPLICIT_RECORD_CNF_DATA_Ttag
{
uint32_t ulIPAddr;
uint16_t usVendorId;
uint16_t usDeviceId;
uint16_t usInstanceId;
uint16_t usReserved1;
uint32_t ulApi;
uint16_t usSlot;
uint16_t usSubslot;
uint16_t usIndex;
uint16_t usReserved2;
uint32_t ulLenRead;
uint32_t ulPnio;
uint16_t usAddVal1;
uint16_t usAddVal2;
uint8_t abRecordData[ARRAYS_OF_LENGTH_ZERO];
};
typedef struct PNM_AP_READ_IMPLICIT_RECORD_CNF_Ttag PNM_AP_READ_IMPLICIT_RECORD_CNF_T;
struct PNM_AP_READ_IMPLICIT_RECORD_CNF_Ttag
{
PNM_AP_PCK_HEADER_T tHead;
PNM_AP_READ_IMPLICIT_RECORD_CNF_DATA_T tData;
};
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 131/244
Packet description
Variable Type Value / Range Description
ulLen UINT32 36 – 65572 Packet Data Length in bytes. Depends on amount of
(0 if ulSta != 0) record data returned by the device
ulSta UINT32 0 =0: no error
<> 0: see section Status codes / Error codes on page 221.
ulCmd UINT32 0x9427 PNM_AP_CMD_READ_IMPLICIT_RECORD_CNF
Data
ulIPAddr UINT32 mirrored IP Address of the device the record was read from
usVendorId UINT16 mirrored PROFINET Vendor Id of the device the record was read
from
usDeviceId UINT16 mirrored PROFINET Device Id of the device the record was read
from
usInstanceId UINT16 mirrored Instance Id of the device the record was read from
usReserved1 UINT16 0 Ignore for future compatibility
ulApi UINT32 mirrored API of the submodule the record was read from
usSlot UINT16 mirrored Slot of the submodule the record was read from
usSubslot UINT16 mirrored Subslot of the submodule the record was read from
usIndex UINT16 mirrored Index of record object read
usReserved2 UINT16 0 Ignore for future compatibility
ulLenRead UINT32 0 … 65536 Amount of bytes read from the record object
ulPnio UINT32 any PROFINET Status code of the read implicit operation
usAddVal1 UINT16 any Additional value returned by the PROFINET Device when
reading the record object
usAddVal2 UINT16 any Additional value returned by the PROFINET Device when
reading the record object
abRecordData[] UINT8 The data read from the record object
Table 146: PNM_AP_READ_IMPLICIT_RECORD_CNF_T - Read Implicit Record service confirmation
Parameter descriptions
Parameter ulIPAddr
The IP Address of the device the record object was read from.
Parameters usVendorId, usDeviceId, usInstanceId
PROFINET Device identification according GSDML file of the device the record object was read
from.
Parameters ulApi, usSlot, usSubslot
Addressing parameters of the submodule the record was read from
Parameter usIndex
The index of the record object to read.
Parameter ulLenRead
The number of bytes returned from the record object
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 132/244
Parameter ulPnio
The PROFINET status code of the acyclic operation. This field is non-zero if a PROFINET error
occurred during processing the read implicit service. The error code is either generated by the
PROFINET IO Controller or by the associated PROFINET IO Device. Section PROFINET Status
Code on page 227 describes the meanings of the PROFINET status code.
Parameters usAddVal1, usAddVal2
The PROFINET specification defines additional values to be passed from the device in read record
object service responses. The content of these values can be found in these parameters.
Parameter abRecordData[]
This parameter contains the record data returned by the device.
3.3.4 Acknowledge Alarm service
This service shall be used by the host application to acknowledge a previously received Receive
Alarm service (page 175) or Receive Diagnosis service (page 179). This service initiates the
application alarm acknowledge as defined by the PROFINET specification.
Note: According to PROFINET Specification, it is expected that this service is used after
application processing of the diagnosis/alarm. The intention behind this service is to
confirm to the device that the diagnosis/alarm had been processed by the application.
3.3.4.1 PNM_AP_ACK_ALARM_REQ_T request
Packet structure reference
typedef struct PNM_AP_ACK_ALARM_REQ_DATA_Ttag PNM_AP_ACK_ALARM_REQ_DATA_T;
struct PNM_AP_ACK_ALARM_REQ_DATA_Ttag
{
PNM_AP_DEVICEHANDLE_T usDeviceHandle;
PNM_AP_SUBMODULE_HANDLE_T usSubmoduleHandle;
uint16_t usAlarmType;
uint16_t usAlarmPriority;
uint32_t ulPnio;
};
typedef struct PNM_AP_ACK_ALARM_REQ_Ttag PNM_AP_ACK_ALARM_REQ_T;
struct PNM_AP_ACK_ALARM_REQ_Ttag
{
PNM_AP_PCK_HEADER_T tHead;
PNM_AP_ACK_ALARM_REQ_DATA_T tData;
};
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 133/244
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x00000020 HIL_PACKET_DEST_DEFAULT_CHANNEL
ulSrc UINT32 0 (LFW)
Handle (LOM)
ulLen UINT32 12 Packet Data Length in bytes
ulCmd UINT32 0x942C PNM_AP_CMD_ACK_ALARM_REQ
Data
usDeviceHandle UINT16 0, 1 to 128 Handle of the device causing the alarm
usSubmoduleHand UINT16 1 to 2048, Handle of the submodule causing the alarm
le 0xFFF0, 0xFFF1, 0xFFF2
usAlarmType UINT16 PROFINET Type of the Alarm
usAlarmPriority UINT16 0, 1 Priority of the Alarm
ulPnio UINT32 Status Code of Alarm Processing
Table 147: PNM_AP_ACK_ALARM_REQ_T - Acknowledge Alarm service request
Parameter descriptions
Parameters usDeviceHandle, usSubmoduleHandle
These parameters specify the source of the PROFINET alarm. They correspond to the handles
used when configuring the PROFINET IO Controller and must be set to the same value as in the
indication packet.
Parameter usAlarmType
This parameter defines the type of the alarm received. It must be set to the same value as in the
indication packet.
Parameter usAlarmPriority
This parameter defines the alarm priority. It must be set to the same value as in the indication
packet.
Parameter ulPnio
This parameter shall be set to the application status code of the alarm/diagnosis processing. If this
value is set to a non-zero value, the associated application relation might be aborted depending on
the device application implementation.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 134/244
3.3.4.2 PNM_AP_ACK_ALARM_CNF_T confirmation
If the "Send Alarm Ack Request" packet is correct and does not have a parameter fault, the
confirmation will always contain status "ok". This applies, even if the alarm could not be confirmed on
the network, e.g. because in the meantime the communication to IO Device was lost.
Packet structure reference
typedef PNM_AP_EMTPY_PCK_T PNM_AP_ACK_ALARM_CNF_T;
Packet description
Variable Type Value / Range Description
ulLen UINT32 0 Packet data length in bytes
ulSta UINT32 =0: no error
<> 0: see section Status codes / Error codes on page 221.
ulCmd UINT32 0x942D PNM_AP_CMD_ACK_ALARM_CNF
Table 148: PNM_AP_ACK_ALARM_CNF_T - Acknowledge Alarm service confirmation
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 135/244
3.3.5 DCP Set Name service
Use the DCP Set Name service to set the name of an IO Device.
Note: Only one DCP Service can be active at a time. It is not possible to use different DCP
Services at the same time to the same or different devices. The application must wait
for the confirmation of this service before requesting the next DCP Service.
3.3.5.1 PNM_AP_DCP_SET_NAME_REQ_T request
Packet structure reference
#define PNIO_APCTL_DCP_QUALIFIER_STORE_TEMPORARY 0x0
#define PNIO_APCTL_DCP_QUALIFIER_STORE_PERMANENT 0x1
typedef struct PNM_AP_DCP_SET_NAME_REQ_DATA_Ttag PNM_AP_DCP_SET_NAME_REQ_DATA_T;
struct PNM_AP_DCP_SET_NAME_REQ_DATA_Ttag
{
uint8_t abMacAddr[6];
uint16_t usQualifier;
uint8_t abName[240];
};
typedef struct PNM_AP_DCP_SET_NAME_REQ_Ttag PNM_AP_DCP_SET_NAME_REQ_T;
struct PNM_AP_DCP_SET_NAME_REQ_Ttag
{
PNM_AP_PCK_HEADER_T tHead;
PNM_AP_DCP_SET_NAME_REQ_DATA_T tData;
};
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x00000020 HIL_PACKET_DEST_DEFAULT_CHANNEL
ulSrc UINT32 0 (LFW)
Handle (LOM)
ulLen UINT32 8 to 248 Packet Data Length in bytes
ulCmd UINT32 0x9430 PNM_AP_CMD_DCP_SET_NAME_REQ
Data
abMac[6] UINT8[] Valid MAC address MAC address of IO Device
usQualifier UINT16 0,1 Additional qualification of the request
tName[240] UINT8[] The new Name of Station
Table 149: PNM_AP_DCP_SET_NAME_REQ_T - DCP Set Name service request
Parameter descriptions
Parameter abMac[6]
MAC address of IO Device whose name shall be set.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 136/244
Parameter usQualifier
This parameter defines additional qualification of the request. The following table explains the
available flags and their meaning:
Name Numerical Description
Value
PNIO_APCTL_DCP_QUALIFIER_STORE_TEMPORARY 0x0000 The name should be assigned temporarily.
The device will startup without a Name Of
Station after a Power Cycle
PNIO_APCTL_DCP_QUALIFIER_STORE_PERMANENT 0x0001 The name should be assigned
permanently.
Table 150: PNM_AP_DCP_SET_NAME_REQ_T - Parameter usQualifier
Parameter abName[240]
The new NameOfStation to set for the specified IO Device. The length of the name will be derived
from the packet length.
3.3.5.2 PNM_AP_DCP_SET_CNF_T confirmation
Packet structure reference
typedef struct PNM_AP_DCP_SET_CNF_DATA_Ttag PNM_AP_DCP_SET_CNF_DATA_T;
struct PNM_AP_DCP_SET_CNF_DATA_Ttag
{
uint8_t bDcpError;
};
typedef struct PNM_AP_DCP_SET_CNF_Ttag PNM_AP_DCP_SET_CNF_T;
struct PNM_AP_DCP_SET_CNF_Ttag
{
PNM_AP_PCK_HEADER_T tHead;
PNM_AP_DCP_SET_CNF_DATA_T tData;
};
Packet description
Variable Type Value / Range Description
ulLen UINT32 1 Packet Data Length in bytes
(0 if ulSta != 0)
ulSta UINT32 =0: no error
<> 0: see section Status codes / Error codes on page 221.
ulCmd UINT32 0x9431 PNM_AP_CMD_DCP_SET_NAME_CNF
Data
bDcpError UINT8 Result status of DCP Operation. Non-zero in case of an
Error.
Table 151: PNM_AP_DCP_SET_CNF_T - DCP Set Name service confirmation
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 137/244
Parameter descriptions
Parameter bDcpError
This parameter contains the result status of the DCP operation. The following values are defined
according PROFINET Specification:
Name Numerical Description
Value
- 0x00 No error occurred
- 0x01 Unsupported DCP Option - The device does not support setting this parameter
- 0x02 Unsupported DCP Suboption - The device does not support setting this parameter
- 0x03 Setting suboption failed - The device was not able to apply the requested parameter setting for
unknown reason
- 0x04 Resource error - The device encountered a resource error while applying the parameter
setting
- 0x05 Set not possible - The device cannot apply the parameter at the moment
- 0x06 Set not possible In operation - The device cannot apply the parameter as it is in operation
Table 152: PNM_AP_DCP_SET_CNF_T - Parameter bDcpError
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 138/244
3.3.6 DCP Set IP service
The DCP Set IP service can be used to set the IP address of an IO Device.
Note: Only one DCP Service can be active at a time. It is not possible to use different DCP
Services at the same time to the same or different devices. The application must wait
for the confirmation of this service before requesting the next DCP Service. This
service is available only on a configured stack.
3.3.6.1 PNM_AP_DCP_SET_IP_REQ_T request
Packet structure reference
#define PNIO_APCTL_DCP_QUALIFIER_STORE_TEMPORARY 0x0
#define PNIO_APCTL_DCP_QUALIFIER_STORE_PERMANENT 0x1
typedef struct PNM_AP_DCP_SET_IP_REQ_DATA_Ttag PNM_AP_DCP_SET_IP_REQ_DATA_T;
struct PNM_AP_DCP_SET_IP_REQ_DATA_Ttag
{
uint8_t abMacAddr[6];
uint16_t usQualifier;
uint32_t ulIpAddr;
uint32_t ulNetmask;
uint32_t ulGateway;
};
typedef struct PNM_AP_DCP_SET_IP_REQ_Ttag PNM_AP_DCP_SET_IP_REQ_T;
struct PNM_AP_DCP_SET_IP_REQ_Ttag
{
PNM_AP_PCK_HEADER_T tHead;
PNM_AP_DCP_SET_IP_REQ_DATA_T tData;
};
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x00000020 HIL_PACKET_DEST_DEFAULT_CHANNEL
ulLen UINT32 20 Packet Data Length in bytes
ulCmd UINT32 0x9432 PNM_AP_CMD_DCP_SET_IP_REQ
Data
abMac[6] UINT8[] Valid MAC MAC address of IO Device
address
usQualifier UINT16 0,1
ulIpAddr UINT32 The IP Address to be assigned to the device
ulNetmask UINT32 The Network Mask to be assigned to the device
ulGateway UINT32 The IPv4 Gateway's Address to be assigned to the device.
Table 153: PNM_AP_DCP_SET_IP_REQ_T - DCP Set IP service request
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 139/244
Parameter descriptions
Parameter abMac[6]
MAC address of IO Device whose name shall be set.
Parameter usQualifier
This parameter defines additional qualification of the request
The following table explains the available flags and their meaning:
Name Numerical Description
Value
PNIO_APCTL_DCP_QUALIFIER_STORE_TEMPORARY 0x0000 The name should be assigned temporarily.
The device will startup without a Name Of
Station after a Power Cycle
PNIO_APCTL_DCP_QUALIFIER_STORE_PERMANENT 0x0001 The name should be assigned permanently.
Table 154: PNM_AP_DCP_SET_IP_REQ_T - Parameter usQualifier
Parameters ulIpAddr, ulNetmask, ulGateway
The parameters define the new IP settings for the device. If no gateway is required, set the gateway address
to the same value as the IP address.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 140/244
3.3.6.2 PNM_AP_DCP_SET_CNF_T confirmation
Packet structure reference
typedef struct PNM_AP_DCP_SET_CNF_DATA_Ttag PNM_AP_DCP_SET_CNF_DATA_T;
struct PNM_AP_DCP_SET_CNF_DATA_Ttag
{
uint8_t bDcpError;
};
typedef struct PNM_AP_DCP_SET_CNF_Ttag PNM_AP_DCP_SET_CNF_T;
struct PNM_AP_DCP_SET_CNF_Ttag
{
PNM_AP_PCK_HEADER_T tHead;
PNM_AP_DCP_SET_CNF_DATA_T tData;
};
Packet description
Variable Type Value / Range Description
ulLen UINT32 1 Packet Data Length in bytes
(0 if ulSta != 0)
ulSta UINT32 =0: no error
<> 0: see section Status codes / Error codes on page 221.
ulCmd UINT32 0x9433 PNM_AP_CMD_DCP_SET_IP_CNF
Data
bDcpError UINT8 Result status of DCP Operation. Non-zero in case of an
Error.
Table 155: PNM_AP_DCP_SET_IP_CNF_T - DCP Set IP service confirmation
Parameter descriptions
Parameter ulSta
This parameter contains a non-zero error code if the request was rejected by the PROFINET IO
Controller. For details on error codes refer to Status/Error codes.
Parameter bDcpError
This parameter contains the result status of the DCP operation. The following values are defined
according to the PROFINET Specification:
Name Numerical Description
Value
- 0x00 No error occurred
- 0x01 Unsupported DCP Option - The device does not support setting this parameter
- 0x02 Unsupported DCP Suboption - The device does not support setting this parameter
- 0x03 Setting suboption failed - The device was not able to apply the requested parameter setting
for unknown reason
- 0x04 Resource error - The device encountered a resource error while applying the parameter
setting
- 0x05 Set not possible - The device cannot apply the parameter at the moment
- 0x06 Set not possible In operation - The device cannot apply the parameter as it is in operation
Table 156: Allowed values of parameter bDcpError
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 141/244
3.3.7 DCP Set Signal service
The DCP Set Signal Service can be used to activate the Signal LED on a device. The Signal LED
can be used to identify the device on wall mount.
Note: Only one DCP Service can be active at a time. It is not possible to use different DCP
Services at the same time to the same or different devices. The application must wait
for the confirmation of this service before requesting the next DCP Service. This
service is available only on a configured stack.
3.3.7.1 PNM_AP_DCP_SET_SIGNAL_REQ_T request
Packet structure reference
typedef struct PNM_AP_DCP_SET_SIGNAL_REQ_DATA_Ttag PNM_AP_DCP_SET_SIGNAL_REQ_DATA_T;
struct PNM_AP_DCP_SET_SIGNAL_REQ_DATA_Ttag
{
uint8_t abMacAddr[6];
uint16_t usQualifier;
};
typedef struct PNM_AP_DCP_SET_SIGNAL_REQ_Ttag PNM_AP_DCP_SET_SIGNAL_REQ_T;
struct PNM_AP_DCP_SET_SIGNAL_REQ_Ttag
{
PNM_AP_PCK_HEADER_T tHead;
PNM_AP_DCP_SET_SIGNAL_REQ_DATA_T tData;
};
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x00000020 HIL_PACKET_DEST_DEFAULT_CHANNEL
ulLen UINT32 8 Packet Data Length in bytes
ulSta UINT32 0 Status unused for request. Set to zero.
ulCmd UINT32 0x9434 PNM_AP_CMD_DCP_SET_SIGNAL_REQ
Data
abMac[6] UINT8[] Valid MAC MAC address of IO Device
address
usQualifier UINT16 0x0100 DCP Block Qualifier
Table 157: PNM_AP_DCP_SET_SIGNAL_REQ_T - DCP Set Signal service request
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 142/244
Parameter descriptions
Parameter abMac[6]
MAC address of the IO Device, whose Signal LED to be activated..
Parameter usQualifier
This parameter defines additional qualification of the request. The following values are defined:
Name Numerical Value Description
PNIO_APCTL_DCP_QUALIFIER_SIGNAL 0x0100 The only valid value in case of DCP
Set Signal.
3.3.7.2 PNM_AP_DCP_SET_CNF_T confirmation
Packet structure reference
typedef struct PNM_AP_DCP_SET_CNF_DATA_Ttag PNM_AP_DCP_SET_CNF_DATA_T;
struct PNM_AP_DCP_SET_CNF_DATA_Ttag
{
uint8_t bDcpError;
};
typedef struct PNM_AP_DCP_SET_CNF_Ttag PNM_AP_DCP_SET_CNF_T;
struct PNM_AP_DCP_SET_CNF_Ttag
{
PNM_AP_PCK_HEADER_T tHead;
PNM_AP_DCP_SET_CNF_DATA_T tData;
};
Packet description
ulLen UINT32 1 Packet Data Length in bytes
(0 if ulSta != 0)
ulSta UINT32 =0: no error
<> 0: see section Status codes / Error codes on page 221.
ulCmd UINT32 0x9435 PNM_AP_CMD_DCP_SET_SIGNAL_CNF
Data
bDcpError UINT8 Result status of DCP Operation. Non-zero in case of an
error.
Table 158: PNM_AP_DCP_SET_CNF_T - DCP Set Signal service confirmation
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 143/244
Parameter descriptions
Parameter bDcpError
Contains the result status of the DCP operation. The following values are defined according to the
PROFINET Specification:
Name Numerical Description
Value
- 0x00 No error occurred
- 0x01 Unsupported DCP Option - The device does not support setting this parameter
- 0x02 Unsupported DCP Suboption - The device does not support setting this parameter
- 0x03 Setting suboption failed - The device was not able to apply the requested parameter setting for
unknown reason
- 0x04 Resource error - The device encountered a resource error while applying the parameter
setting
- 0x05 Set not possible - The device cannot apply the parameter at the moment
- 0x06 Set not possible In operation - The device cannot apply the parameter as it is in operation
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 144/244
3.3.8 DCP Reset Factory Settings service
Use the DCP Set Reset Factory Settings service to reset parameters of an IO Device.
Note: Only one DCP Service can be active at a time. It is not possible to use different DCP
Services at the same time to the same or different devices. The application must wait
for the confirmation of this service before requesting the next DCP Service. This
service is available only on a configured stack.
3.3.8.1 PNM_AP_DCP_RESET_FACTORY_SETTINGS_REQ_T request
Packet structure reference
#define PNIO_APCTL_DCP_QUALIFIER_RESETTOFACTORY_APPLICATION (1 << 1)
#define PNIO_APCTL_DCP_QUALIFIER_RESETTOFACTORY_COMMUNICATION (2 << 1)
#define PNIO_APCTL_DCP_QUALIFIER_RESETTOFACTORY_ENGINEERING (3 << 1)
#define PNIO_APCTL_DCP_QUALIFIER_RESETTOFACTORY_ALL (4 << 1)
#define PNIO_APCTL_DCP_QUALIFIER_RESETTOFACTORY_DEVICE (8 << 1)
#define PNIO_APCTL_DCP_QUALIFIER_RESETTOFACTORY_RESTORE (9 << 1)
typedef struct PNM_AP_DCP_RESET_FACTORY_SETTINGS_REQ_DATA_Ttag
PNM_AP_DCP_RESET_FACTORY_SETTINGS_REQ_DATA_T;
struct PNM_AP_DCP_RESET_FACTORY_SETTINGS_REQ_DATA_Ttag
{
uint8_t abMacAddr[6];
uint16_t usQualifier;
};
typedef struct PNM_AP_DCP_RESET_FACTORY_SETTINGS_REQ_Ttag
PNM_AP_DCP_RESET_FACTORY_SETTINGS_REQ_T;
struct PNM_AP_DCP_RESET_FACTORY_SETTINGS_REQ_Ttag
{
PNM_AP_PCK_HEADER_T tHead;
PNM_AP_DCP_RESET_FACTORY_SETTINGS_REQ_DATA_T tData;
};
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x00000020 HIL_PACKET_DEST_DEFAULT_CHANNEL
ulLen UINT32 8 Packet Data Length in bytes
ulCmd UINT32 0x9436 PNM_AP_CMD_DCP_RESET_FACTORY_SETTIN
GS_REQ
Data
abMac[6] UINT8[] Valid MAC address MAC address of IO Device
usQualifier UINT16 0,2,4,6,8,16,18 DCP Block Qualifier
Table 159: PNM_AP_DCP_RESET_FACTORY_SETTINGS_REQ_T - DCP Reset Factory Settings service request
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 145/244
Parameter descriptions
Parameter abMac[6]
MAC address of the PROFINET IO Device whose name shall be set.
Parameter usQualifier
This parameter defines additional qualification of the request. The following values are defined for
DCP Reset Factory Settings:
Name Numerical Reset Description
Value Mode
0x0000 - Use DCP FactoryReset according
to PROFINET Specification 2.2
PNIO_APCTL_DCP_QUALIFIER_RESETTOFACTORY_ 0x0002 1 The device shall reset the
APPLICATION application data in submodules
and modules.
PNIO_APCTL_DCP_QUALIFIER_RESETTOFACTORY_ 0x0004 2 The device shall reset all PDev
COMMUNICATION Parameters, AR Parameters and
Communication Parameters.
PNIO_APCTL_DCP_QUALIFIER_RESETTOFACTORY_ 0x0006 3 The device shall reset all
ENGINEERING Parameters stored by the
engineering system
PNIO_APCTL_DCP_QUALIFIER_RESETTOFACTORY_ 0x0008 4 The device shall reset all stored
ALL data to factory default values
PNIO_APCTL_DCP_QUALIFIER_RESETTOFACTORY_ 0x0010 8 The device shall reset all stored
DEVICE data and communication
parameters of the device to factory
default values. (Out of the Box
State)
PNIO_APCTL_DCP_QUALIFIER_RESETTOFACTORY_ 0x0012 9 The device shall reset its software
RESTORE to the factory images.
Table 160: Parameter usQualifier- Defined values for DCP Reset Factory Settings
Note: PROFINET Devices according to Specification V2.2 support only the DCP
FactoryReset variant of this service. Therefore, the usQualifier must be set to zero for
these devices. For PROFINET Devices according to Specification V2.3 the supported
Reset Modes are specified in the GSDML file.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 146/244
3.3.8.2 PNM_AP_DCP_SET_CNF_DATA_T confirmation
Packet structure reference
typedef struct PNM_AP_DCP_SET_CNF_DATA_Ttag PNM_AP_DCP_SET_CNF_DATA_T;
struct PNM_AP_DCP_SET_CNF_DATA_Ttag
{
uint8_t bDcpError;
};
typedef struct PNM_AP_DCP_SET_CNF_Ttag PNM_AP_DCP_SET_CNF_T;
struct PNM_AP_DCP_SET_CNF_Ttag
{
PNM_AP_PCK_HEADER_T tHead;
PNM_AP_DCP_SET_CNF_DATA_T tData;
};
Packet description
Variable Type Value / Range Description
ulLen UINT32 1 Packet Data Length in bytes
(0 if ulSta != 0)
ulSta UINT32 =0: no error
<> 0: see section Status codes / Error codes on page 221.
ulCmd UINT32 0x9437 PNM_AP_CMD_DCP_RESET_FACTORY_SETTINGS_CNF
Data
bDcpError UINT8 Result status of DCP Operation. Non-zero in case of an
error.
Table 161: PNM_AP_DCP_RESET_FACTORY_SETTINGS_REQ_T - DCP Reset Factory Settings service
Parameter descriptions
Parameter ulSta
This parameter contains a non-zero error code if the request was rejected by the PROFINET IO
Controller. For details on error codes refer to Status/Error codes.
Parameter bDcpError
This parameter contains the result status of the DCP operation. The following values are defined
according to the PROFINET Specification:
Name Numerical Description
Value
- 0x00 No error occurred
- 0x01 Unsupported DCP Option - The device does not support setting this parameter
- 0x02 Unsupported DCP Suboption - The device does not support setting this parameter
- 0x03 Setting suboption failed - The device was not able to apply the requested parameter setting for
unknown reason
- 0x04 Resource error - The device encountered a resource error while applying the parameter
setting
- 0x05 Set not possible - The device cannot apply the parameter at the moment
- 0x06 Set not possible In operation - The device cannot apply the parameter as it is in operation
Table 162: Parameter bDcpError - Defined values
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 147/244
3.3.9 DCP Get service
Use the DCP Get service to read parameters from a device (IO Controller or IO Device) that is
connected to the network via the DCP protocol.
Note: Only one DCP Service can be active at a time. It is not possible to use different DCP
Services at the same time to the same or different devices. The application must wait
for the confirmation of this service before requesting the next DCP Service.
3.3.9.1 PNM_AP_DCP_GET_REQ_T request
Packet structure reference
#define PNM_AP_DCP_GET_OPTION_MACADDR (0x0001)
#define PNM_AP_DCP_GET_OPTION_IP_PARAM (0x0002)
#define PNM_AP_DCP_GET_OPTION_TYPEOFSTATION (0x0004)
#define PNM_AP_DCP_GET_OPTION_NAMEOFSTATION (0x0008)
#define PNM_AP_DCP_GET_OPTION_DEVICE_IDENT (0x0010)
#define PNM_AP_DCP_GET_OPTION_DEVICE_ROLE (0x0020)
#define PNM_AP_DCP_GET_OPTION_DEVICE_INSTANCE (0x0040)
typedef struct PNM_AP_DCP_GET_REQ_DATA_Ttag PNM_AP_DCP_GET_REQ_DATA_T;
struct PNM_AP_DCP_GET_REQ_DATA_Ttag
{
uint8_t abMacAddr[6];
uint16_t usRequestFlags;
};
typedef struct PNM_AP_DCP_GET_REQ_Ttag PNM_AP_DCP_GET_REQ_T;
struct PNM_AP_DCP_GET_REQ_Ttag
{
PNM_AP_PCK_HEADER_T tHead;
PNM_AP_DCP_GET_REQ_DATA_T tData;
};
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x00000020 HIL_PACKET_DEST_DEFAULT_CHANNEL
ulLen UINT32 8 Packet Data Length in bytes
ulCmd UINT32 0x9438 PNM_AP_CMD_DCP_GET_REQ
Data
abMac[6] UINT8[] Valid MAC MAC address of IO Device
address
usRequestFlags UINT16 Bitmask of values to retrieve
Table 163: PNM_AP_DCP_GET_REQ_T - DCP Get service request
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 148/244
Parameter descriptions
Parameter abMac[6]
MAC address of the IO Device whose name shall be set.
Parameter usRequestFlags
This parameter is a bit field defining which parameters shall be retrieved from the target device.
Name Numerical Description
Value
PNM_AP_DCP_GET_OPTION_MACADDR 0x0001 Return the MAC Address of the device
(internally forced to be always true)
PNM_AP_DCP_GET_OPTION_IP_PARAM 0x0002 Retrieve the IP Settings of the device
PNM_AP_DCP_GET_OPTION_TYPEOFSTATION 0x0004 Retrieve the Type Of Station of the Device
(Equal to Device Type since PROFINET
Specification V2.3)
PNM_AP_DCP_GET_OPTION_NAMEOFSTATION 0x0008 Retrieve the Name of Station of the device
PNM_AP_DCP_GET_OPTION_DEVICE_IDENT 0x0010 Retrieve the Vendor and Device ID of the
device
PNM_AP_DCP_GET_OPTION_DEVICE_ROLE 0x0020 Retrieve the role of the device
PNM_AP_DCP_GET_OPTION_DEVICE_INSTANCE 0x0040 Retrieve the instance of the device. This
Parameter is supported by PROFINET
Specification V2.3 devices and above.
Table 164: Parameter usRequestFlags
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 149/244
3.3.9.2 PNM_AP_DCP_GET_CNF_T confirmation
Packet structure reference
#define PNM_AP_DCP_GET_OPTION_MACADDR (0x0001)
#define PNM_AP_DCP_GET_OPTION_IP_PARAM (0x0002)
#define PNM_AP_DCP_GET_OPTION_TYPEOFSTATION (0x0004)
#define PNM_AP_DCP_GET_OPTION_NAMEOFSTATION (0x0008)
#define PNM_AP_DCP_GET_OPTION_DEVICE_IDENT (0x0010)
#define PNM_AP_DCP_GET_OPTION_DEVICE_ROLE (0x0020)
#define PNM_AP_DCP_GET_OPTION_DEVICE_INSTANCE (0x0040)
typedef struct PNM_AP_DCP_GET_CNF_DATA_Ttag PNM_AP_DCP_GET_CNF_DATA_T;
struct PNM_AP_DCP_GET_CNF_DATA_Ttag
{
uint8_t abMacAddr[6];
uint16_t usValidFlags;
uint32_t ulIpAddr;
uint32_t ulNetmask;
uint32_t ulGateway;
uint16_t usVendorId;
uint16_t usDeviceId;
uint16_t usInstance;
uint16_t usRole;
uint8_t bLenNameOfStation;
uint8_t bLenTypeOfStation;
uint8_t abNameOfStation[240];
uint8_t abTypeOfStation[240];
uint8_t bErrorCount;
uint8_t bBlockError;
};
typedef struct PNM_AP_DCP_GET_CNF_Ttag PNM_AP_DCP_GET_CNF_T;
struct PNM_AP_DCP_GET_CNF_Ttag
{
PNM_AP_PCK_HEADER_T tHead;
PNM_AP_DCP_GET_CNF_DATA_T tData;
};
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 150/244
Packet description
Variable Type Value / Range Description
ulLen UINT32 512 Packet Data Length in bytes
(0 if ulSta != 0)
ulSta UINT32 =0: no error
<> 0: see section Status codes / Error codes on page
221.
ulCmd UINT32 0x9439 PNM_AP_CMD_DCP_GET_CNF
Data
abMacAddr[] UINT8[] The MAC Address of the target device
usValidFlags UINT16 Bitmask defining the valid values
ulIpAddr UINT32 IP Address returned by device
ulNetmask UINT32 Network mask returned by the device
ulGateway UINT32 IPv4 Gateway address returned by the device
usVendorId UINT16 PROFINET Vendor ID returned by the device
usDeviceId UINT16 PROFINET Device ID returned by the device
usInstance UINT16 PROFINET Device Instance
usRole UINT16 1 to 3 PROFINET Role returned by the device
bLenNameOfStation UINT8 0 to 240 Length of the Name Of Station returned by the device
bLenTypeOfStation UINT8 0 to 240 Length of the Type Of Station returned by the device
abNameOfStation[] UINT8[] The Name Of Station of the Device
abTypeOfStation[] UINT8 The Type Of Station of the Device
bErrorCount UINT8 The number of DCP Get Option Errors returned by the
device
bBlockError UINT8 The last DCP Option Block error returned by the device
Table 165: PNM_AP_DCP_GET_CNF_T - DCP Get service confirmation
Parameter descriptions
Parameter usValidFlags
This parameter is a bitmask, which defines which parameters have been retrieved from the target
device. The following values are defined:
Name Numerical Value Description
PNM_AP_DCP_GET_OPTION_MACADDR 0x0001 Return the MAC address of the device
(taken from request packet, internally forced
to be always true)
PNM_AP_DCP_GET_OPTION_IP_PARAM 0x0002 Retrieve the IP Settings of the device
PNM_AP_DCP_GET_OPTION_TYPEOFSTATION 0x0004 Retrieve the Type Of Station of the Device
(Equal to Device Type since PROFINET
Specification V2.3)
PNM_AP_DCP_GET_OPTION_NAMEOFSTATION 0x0008 Retrieve the Name of Station of the device
PNM_AP_DCP_GET_OPTION_DEVICE_IDENT 0x0010 Retrieve the Vendor and Device ID of the
device
PNM_AP_DCP_GET_OPTION_DEVICE_ROLE 0x0020 Retrieve the role of the device
PNM_AP_DCP_GET_OPTION_DEVICE_INSTANCE 0x0040 Retrieve the instance of the device. This
parameter is supported by devices
according to the PROFINET Specification
V2.3 and above.
Table 166: Parameter usValidFlags – Defined values
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 151/244
3.3.10 Get Logbook Service
The controller maintains an internal logbook for each device and one for itself. The logbook
contains an ordered list of events occured since last Download finished service.
3.3.10.1 PNM_AP_GET_LOGBOOK_REQ_T request
Packet structure reference
typedef struct PNM_AP_GET_LOGBOOK_REQ_DATA_Ttag PNM_AP_GET_LOGBOOK_REQ_DATA_T;
struct PNM_AP_GET_LOGBOOK_REQ_DATA_Ttag
{
PNM_AP_DEVICEHANDLE_T usDeviceHandle;
uint16_t usMaxEntries;
};
typedef struct PNM_AP_GET_LOGBOOK_REQ_Ttag PNM_AP_GET_LOGBOOK_REQ_T;
struct PNM_AP_GET_LOGBOOK_REQ_Ttag
{
PNM_AP_PCK_HEADER_T tHead;
PNM_AP_GET_LOGBOOK_REQ_DATA_T tData;
};
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x00000020 HIL_PACKET_DEST_DEFAULT_CHANNEL
ulLen UINT32 4 Packet data length in bytes
ulCmd UINT32 0x94F0 PNM_AP_CMD_GET_LOGBOOK_REQ
Data
usDeviceHandle PNM_AP_DE 0 PROFINET IO Controller logbook
VICEHANDL 1 to 128 Handle of AR for which to retrieve the logbook
E_T
usMaxEntries UINT16 1 to 64 Number of entries to return in response
Table 167: PNM_AP_GET_LOGBOOK_REQ_T - Get Logbook Service request
Parameter descriptions
Parameter usDeviceHandle
Reference to the AR for which to retrieve the logbook. Set to zero to retrieve the PROFINET IO
Controller logbook.
Parameter usMaxEntries
Maximum number of entries to return in confirmation packet
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 152/244
3.3.10.2 PNM_AP_GET_LOGBOOK_CNF_T confirmation
Packet structure reference
enum PNM_AP_LOGBOOK_EVENT_Etag
{
PNM_AP_LOGBOOK_CONFIGSTATE = 0x0001,
PNM_AP_LOGBOOK_CONFIGLOCKED = 0x0002,
PNM_AP_LOGBOOK_CONFIGERROR = 0x0003,
PNM_AP_LOGBOOK_HIF_WDGERROR = 0x0100,
PNM_AP_LOGBOOK_EVENT_AR_NOTESTABLISHED = 0x8000,
PNM_AP_LOGBOOK_EVENT_AR_ESTABLISHED = 0x8001,
PNM_AP_LOGBOOK_EVENT_AR_ABORT = 0x8002,
PNM_AP_LOGBOOK_EVENT_AR_LOW_PRIO_ALARM = 0x8003,
PNM_AP_LOGBOOK_EVENT_AR_HIGH_PRIO_ALARM = 0x8004,
PNM_AP_LOGBOOK_EVENT_AR_RPC_READ_FAILED = 0x8005,
PNM_AP_LOGBOOK_EVENT_AR_RPC_WRITE_FAILED = 0x8006,
PNM_AP_LOGBOOK_EVENT_AR_RPC_FAILED = 0x8007,
PNM_AP_LOGBOOK_EVENT_STACK_BUSSTATE = 0x8100,
PNM_AP_LOGBOOK_EVENT_STACK_MEMORYUSAGE = 0x8101,
PNM_AP_LOGBOOK_EVENT_STACK_ADDRESS_CONFLICT_DETECTED = 0x8102,
PNM_AP_LOGBOOK_EVENT_STACK_ADDRESS_CONFLICT_RESOLVED = 0x8103
};
typedef enum PNM_AP_LOGBOOK_EVENT_Etag PNM_AP_LOGBOOK_EVENT_E;
typedef struct PNM_AP_LOGBOOK_RECORD_Ttag PNM_AP_LOGBOOK_RECORD_T;
struct PNM_AP_LOGBOOK_RECORD_Ttag
{
uint64_t ulCycleCounter;
uint16_t usEvent;
uint16_t usPadding;
uint32_t ulAdditionalValue;
};
typedef struct PNM_AP_GET_LOGBOOK_CNF_DATA_Ttag PNM_AP_GET_LOGBOOK_CNF_DATA_T;
struct PNM_AP_GET_LOGBOOK_CNF_DATA_Ttag
{
PNM_AP_DEVICEHANDLE_T usDeviceHandle;
uint16_t usNumEntries;
PNM_AP_LOGBOOK_RECORD_T atEntries[64];
};
typedef struct PNM_AP_GET_LOGBOOK_CNF_Ttag PNM_AP_GET_LOGBOOK_CNF_T;
struct PNM_AP_GET_LOGBOOK_CNF_Ttag
{
PNM_AP_PCK_HEADER_T tHead;
PNM_AP_GET_LOGBOOK_CNF_DATA_T tData;
};
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 153/244
Packet description
Variable Type Value / Range Description
ulLen UINT32 4 to 1028 Packet data length in bytes
(0 if ulSta != 0)
ulSta UINT32 See section Status codes / Error codes on page 221.
ulCmd UINT32 0x94F1 PNM_AP_CMD_GET_LOGBOOK_CNF
Data - structure PNM_AP_DWNL_FIN_CNF_DATA_T
usDeviceHandle PNM_AP_DE 0 PROFINET IO Controller logbook
VICEHANDL 1 to 128 Handle of AR to retrieve the logbook for
E_T
usNumEntries UINT16 0 to 64 Number of entries in logbook
atEntries[] PNM_AP_LO The newest entries in the logbook in ascending time
GBOOK_RE order.
CORD_T
Data - structure PNM_AP_LOGBOOK_RECORD_T
ulCycleCounter UINT64 Elapsed time since power-up of the PROFINET IO
Controller in Units of 31.25 µs
usEvent UINT16 Id of the Event
usPadding UINT16 N/A Ignore for future compatibility.
ulAdditionalValue UINT32 Event parameter
Table 168: PNM_AP_GET_LOGBOOK_CNF_T - Get Logbook Service confirmation
Parameter descriptions
Parameter usDeviceHandle
A reference to the AR the logbook was retrieved for. Zero if the PROFINET IO Controllers logbook
was received
Parameter usNumEntries
The actual number of entries returned in atEntries.
Parameter atEntries[], ulCyclecounter, usEvent, ulAdditionalValue
The entries of the logbook ordered in ascending time. The parameter ulCycleCounter contains the value
of the PROFINET cycle when the event occurred. The following values are defined for the event id and the
event parameter:
Name Numerical Description Event Parameter
Value
AR related events
PNM_AP_LOGBOOK_EVENT_AR_NOTESTABLISHED 0x8000 The AR was not PROFINET Error
established Status
PNM_AP_LOGBOOK_EVENT_AR_ESTABLISHED 0x8001 The AR was 0: No Module Diff
established Block was reported
by the device
1: A Module Diff
Block was reported
by the device
PNM_AP_LOGBOOK_EVENT_AR_ABORT 0x8002 The AR was aborted PROFINET Error
Status
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 154/244
Name Numerical Description Event Parameter
Value
PNM_AP_LOGBOOK_EVENT_AR_LOW_PRIO_ALARM 0x8003 A low priority Lower 16 Bit:
PROFINET alarm Handle of
was received Submodule
Upper 16 Bit: Alarm
Type
PNM_AP_LOGBOOK_EVENT_AR_HIGH_PRIO_ALARM 0x8004 A high priority Lower 16 Bit:
PROFINET alarm Handle of
was received Submodule
Upper 16 Bit: Alarm
Type
PNM_AP_LOGBOOK_EVENT_AR_RPC_READ_FAILED 0x8005 A Record Read PROFINET Error
Request failed Status
PNM_AP_LOGBOOK_EVENT_AR_RPC_WRITE_FAILED 0x8006 A Record Write PROFINET Error
Request failed Status
PNM_AP_LOGBOOK_EVENT_AR_RPC_FAILED 0x8007 Connection PROFINET Error
link/operation/termin Status
ation failed
PROFINET IO Controller related events
PNM_AP_LOGBOOK_CONFIGSTATE 0x0001 Change of Table 170: Event
configuration state Parameter
PNM_AP_LOGBOO
K_CONFIGSTATE
PNM_AP_LOGBOOK_CONFIGLOCKED 0x0002 Configuration Lock 0: Not locked
State Changed 1: Locked
PNM_AP_LOGBOOK_CONFIGERROR 0x0003 A Configuration See Error Codes of
record was invalid PROFINET IO
Controller on page
221
PNM_AP_LOGBOOK_HIF_WDGERROR 0x0100 Application DPM Ignore for future
Watchdog Timeout compatibility.
PNM_AP_LOGBOOK_EVENT_STACK_BUSSTATE 0x8100 The bus state 0: Bus Off
changed 1: Startup of the
network interface
2: network up, but
no Profinet
communication is
active
3: Profinet
communication is
active
4: Shutting down:
waiting for pending
RPC calls
PNM_AP_LOGBOOK_EVENT_STACK_MEMORYUSAGE 0x8101 Resources Number of free
reallocation. chunks after
reallocation
PNM_AP_LOGBOOK_EVENT_STACK_ADDRESS_CON 0x8102 Address conflict Bit 0 is set:
FLICT_DETECTED detected NameOfStation
conflict
Bit 1 is set: IP
address conflict
PNM_AP_LOGBOOK_EVENT_STACK_ADDRESS_CON 0x8103 Address conflict Value is 0
FLICT_RESOLVED resolved
Table 169: Parameter atEntries[], ulCyclecounter, usEvent, ulAdditionalValue
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 155/244
Event Parameter PNM_AP_LOGBOOK_CONFIGSTATE descriptions
Value Description
0 Power on state, waiting for DDP to become ready and remanent data to be loaded
1 Error when handling DDP during startup phase
2 DDP is started, Controller not configured
3 Not configured
4 Configuration actived
5 Configuration by packet done
6 An error occured while configuring the stack
Table 170: Event Parameter PNM_AP_LOGBOOK_CONFIGSTATE
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 156/244
3.3.11 Get AR Vendor Block Response service
The application can use this service to retrieve the response of a PROFINET IO Device to an AR
Vendor Block Request. The AR Vendor Block Request must have been configured previously
using Configure AR parameters service.
3.3.11.1 PNM_AP_GET_ARVENDORBLOCK_RESPONSE_REQ_T request
Packet structure reference
typedef struct PNM_AP_GET_ARVENDORBLOCK_RESPONSE_REQ_DATA_Ttag
PNM_AP_GET_ARVENDORBLOCK_RESPONSE_REQ_DATA_T;
struct PNM_AP_GET_ARVENDORBLOCK_RESPONSE_REQ_DATA_Ttag
{
PNM_AP_ARVENDORBLOCKHANDLE_T usArVendorBlockHandle;
};
typedef struct PNM_AP_GET_ARVENDORBLOCK_RESPONSE_REQ_Ttag
PNM_AP_GET_ARVENDORBLOCK_RESPONSE_REQ_T;
struct PNM_AP_GET_ARVENDORBLOCK_RESPONSE_REQ_Ttag
{
PNM_AP_PCK_HEADER_T tHead;
PNM_AP_GET_ARVENDORBLOCK_RESPONSE_REQ_DATA_T tData;
};
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x00000020 HIL_PACKET_DEST_DEFAULT_CHANNEL
ulSrc UINT32 Handle (LFW)
Handle (LOM)
ulLen UINT32 2 Packet data length in bytes
ulCmd UINT32 0x9420 PNM_AP_CMD_GET_ARVENDORBLOCK_RESPONSE_R
EQ
Data
usArVendorBlock UINT16 1 to 256 Handle of the previously configured AR Vendor Block
Handle Request associated with the desired AR Vendor Block
Response
Table 171: PNM_AP_GET_ARVENDORBLOCK_RESPONSE_REQ_T - Get AR Vendor Block Response service
request
Parameter descriptions
Parameter usArVendorBlockHandle
The handle of the previously configured AR Vendor Block. The confirmation packet will contain the
associated AR Vendor Block Response Value.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 157/244
3.3.11.2 PNM_AP_GET_ARVENDORBLOCK_RESPONSE_CNF_DATA_T
confirmation
Packet structure reference
typedef struct PNM_AP_GET_ARVENDORBLOCK_RESPONSE_CNF_DATA_Ttag
PNM_AP_GET_ARVENDORBLOCK_RESPONSE_CNF_DATA_T;
struct PNM_AP_GET_ARVENDORBLOCK_RESPONSE_CNF_DATA_Ttag
{
PNM_AP_ARVENDORBLOCKHANDLE_T usArVendorBlockHandle;
uint16_t usAPStructureIdentifier;
uint32_t ulApi;
uint8_t abData[ARRAYS_OF_LENGTH_ZERO];
};
typedef struct PNM_AP_GET_ARVENDORBLOCK_RESPONSE_CNF_Ttag
PNM_AP_GET_ARVENDORBLOCK_RESPONSE_CNF_T;
struct PNM_AP_GET_ARVENDORBLOCK_RESPONSE_CNF_Ttag
{
PNM_AP_PCK_HEADER_T tHead;
PNM_AP_GET_ARVENDORBLOCK_RESPONSE_CNF_DATA_T tData;
};
Packet description
Variable Type Value / Range Description
ulLen UINT32 8 + AR Vendor Packet data length in bytes
Block Response
Data Length
(0 if ulSta != 0)
ulCmd UINT32 0x9421 PNM_AP_CMD_GET_ARVENDORBLOCK_RESPONSE_CNF
ulSta UINT32 See section Status codes / Error codes on page 221.
Data
usArVendorBlock UINT16 1 to 256 Handle to the associated is AR Vendor Block.
Handle
usAPStructureIde UINT16 0 to 0x7FFF, AP Structure Identifier as configured previously
ntifier 0x8000
ulApi UINT32 any API as configured previously
abData[] UINT8[] Byte array containing the AR Vendor Block Response
Data.
Table 172: PNM_AP_GET_ARVENDORBLOCK_RESPONSE_CNF_T - Get AR Vendor Block Response service
confirmation
Parameter descriptions
Parameter usArVendorBlockHandle
The handle of the requested AR Vendor Block.
Parameters usAPStructureIdentifier, ulApi
These parameters contain the values configured previously using Configure AR parameters
service.
Parameter abData[]
The AR Vendor Block Response Data returned by the device in its connect response. The actual
length of the data can be calculated from tHead.ulLen.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 158/244
3.3.12 Set AR Status service
Use this service to change the status of an AR at runtime.
3.3.12.1 PNM_AP_SET_ARSTATUS_REQ request
Packet structure reference
enum PNM_AP_SET_ARSTATUS_FLAGS_ETag
{
PNM_AP_SET_ARSTATUS_DISABLED = 0x04,
};
typedef enum PNM_AP_SET_ARSTATUS_FLAGS_ETag PNM_AP_SET_ARSTATUS_FLAGS_E;
typedef struct PNM_AP_SET_ARSTATUS_REQ_DATA_Ttag PNM_AP_SET_ARSTATUS_REQ_DATA_T;
struct PNM_AP_SET_ARSTATUS_REQ_DATA_Ttag
{
PNM_AP_DEVICEHANDLE_T usDeviceHandle;
uint16_t usPadding;
uint32_t ulStatus;
};
typedef struct PNM_AP_SET_ARSTATUS_REQ_Ttag PNM_AP_SET_ARSTATUS_REQ_T;
struct PNM_AP_SET_ARSTATUS_REQ_Ttag
{
PNM_AP_PCK_HEADER_T tHead;
PNM_AP_SET_ARSTATUS_REQ_DATA_T tData;
};
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x00000020 HIL_PACKET_DEST_DEFAULT_CHANNEL
ulSrc UINT32 0 (LFW)
Handle (LOM)
ulLen UINT32 8 Packet data length in bytes
ulCmd UINT32 0x942E PNM_AP_CMD_SET_AR_STATUS_REQ
Data
usDeviceHandle UINT16 1 to 128 Handle of AR to configure
usPadding UINT16 0 Set to zero.
ulStatus UINT32 Bitmask to configure the AR
Table 173: PNM_AP_SET_ARSTATUS_REQ - Set AR Status service request
Parameter descriptions
Parameter ulStatus
A bitmask defining the new properties of an AR.
Name Value Description
PNM_AP_SET_ARSTATUS_ENABLED 0x00000000 If no bit is set, this particular AR will be enabled.
PNM_AP_SET_ARSTATUS_DISABLED 0x00000004 If this bit is set, this particular AR will be disabled. If the
AR is connected, the connection will be aborted.
Table 174: PNM_AP_SET_ARSTATUS_REQ - Parameter ulStatus
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 159/244
3.3.12.2 PNM_AP_SET_ARSTATUS_CNF_T confirmation
Packet structure reference
typedef PNM_AP_EMTPY_PCK_T PNM_AP_SET_ARSTATUS_CNF_T;
Packet description
Variable Type Value / Range Description
ulLen UINT32 0 Packet data length in bytes
ulCmd UINT32 0x942F PNM_AP_CMD_SET_AR_STATUS_CNF
ulSta UINT32 =0: no error
<> 0: see section Status codes / Error codes on page 221.
Table 175: PNM_AP_SET_ARSTATUS_CNF_T - Set AR Status service confirmation
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 160/244
3.3.13 Get AR State service
The application can use this service to retrieve the current operational state of the controller and all
ARs.
3.3.13.1 PNM_AP_GET_ARSTATE_REQ_T request
Packet structure reference
typedef PNM_AP_EMTPY_PCK_T PNM_AP_GET_ARSTATE_REQ_T;
Packet description
Variable Type Value / Range Description
ulLen UINT32 0 -
ulCmd UINT32 0x9444 PNM_AP_CMD_GET_ARSTATE_REQ
Table 176: PNM_AP_GET_ARSTATE_REQ_T request
3.3.13.2 PNM_AP_GET_ARSTATE_CNF_T confirmation
Packet structure reference
#define PNM_AP_ARSTATE_MSK 0x0F
#define PNM_AP_ARSTATE_NOT_CONFIGURED 0x00
#define PNM_AP_ARSTATE_STARTUP 0x01
#define PNM_AP_ARSTATE_DISCONNECTED 0x02
#define PNM_AP_ARSTATE_BACKUP 0x03
#define PNM_AP_ARSTATE_BACKUP_PR_MISSING 0x04
#define PNM_AP_ARSTATE_PRIMARY 0x06
#define PNM_AP_ARSTATE_NETWORKUP 0x08
typedef struct{ /* struct reused in other services ! */
uint8_t abState[129];
} PNM_AP_ARSTATE_T;
typedef struct PNM_AP_GET_ARSTATE_CNF_Ttag PNM_AP_GET_ARSTATE_CNF_T;
struct PNM_AP_GET_ARSTATE_CNF_Ttag
{
PNM_AP_PCK_HEADER_T tHead;
PNM_AP_ARSTATE_T tData;
};
Packet description
Variable Type Value / Range Description
ulLen UINT32 129 Packet data length in bytes
ulSta UINT32 0 -
ulCmd UINT32 0x9445 PNM_AP_CMD_GET_ARSTATE_CNF
Data
abState[129] UINT8[129] See next page. Indicated the current operational status of the controller
and ARs.
Table 177: PNM_AP_GET_ARSTATE_CNF_T – Get AR State service confirmation
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 161/244
Parameter descriptions
Parameters abState
This parameter is a device handle indexed array representing the current operational state of the
controller and the devices. The field itself has to be evaluated using bitmask.
Name Value Description for abState[0] Description for abState[1..128]
PNM_AP_ARSTATE_NOT_CONFIGURED 0xX0 The controller is not This AR is not configured.
configured
PNM_AP_ARSTATE_STARTUP 0xX1 Not all enabled ARs have This AR is not yet connected
been established yet. since bus on.
PNM_AP_ARSTATE_DISCONNECTED 0xX2 At least one enabled AR This AR has lost communication
has lost connection and is currently not connected.
PNM_AP_ARSTATE_BACKUP 0xX3 All enabled ARs The AR is connected and
established, all SR-ARs in operating in backup mode (SR-
Backup without Primary ARs only).
missing/Fault
PNM_AP_ARSTATE_BACKUP_PR_MISSING 0xX4 All enabled ARs The AR is operating in backup
established, any SR-AR mode and reports primary
reports primary missing missing (SR-ARs only).
PNM_AP_ARSTATE_RESERVED 0xX5 Reserved Reserved
PNM_AP_ARSTATE_PRIMARY 0xX6 All enabled ARs The AR is operating in primary
established, all SR-AR are mode (Also set for non-SR-ARs).
in state primary
PNM_AP_ARSTATE_NETWORKUP 0xX8 Network operation enabled No meaning / not used
(DCP, ARP) but ARs are
disabled
Table 178: PNM_AP_GET_ARSTATE_CNF - Parameter abState
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 162/244
3.3.14 Change AR State service
The application can use this service to request mode changes of the ARs. The controller will
perform the changes asynchronously in background and might also refuse transitions which are
not allowed. E.g. an SR-AR must be “established and in backup mode” before it can be switched to
primary mode. Also, a device might fail to change the state as requested. The application has to
poll the actual AR state.
3.3.14.1 PNM_AP_CHANGE_ARSTATE_REQ request
Packet structure reference
#define PNM_AP_ARSTATE_REQ_MSK 0x80
#define PNM_AP_ARSTATE_KEEP 0x00
#define PNM_AP_ARSTATE_REQ_SHUTDOWN 0x81
#define PNM_AP_ARSTATE_REQ_BACKUP 0x83
#define PNM_AP_ARSTATE_REQ_PRIMARY 0x86
typedef struct PNM_AP_CHANGE_ARSTATE_REQ_Ttag PNM_AP_CHANGE_ARSTATE_REQ_T;
struct PNM_AP_CHANGE_ARSTATE_REQ_Ttag
{
PNM_AP_PCK_HEADER_T tHead;
PNM_AP_ARSTATE_T tData;
};
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x00000020 HIL_PACKET_DEST_DEFAULT_CHANNEL
ulSrc UINT32 0 (LFW)
Handle (LOM)
ulLen UINT32 129 Packet data length in bytes.
ulCmd UINT32 0x9446 PNM_AP_CMD_CHANGE_ARSTATE_REQ
Data
abState[129] UINT8[129] Array index by device handle with change requests for
Controller and Devices.
Table 179: PNM_AP_CHANGE_ARSTATE_REQ – Change AR State service request
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 163/244
Parameter description
Parameter abState
An array indexed by device handle containing the change requests. The first array entry
(abState[0]) corresponds to the controller itself, the next one (abState[1]) is the first device and so
on. Set to zero if corresponding AR should be not changed. See table for supported values.
Note: Shutting down an particular AR using state change request
PNM_AP_ARSTATE_REQ_SHUTDOWN is the same as disabling an AR using Set AR
Status service. Switching the entire controller to BusOff using
PNM_AP_ARSTATE_REQ_SHUTDOWN with abState[0] is similar behavior like
Start/Stop Communication service.
Name Value Description for abState[0] Description for abState[1..129]
PNM_AP_ARSTATE_KEEP 0x00 Keep current operational state Keep current operational state
PNM_AP_ARSTATE_REQ_SHUTDOWN 0x81 Switch controller to BusOff Disable and abort the
corresponding AR
PNM_AP_ARSTATE_REQ_BACKUP 0x83 n.a. Activate SR-AR if needed or Switch
SR-AR to Backup (Ignored for Non-
SR ARs)
PNM_AP_ARSTATE_REQ_PRIMARY 0x86 Switch controller to BusOn Switch SR-AR to Primary or
activate Non-SR AR.
Table 180: PNM_AP_CHANGE_ARSTATE_REQ - Parameter abState
3.3.14.2 PNM_AP_CHANGE_ARSTATE_CNF_T confirmation
Packet structure reference
typedef PNM_AP_EMTPY_PCK_T PNM_AP_CHANGE_ARSTATE_CNF_T;
Packet description
Variable Type Value / Range Description
ulLen UINT32 0 Packet data length in bytes
ulCmd UINT32 0x9447 PNM_AP_CMD_CHANGE_ARSTATE_CNF
ulSta UINT32 See section Status codes / Error codes on page 221.
Table 181: PNM_AP_CHANGE_ARSTATE_CNF_T – Change AR State service confirmation
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 164/244
3.4 Network scan
The PROFINET IO Controller V3 supports scanning the network for PROFINET devices. This scan
is non-intrusive and can be used to discover the PROFINET devices connected to the network
ports of the controller. The scan will not deliver any information about the module configuration of a
particular device. This might require intrusive changes to the PROFINET network like assigning IP
addresses and/or name of station. Nevertheless, the application can discover the module
configuration of the devices after scanning the network by using additional services provided by the
controller.
The network scan is implemented according the "Network scan" Application note using the rcX Bus
scan service and rcX Get Device Info service. The controller will perform the scan in two stages to
support scanning large networks. The following figure shows the sequence of a bus scan.
Figure 15: Network scan sequence
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 165/244
The Get Device Info service is a generic service used in all supporting master implementations.
Nevertheless, the confirmation packets contain protocol-specific information after the data part.
The following definitions apply for the PROFINET Controller V3.
Packet structure reference
typedef struct PNM_EXTDIA_DEVICEINFO_Ttag PNM_EXTDIA_DEVICEINFO_T;
struct PNM_EXTDIA_DEVICEINFO_Ttag
{
uint16_t usVendorId;
uint16_t usDeviceId;
uint32_t ulIpAddress;
uint32_t ulNetmask;
uint32_t ulGateway;
uint16_t usLenName;
uint16_t usLenType;
uint16_t usDeviceRole;
uint8_t abMacAddress[6];
uint8_t abNameOfStation[240];
uint8_t abTypeOfStation[240];
};
typedef struct HIL_GET_DEVICE_INFO_CNF_DATA_Ttag
{
uint32_t ulDeviceIdx;
uint32_t ulStructId;
} HIL_GET_DEVICE_INFO_CNF_DATA_T;
typedef struct HIL_GET_DEVICE_INFO_CNF_Ttag
{
HIL_PACKET_HEADER_T tHead;
HIL_GET_DEVICE_INFO_CNF_DATA_T tData;
PNM_EXTDIA_DEVICEINFO_T tInfo;
} HIL_GET_DEVICE_INFO_CNF_T;
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 166/244
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x20 (LFW) Destination Queue-Handle
Handle (LOM)
ulSrc UINT32 0 ... 232-1 Source Queue-Handle
ulLen UINT32 516 Packet data length in bytes
(0 if ulSta != 0)
ulSta UINT32 See section Status codes / Error codes on page 221.
ulCmd UINT32 0x2f25 HIL_GET_DEVICE_INFO_CNF_T - Command
Data (HIL_GET_DEVICE_INFO_CNF_DATA_T)
ulDeviceIdx UINT32 Value taken from request
ulStructId UINT32 5389 Struct identifier for PROFINET Device Info
Data (PNM_EXTDIA_DEVICEINFO_T)
usVendorId UINT16 PROFINET Vendor Id of the device
usDeviceId UINT16 PROFINET Device Id of the device
ulIpAddress UINT32 Current IP address of the device
ulNetmask UINT32 Current IP network mask of the device
ulGateway UINT32 Current IP gateway address of the device
usLenName UINT16 0 to 240 Length of name of station of the device
usLenType UINT16 0 to 240 Length of type of station of the device
usDeviceRole UINT16 0 ... 3 Role of the device
abMacAddress[6] UINT8 MAC address of the device
abNameOfStation UINT8 Name of station of the device
[240]
abTypeOfStation UINT8 Type of station of the device
[240]
Table 182: HIL_GET_DEVICE_INFO_CNF_T - Get User Parameter Data Request
Parameter descriptions
Parameter ulDeviceIdx
The identifier of the device associated with the device info.
Parameter ulStructId
The identifier of the structure type. Always 5389 for the PROFINET Controller
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 167/244
3.5 Device Access AR (DA-AR)
3.5.1 Overview
Beside the standard IO-AR the PROFINET IO Controller implements Device Access AR. The main
use of this AR type is writing Identification & Maintenance record objects from the engineering
software. The Device Access AR is internally handled in a similar way to standard IO ARs. It is
identified by a device handle. The following device handle is used for a DA-AR:
Name Value
PNM_AP_DEVICEHANDLE_DAAR_FIRST 0xF000
Table 183: Device Handle for Device Access AR
In contrast to an IO-AR, the DA-AR is configured and established at runtime. A DA-AR has no
IOCRs, no submodules and no records. Record objects are read and written by the application
using acyclic services. The following services are used in conjunction with a Device Access AR:
Name Usage Page
Establish Device Access AR Connect a Device Access AR to an Device 169
Release Device Access AR Terminate Device Access AR 173
Read Record service (legacy) Read record object 192
Write Record service (legacy) Write record object 196
Table 184: Device Access AR Services
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 168/244
3.5.2 Usage
The general application sequence for using a DA-AR is shown in the following figure.
Figure 16: Device Access AR Sequence
According to the PROFINET specification the PROFINET Device will internally abort the DA-AR
after the CMI timeout. The timeout starts initially with the RPC Connect Response and is restarted
on each RPC Read/Write response. The Controller must sent the next RPC Request before the
CMI timeout has passed, otherwise the Device will reject the RPC request. The PROFINET
specification defines no direct indication from Device to Controller in case of a CMI timeout for a
Device Access AR.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 169/244
3.5.3 Establish Device Access AR
This service can be used to establish a Device Access AR.
Note: The confirmation packet will be sent after the DA-AR has been established. If it was not
possible to establish a DA-AR the confirmation packet will contain an error.
. This process may take several seconds.
3.5.3.1 PNM_AP_ESTABLISH_DAAR_REQ_T request
Packet structure reference
enum PNM_AP_CFG_IOD_AR_TYPE_Etag
{
PNM_AP_CFG_IOD_AR_TYPE_SUPERVISOR = 0x06,
};
typedef enum PNM_AP_CFG_IOD_AR_TYPE_Etag PNM_AP_CFG_IOD_AR_TYPE_E;
enum PNM_AP_CFG_IOD_AR_PROP_FLAGS_Etag
{
PNM_AP_CFG_IOD_AR_PROP_FLAG_DEVICEACCESS = 0x00000100,
};
typedef uint16_t PNM_AP_DEVICEHANDLE_T;
#define PNM_AP_ESTABLISH_DAAR_STRUCT_VERSION_1 (0x0001)
typedef struct PNM_AP_ESTABLISH_DAAR_DATA_Ttag PNM_AP_ESTABLISH_DAAR_DATA_T;
struct PNM_AP_ESTABLISH_DAAR_DATA_Ttag
{
uint32_t ulStructVersion;
PNM_AP_DEVICEHANDLE_T usDeviceHandle;
uint8_t bARType;
uint8_t bPadding;
uint32_t ulFlags;
PNM_UUID_T tArUuid;
uint32_t ulArProperties;
uint16_t usVendorID;
uint16_t usDeviceID;
uint16_t usInstanceID;
uint16_t ausReserved[3];
uint8_t abNameOfStation[240];
uint32_t ulIPAddr;
uint32_t ulNetworkMask;
uint32_t ulGatewayAddr;
};
typedef struct PNM_AP_ESTABLISH_DAAR_REQ_Ttag PNM_AP_ESTABLISH_DAAR_REQ_T;
struct PNM_AP_ESTABLISH_DAAR_REQ_Ttag
{
PNM_AP_PCK_HEADER_T tHead;
PNM_AP_ESTABLISH_DAAR_DATA_T tData;
};
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 170/244
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x00000020 HIL_PACKET_DEST_DEFAULT_CHANNEL
ulSrc UINT32 Handle (LFW) -
Handle (LOM)
ulLen UINT32 296 Packet data length in bytes
ulCmd UINT32 0x941C PNM_AP_CMD_ESTABLISH_DAAR_REQ command
Data
ulStructVersion UINT32 1 Structure version of this structure
usDeviceHandle PNM_AP_DEVICE 0xF000 Handle of device access AR
HANDLE_T
bARType UINT8 0x06 AR Type
bPadding UINT8 0 Set to zero for future compatibility
ulFlags UINT32 0 Flags controlling AR behavior
tArUuid PNM_UUID_T UUID associated with this AR.
ulArProperties UINT32 0x00000100 Properties of this AR.
usVendorID UINT16 GSDML PROFINET Vendor ID of the Device
usDeviceID UINT16 GSDML PROFINET Device ID of the Device
usInstanceID UINT16 GSDML PROFINET Instance ID of the Device
ausReserved[3] UINT16[] 0 Reserved. Set to zero
abNameOfStation UINT8[] NameOfStation of the IO Device
[240]
ulIPAddr UINT32 IP address
ulNetworkMask UINT32 Network mask
ulGatewayAddr UINT32 Gateway address (i.e. IP address of gateway)
Table 185: PNM_AP_ESTABLISH_DAAR_REQ_T - Establish Device Access AR request
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 171/244
Parameter descriptions
Parameter ulStructVersion
Structure version of the configuration structure. Used for future extensions.
Parameter usDeviceHandle
This parameter specifies the handle of the AR to be configured. For the device access AR, this
handle is fixed to the value PNM_AP_DEVICEHANDLE_DAAR_FIRST (0xF000).
Parameter bARType
This parameter describes the type of the AR
Name Numeric value Description
PNM_AP_CFG_IOD_AR_TYPE_SUPERVISOR 0x06 AR Type for supervisor communication
Table 186: PNM_AP_ESTABLISH_DAAR_REQ_T - Parameter bARType
Parameter ulFlags
The parameter ulFlags is a bitmask of flag bits specifying additional properties of the AR. For
device access AR this field shall be set to zero.
Parameter tArUUID
Unique identifier of the AR. The AR UUID shall be generated by the engineering software or
application. It is a unique id of the AR and must be non-zero. Each new device access AR must
use a new UUID.
Parameter ulArProperties
The parameter ulARProperties is a bitmask describing PROFINET Properties of this AR. For
device access AR the value PNM_AP_CFG_IOD_AR_PROP_FLAG_DEVICEACCESS must be
used.
Name Numeric value Description
PNM_AP_CFG_IOD_AR_PROP_FLAG_DEVICEACCESS 0x00000100 A device access ar shall be established
Table 187: PNM_AP_ESTABLISH_DAAR_REQ_T - Parameter ulArProperties
Parameter usVendorID
VendorID to be used by the IO Controller for addressing the IO Device. (Extract from GSDML file)
Parameter usDeviceID
DeviceID to be used by the IO Controller for addressing the IO Device (Extract from GSDML file)
Parameter usInstanceID
The instance ID of the device. (Extract from GSDML file, Attribute "ObjectUUID Instance")
Parameter abNameOfStation[240]
The parameter abNameOfStation is the PROFINET Name Of Station to be used for this AR. The
PROFINET IO Controller will establish the AR with a PROFINET IO Device with that
NameOfStation. If multiple devices with the same NameOfStation exist, no connection will be
established. The field should be zero-padded to the full field length.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 172/244
Parameter ulIPAddr
IP address to be assigned to the PROFINET IO Device. This IP Address Setting is to be specified
by the application and will be assigned to the PROFINET IO Device by the PROFINET IO
Controller on Startup.
Parameter ulNetmask
Network Mask to be assigned to the PROFINET IO Device. This IP Address Setting is to be
specified by the application and will be assigned to the PROFINET IO Device by the PROFINET IO
Controller on Startup.
Parameter ulGatewayAddr
Gateway Address to be assigned to the PROFINET IO Device. This IP Address Setting is to be
specified by the application and will be assigned to the PROFINET IO Device by the PROFINET IO
Controller on Startup.
3.5.3.2 PNM_AP_ESTABLISH_DAAR_CNF_T confirmation
Packet structure reference
typedef PNM_AP_EMTPY_PCK_T PNM_AP_ESTABLISH_DAAR_CNF_T;
Packet description
Variable Type Value / Range Description
ulLen UINT32 0 Packet data length in bytes
ulSta UINT32 =0: no error
<> 0: see section Status codes / Error codes on page 221.
ulCmd UINT32 0x941D PNM_AP_CMD_ESTABLISH_DAAR_CNF
Table 188: PNM_AP_ESTABLISH_DAAR_CNF_T - Establish Device Access AR confirmation
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 173/244
3.5.4 Release Device Access AR
This service can be used to release a previously established device access AR.
3.5.4.1 PNM_AP_RELEASE_DAAR_REQ_T request
Packet structure reference
enum PNM_AP_RELEASE_DAAR_FLAGS_Etag
{
PNM_AP_RELEASE_DAAR_RELEASE = 0x04,
};
typedef enum PNM_AP_RELEASE_DAAR_FLAGS_Etag PNM_AP_RELEASE_DAAR_FLAGS_E;
typedef struct PNM_AP_RELEASE_DAAR_REQ_DATA_Ttag PNM_AP_RELEASE_DAAR_REQ_DATA_T;
struct PNM_AP_RELEASE_DAAR_REQ_DATA_Ttag
{
PNM_AP_DEVICEHANDLE_T usDeviceHandle;
uint16_t usPadding;
uint32_t ulFlags;
};
typedef struct PNM_AP_RELEASE_DAAR_REQ_Ttag PNM_AP_RELEASE_DAAR_REQ_T;
struct PNM_AP_RELEASE_DAAR_REQ_Ttag
{
PNM_AP_PCK_HEADER_T tHead;
PNM_AP_RELEASE_DAAR_REQ_DATA_T tData;
};
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x00000020 HIL_PACKET_DEST_DEFAULT_CHANNEL
ulSrc UINT32 0 (LFW)
Handle (LOM)
ulLen UINT32 8 Packet data length in bytes
ulCmd UINT32 0x941E PNM_AP_CMD_RELEASE_DAAR_REQ
Data
usDeviceHandle UINT16 0xF000 Handle of AR to release
usPadding UINT16 N/A Ignore for future compatibility.
ulFlags UINT32 0x04 Flags associated with the service
Table 189: PNM_AP_RELEASE_DAAR_REQ_T - Release Device Access AR request
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 174/244
Parameter descriptions
Parameter usDeviceHandle
The handle of the AR to release. For device access AR, this handle is fixed to the value
PNM_AP_DEVICEHANDLE_DAAR_FIRST (0xF000).
Parameter ulFlags
A bitmask defining the flags associated with the service properties of an AR. For device access AR
the value PNM_AP_RELEASE_DAAR_RELEASE must be used (0x00000004).
Name Value Description
PNM_AP_RELEASE_DAAR_RELEASE 0x00000004 Release the AR associated with this service
Table 190: Parameter ulFlags
3.5.4.2 PNM_AP_RELEASE_DAAR_CNF_T confirmation
Packet structure reference
typedef PNM_AP_EMTPY_PCK_T PNM_AP_RELEASE_DAAR_CNF_T;
Packet description
Variable Type Value / Range Description
ulLen UINT32 0 Packet data length in bytes
ulSta UINT32 =0: no error
<> 0: see section Status codes / Error codes on page 221.
ulCmd UINT32 0x941F PNM_AP_CMD_RELEASE_DAAR_CNF
Table 191: PNM_AP_RELEASE_DAAR_CNF_T - Release Device Access AR confirmation
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 175/244
3.6 Acyclic indications
This section contains the description of packets used for acyclic servies the protocol stack sends to
the application for processing.
3.6.1 Receive Alarm service
The Receive Alarm service is used by the PROFINET Controller firmware to indicate the reception
of a PROFINET alarm to the host application. The indication will be used for all alarm types, which
do not use diagnosis encoding for their payload. After reception of this service and processing of
the alarm by generating a Receive Alarm response, it must be confirmed by the host application
using Acknowledge Alarm service (page 132). Otherwise, the associated device cannot send other
alarms of the same priority.
Note: This service will not be used for alarm types configured for automatic alarm handling in
Configure IO Controller service (page 86). These alarms will be handled internally by
the PROFINET Controller firmware.
3.6.1.1 PNM_AP_RECV_ALARM_IND_T indication
Packet structure reference
typedef struct PNM_AP_RECV_ALARM_IND_DATA_Ttag PNM_AP_RECV_ALARM_IND_DATA_T;
struct PNM_AP_RECV_ALARM_IND_DATA_Ttag
{
PNM_AP_DEVICEHANDLE_T usDeviceHandle;
PNM_AP_SUBMODULE_HANDLE_T usSubmoduleHandle;
uint16_t usAlarmType;
uint16_t usAlarmPriority;
uint32_t ulApi;
uint16_t usSlot;
uint16_t usSubslot;
uint16_t usAlarmSpecifier;
uint16_t usAlarmDataLen;
uint8_t abAlarmData[ARRAYS_OF_LENGTH_ZERO];
};
typedef struct PNM_AP_RECV_ALARM_IND_Ttag PNM_AP_RECV_ALARM_IND_T;
struct PNM_AP_RECV_ALARM_IND_Ttag
{
PNM_AP_PCK_HEADER_T tHead;
PNM_AP_RECV_ALARM_IND_DATA_T tData;
};
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 176/244
Packet description
Variable Type Value / Range Description
ulDestId UINT32 any Will contain value from ulSrcId from
HIL_REGISTER_APPLICATION_REQ request packet
ulLen UINT32 20 to 280 Packet data length in bytes
ulCmd UINT32 0x9428 PNM_AP_CMD_RECV_ALARM_IND
Data
usDeviceHandle UINT16 0, 1 to 128 Handle of the device causing the alarm
usSubmoduleHandle UINT16 1 to 2048, Handle of the submodule causing the alarm
0xFFF0, 0xFFF1,
0xFFF2
usAlarmType UINT16 PROFINET Type of the Alarm
usAlarmPriority UINT16 0, 1 Priority of the Alarm
ulApi UINT32 any Api of the submodule associated with the alarm
usSlot UINT16 any Slot of the submodule associated with the alarm
usSubslot UINT16 any Subslot of the submodule associated with the alarm
usAlarmSpecifier UINT16 PROFINET Alarm Specifier
usAlarmDataLen UINT16 0 to 240 Length of alarm data payload
abAlarmData[] UINT8[] Alarm data payload
Table 192: PNM_AP_RECV_ALARM_IND_T indication
Parameter descriptions
Parameters usDeviceHandle, usSubmoduleHandle
These parameters specify the source of the PROFINET alarm. They correspond to the handles
used when configuring the PROFINET IO controller.
Parameter usAlarmType
This parameter defines the type of the alarm received. The following values are defined:
Name Numerical value Description
PN_ALARMTYPE_PROCESS 0x0002 The submodules application issued a process alarm.
PN_ALARMTYPE_PULL 0x0003 The submodule was pulled from the device
PN_ALARMTYPE_PLUG 0x0004 The submodule was plugged into the device
PN_ALARMTYPE_STATUS 0x0005 PROFINET Status Alarm was received
PN_ALARMTYPE_UPDATE 0x0006 PROFINET Update Alarm was received
PN_ALARMTYPE_SUPERVISOR 0x0008 The submodule was taken over by an IO Supervisor
PN_ALARMTYPE_RELEASED 0x0009 The submodule was released by an IO Supervisor
PN_ALARMTYPE_PLG_WRONG_SM 0x000A A wrong submodule was plugged
PN_ALARMTYPE_RTN_OF_SM 0x000B The submodules input process data is now valid again
PN_ALARMTYPE_PULL_MODULE 0x001F The module was pulled
- 0x0020 to 0x007F The submodules application issued a manufacturer
specific alarm
- 0x0080 to 0xFFFF The submodules application issued a profile specific
alarm
Table 193: Parameter usAlarmType - Defined values (Receive Alarm service)
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 177/244
Parameter usAlarmPriority
This parameter is zero for low priority alarms and one for high priority alarms.
Parameters ulApi, usSlot, usSubslot
These parameters provide the addressing information of the submodule associated with the alarm.
Parameter usAlarmSpecifier
This parameter provides additional information about the alarm. The lower 15 bits contain the
alarm sequence number.
Parameters usAlarmDataLen, abAlarmData[]
The parameter usAlarmDataLen is the length of received alarm data payload. The payload itself is
provided in parameter abAlarmData. Typically the first two byte of abAlarmData[] represent the
UserStructureIdentifier of the alarm. This field is optional in alarms (thus not part of packet
definition) but almost all alarms will use it.
3.6.1.2 PNM_AP_RECV_ALARM_RES_T response
Packet structure reference
typedef struct PNM_AP_RECV_ALARM_RES_DATA_Ttag PNM_AP_RECV_ALARM_RES_DATA_T;
struct PNM_AP_RECV_ALARM_RES_DATA_Ttag
{
PNM_AP_DEVICEHANDLE_T usDeviceHandle;
PNM_AP_SUBMODULE_HANDLE_T usSubmoduleHandle;
uint16_t usAlarmType;
uint16_t usAlarmPriority;
};
typedef struct PNM_AP_RECV_ALARM_RES_Ttag PNM_AP_RECV_ALARM_RES_T;
struct PNM_AP_RECV_ALARM_RES_Ttag
{
PNM_AP_PCK_HEADER_T tHead;
PNM_AP_RECV_ALARM_RES_DATA_T tData;
};
Packet description
Variable Type Value / Range Description
ulLen UINT32 8 Packet data length in bytes
ulSta UINT32 0 Set to zero
ulCmd UINT32 0x9429 PNM_AP_CMD_RECV_ALARM_RES
Data
usDeviceHandle UINT16 mirrored Handle of the device caused the alarm
usSubmoduleHandle UINT16 mirrored Handle of the submodule caused the alarm
usAlarmType UINT16 mirrored PROFINET type of the alarm
usAlarmPriority UINT16 mirrored Priority of the alarm
Table 194: PNM_AP_RECV_ALARM_RES_T - Receive Alarm service response
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 178/244
Parameter descriptions
Parameters usDeviceHandle, usSubmoduleHandle
These parameters specify the source of the PROFINET alarm. They correspond to the handles
used when configuring the PROFINET IO Controller and must be set to the same value as in the
indication packet.
Parameter usAlarmType
This parameter defines the type of the alarm received. It must be set to the same value as in the
indication packet.
Parameter usAlarmPriority
This parameter defines the alarm priority. It must be set to the same value as in the indication
packet.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 179/244
3.6.2 Receive Diagnosis service
The Receive Diagnosis service is used by the PROFINET Controller Firmware to indicate the
reception of a PROFINET diagnosis alarm to the host application. The Indication will be used for all
alarm types, which use diagnosis encoding for their payload. After reception of this service and
processing of the alarm data the alarm must be confirmed by the host application using
Acknowledge Alarm service (page 132). Otherwise, the associated device cannot send other
alarms of the same priority.
Note: This service will not be used for alarm types configured for automatic alarm handling in
Configure IO Controller service (page 86). These alarms will be handled internally by
the PROFINET controller firmware.
Note: This service will also be used to indicate diagnosis alarms generated by the PDEV
submodules of the PROFINET IO Controller itself. These alarms are virtual alarms
associated with the PDEV submodules of the controller. They are generated by the
firmware in order to provide a unique interface to diagnosis events regardless of their
origin. The indication of this internal diagnosis alarms depends on the setting of
automatic alarm handling as well. These alarms must be confirmed similar to device
diagnosis alarms.
Most of the alarms are indicated with Receive Diagnosis indication because they are fix bound to
Profinet Diagnosis ASE.
3.6.2.1 PNM_AP_RECV_DIAGNOSIS_IND_T indication
Packet structure reference
#define PNM_AP_MAX_ALARM_DATA_LENGTH (1024)
typedef struct PNM_AP_CHANNEL_DIAGNOSIS_DATA_Ttag PNM_AP_CHANNEL_DIAGNOSIS_DATA_T;
struct PNM_AP_CHANNEL_DIAGNOSIS_DATA_Ttag
{
uint16_t usChannelNumber;
uint16_t usChannelProperties;
uint16_t usChannelErrorType;
};
typedef struct PNM_AP_EXT_CHANNEL_DIAGNOSIS_DATA_Ttag
PNM_AP_EXT_CHANNEL_DIAGNOSIS_DATA_T;
struct PNM_AP_EXT_CHANNEL_DIAGNOSIS_DATA_Ttag
{
uint16_t usChannelNumber;
uint16_t usChannelProperties;
uint16_t usChannelErrorType;
uint16_t usExtChannelErrorType;
uint32_t ulExtChannelAddValue;
};
typedef struct PNM_AP_QUALIFIED_CHANNEL_DIAGNOSIS_DATA_Ttag
PNM_AP_QUALIFIED_CHANNEL_DIAGNOSIS_DATA_T;
struct PNM_AP_QUALIFIED_CHANNEL_DIAGNOSIS_DATA_Ttag
{
uint16_t usChannelNumber;
uint16_t usChannelProperties;
uint16_t usChannelErrorType;
uint16_t usExtChannelErrorType;
uint32_t ulExtChannelAddValue;
uint32_t ulQualifiedChannelQualifier;
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 180/244
};
typedef struct PNM_AP_MANUF_SPECIFIC_DIAGNOSIS_DATA_Ttag
PNM_AP_MANUF_SPECIFIC_DIAGNOSIS_DATA_T;
struct PNM_AP_MANUF_SPECIFIC_DIAGNOSIS_DATA_Ttag
{
uint8_t abData[PNM_AP_MAX_ALARM_DATA_LENGTH];
};
#define PNM_AP_MAX_CHANNELDIAG_CNT (PNM_AP_MAX_ALARM_DATA_LENGTH /
sizeof(PNM_AP_CHANNEL_DIAGNOSIS_DATA_T))
#define PNM_AP_MAX_EXTCHANNELDIAG_CNT (PNM_AP_MAX_ALARM_DATA_LENGTH/
sizeof(PNM_AP_EXT_CHANNEL_DIAGNOSIS_DATA_T))
#define PNM_AP_MAX_QUALIFIEDCHANNELDIAG_CNT (PNM_AP_MAX_ALARM_DATA_LENGTH /
sizeof(PNM_AP_QUALIFIED_CHANNEL_DIAGNOSIS_DATA_T))
typedef union PNM_AP_DIAGNOSIS_DATA_Utag PNM_AP_DIAGNOSIS_DATA_U;
union PNM_AP_DIAGNOSIS_DATA_Utag
{
PNM_AP_CHANNEL_DIAGNOSIS_DATA_T atChannelDiag[PNM_AP_MAX_CHANNELDIAG_CNT];
PNM_AP_EXT_CHANNEL_DIAGNOSIS_DATA_T
atExtChannelDiag[PNM_AP_MAX_EXTCHANNELDIAG_CNT];
PNM_AP_QUALIFIED_CHANNEL_DIAGNOSIS_DATA_T
atQualifChannelDiag[PNM_AP_MAX_QUALIFIEDCHANNELDIAG_CNT];
PNM_AP_MANUF_SPECIFIC_DIAGNOSIS_DATA_T tManufSpecificDiag;
};
typedef struct PNM_AP_RECV_DIAGNOSIS_IND_DATA_Ttag PNM_AP_RECV_DIAGNOSIS_IND_DATA_T;
struct PNM_AP_RECV_DIAGNOSIS_IND_DATA_Ttag
{
PNM_AP_DEVICEHANDLE_T usDeviceHandle;
PNM_AP_SUBMODULE_HANDLE_T usSubmoduleHandle;
uint16_t usAlarmType;
uint16_t usAlarmPriority;
uint32_t ulApi;
uint16_t usSlot;
uint16_t usSubslot;
uint16_t usAlarmSpecifier;
uint16_t usAlarmDataLen;
uint16_t usUSI;
PNM_AP_DIAGNOSIS_DATA_U uData;
};
typedef struct PNM_AP_RECV_DIAGNOSIS_IND_Ttag PNM_AP_RECV_DIAGNOSIS_IND_T;
struct PNM_AP_RECV_DIAGNOSIS_IND_Ttag
{
PNM_AP_PCK_HEADER_T tHead;
PNM_AP_RECV_DIAGNOSIS_IND_DATA_T tData;
};
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 181/244
Packet description
Variable Type Value / Range Description
ulDestId UINT32 any Will contain value from ulSrcId from
HIL_REGISTER_APPLICATION_REQ request packet
ulLen UINT32 20 to 260 Packet data length in bytes
ulSta UINT32 0
ulCmd UINT32 0x942A PNM_AP_CMD_RECV_DIAGNOSIS_IND
Data
usDeviceHandle UINT16 0, 1 to 128 Handle of the device causing the alarm
usSubmoduleHandle UINT16 1 to 2048, Handle of the submodule causing the alarm
0xFFF0, 0xFFF1,
0xFFF2
usAlarmType UINT16 PROFINET Type of the alarm
usAlarmPriority UINT16 0, 1 Priority of the alarm
ulApi UINT32 any API of the submodule associated with the alarm
usSlot UINT16 any Slot of the submodule associated with the alarm
usSubslot UINT16 any Subslot of the submodule associated with the alarm
usAlarmSpecifier UINT16 PROFINET alarm specifier
usAlarmDataLen UINT16 0, 2 to 240 Length of alarm data payload including user structure
identifier
usUSI UINT16 User structure Identifier
uData UNION Alarm data payload. Valid union element depends on value
of usUSI
Table 195: PNM_AP_RECV_DIAGNOSIS_IND_DATA_T indication
Parameter descriptions
Parameters usDeviceHandle, usSubmoduleHandle
These parameters specifiy the source of the PROFINET alarm. They correspond to the handles
used when configuring the PROFINET IO Controller. For the special case of a virtual diagnosis
alarm, the submodule handle will indicate the controllers PDEV submodule associated with this
alarm. The following parameter combinations are defined:
Device handle Submodule handle Description
1 to 128 1 to 2048 The diagnosis alarm was generated by a profinet device connected with the
controller
0 0xFFF0 The diagnosis alarm was generated by the interface submodule of the
profinet controller
0 0xFFF1 The diagnosis alarm was generated by the first port submodule of the
profinet controller
0 0xFFF2 The diagnosis alarm was generated by the second port submodule of the
profinet controller
Table 196: Parameters usDeviceHandle, usSubmoduleHandle – Sources of diagnosis alarm
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 182/244
Parameter usAlarmType
This parameter defines the type of the alarm received. The following values are defined:
Name Numerical Description
value
PN_ALARMTYPE_DIAGNOSIS 0x0001 A diagnosis was added to the submodule
PN_ALARMTYPE_MEDIA_REDUNDANCY 0x0007 PROFINET Media Redundancy Alarm was received
PN_ALARMTYPE_DIAGNOSIS_DIS 0x000C A diagnosis was removed from the submodule
PN_ALARMTYPE_MC_COMM_MISMATCH 0x000D An change of multicast communication was detect by
the device
PN_ALARMTYPE_PORT_DATA_CH_N 0x000E A change of PD Port diagnosis was detected by the port
submodule
PN_ALARMTYPE_SYNC_CH_NOT 0x000F A change of Sync state was detected by the interface
submodule
PN_ALARMTYPE_ISO_PROBLEM 0x0010 A change of isochronous mode diagnosis was detected
by the submodule
PN_ALARMTYPE_NETWORK_PRB 0x0011 A change of network problem diagnosis was detected
by the submodule
PN_ALARMTYPE_TIME_CH_N 0x0012 A change of time diagnosis was detected by the
submodule
PN_ALARMTYPE_DFP_PROBLEM 0x0013 A change of DFP diagnosis was detected by the
submodule
PN_ALARMTYPE_MRPD_PROBLEM 0x0014 A change of MRPD diagnosis was detected by the
submodule
PN_ALARMTYPE_SYSTEM_REDUNDANCY 0x0015 PROFINET System Redundancy event occurred
Table 197: Parameter usAlarmType – Defined values (Receive Diagnosis service)
Parameter usAlarmPriority
This parameter is zero for low priority alarms and one for high priority alarms.
Parameters ulApi, usSlot, usSubslot
These parameters provide the addressing information of the submodule associated with the alarm.
Parameter usAlarmSpecifier
This parameter provides additional information about the alarm. The lower 15 bits contain the
alarm sequence number.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 183/244
Parameters usAlarmDataLen, usUSI, abAlarmData[]
The parameter usAlarmDataLen is the length of received alarm data payload. For diagnosis
alarms, the first item in payload must be the user structure identifier which is provided in parameter
usUSI. The payload itself is provided in parameter uData whereby the valid union element depends
on the value of usUSI:
Name Numerical Description
value
< 0x8000 A manufacturer specific diagnosis has been reported. The
parameter uData.tManufSpecificDiag contains the user
specific diagnosis payload data
PN_USERSTRUCT_IDENT_CHANNEL_DIAG 0x8000 A channel diagnosis has been reported. The parameter
uData.tChannelDiag contains the decoded channel diag
data.
PN_USERSTRUCT_IDENT_EXT_CHANNEL_ 0x8002 An extended channel diagnosis has been reported, The
DIAG parameter uData.tExtChannelDiag contains the decoded
diagnosis data
PN_USERSTRUCT_IDENT_QUALIF_CHANN 0x8003 A qualified channel diagnosis has been reported. The
EL_DIAG parameter uData.tQualifChannelDiag contains the
decoded diagnosis data.
Table 198: Parameters usAlarmDataLen, usUSI, abAlarmData[]
Note: Even when the field uData can hold up to
(PNM_AP_MAX_ALARM_DATA_LENGTH - 2) byte, the maximum alarm data length is
additionally limited by the supported alarm data length of the device and controller.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 184/244
3.6.2.2 PNM_AP_RECV_DIAGNOSIS_RES_T response
Packet structure reference
typedef struct PNM_AP_RECV_DIAGNOSIS_RES_DATA_Ttag PNM_AP_RECV_DIAGNOSIS_RES_DATA_T;
struct PNM_AP_RECV_DIAGNOSIS_RES_DATA_Ttag
{
PNM_AP_DEVICEHANDLE_T usDeviceHandle;
PNM_AP_SUBMODULE_HANDLE_T usSubmoduleHandle;
uint16_t usAlarmType;
uint16_t usAlarmPriority;
};
typedef struct PNM_AP_RECV_DIAGNOSIS_RES_Ttag PNM_AP_RECV_DIAGNOSIS_RES_T;
struct PNM_AP_RECV_DIAGNOSIS_RES_Ttag
{
PNM_AP_PCK_HEADER_T tHead;
PNM_AP_RECV_DIAGNOSIS_RES_DATA_T tData;
};
Packet description
Variable Type Value / Range Description
ulLen UINT32 8 Packet data length in bytes
ulSta UINT32 0
ulCmd UINT32 0x942B PNM_AP_CMD_RECV_DIAGNOSIS_RES
Data
usDeviceHandle UINT16 mirrored Handle of the device caused the alarm
usSubmoduleHandle UINT16 mirrored Handle of the submodule caused the alarm
usAlarmType UINT16 mirrored PROFINET type of the alarm
usAlarmPriority UINT16 mirrored Priority of the alarm
Table 199: PNM_AP_RECV_DIAGNOSIS_RES_T response
Parameter descriptions
Parameters usDeviceHandle, usSubmoduleHandle
These parameters specify the source of the PROFINET alarm. They correspond to the handles
used when configuring the PROFINET IO Controller and must be set to the same value as in the
indication packet.
Parameter usAlarmType
This parameter defines the type of the alarm received. It must be set to the same value as in the
indication packet.
Parameter usAlarmPriority
This parameter defines the alarm priority. It must be set to the same value as in the indication
packet.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 185/244
3.6.3 Store Remanent service
This service is used by the PROFINET IO Controller to indicate a change of remanent data. The
host application shall store the remanent data passed along with this indication in non-volatile
memory. On Power On, the host application shall restore this remanent data using the Load
Remanent service.
Note: Handling of remanent data is mandatory to pass PROFINET IO Controller Certification
tests.
As the remanent data indication packet does not fit into the DPM mailboy as a whole, a fragmented
packet transfer sequence is used for this service.
3.6.3.1 PNM_AP_STORE_REMANENT_IND_T indication
Packet structure reference
typedef struct PNM_AP_STORE_REMANENT_IND_DATA_Ttag PNM_AP_STORE_REMANENT_IND_DATA_T;
struct PNM_AP_STORE_REMANENT_IND_DATA_Ttag
{
uint16_t usLength;
uint8_t abData[];
};
typedef struct PNM_AP_STORE_REMANENT_IND_Ttag PNM_AP_STORE_REMANENT_IND_T;
struct PNM_AP_STORE_REMANENT_IND_Ttag
{
PNM_AP_PCK_HEADER_T tHead;
PNM_AP_STORE_REMANENT_IND_DATA_T tData;
};
Packet description
Variable Type Value / Range Description
ulDestId UINT32 Any Will contain value from ulSrcId from
HIL_REGISTER_APPLICATION_REQ request packet
ulLen UINT32 8194 Packet data length in bytes
ulCmd UINT32 0x9440 PNM_AP_CMD_STORE_REMANENT_IND
ulSta UINT32 0
Data
usLength UINT16 8192 Length of remanent data to be stored
abData[] UINT8[] any Array of remanent data to be stored
Table 200: PNM_AP_STORE_REMANENT_IND_T - Store Remanent service indicationParameter descriptions
Parameter usLength
Specifies the length of the remanent data
Parameter abData
Array containing the remanent data.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 186/244
3.6.3.2 PNM_AP_STORE_REMANENT_RES_T response
Packet structure reference
typedef PNM_AP_EMTPY_PCK_T PNM_AP_STORE_REMANENT_RES_T;
Packet description
Variable Type Value / Range Description
ulLen UINT32 0 Packet data length in bytes
ulCmd UINT32 0x9441 PNM_AP_CMD_STORE_REMANENT_RES
ulSta UINT32 0
Table 201: PNM_AP_STORE_REMANENT_RES_T - Store Remanent service response
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 187/244
3.6.4 DCP request received service
This service is used by the PROFINET IO Controller to indicate a change of network configuration
performed by a remote DCP peer.
3.6.4.1 PNM_AP_DCP_SET_IND_T indication
Packet structure reference
/** DCP Set option definition */
enum PNM_AP_DCP_SET_OPTIONS_Etag
{
PNM_AP_DCP_SET_IP = 0x0102,
PNM_AP_DCP_SET_NAME = 0x0202,
PNM_AP_DCP_SET_SIGNAL = 0x0503,
PNM_AP_DCP_SET_RESET = 0x0506,
};
typedef enum PNM_AP_DCP_SET_OPTIONS_Etag PNM_AP_DCP_SET_OPTIONS_E;
typedef struct PNM_AP_DCP_SET_SIGNAL_Ttag PNM_AP_DCP_SET_SIGNAL_T;
/** response packet */
struct PNM_AP_DCP_SET_SIGNAL_Ttag
{
/** signal value defines duration and frequency to flash the led
* see \ref PNM_AP_DCP_SET_SIGNAL_FREQUENCY_1_HZ */
uint16_t usSignalValue;
};
typedef struct PNM_AP_DCP_SET_NAME_Ttag PNM_AP_DCP_SET_NAME_T;
/** response packet */
struct PNM_AP_DCP_SET_NAME_Ttag
{
/* length of new name of IO-Controller */
uint8_t bNameLen;
/** new NameOfStation for IO-Controller */
uint8_t abName[240];
};
typedef struct PNM_AP_DCP_SET_IP_Ttag PNM_AP_DCP_SET_IP_T;
/** response packet */
struct PNM_AP_DCP_SET_IP_Ttag
{
/** NEW IP */
uint32_t ulIpAddr;
/** NEW subnet mask */
uint32_t ulNetmask;
/** NEW router, gateway */
uint32_t ulGateway;
};
typedef struct PNM_AP_DCP_SET_FACTORY_RESET_Ttag PNM_AP_DCP_SET_FACTORY_RESET_T;
/** response packet */
struct PNM_AP_DCP_SET_FACTORY_RESET_Ttag
{
/* reset options see \ref PNIO_APCTL_DCP_QUALIFIER_RESETTOFACTORY_APPLICATION */
uint16_t usResetOption;
};
typedef union PNM_AP_DCP_SET_UTag PNM_AP_DCP_SET_U;
/** DCP set options */
union PNM_AP_DCP_SET_UTag
{
PNM_AP_DCP_SET_NAME_T tName;
PNM_AP_DCP_SET_IP_T tIp;
PNM_AP_DCP_SET_SIGNAL_T tSignal;
PNM_AP_DCP_SET_FACTORY_RESET_T tReset;
};
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 188/244
typedef struct PNM_AP_DCP_SET_IND_DATA_Ttag PNM_AP_DCP_SET_IND_DATA_T;
/** response packet */
struct PNM_AP_DCP_SET_IND_DATA_Ttag
{
/** MAC address of IO-device */
uint8_t abMacAddr[6];
/** qualification of setting */
uint16_t usQualifier;
/** DCP Option see \ref PNM_AP_DCP_SET_OPTIONS_E */
uint16_t usDcpOption;
/* DCP set option */
PNM_AP_DCP_SET_U uDcpSet;
};
typedef struct PNM_AP_DCP_SET_IND_Ttag PNM_AP_DCP_SET_IND_T;
struct PNM_AP_DCP_SET_IND_Ttag
{
PNM_AP_PCK_HEADER_T tHead;
PNM_AP_DCP_SET_IND_DATA_T tData;
};
Packet description
Variable Type Value / Range Description
ulDestId UINT32 Any Will contain value from ulSrcId from
HIL_REGISTER_APPLICATION_REQ request packet
ulLen UINT32 251 Packet data length in bytes
ulCmd UINT32 0x943E PNM_AP_CMD_DCP_SET_IND
ulSta UINT32 0
Data
abMacAddr UINT8[] 6 MAC address
usQualififer UINT16 2 Qualififer of setting
usDcpOption UINT16_T 2 DCP option
uDcpSet PNM_AP_D 241 DCP set option
CP_SET_U
Table 202: PNM_AP_DCP_SET_IND_T - DCP request received service indication
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 189/244
Parameter descriptions
Parameter abMacAddr
Specifies the MAC address.
Parameter usQualififer
Specifies the qualification of setting.
Parameter usDcpOption
Specifies which DCP option is contained in uDcpSet (Name, IP, signal or factory reset).
Parameter uDcpSet
Contains the DCP option (Name, IP, signal or factory reset).
3.6.4.2 PNM_AP_DPC_SET_RES_T response
Packet structure reference
typedef PNM_AP_EMTPY_PCK_T PNM_AP_DPC_SET_RES_T;
Packet description
Variable Type Value / Range Description
ulLen UINT32 0 Packet data length in bytes
ulCmd UINT32 0x943F PNM_AP_CMD_DPC_SET_RES
ulSta UINT32 0
Table 203: PNM_AP_DCP_SET_RES_T - DCP request received service response
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 190/244
3.6.5 AR State Update service
The firmware uses the AR State Update service to notify the application about the current
operational state of all ARs. The firmware will not send another indication before the application
responds to the service. Intermediate status changes will be queued and a new indication
generated as needed.
3.6.5.1 PNM_AP_ARSTATE_UPDATE_IND_T indication
Packet structure reference
#define PNM_AP_ARSTATE_CHANGED_MSK 0x80
typedef struct PNM_AP_ARSTATE_UPDATE_IND_Ttag PNM_AP_ARSTATE_UPDATE_IND_T;
struct PNM_AP_ARSTATE_UPDATE_IND_Ttag
{
PNM_AP_PCK_HEADER_T tHead;
PNM_AP_ARSTATE_T tData;
};
Packet description
Variable Type Value / Range Description
ulDestId UINT32 Any Will contain value from ulSrcId from
HIL_REGISTER_APPLICATION_REQ request packet
ulLen UINT32 129 Packet data length in bytes.
ulCmd UINT32 0x9448 PNM_AP_CMD_ARSTATE_UPDATE_IND
Data
abState[129] UINT8[129] Any Indicates the current operational state of the controller and
ARs.
Table 204: PNM_AP_ARSTATE_UPDATE_IND_T indication
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 191/244
Parameter descriptions
Parameters abState
This parameter is a device handle indexed array representing the current operational state of the
controller and the devices. The fields have to be evaluated as bitfield. The most significant bit of a
field will be set, when the corresponding controller or AR has changed its operational mode since
the last indication.
Name Value Description abState[0] Description
abState[1..128]
PNM_AP_ARSTATE_CHANGED_MSK 0b1XXXXX The operational state has changed since the last
XX indication. Will be used as bitmask.
PNM_AP_ARSTATE_NOT_CONFIGURED 0xX0 The controller is not This AR is not configured.
configured
PNM_AP_ARSTATE_STARTUP 0xX1 Not all enabled ARs have This AR is not yet
been established yet. connected since bus on.
PNM_AP_ARSTATE_DISCONNECTED 0xX2 At least one enabled AR has This AR has lost
lost connection communication and is
currently not connected.
PNM_AP_ARSTATE_BACKUP 0xX3 All enabled ARs established, The AR is connected and
all SR-ARs in Backup without operating in backup mode
Primary missing/Fault (SR-ARs only).
PNM_AP_ARSTATE_BACKUP_PR_ 0xX4 All enabled ARs established, The AR is operating in
MISSING any SR-AR reports primary backup mode and reports
missing primary missing (SR-ARs
only).
PNM_AP_ARSTATE_RESERVED 0xX5 Reserved Reserved
PNM_AP_ARSTATE_PRIMARY 0xX6 All enabled ARs established, The AR is operating in
all SR-AR are in state primary primary mode (Also set for
non-SR-ARs).
PNM_AP_ARSTATE_NETWORKUP 0xX8 Network operation enabled No meaning / not used
(DCP, ARP) but ARs are
disabled
Table 205: PNM_AP_ARSTATE_UPDATE_IND - Parameter abState
3.6.5.2 PNM_AP_ARSTATE_UPDATE_RES_T response
Packet structure reference
typedef PNM_AP_EMTPY_PCK_T PNM_AP_ARSTATE_UPDATE_RES_T;
Packet description
Variable Type Value / Range Description
ulLen UINT32 0 Packet data length in bytes
ulSta UINT32 0 Set to zero
ulCmd UINT32 0x9449 PNM_AP_CMD_ARSTATE_UPDATE_RES
Table 206: PNM_AP_ARSTATE_UPDATE_RES_T – AR State Update service response
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 192/244
3.7 Legacy services
The PROFINET IO Controller version 3 supports some services of the previous PROFINET IO
Controller version 2. These services are provided for easier migration of existing applications.
Whenever possible, use the new API services for Read / Write record:
Read Submodule Record service (page 121)
Write Submodule Record service (page 126)
Read Implicit Record service (page 128)
3.7.1 Read Record service (legacy)
The application can use this service to read a record object from a submodule in data exchange.
3.7.1.1 APIOC_READ_REQ_T request
Packet structure reference
typedef struct
{
uint32_t ulHandle;
uint32_t ulApi;
uint32_t ulDataLength;
uint16_t usSlot;
uint16_t usSubSlot;
uint16_t usIndex;
} APIOC_READ_REQ_DATA_T;
typedef struct
{
PNM_PNIOAPCTL_PCK_HEADER_T tHead;
APIOC_READ_REQ_DATA_T tData;
} APIOC_READ_REQ_T;
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x00000020 HIL_PACKET_DEST_DEFAULT_CHANNEL
ulSrc UINT32 0 (LFW) -
Handle (LOM)
ulLen UINT32 18 Packet data length in bytes
ulSta UINT32 0 -
ulCmd UINT32 0x0C1A PNIO_APCTL_CMD_READ_REQ
Data
ulHandle UINT32 0, 1 to 128 Handle of the device to read the record from
ulApi UINT32 any API of the submodule to read the record from
ulDataLength UINT32 1 to 1024 Maximum amount of data to read from the submodule
usSlot UINT16 0 to 0xFFFF Slot of the submodule to read the record from
usSubSlot UINT16 0 to 0xFFFF Subslot of the submodule to read the record from
usIndex UINT16 0 to 0xFFFF Index of record object to read
Table 207: APIOC_READ_REQ_T - Read Record service request
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 193/244
Parameter descriptions
Parameter ulHandle
The handle of the (previously configured) device to read the record object from.
Parameters ulApi, usSlot, usSubslot
Addressing parameters of the submodule to read the record object from.
Parameter usIndex
The index of the record object to read.
Parameter ulDataLength
The maximum number of bytes to read from the object.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 194/244
3.7.1.2 APIOC_READ_CNF_T confirmation
Packet structure reference
typedef struct
{
uint32_t ulHandle;
uint32_t ulPnio;
uint32_t ulApi;
uint32_t ulDataLength;
uint16_t usSlot;
uint16_t usSubSlot;
uint16_t usIndex;
uint16_t usAddVal1;
uint16_t usAddVal2;
uint16_t usAlign;
uint8_t abReadData[1];
} APIOC_READ_CNF_DATA_T;
typedef struct
{
PNM_PNIOAPCTL_PCK_HEADER_T tHead;
APIOC_READ_CNF_DATA_T tData;
} APIOC_READ_CNF_T;
Packet description
Variable Type Value / Range Description
ulLen UINT32 28 to 1052 Packet data length in bytes
(0 if ulSta != 0)
ulSta UINT32 =0: no error
<> 0: see section Status codes / Error codes on page 221.
ulCmd UINT32 0x0C1B PNIO_APCTL_CMD_READ_CNF
Data
ulHandle UINT32 mirrored Handle of the device the record was read from
ulPnio UINT32 any The PROFINET Status Code from the read operation
ulApi UINT32 mirrored API of the submodule the record was read from
ulDataLength UINT32 0 to 1024 Amount of data read from the record object
usSlot UINT16 mirrored Slot of the submodule the record was read from
usSubSlot UINT16 mirrored Subslot of the submodule the record was read from
usIndex UINT16 mirrored Index of record object read
usAddVal1 UINT16 any Additional value returned by PROFINET Device when
reading the record object
usAddVal2 UINT16 any Additional value returned by the PROFINET Device when
reading the record object
usAlign UINT16 any Alignment. Ignore for future Compatibility
abReadData[] UINT8 The data read from the record object
Table 208: APIOC_READ_CNF_T - Read Record service confirmation
Parameter descriptions
Parameter ulHandle
The handle of the (previously configured) device the record object was read from.
Parameters ulApi, usSlot, usSubslot
Addressing parameters of the submodule the record object was read from.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 195/244
Parameter usIndex
The index of the record object read.
Parameter ulDataLength
The number of bytes read from the record object
Parameter ulPnio
The PROFINET status code of the acyclic operation. This field is non-zero, if a PROFINET error
occurred during processing the read service. The error code is either generated by the PROFINET
IO Controller or by the associated PROFINET IO Device. Section PROFINET Status Code on page
227 describes the meanings of the PROFINET status code.
Parameters usAddVal1, usAddVal2
The PROFINET specification defines additional values to be passed from the device in read record
object service responses. The content of these values can be found in these parameters.
Parameter abReadData[]
This parameter contains the actual record data (payload) returned by the device.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 196/244
3.7.2 Write Record service (legacy)
This service can be used by the application to write a record object of a submodule in data
exchange.
3.7.2.1 APIOC_WRITE_REQ_T request
Packet structure reference
typedef struct
{
uint32_t ulHandle;
uint32_t ulApi;
uint32_t ulDataLength;
uint16_t usSlot;
uint16_t usSubSlot;
uint16_t usIndex;
uint16_t usAlign;
uint8_t abWriteData[1];
} APIOC_WRITE_REQ_DATA_T;
typedef struct
{
PNM_PNIOAPCTL_PCK_HEADER_T tHead;
APIOC_WRITE_REQ_DATA_T tData;
} APIOC_WRITE_REQ_T;
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x20 (LFW) -
Handle (LOM)
ulSrc UINT32 0 (LFW) -
Handle (LOM)
ulLen UINT32 21 … 1044 Packet data length in bytes
ulCmd UINT32 0x0C1C PNIO_APCTL_CMD_WRITE_REQ
Data
ulHandle UINT32 1...128 Handle of the device to write the record to
ulApi UINT32 any API of the submodule to write the record to
ulDataLength UINT32 1 ...1024 Amount of data to write to the record object
usSlot UINT16 0...0xFFFF Slot of the submodule to write the record to
usSubSlot UINT16 0...0xFFFF Subslot of the submodule to write the record to
usIndex UINT16 0...0xFFFF Index of record object to write
usAlign UINT16 0 Set to zero for future compatibility
abWriteData[] UINT8 The data to write to the record object
Table 209: APIOC_WRITE_REQ_T - Write Record service request
Parameter descriptions
Parameter ulHandle
The handle of the (previously configured) device to write the record object to
Parameters ulApi, usSlot, usSubslot
Addressing parameters of the submodule to write the record object to
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 197/244
Parameter usIndex
The index of the record object to write.
Parameter ulDataLength
The number of bytes to write to the record object.
Parameter abWriteData[]
The data to write to the record object.
3.7.2.2 APIOC_WRITE_CNF_T confirmation
Packet structure reference
typedef struct
{
uint32_t ulHandle;
uint32_t ulPnio;
uint32_t ulApi;
uint16_t usSlot;
uint16_t usSubSlot;
uint16_t usIndex;
uint16_t usAddVal1;
uint16_t usAddVal2;
} APIOC_WRITE_CNF_DATA_T;
typedef struct
{
PNM_PNIOAPCTL_PCK_HEADER_T tHead;
APIOC_WRITE_CNF_DATA_T tData;
} APIOC_WRITE_CNF_T;
Packet description
Variable Type Value / Range Description
ulLen UINT32 22 Packet data length in bytes
(0 if ulSta != 0)
ulSta UINT32 =0: no error
<> 0: see section Status codes / Error codes on page 221.
ulCmd UINT32 0x0C1D PNIO_APCTL_CMD_WRITE_CNF
Data
ulHandle UINT32 mirrored Handle of the device the record data was written to
ulPnio UINT32 any The PROFINET Status Code from the write operation
ulApi UINT32 mirrored API of the submodule the record was written to
usSlot UINT16 mirrored Slot of the submodule the record was written to
usSubSlot UINT16 mirrored Subslot of the submodule the record was written to
usIndex UINT16 mirrored Index of record object written
usAddVal1 UINT16 any Additional value returned by PROFINET Device when
writing the record object
usAddVal2 UINT16 any Additional value returned by the PROFINET Device when
writing the record object
Table 210: APIOC_WRITE_CNF_T - Write Record service confirmation
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 198/244
Parameter descriptions
Parameter ulHandle
The handle of the (previously configured) device the record data was written to.
Parameters ulApi, usSlot, usSubslot
Addressing parameters of the submodule the record data was written to.
Parameter usIndex
The index of the record object written.
Parameter ulPnio
The PROFINET status code of the acyclic operation. This field is non-zero if a PROFINET error
occurred during processing the write service. The error code is either generated by the PROFINET
IO Controller or by the associated PROFINET IO Device. Section PROFINET Status Code on page
227 describes the meanings of the PROFINET status code.
Parameters usAddVal1, usAddVal2
The PROFINET specification defines additional values to be passed from the device in write record
object service responses. The content of these values can be found in these parameters.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 199/244
3.7.3 Read Record Implicit service (legacy)
This service can be used by the application to implicitly read a record object of an device. Use this
service to read PROFINET record objects from any PROFINET IO Device with an assigned IP
Address in the network.
Note: The service involves RPC Transactions which might timeout due to network problems
or unreachable devices. Due to these time-outs the confirmation packet might be
delayed by several seconds. This must be considered for the application
implementation.
Note: Only one Read implicit record service may be active at the same time. The application
must wait for the confirmation before the next read can be performed.
3.7.3.1 APIOC_READ_IMPL_REQ_T request
Packet structure reference
typedef struct
{
uint32_t ulIPAddress;
uint16_t usDeviceId;
uint16_t usVendorId;
uint16_t usInstanceId;
uint16_t usReserved;
uint32_t ulApi;
uint32_t ulDataLength;
uint16_t usSlot;
uint16_t usSubSlot;
uint16_t usIndex;
} APIOC_READ_IMPL_REQ_DATA_T;
typedef struct
{
PNM_PNIOAPCTL_PCK_HEADER_T tHead;
APIOC_READ_IMPL_REQ_DATA_T tData;
} APIOC_READ_IMPL_REQ_T;
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x00000020 HIL_PACKET_DEST_DEFAULT_CHANNEL
ulSrc UINT32 0 (LFW) -
Handle (LOM)
ulLen UINT32 26 Packet data length in bytes
ulCmd UINT32 0x0C1E PNIO_APCTL_CMD_READ_IMPL_REQ
Data
ulIPAddr UINT32 any IP Address of the device to read the record from
usDeviceId UINT16 any PROFINET Device Id of the device to read the record from
usVendorId UINT16 any PROFINET Vendor Id of the device to read the record from
usInstanceId UINT16 any Instance Id of the device to read the record from
usReserved UINT16 0 Padding. Set to zero for future compatibility.
ulApi UINT32 any API of the submodule to read the record from
ulDataLength UINT32 1 to 1024 Maximum amount of data to read from the submodule
usSlot UINT16 0 to 0xFFFF Slot of the submodule to read the record from
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 200/244
Variable Type Value / Range Description
usSubSlot UINT16 0 to 0xFFFF Subslot of the submodule to read the record from
usIndex UINT16 0 to 0xFFFF Index of record object to read
Table 211: APIOC_READ_IMPL_REQ_T - Read Record Implicit service request
Parameter descriptions
Parameter ulIPAddr
The IP Address of the device to read the record object from.
Parameters usVendorId, usDeviceId, usInstanceId
PROFINET Device identification according GSDML file of the device to read the record object
from.
Parameters ulApi, usSlot, usSubslot
The addressing parameters of the submodule to read the record object from.
Parameter usIndex
The index of the record object to read.
Parameter ulDataLength
The maximum number of bytes to read from the object.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 201/244
3.7.3.2 APIOC_READ_IMPL_CNF_T confirmation
Packet structure reference
typedef struct
{
uint32_t ulPnio;
uint32_t ulApi;
uint32_t ulDataLength;
uint16_t usSlot;
uint16_t usSubSlot;
uint16_t usIndex;
uint16_t usAddVal1;
uint16_t usAddVal2;
uint16_t usAlign;
uint8_t abReadData[1];
} APIOC_READ_IMPL_CNF_DATA_T;
typedef struct
{
PNM_PNIOAPCTL_PCK_HEADER_T tHead;
APIOC_READ_IMPL_CNF_DATA_T tData;
} APIOC_READ_IMPL_CNF_T;
Packet description
Variable Type Value / Range Description
ulLen UINT32 24 … 1048 Packet data length in bytes
(0 if ulSta != 0)
ulSta UINT32 =0: no error
<> 0: see section Status codes / Error codes on page 221.
ulCmd UINT32 0x0C1F PNIO_APCTL_CMD_READ_CNF
Data
ulPnio UINT32 any The PROFINET Status Code from the read operation
ulApi UINT32 mirrored API of the submodule the record was read from
ulDataLength UINT32 0 … 1024 Amount of data read from the record object
usSlot UINT16 mirrored Slot of the submodule the record was read from
usSubSlot UINT16 mirrored Subslot of the submodule the record was read from
usIndex UINT16 mirrored Index of record object read
usAddVal1 UINT16 any Additional value returned by PROFINET Device when
reading the record object
usAddVal2 UINT16 any Additional value returned by the PROFINET Device when
reading the record object
usAlign UINT16 any Alignment. Ignore for future Compatibility
abReadData[] UINT8 The data read from the record object
Table 212: APIOC_READ_IMPL_CNF_T - Read Record Implicit service confirmation
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 202/244
Parameter descriptions
Parameter ulSta
This parameter contains a non-zero error code, if the request was rejected by the PROFINET IO
Controller. For details on error codes refer to Status/Error codes.
Parameters ulApi, usSlot, usSubslot
Addressing parameters of the submodule the record object was read from.
Parameter usIndex
The index of the record object read.
Parameter ulDataLength
The number of bytes read from the record object
Parameter ulPnio
The PROFINET status code of the acyclic operation. This field is non-zero if an PROFINET error
occurred during processing the read service. The error code is either generated by the PROFINET
IO Controller or by the associated PROFINET IO Device. Section PROFINET Status Code on page
227 describes the meanings of the PROFINET status code.
Parameters usAddVal1, usAddVal2
The PROFINET specification defines additional values to be passed from the device in read record
object service responses. The content of these values can be found in this parameters.
Parameter abReadData[]
This parameter contains the actual record data returned by the device.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 203/244
3.8 Common services
The following sections describe common services provided by the PROFINET IO Controller.
3.8.1 Get Slave Handle service
This API defines a service common across all master protocol stacks. The service is used to
retrieve a list of slave handles for a specific slave state.
Note: The value of handles returned in the service confirmation are equal to the handles used
when configuring the devices using the Configure IO Device service on page 89.
3.8.1.1 HIL_GET_SLAVE_HANDLE_REQ_T request
Packet structure reference
typedef struct HIL_PACKET_GET_SLAVE_HANDLE_REQ_DATA_Tag
{
uint32_t ulParam;
} HIL_PACKET_GET_SLAVE_HANDLE_REQ_DATA_T;
#define HIL_LIST_CONF_SLAVES 0x00000001
#define HIL_LIST_ACTV_SLAVES 0x00000002
#define HIL_LIST_FAULTED_SLAVES 0x00000003
typedef struct HIL_PACKET_GET_SLAVE_HANDLE_REQ_Tag
{
HIL_PACKET_HEADER_T tHead;
HIL_PACKET_GET_SLAVE_HANDLE_REQ_DATA_T tData;
} HIL_PACKET_GET_SLAVE_HANDLE_REQ_T;
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x00000020 HIL_PACKET_DEST_DEFAULT_CHANNEL
ulSrc UINT32 0 (LFW) -
Handle (LOM)
ulLen UINT32 4 Packet data length in bytes
ulCmd UINT32 0x2F08 HIL_GET_SLAVE_HANDLE_REQ
Data
ulParam UINT32 1, 2, 3 Which list to retrieve
Table 213: HIL_GET_SLAVE_HANDLE_REQ_T - Get Slave Handle service request
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 204/244
Parameter descriptions
Parameter ulParam
This parameter selects which list of slave handles shall be retrieved.
Name Numerical Description
value
HIL_LIST_CONF_SLAVES 0x00000001 Request the list of slave handles of configured slaves
HIL_LIST_ACTV_SLAVES 0x00000002 Request the list of slave handles of active (communicating) slaves
HIL_LIST_FAULTED_SLAVES 0x00000003 Request the list of slave handles of faulty slaves
Table 214: HIL_GET_SLAVE_HANDLE_REQ_T - Parameter ulParam
3.8.1.2 HIL_GET_SLAVE_HANDLE_CNF_T confirmation
Packet structure reference
typedef struct HIL_PACKET_GET_SLAVE_HANDLE_CNF_DATA_Tag
{
uint32_t ulParam;
uint32_t aulHandle[1];
} HIL_PACKET_GET_SLAVE_HANDLE_CNF_DATA_T;
typedef struct HIL_PACKET_GET_SLAVE_HANDLE_CNF_Tag
{
HIL_PACKET_HEADER_T tHead;
HIL_PACKET_GET_SLAVE_HANDLE_CNF_DATA_T tData;
} HIL_PACKET_GET_SLAVE_HANDLE_CNF_T;
Packet description
Variable Type Value / Range Description
ulLen UINT32 4 … 516 Packet data length in bytes
(0 if ulSta != 0)
ulSta UINT32 =0: no error
<> 0: see section Status codes / Error codes on page 221.
ulCmd UINT32 0x2F09 HIL_GET_SLAVE_HANDLE_CNF
Data
ulParam UINT32 1, 2, 3 Mirrored from request
aulHandle[] UINT32[] Array of handles
Table 215: HIL_GET_SLAVE_HANDLE_CNF_T - Get Slave Handle service confirmation
Parameter descriptions
Parameter aulHandle
The parameter aulHandle is an array containing the list of slave handles associated with the
request state. The number of entries in the list is determined by the packet length.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 205/244
3.8.2 Get Slave Connection Info service
This API defines a service common across all master protocol firmwares. The service is used to
retrieve the status of slave connection.
Note: The value of the handle used to specifiy the slave connection is equal to the value of
the handle used when configuring the device with the Configure IO Device service on
page 89.
3.8.2.1 HIL_GET_SLAVE_CONN_INFO_REQ_T request
Packet structure reference
typedef struct HIL_PACKET_GET_SLAVE_CONN_INFO_REQ_DATA_Tag
{
uint32_t ulHandle;
} HIL_PACKET_GET_SLAVE_CONN_INFO_REQ_DATA_T;
typedef struct HIL_PACKET_GET_SLAVE_CONN_INFO_REQ_Tag
{
HIL_PACKET_HEADER_T tHead;
HIL_PACKET_GET_SLAVE_CONN_INFO_REQ_DATA_T tData;
} HIL_PACKET_GET_SLAVE_CONN_INFO_REQ_T
Packet description
Variable Type Value / Range Description
ulDest UINT32 0x00000020 HIL_PACKET_DEST_DEFAULT_CHANNEL
ulSrc UINT32 0 (LFW) -
Handle (LOM)
ulLen UINT32 4 Packet data length in bytes
ulCmd UINT32 0x2F0A HIL_GET_SLAVE_CONN_INFO_REQ
Data
ulHandle UINT32 The handle of the connection
Table 216: HIL_GET_SLAVE_CONN_INFO_REQ_T - Get Slave Connection Info service request
Parameter descriptions
Parameter ulHandle
This parameter is the handle of the connection to retrieve the information for. Valid handles can be
retrieved using the Get Slave Handle service (see page 203) Furthermore the handle used in the
Configure IO Device service (see page 89) can be used.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 206/244
3.8.2.2 HIL_GET_SLAVE_CONN_INFO_CNF_T confirmation
Packet structure reference
typedef struct HIL_PACKET_GET_SLAVE_CONN_INFO_CNF_DATA_Tag
{
uint32_t ulHandle;
uint32_t T ulStructID;
/* Feldbus specific structure follows see below */
} HIL_PACKET_GET_SLAVE_CONN_INFO_CNF_DATA_T;
typedef struct HIL_PACKET_GET_SLAVE_CONN_INFO_CNF_Tag
{
HIL_PACKET_HEADER_T tHead;
HIL_PACKET_GET_SLAVE_CONN_INFO_CNF_DATA_T tData;
} HIL_PACKET_GET_SLAVE_CONN_INFO_CNF_T;
typedef struct PNM_AP_ACTIVE_SLAVE_CONNECT_INFO_Ttag PNM_AP_ACTIVE_SLAVE_CONNECT_INFO_T;
struct PNM_AP_ACTIVE_SLAVE_CONNECT_INFO_Ttag
{
uint32_t ulLenName;
uint32_t ulLenType;
uint32_t ulIPAddress;
uint32_t ulDiagFlags;
uint16_t usDeviceID;
uint16_t usVendorID;
uint8_t abMac[PNIO_LEN_MAC_ADDR];
uint16_t usReserved;
uint8_t abName[PNIO_MAX_NAME_OF_STATION];
uint8_t abType[PNIO_MAX_TYPE_OF_STATION];
};
typedef struct PNM_AP_INACTIVE_SLAVE_CONNECT_INFO_Ttag
PNM_AP_INACTIVE_SLAVE_CONNECT_INFO_T;
struct PNM_AP_INACTIVE_SLAVE_CONNECT_INFO_Ttag
{
uint32_t ulLenName;
uint32_t ulDiagFlags;
uint16_t usDeviceID;
uint16_t usVendorID;
uint8_t abName[PNIO_MAX_NAME_OF_STATION];
};
enum PNM_AP_IOD_DIAGFLAG_Etag
{
/** the device does not exist in the network */
PNM_AP_IOD_DIAGFLAG_NOT_EXISTING = 0x00000001,
/** the device is not in cyclic dataexchange */
PNM_AP_IOD_DIAGFLAG_NOT_COMMUNICATING = 0x00000002,
/** Multiple stations with the ip or the name exist */
PNM_AP_IOD_DIAGFLAG_ADDRESS_CONFLICT = 0x00000004,
/** The device sent an faulty DCP response */
PNM_AP_IOD_DIAGFLAG_FAULTY_DCP = 0x00000008,
/** The device sent an RPC response with an error */
PNM_AP_IOD_DIAGFLAG_NEGATIVE_RPC = 0x00000010,
/** The device sent an RPC response with an error */
PNM_AP_IOD_DIAGFLAG_DEACTIVATED = 0x00000020,
/** The device has a Module Diff Block with identification related entries */
PNM_AP_IOD_DIAGFLAG_MODULEDIFF = 0x00000800,
/** Device has a module diff block identification related entries */
PNM_AP_IOD_DIAGFLAG_MODULEDIFF_WRONG_OR_MISSING = 0x00000800,
/** Device has a module diff block with diagnosis related entries */
PNM_AP_IOD_DIAGFLAG_MODULEDIFF_DIAGNOSIS = 0x00002000,
};
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 207/244
Packet description
Variable Type Value / Range Description
ulLen UINT32 260 or 508 Packet data length in bytes
(0 if ulSta != 0)
ulSta UINT32 =0: no error
<> 0: see section Status codes / Error codes on page 221.
ulCmd UINT32 2F0B HIL_GET_SLAVE_CONN_INFO_CNF
Data
ulHandle UINT32 Mirrored from request
ulStructID UINT32 0x2244, 0x2245 Identifier for the following data
Table 217: HIL_GET_SLAVE_CONN_INFO_REQ_T - Get Slave Connection Info service confirmation
Parameter descriptions
Parameter ulStructID
The parameter ulStructID denotes the type of the following data structure:
Name Numerical Description
value
- 0x2244 A structure of type PNM_AP_INACTIVE_SLAVE_CONNECT_INFO_T is appended to the
packet
- 0x2245 A structure of type PNM_AP_ACTIVE_SLAVE_CONNECT_INFO_T is appended to the packet
Table 218: HIL_GET_SLAVE_CONN_INFO_REQ_T - Parameter ulStructID
Variable Type Value / Range Description
ulLenName UINT32 1 … 240 Length of the NameOfStation
ulLenType UINT32 0 Length of the TypeOfStation. Always Zero, as not
supported
ulIPAddress UINT32 IP Address of the device
ulDiagFlags UINT32 Bitmask of diagnosis flags
usDeviceID UINT16 PROFINET Device ID of the device
usVendorID UINT16 PROFINET Vendor ID of the device
abMac[6] UINT8 Ethernet Mac Address of the device
usReserved UINT16 Reserved for future usage. Ignore
abName[240] UINT8 The NameOfStation
abType[240] UINT8 The TypeOfStation. For backwards compatibility. Not
supported.
Table 219: HIL_GET_SLAVE_CONN_INFO_REQ_T - Structure PNM_AP_ACTIVE_SLAVE_CONNECT_INFO_T
Variable Type Value / Range Description
ulLenName UINT32 1 … 240 Length of the NameOfStation
ulDiagFlags UINT32 Bitmask of diagnosis flags
usDeviceID UINT16 PROFINET Device ID of the device
usVendorID UINT16 PROFINET Vendor ID of the device
abName[240] UINT8 The NameOfStation
Table 220: HIL_GET_SLAVE_CONN_INFO_REQ_T - Structure PNM_AP_INACTIVE_SLAVE_CONNECT_INFO_T
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 208/244
3.8.3 Link Status Changed service
The Link Status Changed service will be used by the PROFINET IO Controller to notify the
application about link status changes. The application needs to be registered with the PROFINET
IO Controller in order to receive the service. Right after registering the protocol will generate an
artificial Link Status Changed service to synchronize the application with the current state.
Note: The application must generate a response packet for every Link Status Change
indication. If the response is not generated, no further Link Status Changed services
will be generated by the PROFINET IO Controller.
The service itself is described in [3].
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 209/244
3.9 Dual-Port Memory (DPM)
This section describes additional data structures used by the PROFINET IRT Controller firmware
for the DPM interface.
3.9.1 Extended Status Block
The extended status block provides additional information about the firmwware state. This block
contains structures common for all protocol firmwares and specific structures. The following
structure is derived from the NETX_EXTENDED_STATE_FIELD_DEFINITION_T described in the
DPM manual.
Structure reference
typedef struct PNM_AP_EXTENDED_STATE_FIELD_DEFINITION_Ttag
{
PNM_AP_IOTIMINGINFO_T tIotimingInfo;
uint8_t abReserved[140];
NETX_EXTENDED_STATE_FIELD_T tExtStateField;
} PNM_AP_EXTENDED_STATE_FIELD_DEFINITION_T;
Structure description
Variable Type Value / Range Description
tIoTimingInfo PNM_AP_IO Process Data Timing information synchronized to DPM
TIMINGINFO input area handshake.
_T
abReserved UINT8[140] Reserved for future usage
tExtStateField NETX_EXTE Descriptor for state field lists in DPM input/output area. See
NDED_STAT DPM manual for details
E_FIELD_T
Table 221: Extended Status Block - Structure PNM_AP_EXTENDED_STATE_FIELD_DEFINITION
3.9.2 Process data timing information
The following structures are used in the context of process data timing measurements.
Structure reference
typedef struct PNS_AP_TIMEINFO_Ttag PNS_AP_TIMEINFO_T;
struct PNS_AP_TIMEINFO_Ttag
{
uint32_t ulCycleCounter;
uint32_t ulTimeSinceCycleStart;
};
Structure description
Variable Type Value / Range Description
ulCycleCounter UINT32 The value of the PROFINET synchronous cycle counter
ulTimeSinceCycle UINT32 Time since start of the bus cycle
Start
Table 222: Process data timing information - Structure PNM_AP_TIMEINFO_T
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 210/244
Parameter descriptions
Parameter ulCycleCounter
The value of the PROFINET Cycle Counter when the time measurement was taken.
Parameter ulTimesinceCycleStart
The actual time of the event/state relative to the beginning of the bus cycle. The time is given in
units of nanoseconds.
Structure reference
typedef struct PNM_AP_IOTIMINGINFO_Ttag PNM_AP_IOTIMINGINFO_T;
struct PNM_AP_IOTIMINGINFO_Ttag
{
PNS_AP_TIMEINFO_T tOutputUpdateStart;
PNS_AP_TIMEINFO_T tOutputUpdateFinish;
PNS_AP_TIMEINFO_T tInputUpdateStart;
PNS_AP_TIMEINFO_T tInputUpdateFinish;
};
Structure description
Variable Type Value / Range Description
tOutputUpdateStart PNS_AP_TI At this time the controller firmware started updating the
MEINFO_T transmit buffer from DPM output area
tOutputUpdateFinish PNS_AP_TI At this time the controller firmware finished updating
MEINFO_T the transmit buffer from DPM output area
tInputUpdateStart PNS_AP_TI At this time the controller firmware started updating the
MEINFO_T DPM input area from the receive buffer.
tInputUpdateFinish PNS_AP_TI At this time the controller firmware finished updating
MEINFO_T the DPM input area from the receive buffer.
Table 223: Process data timing information - Structure PNM_AP_IOTIMINGNFO_T
Parameter descriptions
Parameter tOutputUpdateStart
This parameter represents the time when the PROFINET controller firmware starts copying the
data from the DPM output area into the transmit buffer. This happens when the host handshakes
the DPM output area.
Parameter tOutputUpdateFinish
This field is the time when the PROFINET controller firmware finished copying the data from the
DPM output area into the transmit buffer. The data will be transmitted in the next buscycle after the
given timepoint.
Note: The firmware does not handshake the DPM output area at this time
Parameter tInputUpdateStart
This parameter represents the time when the PROFINET controller firmware starts copying the
data from the receive buffers to the the DPM input area.
Note: This time is internally linked to the end of the IRT red phase. The host must have
handshaked the DPM input area prior to this time event in order for the copying to take
place.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Application interface 211/244
Parameter tInputUpdateFinish
This field is the time when the PROFINET controller firmware finished copying the data from the
receive buffers to the the DPM input area. This event occurs right before the firmware handshakes
the DPM input area.
3.9.3 AR State Info block
The profinet controller firmware can be configured to provide the operational state of ARs and the
controller itself as block within the DPM Input area. This feature is enabled by means of Configure
IO Controller service. It is a matter of the Engineering / configuration system to ensure that no
overlaps of areas can occur.
The block is a byte array of 129 byte length indexed by device handle. This is the same layout as
structure PNM_AP_ARSTATE_T used in various AR State related services. The meaning of the
array entries is identical to the definitions made for the PNM_AP_GET_ARSTATE_CNF_T
confirmation packet.
3.9.4 AR State Request block
The profinet controller firmware can be configured to accept operational state change requests for
the ARs and the controller itself via a block within the DPM Output area. This feature is enabled by
means of Configure IO Controller service. It is a matter of the Engineering / configuration system to
ensure that no overlaps of areas can occur.
The block is a byte array of 129 byte length indexed by device handle. This is the same layout as
structure PNM_AP_ARSTATE_T used in various AR State related services. The meaning of the
array entries is identical to the definitions made for the PNM_AP_GET_ARSTATE_CNF_T
confirmation packet.
The request is initiated with a rising edge of the PNM_AP_ARSTATE_REQ_MSK bit. In addition
the value of the state is checked to avoid accidental changes. In order to request a state change
the application must follow the following sequence:
1. Set the state fields to requested state with cleared request bit. That is value
(PNM_AP_ARSTATE_REQ_xxx & ~PNM_AP_ARSTATE_REQ_MSK),
2. Handshake the DPM Output Area and wait for confirmation.
3. Set the state fields to requested state with set request bit. That is value
PNM_AP_ARSTATE_REQ_xxx.
4. Handshake the DPM Output Area and wait for confirmation.
5. The controller will perform the requested state changes asynchronously. Application has to
monitor the actual state by means of AR State Info block, Get AR State service or AR State
Update service and wait for the transition to finish.
DPM Block structure description for configurations with device handle <= 128
Variable Type Value / Range Description
abOpMode[129] UINT8 Any Indicates the current operational mode of the controller and
ARs
Table 224: PNM_AP_DPM_OPMODE_STATUS_T structure
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Media Redundancy 212/244
4 Media Redundancy
4.1 Overview
Media Redundancy provides a means to recover in a short time from network cable breaks. The
PROFINET Standard defines the Media Redundancy Protocol (MRP) and Media Redundancy with
Planned Duplication of Frames (MRPD) for this purpose.
MRP ensures, when devices are connected in a ring topology, that frames do not circle in the ring
forever and a fast reconfiguring of the switch forwarding tables in case of a ring break is done. It
does not provide a reliable solution for bumpless media redundancy. That means that when a
cable break occurs, connections between the controller and the devices might be interrupted for a
short time.
MRPD requires MRP protocol to manage the ring topology and is an extension to IRT
communication. It provides bumpless media redundancy for IRT communication even in case of
synchronous applications. That means when the ring breaks, it is guaranteed that there will be no
communication abort and no synchronization loss.
Note: Using MRP Manager functionality is covered by patents. Please contact the
PROFINET User Organization for further details if the Hilscher PROFINET IO
Controller is configured for MRP Manager role.
In order to prevent accidental activation of MRP Manager role a License Bit for the
Security EEPROM has been implemented. The PROFINET Controller Firmware will
reject any Configuration where the PROFINET Controller is configured for MRP
Manager Role if this bit is not activated.
Note: MRPD is currently not supported by the Hilscher PROFINET IO Controller firmware.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Media Redundancy 213/244
4.2 Topologies
Generally, all devices which are connected in a ring topology must support the MRP protocol in
client mode. At least one device in the ring must support MRP Manager. The following image
shows the simple example of a MRP ring topology:
Figure 17: MRP single ring topology
The image shows a ring manager connected with three ring clients in a ring topology. While it is
often the case, the ring manager and the profinet controller need not to be the same device. Each
device supporting ring manager capability can be configured as manager. It is also possible to
have multiple rings in a configuration as shown in the next image:
Figure 18: Ring topology with two rings
In such a case, each ring must be assigned an individual MRP domain and own MRP domain
UUID. Rings must not be mixed, e.g. it is not allowed to share a network cable between two rings.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Media Redundancy 214/244
4.3 Configuration parameters
The MRP Configuration consists of several parameters, which depend on communication recovery
time requirements and ring size (number of nodes in the ring).
Parameter Value range Default value Description
Manager parameters
Topology change 1 … 100 ms 10 ms The time interval between two topology change interval
Interval network frames. The topology change frame is used by the
MRP manager to indicate changes in topology (ring
break/close) to the MRP clients.
Topology change 1…5 5 The count how often the MRP manager will repeat the
repeat count topology change frame. This value multiplied with the
TOPNRmax topology change interval determines the delay between the
detection of the ring break and the reorganization of the
network switches.
Test short interval 1 … 500 ms 2 ms Short interval between ring test frames sent by the MRP
manager to detect the ring state. The short interval is used
when ever a ring transitions between closed or open state
occurs to verify the ring state.
Test default 1 … 1000 ms 10 ms Default interval between ring test frames sent by the MRP
interval manager to detect the ring state. The default interval is used
when the ring is in open or in closed state to detect changes
of the ring state.
Test NR Max 2 ... 10 3 The number of ring test frames which cause a state
TSTNRmax transition in MRP manager. E.g. when the ring breaks the
MRP manager will wait until Test NR max frames are not
passed through the ring before considering the ring as
broken. This value multiplied by the short test interval and
the default test interval determines the delay between the
physical ring break/close and the Ring manager considering
the ring as open/closed
Client parameters
Link Down 1 … 1000 ms 20 ms Time interval between two MRP link down frames sent by
Timeout the MRP client when a link down on a port occurs.
Link Up Timeout 1 … 1000 ms 20 ms Time interval between two MRP link up frames sent by the
MRP client when a link up on port occurs.
Link NR Max 1…5 5 The maximum number of Link/Down frames the MRP client
will sent while waiting for a reaction of the MRP manager.
Table 225 MRP parameter summary
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Media Redundancy 215/244
From the parameters above the following times can be calculated:
Ring test time Ttest
Ttest = TTSTdefault x TSTNRmax
Traveling time of one ring test frame through the ring Tring:
Tring = N x (Tswitch + Tqueue + Tbit + Tline)
Where N is the number of Nodes in the ring, Tswitch and Tqueue are the times for passing a
MRP test frame through the switch, Tbit is the time for sending a frame through the network
and Tline the propagation time of the Ethernet signal.
Detection time of a ring failure Tdetect:
Tdetect = Ttest + Tring
Time to hold switch forwarding table before flushing Thold
Thold = Ttopochginterval x TOPNRmax
Time for flushing the switch forwarding table of all devices Tflush:
Tflush = Thold + Tring + TFDB
where TFDB is the time required for a device to flush its forwarding table
Total time for reconfiguring the switches after a ring break/close Trec:
Trec = Tdetect + Tflush
The following estimates can be used in the calculations:
Tline = 0,5 µs (For 100 m cable length)
Tbit = 5,12 µs (For MRP Test Frame)
Tqueue = 122 µs (worst case value with one large frame in send queue)
Tswitch = 10 µs (depends on switches, typical value for store & forward)
TFDB = 500µs (depends on switch)
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
LED 216/244
5 LED
The following LEDs are defined for the PROFINET IO IRT Controller firmware:
SYS LED: Indicates the status of the system, colors: green, yellow
COM0 LED: SF LED (System Fail), color: red
COM1 LED: BF LED (Bus Fail), color: red
The table summarizes all available led states of the loadable firmware:
SYS SF BF Description
Firmware and Configuration
Off Off Off Power supply for the device is missing or hardware defect.
On, yellow Off Off No second stage bootloader found in Flash memory.
Flashing, Off Off No firmware file found in Flash file system.
green/yellow,
cyclic
On, green On, red Off PROFINET IO Controller is not configured.
On, green Off On, red No Ethernet port has a link. E.g. no cable connected to any of the
Ethernet ports.
On, green Off Flashing, red, PROFINET IO Controller is not online (Bus is switched to Off).
2 Hz
PROFINET communication
On, green Off or Flashing, red, Not all configured devices are in data exchange.
On, red 1 Hz
On, green On, red - One IO Device connected to the PROFINET IO Controller reports a
problem.
On, green Off Off All devices are in data exchange and no problem has been reported by
any device.
PROFINET Controller operation
On, green Flashing, red, Off A PROFINET DCP Set Signal has been received.
1 Hz, 3 s
On, green Flashing red, Flashing, red, The PROFINET IO Controller has detected an address conflict. Another
2 Hz 2 Hz device in the network is using the same Name of Station or IP address
as the PROFINET IO Controller.
or
Watchdog error.
On, green On, red On, red No valid Master license.
Table 226: PROFINET IO Controller LED status
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Requirements to the application 217/244
6 Requirements to the application
6.1 What the application always has to do
The application must always update the I/O data.
The application must answer each indication packet.
6.2 Handling I/O data
The application has to continue reading (updating) consumer data cyclically even if all ARs have
been shut down or if an error occurs. If the application does not continue updating the data, a
PROFINET state conflict error may be the result.
The application has to continue writing (updating) the provider data regardless of the
communication state. In case the application cannot provide valid data (for an IO Device), the
application can set the corresponding IOPS to invalid.
6.3 Remanent data handling
The remanent data contains device parameters, e.g. name of the station and IP address
parameters, which are adjusted by the DCP protocol service, as well as parameters adjusted by
SNMP, such as sysContact, sysName and sysLocation.
The stack automatically updates the remanent data when requested via PROFINET DCP protocol
or SNMP.
When you design your application, you have to determine whether
protocol stack stores the remanent data or
host application stores the remanent data.
In case “host application stores the remanent data”, the firmware file (*.nxf) has to be configured
using the Tag List Editor software (V1.5.0.1 upwards).
In the tag list “Remanent Data Responsibility” the tag “Remanent Data stored by Host” has to be
set to enabled. In case “protocol stack stores the remanent data”, no change in the tag list of the
firmware is required.
If remanent data handling is configured by the host, the host application must provide remanent
data via the PNM_AP_CMD_LOAD_REMANENT_REQ packet during initialization phase. For
details, see chapter 2.3.1 Network state and 3.1.11 Load Remanent service.
Similarly, it must handle the PNM_AP_CMD_STORE_REMANENT_IND packet used to transfer
modified remanent data from the stack to the host; it must be stored on a non-volatile storage
device at runtime.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Requirements to the application 218/244
6.4 Changing the AR state
The firmware offers two independent ways for the application to control the AR state:
Using a packet: The application can use the Change AR State service (page 162) to control
the AR state
or
Using the “AR state request” in the dual-port memory output area which the application has
set with parameter usARStateRequestOffset using the IOC Object (page 13).
Note: The application must use one way only, because the firmware does not support the
simultaneous use of both ways.
The firmware is designed to follow the last requested AR State change. Depending on the network
update time it can happen that a request cannot be fulfilled immediately. In case the application
sends a new AR state change request to the firmware while the firmware is still executing the prior
AR state change request, the firmware rejects the older request.
The current AR status can always be observed in the DPM input area.
6.5 Certification requirements for applications
To pass the PROFINET IO Controller certification, the application that uses the Hilscher
PROFINET IO Controller firmware has to fulfill several requirements. The list of important topics
compiled in this section provides tips on the essential points, but it is not exhaustive. The official PI
documents (e.g. specifications for tests and test cases) are valid and subject to modification by PI.
Check these documents and contact your PI test lab in time to find out which requirements are
relevant for your application.
General requirements
The configuration of IO Controller firmware has to be set to “application-controlled startup”. The
application has to
register at the IO Controller firmware via Register Application Request (see reference [2])
handle the services for remanent data Load Remanent service (see page 99) and Store
Remanent service (see page 185)
use the Configure OEM Parameter service (see page 79) to set correct values for
identification information (e.g. OrderID, software version,…)
Moreover, a special GSDML file containing information on controller identification has to be
provided in order to be able to run automated test cases.
Requirements for IO data handling
The application used for certification tests has to demonstrate its ability to access IOPS and IOCS
received from an IO Device to the test lab. The test lab will check the reaction to “IOPS invalid”.
Requirements for acyclic data handling
The application has to be able to perform a read request
reading exactly 1 byte of a specific record (one single byte only!).
reading 16 KB of a specific record.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Requirements to the application 219/244
Requirements for alarm handling
The application has to be able to demonstrate received alarms and to identify the submodule that
triggered them. During the test, alarm type and alarm payload have to be demonstrated as well.
Requirements for automated DCP test case
Via SYCON.net (activate “Accept DCP Set via network”) or the Configure IO Controller
service (page 86, set PNM_AP_IOC_FLAG_ENABLE_DCP_SET) the configuration has to
set “accept DCP SET parameters” of the IO Controller.
The firmware must be set to an application-controlled startup.
The application must handle remanent data services.
Requirements for netload tests
During the netload tests, the execution of the following specific sequence of read requests is
expected for a certain device and submodule. The application has to supervise the AR to see
whether the AR of the configured IO devices is active. In case of an AR shutdown, the application
has to demonstrate this shutdown. The application has to store permanently that the “AR got lost”.
Human interaction is required to delete this information after the completion of the test which takes
several hours.
Specific read request sequence:
1. I&M0 record (0xAFF0)
2. Diagnosis data for one device (0xF80C)
3. Diagnosis data for one API (0xF00C)
4. Diagnosis data for one AR (0xE00C)
5. Diagnosis data for one Slot (0xC00C)
6. Diagnosis data for one Slot (0x800C)
The max. interval between consecutive read requests is 100 ms. The application has to provide a
counter for performed read requests and the status of the last read confirmation.
Requirements for certification with ARTC test tool
In order to use the PROFINET IO Controller test tool „ARTC“, the application must implement the
protocol TFPC. This test tool is described within the PROFINET Test Bundle from PI together with
the test cases the application has to implement.
The test bundle is available at https://www.profibus.com/download/profinet-test-bundle.
More information is available within the test bundle.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Requirements to the application 220/244
More recommendations
Experience shows that the application should display helpful diagnosis information for fault cases.
We therefore recommend supporting the following items:
Station diagnosis to indicate and support the following device states:
not connected
connected
has information on diagnosis
Use the Get Slave Connection Info service (see page 205) to get the device states.
Read request with a variable max. amount of data to be read from the submodule
Event logs from Controller and all devices using the Get Logbook Service (see page
151). The time when the event occurs and the local machine time have to be
synchronized.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Status codes / Error codes 221/244
7 Status codes / Error codes
7.1 Error Codes of PROFINET IO Controller
Status code / Error code Definition/description
0x00000000 TLR_S_OK
Status ok. No error.
0xC0CB0001 PNM_AP_CFG_INVALID_PARAMETER
Invalid parameter.
0xC0CB0002 PNM_AP_CFG_INVALID_STRUCT_VERSION
Invalid structure version.
0xC0CB0003 PNM_AP_CFG_INVALID_IDENTIFIER
Invalid identifier.
0xC0CB0004 PNM_AP_CFG_INVALID_DEVICE_HANDLE
Invalid device handle.
0xC0CB0005 PNM_AP_CFG_INVALID_SEND_CLOCK_FACTOR
Invalid PROFINET send clock factor.
0xC0CB0006 PNM_AP_CFG_INVALID_REDUCTION_RATIO
Invalid PROFINET reduction ratio.
0xC0CB0007 PNM_AP_CFG_INVALID_DATA_HOLD_FACTOR
Invalid PROFINET data hold factor.
0xC0CB0008 PNM_AP_CFG_INVALID_PHASE
Invalid PROFINET phase.
0xC0CB0009 PNM_AP_CFG_INVALID_FRAME_SEND_OFFSET
Invalid PROFINET frame send offset.
0xC0CB000A PNM_AP_CFG_INVALID_DOMAIN_NAME
Invalid domain name.
0xC0CB000B PNM_AP_CFG_INVALID_UUID
Invalid UUID.
0xC0CB000C PNM_AP_CFG_INVALID_NUMBER_OF_ENTRIES
Invalid number of entries.
0xC0CB000D PNM_AP_CFG_INVALID_PORT_NUM
Invalid port number.
0xC0CB000E PNM_AP_CFG_INVALID_STATION_NAME
Invalid station name.
0xC0CB000F PNM_AP_CFG_INVALID_PORT_NAME
Invalid Ethernet port name.
0xC0CB0010 PNM_AP_CFG_INVALID_IP_ADDRESS
Invalid IP address.
0xC0CB0011 PNM_AP_CFG_INVALID_IOCR_HANDLE
Invalid PROFINET IOCR Handle.
0xC0CB0012 PNM_AP_CFG_INVALID_IOCR_TYPE
Invalid PROFINET IOCR type.
0xC0CB0013 PNM_AP_CFG_INVALID_IOCR_PROP
Invalid PROFINET IOCR properties.
0xC0CB0014 PNM_AP_CFG_INVALID_IOCR_DATA_LENGTH
Invalid PROFINET IOCR data length.
0xC0CB0015 PNM_AP_CFG_INVALID_DPM_OFFSET
Invalid DPM Offset.
0xC0CB0016 PNM_AP_CFG_OVERLAPPING_DPM_OFFSET
Overlapping DPM IOCR data area
0xC0CB0017 PNM_AP_CFG_INVALID_SUBMODULE_HANDLE
Invalid submodule handle.
0xC0CB0018 PNM_AP_CFG_INVALID_SUBMODULE_TYPE
Invalid submodule type.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Status codes / Error codes 222/244
Status code / Error code Definition/description
0xC0CB0019 PNM_AP_CFG_INVALID_SUBMODULE_FLAG
Invalid submodule flag
0xC0CB001A PNM_AP_CFG_INVALID_INPUT_DATA_LENGTH
Invalid submodule input data length.
0xC0CB001B PNM_AP_CFG_INVALID_INPUT_FRAME_OFFSET
Invalid submodule input data offset.
0xC0CB001C PNM_AP_CFG_OVERLAPPING_INPUT_FRAME_OFFSET
Overlapping submodule input data areas.
0xC0CB001D PNM_AP_CFG_INVALID_INPUT_IOCS_OFFSET
Invalid submodule input IOCS offset.
0xC0CB001E PNM_AP_CFG_OVERLAPPING_INPUT_IOCS_OFFSET
Overlapping submodule input IOCS.
0xC0CB001F PNM_AP_CFG_INVALID_OUTPUT_DATAT_LENGTH
Invalid submodule output data length
0xC0CB0020 PNM_AP_CFG_INVALID_OUTPUT_FRAME_OFFSET
Invalid submodule output data offset.
0xC0CB0021 PNM_AP_CFG_OVERLAPPING_OUTPUT_FRAME_OFFSET
Overlapping submodule output data areas.
0xC0CB0022 PNM_AP_CFG_INVALID_OUTPUT_IOCS_OFFSET
Invalid submodule output IOCS offset.
0xC0CB0023 PNM_AP_CFG_OVERLAPPING_OUTPUT_IOCS_OFFSET
Overlapping submodule output IOCS.
0xC0CB0024 PNM_AP_CFG_INVALID_PLL_WINDOW
Invalid PROFINET IRT PLL window.
0xC0CB0025 PNM_AP_CFG_INVALID_PTCTP_TIMEOUT
Invalid PROFINET IRT Synchronization timeout (PTCP Timeout).
0xC0CB0026 PNM_AP_CFG_INVALID_TAKEOVER_TIMEOUT
Invalid PROFINET IRT Takeover timeout.
0xC0CB0027 PNM_AP_CFG_INVALID_PTCP_STARTUP_TIME
Invalid PROFINET IRT PTCP startup time.
0xC0CB0028 PNM_AP_CFG_INVALID_PTCP_MASTER_PRIO
Invalid PROFINET IRT synchronization master priority.
0xC0CB0029 PNM_AP_CFG_INVALID_NUM_IRT_PHASES
Invalid PROFINET IRT phase count.
0xC0CB002A PNM_AP_CFG_INVALID_NUM_IRT_FRAMES
Invalid PROFINET IRT frame count.
0xC0CB002B PNM_AP_CFG_UNUSED
Unused
0xC0CB002C PNM_AP_CFG_INVALID_GREEN_PERIOD_BEGIN
Invalid PROFINET IRT green period begin.
0xC0CB002E PNM_AP_CFG_INVALID_ORANGE_PERIOD_BEGIN
Invalid PROFINET IRT orange period begin.
0xC0CB002F PNM_AP_CFG_INVALID_FRAME_LENGTH
Invalid PROFINET IRT frame length.
0xC0CB0030 PNM_AP_CFG_INVALID_LINE_DELAY
Invalid PROFINET IRT line delay.
0xC0CB0031 PNM_AP_CFG_INVALID_PREAMBLE_LENGTH
Invalid PROFINET frame preamble length.
0xC0CB0032 PNM_AP_CFG_INVALID_PARAMETER_FLAG
Invalid parameter enable flag value.
0xC0CB0033 PNM_AP_CFG_INVALID_PARAMETER_TYPE
Invalid parameter type.
0xC0CB0034 PNM_AP_CFG_INVALID_FSU_MODE
Invalid Fast Startup Mode.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Status codes / Error codes 223/244
Status code / Error code Definition/description
0xC0CB0035 PNM_AP_CFG_INVALID_FS_HELLO_INTERVAL
Invalid Fast Startup Hello telegram interval.
0xC0CB0036 PNM_AP_CFG_INVALID_FS_HELLO_RETRY
Invalid Fast Startup Hello telegram retry.
0xC0CB0037 PNM_AP_CFG_INVALID_FS_HELLO_DELAY
Invalid Fast Startup Hello delay.
0xC0CB0038 PNM_AP_CFG_INVALID_SYNC_MODE
Invalid synchronization mode.
0xC0CB0039 PNM_AP_CFG_INVALID_MAUTYPE_MODE
Invalid MAU type mode.
0xC0CB003A PNM_AP_CFG_INVALID_DOMAIN_BOUNDARY
Invalid domain boundary value.
0xC0CB003B PNM_AP_CFG_INVALID_DCP_BOUNDARY
Invalid DCP boundary value.
0xC0CB003C PNM_AP_CFG_INVALID_PEERTOPEER_BOUNDARY
Invalid peer to peer boundary value.
0xC0CB003D PNM_AP_CFG_INVALID_MULTIPLE_INTERFACE_MODE
Invalid multiple interface mode value.
0xC0CB003E PNM_AP_CFG_INVALID_MRP_INSTANCE
Invalid mrp instance.
0xC0CB003F PNM_AP_CFG_INVALID_MRP_CHECK
Invalid mrp check value.
0xC0CB0040 PNM_AP_CFG_INVALID_MRP_ROLE
Invalid mrp role.
0xC0CB0041 PNM_AP_CFG_INVALID_MRP_PARAMETERS
Invalid mrp parameter.
0xC0CB0042 PNM_AP_CFG_INVALID_MRP_MANAGER_PRIO
Invalid mrp manager priority.
0xC0CB0043 PNM_AP_CFG_INVALID_MRP_TOPO_CHANGE_INTERVAL
Invalid mrp topology change frame interval value.
0xC0CB0044 PNM_AP_CFG_INVALID_MRP_TOPO_REPEAT_COUNT
Invalid mrp topology change frame repeat value.
0xC0CB0045 PNM_AP_CFG_INVALID_MRP_SHORT_TEST_INTERVAL
Invalid mrp short test frame interval value.
0xC0CB0046 PNM_AP_CFG_INVALID_MRP_DEFAULT_TEST_INTERVAL
Invalid mrp default test frame interval value.
0xC0CB0047 PNM_AP_CFG_INVALID_MRP_TEST_MONITOR_COUNT
Invalid mrp test monitor countvalue.
0xC0CB0048 PNM_AP_CFG_INVALID_MRP_LINK_DOWN_INTERVAL
Invalid mrp link down frame interval.
0xC0CB0049 PNM_AP_CFG_INVALID_MRP_LINK_UP_INTERVAL
Invalid mrp link up frame interval.
0xC0CB004A PNM_AP_CFG_INVALID_MRP_LINK_CHANGE_COUNT
Invalid mrp link change repeat value.
0xC0CB004B PNM_AP_CFG_INVALID_FIBEROPTIC_PARAMETERS
Invalid fiber optic parameter value.
0xC0CB004C PNM_AP_CFG_DUPLICAT_UUID
Doubly used UUID value.
0xC0CB004D PNM_AP_CFG_DUPLICAT_NAME_OF_STATION
Doubly used PROFINET Name Of Station value.
0xC0CB004E PNM_AP_CFG_DUPLICAT_IP_ADDRESS
Doubly used IPv4 network address.
0xC0CB004F PNM_AP_CFG_INVALID_RTA_TIMEOUT_FACTOR
Invalid value for alarm frame timeout.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Status codes / Error codes 224/244
Status code / Error code Definition/description
0xC0CB0050 PNM_AP_CFG_INVALID_RTA_RETRIES
Invalid value for alarm frame retry.
0xC0CB0051 PNM_AP_CFG_INVALID_MAX_ALARM_DATA_LENGTH
Invalid value for alarm data length.
0xC0CB0052 PNM_AP_CFG_AR_TYPE_NOT_SUPPORTED
Unsupported application relation type.
0xC0CB0053 PNM_AP_CFG_INVALID_AR_TYPE
Invalid application relation type..
0xC0CB0054 PNM_AP_CFG_INVALID_SLOT
Invalid module slot number.
0xC0CB0055 PNM_AP_CFG_INVALID_MODULE_IDENT
Invalid module id number.
0xC0CB0056 PNM_AP_CFG_INVALID_SUBSLOT
Invalid submodule subslot number.
0xC0CB0057 PNM_AP_CFG_NO_PORT_SUBMODULE
The specified submodule is not a port submodule.
0xC0CB0058 PNM_AP_CFG_INVALID_MAX_BRIDGE_DELAY
Invalid maximum Ethernet bridge delay.
0xC0CB0059 PNM_AP_CFG_INVALID_MAX_PORT_TX_DELAY
Invalid maximum port tx delay.
0xC0CB005A PNM_AP_CFG_INVALID_MAX_PORT_RX_DELAY
Invalid maximum port rx delay.
0xC0CB005B PNM_AP_CFG_INVALID_MAX_LINE_DELAY
Invalid maximum line delay.
0xC0CB005C PNM_AP_CFG_INVALID_YELLOW_TIME
Invalid length of yellow interval.
0xC0CB005D PNM_AP_CFG_INVALID_FRAME_DATA_PROP
Invalid frame data properties.
0xC0CB005E PNM_AP_CFG_INVALID_FRAME_ID
Invalid frame id value.
0xC0CB005F PNM_AP_CFG_INVALID_FRAME_DETAIL_SYNC_FRAME_MASK
Invalid frame details sync frame mask.
0xC0CB0060 PNM_AP_CFG_INVALID_FRAME_DETAIL_FRAME_SEND_OFFSET
Invalid frame details send offset.
0xC0CB0061 PNM_AP_CFG_INVALID_NUM_IRT_ASSIGNMENT
Invalid number of IRT phase assignments.
0xC0CB0062 PNM_AP_CFG_DUPLICAT_SYNC_MASTER
More than one synchronization master defined.
0xC0CB0063 PNM_AP_CFG_INVALID_NUMBER_OF_PORTS
Invalid number of ports.
0xC0CB0064 PNM_AP_CFG_TOPO_PORT_ALREADY_CONFIGURED
The referenced port topology is already configured.
0xC0CB0065 PNM_AP_CFG_TOPO_INFO_MISMATCH
Inconsistent topology configured.
0xC0CB0066 PNM_AP_CFG_INVALID_CONFIG_STATE
Wrong configuration state.
0xC0CB0067 PNM_AP_CFG_MISSING_IOCR
IOCR missing in configuration.
0xC0CB0068 PNM_AP_CFG_MAX_NUMBER_IOCR_EXCEEDED
Maximum possible number of IOCRs exceeded.
0xC0CB0069 PNM_AP_CFG_INVALID_DAP_CONFGURATION
Invalid configuration of a device access point (DAP).
0xC0CB006A PNM_AP_CFG_INVALID_DROP_BUDGET
Invalid value for network switch drop budget.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Status codes / Error codes 225/244
Status code / Error code Definition/description
0xC0CB006B PNM_AP_CFG_INVALID_REDORANGE_PERIOD_BEGIN
Invalid value for PROFINET IRT red period begin.
0xC0CB006C PNM_AP_CFG_PERFORMANCELIMIT_EXCEEDED
The configured item exceeds the firmware's performance limitation.
0xC0CB006D PNM_AP_CFG_FEATURE_NOT_SUPPORTED
The configured feature is not supported
0xC0CB006E PNM_AP_CFG_IRT_LEGACY_ADVANCED_MIXED
The configuration contains legacy and advanced startup up IRT ARs
0xC0CB006F PNM_AP_CFG_INVALID_ARPROPERTIES
An invalid value for 'AR properties' was configured
0xC0CB0070 PNM_AP_CFG_INVALID_NAMEOFSTATION
An invalid value for name of station was configured
0xC0CB0071 PNM_AP_ERR_DEVICE_NOT_FOUND
A device with the given name of station was not found in the network
0xC0CB0072 PNM_AP_ERR_MULTIPLE_DEVICES_FOUND
Multiple devices using the given name of station have been found in the network
0xC0CB0073 PNM_AP_ERR_DCP_FAILED
Configuring the device using DCP failed
0xC0CB0074 PNM_AP_ERR_IP_CONFLICT
The IP address is already used by another device in the network
0xC0CB0075 PNM_AP_CFG_INVALID_CONTROLLERAPPLICATIONCYCLEFACTOR
An invalid value for the Controller Application Cycle Factor has been configured
0xC0CB0076 PNM_AP_CFG_INVALID_TIMEDATACYCLE
An invalid value for the Time Data Cycle has been configured
0xC0CB0077 PNM_AP_CFG_INVALID_TIMEIOINPUT
An invalid value for Time IO Input has been configured
0xC0CB0078 PNM_AP_CFG_INVALID_TIMEIOINPUTVALID
An invalid value for Time IO Input Valid has been configured
0xC0CB0079 PNM_AP_CFG_INVALID_TIMEIOOUTPUT
An invalid value for Time IO Output has been configured
0xC0CB0080 PNM_AP_CFG_INVALID_TIMEIOOUTPUTVALID
An invalid value for Time IO Output Valid has been configured
0xC0CB0081 PNM_AP_ERR_NO_MRM_LICENSE
MRP Manager configured but license not available.
0xC0CB0082 PNM_AP_CFG_MULTIPLE_INTERFACE_MODE_MIXED
Inconsistent MultipleInterface mode configuration. Mixed configuration (LLDP V2.2 and
LLDP V2.3) is not allowed.
0xC0CB0083L PNM_AP_CFG_INVALID_DATA_HOLD_TIME
Invalid PROFINET data hold time.
0xC0CB0084 ERR_PNM_AP_INVALID_ALARM_PRIORITY
An invalid alarm priority value was specified in request.
0xC0CB0085 ERR_PNM_AP_NO_ALARM_PENDING
No alarm pending for device handle and priority specified in request.
0xC0CB0086 ERR_PNM_AP_WRONG_ALARM_TYPE
The alarm acknowledge service request contains a different alarm type than alarm
indication.
0xC0CB0087 ERR_PNM_AP_WRONG_ALARM_STATE
The alarm acknowledge service request was used before an alarm was indicated and
responded
0x40CB0088 PNM_AP_CFG_NO_MORE_ENTRIES_AVAILABLE
No further configuration entries available.
0xC0CB0089 PNM_AP_CFG_DATABASE_CONFIGURATION_ACTIVE
Stack already configured by means of configuration manager (NXD file).
0xC0CB008A PNM_AP_CFG_INVALID_IOCR_FLAGS
Invalid value used in PROFINET IOCR flags field.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Status codes / Error codes 226/244
Status code / Error code Definition/description
0xC0CB008B PNM_AP_CFG_INVALID_INPUTDATAMODE
Invalid value used in PROFINET SET OEM input data mode field.
Table 227: Status codes / Error codes: PROFINET IO Controller
7.2 Sockets
Status code / Error code Definition/description
0x00000000 TLR_S_OK
Status ok
0xC0C90001 TLR_E_SOCK_UNSUPPORTED_SOCKET
Unsupported socket domain, type and protocol combination.
0xC0C90002 TLR_E_SOCK_INVALID_SOCKET_HANDLE
Invalid socket handle.
0xC0C90003 TLR_E_SOCK_SOCKET_CLOSED
Socket was closed.
0xC0C90004 TLR_E_SOCK_INVALID_OP
The command is invalid for the particular socket.
0xC0C90005 TLR_E_SOCK_INVALID_ADDRESS_FAMILY
An invalid address family was used for this socket
0xC0C90006 TLR_E_SOCK_IN_USE
The specified address is already in use.
0xC0C90007 TLR_E_SOCK_HUP
The remote side closed the connection.
0xC0C90008 TLR_E_SOCK_WOULDBLOCK
The operation would block.
Table 228: Status codes / Error codes: Sockets
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Status codes / Error codes 227/244
7.3 PROFINET Status Code
The PROFINET protocol uses the PROFINET status code to indicate success or failure. This
section describes the meanings of the PROFINET status code. The according field is named
ulPnio.
These services uses the PROFINET status code:
Read Submodule Record service (page 121)
Write Submodule Record service (page 126)
Read Implicit Record service (page 128)
The PROFINET status code is an unsigned 32 bit integer value that is structured into four fields as
shown in the following figure.
Figure 19: Structure of the PROFINET Status Code
The fields define a hierarchy on the error codes. The ordering is as follows:
ErrorCode,
ErrorDecode,
ErrorCode1 and
ErrorCode2.
The meaning of lower order fields depends on the values of the higher order fields.
Value 0x00000000 means no error or success.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Status codes / Error codes 228/244
7.3.1 The ErrorCode Field
This field defines the domain, in which the error occured. The following table shows the valid
values:
Value Meaning/Use Description
0x20 - 0x3F Manufacturer specific: for Log Book To be used when the application generates a log book entry.
Meaning of the values is manufacturer specific (Defined by
manufacturer of the device.)
0x81 PNIO: for all errors not covered Used for all errors not covered by the other domains
elsewhere
0xCF RTA error: used in RTA error PDUs Used in alarm error telegrams (Low Level)
0xDA AlarmAck: used in RTA data PDUs Used in alarm data telegrams (High Level)
0xDB IODConnectRes: RPC Connect Used to indicate errors occurred when handling a Connect
Response request.
0xDC IODReleaseRes: RPC Release Used to indicate errors occurred when handling a Release
Response request.
0xDD IODControlRes: RPC Control Used to indicate errors occurred when handling a Control
Response request.
0xDE IODReadRes: RPC Read Response Used to indicate errors occurred when handling a Read request.
0xDF IODWriteRes: RPC Write Response Used to indicate error occurred when handling a Write response
Table 229: Coding of PNIO Status ErrorCode (Excluding reserved Values)
7.3.2 The ErrorDecode Field
This field defines the context, under which the error occurred.
Value Meaning/Use Description
0x80 PNIORW: Application errors of the Used in the context of Read and Write services handled by either
services Read and Write the PROFINET Device stack or by the Application
0x81 PNIO: Other Services Used in context with any other services.
0x82 Manufacturer Specific: LogBook Used in context with LogBook entries generated by the stack or by
Entries the application.
Table 230: Coding of PNIO status ErrorDecode (Excluding reserved Values)
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Status codes / Error codes 229/244
7.3.3 The ErrorCode1 and ErrorCode2 Fields
The ErrorCode1 and ErrorCode2 fields finally specify the error. The meaning of the both fields
depends on the value of the ErrorDecode Field.
7.3.3.1 ErrorCode1 and ErrorCode2 for ErrorDecode = PNIORW
If the field ErrorDecode is set to the value PNIORW, the field ErrorCode2 shall be encoded user
specific and the ErrorCode1 field is split into an ErrorClass Nibble and an ErrorDecode Nibble as
shown in Table 231.
Note: As the ErrorCode2 field can be freely chosen in this case, the application may use it to
provide more detailed information about the error (e.g. why writing the record into the
module was not possible, which value of the parameter was wrong…)
ErrorClass Meaning ErrorDecode (Bit 3- 0) Description
(Bit 7 – 4)
0xA Application 0x0 Read Error
0x1 Write Error
0x2 Module Failure
0x7 Busy
0x8 Version Conflict
0x9 Feature Not Supported
0xA-0xF User Specific
0xB Access 0x0 Invalid Index
0x1 Write Length Error
0x2 Invalid Slot/Subslot
0x3 Type Conflict
0x4 Invalid Area/Api
0x5 State Conflict
0x6 Access Denied
0x7 Invalid Range
0x8 Invalid Parameter
0x9 Invalid Type
0xA Backup
0xB-0xF User specific
0xC Resource 0x0 Read Constrain Conflict
0x1 Write Constrain Conflict
0x2 Resource Busy
0x3 Resource Unavailable
0x8-0xF User specific
0xD-0xF User Specific 0x0-0xF User specific
Table 231: Coding of ErrorCode1 for ErrorDecode = PNIORW (Excluding reserved Values)
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Status codes / Error codes 230/244
7.3.4 ErrorCode1 and ErrorCode2 for ErrorDecode = PNIO
The meaning of ErrorCode1 and ErrorCode2 for ErrorDecode = PNIO is shown in the following
table. This kind of PROFINET status codes should only be used in conjunction with the AR Abort
Request Service (See end of table).
Coding of ErrorCode1 and ErrorCode 2 for ErrorDecode = PNIO:
ErrCode1 Description ErrCode2 Description / Use
0x01 Connect Parameter Error. Faulty 0x00-0x0D Error in one of the Block Parameters
ARBlockReq
0x02 Connect Parameter Error. Faulty 0x00-0x1C Error in one of the Block Parameters
IOCRBlockReq
0x03 Connect Parameter Error. Faulty 0x00-0x10 Error in one of the Block Parameters
ExpectedSubmoduleBlockReq
0x04 Connect Parameter Error. Faulty 0x00-0x0F Error in one of the Block Parameters
AlarmCRBlockReq
0x05 Connect Parameter Error. Faulty 0x00-0x08 Error in one of the Block Parameters
PrmServerBlockReq
0x06 Connect Parameter Error. Faulty 0x00-0x08 Error in one of the Block Parameters
MCRBlockReq
0x07 Connect Parameter Error. Faulty 0x00-0x04 Error in one of the Block Parameters
ARRPCBlockReq
0x08 Read Write Record Parameter Error. 0x00-0x0C Error in one of the Block Parameters
Faulty Record
0x09 Connect Parameter Error Faulty 0x00-0x05 Error in one of the Block Parameters
IRInfoBlock
0x0A Connect Parameter Error Faulty 0x00-0x05 Error in one of the Block Parameters
SRInfoBlock
0x0B Connect Parameter Error Faulty 0x00-0x05 Error in one of the Block Parameters
ARFSUBlock
0x14 IODControl Parameter Error. Faulty 0x00-0x09 Error in one of the Block Parameters
ControlBlockConnect
0x15 IODControl Parameter Error. Faulty 0x00-0x09 Error in one of the Block Parameters
ControlBlockPlug
0x16 IOXControl Parameter Error. Faulty 0x00-0x07 Error in one of the Block Parameters
ControlBlock after a connection
establishment
0x17 IOXControl Parameter Error. Faulty 0x00-0x07 Error in one of the Block Parameters
ControlBlock a plug alarm
0x18 IODControl Parameter Error Faulty 0x00-0x09 Error in one of the Block Parameters
ControlBlockPrmBegin
0x19 IODControl Parameter Error Faulty 0x00-0x07 Error in one of the Block Parameters
SubmoduleListBlock
0x28 Release Parameter Error. Faulty 0x00-0x07 Error in one of the Block Parameters
ReleaseBlock
0x32 Response Parameter Error. Faulty 0x00-0x08 Error in one of the Block Parameters
ARBlockRes
0x33 Response Parameter Error. Faulty 0x00-0x06 Error in one of the Block Parameters
IOCRBlockRes
0x34 Response Parameter Error. Faulty 0x00-0x06 Error in one of the Block Parameters
AlarmCRBlockRes
0x35 Response Parameter Error. Faulty 0x00-0x0D Error in one of the Block Parameters
ModuleDiffBlock
0x36 Response Parameter Error. Faulty 0x00-0x04 Error in one of the Block Parameters
ARRPCBlockRes
0x37 Response Parameter Error Faulty 0x00-0x05 Error in one of the Block Parameters
ARServerBlockRes
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Status codes / Error codes 231/244
ErrCode1 Description ErrCode2 Description / Use
0x3C AlarmAck Error Codes 0x00 Alarm Type Not Supported
0x01 Wrong Submodule State
0x3D CMDEV 0x00 State conflict
0x01 Resource
0x02-0xFF State machine specific
0x3E CMCTL 0x00 State conflict
0x01 Timeout
0x02 No data send
0x3F CTLDINA 0x00 No DCP active
0x01 DNS Unknown_RealStationName
0x02 DCP No_RealStationName
0x03 DCP Multiple_RealStationName
0x04 DCP No_StationName
0x05 No_IP_Addr
0x06 DCP_Set_Error
0x40 CMRPC 0x00 ArgsLength invalid
0x01 Unknown Blocks
0x02 IOCR Missing
0x03 Wrong AlarmCRBlock count
0x04 Out of AR Resources
0x05 AR UUID Unknown
0x06 State conflict
0x07 Out of Provider, Consumer or Alarm Resources
0x08 Out of memory
0x09 PDev already owned
0x0A ARset State conflict during connection
establishment
0x0B ARset Parameter conflict during connection
establishment
0x41 ALPMI 0x00 Invalid state
0x01 Wrong ACK-PDU
0x42 ALPMR 0x00 Invalid state
0x01 Wrong Notification PDU
0x43 LMPM 0x00–0xFF Ethernet Switch Errors
0x44 MAC 0x00-0xFF
0x45 RPC 0x01 CLRPC_ERR_REJECTED: EPM or Server
rejected the call.
0x02 CLRPC_ERR_FAULTED: Server had fault
while executing the call
0x03 CLRPC_ERR_TIMEOUT: EPM or Server did
not respond
0x04 CLRPC_ERR_IN_ARGS; Broadcast or maybe
“ndr_data” too large
0x05 CLRPC_ERR_OUT_ARGS: Server sent back
more than “alloc_len”
0x06 CLRPC_ERR_DECODE: Result of EPM
Lookup could not be decoded
0x07 CLRPC_ERR_PNIO_OUT_ARGS: Out-args not
“PN IO signature”, too short or inconsistent
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Status codes / Error codes 232/244
ErrCode1 Description ErrCode2 Description / Use
0x08 CLRPC_ERR_PNIO_APP_TIMEOUT: RPC call
was terminated after RPC application timeout
0x46 APMR 0x00 Invalid state
0x01 LMPM signaled an error
0x47 APMS 0x00 Invalid state
0x01 LMPM signaled an error
0x02 Timeout
0x48 CPM 0x00 Invalid state
0x49 PPM 0x00 Invalid state
0x4A DCPUCS 0x00 Invalid state
0x01 LMPM signaled an error
0x02 Timeout
0x4B DCPUCR 0x00 Invalid state
0x01 LMPM signaled an error
0x4C DCPMCS 0x00 Invalid state
0x01 LMPM signaled an error
0x4D DCPMCR 0x00 Invalid state
0x01 LMPM signaled an error
0x4E FSPM 0x00-0xFF FAL Service Protocol Machine error
0x64 CTLSM 0x00 Invalid state
0x01 CTLSM signaled error
0x65 CTLRDI 0x00 Invalid state
0x01 CTLRDI signaled an error
0x66 CTLRDR 0x00 Invalid state
0x01 CTLRDR signaled an error
0x67 CTLWRI 0x00 Invalid state
0x01 CTLWRI signaled an error
0x68 CTLWRR 0x00 Invalid State
0x01 CTLWRR signaled an error
0x69 CTLIO 0x00 Invalid state
0x01 CTLIO signaled an error
0x6A CTLSU 0x00 Invalid state
0x01 AR add provider or consumer failed
0x02 AR alarm-open failed
0x03 AR alarm-ack-send
0x04 AR alarm-send
0x05 AR alarm-ind
0x6B CTLRPC 0x00 Invalid state
0x01 CTLRPC signaled an error
0x6C CTLPBE 0x00 Invalid state
0x01 CTLPBE signaled an error
0xC8 CMSM 0x00 Invalid state
0x01 CMSM signaled an error
0xCA CMRDR 0x00 Invalid state
0x01 CMRDR signaled an error
0xCC CMWRR 0x00 Invalid state
0x01 AR is not in state Primary. (Write not allowed)
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Status codes / Error codes 233/244
ErrCode1 Description ErrCode2 Description / Use
0x02 CMWRR signaled an error
0xCD CMIO 0x00 Invalid state
0x01 CMIO signaled an error
0xCE CMSU 0x00 Invalid state
0x01 AR add provider or consumer failed
0x02 AR alarm-open failed
0x03 AR alarm-send
0x04 AR alam-ack-send
0x05 AR alarm-ind
0xD0 CMINA 0x00 Invalid state
0x01 CMINA signaled an error
0xD1 CMPBE 0x00 Invalid state
0x01 CMPBE signaled an error
0xD2 CMDMC 0x00 Invalid state
0x01 CMDMC signaled an error
0xFD Used by RTA for protocol error 0x00 Reserved
(RTA_ERR_CLS_PROTOCOL) 0x01 error within the coordination of sequence
numbers (RTA_ERR_CODE_SEQ)
0x02 instance closed (RTA_ERR_ABORT)
0x03 AR out of memory (RTA_ERR_ABORT)
0x04 AR add provider or consumer failed
(RTA_ERR_ABORT)
0x05 AR consumer DHT / WDT expired
(RTA_ERR_ABORT)
0x06 AR cmi timeout (RTA_ERR_ABORT)
0x07 AR alarm-open failed (RTA_ERR_ABORT)
0x08 AR alarm-send.cnf(-) (RTA_ERR_ABORT)
0x09 AR alarm-ack- send.cnf(-) (RTA_ERR_ABORT)
0x0A AR alarm data too long (RTA_ERR_ABORT)
0x0B AR alarm.ind(err) (RTA_ERR_ABORT)
0x0C AR rpc-client call.cnf(-) (RTA_ERR_ABORT)
0x0D AR abort.req (RTA_ERR_ABORT)
0x0E AR re-run aborts existing (RTA_ERR_ABORT)
0x0F AR release.ind received (RTA_ERR_ABORT)
0x10 AR device deactivated (RTA_ERR_ABORT)
0x11 AR removed (RTA_ERR_ABORT)
0x12 AR protocol violation (RTA_ERR_ABORT)
0x13 AR name resolution error (RTA_ERR_ABORT)
0x14 AR RPC-Bind error (RTA_ERR_ABORT)
0x15 AR RPC-Connect error (RTA_ERR_ABORT)
0x16 AR RPC-Read error (RTA_ERR_ABORT)
0x17 AR RPC-Write error (RTA_ERR_ABORT)
0x18 AR RPC-Control error (RTA_ERR_ABORT)
0x19 AR forbidden pull or plug after check.rsp and
before in- data.ind (RTA_ERR_ABORT)
0x1A AR AP removed (RTA_ERR_ABORT)
0x1B AR link down (RTA_ERR_ABORT)
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Status codes / Error codes 234/244
ErrCode1 Description ErrCode2 Description / Use
0x1C AR could not register multicast-mac address
(RTA_ERR_ABORT)
0x1D not synchronized (cannot start companion-ar)
(RTA_ERR_ABORT)
0x1E wrong topology (cannot start companion-ar)
(RTA_ERR_ABORT)
0x1F dcp, station-name changed (RTA_ERR_ABORT)
0x20 dcp, reset to factory-settings
(RTA_ERR_ABORT)
0x21 cannot start companion-AR because a 0x8ipp
submodule in the first AR... (RTA_ERR_ABORT)
0x22 no irdata record yet (RTA_ERR_ABORT)
0x23 PDEV (RTA_ERROR_ABORT)
0x24 PDEV, no port offers required speed / duplexity
(RTA_ERR_ABORT)
0x25 IP-suite [of the IOC] changed by means of DCP
set(IPParameter) or local engineering
(RTA_ERR_ABORT)
0x26 IOCARSR RDHT expired (RTA_ERROR_ABORT)
0xC9 AR removed by reason of watchdog timeout in
H H
the Application task (RTA_ERROR_ABORT)
0xCA AR removed by reason of pool underflow in the
H H
Application task (RTA_ERROR_ABORT)
0xCB AR removed by reason of unsuccessful packet
H H
sending (Queue) inside OS in the Application
task (RTA_ERROR_ABORT)
0xCC AR removed by reason of unsuccessful memory
H H
allocation in the Application task
(RTA_ERROR_ABORT)
0xFF User specific 0x00-0xFE User specific
0xFF Recommended for “User abort” without further
detail
Table 232: Coding of ErrorCode1 for ErrorDecode = PNIO (Excluding reserved Values)
7.3.5 ErrorCode1 and ErrorCode2 for ErrorDecode is Manufacturer
Specific
If ErrorDecode is set to Manufacturer Specific, the values of the fields ErrorCode1 and ErrorCode2
can be freely chosen.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Appendix 235/244
8 Appendix
8.1 List of tables
Table 1: List of revisions ..................................................................................................................................................... 4
Table 2: Availability of PROFINET IO-Controller stack V3 .................................................................................................. 6
Table 3: Structure PNM_AP_CFG_IOC_DATA_T - Basic parameters of the PROFINET IO Controller protocol stack .... 13
Table 4: Parameter ulSystemFlags ................................................................................................................................... 13
Table 5: Definition of alarm handling flags ........................................................................................................................ 14
Table 6: Bit lists for parameter usBitlistStartOffset ............................................................................................................ 16
Table 7: PNM_AP_CFG_IOD_REQ_DATA_T .................................................................................................................. 17
Table 8: Parameter bARType – Possible values ............................................................................................................... 17
Table 9: Parameter bAddressMode - possible modes of ip address resolution ............................................................... 18
Table 10: Parameter ulFlags ......................................................................................................................................... 18
Table 11: Parameter ulArProperties .......................................................................................................................... 19
Table 12: Valid values of the device handle ...................................................................................................................... 20
Table 13: AR Parameter Object - Basic parameters of an application relation (AR) ......................................................... 21
Table 14: PNM_AP_CFG_AR_PRM_IDENTIFIER_E ....................................................................................................... 21
Table 15: Structure PNM_AP_CFG_AR_PRM_ARVENDORBLOCK_T .................................................................................... 21
Table 16: Structure PNM_AP_CFG_IOCR_DATA_T............................................................................................................ 22
Table 17: Parameter usIocrHandle ............................................................................................................................... 23
Table 18: IOCR properties parameter ulIocrProp ......................................................................................................... 23
Table 19: Type parameter usIocrType .......................................................................................................................... 23
Table 20: Internally generated frame id values ................................................................................................................. 26
Table 21: Structure PNM_AP_CFG_SUBMODULE_DATA_T - Basic parameters of a submodule .................................. 27
Table 22: Values of valid submodule handles ................................................................................................................... 28
Table 23: Parameter usSubmoduleProperties ........................................................................................................... 29
Table 24: Parameter usPrmType ...................................................................................................................................... 32
Table 25: PNM_AP_CFG_RECORD_DATA_T structure .................................................................................................. 34
Table 26: PNM_AP_CFG_PRM_PDPORTDATA_CHECK_T structure - Structure description ........................................ 35
Table 27: PNM_AP_CFG_PRM_PDPORTDATA_CHECK_T structure - Parameter ulEnableFlag .................................. 35
Table 28: PNM_AP_CFG_PRM_PDPORTDATA_CHECK_T structure - Parameter usMauType .................................... 36
Table 29: PNM_AP_CFG_PRM_PDPORTDATA_CHECK_T structure - Parameter usSyncMode .................................. 36
Table 30: PNM_AP_CFG_PRM_PDPORTDATA_ADJUST_T structure - Structure description ....................................... 37
Table 31: PNM_AP_CFG_PRM_PDPORTDATA_ADJUST_T structure - Parameter ulEnableFlag ............................ 38
Table 32: PNM_AP_CFG_PRM_PDPORTDATA_ADJUST_T structure - Parameter ulPeerToPeerBoundary ........... 38
Table 33: PNM_AP_CFG_PRM_PDPORTDATA_ADJUST_T structure - Parameter ulDCPBoundary .......................... 38
Table 34: PNM_AP_CFG_PRM_PDPORTDATA_ADJUST_T structure - Parameter usMauType, usLinkState............... 39
Table 35: PNM_AP_CFG_PRM_PDINTERFACEADJUST_T - PD Interface Adjust Configuration ......................................... 40
Table 36: PNM_AP_CFG_PRM_PDINTERFACEFSUDATAADJUST_T structure - Structure description ....................... 41
Table 37: PNM_AP_CFG_PRM_PDINTERFACEFSUDATAADJUST_T structure - Parameter ulFSHelloMode........... 41
Table 38: PNM_AP_CFG_PRM_PDINTERFACEFSUDATAADJUST_T structure - Parameter ulFSHelloInterval .. 41
Table 39: PNM_AP_CFG_PRM_PDINTERFACEFSUDATAADJUST_T structure - Parameter ulFSHelloDelay ........ 42
Table 40: PNM_AP_CFG_PRM_AR_FSU_PARAMETERS_T structure - Structure description ...................................... 43
Table 41: PNM_AP_CFG_PRM_AR_FSU_PARAMETERS_T structure - Parameter ulFSParamMode.......................... 43
Table 42: PNM_AP_CFG_PRM_PDINTFMRPDATACHECK_T structure - Structure description .................................... 44
Table 43: PNM_AP_CFG_PRM_MRP_INSTANCE_DATACHECK_T structure - Structure description ........................... 44
Table 44: PNM_AP_CFG_PRM_PDINTFMRPDATACHECK_T structure - Parameter ulStructVersion ................... 44
Table 45: PNM_AP_CFG_PRM_MRP_INSTANCE_DATACHECK_T structure - Parameter ulMRP_Check ................... 45
Table 46: Structure PNM_AP_CFG_PRM_PDINTFMRPDATAADJUST_T - Structure description Parameter descriptions .... 46
Table 47: Structure PNM_AP_CFG_PRM_PDINTFMRPDATAADJUST_T - Parameter ulStructVersion ................................ 46
Table 48: Subfields of PD Interface Data Adjust Param .................................................................................................... 46
Table 49: Structure PNM_AP_CFG_PRM_MRP_V1_T - Structure description ................................................................ 47
Table 50: Structure PNM_AP_CFG_PRM_MRP_V2_T - Structure description ..................................................................... 47
Table 51: Structure PNM_AP_CFG_PRM_MRP_T - Parameter usMrpRole .......................................................................... 48
Table 52: Subfields of union PNM_AP_CFG_MRP_PARAMS_V1_T ............................................................................... 48
Table 53: Subfields of struct PNM_AP_CFG_MRP_PARAMS_V2_T ............................................................................... 48
Table 54 Structure PNM_AP_CFG_MRP_CLIENT_PARAMS_T - Structure description .................................................. 49
Table 55: Structure PNM_AP_CFG_MRP_MANAGER_PARAMS_T - Structure description ........................................... 49
Table 56: Structure PNM_AP_CFG_PRM_PDPORTMRPDATAADJUST_T - Structure description ...................................... 50
Table 57: Structure PNM_AP_CFG_PRM_PDPORTMRPDATAADJUST_T - Parameter ulStructVersion ............... 50
Table 58: PNM_AP_CFG_PRM_PDPORTFODATACHECK_T structure ......................................................................... 51
Table 59: PNM_AP_CFG_PRM_PDPORTFODATAADJUST_T structure - Structure description .................................... 52
Table 60: PNM_AP_CFG_PRM_PDPORTFODATAADJUST_T structure - Known values for fiber optic cable type ....... 52
Table 61: Known values for fiber optic type....................................................................................................................... 52
Table 62: PNM_AP_CFG_PRM_PDNCDATACHECK_T structure - Structure description ............................................... 53
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Appendix 236/244
Table 63: PNM_AP_CFG_PRM_PDNCDATACHECK_T structure - Parameter ulEnableFlag .................................... 53
Table 64: PNM_AP_CFG_PRM_IRDATA_GLOBAL_T structure - Structure description .................................................. 54
Table 65: PNM_AP_CFG_PRM_IRDATA_PORT_T structure - Structure description ...................................................... 54
Table 66: PNM_AP_CFG_PRM_IRDATA_GLOBAL_T structure - Parameter ulStructVersion ................................. 54
Table 67: Bitmask defining additional properties of IR frame set configuration ................................................................. 55
Table 68: PNM_AP_CFG_PRM_IRDATA_FRAME_T structure - Structure description ................................................... 57
Table 69: PNM_AP_CFG_PRM_IRDATA_FRAME_T structure - Parameter bFrameDetails ....................................... 58
Table 70: PNM_AP_CFG_PRM_IRDATA_PHASES_T structure - Structure description ................................................. 59
Table 71: PNM_AP_CFG_PRM_BEGIN_END_ASSIGNMENT_T structure - Structure description ................................. 59
Table 72: PNM_AP_CFG_PRM_SYNC_T structure - Structure description ..................................................................... 60
Table 73: PNM_AP_CFG_PRM_SYNC_T structure - Parameter usSyncProperties .................................................. 60
Table 74: PNM_AP_CFG_PRM_SYNC_T structure - Parameter bPtcpMasterPrio1 .................................................. 62
Table 75: PNM_AP_CFG_PRM_ISOCHRONOUSMODEDATA_T structure - Structure description ................................ 63
Table 76: PNM_AP_CFG_PRM_ISOCHRONOUSCONTROLLERDATA_T structure - Structure description .................. 65
Table 77: Structure PNM_AP_CFG_PRM_PDINTERFACE_SECURITYADJUST_T............................................................... 67
Table 78: Structure PNM_AP_CFG_PRM_PDINTERFACE_CIMSNMPADJUST_T - Parameter ulStructVersion ... 67
Table 79: Structure PNM_AP_CFG_PRM_PDINTERFACE_CIMSNMPADJUST_T - Parameter usSNMPControl ........ 67
Table 80: Structure PNM_AP_CFG_PRM_PDPORTMRPDATAADJUST_T.............................................................................. 69
Table 81: Structure PNM_AP_CFG_PRM_PDPORTMRPDATAADJUST_T - Parameter ulStructVersion ............... 69
Table 82: Packet configuration sequence ......................................................................................................................... 70
Table 83. PNM_AP_CMD_CFG_OEMPRM_REQ - Configure OEM Parameter service request ..................................... 81
Table 84: Definition of OEM parameter types ................................................................................................................... 82
Table 85: Subfields of union PNM_AP_CFG_OEMPRM_UNION_T ................................................................................. 82
Table 86: Parameter uData.tVersiona ............................................................................................................................... 83
Table 87: Parameter uData.tAlarmHandling...................................................................................................................... 83
Table 88: Parameter uData.tDeviceIdentity....................................................................................................................... 84
Table 89: Parameter uData.tInputDataMode..................................................................................................................... 84
Table 90: Parameter uData.tInputDataMode - defined input data modes ......................................................................... 84
Table 91: PNM_AP_CFG_OEMPRM_CNF_T - Configure OEM Parameter service confirmation ........................................... 85
Table 92: PNM_AP_CFG_IOC_REQ_T - Configure IO Controller service request ........................................................... 86
Table 93: PNM_AP_CFG_IOC_CNF_T - Configure IO Controller service confirmation ................................................... 86
Table 94: PNM_AP_CMD_CFG_IOC_PRM_REQ - Configure IO Controller Parameter service request ......................... 87
Table 95: Parameter bPortId ............................................................................................................................................. 88
Table 96: PNM_AP_CFG_IOC_PRM_CNF_T - Configure IO Controller Parameter service confirmation ........................... 88
Table 97: PNM_AP_CFG_IOD_REQ_T - Configure IO Device service request ............................................................... 89
Table 98: PNM_AP_CFG_IOD_CNF_T - Configure IO Device service confirmation ........................................................ 89
Table 99: PNM_AP_CFG_AR_PRM_REQ_T - Configure AR Parameters service request .............................................. 90
Table 100: PNM_AP_CFG_AR_PRM_CNF_T - Configure AR Parameters service confirmation ..................................... 90
Table 101: PNM_AP_CFG_IOCR_REQ_T - Configure IOCR service request ................................................................. 91
Table 102: PNM_AP_CFG_IOCR_CNF_T - Configure IOCR service confirmation .......................................................... 91
Table 103: PNM_AP_CFG_SUBMODULE_REQ_T - Configure Submodule service request .......................................... 92
Table 104: PNM_AP_CFG_SUBMODULE_CNF_T - Configure Submodule service confirmation ................................... 92
Table 105: PNM_AP_CFG_RECORD_REQ_T - Configure Record service request ........................................................ 93
Table 106: PNM_AP_CFG_RECORD_CNF_T - Configure Record service confirmation ................................................. 94
Table 107: PNM_AP_CFG_TOPO_REQ_T - Configure Topology service request .......................................................... 96
Table 108: PNM_AP_CFG_TOPO_CNF_T - Configure Topology service confirmation ................................................... 96
Table 109: PNM_AP_DWNL_FIN_REQ_T - Download Finished service request ............................................................. 97
Table 110: PNM_AP_DWNL_FIN_CNF_T - Download Finished service confirmation ..................................................... 98
Table 111: PNM_AP_LOAD_REMANENT_REQ_T - Load Remanent service request .................................................. 100
Table 112: PNM_AP_LOAD_REMANENT_CNF_T- Load Remanent service confirmation ............................................ 100
Table 113: Get Configuration Services ........................................................................................................................... 101
Table 114: Overview about the available get next configuration services ....................................................................... 102
Table 115: PNM_AP_CFG_GET_IOC_REQ_T - Get IO Controller servicerequest ........................................................ 103
Table 116: PNM_AP_CFG_GET_IOC_CNF_T - Get IO Controller service confirmation ................................................ 104
Table 117: PNM_AP_CFG_GET_NUM_CONFIGURED_OBJECTS_REQ_T - Get number of configurable objects service
request................................................................................................................................................................... 105
Table 118: PNM_AP_CFG_GET_NUM_CONFIGURED_OBJECTS_CNF_T - Get number of configurable objects service
confirmation ........................................................................................................................................................... 106
Table 119: PNM_AP_CFG_GET_IOD_REQ_DATA_T - Get IO Device service request ................................................ 107
Table 120: PNM_AP_CFG_GET_IOD_CNF_T - Get IO Device service confirmation .................................................... 107
Table 121: PNM_AP_CFG_GET_IOCR_REQ_T - Get IOCR service request ................................................................ 108
Table 122: PNM_AP_CFG_GET_IOCR_REQ_T - Parameter usIocrHandle ............................................................. 108
Table 123: PNM_AP_CFG_GET_IOCR_CNF_T - Get IOCR service confirmation......................................................... 108
Table 124: PNM_AP_CFG_GET_SUBMODULE_REQ_T - Get submodule service request ......................................... 109
Table 125: PNM_AP_CFG_GET_SUBMODULE_CNF_T - Get submodule service confirmation .................................. 109
Table 126: PNM_AP_CFG_GET_IOD_REQ_DATA_T - Get next IO-Device service request ........................................ 110
Table 127: PNM_AP_CFG_GET_NEXT_IOD_REQ_T Parameter usDeviceHandle .................................................. 110
Table 128: PNM_AP_CFG_GET_NEXT_IOD_CNF_T - Get next IO-Device service confirmation ................................. 111
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Appendix 237/244
Table 129: PNM_AP_CFG_GET_NEXT_IOCR_REQ_T - Get next IOCR service request ............................................ 112
Table 130: PNM_AP_CFG_GET_NEXT_IOCR_CNF_T - Get next IOCR service confirmation ..................................... 113
Table 131: PNM_AP_CFG_GET_NEXT_SUBMODULE_REQ_T- Get next Submodule service request ....................... 114
Table 132: PNM_AP_CFG_GET_NEXT_SUBMODULE_REQ_T Parameter usSubmoduleHandle ............................... 115
Table 133: PNM_AP_CFG_GET_NEXT_SUBMODULE_CNF_T - Get next Submodule service confirmation .............. 116
Table 134: PNM_AP_CFG_GET_NEXT_RECORD_REQ_T - Get next Record service request ................................... 117
Table 135: PNM_AP_CFG_GET_NEXT_RECORD_REQ_T - Parameter usDeviceHandle ....................................... 118
Table 136: PNM_AP_CFG_GET_NEXT_RECORD_REQ_T - Parameter usSubmoduleHandle ................................ 118
Table 137: 3.2.11.2 PNM_AP_CFG_GET_NEXT_RECORD_CNF_T - Get next Record service confirmation ........... 119
Table 138 Parameter tRecordData ................................................................................................................................. 120
Table 139: Read Submodule Record service .................................................................................................................. 122
Table 140. PNM_AP_READ_RECORD_SUBM_REQ_T - Read Submodule Record service request ........................... 122
Table 141: PNM_AP_READ_RECORD_SUBM_REQ_T - Parameter usSubmoduleHandle .......................................... 123
Table 142. PNM_AP_READ_RECORD_SUBM_CNF_T - Read Submodule Record service confirmation .................... 124
Table 143. PNM_AP_WRITE_RECORD_SUBM_REQ_T - Write Submodule Record service request .......................... 126
Table 144. PNM_AP_WRITE_RECORD_SUBM_CNF_T - Write Submodule Record service confirmation ................... 127
Table 145: PNM_AP_READ_IMPLICIT_RECORD_REQ_T - Read Implicit Record service request.............................. 129
Table 146: PNM_AP_READ_IMPLICIT_RECORD_CNF_T - Read Implicit Record service confirmation ..................... 131
Table 147: PNM_AP_ACK_ALARM_REQ_T - Acknowledge Alarm service request ...................................................... 133
Table 148: PNM_AP_ACK_ALARM_CNF_T - Acknowledge Alarm service confirmation ............................................... 134
Table 149: PNM_AP_DCP_SET_NAME_REQ_T - DCP Set Name service request ...................................................... 135
Table 150: PNM_AP_DCP_SET_NAME_REQ_T - Parameter usQualifier .............................................................. 136
Table 151: PNM_AP_DCP_SET_CNF_T - DCP Set Name service confirmation ........................................................... 136
Table 152: PNM_AP_DCP_SET_CNF_T - Parameter bDcpError ............................................................................... 137
Table 153: PNM_AP_DCP_SET_IP_REQ_T - DCP Set IP service request ................................................................... 138
Table 154: PNM_AP_DCP_SET_IP_REQ_T - Parameter usQualifier ..................................................................... 139
Table 155: PNM_AP_DCP_SET_IP_CNF_T - DCP Set IP service confirmation ............................................................ 140
Table 156: Allowed values of parameter bDcpError ........................................................................................................ 140
Table 157: PNM_AP_DCP_SET_SIGNAL_REQ_T - DCP Set Signal service request ................................................... 141
Table 158: PNM_AP_DCP_SET_CNF_T - DCP Set Signal service confirmation ........................................................... 142
Table 159: PNM_AP_DCP_RESET_FACTORY_SETTINGS_REQ_T - DCP Reset Factory Settings service request .. 144
Table 160: Parameter usQualifier- Defined values for DCP Reset Factory Settings ....................................................... 145
Table 161: PNM_AP_DCP_RESET_FACTORY_SETTINGS_REQ_T - DCP Reset Factory Settings service ............... 146
Table 162: Parameter bDcpError - Defined values ......................................................................................................... 146
Table 163: PNM_AP_DCP_GET_REQ_T - DCP Get service request ............................................................................ 147
Table 164: Parameter usRequestFlags ........................................................................................................................... 148
Table 165: PNM_AP_DCP_GET_CNF_T - DCP Get service confirmation ..................................................................... 150
Table 166: Parameter usValidFlags – Defined values .................................................................................................... 150
Table 167: PNM_AP_GET_LOGBOOK_REQ_T - Get Logbook Service request ........................................................... 151
Table 168: PNM_AP_GET_LOGBOOK_CNF_T - Get Logbook Service confirmation .................................................... 153
Table 169: Parameter atEntries[], ulCyclecounter, usEvent, ulAdditionalValue .............................................................. 154
Table 170: Event Parameter PNM_AP_LOGBOOK_CONFIGSTATE ............................................................................ 155
Table 171: PNM_AP_GET_ARVENDORBLOCK_RESPONSE_REQ_T - Get AR Vendor Block Response service
request................................................................................................................................................................... 156
Table 172: PNM_AP_GET_ARVENDORBLOCK_RESPONSE_CNF_T - Get AR Vendor Block Response service
confirmation ........................................................................................................................................................... 157
Table 173: PNM_AP_SET_ARSTATUS_REQ - Set AR Status service request ............................................................. 158
Table 174: PNM_AP_SET_ARSTATUS_REQ - Parameter ulStatus .............................................................................. 158
Table 175: PNM_AP_SET_ARSTATUS_CNF_T - Set AR Status service confirmation .................................................. 159
Table 176: PNM_AP_GET_ARSTATE_REQ_T request ................................................................................................. 160
Table 177: PNM_AP_GET_ARSTATE_CNF_T – Get AR State service confirmation .................................................... 160
Table 178: PNM_AP_GET_ARSTATE_CNF - Parameter abState ................................................................................. 161
Table 179: PNM_AP_CHANGE_ARSTATE_REQ – Change AR State service request ................................................. 162
Table 180: PNM_AP_CHANGE_ARSTATE_REQ - Parameter abState ......................................................................... 163
Table 181: PNM_AP_CHANGE_ARSTATE_CNF_T – Change AR State service confirmation ...................................... 163
Table 182: HIL_GET_DEVICE_INFO_CNF_T - Get User Parameter Data Request ....................................................... 166
Table 183: Device Handle for Device Access AR ........................................................................................................... 167
Table 184: Device Access AR Services .......................................................................................................................... 167
Table 185: PNM_AP_ESTABLISH_DAAR_REQ_T - Establish Device Access AR request ........................................... 170
Table 186: PNM_AP_ESTABLISH_DAAR_REQ_T - Parameter bARType .................................................................... 171
Table 187: PNM_AP_ESTABLISH_DAAR_REQ_T - Parameter ulArProperties............................................................. 171
Table 188: PNM_AP_ESTABLISH_DAAR_CNF_T - Establish Device Access AR confirmation .................................... 172
Table 189: PNM_AP_RELEASE_DAAR_REQ_T - Release Device Access AR request ................................................ 173
Table 190: Parameter ulFlags ......................................................................................................................................... 174
Table 191: PNM_AP_RELEASE_DAAR_CNF_T - Release Device Access AR confirmation ........................................ 174
Table 192: PNM_AP_RECV_ALARM_IND_T indication ................................................................................................. 176
Table 193: Parameter usAlarmType - Defined values (Receive Alarm service) .............................................................. 176
Table 194: PNM_AP_RECV_ALARM_RES_T - Receive Alarm service response ......................................................... 177
Table 195: PNM_AP_RECV_DIAGNOSIS_IND_DATA_T indication .............................................................................. 181
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Appendix 238/244
Table 196: Parameters usDeviceHandle, usSubmoduleHandle – Sources of diagnosis alarm ...................................... 181
Table 197: Parameter usAlarmType – Defined values (Receive Diagnosis service) ....................................................... 182
Table 198: Parameters usAlarmDataLen, usUSI, abAlarmData[].................................................................................... 183
Table 199: PNM_AP_RECV_DIAGNOSIS_RES_T response......................................................................................... 184
Table 200: PNM_AP_STORE_REMANENT_IND_T - Store Remanent service indicationParameter descriptions......... 185
Table 201: PNM_AP_STORE_REMANENT_RES_T - Store Remanent service response ............................................ 186
Table 202: PNM_AP_DCP_SET_IND_T - DCP request received service indication ...................................................... 188
Table 203: PNM_AP_DCP_SET_RES_T - DCP request received service response ..................................................... 189
Table 204: PNM_AP_ARSTATE_UPDATE_IND_T indication ........................................................................................ 190
Table 205: PNM_AP_ARSTATE_UPDATE_IND - Parameter abState ........................................................................... 191
Table 206: PNM_AP_ARSTATE_UPDATE_RES_T – AR State Update service response ............................................ 191
Table 207: APIOC_READ_REQ_T - Read Record service request ................................................................................ 192
Table 208: APIOC_READ_CNF_T - Read Record service confirmation ......................................................................... 194
Table 209: APIOC_WRITE_REQ_T - Write Record service request .............................................................................. 196
Table 210: APIOC_WRITE_CNF_T - Write Record service confirmation ....................................................................... 197
Table 211: APIOC_READ_IMPL_REQ_T - Read Record Implicit service request ......................................................... 200
Table 212: APIOC_READ_IMPL_CNF_T - Read Record Implicit service confirmation .................................................. 201
Table 213: HIL_GET_SLAVE_HANDLE_REQ_T - Get Slave Handle service request ................................................... 203
Table 214: HIL_GET_SLAVE_HANDLE_REQ_T - Parameter ulParam........................................................................ 204
Table 215: HIL_GET_SLAVE_HANDLE_CNF_T - Get Slave Handle service confirmation ............................................ 204
Table 216: HIL_GET_SLAVE_CONN_INFO_REQ_T - Get Slave Connection Info service request ............................... 205
Table 217: HIL_GET_SLAVE_CONN_INFO_REQ_T - Get Slave Connection Info service confirmation ....................... 207
Table 218: HIL_GET_SLAVE_CONN_INFO_REQ_T - Parameter ulStructID........................................................... 207
Table 219: HIL_GET_SLAVE_CONN_INFO_REQ_T - Structure PNM_AP_ACTIVE_SLAVE_CONNECT_INFO_T ......... 207
Table 220: HIL_GET_SLAVE_CONN_INFO_REQ_T - Structure PNM_AP_INACTIVE_SLAVE_CONNECT_INFO_T ..... 207
Table 221: Extended Status Block - Structure PNM_AP_EXTENDED_STATE_FIELD_DEFINITION .............................. 209
Table 222: Process data timing information - Structure PNM_AP_TIMEINFO_T........................................................... 209
Table 223: Process data timing information - Structure PNM_AP_IOTIMINGNFO_T .................................................... 210
Table 224: PNM_AP_DPM_OPMODE_STATUS_T structure......................................................................................... 211
Table 225 MRP parameter summary .............................................................................................................................. 214
Table 226: PROFINET IO Controller LED status ............................................................................................................ 216
Table 227: Status codes / Error codes: PROFINET IO Controller ................................................................................... 226
Table 228: Status codes / Error codes: Sockets ............................................................................................................. 226
Table 229: Coding of PNIO Status ErrorCode (Excluding reserved Values) ................................................................... 228
Table 230: Coding of PNIO status ErrorDecode (Excluding reserved Values) ................................................................ 228
Table 231: Coding of ErrorCode1 for ErrorDecode = PNIORW (Excluding reserved Values) ......................................... 229
Table 232: Coding of ErrorCode1 for ErrorDecode = PNIO (Excluding reserved Values)............................................... 234
8.2 List of figures
Figure 1: Structure of PROFINET IO Controller stack ......................................................................................................... 8
Figure 2: Controller Global/Network state ........................................................................................................................... 9
Figure 3: Controller Global/Network state (including address conflict detection)............................................................... 10
Figure 4: State of an IO-AR ............................................................................................................................................... 11
Figure 5: Structure of IO-Controller configuration.............................................................................................................. 12
Figure 6: Definition of send clock factor, reduction ratio and phase .................................................................................. 24
Figure 7: Memory mapping of IOCR data (CSDU) to DPM input/output area ................................................................... 25
Figure 8: Mapping of submodule data to IOCRs and DPM areas ..................................................................................... 30
Figure 9: Timing diagram for output data .......................................................................................................................... 71
Figure 10: Sequence when using xChannelIOWrite.......................................................................................................... 73
Figure 11: Timing diagram for input data .......................................................................................................................... 74
Figure 12: Sequence when using xChannelIORead ......................................................................................................... 76
Figure 13: Process data timing.......................................................................................................................................... 77
Figure 14: Sequence of Get Next Configuration Service ................................................................................................. 102
Figure 15: Network scan sequence ................................................................................................................................. 164
Figure 16: Device Access AR Sequence ........................................................................................................................ 168
Figure 17: MRP single ring topology ............................................................................................................................... 213
Figure 18: Ring topology with two rings .......................................................................................................................... 213
Figure 19: Structure of the PROFINET Status Code ....................................................................................................... 227
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Appendix 239/244
8.3 Legal Notes
Copyright
© Hilscher Gesellschaft für Systemautomation mbH
All rights reserved.
The images, photographs and texts in the accompanying materials (in the form of a user's manual,
operator's manual, Statement of Work document and all other document types, support texts,
documentation, etc.) are protected by German and international copyright and by international
trade and protective provisions. Without the prior written consent, you do not have permission to
duplicate them either in full or in part using technical or mechanical methods (print, photocopy or
any other method), to edit them using electronic systems or to transfer them. You are not permitted
to make changes to copyright notices, markings, trademarks or ownership declarations.
Illustrations are provided without taking the patent situation into account. Any company names and
product designations provided in this document may be brands or trademarks by the
corresponding owner and may be protected under trademark, brand or patent law. Any form of
further use shall require the express consent from the relevant owner of the rights.
Important notes
Utmost care was/is given in the preparation of the documentation at hand consisting of a user's
manual, operating manual and any other document type and accompanying texts. However, errors
cannot be ruled out. Therefore, we cannot assume any guarantee or legal responsibility for
erroneous information or liability of any kind. You are hereby made aware that descriptions found
in the user's manual, the accompanying texts and the documentation neither represent a
guarantee nor any indication on proper use as stipulated in the agreement or a promised attribute.
It cannot be ruled out that the user's manual, the accompanying texts and the documentation do
not completely match the described attributes, standards or any other data for the delivered
product. A warranty or guarantee with respect to the correctness or accuracy of the information is
not assumed.
We reserve the right to modify our products and the specifications for such as well as the
corresponding documentation in the form of a user's manual, operating manual and/or any other
document types and accompanying texts at any time and without notice without being required to
notify of said modification. Changes shall be taken into account in future manuals and do not
represent an obligation of any kind, in particular there shall be no right to have delivered
documents revised. The manual delivered with the product shall apply.
Under no circumstances shall Hilscher Gesellschaft für Systemautomation mbH be liable for direct,
indirect, ancillary or subsequent damage, or for any loss of income, which may arise after use of
the information contained herein.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Appendix 240/244
Liability disclaimer
The hardware and/or software was created and tested by Hilscher Gesellschaft für
Systemautomation mbH with utmost care and is made available as is. No warranty can be
assumed for the performance or flawlessness of the hardware and/or software under all application
conditions and scenarios and the work results achieved by the user when using the hardware
and/or software. Liability for any damage that may have occurred as a result of using the hardware
and/or software or the corresponding documents shall be limited to an event involving willful intent
or a grossly negligent violation of a fundamental contractual obligation. However, the right to assert
damages due to a violation of a fundamental contractual obligation shall be limited to contract-
typical foreseeable damage.
It is hereby expressly agreed upon in particular that any use or utilization of the hardware and/or
software in connection with
Flight control systems in aviation and aerospace;
Nuclear fission processes in nuclear power plants;
Medical devices used for life support and
Vehicle control systems used in passenger transport
shall be excluded. Use of the hardware and/or software in any of the following areas is strictly
prohibited:
For military purposes or in weaponry;
For designing, engineering, maintaining or operating nuclear systems;
In flight safety systems, aviation and flight telecommunications systems;
In life-support systems;
In systems in which any malfunction in the hardware and/or software may result in physical
injuries or fatalities.
You are hereby made aware that the hardware and/or software was not created for use in
hazardous environments, which require fail-safe control mechanisms. Use of the hardware and/or
software in this kind of environment shall be at your own risk; any liability for damage or loss due to
impermissible use shall be excluded.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Appendix 241/244
Warranty
Hilscher Gesellschaft für Systemautomation mbH hereby guarantees that the software shall run
without errors in accordance with the requirements listed in the specifications and that there were
no defects on the date of acceptance. The warranty period shall be 12 months commencing as of
the date of acceptance or purchase (with express declaration or implied, by customer's conclusive
behavior, e.g. putting into operation permanently).
The warranty obligation for equipment (hardware) we produce is 36 months, calculated as of the
date of delivery ex works. The aforementioned provisions shall not apply if longer warranty periods
are mandatory by law pursuant to Section 438 (1.2) BGB, Section 479 (1) BGB and Section 634a
(1) BGB [Bürgerliches Gesetzbuch; German Civil Code] If, despite of all due care taken, the
delivered product should have a defect, which already existed at the time of the transfer of risk, it
shall be at our discretion to either repair the product or to deliver a replacement product, subject to
timely notification of defect.
The warranty obligation shall not apply if the notification of defect is not asserted promptly, if the
purchaser or third party has tampered with the products, if the defect is the result of natural wear,
was caused by unfavorable operating conditions or is due to violations against our operating
regulations or against rules of good electrical engineering practice, or if our request to return the
defective object is not promptly complied with.
Costs of support, maintenance, customization and product care
Please be advised that any subsequent improvement shall only be free of charge if a defect is
found. Any form of technical support, maintenance and customization is not a warranty service, but
instead shall be charged extra.
Additional guarantees
Although the hardware and software was developed and tested in-depth with greatest care,
Hilscher Gesellschaft für Systemautomation mbH shall not assume any guarantee for the suitability
thereof for any purpose that was not confirmed in writing. No guarantee can be granted whereby
the hardware and software satisfies your requirements, or the use of the hardware and/or software
is uninterruptable or the hardware and/or software is fault-free.
It cannot be guaranteed that patents and/or ownership privileges have not been infringed upon or
violated or that the products are free from third-party influence. No additional guarantees or
promises shall be made as to whether the product is market current, free from deficiency in title, or
can be integrated or is usable for specific purposes, unless such guarantees or promises are
required under existing law and cannot be restricted.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Appendix 242/244
Confidentiality
The customer hereby expressly acknowledges that this document contains trade secrets,
information protected by copyright and other patent and ownership privileges as well as any related
rights of Hilscher Gesellschaft für Systemautomation mbH. The customer agrees to treat as
confidential all of the information made available to customer by Hilscher Gesellschaft für
Systemautomation mbH and rights, which were disclosed by Hilscher Gesellschaft für
Systemautomation mbH and that were made accessible as well as the terms and conditions of this
agreement itself.
The parties hereby agree to one another that the information that each party receives from the
other party respectively is and shall remain the intellectual property of said other party, unless
provided for otherwise in a contractual agreement.
The customer must not allow any third party to become knowledgeable of this expertise and shall
only provide knowledge thereof to authorized users as appropriate and necessary. Companies
associated with the customer shall not be deemed third parties. The customer must obligate
authorized users to confidentiality. The customer should only use the confidential information in
connection with the performances specified in this agreement.
The customer must not use this confidential information to his own advantage or for his own
purposes or rather to the advantage or for the purpose of a third party, nor must it be used for
commercial purposes and this confidential information must only be used to the extent provided for
in this agreement or otherwise to the extent as expressly authorized by the disclosing party in
written form. The customer has the right, subject to the obligation to confidentiality, to disclose the
terms and conditions of this agreement directly to his legal and financial consultants as would be
required for the customer's normal business operation.
Export provisions
The delivered product (including technical data) is subject to the legal export and/or import laws as
well as any associated regulations of various countries, especially such laws applicable in
Germany and in the United States. The products / hardware / software must not be exported into
such countries for which export is prohibited under US American export control laws and its
supplementary provisions. You hereby agree to strictly follow the regulations and to yourself be
responsible for observing them. You are hereby made aware that you may be required to obtain
governmental approval to export, reexport or import the product.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Appendix 243/244
8.4 Third party software licenses
lwIP IP stack
This software package uses the lwIP software for IP stack functionality. The following licensing
conditions apply for this component:
Copyright (c) 2001-2004 Swedish Institute of Computer Science.
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted
provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions
and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of
conditions and the following disclaimer in the documentation and/or other materials provided
with the distribution.
3. The name of the author may not be used to endorse or promote products derived from this
software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS AND ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023
Appendix 244/244
8.5 Contacts
Headquarters Japan
Hilscher Japan KK
Germany Tokyo, 160-0022
Hilscher Gesellschaft für Systemautomation mbH Phone: +81 (0) 3-5362-0521
Rheinstraße 15 E-mail: info@hilscher.jp
D-65795 Hattersheim Support
Phone: +49 (0) 6190 9907-0 Phone: +81 (0) 3-5362-0521
Fax: +49 (0) 6190 9907-50 E-mail: jp.support@hilscher.com
E-mail: info@hilscher.com
Support Republic of Korea
Phone: +49 (0) 6190 9907-990 Hilscher Korea Inc.
E-mail: hotline@hilscher.com 13494, Seongnam, Gyeonggi
Phone: +82 (0) 31-739-8361
Subsidiaries E-mail: info@hilscher.kr
Support
China Phone: +82 (0) 31-739-8363
Hilscher Systemautomation (Shanghai) Co. Ltd. E-mail: kr.support@hilscher.com
200010 Shanghai
Phone: +86 (0) 21-6355-5161 Austria
E-mail: info@hilscher.cn Hilscher Austria GmbH
Support 4020 Linz
Phone: +86 (0) 21-6355-5161 Phone: +43 732 931 675-0
E-mail: cn.support@hilscher.com E-mail: sales.at@hilscher.com
Support
France Phone: +43 732 931 675-0
Hilscher France S.a.r.l. E-mail: at.support@hilscher.com
69800 Saint Priest
Phone: +33 (0) 4 72 37 98 40 Switzerland
E-mail: info@hilscher.fr Hilscher Swiss GmbH
Support 4500 Solothurn
Phone: +33 (0) 4 72 37 98 40 Phone: +41 (0) 32 623 6633
E-mail: fr.support@hilscher.com E-mail: info@hilscher.ch
Support
India Phone: +41 (0) 32 623 6633
Hilscher India Pvt. Ltd. E-mail: support.swiss@hilscher.com
Pune, Delhi, Mumbai, Bangalore
Phone: +91 8888 750 777 USA
E-mail: info@hilscher.in Hilscher North America, Inc.
Support Lisle, IL 60532
Phone: +91 8108884011 Phone: +1 630-505-5301
E-mail: info@hilscher.in E-mail: info@hilscher.us
Support
Italy Phone: +1 630-505-5301
Hilscher Italia S.r.l. E-mail: us.support@hilscher.com
20090 Vimodrone (MI)
Phone: +39 02 25007068
E-mail: info@hilscher.it
Support
Phone: +39 02 25007068
E-mail: it.support@hilscher.com
PROFINET IO Controller V3.5.0 | Protocol API
DOC150403API09EN | Revision 9 | English | 2023-01 | Released | Public © Hilscher, 2015–2023