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.4.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.4-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

File details

Details for the file omega_controller-0.0.4.tar.gz.

File metadata

  • Download URL: omega_controller-0.0.4.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.4.tar.gz
Algorithm Hash digest
SHA256 7cce582c4937b780800a534e9d33fa334af32b1d2c97718eb244a7c0d2f11b0f
MD5 8e27ca7803fc85ec1ed8d7b31732d26f
BLAKE2b-256 aa1069a33b8c0fc42eac89871628dbbb1db10f6886d3d20b5fa4e25b4c422c07

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for omega_controller-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 d189fabfe92fec921c9f859d5ffc4c828e1675cfceee7ab226dcec743112a07a
MD5 d165a3ba9aea5564e6f98997b454cd8f
BLAKE2b-256 4762b54e53161a3632320c87ccb892950a4ee031db33f45d8cf871c777447bf5

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