PROFINET GSD/GSDML Files Explained: What They Are and How to Use Them

By | April 10, 2026

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.

1. GSD vs GSDML — What Is the Difference

Both terms are used, and it can be confusing. Here is the simple answer:

TermMeaningFormatUsed For
GSDGeneral Station DescriptionASCII text (.gsd, .gse, .gsg)PROFIBUS DP devices
GSDMLGeneral Station Description Markup LanguageXML (.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
PartValueMeaning
GSDMLIdentifies this as a PROFINET GSD file
V2.35VersionGSDML specification version the file follows
SiemensVendorManufacturer name
ET200SPDevice FamilyDevice or product family name
20230615DateFile 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:

FieldSizeAssigned ByPurpose
VendorID16-bit (0x0000–0xFFFF)PI InternationalUnique per manufacturer. Assigned once when the company joins PI.
DeviceID16-bit (0x0000–0xFFFF)Device manufacturerUnique per device family within that vendor. Set by the manufacturer.

The combination of VendorID + DeviceID uniquely identifies a device type worldwide.

Examples

VendorVendorIDDeviceDeviceID
Siemens0x002AET 200SP PN0x0101
Phoenix Contact0x0113AXL F BK PN0x1001
Beckhoff0x0120EK90000x6001

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

AttributeMeaning
MinDeviceIntervalMinimum update cycle in units of 31.25 µs. Value 8 = 250 µs minimum cycle.
DNS_CompatibleNameDefault device name used for PROFINET DCP discovery.
FixedInSlotsSlot number where this DAP is always installed (usually slot 0).
OrderNumberManufacturer 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

LevelExampleMeaning
Slot 0DAPCommunication interface
Slot 1DI 8×24V8-channel digital input module
Slot 2DO 4×24V/2A4-channel digital output module
Slot 3AI 4×U/I4-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>
DirectionMeaning
InputData from the device to the controller (e.g., sensor values)
OutputData 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.

VersionKey Features Added
V2.25Base version widely used in legacy devices
V2.31Shared device support, media redundancy (MRP)
V2.33Fast startup, dynamic reconfiguration
V2.35Channel-related process alarms, MRP interconnection
V2.4TSN (Time-Sensitive Networking), RSI, PROFIsafe PIR
V2.41GSDML signing, ProfileProcessAutomation
V2.42CIM interface
V2.43APL (Advanced Physical Layer) device support, GSDX container
V2.44PROFIsafe 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

ToolPath
CODESYSTools → Device Repository → Install → select the GSDML file
ABB Automation BuilderHardware catalog → Import GSD → browse to file
Beckhoff TwinCATI/O Configuration → right-click → Install Device Description → select file
Schneider EcoStruxureController → DTM Management → Add GSD → browse to file
Mitsubishi GX Works3Project → 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

SourceURL
Siemenssupport.industry.siemens.com → search by article number
Phoenix Contactphoenixcontact.com → product page → Downloads tab
Beckhoffbeckhoff.com → product page → Downloads
Wagowago.com → product page → Downloads
Turckturck.com → product page → Software/Downloads
PI International GSD Libraryprofibus.com → Products → GSD Files
Your TIA Portal installationTIA 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

ProblemCauseSolution
Import fails in TIA PortalGSDML version too new for your TIA Portal versionUpdate TIA Portal or ask the manufacturer for an older GSDML version
Device not found in catalog after importFile not installed correctly, or wrong file for this deviceReinstall the GSD file. Verify the filename matches the device.
“GSD file already installed” warningAn older version of the same GSDML existsRemove the old version first, then install the new one.
Module not visible in configurationThe GSDML does not include that module variantCheck you have the correct GSDML version for your hardware.
VendorID/DeviceID mismatch at startupReal device does not match the configured deviceVerify the physical device article number matches the GSDML file.
Device name mismatchDevice name in the PLC project does not match the name assigned to the physical deviceUse a PROFINET configurator tool (Proneta, Profinet Commander) to assign the correct name.
Parameters rejected by deviceParameter value out of range, or firmware does not support this parameterCheck GSDML for allowed ranges. Update device firmware if needed.
Bitmap images missing in catalogZIP archive was extracted incorrectly, or bitmaps not in the same folderKeep the GSDML and bitmap files in the same folder during import.

18. PROFIBUS GSD vs PROFINET GSDML Comparison

FeaturePROFIBUS GSDPROFINET GSDML
FormatASCII textXML
File extension.gsd / .gse / .gsg.xml
Language supportOne file per languageMultiple languages in one file
Schema validationNoYes (XML schema validation)
Module descriptionFixed slot modelFlexible slot/subslot model with virtual submodules
Device familyOne file per deviceOne file can describe an entire device family
DiagnosticsLimited text-basedStructured channel diagnostics with alarm types
SecurityNoneGSDX container with digital signature (V2.43+)
SpecificationIEC 61784-1IEC 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
Author: Zakaria El Intissar

I'm an automation and industrial computing engineer with 12 years of experience in power system automation, SCADA communication protocols, and electrical protection. I build tools and write guides for Modbus, DNP3, IEC 101/103/104, and IEC 61850 on ScadaProtocols.com to help engineers decode, analyze, and troubleshoot real industrial communication systems.

Leave a Reply

Your email address will not be published. Required fields are marked *