aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2020-02-09 18:43:35 +0200
committerShlomo Hecht <shlomo@twine-s.com>2020-02-09 18:43:35 +0200
commit0d1c8e051bcbd1b05646301ffef59b48d9490e23 (patch)
treebcf7612a5d964e1e7a2d6c9eab2881e94f63ebfd /Software/Embedded_SW/Embedded/Modules
parentc9be42c7273cc76e9318c1a4c47fd60d7892f296 (diff)
downloadTango-0d1c8e051bcbd1b05646301ffef59b48d9490e23.tar.gz
Tango-0d1c8e051bcbd1b05646301ffef59b48d9490e23.zip
improve powerstep and reglar, new process params, start of power management
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c17
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/process.c49
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h1
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c7
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c27
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c28
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c3
7 files changed, 85 insertions, 47 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
index 5a0432389..bb8f5d994 100644
--- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
+++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
@@ -112,6 +112,7 @@ double midtankinklevel[MAX_SYSTEM_DISPENSERS][1];
double MidTankpressure[MAX_SYSTEM_DISPENSERS][1];
double HeadFlowMeter;
double DrierFlowMeter;
+double AcVoltage;
double HeatersCurrent[NUM_OF_CURRENT_HEATERS][1];
double VOC_Sensor;
double OverallTemperature;
@@ -514,10 +515,19 @@ void DiagnosticOneMinuteCollection(void)
DrierFlowMeter = GetWHSAirFlow(DRIER_FLOW_METER);
DiagnosticsMonitor.n_dryerairflow = 1;
DiagnosticsMonitor.dryerairflow = &DrierFlowMeter;
+
HeadFlowMeter = GetWHSAirFlow(HEAD_FLOW_METER);
DiagnosticsMonitor.n_headairflow = 1;
DiagnosticsMonitor.headairflow = &HeadFlowMeter;
+/* if (Head_Type > HEAD_TYPE_SYLKO_WITHOUT_CARD) //rapid/pp machines
+ {
+ AcVoltage = ReadVAC();
+ DiagnosticsMonitor.whsblower2voltage = &AcVoltage;
+ DiagnosticsMonitor.n_whsblower2voltage = 1;
+ }
+*/
+
}
@@ -526,6 +536,13 @@ void DiagnosticOneSecCollection(void)
int i;
memset(HeaterCounterIndex,0,sizeof(HeaterCounterIndex));
+ if (Head_Type > HEAD_TYPE_SYLKO_WITHOUT_CARD) //rapid/pp machines
+ {
+ AcVoltage = ReadVAC();
+ DiagnosticsMonitor.whsblower2voltage = &AcVoltage;
+ DiagnosticsMonitor.n_whsblower2voltage = 1;
+ }
+
if (Head_Type == HEAD_TYPE_SYLKO_WITHOUT_CARD)
{
DiagnosticLoadTemperature(HARDWARE_PID_CONTROL_TYPE__MixerHeater, MillisecGetTemperatures( MIXER_PT100));
diff --git a/Software/Embedded_SW/Embedded/Modules/General/process.c b/Software/Embedded_SW/Embedded/Modules/General/process.c
index 5bfc46559..ad53149f0 100644
--- a/Software/Embedded_SW/Embedded/Modules/General/process.c
+++ b/Software/Embedded_SW/Embedded/Modules/General/process.c
@@ -63,6 +63,10 @@ void HeatersStopControlOnHeatersOff(ProcessParameters* ProcessParams)
HeatersControlStop();
REPORT_MSG(temp_sum,"Heating control off - temperatures off");
}
+ else
+ {
+ HeatersControlStart();
+ }
}
uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData)
{
@@ -107,7 +111,7 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData)
if (ProcessParams->headzone1temp>1)
{
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ1, true,ProcessParams->headzone1temp);
-#ifdef Use_Head_Card
+#ifdef rUse_Head_Card
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ7, true,ProcessParams->headzone1temp);
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater1, true,ProcessParams->headzone1temp);
#endif
@@ -115,7 +119,7 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData)
else
{
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ1, false,ProcessParams->headzone1temp);
-#ifdef Use_Head_Card
+#ifdef rUse_Head_Card
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ7, false,ProcessParams->headzone1temp);
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater1, false,ProcessParams->headzone1temp);
#endif
@@ -123,7 +127,7 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData)
if (ProcessParams->headzone2temp>1)
{
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ2, true,ProcessParams->headzone2temp);
-#ifdef Use_Head_Card
+#ifdef rUse_Head_Card
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ8, true,ProcessParams->headzone2temp);
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater2, true,ProcessParams->headzone2temp);
#endif
@@ -131,7 +135,7 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData)
else
{
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ2, false,ProcessParams->headzone2temp);
-#ifdef Use_Head_Card
+#ifdef rUse_Head_Card
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ8, false,ProcessParams->headzone2temp);
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater2, false,ProcessParams->headzone2temp);
#endif
@@ -139,56 +143,56 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData)
if (ProcessParams->headzone3temp>1)
{
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ3, true,ProcessParams->headzone3temp);
-#ifdef Use_Head_Card
+#ifdef rUse_Head_Card
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ9, true,ProcessParams->headzone3temp);
#endif
}
else
{
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ3, false,ProcessParams->headzone3temp);
-#ifdef Use_Head_Card
+#ifdef rUse_Head_Card
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ9, false,ProcessParams->headzone3temp);
#endif
}
if (ProcessParams->headzone4temp>1)
{
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ4, true,ProcessParams->headzone4temp);
-#ifdef Use_Head_Card
+#ifdef rUse_Head_Card
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ10, true,ProcessParams->headzone4temp);
#endif
}
else
{
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ4, false,ProcessParams->headzone4temp);
-#ifdef Use_Head_Card
+#ifdef rUse_Head_Card
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ10, false,ProcessParams->headzone4temp);
#endif
}
if (ProcessParams->headzone5temp>1)
{
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ5, true,ProcessParams->headzone5temp);
-#ifdef Use_Head_Card
+#ifdef rUse_Head_Card
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ11, true,ProcessParams->headzone5temp);
#endif
}
else
{
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ5, false,ProcessParams->headzone5temp);
-#ifdef Use_Head_Card
+#ifdef rUse_Head_Card
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ11, false,ProcessParams->headzone5temp);
#endif
}
if (ProcessParams->headzone6temp>1)
{
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ6, true,ProcessParams->headzone6temp);
-#ifdef Use_Head_Card
+#ifdef rUse_Head_Card
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ12, true,ProcessParams->headzone6temp);
#endif
}
else
{
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ6, false,ProcessParams->headzone6temp);
-#ifdef Use_Head_Card
+#ifdef rUse_Head_Card
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ12, false,ProcessParams->headzone6temp);
#endif
}
@@ -196,24 +200,7 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData)
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__DryerAirTemperature, true,ProcessParams->dryerzone1temp);
else
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__DryerAirTemperature, false,ProcessParams->dryerzone1temp);
-/* if (ProcessParams->dryerzone2temp)
- status |= HeaterCommandRequestMessage(
- HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain, true,
- ProcessParams->dryerzone2temp);
- else
- status |= HeaterCommandRequestMessage(
- HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain, false,
- ProcessParams->dryerzone2temp);
- if (ProcessParams->dryerzone3temp)
- status |= HeaterCommandRequestMessage(
- HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary, true,
- ProcessParams->dryerzone3temp);
- else
- status |= HeaterCommandRequestMessage(
- HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary, false,
- ProcessParams->dryerzone3temp);
- */
- /* if (ProcessParams->headzone7temp>1)
+ if (ProcessParams->headzone7temp>1)
{
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ7, true,ProcessParams->headzone7temp);
}
@@ -277,7 +264,7 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData)
{
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater2, false,ProcessParams->stspzone2temp);
}
-*/
+
HeatersStopControlOnHeatersOff(ProcessParams);
dyeingspeed = ProcessParams->dyeingspeed;
dryerbufferlength = ProcessParams->dryerbufferlength;
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h
index bcc19bd6f..0c6ee94ee 100644
--- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h
+++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h
@@ -12,6 +12,7 @@ extern EventType HeaterEventType[HEATER_TYPE_MAX_HEATERS];
extern EventType HeaterUnderEventType[HEATER_TYPE_MAX_HEATERS];
extern EventType HeaterUnderEventType_B[HEATER_TYPE_MAX_HEATERS];
+extern uint32_t stub_heating_limit;
//uint32_t HeaterCommandRequestMessage(MessageContainer* requestContainer);
uint32_t HeaterConfigRequestMessage(HardwarePidControl* request);
uint32_t HeaterConfigSetSharedHeatersParams (uint32_t outputproportionalcycletime, uint32_t outputproportionalsinglestep);
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c
index 0f6cb5124..349d5a5e3 100644
--- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c
+++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c
@@ -186,11 +186,12 @@ uint32_t HeaterConfigSetSharedHeatersParams(uint32_t outputproportionalcycletime
*
* parameters - the cycle time for the coordinated operation, the size (in MCU cycles) of a single step.
*/
+uint32_t stub_heating_limit = 100;
uint32_t HeaterRecalculateSharedHeatersParams(uint32_t deviceId, uint32_t new_outputproportionalpowerlimit)
{
int Slice_i;
int Heater1000Slices,Heater200aSlices /*,Heater200bSlices Currently both 200W heaters will work together*/;
-
+ uint32_t stub_outputproportionalpowerlimit = new_outputproportionalpowerlimit;
if (NumberOFSlicesInUse > MAX_TIMESLICES )
{
@@ -198,8 +199,10 @@ uint32_t HeaterRecalculateSharedHeatersParams(uint32_t deviceId, uint32_t new_ou
return ERROR;//NumberOFSlicesInUse = MAX_TIMESLICES;
}
+ if (stub_outputproportionalpowerlimit > stub_heating_limit)
+ stub_outputproportionalpowerlimit = stub_heating_limit;
// all numbers are rounded down. better to have carefully calculated numbers
- HeaterControl[deviceId].outputproportionalpowerlimit = new_outputproportionalpowerlimit;///100;
+ HeaterControl[deviceId].outputproportionalpowerlimit = stub_outputproportionalpowerlimit;///100;
Heater1000Slices = HeaterControl[HEATER_TYPE__DryerMainHeater].outputproportionalpowerlimit * NumberOFSlicesInUse / 100;
Heater200aSlices = HeaterControl[HEATER_TYPE__DryerSecondaryHeater].outputproportionalpowerlimit * NumberOFSlicesInUse / 100;
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
index 2ee7a3d2a..d84098469 100644
--- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
@@ -469,8 +469,8 @@ uint32_t HeatersSingleHeaterEnd(int HeaterId)
}
DeActivateHeater(HEATER_TYPE__DryerMainHeater);
DeActivateHeater(HEATER_TYPE__DryerSecondaryHeater);
- Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerMainHeater]);
- Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerSecondaryHeater]);
+ //Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerMainHeater]);
+ //Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerSecondaryHeater]);
HeaterPIDConfig[HeaterId].m_SetParam = 0;
HeaterCmd[HeaterId].targettemperatue = 0;
HeaterReady[HeaterId] = true;
@@ -1167,8 +1167,8 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue)
Control_Voltage_To_Blower(BlowerCfg.voltage);
}
HeaterReady[index] = true;
- Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerMainHeater]);
- Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerSecondaryHeater]);
+ //Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerMainHeater]);
+ //Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerSecondaryHeater]);
}
return OK;
@@ -1473,6 +1473,23 @@ uint32_t HeatersDisasterControl(uint32_t x,uint32_t y)
}
return OK;
}
+bool UseSecondaryDrierHeater = true;
+uint32_t DrierHeaterVlotageSetup(double voltage)
+{
+ uint32_t status = OK;
+ double DrierAcVoltage = 0.0;
+ if (Head_Type > HEAD_TYPE_SYLKO_WITHOUT_CARD) //rapid/pp machines
+ {
+ DrierAcVoltage = ReadVAC();
+ //if ()
+
+ }
+ else
+ {
+ UseSecondaryDrierHeater = true;
+ }
+
+}
uint32_t HeatersControlLoop(uint32_t tick)
{
//char str[100];
@@ -1500,7 +1517,7 @@ uint32_t HeatersControlLoop(uint32_t tick)
if (AcHeaterDisaster == false)
{
- if (HeaterReady[HEATER_TYPE__DryerAirHeater] == true)
+ //if (HeaterReady[HEATER_TYPE__DryerAirHeater] == true)
{
if (TimeSliceAllocation[SliceCounter] == HEATER_TYPE__DryerMainHeater)
{
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
index dbe46db97..03beac151 100644
--- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
@@ -27,6 +27,7 @@
#include "Modules/IDS/ids_ex.h"
#include "Modules/Control/MillisecTask.h"
#include "modules/thread/thread_ex.h"
+#include "modules/heaters/heaters_ex.h"
#include <Drivers/I2C_Communication/I2C.h>
#include <Drivers/I2C_Communication/Head_Card/I2C_Head_Mux.h>
#include <Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.h>
@@ -531,21 +532,32 @@ void Stub_ProgressRequest(MessageContainer* requestContainer)
if(request->amount == 0xB3) //fast refresh for pressure
{
LOG_ERROR(request->amount,"keep alive test");
- //keepalivetest = true;
response.progress = keepalivetest;
response.has_progress = true;
}
else
- if(request->amount == 0xB4) //fast refresh for pressure
- {
- LOG_ERROR(request->amount,"IDS_Dispenser_Content_Init");
- IDS_Dispenser_Content_Init();
- //keepalivetest = true;
- response.progress = keepalivetest;
- response.has_progress = true;
+ if(request->amount == 0xB4) //fast refresh for pressure
+ {
+ LOG_ERROR(request->amount,"IDS_Dispenser_Content_Init");
+ IDS_Dispenser_Content_Init();
+ response.progress = keepalivetest;
+ response.has_progress = true;
+ }
+ else
+ if(request->amount == 0xB5) //fast refresh for pressure
+ {
+ if (request->delay<=100)
+ {
+ LOG_ERROR(request->delay,"set stub_heating_limit");
+ stub_heating_limit = request->delay;
}
+ response.progress = request->delay;
+ response.has_progress = true;
+
+ }
+
else
if((request->amount == 0xDF) && (request->delay == 0xDF)) //Power off
{
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c
index e53adabb7..ec705c2d2 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c
@@ -73,7 +73,8 @@ uint32_t MotorsConfigMessage(HardwareConfiguration * HWrequest)
MotorsCfg[Motor_i].pulseperround = request->pulseperround;
MotorsCfg[Motor_i].pulleyradius = request->pulleyradius;
MotorsCfg[Motor_i].configword = request->configword;
- /*if(MotorDriverResponse[Motor_i].DriverType == CombinrdMotDriver)
+ MotorsCfg[Motor_i].directionthreadwize = request->directionthreadwize;//L6470 + L6472
+/* if(MotorDriverResponse[Motor_i].DriverType != CombinrdMotDriver)
{
MotorsCfg[Motor_i].directionthreadwize = request->directionthreadwize ^ 1;//PowerSTEP01
}