Every PROFINET device comes with a GSD file. Without it, your PLC does not know the device exists. It cannot configure modules, exchange I/O data, or read diagnostics.
GSD stands for General Station Description. In PROFINET, GSD files are written in XML format. The language used is called GSDML — General Station Description Markup Language. The file extension is .xml.
A GSDML file describes everything about a PROFINET device: who made it, what modules and submodules it supports, how much I/O data each module produces and consumes, which parameters it accepts, and what diagnostic alarms it can generate.
You get the GSDML file from the device manufacturer. You import it into your engineering tool (TIA Portal, CODESYS, ABB Automation Builder, etc.). The tool reads the file and shows you the device with all its configuration options. Without this file, the engineering tool has no way to know what the device can do.
This guide explains how GSDML files work, how to read them, how to import and use them, and how to fix common problems.
In This Guide
1. GSD vs GSDML — What Is the Difference
Both terms are used, and it can be confusing. Here is the simple answer:
| Term | Meaning | Format | Used For |
|---|---|---|---|
| GSD | General Station Description | ASCII text (.gsd, .gse, .gsg) | PROFIBUS DP devices |
| GSDML | General Station Description Markup Language | XML (.xml) | PROFINET IO devices |
PROFIBUS used plain ASCII text files with language-based extensions: .gsd for German, .gse for English, .gsg for French.
PROFINET uses XML. The file is always .xml. Multiple languages are supported inside the same file using XML language tags.
When someone says “PROFINET GSD file,” they mean a GSDML file. The terms are used interchangeably in practice.
2. GSDML File Naming Convention
GSDML files follow a standardized naming format:
GSDML-V<version>-<Vendor>-<DeviceFamily>-<Date>.xml
Example
GSDML-V2.35-Siemens-ET200SP-20230615.xml
| Part | Value | Meaning |
|---|---|---|
| GSDML | — | Identifies this as a PROFINET GSD file |
| V2.35 | Version | GSDML specification version the file follows |
| Siemens | Vendor | Manufacturer name |
| ET200SP | Device Family | Device or product family name |
| 20230615 | Date | File creation date (YYYYMMDD) |
The version and date tell you if you have the latest file. If the device firmware is updated, the manufacturer may release a new GSDML with a newer date.
⚠️ Important: Do not rename GSDML files. Some engineering tools use the filename to identify the device. If you change the name, the import may fail.
3. How GSDML Files Work in a PROFINET System
The GSDML file is used only during engineering and configuration. It is not transferred to the device or used at runtime.
Here is the workflow:
Step 1. Download the GSDML file from the device manufacturer’s website.
Step 2. Import the GSDML file into your engineering tool (TIA Portal, CODESYS, etc.).
Step 3. The tool reads the file and adds the device to its hardware catalog with all modules, parameters, and diagnostics.
Step 4. You configure the device in your project — select modules, set parameters, assign a device name and IP address.
Step 5. Download the configuration to the IO-Controller (PLC).
Step 6. At runtime, the IO-Controller uses the compiled configuration (not the GSDML file) to establish communication with the device using the PROFINET protocol (DCP for discovery, Connect/Write for startup, cyclic RT for I/O exchange).
4. GSDML File Structure Overview
A GSDML file follows the ISO 15745 profile structure. At the top level:
ISO15745Profile
├── ProfileHeader
└── ProfileBody
├── DeviceIdentity
│ ├── VendorID
│ ├── DeviceID
│ ├── InfoText
│ └── VendorName
├── DeviceFunction
│ └── Family
└── ApplicationProcess
├── DeviceAccessPointList
│ └── DeviceAccessPointItem (DAP)
│ ├── ModuleInfo
│ ├── IOConfigData
│ ├── UseableModules
│ ├── SystemDefinedSubmoduleList
│ └── Graphics
├── ModuleList
│ └── ModuleItem
│ ├── ModuleInfo
│ └── SubmoduleList
├── ValueList
├── ChannelDiagList
└── GraphicsList
5. Key XML Elements Explained
ProfileHeader
Contains metadata about the file itself: profile name, version, and the ISO 15745 reference.
DeviceIdentity
Identifies the device:
<DeviceIdentity VendorID="0x002A" DeviceID="0x0101">
<InfoText TextId="InfoText_Device"/>
<VendorName Value="Siemens AG"/>
</DeviceIdentity>
DeviceFunction
Describes the device type and family:
<DeviceFunction>
<Family MainFamily="I/O" ProductFamily="ET 200SP"/>
</DeviceFunction>
ApplicationProcess
The main section. Contains all the technical details: DAPs, modules, submodules, parameters, and diagnostics.
6. Device Identity: VendorID and DeviceID
Every PROFINET device has two identification numbers:
| Field | Size | Assigned By | Purpose |
|---|---|---|---|
| VendorID | 16-bit (0x0000–0xFFFF) | PI International | Unique per manufacturer. Assigned once when the company joins PI. |
| DeviceID | 16-bit (0x0000–0xFFFF) | Device manufacturer | Unique per device family within that vendor. Set by the manufacturer. |
The combination of VendorID + DeviceID uniquely identifies a device type worldwide.
Examples
| Vendor | VendorID | Device | DeviceID |
|---|---|---|---|
| Siemens | 0x002A | ET 200SP PN | 0x0101 |
| Phoenix Contact | 0x0113 | AXL F BK PN | 0x1001 |
| Beckhoff | 0x0120 | EK9000 | 0x6001 |
During PROFINET startup, the IO-Controller checks that the real device returns the same VendorID and DeviceID as configured in the project. If they do not match, the connection fails.
7. Device Access Point (DAP)
The DAP is the main communication interface of the device. It represents the device’s PROFINET port and its built-in (fixed) submodules.
Every GSDML file has at least one DAP. A device family file can have multiple DAPs — one for each hardware variant.
<DeviceAccessPointItem ID="DAP_1"
PNIO_Version="V2.35"
MinDeviceInterval="8"
DNS_CompatibleName="et200sp"
FixedInSlots="0"
ObjectUUID_LocalIndex="1">
<ModuleInfo>
<Name TextId="DAP_1_Name"/>
<InfoText TextId="DAP_1_Info"/>
<OrderNumber Value="6ES7 155-6AU01-0BN0"/>
</ModuleInfo>
</DeviceAccessPointItem>
Key DAP Attributes
| Attribute | Meaning |
|---|---|
MinDeviceInterval | Minimum update cycle in units of 31.25 µs. Value 8 = 250 µs minimum cycle. |
DNS_CompatibleName | Default device name used for PROFINET DCP discovery. |
FixedInSlots | Slot number where this DAP is always installed (usually slot 0). |
OrderNumber | Manufacturer article/catalog number. |
8. Modules and Submodules
PROFINET devices are organized as slots and subslots. The DAP sits in slot 0. Additional modules plug into higher slots.
ModuleItem Example
<ModuleItem ID="Module_DI8" ModuleIdentNumber="0x00000010">
<ModuleInfo>
<Name TextId="Module_DI8_Name"/>
<OrderNumber Value="6ES7 131-6BF01-0BA0"/>
</ModuleInfo>
<UseableSubmodules>
<SubmoduleItemRef SubmoduleItemTarget="Sub_DI8_Standard"/>
</UseableSubmodules>
</ModuleItem>
SubmoduleItem Example
<SubmoduleItem ID="Sub_DI8_Standard" SubmoduleIdentNumber="0x00000001">
<IOData>
<Input>
<DataItem DataType="Unsigned8" TextId="DI_Input_Data"/>
</Input>
</IOData>
</SubmoduleItem>
Module/Submodule Hierarchy
| Level | Example | Meaning |
|---|---|---|
| Slot 0 | DAP | Communication interface |
| Slot 1 | DI 8×24V | 8-channel digital input module |
| Slot 2 | DO 4×24V/2A | 4-channel digital output module |
| Slot 3 | AI 4×U/I | 4-channel analog input module |
Each slot holds one module. Each module has one or more submodules. The I/O data is defined at the submodule level.
9. I/O Data Definition
The GSDML file defines the exact size and type of cyclic I/O data for each submodule.
<IOData>
<Input>
<DataItem DataType="Unsigned16" TextId="AnalogInput_Ch1"/>
<DataItem DataType="Unsigned16" TextId="AnalogInput_Ch2"/>
</Input>
<Output>
<DataItem DataType="Unsigned16" TextId="AnalogOutput_Ch1"/>
</Output>
</IOData>
| Direction | Meaning |
|---|---|
| Input | Data from the device to the controller (e.g., sensor values) |
| Output | Data from the controller to the device (e.g., actuator commands) |
The IO-Controller uses this information to allocate the correct I/O memory for cyclic data exchange. If the GSDML declares 2 bytes of input data, the controller reserves exactly 2 bytes for that submodule.
10. Parameters and Record Data
Devices often have parameters that must be set during startup — filter times, measurement ranges, operating modes, etc. These are defined as RecordDataList items in the GSDML.
<RecordDataList>
<ParameterRecordDataItem Index="100" Length="4">
<Name TextId="FilterTime"/>
<Ref DataType="Unsigned32" ByteOffset="0"
DefaultValue="100" AllowedValues="10..5000"/>
</ParameterRecordDataItem>
</RecordDataList>
The engineering tool reads these definitions and shows the parameters with their allowed ranges, default values, and descriptions. During PROFINET startup, the IO-Controller sends the configured parameter values to the device using Record Write services.
11. Diagnostics and Alarms
The GSDML file defines which diagnostic alarms the device can generate.
<ChannelDiagList>
<ChannelDiagItem ErrorType="1">
<Name TextId="Diag_ShortCircuit"/>
</ChannelDiagItem>
<ChannelDiagItem ErrorType="2">
<Name TextId="Diag_Overload"/>
</ChannelDiagItem>
</ChannelDiagList>
When the device raises an alarm, the IO-Controller receives the ErrorType number. The engineering tool uses the GSDML to translate this number into a readable text (e.g., “Short circuit on channel 3”).
Without the GSDML, the diagnostic alarm is just a number with no meaning.
12. GSDML Versions
The GSDML specification is maintained by PI International. Each version adds new features.
| Version | Key Features Added |
|---|---|
| V2.25 | Base version widely used in legacy devices |
| V2.31 | Shared device support, media redundancy (MRP) |
| V2.33 | Fast startup, dynamic reconfiguration |
| V2.35 | Channel-related process alarms, MRP interconnection |
| V2.4 | TSN (Time-Sensitive Networking), RSI, PROFIsafe PIR |
| V2.41 | GSDML signing, ProfileProcessAutomation |
| V2.42 | CIM interface |
| V2.43 | APL (Advanced Physical Layer) device support, GSDX container |
| V2.44 | PROFIsafe 2.6MU2, SecurityClass 2 & 3, Drive and Encoder ApplicationClass |
Your engineering tool must support the GSDML version used by the file. If the file uses V2.43 but your TIA Portal version only supports up to V2.35, the import may fail or some features may be missing.
13. How to Import a GSDML File into TIA Portal
Step 1. Download the File
Get the GSDML .xml file from the device manufacturer’s website. Some vendors provide it as a ZIP archive containing the XML file plus bitmap images for the hardware catalog.
Step 2. Open TIA Portal
Open your project or create a new one.
Step 3. Install the GSD File
Go to Options → Manage general station description files (GSD).
Browse to the folder containing the GSDML file. TIA Portal will list all GSD files found.
Select the file and click Install.
Step 4. Verify in Hardware Catalog
After installation, the device appears in the Hardware Catalog under the manufacturer’s name. You can now drag it into your PROFINET network configuration.
Step 5. Configure
Select the device, add modules to slots, set parameters, assign a device name, and configure the IP address.
14. How to Import into Other Engineering Tools
| Tool | Path |
|---|---|
| CODESYS | Tools → Device Repository → Install → select the GSDML file |
| ABB Automation Builder | Hardware catalog → Import GSD → browse to file |
| Beckhoff TwinCAT | I/O Configuration → right-click → Install Device Description → select file |
| Schneider EcoStruxure | Controller → DTM Management → Add GSD → browse to file |
| Mitsubishi GX Works3 | Project → System Parameter → PROFINET → Install GSD |
The process is similar everywhere: import the file, then the device shows up in the catalog.
15. Where to Download GSDML Files
| Source | URL |
|---|---|
| Siemens | support.industry.siemens.com → search by article number |
| Phoenix Contact | phoenixcontact.com → product page → Downloads tab |
| Beckhoff | beckhoff.com → product page → Downloads |
| Wago | wago.com → product page → Downloads |
| Turck | turck.com → product page → Software/Downloads |
| PI International GSD Library | profibus.com → Products → GSD Files |
| Your TIA Portal installation | TIA Portal ships with GSD files for all Siemens devices pre-installed |
Always download the latest version from the manufacturer. Older files may not support newer firmware features.
16. The GSDX Container (New)
Starting with GSDML V2.43, PI International introduced the GSDX container. This is a signed ZIP-like package that contains:
- The GSDML XML file
- Bitmap images for the hardware catalog
- Additional attachments (documentation, certificates)
- A digital signature to verify authenticity
The GSDX container addresses a real security concern: tampered GSDML files could misconfigure devices and cause safety or operational problems. The signature lets the engineering tool verify that the file has not been modified since the manufacturer published it.
Engineering tools that support GSDX will validate the signature on import. If validation fails, the tool shows a warning.
17. Troubleshooting GSDML Problems
| Problem | Cause | Solution |
|---|---|---|
| Import fails in TIA Portal | GSDML version too new for your TIA Portal version | Update TIA Portal or ask the manufacturer for an older GSDML version |
| Device not found in catalog after import | File not installed correctly, or wrong file for this device | Reinstall the GSD file. Verify the filename matches the device. |
| “GSD file already installed” warning | An older version of the same GSDML exists | Remove the old version first, then install the new one. |
| Module not visible in configuration | The GSDML does not include that module variant | Check you have the correct GSDML version for your hardware. |
| VendorID/DeviceID mismatch at startup | Real device does not match the configured device | Verify the physical device article number matches the GSDML file. |
| Device name mismatch | Device name in the PLC project does not match the name assigned to the physical device | Use a PROFINET configurator tool (Proneta, Profinet Commander) to assign the correct name. |
| Parameters rejected by device | Parameter value out of range, or firmware does not support this parameter | Check GSDML for allowed ranges. Update device firmware if needed. |
| Bitmap images missing in catalog | ZIP archive was extracted incorrectly, or bitmaps not in the same folder | Keep the GSDML and bitmap files in the same folder during import. |
18. PROFIBUS GSD vs PROFINET GSDML Comparison
| Feature | PROFIBUS GSD | PROFINET GSDML |
|---|---|---|
| Format | ASCII text | XML |
| File extension | .gsd / .gse / .gsg | .xml |
| Language support | One file per language | Multiple languages in one file |
| Schema validation | No | Yes (XML schema validation) |
| Module description | Fixed slot model | Flexible slot/subslot model with virtual submodules |
| Device family | One file per device | One file can describe an entire device family |
| Diagnostics | Limited text-based | Structured channel diagnostics with alarm types |
| Security | None | GSDX container with digital signature (V2.43+) |
| Specification | IEC 61784-1 | IEC 61784-2, ISO 15745 |
Summary
A GSDML file is the bridge between a PROFINET device and your engineering tool. Without it, the PLC cannot configure the device, exchange I/O data, or interpret diagnostics.
The key things to remember:
- GSDML files are XML files provided by the device manufacturer
- The filename follows the pattern:
GSDML-V<version>-<Vendor>-<Device>-<Date>.xml - VendorID + DeviceID uniquely identify every PROFINET device worldwide
- The file describes modules, submodules, I/O data, parameters, and diagnostics
- Import the file into your engineering tool before configuring the device
- Always use the latest GSDML version from the manufacturer
- Do not rename the file — engineering tools depend on the standard filename
- The new GSDX container adds digital signatures for file integrity verification
