Source code for PyExpLabSys.drivers.omega_cn7800
# -*- coding: utf-8 -*-
""" Omega CN7800 Modbus driver. Might also work with other CN units. Settings
on the device should be RTU and datalength 8 bit.
"""
import logging
import serial
import minimalmodbus
LOGGER = logging.getLogger(__name__)
# Make the logger follow the logging setup from the caller
# LOGGER.addHandler(logging.NullHandler())
LOGGER.addHandler(logging.StreamHandler())
[docs]class CN7800(object):
"""Driver for the omega CN7800"""
[docs] def __init__(self, port):
self.comm = minimalmodbus.Instrument("/dev/serial/by-id/" + port, 1)
self.comm.serial.baudrate = 9600
self.comm.serial.parity = serial.PARITY_EVEN
self.comm.serial.timeout = 0.5
self.temperature = -999
[docs] def read_temperature(self):
""" Read the temperature from the device """
self.temperature = self.comm.read_register(0x1000, 1)
return self.temperature
[docs] def read_setpoint(self):
""" Read the temperature setpoint """
setpoint = self.comm.read_register(0x1001, 1)
return setpoint
[docs] def write_setpoint(self, new_setpoint):
""" Write a new setpoint to the device """
self.comm.write_register(0x1001, new_setpoint, 1)
def main():
port = "usb-FTDI_USB-RS485_Cable_FT1F9WC2-if00-port0"
# port = "/dev/ttyUSB0"
omega = CN7800(port)
print("Temperature is:", omega.read_temperature())
print("Set point is:", omega.read_setpoint())
print("Temperature type is:", type(omega.read_temperature()))
print("Set point is:", omega.write_setpoint(float(30)))
print("Set point is:", omega.read_setpoint())
if __name__ == "__main__":
# Execute only if run as script
main()