This repository is designed to collect examples of CODESYS blocks and objects that cannot be exported or imported correctly using standard mechanisms or tools like cds-text-sync.
The main goal is to build a database of "problematic" objects to help debug automation tools and understand the limitations of the CODESYS API. If an object cannot be saved as text or restored from it, it belongs here.
If you need to analyze changes in complex XML objects (Visualizations, Alarms, etc.) that are hard to read in the built-in diff viewer:
- Press CTRL + Click "Diff" in the comparison dialog.
- This saves both the IDE and Disk versions to the
.diff/folder. - Use an external tool (VS Code, WinMerge, etc.) for a more detailed comparison.
We welcome any examples of blocks that refuse to be automated. To add your example:
- Open an Issue: Use the full path and type in the title, e.g.,
Application/folder/Dynamic - failed to import/exportorwith errors. - Provide a Project Link: Include a public link to the .project file with the example in your Issue.
Please submit updates as public links to .project files when opening an issue.
I will update this project as much as possible, but I really appreciate everyone's contributions. The CODESYS environment has a vast set of tools, and it is physically impossible for me to know or use them all.
Current Environment: I am using CODESYS V3.5 SP20 Patch 1 + (32-bit). Please provide projects adapted for this version if possible. In any case, we can find a way to exchange code via Discussions.
To ensure an object is suitable for this collection, follow these steps:
- Create the object in CODESYS.
- Create a Backup (Copy) of the reference project state.
- Export it using the sync tool.
- Delete the object from the CODESYS project.
- Import it back from the exported files.
- Compare: The imported object must match the original (reference backup) exactly.
- Use the built-in comparison tool.
- For deep analysis, use the External Diff feature (
CTRL + Diff) to save files to.diff/and compare them in an external editor.
If any of these steps fail or produce differences, the object is a candidate for this repository.