Device Configuration
Understanding EDS & XML Device Files: Configuring PLCs and Field Devices
Every time you add a drive, sensor, or I/O module to your PLC network, you need a device file. Learn what EDS, GSD, GSDML, and IODD files are, how to read them, and how they configure your fieldbus devices.
🗂️ What Are Device Description Files?
When you add a VFD, I/O module, or smart sensor to your PLC network, the engineering software needs to know: What data does this device send? What parameters can be configured? What communication settings does it support?
Device description files answer all these questions. They're standardized text or XML files provided by the device manufacturer that describe the device's communication interface. Without them, your PLC doesn't know how to talk to the device.
| File Type | Protocol | Format | Used By | | EDS | EtherNet/IP, DeviceNet | INI-style text | Allen-Bradley, ODVA devices | | GSD | PROFIBUS DP | Text (key=value) | Siemens, PROFIBUS devices | | GSDML | PROFINET | XML | Siemens, PROFINET devices | | IODD | IO-Link | XML | IO-Link sensors/actuators | | ESI | EtherCAT | XML | Beckhoff, EtherCAT devices |
📄 EDS Files: EtherNet/IP Device Description
EDS (Electronic Data Sheet) files describe devices on EtherNet/IP and DeviceNet networks. They're plain-text files with an INI-like structure:
EDS File Structure
$ EDS File for ACME VFD Model 500
$ Created: 2026-01-15
$ Vendor: ACME Drives Inc.[File]
DescText = "ACME VFD Model 500 AC Drive";
CreateDate = 01-15-2026;
CreateTime = 10:30:00;
Revision = 1.2;
[Device]
VendCode = 999; $ Vendor ID assigned by ODVA
VendName = "ACME Drives";
ProdType = 2; $ Product type: AC Drive
ProdTypeStr = "AC Drive";
ProdCode = 500;
ProdName = "VFD Model 500";
Catalog = "VFD-500-EIP";
[Device Classification]
Class1 = EtherNetIP;
[Connection Manager]
Connection1 =
04040002, $ Trigger & transport
44640405, $ Connection parameters
,Assem101, $ Input assembly (from drive)
,Assem102, $ Output assembly (to drive)
,Assem103; $ Config assembly
Understanding Assemblies
Assemblies define the I/O data layout — what bytes the PLC exchanges with the device every scan:
[Assembly]
Assem101 = $ Input Assembly: Drive → PLC
"Input Data", $ Name
, $ Path
16, $ Size in bytes
0x0004, $ Descriptor
, $ Reserved
2, $ Number of members
StatusWord, $ Member 1: Drive status (WORD)
ActualSpeed; $ Member 2: Speed feedback (REAL) Assem102 = $ Output Assembly: PLC → Drive
"Output Data",
,
8, $ Size in bytes
0x0001,
,
2,
ControlWord, $ Member 1: Drive command (WORD)
SpeedReference; $ Member 2: Speed setpoint (REAL)
How to Read This in Your PLC Code
// The EDS file tells us:
// Input assembly (101): 16 bytes
// Bytes 0-1: StatusWord (WORD)
// Bytes 4-7: ActualSpeed (REAL)
// Output assembly (102): 8 bytes
// Bytes 0-1: ControlWord (WORD)
// Bytes 4-7: SpeedReference (REAL)PROGRAM EDS_DataMapping
VAR
// These tags map to the assembly data
// In Allen-Bradley: auto-created from EDS import
// In CODESYS: manually mapped to EtherNet/IP adapter
Drive_StatusWord : WORD; // Input, bytes 0-1
Drive_ActualSpeed : REAL; // Input, bytes 4-7
Drive_ControlWord : WORD; // Output, bytes 0-1
Drive_SpeedRef : REAL; // Output, bytes 4-7
END_VAR
EDS Parameters Section
EDS files also define configurable parameters (CIP attributes) accessible via explicit messaging:
[Params]
Param1 =
0, $ Reserved
,, $ Link/size
0x0006, $ Descriptor (read/write)
0xC8, $ Data type: REAL
4, $ Data size
"Motor Rated Current", $ Parameter name
"A", $ Units
"0.1", $ Minimum value
"999.9", $ Maximum value
"12.5", $ Default value
,,; $ Reserved Param2 =
0,,,
0x0006,
0xC8,
4,
"Acceleration Time",
"s",
"0.1",
"600.0",
"10.0",
,,;
📋 GSDML Files: PROFINET Device Description
GSDML (General Station Description Markup Language) files are XML-based descriptions for PROFINET devices. They're more detailed than EDS files:
PROFINET Device Profile
1.00
Device Profile for ACME Sensor
ACME Temperature Transmitter TT-200
4-20mA Temperature Module
Reading GSDML: What Matters for Programmers
| XML Element | What It Tells You | | DeviceIdentity | Vendor ID and Device ID for hardware catalog | | ModuleInfo | What slots/modules the device supports | | SubmoduleItem / IOData | The I/O data layout — sizes, types, order | | RecordDataList | Parameters you can read/write during commissioning | | InterfaceSubmoduleItem | Network settings (IP, ports) |
🔗 IODD Files: IO-Link Smart Sensors
IODD (IO Device Description) files describe IO-Link sensors and actuators:
ACME Sensors
ProxSwitch PS-100
Distance
Measured distance in 0.1mm
Switching Point 1
1000
Hysteresis
50
🔧 Practical Workflow: Using Device Files
Step-by-Step Process
// After importing EDS and adding device to hardware config:
// The I/O tags are automatically created:// EtherNet/IP (from EDS assemblies)
Drive1_Input.StatusWord // Mapped from Assembly 101
Drive1_Input.ActualSpeed // Mapped from Assembly 101
Drive1_Output.ControlWord // Mapped to Assembly 102
Drive1_Output.SpeedRef // Mapped to Assembly 102
// PROFINET (from GSDML submodules)
TempSensor_1.Temperature // Mapped from Submodule 1, Float32
TempSensor_1.Status // Mapped from Submodule 1, UINT8
// IO-Link (from IODD process data)
ProxSwitch_1.Distance // Mapped from ProcessDataIn, UINT16
⚠️ Common Issues and Solutions
| Problem | Cause | Fix | | Device not found after EDS install | Wrong revision or file corruption | Download fresh from manufacturer | | I/O data size mismatch | Firmware version differs from EDS version | Match EDS revision to device firmware | | Parameters won't write | Device in wrong mode | Check if device needs to be in config mode | | "Module not compatible" error | GSDML for different hardware variant | Get the exact GSDML for your part number | | Communication intermittent | IP conflict or wrong subnet | Verify network settings match GSDML defaults |
Summary
| File Type | Protocol | Key Content | Where to Get It | | EDS (.eds) | EtherNet/IP | Assemblies, parameters, device identity | ODVA or manufacturer website | | GSD (.gsd) | PROFIBUS | Modules, I/O config, baud rates | Manufacturer website | | GSDML (.xml) | PROFINET | Submodules, I/O data, record parameters | Manufacturer or PI website | | IODD (.xml) | IO-Link | Process data, parameters, diagnostics | IODDfinder.com or manufacturer | | ESI (.xml) | EtherCAT | PDOs, SDOs, distributed clocks | Manufacturer website |
Device files are the Rosetta Stone of industrial communication. They translate between the device manufacturer's hardware design and your PLC's software model. Understanding their structure saves hours of commissioning time and eliminates the guesswork in I/O mapping.