Skip to content
Dietmar Borgards edited this page Jun 28, 2026 · 4 revisions

EdsDcfNet Wiki

EdsDcfNet is a comprehensive, zero-dependency C# .NET library for reading and writing CANopen device description files according to CiA DS 306 v1.4 and CiA 311.

Wiki documentation aligned with v1.9.0 (June 2026).

NuGet Version Build Status License: MIT


What is EdsDcfNet?

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.

What's New in v1.9.0

  • Format entry pointsCanOpenFile.Eds, .Dcf, .Cpj, .Xdd, .Xdc are the canonical API
  • Write validationCanOpenWriteOptions.Validated validates models before serializing
  • CanOpenFileOptions — configurable input size limits on all read operations
  • Extended validationCanOpenFile.Validate / EnsureValid for EDS, DCF, and CPJ models
  • Legacy facade deprecationRead* / Write* / EdsToDcf overloads marked [Obsolete] (advisory)

See Migration Guide for upgrade instructions.


Key Features

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
Model Validation Validate commissioning values and OD consistency before writing
Stream & Async I/O Read/write from streams with sync and async overloads
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

Quick Navigation

Getting Started

Working with Files

Object Dictionary

Reference

Development


Five-Minute Example

using EdsDcfNet;

// 1. Read an EDS file
var eds = CanOpenFile.Eds.ReadFile("device.eds");
Console.WriteLine($"Device: {eds.DeviceInfo.ProductName}");

// 2. Convert to DCF for node 3 at 500 kbit/s
var dcf = CanOpenFile.Eds.ConvertToDcf(eds, nodeId: 3, baudrate: 500, nodeName: "SensorModule");

// 3. Save the DCF (with optional pre-write validation)
CanOpenFile.Dcf.WriteFile(dcf, "sensor_node3.dcf", CanOpenWriteOptions.Validated);

Installation

dotnet add package EdsDcfNet

Or via NuGet Package Manager: search for EdsDcfNet.


Requirements

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

License

MIT — see LICENSE

Specification

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)

Clone this wiki locally