Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
v0.11.1 - 04.12.25
Changed
Move repo to github
v0.11.0 - 07.11.25
Added
CPX-AP: Update documentation and add examples for
cycle_timefeatureCPX-AP: Example for EHPS gripper
CPX-AP: Support the switch of variants of modules
CPX-AP: Example for IO-Link Master variant switching
Documentation: Make the channel description more comprehensive
Changed
CPX-AP:
set_channel,reset_channel, andtoggle_channelare now only available for BOOL output channelsCPX-AP: Use 10ms as default
cycle_timeCPX-AP: allow usage of
read_output_channel(s)for IO-Link modulesDocumentation: The generated system documentation now explicitly lists which output channels support set/reset/toggle (i.e., all BOOL channels).
Update minimum required python version to 3.10 - version 3.9 is end-of-life
Update dependencies to new version
Introduce
[cli]and[dev]install options
Fixed
Unit tests now cover error cases for set/reset/toggle on non-BOOL channels.
CPX-AP: fix parallism of high level function with multiple read/write commands
CPX-AP/E: IO-Link padding for uneven bytes
v0.10.0 - 15.07.25
Added
CPX-AP: add optional
cycle_timearg to spawn thread reading diagnostics
Changed
CPX-AP: datatype of argument channel in read_isda() and write_isda() from int to (list[int] and int) to pass a list of channels or a single channel which should be r/w
CPX-AP: return value of read_isda() from any to list[any] and any
update dependencies rich and setuptools to new version
Fixed
CPX-AP: De/Encode array channels and bool channels correctly
v0.9.0 - 05.05.25
Added
CPX-AP: Float interpretation for ISDU write
CPX-AP:
-mt, --modbus-timeoutcommand for cli to set explicitly a timeoutCPX-E: ISDU access for CPX-E-4IOL.
CPX-E: Optional parameter
bytelengthfor CPX-E-4IOLread/write_channel(s)functions to specify io-link device lengthCPX-E: Support modbus timeout
Modbus connection error which is raised if connection to the target device could not be established
Security policy and describe the way to responsibly submit security issues
Small composition example to illustrate a possible abstraction for more complex CPX systems
Add renovate bot
Changed
CPX-AP: ISDU type
"int"now refers to signed integers (follows naming convention of IO-Link datatypes). Use"uint"instead for unsigned integersCPX-AP: removed the reset of the modbus timeout to 100 ms after shutting down an infinite timeout connection (timeout=0)
CPX-E: increase robustness of write register commands
Logging levels for better usability of Logging functionality
Fixed
CPX-AP: Issues with IO-Link read/write ISDU
CPX-AP: make the initialization more robust against a slow apdd loading
v0.8.1 - 14.02.25
Added
System test for CPX-AP-A-4AI
Extended cli tests
Changed
moved requirements into requirements.txt
demoted logging of IO Link padding from warning to info
Performance writes for (u)int on write_channels
Fixed
fixed CPX-E value parsing for write commands (previously only True was written)
now accepts systems where the bus module is not on AP slot 1 (leftmost module)
v0.8.0 - 14.01.25
Changed
Renamed
docstodocfor compatibility with templateIncluded python version v3.9
print_system_state returns IP and MAC address as string
Reset the modbus timeout to 100 ms after shutting down an infinite timeout connection (timeout=0)
Used shared gitlab-ci template
Added
-v, --versioncommand for cli to print current versionpretty error messages for out of bound module/channel index access
Extended cli documentation and readme.md
Extended print system state test to verify address string
Fixed
cli default CPX-AP write value
v0.7.0 - 07.01.25
Fixed
Docstrings and types of CpxE4Iol
write_channel()Renaming modules manually now checks for duplicates and increments suffix if needed
Changed
Renamed
clear_channel()toreset_channel()read_module_parameter_enum_str()doesn’t raise TypeError anymore when no enums available. Instead gives Logger Info message and returns valuesprint_system_informationnow prints enum strings for parametersread_channel(s)with IO-Link now returns correct datalength according to device information and None if device information is missing
Added
write_channels()function for IO-Link mastersSimple diagnosis example
Utils files to documentation
Removed
read_output_channel()from IO-Link mastersfull_sizeparameter. CpxAp will return length of device. CpxE will return length of master
v0.6.4 - 30.10.24
Changed
Updated all dependencies
Fixed
Fixed non ascii characters in user path leading to exception
v0.6.3 - 17.10.24
Fixed
All “renaming modules” examples
Issue with ´CpxE(TYPECODE)´ containing more than two of the same module type
CPX-E-8DO
write_channel()now behaves correctly and does not reset other channels
Added
Added example code for isdu read/write
Changed
Set dependencies to static versions
v0.6.2 - 30.09.24
Fixed
Length calculation in IO-Link function
write_isdu()Amount of tries and check in isdu functions are now consistent
Fixed some Docstrings
Changed
CPX-AP ISDU access now returns only relevant and valid data. Optional parameter
data_typedefines the expected return value ofread_isdu(). Whilewrite_isdu()checks for the data_type of parameterdataand behaves accordinglyMade
CpxAp.add_module()a private function as it should not be accessed by the userSome minor code improvements
Added further explanation to
example_cpxap_digital_output.pyregarding timeoutSeveral backend changes in ap_module to clear lately ignored pylint issues
Added
Unittests for CpxAp
v0.6.1 - 22.08.24
Fixed
Parameter handling for CHAR types
v0.6.0 - 22.08.24
Added
Support for INT8 and UINT8 channels (used by vacuum valves for VTUX)
Support for AP modules with different channel types
System tests for VTUX-AS
Information on channels in system_information docu
Changed
Removed optional parameter
rawfromread_module_parameter(). Addedread_module_parameter_enum_str()instead.Removed optional parameter
outputs_onlyfromread_channel(s)(). Addedread_output_channel(s)()instead.Updated examples
Fixed
Updated ModbusException handling for ConnectionAbortedError and corresponding unittest
Corrected (U)INT16 handling and corresponding unittests
Typos in CPX-AP docu (import, instantiation)
v0.5.3 - 09.08.24
Added
Added optional parameter
rawforread_module_parameter()which returns ENUM id instead of name.
v0.5.2 - 02.08.24
Added
Checker script to read in APDDs and check if they are compatible with the library
Added type hint for ap modules property to enable autocompletion.
Added
int_to_boollist()to utils.boollist
Changed
CPX-AP now interprets apdds with utf-8 instead of ascii encoding
CpxAp.read_global_diagnosis_state()now returns dict according to “module diagnostics state” (see datasheet CPX-AP-*-EP-*)Increment pymodbus version to 3.7.0
Fixed
Updated
requestsdependency to remove missingchardeterror. Will now only raise a warning. Can be fixed by manually installingchardet
v0.5.1 - 21.06.24
Fixed
CPX-AP: Limited the modbus timeout to a minimum 100 ms. Values lower that that could lead to exclusion from the system.
Added
boollist_to_int convenience function
CLI: cpx_ap read/write channel functionality
CPX-AP: Outdated and not-supported module firmware will now raise RuntimeError with suggestion to update firmware.
Changed
CPX-AP: Changed default apdd and docu path “appauthor” to Festo
CPX-AP: Added diagnosis example
Fixed
ApModule: write_channel bug causing other channels to be resetted for some module types.
Removed
Removed
chardetdependency
v0.5.0 - 17.06.24
Added
Diagnosis for CpxAp and ApModule. This includes a ModuleInformation dataclass and builder as well as some new functions
CpxAp: Read the global diagnosis state from the cpx-ap system with
CpxAp.read_global_diagnosis_state()CpxAp: Read the count of active diagnosis from the cpx-ap system with
CpxAp.read_active_diagnosis_count()CpxAp: Read the module index with the latest diagnosis from the cpx-ap system with
CpxAp.read_latest_diagnosis_index()CpxAp: Read the latest diagnosis code from the cpx-ap system with
CpxAp.read_latest_diagnosis_code()CpxAp: Added INT16 and UINT16 support for MPA modules in read/write functions, expanded system tests
ApModule: Read the diagnosis code from the module with
ApModule.read_diagnosis_code()ApModule: Read the diagnosis information from the module with
ApModule.read_diagnosis_information()
v0.4.2 - 29.05.24
Changed
Updated links to public repo
v0.4.1 - 29.05.24
Changed
improved ap_module
read_channels()/write_channels()functionsimproved unittests for ap_module
Fixed
fixed bug in ap_module
_check_instances()that lead to incorrect behaviour when no instances where specified
v0.4.0 - 23.05.24
Changed
This release will drastically change the usability of all AP components. Modules are now autogenerated in the runtime. The documentation will only be available on the user device. There is a very useful
CpxAp.print_system_information()function that will give you all the details about your system.Exchanged individual
configure_...functions to genericread_module_parameter()/write_module_parameter()Exchanged parameter mapping with read out information from ap system
CPX-AP-*-EP:
read_parameters()renamed toread_system_parameters()
Added
Documentation for usage in README
Documentation will now be generated on user device
ap_module_builder that configures a generic_ap_module by its apdd
Added gitlab release job
Fixed
TypeError message in
write_channel()doesn’t raise AttributeError anymoreIndexError output on digital functions
set_channel()/clear_channel()/toggle_channel()now show correct string
v0.3.0 - 02.04.24
Added
Added VABA (electric interface for VTSA valve terminal)
CLI command
parameter(options--listand--meta) showing parameter meta datachannel_range_check in helpers, now raises IndexError instead of ValueError
VMPAL Valve Terminal for CPX-AP
VAEM Valve Terminal for CPX-AP
Enums for configure functions
Systemtests for VABX
Examples for cyclic access with threading
CpxBase: read_device_info
CpxApEp: read_diagnostic_status reads Diagnostics for each module
Unittests for CpxBase
More examples
Changed
Determine parameter ids based on .csv.
configure functions don’t accept strings anymore. Instead use enums from cpx_ap/e_enums
Moved read_diagnostics_status from CpxApEp to CpxAp
Renamed ApParameter to ParameterMapItem,
Renamed ApParameters to ModuleParameters
ap4iol: code optimization
CpxE: functions renamed to read_status, read_fault_detection
CpxBase: now initializes with self.base=None instead of no self.base at all
CpxAp: Parameter read/write now utilizes multi-register access
CpxAp4Iol: read_channel now takes “full_size” parameter. Default is now to return the length from the device information (returns only relevant bytes)
CpxApEP: deleted write_parameters(), added configure_monitoring_load_supply() instead
Pybodmus Error now raises “ConnectionAbortedError” instead of “ValueError”
IO-Link modules now read and write bytes objects
Deleted obsolete cpx-e “read_module_count” function
Fixed
4DI4DO and 12DI4DO modules toggle channel now working as expected
AP Parameter length register is now interpreted correctly as “in bytes”
Removed unnecessary validation check in write_parameter_raw
Many logger.info strings in modules
Docstring in e4aoui configure_channel_range
ip-address octetts now in correct order
Project URLs in pyproject.toml
v0.2.0 - 26.01.24
Added
Added content to README.md
Added module functions CPX-E/AP
Handling of naming for more modules of one type (CPX-E and -AP)
Added warning if cpx-e-ep module is added multiple times
Added vabx module for vtux access
ISDU Access for CPX-AP-4IOL
Added CPX-AP-A modules
Implemented CPX-E-1CI module
Unittests for cpxe and cpxap modules
CpxE and CpxAP: Added
__repr__functionCpxE: Added property setter / getter for more modules.
CpxE: Added access-by-name for modules of CpxE.
CpxE: Added construction from typecode.
CpxE: Added property setter for modules.
CpxE8Do: Added access-by-index-operator to channels
CpxE: Added CLI for writing and reading values.
Changed
Removed timeout and port from CPX-base, implemented timeout for CPX-AP
changed return value of read function number to int
Added context manager functionality to cpx base class. Adapted examples to use this context manager.
Updated modules list so each module can be adressed via the base class
Fixed
General Bugfixes
v0.1.1 - 20.10.23
Added
Added deployment to artifactory.
Fixed
Fixed CI stages for unit test and linting.
v0.1.0 - 17.10.23
Initial release