NorthStar-HMI/MockCAN.py
2025-08-27 15:07:17 +02:00

84 lines
3.7 KiB
Python

import numpy as np
PUs_states = [{"PU_MODE": "OFF","ploop_setpoint":0.0},{"PU_MODE": "OFF","ploop_setpoint":0.0},{"PU_MODE": "OFF","ploop_setpoint":0.0}] # data[i] is PU_i dictionnary
# Placeholder for CAN backend
class CANBackend:
def __init__(self, eds_file=None):
self.connected = False
def connect(self) -> bool:
# Placeholder for connection logic
self.connected = True
return True
def shutdown(self):
self.connected = False
def read_current_state(self,pu_number: int):
# Placeholder for reading mode command
return PUs_states[pu_number-1]["PU_MODE"]
def send_thermal_loop_cleaning(self, mode: str):
# Placeholder for thermal loop cleaning
pass
def send_state_command(self, state: str, pu_number : int, ploop_setpoint : float, qperm_setpoint : float):
# Placeholder for sending mode command
PUs_states[pu_number-1] = {"PU_MODE": state, "ploop_setpoint":ploop_setpoint}
def get_latest_data(self, pu_number=1, data={}):
# Simulate getting the latest data with random values
if pu_number ==1:
return {
"FM2": 630.0,
"FM2": 1080.0,
"FM3": 1080.0,
"FM4": 1080.0,
"FM5": 1080.0,
"PS1": 6.2,
"PS2": 6.2,
"PS3": 6.2,
"PS4": 6.2,
"Conductivity_Feed": 1* np.random.random(),
"Conductivity_Permeate": 1 * np.random.random(),
"Conductivity_Product": 1 * np.random.random(),
"MV02": round(100 * np.random.random(), 2),
"MV02_sp": round(100 * np.random.random(), 2),
"MV03": round(100 * np.random.random(), 2),
"MV03_sp": round(100 * np.random.random(), 2),
"MV05": round(100 * np.random.random(), 2),
"MV05_sp": round(100 * np.random.random(), 2),
"MV06": round(100 * np.random.random(), 2),
"MV06_sp": round(100 * np.random.random(), 2),
"MV07": round(100 * np.random.random(), 2),
"MV07_sp": round(100 * np.random.random(), 2),
"MV08": round(100 * np.random.random(), 2),
"MV08_sp": round(100 * np.random.random(), 2),
}
else :
return {
"FM2": round(1000 * np.random.random(), 1),
"FM3": round(1000 * np.random.random(), 1),
"FM4": round(1000 * np.random.random(), 1),
"FM5": round(1000 * np.random.random(), 1),
"PS1": round(10 * np.random.random(), 2),
"PS2": round(10 * np.random.random(), 2),
"PS3": round(10 * np.random.random(), 2),
"PS4": round(10 * np.random.random(), 2),
"Conductivity_Feed": 1 * np.random.random(),
"Conductivity_Permeate": 1 * np.random.random(),
"Conductivity_Product": 1 * np.random.random(),
"MV02": round(100 * np.random.random(), 2),
"MV02_sp": round(100 * np.random.random(), 2),
"MV03": round(100 * np.random.random(), 2),
"MV03_sp": round(100 * np.random.random(), 2),
"MV05": round(100 * np.random.random(), 2),
"MV05_sp": round(100 * np.random.random(), 2),
"MV06": round(100 * np.random.random(), 2),
"MV06_sp": round(100 * np.random.random(), 2),
"MV07": round(100 * np.random.random(), 2),
"MV07_sp": round(100 * np.random.random(), 2),
"MV08": round(100 * np.random.random(), 2),
"MV08_sp": round(100 * np.random.random(), 2),
}