Agile-maintained Python wrapper for the TwinCAT ADS library, based on pyads
Project description
pyads-agile
pyads-agile is a Python wrapper for the Beckhoff TwinCAT ADS library.
This distribution is maintained by Agile Automation Technologies GmbH and is
based on the excellent upstream pyads project created by Stefan Lehmann:
https://github.com/stlehmann/pyads
pyads-agile intentionally stays drop-in compatible with pyads. The public API,
module name (import pyads), and supported interpreter/OS matrix mirror upstream,
so existing applications can switch distributions without code changes.
Current validated support target is Python 3.13 (CI runs on 3.13).
Attribution
- Original project:
pyadsby Stefan Lehmann - Fork maintainer: Filippo Boido filippo.boido@agileautomation.eu (Agile Automation Technologies GmbH)
- License: MIT
- This repository keeps upstream credit and license notices as required
See ACKNOWLEDGMENTS.md for details.
Installation
Install the distribution:
pip install pyads-agile
Import stays compatible:
import pyads
Versioning
pyads-agile uses its own independent Semantic Versioning (MAJOR.MINOR.PATCH).
It does not mirror upstream pyads version numbers.
Scope
This package provides Python APIs for communicating with TwinCAT devices using:
TcAdsDll.dllon Windowsadslib.soon Linux
Agile-specific enhancements
Beyond compatibility, this fork currently focuses on improved RPC ergonomics:
-
Convenient RPC object proxies.
Connection.get_object()exposes TwinCAT function blocks as Python objects and lets you configure return and parameter types per method:TwinCAT requirement: each callable method must be annotated in PLC code with
{attribute 'TcRpcEnable'}directly above the method declaration.rpc = plc.get_object( "GVL.fbTestRemoteMethodCall", method_return_types={"m_iSimpleCall": pyads.PLCTYPE_INT}, ) result = rpc.m_iSimpleCall()
-
Multi-parameter RPC calls with native syntax. Configure method signatures once and then call methods like normal Python methods:
rpc = plc.get_object( "GVL.fbTestRemoteMethodCall", method_return_types={"m_iSum": pyads.PLCTYPE_INT}, method_parameters={"m_iSum": [pyads.PLCTYPE_INT, pyads.PLCTYPE_INT]}, ) result = rpc.m_iSum(5, 5)
You can still use low-level direct calls when needed:
result = plc.call_rpc_method( "GVL.fbTestRemoteMethodCall#m_iSimpleCall", return_type=pyads.PLCTYPE_INT, write_value=42, write_type=pyads.PLCTYPE_INT, )
Features
- connect to remote TwinCAT devices
- create routes on Linux and on remote PLCs
- support for TwinCAT 2 and TwinCAT 3
- read and write values by name or by address
- read and write DUTs (structures)
- notification callbacks
Basic usage
import pyads
plc = pyads.Connection("127.0.0.1.1.1", pyads.PORT_TC3PLC1)
plc.open()
i = plc.read_by_name("GVL.int_val")
plc.write_by_name("GVL.int_val", i)
plc.close()
Contribution Policy
This repository is maintained on a best-effort basis for internal and product needs.
At this time, we do not accept unsolicited pull requests, and we may not be able to respond to feature requests or general support issues.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
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 pyads_agile-0.1.1.tar.gz.
File metadata
- Download URL: pyads_agile-0.1.1.tar.gz
- Upload date:
- Size: 287.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a3a297836b3aebf79de4686c9faf801d380b5e1e5e4567d6949582d730264fc0
|
|
| MD5 |
3cbaeede3c24591acb2ded51f1f5a8a3
|
|
| BLAKE2b-256 |
26d014f226ee48ef1b8825abb8011eb72de31dc9e7be920f6e481e07fc660125
|
Provenance
The following attestation bundles were made for pyads_agile-0.1.1.tar.gz:
Publisher:
python-publish.yml on AgileAutomationTechnologies/pyads-agile
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyads_agile-0.1.1.tar.gz -
Subject digest:
a3a297836b3aebf79de4686c9faf801d380b5e1e5e4567d6949582d730264fc0 - Sigstore transparency entry: 1083856448
- Sigstore integration time:
-
Permalink:
AgileAutomationTechnologies/pyads-agile@24aeee2d2fcd61635e83618c53118bd8bdf85d46 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/AgileAutomationTechnologies
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@24aeee2d2fcd61635e83618c53118bd8bdf85d46 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file pyads_agile-0.1.1-py3-none-win_amd64.whl.
File metadata
- Download URL: pyads_agile-0.1.1-py3-none-win_amd64.whl
- Upload date:
- Size: 80.7 kB
- Tags: Python 3, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
55d5048bd0e674efd39988107991273a501e2fa74be23be262c6e3f18beee399
|
|
| MD5 |
ded615d3d60a58824b19af740edb9243
|
|
| BLAKE2b-256 |
459b34a393b051516147ca146f8fa14d400ac57464a036a658d1350a0a7b838f
|
Provenance
The following attestation bundles were made for pyads_agile-0.1.1-py3-none-win_amd64.whl:
Publisher:
python-publish.yml on AgileAutomationTechnologies/pyads-agile
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyads_agile-0.1.1-py3-none-win_amd64.whl -
Subject digest:
55d5048bd0e674efd39988107991273a501e2fa74be23be262c6e3f18beee399 - Sigstore transparency entry: 1083856498
- Sigstore integration time:
-
Permalink:
AgileAutomationTechnologies/pyads-agile@24aeee2d2fcd61635e83618c53118bd8bdf85d46 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/AgileAutomationTechnologies
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@24aeee2d2fcd61635e83618c53118bd8bdf85d46 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file pyads_agile-0.1.1-py3-none-win32.whl.
File metadata
- Download URL: pyads_agile-0.1.1-py3-none-win32.whl
- Upload date:
- Size: 80.7 kB
- Tags: Python 3, Windows x86
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
73746e3a6f0941714ae7ecc3684d11721ddcb1e153c7ae8acc4884d37a4ad3ec
|
|
| MD5 |
38d939f2b5f6cc933b26c09589c835d5
|
|
| BLAKE2b-256 |
bd475fff3705f5963a913f18223929eaa37ba6a29a195071a5b5c335938f7e12
|
Provenance
The following attestation bundles were made for pyads_agile-0.1.1-py3-none-win32.whl:
Publisher:
python-publish.yml on AgileAutomationTechnologies/pyads-agile
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pyads_agile-0.1.1-py3-none-win32.whl -
Subject digest:
73746e3a6f0941714ae7ecc3684d11721ddcb1e153c7ae8acc4884d37a4ad3ec - Sigstore transparency entry: 1083856535
- Sigstore integration time:
-
Permalink:
AgileAutomationTechnologies/pyads-agile@24aeee2d2fcd61635e83618c53118bd8bdf85d46 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/AgileAutomationTechnologies
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@24aeee2d2fcd61635e83618c53118bd8bdf85d46 -
Trigger Event:
workflow_dispatch
-
Statement type: