aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c51
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c14
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h1
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h5
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c60
5 files changed, 93 insertions, 38 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
index 05987ee7f..37d6b5ec1 100644
--- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
+++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
@@ -17,13 +17,13 @@
#include "drivers/Motors/Motor.h"
#include "drivers/Heater/TemperatureSensor.h"
#include "drivers/SSI_Comm/Dancer/Dancer.h"
-#include <Drivers/SSI_Comm/SSI_Comm.h>
#include "drivers/FPGA/FPGA_SPI_Comm.h"
#include "drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h"
#include "drivers/FPGA/FPGA.h"
#include "drivers/I2C_Communication/ADC_MUX/ADC_MUX.h"
#include "drivers/I2C_Communication/Head_Card/ADC/Head_ADC.h"
#include "drivers/I2C_Communication/DAC/Blower.h"
+#include <Drivers/I2C_Communication/I2C_Task.h>
#include "drivers/valves/valve.h"
#include "modules/ids/ids_ex.h"
@@ -265,6 +265,7 @@ double MotorValue[MAX_THREAD_MOTORS_NUM][DIAGNOSTICS_LIMIT+1];
uint8_t SpeedCounterIndex= 0;
double SpeedValue[DIAGNOSTICS_DANCER_LIMIT+1];
double headblowervoltage1 = 0.0, headblowervoltage2 = 0.0;
+double headblower1airflow = 0.0, headblower2airflow = 0.0;
void DiagnosticLoadMotor(int MotorId, int frequency)
{
@@ -408,9 +409,6 @@ void DiagnosticLoadDancerError(int DancerId, double value)
// DancerErrorCounterIndex[DancerId] = 0;
}
-#ifdef FOUR_WINDERS
- double dancer2,dancer3,dancer4;
-#endif
void CopyTemperaturesToMonitor(void)
{
DiagnosticsMonitor.mixertemperature =
@@ -500,33 +498,22 @@ void CopyTemperaturesToMonitor(void)
HeaterCounterIndex[HEATER_TYPE__HeaterZone4];
DiagnosticsMonitor.n_headzone6temperature =
HeaterCounterIndex[HEATER_TYPE__HeaterZone6];
+
DiagnosticsMonitor.n_headblower1airflow = HeaterCounterIndex[HEATER_TYPE__HeaterZone5];
DiagnosticsMonitor.n_headblower2airflow = HeaterCounterIndex[HEATER_TYPE__HeaterZone7];
- DiagnosticsMonitor.headblower1airflow = HeaterTemperature[HEATER_TYPE__HeaterZone5];
- DiagnosticsMonitor.headblower2airflow = HeaterTemperature[HEATER_TYPE__HeaterZone7];
+ headblower1airflow = PressureSensorGetPressure(HEAD_PT100_ZONE_5_0X84_0);
+ headblower2airflow = PressureSensorGetPressure(HEAD_PT100_ZONE_7_0X86_0);
+ DiagnosticsMonitor.headblower1airflow = &headblower1airflow;
+ DiagnosticsMonitor.headblower2airflow = &headblower2airflow;
+
+ DiagnosticsMonitor.n_headblowervoltage1 = 1;
+ DiagnosticsMonitor.n_headblowervoltage2 = 1;
+ headblowervoltage1 = HeadBlowersGetRPM(HEAD_FAN_RIGHT);
+ headblowervoltage2 = HeadBlowersGetRPM(HEAD_FAN_LEFT);
+ DiagnosticsMonitor.headblowervoltage1 = &headblowervoltage1;
+ DiagnosticsMonitor.headblowervoltage2 = &headblowervoltage2;
}
- DiagnosticsMonitor.n_headblower1airflow = HeaterCounterIndex[HEATER_TYPE__HeaterZone5];
- DiagnosticsMonitor.n_headblower2airflow = HeaterCounterIndex[HEATER_TYPE__HeaterZone7];
- DiagnosticsMonitor.headblower1airflow = HeaterTemperature[HEATER_TYPE__HeaterZone5];
- DiagnosticsMonitor.headblower2airflow = HeaterTemperature[HEATER_TYPE__HeaterZone7];
- headblowervoltage1 =(double )Head_Fan_PWM_Command[HEAD_FAN_RIGHT];
- headblowervoltage2 =(double )Head_Fan_PWM_Command[HEAD_FAN_LEFT];
- DiagnosticsMonitor.headblowervoltage1 = &headblowervoltage1;
- DiagnosticsMonitor.headblowervoltage2 = &headblowervoltage2;
- DiagnosticsMonitor.n_headblowervoltage1 = 1;
- DiagnosticsMonitor.n_headblowervoltage2 = 1;
-#ifdef FOUR_WINDERS
-// double dancer2,dancer3,dancer4;
- dancer2 = Control_Read_Dancer_Position(HARDWARE_DANCER_2,0);
- dancer3 = Control_Read_Dancer_Position(HARDWARE_DANCER_3,0);
- dancer4 = Control_Read_Dancer_Position(HARDWARE_DANCER_4,0);
- DiagnosticsMonitor.n_headblower1airflow = 1;
- DiagnosticsMonitor.n_headblower2airflow = 1;
- DiagnosticsMonitor.headblower1airflow = &dancer4;
- DiagnosticsMonitor.headblower2airflow = &dancer3;
- DiagnosticsMonitor.headblowervoltage1 = &dancer2;
- DiagnosticsMonitor.n_headblowervoltage1 = 1;
-#endif
+
DiagnosticsMonitor.dryerzone1temperature =
HeaterTemperature[HEATER_TYPE__DryerAirHeater];
DiagnosticsMonitor.dryerzone2temperature =
@@ -991,19 +978,11 @@ void Diagnostic100msecCollection(void)
{
//if (JobIsActive())
{
-#ifdef FOUR_WINDERS
- DiagnosticLoadMotor(FEEDER_MOTOR, ThreadGetMotorSpeed (WINDER_2_MOTOR));
- DiagnosticLoadMotor(DRYER_MOTOR, ThreadGetMotorSpeed (WINDER_3_MOTOR));
- DiagnosticLoadMotor(POOLER_MOTOR, ThreadGetMotorSpeed (WINDER_4_MOTOR));
- DiagnosticLoadMotor(WINDER_MOTOR, ThreadGetMotorSpeed (WINDER_MOTOR));
- DiagnosticLoadMotor(SCREW_MOTOR, ThreadGetMotorSpeed (SCREW_MOTOR));
-#else
DiagnosticLoadMotor(FEEDER_MOTOR, ThreadGetMotorSpeed (FEEDER_MOTOR));
DiagnosticLoadMotor(DRYER_MOTOR, ThreadGetMotorSpeed (DRYER_MOTOR));
DiagnosticLoadMotor(POOLER_MOTOR, ThreadGetMotorSpeed (POOLER_MOTOR));
DiagnosticLoadMotor(WINDER_MOTOR, ThreadGetMotorSpeed (WINDER_MOTOR));
DiagnosticLoadMotor(SCREW_MOTOR, ThreadGetMotorSpeed (SCREW_MOTOR));
-#endif
}
for (i=0;i<MAX_SYSTEM_DISPENSERS;i++)
{
diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
index 019be5c31..011e25317 100644
--- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
+++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
@@ -66,6 +66,7 @@ bool GeneralHwReady = false;
bool PP_Machine = false;
HardwareBlower BlowerCfg;
+HardwareBlower HeadBlowerCfg[2];
char *SW_INFO_DIR = "0://SysInfo";
char HwConfigPath[50] = "0://SysInfo//GenHwCfg.cfg";
@@ -574,7 +575,18 @@ uint32_t HWConfiguration(UploadHardwareConfigurationRequest* UploadRequest)
{
LargeFansCfg = request->blowers[Dispenser_i]->voltage;
}
-
+ if((request->blowers[Dispenser_i]->enabled)&&(request->blowers[Dispenser_i]->hardwareblowertype == HARDWARE_BLOWER_TYPE__HeadBlower1))
+ {
+ HeadBlowerCfg[0].enabled = true;
+ HeadBlowerCfg[0].voltage = request->blowers[Dispenser_i]->voltage;
+ HeadBlowerCfg[0].heatingvoltage = request->blowers[Dispenser_i]->heatingvoltage;
+ }
+ if((request->blowers[Dispenser_i]->enabled)&&(request->blowers[Dispenser_i]->hardwareblowertype == HARDWARE_BLOWER_TYPE__HeadBlower2))
+ {
+ HeadBlowerCfg[1].enabled = true;
+ HeadBlowerCfg[1].voltage = request->blowers[Dispenser_i]->voltage;
+ HeadBlowerCfg[1].heatingvoltage = request->blowers[Dispenser_i]->heatingvoltage;
+ }
}
}
ControlStart();
diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h
index 55490a140..e99931acc 100644
--- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h
+++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h
@@ -20,6 +20,7 @@ uint32_t LoadConfigurationParamsFromFile(bool);
void HWConfigurationLoadFile(void);
extern HardwareBlower BlowerCfg;
+extern HardwareBlower HeadBlowerCfg[2];
extern bool DataUpdated;
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h
index 0220d1a6c..015c5ea83 100644
--- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h
+++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h
@@ -41,3 +41,8 @@ uint32_t HeatersEnd(void);
void HeatersControlStart(void);
void HeatersControlStop(void);
uint32_t Heaters_Init(void);
+double PressureSensorGetPressure(uint8_t SensorId);
+int HeadBlowersGetRPM(uint8_t fanId);
+double PressureSensorInit();
+void HeadBlowersInit();
+void HeadBlowersCfg();
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
index ce3ced6ef..8fe3de207 100644
--- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
@@ -8,6 +8,7 @@
///////////////////////////////////////////////////////////////////////////////////////////
#include "include.h"
#include <DataDef.h>
+#include <math.h>
#include "heaters.h"
#include "Heaters_ex.h"
@@ -38,6 +39,7 @@
#include "drivers/I2C_Communication/ADC_MUX/ADC_MUX.h"
#include "drivers/I2C_Communication/Head_Card/ADC/Head_ADC.h"
#include "Drivers/I2C_Communication/I2C.h"
+#include <Drivers/I2C_Communication/I2C_Task.h>
#include <Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.h>
#include "StateMachines/Printing/PrintingSTM.h"
@@ -91,11 +93,15 @@ uint32_t UnderHeatCounter [HEATER_TYPE_MAX_HEATERS] = {0,0,0,0,0,0,0,0,0,0,0,
uint32_t MainDryerHeaterMaxTempControl = 0xFF;
uint32_t SecondDryerHeaterMaxTempControl = 0xFF;
uint32_t DisasterControlId = 0xFF;
+double PressureSensorV0[2] = {0.0, 0.0};
+
#define DRYER_AIR_PT100 TEMP_SENSE_ANALOG_DRYER_TEMP1
#define DRYER_MAIN_PT100 TEMP_SENSE_ANALOG_DRYER_TEMP2
#define DRYER_SECONDARY_PT100 TEMP_SENSE_ANALOG_DRYER_TEMP3
#define MINIMUM_HEATER_READ 9.0
#define MAXIMUM_HEATER_READ 283
+#define PRESSURE_SENSOR_CP 0.225
+extern uint16_t Head_Fan_Tach[2];
bool UseSecondaryDrierHeater = true;
@@ -237,7 +243,6 @@ uint32_t HeatersDisasterControl(uint32_t x,uint32_t y);
uint32_t PrepareHeater(int HeaterId, uint32_t SetTemperatue);
void HeatersStartControlTimer (void);
-
//**********************************************************************
//******************** CODE *******************************************/
//**********************************************************************
@@ -1843,3 +1848,56 @@ void HeatersControlTask(UArg arg0, UArg arg1)
}
}
}
+
+
+/********************************************************************************
+ * Arc Head Pressure sensors
+ *******************************************************************************/
+
+void HeadBlowersInit()
+{
+ Trigger_Head_Fan_Control(HEAD_FAN_RIGHT, 0);
+ Trigger_Head_Fan_Control(HEAD_FAN_LEFT, 0);
+}
+
+void HeadBlowersCfg()
+{
+ if (HeadBlowerCfg[0].enabled) {
+ Trigger_Head_Fan_Control(HEAD_FAN_RIGHT, HeadBlowerCfg[0].voltage);
+ }
+ if (HeadBlowerCfg[1].enabled) {
+ Trigger_Head_Fan_Control(HEAD_FAN_LEFT, HeadBlowerCfg[1].voltage);
+ }
+}
+
+double PressureSensorInit(int fanId)
+{
+ int sensorId;
+ sensorId = (fanId == HEAD_FAN_RIGHT)?(HEAD_PT100_ZONE_5_0X84_0):(HEAD_PT100_ZONE_7_0X86_0);
+ PressureSensorV0[fanId] = MillisecGetTemperatures(sensorId);
+ PressureSensorV0[fanId] *= 10;
+ return PressureSensorV0[fanId];
+}
+
+int HeadBlowersGetRPM(uint8_t fanId)
+{
+ Trigger_Head_Read_Tacho(fanId);
+
+ if (Head_Fan_Tach[fanId] == 0x1FFE) {
+ return 0;
+ } else {
+ return 7864320/Head_Fan_Tach[fanId];
+ }
+}
+
+double PressureSensorGetPressure(uint8_t SensorId)
+{
+ double V0, Vm, Q, Cp;
+
+ Cp = PRESSURE_SENSOR_CP;
+ V0 = (SensorId == HEAD_PT100_ZONE_5_0X84_0)?(PressureSensorV0[0]):(PressureSensorV0[1]);
+ Vm = MillisecGetTemperatures(SensorId);
+ Vm *= 10;
+ Q = sqrt(Vm - V0 + 22) * Cp;
+ return Q;
+}