Skip to main content

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)
  • Errors
    • check_errors(raise_on_error=True) – checks status and PV error codes
    • Raises OmegaControllerError with 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

omega_controller-0.0.3.tar.gz (8.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

omega_controller-0.0.3-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

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

Hashes for omega_controller-0.0.3.tar.gz
Algorithm Hash digest
SHA256 0d2b10216b0f3d647ca0d05c205b4d926729e9d1a0266481360ada832b580bb8
MD5 486d7a723bcc457e15f2a755a9587849
BLAKE2b-256 7648c04e478c4ab94fbf317acbd824f78a1448be8fee1c1e72492592fc899ef0

See more details on using hashes here.

File details

Details for the file omega_controller-0.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for omega_controller-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 ad4378e4e4f721485200744af07e6600c7b6fdc24a146cbbc75b7abea9af4c0d
MD5 b7a8f284c0d8c46a9373bf54681d58af
BLAKE2b-256 829e0263bb6a1199663ef4e40edc87d0f0ae3dc00a59b2ec570a739005611bf2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page