-
-
Notifications
You must be signed in to change notification settings - Fork 1
Home
Dietmar Borgards edited this page Feb 28, 2026
·
3 revisions
EdsDcfNet is a comprehensive, zero-dependency C# .NET library for reading and writing CANopen device description files according to CiA DS 306 v1.4.
CANopen is a communication protocol for industrial automation systems. Every CANopen device is described by:
| File Type | Format | Description |
|---|---|---|
| EDS (Electronic Data Sheet) | INI | Template describing a device's communication capabilities and configurable parameters |
| DCF (Device Configuration File) | INI | Configured instance of an EDS for a specific network node (contains concrete values, node ID, baud rate) |
| CPJ (Nodelist Project) | INI | Network topology file listing all nodes in a CANopen network (CiA 306-3) |
| XDD (XML Device Description) | XML | CiA 311 XML equivalent of EDS; supports structured ApplicationProcess model |
| XDC (XML Device Configuration) | XML | CiA 311 XML equivalent of DCF; configured instance including commissioning data |
EdsDcfNet lets you read, write, create, and convert all five file formats from C# with a simple, intuitive API.
| Feature | Description |
|---|---|
| Read & Write EDS | Parse and generate Electronic Data Sheets |
| Read & Write DCF | Process and create Device Configuration Files |
| Read & Write CPJ | Parse and create Nodelist Project files |
| Read & Write XDD | CiA 311 XML Device Description (with ApplicationProcess support) |
| Read & Write XDC | CiA 311 XML Device Configuration |
| EDS → DCF/XDC Conversion | One-call conversion with node ID and baud rate |
| Type-Safe Models | Fully typed models for all CANopen objects |
| Typed ApplicationProcess | Full programmatic access to CiA 311 §6.4.5 parameters |
| Modular Devices | Bus couplers with pluggable I/O modules |
| Zero Dependencies | No external NuGet packages required |
| .NET Standard 2.0 | Runs on .NET Framework 4.6.1+, .NET Core 2.0+, Unity, Xamarin |
| CiA DS 306 v1.4 / CiA 311 v1.1 | Implemented according to the official specifications |
- Reading EDS Files
- Writing EDS Files
- Reading and Writing DCF Files
- Working with CPJ Files
- Reading and Writing XDD/XDC Files
- EDS to DCF Conversion
using EdsDcfNet;
// 1. Read an EDS file
var eds = CanOpenFile.ReadEds("device.eds");
Console.WriteLine($"Device: {eds.DeviceInfo.ProductName}");
// 2. Convert to DCF for node 3 at 500 kbit/s
var dcf = CanOpenFile.EdsToDcf(eds, nodeId: 3, baudrate: 500, nodeName: "SensorModule");
// 3. Save the DCF
CanOpenFile.WriteDcf(dcf, "sensor_node3.dcf");dotnet add package EdsDcfNet
Or via NuGet Package Manager: search for EdsDcfNet.
| Scenario | Requirement |
|---|---|
| Using the NuGet package | .NET Standard 2.0 compatible runtime (.NET Framework 4.6.1+, .NET Core 2.0+, .NET 5+, Unity, Xamarin) |
| Building from source | .NET SDK 10.0+, C# 13.0 |
MIT — see LICENSE
Based on:
- CiA DS 306 Version 1.4.0 (December 15, 2021): Electronic data sheet specification for CANopen
- CiA 311: XML device description/configuration concepts (XDD/XDC)