TwinCAT PLC file parser using xsdata
Project description
pytwincatparser
A Python package for parsing TwinCAT PLC files (TcPOU, TcDUT, TcIO).
Description
This package provides tools to parse and work with TwinCAT PLC files. It uses xsdata to handle XML parsing. Be aware, that this is a python lib written by a beginner with help of AI assisted programming. My main work task is to design and program industrial machines, not develop python programms!
Features
- Parse TwinCAT PLC files (.TcPOU, .TcDUT, .TcIO)
- Access POU (Program Organization Units), DUT (Data Unit Types), and ITF (Interfaces)
- Extract declarations, implementations, methods, and properties
- Extract VAR Blocks
- Extract Return Values
- Extract Comments
- Generate HTML documentation for TwinCAT objects
Installation
This project uses uv as its package manager. To set up the development environment:
Windows
# Install uv if you don't have it
pip install uv
# Run the setup script
.\setup_uv.ps1
Usage
from pytwincatparser.TwincatParser import TwinCatLoader
# Initialize the loader with the path to TwinCAT files
loader = TwinCatLoader(search_path="path/to/twincat/files")
# Load all TwinCAT files
loader.load()
# Get a specific object by name
pou = loader.getItemByName("FB_Base")
# Get a method by name
method = loader.getItemByName("FB_Base._ConfigureAlarm")
# Get a property by name
property = loader.getItemByName("FB_Base.DesignationName")
# Get all loaded objects
all_objects = loader.getAllItems()
Look in the example folder!
Generating Documentation
You can generate HTML documentation for your TwinCAT objects using the generate_docs module:
from pytwincatparser.generate_docs import generate_documentation
# Generate documentation
generate_documentation(
search_path="path/to/twincat/files",
output_dir="path/to/output/directory",
templates_dir="path/to/templates" # Optional, defaults to 'templates' in the package directory
)
This will generate HTML documentation for all TwinCAT objects found in the search path. The documentation includes:
- Object details (name, type, etc.)
- Documentation comments
- Variable sections
- Methods and properties
- Implementation code
See the examples/generate_documentation.py script for a complete example.
Requirements
- Python 3.11
- lxml >= 5.3.0
- xsdata[lxml] >= 24.12
- jinja2 >= 3.1.6
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pytwincatparser-0.4.22.tar.gz.
File metadata
- Download URL: pytwincatparser-0.4.22.tar.gz
- Upload date:
- Size: 33.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
13cc5472750e4cca07620cb4683dc2930bfe71439706da0e4f6c4bb511779979
|
|
| MD5 |
1b603313db6740cc189ca3d3446f5b82
|
|
| BLAKE2b-256 |
f1266d50b040421e66a3876cf715abce3547b1f8f64ce01f50329af1a2eec3be
|
File details
Details for the file pytwincatparser-0.4.22-py3-none-any.whl.
File metadata
- Download URL: pytwincatparser-0.4.22-py3-none-any.whl
- Upload date:
- Size: 18.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
35050a57c7c89a93174cf781af808506d5d1a1d345b6e74203a312c9eb700149
|
|
| MD5 |
7f230050dadf8dc5eeb56196e2aed4f9
|
|
| BLAKE2b-256 |
b98c2f1e976d732d29df25f2f677527512edbe7ceec713b6581950a256b20475
|