- refactored

git-svn-id: http://moon:8086/svn/projects/HendiControl@380 fda53097-d464-4ada-af97-ba876c37ca34
This commit is contained in:
2020-04-20 15:50:25 +00:00
parent ec85ab3c73
commit 16b77f0a17
9 changed files with 38 additions and 25 deletions
+1 -1
View File
@@ -17,7 +17,7 @@ class AStirrer(abc.ABC):
self.isOn = 1 self.isOn = 1
def log(self, s): def log(self, s):
d = {'user': self.name()} d = {'user': "Stirrer" + "::" + self.name()}
logging.info ("{}".format(s), extra=d) logging.info ("{}".format(s), extra=d)
def process(self): def process(self):
+1 -1
View File
@@ -4,7 +4,7 @@ import logging
class ATemperatureSensor(abc.ABC): class ATemperatureSensor(abc.ABC):
def log(self, s): def log(self, s):
d = {'user': self.name()} d = {'user': "TemperatureSensor" + "::" + self.name()}
logging.info ("{}".format(s), extra=d) logging.info ("{}".format(s), extra=d)
@abc.abstractmethod @abc.abstractmethod
+8 -3
View File
@@ -43,6 +43,7 @@ class HendiCtrl():
self.sw_ver = self.getSoftwareVersion() self.sw_ver = self.getSoftwareVersion()
self.log("Create {}, Version {}".format(self.sw_id, self.sw_ver)) self.log("Create {}, Version {}".format(self.sw_id, self.sw_ver))
def toDigits(self, power_watts): def toDigits(self, power_watts):
return np.polyval(self.poly_w2d, float(power_watts)) return np.polyval(self.poly_w2d, float(power_watts))
@@ -99,7 +100,7 @@ class HendiCtrl():
def __read(self): def __read(self):
# Read line echo # Read line echo
self.ser.readline() echo = self.ser.readline()
# Read answer line # Read answer line
answer = self.ser.readline().decode('utf-8').replace('\r', '').replace('\n', '') answer = self.ser.readline().decode('utf-8').replace('\r', '').replace('\n', '')
@@ -116,7 +117,7 @@ class HendiCtrl():
if "OK" not in rsp[0]: if "OK" not in rsp[0]:
raise Exception(rsp[1]) raise Exception(rsp[1])
return rsp[1] == '1' return rsp[1]
def getCapabilties(self): def getCapabilties(self):
return self.caps return self.caps
@@ -178,6 +179,10 @@ class HendiCtrl():
if __name__ == '__main__': if __name__ == '__main__':
logging.getLogger().setLevel(logging.INFO)
FORMAT = '%(asctime)-15s %(user)-8s %(message)s'
logging.basicConfig(format=FORMAT)
hendi = HendiCtrl('/dev/ttyUSB0', 115200) hendi = HendiCtrl('/dev/ttyUSB0', 115200)
# hendi.firmware_update("HendiCtrl.srec") # hendi.firmware_update("HendiCtrl.srec")
@@ -199,7 +204,7 @@ if __name__ == '__main__':
print ("Test Hendi") print ("Test Hendi")
hendi.remoteEnable(True) hendi.remoteEnable(True)
hendi.setSwitch(1) hendi.setSwitch(1)
time.sleep(10.0) time.sleep(1.0)
for pwr in range(500, 3600, 100): for pwr in range(500, 3600, 100):
hendi.setPowerWatts(pwr) hendi.setPowerWatts(pwr)
pw = hendi.getPowerWatts() pw = hendi.getPowerWatts()
+2 -2
View File
@@ -3,12 +3,12 @@ import json
from aplant import APlant from aplant import APlant
from math import sqrt from math import sqrt
from hendiCtrl import HendiCtrl from hendiCtrl import HendiCtrl
from max31865 import Max31865 from tempSensor_max31865 import TempSensor_max31865 as TempSensor
class Plant(APlant): class Plant(APlant):
def __init__(self, params): def __init__(self, params):
self.heater = HendiCtrl('/dev/ttyUSB0', 115200) self.heater = HendiCtrl('/dev/ttyUSB0', 115200)
self.tempsensor = Max31865() self.tempsensor = TempSensor()
self.P = 0 self.P = 0
self.isOn = False self.isOn = False
self.cycleTime = 30 self.cycleTime = 30
+2 -2
View File
@@ -6,7 +6,7 @@ import serial
class Stirrer_pololu1376(AStirrer): class Stirrer_pololu1376(AStirrer):
def name(self): def name(self):
return "Stirrer_pololu1376" return "Pololu1376"
def __init__(self, params): def __init__(self, params):
super(Stirrer_pololu1376, self).__init__(params["dt"]) super(Stirrer_pololu1376, self).__init__(params["dt"])
@@ -24,7 +24,7 @@ class Stirrer_pololu1376(AStirrer):
self.ser_send('V') self.ser_send('V')
self.ser_recv() self.ser_recv()
self.log("Create Pololu1376") self.log("Created")
def ser_send(self, cmd): def ser_send(self, cmd):
self.ser.write((cmd + '\r\n').encode()) self.ser.write((cmd + '\r\n').encode())
+2 -1
View File
@@ -3,11 +3,12 @@ import time
class Stirrer_sim(AStirrer): class Stirrer_sim(AStirrer):
def name(self): def name(self):
return "Stirrer_sim" return "FakeStirrer"
def __init__(self, params): def __init__(self, params):
super(Stirrer_sim, self).__init__(params['dt']) super(Stirrer_sim, self).__init__(params['dt'])
self.isMasterOn = 0 self.isMasterOn = 0
self.log("Created")
def __del__(self): def __del__(self):
self.deactivate() self.deactivate()
+8 -4
View File
@@ -5,9 +5,10 @@ import numpy as np
from matplotlib.pyplot import figure, clf, plot, xlabel, ylabel, xlim, ylim, title, grid, axes, show, subplot from matplotlib.pyplot import figure, clf, plot, xlabel, ylabel, xlim, ylim, title, grid, axes, show, subplot
import signal import signal
import threading import threading
import logging
#from tempSensorSim import TempSensorSim from tempSensorSim import TempSensorSim as TempSensor
from max31865 import Max31865 #from tempSensor_max31865 import TempSensor_max31865 as TempSensor
class TempLogger(): class TempLogger():
def __init__(self, sensor, filename="temp.log"): def __init__(self, sensor, filename="temp.log"):
@@ -81,11 +82,14 @@ if __name__ == '__main__':
if signum == signal.SIGHUP: if signum == signal.SIGHUP:
tempPlot(logger.result()) tempPlot(logger.result())
logging.getLogger().setLevel(logging.INFO)
FORMAT = '%(asctime)-15s %(user)-8s %(message)s'
logging.basicConfig(format=FORMAT)
signal.signal(signal.SIGINT, handler) signal.signal(signal.SIGINT, handler)
signal.signal(signal.SIGHUP, handler) signal.signal(signal.SIGHUP, handler)
sensor = Max31865() sensor = TempSensor()
# sensor = TempSensorSim("FakeTemp")
logger = TempLogger(sensor) logger = TempLogger(sensor)
logger.start(1.0, 30*60) logger.start(1.0, 30*60)
logger.wait() logger.wait()
+5 -2
View File
@@ -3,10 +3,13 @@ import math
class TempSensorSim(ATemperatureSensor): class TempSensorSim(ATemperatureSensor):
def __init__(self, name): def name(self):
super(TempSensorSim, self).__init__(name) return "FakeTemp"
def __init__(self):
self.count = 0 self.count = 0
self.freq = 0.2 self.freq = 0.2
self.log("Created")
def temperature(self): def temperature(self):
self.count += 1 self.count += 1
+9 -9
View File
@@ -4,9 +4,9 @@ import spidev
from atemperatureSensor import ATemperatureSensor from atemperatureSensor import ATemperatureSensor
class Max31865(ATemperatureSensor): class TempSensor_max31865(ATemperatureSensor):
def name(self): def name(self):
return "TemperatureSensor" return "Max31865"
def __init__(self): def __init__(self):
# Open SPI bus # Open SPI bus
@@ -18,7 +18,7 @@ class Max31865(ATemperatureSensor):
self.write_reg(0x00, 0xA3) self.write_reg(0x00, 0xA3)
time.sleep(0.100) time.sleep(0.100)
self.digits = 0 self.digits = 0
self.log("Create Max31865") self.log("Created")
def read_reg(self, addr): def read_reg(self, addr):
reg = self.spi.xfer([addr, 0xFF]) reg = self.spi.xfer([addr, 0xFF])
@@ -45,8 +45,8 @@ class Max31865(ATemperatureSensor):
digits = self.read_digits() digits = self.read_digits()
except: except:
return None return None
R = Max31865.calc_R(430, digits) R = TempSensor_max31865.calc_R(430, digits)
T = Max31865.vanDusen_temp(R) + self.temp_correction T = TempSensor_max31865.vanDusen_temp(R) + self.temp_correction
# print("R={:.3f} Ohm, T={:.2f} degC".format(R, T)) # print("R={:.3f} Ohm, T={:.2f} degC".format(R, T))
return T return T
@@ -80,7 +80,7 @@ class Max31865(ATemperatureSensor):
@staticmethod @staticmethod
def vanDusen_temp(Rmeas): def vanDusen_temp(Rmeas):
RLut, TLut = Max31865.vanDusenLut(100, -150, +500, 1.0) RLut, TLut = TempSensor_max31865.vanDusenLut(100, -150, +500, 1.0)
# Find candidate # Find candidate
i = 0 i = 0
@@ -108,11 +108,11 @@ class Max31865(ATemperatureSensor):
if __name__ == '__main__': if __name__ == '__main__':
max31865 = Max31865() TempSensor_max31865 = TempSensor_max31865()
for i in range (0, 8): for i in range (0, 8):
print("Reg[0x{}]: 0x{:02X}".format(i, max31865.read_reg(i))) print("Reg[0x{}]: 0x{:02X}".format(i, TempSensor_max31865.read_reg(i)))
max31865.temperature() TempSensor_max31865.temperature()
print("End of program") print("End of program")