Skip to content
Snippets Groups Projects
Commit 11f28eec authored by Your Name's avatar Your Name
Browse files

fixes to target setting

parent 7e0ed1a3
Branches
No related merge requests found
......@@ -82,6 +82,12 @@ BreathingLoop::BreathingLoop()
_min_inhale_time = 150;
_min_exhale_time = 300;
_max_exhale_time = 30000; // for mandatory cycle - changed to 30s for the sponteneous breath testing
_targets.respiratory_rate = 20.0;
_targets.ie_ratio = 0.5;
_targets.ie_selected = false;
_targets.pressure = 15;
_targets.volume = 400;
}
BreathingLoop::~BreathingLoop()
......@@ -738,6 +744,7 @@ void BreathingLoop::updateFromTargets()
{
_pid.target_final_pressure = _targets.pressure; //TODO - should fix this to one variable
logMsg("targets "+String(_targets.ie_ratio) +" "+String(_targets.ie_selected));
if (_targets.ie_selected == true)
setIERatio();
updateIE();
......@@ -905,7 +912,7 @@ void BreathingLoop::doPID(){
//Checking minium and maximum duty cycle
float minimum_open_frac = 0.52; //Minimum opening to avoid vibrations on the valve control
float minimum_open_frac = 0.53; //Minimum opening to avoid vibrations on the valve control
float maximum_open_frac = 0.74; //Maximum opening for the PID control
_pid.valve_duty_cycle = _pid.proportional + _pid.integral + (_pid.Kd * _pid.derivative) + minimum_open_frac;
......
......@@ -51,7 +51,7 @@ public:
float getVolume();
float getAirwayPressure();
pid_variables& getPIDVariables();
target_variables &BreathingLoop::getTargetVariables();
target_variables &getTargetVariables();
states_durations &getDurations();
cycle_readings &getCycleReadings();
......
......@@ -266,6 +266,9 @@ int UILoop::doCommand(cmd_format &cf)
case CMD_TYPE::SET_PID:
cmdSetPID(cf);
break;
case CMD_TYPE::SET_TARGET:
cmdSetTarget(cf);
break;
default:
break;
}
......
......@@ -49,7 +49,7 @@ ValvesController::ValvesController()
_valve_params.inhale_duty_cycle = 0;
_valve_params.inhale_open_max = MAX_VALVE_FRAC_OPEN;
_valve_params.inhale_open_min = 0.52;
_valve_params.inhale_open_min = 0.53;
_valve_params.valve_air_in_enable = 1;
_valve_params.valve_o2_in_enable = 1;
_valve_params.valve_purge_enable = 1;
......
......@@ -35,7 +35,7 @@ class Dependant(object):
def update_llipacket(self, payload):
global fsm
logging.info(f"payload received: {payload}")
#logging.info(f"payload received: {payload}")
#if payload.getType() == PAYLOAD_TYPE.ALARM.value:
# logging.info(f"Alarm: {payload.alarm_code} of priority: {payload.alarm_type}")
......@@ -56,8 +56,8 @@ class Dependant(object):
# logging.info(f"payload received: {payload} ")
#if payload.getType() == PAYLOAD_TYPE.DEBUG.value:
# logging.info(f" PID {payload.kp:3.6f} {payload.ki:3.6f} {payload.kd:3.6f} {payload.proportional:3.6f} {payload.integral:3.6f} {payload.derivative:3.6f} {payload.valve_duty_cycle:3.6f} {payload.target_pressure:3.6f} {payload.process_pressure:3.6f} fsm {fsm}")
#if payload.getType() == PAYLOAD_TYPE.LOGMSG.value:
# logging.info(f"LOGMSG {payload.timestamp}:{payload.message} {fsm}")
if payload.getType() == PAYLOAD_TYPE.LOGMSG.value:
logging.info(f"LOGMSG {payload.timestamp}:{payload.message} {fsm}")
#if hasattr(payload, 'ventilation_mode'):
# logging.info(f"payload received: {payload.ventilation_mode}")
#if hasattr(payload, 'duration_inhale'):
......@@ -76,26 +76,26 @@ def send_cmd(cmd_type, cmd_code, param=0.0):
# initialise as start command, automatically executes toByteArray()
async def commsDebug():
await asyncio.sleep(5)
cmd = send_cmd(cmd_type="SET_PID", cmd_code="KP", param=3.*0.001)#0.0108/5) # 108/4) # to set Kp=0.0002, param=200 i.e., micro_Kp
cmd = send_cmd(cmd_type="SET_PID", cmd_code="KI", param=3.*0.0003)#0.00162*0.4)#0.0054/2) # 0004)#0002) # to set Kp=0.0002, param=200 i.e., micro_Kp
await asyncio.sleep(1)
cmd = send_cmd(cmd_type="SET_PID", cmd_code="KP", param=2.5*0.001)#0.0108/5) # 108/4) # to set Kp=0.0002, param=200 i.e., micro_Kp
cmd = send_cmd(cmd_type="SET_PID", cmd_code="KI", param=2.5*0.0003)#0.00162*0.4)#0.0054/2) # 0004)#0002) # to set Kp=0.0002, param=200 i.e., micro_Kp
cmd = send_cmd(cmd_type="SET_PID", cmd_code="KD", param=0.0)#0.00162*1.5)#0.0054/2) # to set Kp=0.0002, param=200 i.e., micro_Kp
cmd = send_cmd(cmd_type="SET_PID", cmd_code="TARGET_FINAL_PRESSURE", param=25.5)#set Kp=0.0002, param=200 i.e., micro_Kp
cmd = send_cmd(cmd_type="SET_PID", cmd_code="TARGET_FINAL_PRESSURE", param=15.0)#set Kp=0.0002, param=200 i.e., micro_Kp
cmd = send_cmd(cmd_type="SET_PID", cmd_code="NSTEPS", param=3) # to set Kp=0.0002, param=200 i.e., micro_Kp
# # Change TIMEOUT of breathing cycle (BUFF-PRE-INHALE)
cmd = send_cmd(cmd_type="SET_DURATION", cmd_code="BUFF_PRE_INHALE", param=10.) #
# Change TIMEOUT of breathing cycle (INHALE)
cmd = send_cmd(cmd_type="SET_DURATION", cmd_code="INHALE", param=2000.) #
cmd = send_cmd(cmd_type="SET_DURATION", cmd_code="INHALE", param=1000.) #
# Change TIMEOUT of breathing cycle (PAUSE)
cmd = send_cmd(cmd_type="SET_DURATION", cmd_code="PAUSE", param=10.) #
# Change TIMEOUT of breathing cycle (EXHALE-FILL)
cmd = send_cmd(cmd_type="SET_DURATION", cmd_code="EXHALE_FILL", param=1600.) #
# Change TIMEOUT of breathing cycle (EXHALE)
cmd = send_cmd(cmd_type="SET_DURATION", cmd_code="EXHALE", param=25390.) #
cmd = send_cmd(cmd_type="SET_DURATION", cmd_code="EXHALE", param=8000.) #
# Start the cycles
cmd = send_cmd(cmd_type="SET_VALVE", cmd_code="INHALE_TRIGGER_THRESHOLD", param=0.005) # to set Kp=0.0002, param=200 i.e., micro_Kp
cmd = send_cmd(cmd_type="SET_VALVE", cmd_code="INHALE_TRIGGER_THRESHOLD", param=0.0005) # to set Kp=0.0002, param=200 i.e., micro_Kp
# Enable exhale trigger threshold
cmd = send_cmd(cmd_type="SET_VALVE", cmd_code="EXHALE_TRIGGER_THRESHOLD", param=0.1) # to set Kp=0.0002, param=200 i.e., micro_Kp
cmd = send_cmd(cmd_type="SET_VALVE", cmd_code="EXHALE_TRIGGER_THRESHOLD", param=0.25) # to set Kp=0.0002, param=200 i.e., micro_Kp
# Start the cycles
cmd = CommandFormat(cmd_type="SET_MODE", cmd_code="HEV_MODE_PC_AC", param=0)
......@@ -104,8 +104,10 @@ async def commsDebug():
#comms.writePayload(cmd)
print('sent cmd start')
await asyncio.sleep(1)
cmd = send_cmd(cmd_type="SET_VALVE", cmd_code="INHALE_TRIGGER_ENABLE", param=1)
cmd = send_cmd(cmd_type="SET_VALVE", cmd_code="EXHALE_TRIGGER_ENABLE", param=1)
cmd = send_cmd(cmd_type="SET_VALVE", cmd_code="INHALE_TRIGGER_ENABLE", param=0)
cmd = send_cmd(cmd_type="SET_VALVE", cmd_code="EXHALE_TRIGGER_ENABLE", param=0)
cmd = send_cmd(cmd_type="SET_TARGET", cmd_code="RESPIRATORY_RATE", param=10.0)
cmd = send_cmd(cmd_type="SET_TARGET", cmd_code="IE_RATIO", param=0.2)
#print('sent inhale + exhale trigger -> 1')
toggle = "STOP"
while True:
......
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