IOL S100 Parameter Data Function Block
User Guide
Banner IOL S100 Parameter Data
This document covers the installation and use of a function block for Siemen’s TIA Portal software package.
This function block handles acyclic IO-Link commands to and from a Banner S100 IO-Link Device and allows the user to easily change the IO-Link Device Parameter Data.
Each Banner IO-Link Device Parameter Data function block is meant to be used alongside an IO-Link Master Control function block. This paper describes how to set up both blocks.
Components
Banner S100 Library v16.zal16
There are two methods for parameter data. The first is used when creating a connection to Banner’s IO-Link masters. The second set of instructions are for systems using other manufacturers’ IO-Link masters.
Banner IOL S100 Parameter Data Function Block
Open Global Library Instructions
- Open a project.
- Go to the Open Global Library option in the libraries tab in TIA Portal v16 or greater.

- Switch the “Files of type” to Compressed libraries. Go to the location of the compressed library.
- Press the Open button and the library will be uncompressed and opened.
- The library is now accessible in the libraries tab in v16 or greater.
Setup of IO-Link Device with a Banner DXMR Device
- Go to Device and Networks to configure the DXMR. Add the DXM it has yet to be added to the system.
- Add Banner IO-Link Master Info to Slot 1. This sets the DXMR for IO-Link mode.

- Open the IO-Link ISDU folder. Select the IO-Link ISDU 190/190 Byte option. Make note of the I address for Slot 10. The inputs data starts at I185 while the outputs data starts at Q185 for this example.

- Switch to the Libraries Tab. The Banner S100 Library should already be opened (See previous section if it is not).
- Expand the “Master copies” folder.
- Expand the “Optional Parameter Data” folder.
- Expand the “IOLM” folder.
- Drag the Banner_IOLM and Banner_IOLM_EL to the PLC Data Types area under your PLC.
- Open the Banner folder and drag the Banner_ISDU_Control to the “Program blocks” area.
- Also move the Banner_ISDU_In and Banner_ISDU_Out to the “PLC Data Types” area.

- Now expand the “IOL Parameter” folder.
- Move the “Banner IOL S100 Parameter”,
“Banner K100D S100 S100 Byte to DINT”,
“Banner K100D S100 S100 DINT to Byte”, and “Banner K100D S100 S100 String Convert” to the Program blocks area. - Expand the “PLC Data Types” folder.
- Move all the data types to the “PLC Data Types” area.
- Finally open the “Devices DB”.
- Move the S100 database to the “Program blocks” area.
- The database will have two items in it. The “S100 Rules” tells the Function Block how the data is organized. The “S100 IOLM1 01” is the location the data is saved into by the Function Block. This tag can/should be renamed by the user. If multiple S100 units are in the system this tag should have copies made of it. One for each S100 in the system.

- Go to PLC Tags. Create two tags. The first tag “IOLM1 ISDU In” and the second tag is “IOLM1 ISDU Out”. Use the %I and %Q values from step 3.

- Go to Program blocks. Add a new Data block if necessary (can use the device db that was imported). In this example the new data block is named “db”.
- Create a tag with the type of “Banner_IOLM”. This example uses IOLM1.

- Next add the “Banner_ISDU_Control” function block to a ladder rung. You will be prompted to make a new data block. Accept this. You now must define the input variables for this function block: ISDU_In, ISDU_Out, and IOLM. Also set which ports the Function Block will interact with by changing the Port # to True. In this example only Port 1 will be used so that is the only one set to True. Only set a Port to True is the sensor/device is present and the parameter data Function block is configured for this device.

- Link the IOLM variable to the database IOLM tag created in step 20. While ISDU_In and ISDU_Out are linked to variables created in step 18.
- Now add the “Banner IOL S100 Parameter” function block to a ladder rung. You will be prompted to make a new data block. Accept this. Type in the port number for the device, then link the “IOLM” variable to the IO-Link master variable created in step 20.
The Rules and Device need to be linked to the tags from the “S100” database pulled in during step 17.
As a last step, the Port Activate (which is part of the IOLM tag from step 19) bit is added on the same rung as the “Banner IOL Parameter” function block to ensure orderly behavior. The IO-Link Master function block will cycle through all ports, giving each connected device function block a time to operate.
- Setup of Parameter Data for a Banner DXMR is complete.
- Go to Page 11 for information on how to use the Function Block.
Setup of Banner IOL Parameter with other IO-Link Masters
Additional Component Needed
Siemens LIOLInk V7.2 Library for TIA Portal V16+ (downloadable on Siemens website)
Installation Instructions
- The Banner S100 Library will now be in the Global Library List. Expand the “Master copies” folder.
- Expand the “Optional Parameter Data” folder.
- Open IOLM folder.
- Drag the Banner_IOLM and Banner_IOLM_EL to the “PLC Data types” folder.
- Expand the “Other Mfgs” folder.
- Move the Banner_IOLM_LIOLink to the area under “Program Blocks”.
- Now expand the “IOL Parameter” folder.
- Move the “Banner IOL S100 Parameter”, “Banner K100D SD50 S100 Byte to DINT”, “Banner K100D SD50 S100 DINT to Byte”, and “Banner K100D SD50 S100 String Convert” to the Program blocks area.
- Expand the “PLC Data Types” folder.
- Move all the data types to the “PLC Data Types” area.
- Finally open the “Devices DB”.

