Lightweight Python driver for Omega CN-series temperature controllers using Modbus over serial
Project description
Omega Controller (Python)
Lightweight Python driver for Omega CN-series temperature controllers using Modbus over serial (via minimalmodbus).
Features
- PV/SV: get present value and set temperature setpoint
- On/Off: get and set the controller on/off
- Modes: PID, ON/OFF, MANUAL, and PID Program (Ramp/Soak)
- PID tuning: get/set P, I, D
- Program params: read/write 64-register blocks for Ramp/Soak (A/B)
- Error handling: maps Omega error/status codes and raises helpful exceptions
Install dependencies:
pip install minimalmodbus
Install this driver from via pypi:
pip install omega_controller
Quickstart
from omega_controller import OmegaController, OmegaControllerError
# Adjust port/slave as needed for your setup
ctrl = OmegaController(port="COM3", slave_address=1, baudrate=9600, parity="even", bytesize=7, stopbits=1, mode="ascii")
try:
# Optional: raise if the controller is reporting an error
ctrl.check_errors()
# Read process value (°C)
pv = ctrl.get_pv()
print("PV:", pv)
# Set temperature setpoint (°C)
ctrl.set_sv(150.0)
# Switch to PID Program (Ramp/Soak) mode
ctrl.set_control_method("program")
# Tune PID
ctrl.set_p(12.3)
ctrl.set_i(600)
ctrl.set_d(120)
except OmegaControllerError as e:
print("Controller error:", e)
finally:
ctrl.close()
API Overview
- PV/SV
get_pv(raise_on_error=False) -> Optional[float]get_sv() -> Optional[float]set_sv(temp_c: float) -> None
- Control method
get_control_method() -> Optional[int](0=PID, 1=ON/OFF, 2=MANUAL, 3=PROGRAM)set_control_method(method: int|str) -> None
- PID
get_p()/set_p()– proportional band (0.1 resolution)get_i()/set_i()– integral time (seconds)get_d()/set_d()– derivative time (seconds)
- Ramp/Soak program parameters
- Blocks: A =
0x2000–0x203F, B =0x2080–0x20BF(64 regs each) read_program_block(block)/write_program_block(block, values)read_program_param(block, offset)/write_program_param(block, offset, value)
- Blocks: A =
- Errors
check_errors(raise_on_error=True)– checks status and PV error codes- Raises
OmegaControllerErrorwith descriptive message
Serial Settings
- Some models use alternate status/PV addresses; this driver handles common variants
Compatibility
- Tested on: Omega CN7800
- Expected to work with many CN-series models using the same Modbus map
Roadmap - Contributions Welcome
- Test on additional Omega models
- Add remaining serial commands from the manual (alarms, limits, etc.)
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 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 omega_controller-0.0.3.tar.gz.
File metadata
- Download URL: omega_controller-0.0.3.tar.gz
- Upload date:
- Size: 8.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0d2b10216b0f3d647ca0d05c205b4d926729e9d1a0266481360ada832b580bb8
|
|
| MD5 |
486d7a723bcc457e15f2a755a9587849
|
|
| BLAKE2b-256 |
7648c04e478c4ab94fbf317acbd824f78a1448be8fee1c1e72492592fc899ef0
|
File details
Details for the file omega_controller-0.0.3-py3-none-any.whl.
File metadata
- Download URL: omega_controller-0.0.3-py3-none-any.whl
- Upload date:
- Size: 7.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ad4378e4e4f721485200744af07e6600c7b6fdc24a146cbbc75b7abea9af4c0d
|
|
| MD5 |
b7a8f284c0d8c46a9373bf54681d58af
|
|
| BLAKE2b-256 |
829e0263bb6a1199663ef4e40edc87d0f0ae3dc00a59b2ec570a739005611bf2
|