Importable IODD examples
Download and import these ZIPs directly into the browser editor:
- Counter button LED — stamped XML, README, generated C mapping header and MIT/GPL licenses.
- Switching sensor — stamped XML, README, generated C mapping header and MIT/GPL licenses.
Example vendor/device IDs: Counter button LED 1234/5678; Switching sensor 1234/5679. These IDs must match the connected firmware for automatic IODD selection. Replace them with assigned production identifiers when describing your own device.
Counter, button and LED — importable IODD example
This package contains stamped iolinki_example-reference-device-20261002-IODD1.1.xml, this guide, a generated C firmware mapping header and both MIT/GPL license grants. The iolinki-authored XML templates are additionally available under MIT; this does not change the protocol stack license. Import the ZIP directly into the browser editor or another IODD importer. The examples describe the released iolinki stack applications.
The released reference-device demo produces a 16-bit counter followed by one button/state byte. Output bit 0 drives the LED; preserve the remaining output bits when changing it.
Identity and use
Vendor ID 1234 and device ID 5678 are example identifiers. Product ID: reference-device. Replace example identity with IDs assigned to your own device before production use. Importing a file does not program the device or change its firmware IDs. A connected device must expose matching identity and process-data lengths.
Parameters
This counter example has no application ISDU parameters. Standard identification records remain in the IODD.
Process data
| Direction | Field | Subindex | Bit offset | Width |
|---|---|---|---|---|
| Input | Counter | 1 | 8 | 16 |
| Input | Button | 2 | 0 | 8 |
| Output | LED | 1 | 0 | 1 |
Byte 0 is most significant. IODD offset 0 denotes the least-significant bit of the final process-data byte. Use the generated iodd_read_bits / iodd_write_bits helpers to avoid host endianness or packed-struct assumptions. Input length is 3 bytes; output length is 1 byte.
Reopen and generate
From the iolinki website source checkout:
node tools/iodd/cli.mjs import --format package --input downloads/iodd-counter.zip --output counter.project.json
node tools/iodd/cli.mjs inspect --input counter.project.json
node tools/iodd/cli.mjs validate --input counter.project.json
node tools/iodd/cli.mjs export --input counter.project.json --format xml --output counter.xml
node tools/iodd/cli.mjs header --input counter.project.json --output counter-mapping.h
The repository's firmware proof compiles and runs the released application C against generated indexes, parameter defaults and bit mappings. That provides host execution evidence; physical IO-Link communication and hardware behavior require a connected-device test. Basic model/CRC validation, official XSD validation and official checker approval are separate results. This package contains no manufacturer declaration.
Switching sensor — importable IODD example
This package contains stamped iolinki_example-switching-sensor-20261002-IODD1.1.xml, this guide, a generated C firmware mapping header and both MIT/GPL license grants. The iolinki-authored XML templates are additionally available under MIT; this does not change the protocol stack license. Import the ZIP directly into the browser editor or another IODD importer. The examples describe the released iolinki stack applications.
The released switching-sensor application returns a 16-bit measurement scaled by 100, a validity bit and a switching-output bit. Its ISDU service supplies setpoint, hysteresis, inversion and a teach command.
Identity and use
Vendor ID 1234 and device ID 5679 are example identifiers. Product ID: switching-sensor. Replace example identity with IDs assigned to your own device before production use. Importing a file does not program the device or change its firmware IDs. A connected device must expose matching identity and process-data lengths.
Parameters
| Parameter | ISDU index | Access | Default | Width |
|---|---|---|---|---|
| Switch-on threshold x100 | 256 | rw | 5000 | 16 bits |
| Hysteresis x100 | 257 | rw | 200 | 16 bits |
| Invert switching output | 258 | rw | 0 | 8 bits |
| Teach current value: write 1 | 259 | wo | Command; no default | 8 bits |
Process data
| Direction | Field | Subindex | Bit offset | Width |
|---|---|---|---|---|
| Input | Measurement x100 | 1 | 8 | 16 |
| Input | Valid | 2 | 1 | 1 |
| Input | Switching output | 3 | 0 | 1 |
Byte 0 is most significant. IODD offset 0 denotes the least-significant bit of the final process-data byte. Use the generated iodd_read_bits / iodd_write_bits helpers to avoid host endianness or packed-struct assumptions. Input length is 3 bytes; no process-data output is declared.
Reopen and generate
From the iolinki website source checkout:
node tools/iodd/cli.mjs import --format package --input downloads/iodd-switching-sensor.zip --output switching-sensor.project.json
node tools/iodd/cli.mjs inspect --input switching-sensor.project.json
node tools/iodd/cli.mjs validate --input switching-sensor.project.json
node tools/iodd/cli.mjs export --input switching-sensor.project.json --format xml --output switching-sensor.xml
node tools/iodd/cli.mjs header --input switching-sensor.project.json --output switching-sensor-mapping.h
The repository's firmware proof compiles and runs the released application C against generated indexes, parameter defaults and bit mappings. That provides host execution evidence; physical IO-Link communication and hardware behavior require a connected-device test. Basic model/CRC validation, official XSD validation and official checker approval are separate results. This package contains no manufacturer declaration.
Reproducible release files
Run node scripts/package-iodd-examples.mjs to rebuild the downloadable ZIPs and this guide from the same engine/templates used by browser, CLI and MCP. Run with --check to verify committed files byte-for-byte without writing.