- Move the S100 database to the “Program blocks” area.
- The database will have two items in it. The “S100 Rules” tells the Function Block how the data is organized. The “S100 IOLM1 01” is the location the data is saved into by the Function Block.
This tag can/should be renamed by the user. If multiple S100 units are in the system this tag should have copies made of it. One for each S100 in the system.
- Now we must bring the Siemens-made IO_LINK_DEVICE function block or LIOLink function block specific to your PLC into our project. This example will use IO_LINK_DEVICE (version 7.2 was used). This can be found in a Siemens IO-Link Library. See their website for more details. Once that library is retrieved and opened, drag IO_LINK_DEVICE to the Program Blocks area under your PLC.
- Go to “Devices and networks” to configure the system, as necessary. Below is an example of what a configuration might look like. This example shows 5 different IO-Link Masters connected to the same PLC.

- Go to Program blocks. Add a new Data block if necessary. In this example the new data block is named “db”.
- In the new data block, create a new tag to represent the IO-Link Master, using the data type “Banner_IOLM”. This example uses the tag name “IOLM1”. A different IO-Link Master might be called IOLM2 or IOLM3, for instance.

- Next add the “Banner_IOLM_Control” function block to an OB ladder. You will be prompted to make a new data block. You now must define the input variables for this function block. Defining an input variable for the last input, Communications Error, is optional.
The Client Access Point (CAP) varies, depending on the specific IO-Link Master used.IO-Link Master CAP Balluff (BNI PNT-508-105-Z015) 255 Comtrol (IOLMPN8P) 255 ifm (AL1102) 46080 Siemens (CM 4xIO-Link) 227 Turck (TBEN-L5-8IOL) 251 The ID Control state variable should be “true” if using an IO-Link Master from ifm; otherwise, it should be set to “false”.
All Ports that will be accessed by the Function Block set them to “true”. In this example only Port 1 will be set to “true”. Only set to “true” if sensor/device is present and the parameter data function black it configured for this device.
Link the “IOLM” input variable to the tag created in step 17.
- The ID Control true/false state is linked to an array called “ID_Array”, found in “Banner_IOLM_Control_DB”. This array contains the Hardware ID property of the PROFINET configuration.
See Appendix A for more information on how to find the correct value for your specific IOLink Master.
In the case of an IO-Link Master from ifm, each port has a different Hardware ID and each number must be entered into the correct place. The example shown in Figure 3 is of an IOLink device connected to port 6 of an ifm IO-Link Master. The ifm IO-Link Master’s port 6 Hardware ID is entered into the “ID_Array[6]” slot. This full array of different Hardware IDs, based on port used, is used when the “ID Control” variable is set to true (i.e. only when the IOLink Master is from ifm).
IO-Link Masters from other vendors use a single Hardware ID value for all ports. In this case, the Hardware ID is entered into the “ID_Array[1]” slot of the array, regardless of the port to which the device is connected. This array is ignored (but the [1] slot is still important) when the “ID Control” variable is set to false.
-
Now add the “Banner IOL S100 Parameter” function block to an OB ladder. You will be prompted to make a new data block. Type in the port number for the device, then link the “IOLM” variable to the IO-Link master variable created in step 17.
The Rules and Device need to be linked to the tags from the “Banner S100” database pulled in during step 13.
As a final step, the Port Activate bit is added on the same rung as the Banner IOL Parameter function block to ensure orderly behavior. The IO-Link Master function block will cycle through all ports, giving each connected device function block a time to operate.
- Setup of Parameter Data for IO-Link Master is complete.
- Go to the next page for information on using the Function Block.
Using the Banner IOL S100 Parameter Function Block
The Banner IOL S100 Parameter function block will automatically gather data for the IO-Link device when first powered on. Parameter data is an acyclic process and can take some time to complete. The initial read is complete when the “Initial Global Read” tag is set to “true”. This flag can be set to false to request another full global read of all parameter data for an IO-Link device. The flag is found in the tag that is part of the pulled in database from the library. The tag is in the “Data type” “Banner IOL S100 Device”. There should be one tag of “Banner IOL S100 Device” for each device in the system. Rename them as needed for the system.
The Data section in “Banner IOL S100 Device” should be expanded. Now the Index should also be expanded. Now the Index array is fully visible. Starting at index[2] each line is labeled. These labels represent the IO-Link Indices in the device. Read only indices will have a “ro” in the comment. Write only has a “wo”. Everything with neither a “ro” or a “wo” is Read Write capable.
See the image below for an example of this.
A Global Read can be started by either entering a 1 into the Command or setting the “Initial Global Read” to false. A singular Index read is started by entering the index number into Command. As an example, if “Additional Settings” should be read then entering a seven into the Command does the Read operation for that Index. The Data in the index is now updated. Expand the index to see the data.
The Write operation requires a few steps to complete. Start by expanding the Index that will be updated. For this example, “Additional Settings” will be used.
Change all the “Sub Index” values that need to be updated. This example changes Custom Intensity from 100 to 90, and Custom Flash from 15 to 20.
The Command needs to be set for the Write command to be updated. Take the index number and add 40 to it. This is the value that needs to be entered into the Command value. Here the value 47 (40 + 7) is entered and the device is updated.
The Command value will be set back to 0 after the operation is completed. When the Command is set back to 0 look at the “Communications Error” tag from the “Banner_IOLM_Control” or “Banner_ISDU_Control” database. This tells the user if the write operation was successful or not.
The S100 uses String in many of the Parameter Data Indexes. These Indexes unfortunately only support DINT data types. To allow for transfer of String data into these DINTs the String element is used. This String data is located directly under the Data tag.
Expand the String tag and you gain access to all String parameter data elements. The data is shown as an ascii string instead of a DINT number.
When one of the Strings needs to be adjusted, change the string here (String Data element). Next modify any additional items in the Index (under Data) and then set the command to write the updates. As an example if the MTC Mode Data Label needs to be changed to ‘Time2=’, start by changing String[1] to ‘Time2=’. If no additional items in Index 10 need to be changed then set Command to 50 to process the update. If other items need to be changed set those parameters in Data.Index[10] before setting Command to 50.
The previous section went through the steps of how to manually read and write the data. This section will show an example of how the update could happen when programmed. The user will need to come up with some logic that determines when the update should occur. This logic should not be able to be continuously activated.
*NOTE: Parameter Data is meant to be updated infrequently. The data is stored in EEPROM that has a limited number of writings available. Exceeding this limit can cause the IO-Link device to error out. Each Index data element has a separate counter for this. If the application requires very quick Index writes, contact Banner Engineering to discuss. Never need to worry about Reads, however.
Example Logic for S100 IO-Link Parameter Data Update
In this example, “db”.”Update IOL” represents the logic that triggers the parameter data update.
It is shown as a simple Boolean value, but the actual system logic may be more complex. Next, a normally open contact verifies that “Initial Global Read” is set to true, confirming that the system has successfully read all parameter data. If the parameter data has not been read, the update cannot proceed. An Equal comparison then checks the function block’s Command variable. If Command is already processing an operation, wait until that operation is complete before starting another. Finally, adjust the data for the required Parameter Data Index as needed. In this example, Sub-Index[1] (Custom Intensity) and Sub-Index[2] (Custom Flash Rate) are updated with the required system values. A value of 47 is sent to Command, representing Index 7 because writes are triggered by adding 40 to the Index number. The Boolean used to activate the routine is then turned off. Depending on the logic used to start this process, this may need to be handled differently. The Banner IOL S100 Parameter function block then updates the IO-Link device with the new parameters.
Appendix A IO-Link Master Hardware ID Numbers
The Hardware ID number used in “ID_Array” in the “Banner_IOLM_Control_DB” function block is not trivial to find. Each manufacturer uses the Hardware Identifier of a slightly different subcomponent as the value required for our purposes. Furthermore, the particular Hardware Identifier numbers will change based on the number of devices in your configuration. These pictures show which subcomponent’s Hardware ID is relevant to the function block.
In each case, click on the hardware device from the “Devices & Networks” view. Click on “Properties”, then click on “System Constants” to see the screen shots below.
Balluff
Use the Hardware Identifier from the “BNI_PNT-508-105-Z015_1” Hw_SubModule. Type this number into the [1] slot of the ID_Array found in the “Banner_IOLM_Control_DB” data block.
Comtrol
Use the Hardware Identifier from the “Head” Hw_SubModule. Type this number into the [1] slot of the ID_Array found in the “Banner_IOLM_Control_DB” data block.
Turck
Use the Hardware Identifier from the “Basic_1” Hw_SubModule. Type this number into the [1] slot of the ID_Array found in the “Banner_IOLM_Control_DB” data block.
Siemens
Use the Hardware Identifier from the “CM_4xIO-Link_1” Hw_SubModule. Type this number into the [1] slot of the ID_Array ID_Array found in the “Banner_IOLM_Control_DB” data block.
ifm
Use the Hardware Identifier from the port to which the IO-Link Device you wish to control is connected Hw_SubModule. Each port is a different Hardware identifier. You will need to populate the ID_Array, found in the “Banner_IOLM_Control_DB” data block, with the correct values. In the example below, port 6 on the master has a Hardware ID of “279”. Thus, the [6] entry in the ID_Array variable should be set to “279”.

Documents / Resources
![]() | IOL S100 Parameter Data Function Block |
References
- User Manualmanual.tools
