diff --git a/control-core/src/actors/mitsubishi_inverter_rs485/mod.rs b/control-core/src/actors/mitsubishi_inverter_rs485/mod.rs index 6aa0dfa1..9a364e79 100644 --- a/control-core/src/actors/mitsubishi_inverter_rs485/mod.rs +++ b/control-core/src/actors/mitsubishi_inverter_rs485/mod.rs @@ -346,7 +346,6 @@ impl MitsubishiInverterRS485Actor { } let res: Option> = (self.serial_interface.read_message)().await; - //println!("{:?}", res); let raw_response = match res { Some(res) => res, None => { @@ -365,7 +364,7 @@ impl MitsubishiInverterRS485Actor { Ok(result) } Err(_) => { - // log::error!("Error Parsing ModbusResponse!"); + log::error!("Error Parsing ModbusResponse!"); self.state = State::ReadyToSend; Err(anyhow::anyhow!("error")) } @@ -383,7 +382,6 @@ impl MitsubishiInverterRS485Actor { self.next_response_type = request.expected_response_type; self.last_request_type = self.last_request_type; let modbus_request: Vec = request.request.into(); - // println!("{:?}", modbus_request); let res = (self.serial_interface.write_message)(modbus_request.clone()).await; match res { Ok(_) => (), @@ -451,7 +449,6 @@ impl From for MitsubishiModbusExceptionCode { impl MitsubishiInverterRS485Actor { // When we get respone from Pr. 40014 (Running Frequency) Convert to rpm and save it fn handle_motor_frequency(&mut self, resp: ModbusResponse) { - //println!("handle_motor_frequency: {:?}", resp); if resp.data.len() < 4 { //return; } diff --git a/control-core/src/actors/temperature_input_getter.rs b/control-core/src/actors/temperature_input_getter.rs index a8a5c2fc..fce7cfd4 100644 --- a/control-core/src/actors/temperature_input_getter.rs +++ b/control-core/src/actors/temperature_input_getter.rs @@ -8,6 +8,7 @@ use super::Actor; pub struct TemperatureInputGetter { input: TemperatureInput, pub temperature: f32, + pub wiring_error: bool, } impl TemperatureInputGetter { @@ -15,6 +16,7 @@ impl TemperatureInputGetter { Self { input, temperature: 0.0, + wiring_error: false, } } } @@ -22,8 +24,12 @@ impl TemperatureInputGetter { impl Actor for TemperatureInputGetter { fn act(&mut self, _now: Instant) -> Pin + Send + '_>> { Box::pin(async move { - let temperature = (self.input.state)().await.input.temperature; - self.temperature = temperature; + let input = (self.input.state)().await.input; + self.temperature = input.temperature; + self.wiring_error = input.overvoltage | input.undervoltage; + if self.wiring_error { + self.temperature = 0.0; + } }) } } diff --git a/electron/src/machines/extruder/HeatingZone.tsx b/electron/src/machines/extruder/HeatingZone.tsx index fafb2d25..aa83c5fc 100644 --- a/electron/src/machines/extruder/HeatingZone.tsx +++ b/electron/src/machines/extruder/HeatingZone.tsx @@ -7,6 +7,7 @@ import React from "react"; import { Heating } from "./extruder2/extruder2Namespace"; import { TimeSeries } from "@/lib/timeseries"; import { TimeSeriesValueNumeric } from "@/control/TimeSeriesValue"; +import { StatusBadge } from "@/control/StatusBadge"; type Props = { title: string; @@ -43,7 +44,9 @@ export function HeatingZone({ roundToDecimals(value, 1)} + renderValue={(value) => + heatingState?.wiring_error ? "0.0" : roundToDecimals(value, 1) + } timeseries={heatingTimeSeries} /> + {heatingState?.wiring_error && ( + + Cant Read Temperature! Check Temperature Sensor Wiring! + + )} ); } diff --git a/electron/src/machines/extruder/extruder2/extruder2Namespace.ts b/electron/src/machines/extruder/extruder2/extruder2Namespace.ts index d3092b50..4c0facd1 100644 --- a/electron/src/machines/extruder/extruder2/extruder2Namespace.ts +++ b/electron/src/machines/extruder/extruder2/extruder2Namespace.ts @@ -267,6 +267,7 @@ export const heatingStateDataSchema = z.object({ temperature: z.number(), heating: z.boolean(), target_temperature: z.number(), + wiring_error: z.boolean(), }); export const heatingTargetTemperatureDataSchema = z.object({ diff --git a/electron/src/machines/extruder/extruder2/useExtruder.ts b/electron/src/machines/extruder/extruder2/useExtruder.ts index aa2db21b..52d70283 100644 --- a/electron/src/machines/extruder/extruder2/useExtruder.ts +++ b/electron/src/machines/extruder/extruder2/useExtruder.ts @@ -374,10 +374,16 @@ export function useHeatingTemperature( heatingMiddleState.data.target_temperature, ); } + if (heatingNozzleState?.data) { + nozzleHeatingTargetState.setReal( + heatingNozzleState.data.target_temperature, + ); + } }, [ frontHeatingTargetState, backHeatingTargetState, middleHeatingTargetState, + nozzleHeatingTargetState, ]); return { diff --git a/server/src/machines/extruder1/act.rs b/server/src/machines/extruder1/act.rs index 7e07749d..2c23a0f6 100644 --- a/server/src/machines/extruder1/act.rs +++ b/server/src/machines/extruder1/act.rs @@ -29,6 +29,11 @@ impl Actor for ExtruderV2 { self.heating_back.temperature = self.temp_sensor_3.temperature; self.heating_nozzle.temperature = self.temp_sensor_4.temperature; + self.heating_front.wiring_error = self.temp_sensor_1.wiring_error; + self.heating_middle.wiring_error = self.temp_sensor_2.wiring_error; + self.heating_back.wiring_error = self.temp_sensor_3.wiring_error; + self.heating_nozzle.wiring_error = self.temp_sensor_4.wiring_error; + self.temperature_controller_front.target_temp = self.heating_front.target_temperature as f64; // set target temperature diff --git a/server/src/machines/extruder1/api.rs b/server/src/machines/extruder1/api.rs index 6d0a322e..d667bd57 100644 --- a/server/src/machines/extruder1/api.rs +++ b/server/src/machines/extruder1/api.rs @@ -32,6 +32,7 @@ pub struct HeatingStateEvent { pub temperature: f32, pub heating: bool, pub target_temperature: f32, + pub wiring_error: bool, } impl HeatingStateEvent { diff --git a/server/src/machines/extruder1/mod.rs b/server/src/machines/extruder1/mod.rs index 9fb5a00a..5dcdb146 100644 --- a/server/src/machines/extruder1/mod.rs +++ b/server/src/machines/extruder1/mod.rs @@ -35,6 +35,7 @@ pub struct Heating { pub temperature: f32, pub heating: bool, pub target_temperature: f32, + pub wiring_error: bool, } pub enum HeatingType { @@ -316,6 +317,7 @@ impl ExtruderV2 { temperature: heating.temperature, heating: heating.heating, target_temperature: heating.target_temperature, + wiring_error: heating.wiring_error, } .build(heating_type); diff --git a/server/src/machines/extruder1/new.rs b/server/src/machines/extruder1/new.rs index 8793bcf6..94dbc4c7 100644 --- a/server/src/machines/extruder1/new.rs +++ b/server/src/machines/extruder1/new.rs @@ -1,16 +1,12 @@ -use std::time::{Duration, Instant}; - -use crate::machines::extruder1::temperature_controller::{self, TemperatureController}; - use super::{ ExtruderV2, ExtruderV2Mode, Heating, api::ExtruderV2Namespace, pressure_controller::PressureController, }; +use crate::machines::extruder1::temperature_controller::TemperatureController; use anyhow::Error; use control_core::{ actors::{ - analog_input_getter::AnalogInputGetter, digital_output_blinker::DigitalOutputBlinker, - digital_output_setter::DigitalOutputSetter, + analog_input_getter::AnalogInputGetter, digital_output_setter::DigitalOutputSetter, mitsubishi_inverter_rs485::MitsubishiInverterRS485Actor, temperature_input_getter::TemperatureInputGetter, }, @@ -37,13 +33,11 @@ use ethercat_hal::{ subdevice_identity_to_tuple, }, io::{ - analog_input::AnalogInput, - digital_output::DigitalOutput, - serial_interface::SerialInterface, - temperature_input::{TemperatureInput, TemperatureInputDevice}, + analog_input::AnalogInput, digital_output::DigitalOutput, + serial_interface::SerialInterface, temperature_input::TemperatureInput, }, }; -use uom::si::electric_current::{ElectricCurrent, milliampere}; +use std::time::Instant; impl MachineNewTrait for ExtruderV2 { fn new<'maindevice>(params: &MachineNewParams) -> Result { @@ -264,7 +258,7 @@ impl MachineNewTrait for ExtruderV2 { let temperature_controller_back = TemperatureController::new(0.1, 0.0, 0.0, 0.0); let temperature_controller_nozzle = TemperatureController::new(0.1, 0.0, 0.0, 0.0); - let pressure_motor_controller = PressureController::new(1.0, 0.1, 0.1, 60.0); + let pressure_motor_controller = PressureController::new(1.0, 0.1, 0.1, 10.0); let extruder: ExtruderV2 = Self { inverter: MitsubishiInverterRS485Actor::new(SerialInterface::new( @@ -278,28 +272,35 @@ impl MachineNewTrait for ExtruderV2 { heating_nozzle: Heating { temperature: 150.0, heating: false, - target_temperature: 60.0, + target_temperature: 150.0, + wiring_error: false, }, heating_front: Heating { temperature: 150.0, heating: false, - target_temperature: 60.0, + target_temperature: 150.0, + wiring_error: false, }, heating_back: Heating { temperature: 150.0, heating: false, target_temperature: 150.0, + wiring_error: false, }, heating_middle: Heating { temperature: 150.0, heating: false, target_temperature: 150.0, + wiring_error: false, }, uses_rpm: true, + rpm: 0.0, bar: 0.0, + target_rpm: 0.0, target_bar: 0.0, + temp_sensor_1: t1_getter, temp_sensor_2: t2_getter, temp_sensor_3: t3_getter,