pyhoff/README.md

87 lines
2.4 KiB
Markdown
Raw Normal View History

# Pyhoff
2023-06-25 17:44:56 +00:00
2025-02-17 13:57:11 +00:00
The pyhoff package allows you to read and write the most common
Beckhoff and WAGO bus terminals ("Busklemmen") using the Ethernet bus
coupler ("Busskoppler") BK9000, BK9050, BK9100, or WAGO 750_352
over Ethernet TCP/IP based on ModBus TCP.
2023-06-25 17:44:56 +00:00
2025-02-17 13:57:11 +00:00
### Key Features
- Supports a wide range of Beckhoff and WAGO analog and digital bus
terminals.
2025-02-19 16:19:39 +00:00
- Very lightweight: no dependencies; compact code base
2025-02-17 13:57:11 +00:00
- Easy to extend
- Using standardized ModBus TCP.
- Provides high-level abstractions for reading and writing data
from/to IO-terminals with minimal code
2023-06-25 17:44:56 +00:00
2025-02-17 13:57:11 +00:00
### Usage Scenarios
- Industrial test setups.
- Research automation setups.
- Data acquisition and monitoring.
2023-06-25 17:44:56 +00:00
2025-02-17 13:57:11 +00:00
## Installation
The package has no additional decencies. It can be installed with pip:
```bash
pip install pyhoff
```
## Usage
2023-06-25 17:44:56 +00:00
It is easy to use as the following example code shows:
```python
2025-02-17 13:57:11 +00:00
from pyhoff.devices import *
2023-06-25 17:44:56 +00:00
2025-02-17 13:57:11 +00:00
# connect to the BK9050 by tcp/ip on default port 502
bk = BK9050("172.16.17.1")
2023-06-25 17:44:56 +00:00
# add all bus terminals connected to the bus coupler
2025-02-17 13:57:11 +00:00
# in the order of the physical arrangement
bk.add_bus_terminals(KL2404, KL2424, KL9100, KL1104, KL3202,
KL3202, KL4002, KL9188, KL3054, KL3214,
KL4004, KL9010)
2023-06-25 17:44:56 +00:00
# Set 1. output of the first KL2404-type bus terminal to hi
bk.select(KL2404, 0).write_coil(1, True)
2023-06-25 17:44:56 +00:00
# read temperature from the 2. channel of the 2. KL3202-type
# bus terminal
t = bk.select(KL3202, 1).read_temperature(2)
2023-06-25 17:44:56 +00:00
print(f"t = {t:.1f} °C")
# Set 1. output of the 1. KL4002-type bus terminal to 4.2 V
bk.select(KL4002, 0).set_voltage(1, 4.2)
2023-06-25 17:44:56 +00:00
```
2025-02-17 13:57:11 +00:00
## Contributing
Other analog and digital IO terminals are easy to complement. Contributions are welcome!
Please open an issue or submit a pull request on GitHub.
## Developer Guide
To get started with developing the `pyhoff` package, follow these steps:
2025-06-12 12:36:17 +00:00
1. First, clone the repository to your local machine using Git:
2025-02-17 13:57:11 +00:00
```bash
git clone https://github.com/Nonannet/pyhoff.git
cd pyhoff
```
2025-06-12 12:36:17 +00:00
2. It is recommended to use a virtual environment:
2025-02-17 13:57:11 +00:00
```bash
2025-06-12 12:36:17 +00:00
python -m venv .venv
source .venv/bin/activate # On Windows/Powershell use `.\venv\Scripts\Activate.ps1`
2025-02-17 13:57:11 +00:00
```
2025-06-12 12:36:17 +00:00
3. Install pyhoff from source plus the development dependencies:
2025-02-17 13:57:11 +00:00
```bash
2025-04-12 09:35:58 +00:00
pip install -e .[dev]
2025-02-17 13:57:11 +00:00
```
2025-06-12 12:36:17 +00:00
4. Ensure that everything is set up correctly by running the tests:
2025-02-17 13:57:11 +00:00
```bash
pytest
```
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.