Commit eab4e116 authored by Olivier Kaufmann's avatar Olivier Kaufmann
Browse files

Adds dummy_mux and dummy_controller; fixes bugs

No related merge requests found
Showing with 96 additions and 33 deletions
+96 -33
......@@ -26,7 +26,7 @@ OHMPI_CONFIG = {
# 'mcp_board_address': 0x20
} # TODO: add a dictionary with INA models and associated gain values
HARDWARE_CONFIG = {
"""HARDWARE_CONFIG = {
'controller': {'model' : 'raspberry_pi_3'
},
'tx' : {'model' : 'mb_2024_rev_0_0',
......@@ -44,8 +44,23 @@ HARDWARE_CONFIG = {
'coef_p2': 2.50, # slope for current conversion for ADS.P2, measurement in V/V
'nb_samples': 20 # Max value 10 # was named integer before...
}
}
}"""
HARDWARE_CONFIG = {
'controller': {'model' : 'dummy_controller'
},
'tx' : {'model' : 'dummy_tx',
'Imax': 4800 / 50 / 2, # Maximum current
'R_shunt': 2 # Shunt resistance in Ohms
},
'rx' : {'model': 'dummy_rx',
},
'mux': {'model' : 'dummy_mux',
'max_elec': 64,
'voltage_max' : 100,
'current_max' : 3
}
}
# SET THE LOGGING LEVELS, MQTT BROKERS AND MQTT OPTIONS ACCORDING TO YOUR NEEDS
# Execution logging configuration
EXEC_LOGGING_CONFIG = {
......
from OhmPi.hardware.abstract_hardware import TxAbstract, RxAbstract, MuxAbstract, ControllerAbstract
\ No newline at end of file
from .abstract_hardware import TxAbstract, RxAbstract, MuxAbstract, ControllerAbstract
\ No newline at end of file
from abc import ABC, abstractmethod
from OhmPi.logging_setup import create_default_logger
from OhmPi.logging_setup import create_stdout_logger
class ControllerAbstract(ABC):
def __init__(self, **kwargs):
self.bus = None
class MuxAbstract(ABC):
pass
def __init__(self, **kwargs):
pass
class TxAbstract(ABC):
def __init__(self, **kwargs):
self.board_name = kwargs.pop('board_name', 'unknown TX hardware')
polarity = kwargs.pop('polarity', 1)
inj_time = kwargs.pop('inj_time', 1.)
self.exec_logger = kwargs.pop('exec_logger', create_default_logger('exec_tx'))
self.soh_logger = kwargs.pop('soh_logger', create_default_logger('soh_tx'))
self.exec_logger = kwargs.pop('exec_logger', None)
if self.exec_logger is None:
self.exec_logger = create_stdout_logger('exec_tx')
self.soh_logger = kwargs.pop('soh_logger', None)
if self.soh_logger is None:
self.soh_logger = create_stdout_logger('soh_tx')
self._polarity = None
self._inj_time = None
self._dps_state = 'off'
......@@ -118,8 +123,10 @@ class TxAbstract(ABC):
class RxAbstract(ABC):
def __init__(self, **kwargs):
self.exec_logger = kwargs.pop('exec_logger', create_default_logger('exec'))
self.soh_logger = kwargs.pop('soh_logger', create_default_logger('soh'))
self.exec_logger = kwargs.pop('exec_logger', None)
if self.exec_logger is None:
self.exec_logger = create_stdout_logger('exec_tx')
self.soh_logger = kwargs.pop('soh_logger', None)
self.board_name = kwargs.pop('board_name', 'unknown RX hardware')
self.exec_logger.debug(f'{self.board_name} RX initialization')
self._adc_gain = 1.
......
from OhmPi.config import HARDWARE_CONFIG
import os
from OhmPi.hardware import ControllerAbstract
CONTROLLER_CONFIG = HARDWARE_CONFIG['controller']
class Controller(ControllerAbstract):
def __init__(self, **kwargs):
kwargs.update({'board_name': os.path.basename(__file__).rstrip('.py')})
super().__init__(**kwargs)
self.bus = None
\ No newline at end of file
from OhmPi.config import HARDWARE_CONFIG
import os
from OhmPi.hardware import MuxAbstract
MUX_CONFIG = HARDWARE_CONFIG['mux']
class Mux(MuxAbstract):
def __init__(self, **kwargs):
kwargs.update({'board_name': os.path.basename(__file__).rstrip('.py')})
super().__init__(**kwargs)
self.max_elec = MUX_CONFIG['max_elec']
\ No newline at end of file
......@@ -77,7 +77,7 @@ class Tx(TxAbstract):
self.exec_logger.warning(f'Voltage should be given as a positive number. '
f'Set polarity to -1 to reverse voltage...')
value = np.abs(value)
self._voltage=value
@property
def tx_bat(self):
......
from hardware import ControllerAbstract
from OhmPi.hardware import ControllerAbstract
import board # noqa
import busio # noqa
......
......@@ -8,7 +8,7 @@ from OhmPi.compressed_sized_timed_rotating_handler import CompressedSizedTimedRo
import sys
from termcolor import colored
def create_default_logger(name):
def create_stdout_logger(name):
logger = logging.getLogger(f'{name}_logger')
log_format = f'%(asctime)-15s | {name} | %(levelname)s: %(message)s'
formatter = logging.Formatter(log_format)
......
import importlib
import numpy as np
from OhmPi.logging_setup import create_default_logger
from OhmPi.config import OHMPI_CONFIG
controller_module = importlib.import_module(f'OhmPi.{OHMPI_CONFIG["hardware"]["controller"]["model"]}')
tx_module = importlib.import_module(f'OhmPi.{OHMPI_CONFIG["hardware"]["tx"]["model"]}')
rx_module = importlib.import_module(f'OhmPi.{OHMPI_CONFIG["hardware"]["rx"]["model"]}')
mux_module = importlib.import_module(f'OhmPi.{OHMPI_CONFIG["hardware"]["mux"]["model"]}')
from OhmPi.logging_setup import create_stdout_logger
from OhmPi.config import HARDWARE_CONFIG
controller_module = importlib.import_module(f'OhmPi.hardware.{HARDWARE_CONFIG["controller"]["model"]}')
tx_module = importlib.import_module(f'OhmPi.hardware.{HARDWARE_CONFIG["tx"]["model"]}')
rx_module = importlib.import_module(f'OhmPi.hardware.{HARDWARE_CONFIG["rx"]["model"]}')
mux_module = importlib.import_module(f'OhmPi.hardware.{HARDWARE_CONFIG["mux"]["model"]}')
TX_CONFIG = tx_module.TX_CONFIG
RX_CONFIG = rx_module.RX_CONFIG
MUX_CONFIG = mux_module.MUX_CONFIG
......@@ -16,22 +16,28 @@ voltage_min = RX_CONFIG['voltage_min']
class OhmPiHardware:
def __init__(self, **kwargs):
self.exec_logger = kwargs.pop('exec_logger', create_default_logger('exec'))
self.data_logger = kwargs.pop('exec_logger', create_default_logger('data'))
self.soh_logger = kwargs.pop('soh_logger', create_default_logger('soh'))
self.exec_logger = kwargs.pop('exec_logger', None)
if self.exec_logger is None:
self.exec_logger = create_stdout_logger('exec')
self.data_logger = kwargs.pop('exec_logger', None)
if self.data_logger is None:
self.data_logger = create_stdout_logger('data')
self.soh_logger = kwargs.pop('soh_logger', None)
if self.soh_logger is None:
self.soh_logger = create_stdout_logger('soh')
self.controller = kwargs.pop('controller',
controller_module.Controller({'exec_logger' : self.exec_logger,
'data_logger': self.data_logger,
'soh_logger': self.soh_logger}))
self.rx = kwargs.pop('tx', tx_module.Rx({'exec_logger' : self.exec_logger,
'data_logger': self.data_logger,
'soh_logger': self.soh_logger}))
self.tx = kwargs.pop('rx', tx_module.Tx({'exec_logger' : self.exec_logger,
'data_logger': self.data_logger,
'soh_logger': self.soh_logger}))
self.mux = kwargs.pop('mux', mux_module.Mux({'exec_logger' : self.exec_logger,
'data_logger': self.data_logger,
'soh_logger': self.soh_logger}))
controller_module.Controller(exec_logger=self.exec_logger,
data_logger=self.data_logger,
soh_logger= self.soh_logger))
self.rx = kwargs.pop('rx', rx_module.Rx(exec_logger=self.exec_logger,
data_logger=self.data_logger,
soh_logger=self.soh_logger))
self.tx = kwargs.pop('tx', tx_module.Tx(exec_logger=self.exec_logger,
data_logger=self.data_logger,
soh_logger=self.soh_logger))
self.mux = kwargs.pop('mux', mux_module.Mux(exec_logger=self.exec_logger,
data_logger=self.data_logger,
soh_logger=self.soh_logger))
def _vab_pulse(self, vab, length, polarity=None):
""" Gets VMN and IAB from a single voltage pulse
"""
......
test_dummy.py 0 → 100644
import sys
sys.path.extend(['/home/su530201/PycharmProjects/ohmpi_reversaal/OhmPi'])
from OhmPi.hardware.dummy_tx import Tx
from OhmPi.hardware.dummy_rx import Rx
from OhmPi.logging_setup import create_stdout_logger
exec_logger = create_stdout_logger(name='exec')
soh_logger = create_stdout_logger(name='soh')
print('\nCreating TX...')
tx = Tx(exec_logger= exec_logger, soh_logger= soh_logger)
print('\nCreating RX...')
rx = Rx(exec_logger= exec_logger, soh_logger= soh_logger)
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment