aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2020-02-19 20:37:44 +0200
committerRoy Ben-Shabat <Roy@Twine-s.com>2020-02-19 20:37:44 +0200
commitd6e2772dd98e6880de14ea12be0ef53bae24f763 (patch)
tree4d3385fc155c5bc5cb080da5318dc7dfeb4d0d75 /Software/Embedded_SW/Embedded/Modules
parentb41a0cfe17a485abd077b7f059bb9620cf6e474c (diff)
parent7577588797cea9bd827df9170180370b739a5a8d (diff)
downloadTango-d6e2772dd98e6880de14ea12be0ef53bae24f763.tar.gz
Tango-d6e2772dd98e6880de14ea12be0ef53bae24f763.zip
Merge branch 'master' of https://twinetfs.visualstudio.com/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c29
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c3
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/control.c2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c30
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/process.c6
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c66
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c63
9 files changed, 185 insertions, 18 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
index e06e908bd..22cc33822 100644
--- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
+++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
@@ -1566,7 +1566,7 @@ void SendEventNotifications(void)
}
EventsResponse.n_events = 0;
- UInt Key = Task_disable();
+ //UInt Key = Task_disable();
for (i = 0;i<NumOfSystemAlarms;i++)
{
if (AlarmState[i].Status == true)
@@ -1594,14 +1594,24 @@ void SendEventNotifications(void)
{
EventsResponse.events[e]=AlarmState[i].EventPtr;
e++;
+ if (e > EventsResponse.n_events)
+ {
+ ReportWithPackageFilter(AlarmFilter,"Error in alarm numbers - large ", __FILE__,__LINE__,EventsResponse.n_events, RpFatalError, e, 0);
+ break;
+ }
}
}
}
+ if (e!=EventsResponse.n_events)
+ {
+ ReportWithPackageFilter(AlarmFilter,"Error in alarm numbers - small ", __FILE__,__LINE__,EventsResponse.n_events, RpFatalError, e, 0);
+ EventsResponse.n_events = e;
+ }
}
else
{
LOG_ERROR(EventsResponse.n_events,"events malloc error");
- Task_restore(Key);
+ //Task_restore(Key);
return;
}
}
@@ -1609,7 +1619,7 @@ void SendEventNotifications(void)
{
EventsResponse.events = NULL;
}
- Task_restore(Key);
+ //Task_restore(Key);
responseContainer = createAllocatedContainer(MESSAGE_TYPE__StartEventsNotificationResponse, AlarmHandlingToken, false, &EventsResponse, &start_events_notification_response__pack, &start_events_notification_response__get_packed_size,&alarm_response_buffer);
responseContainer.has_continuous = true;
responseContainer.continuous = true;
@@ -1670,11 +1680,22 @@ uint32_t StartEventsNotificationRequestFunc(MessageContainer* requestContainer)
// ReportInitParams InitParams;
//ControlStart();
EventsNotificationRequestAccepted = true;
- //AlarmHandlingStart();
+ AlarmHandlingStart();
+ MessageContainer responseContainer;
+
+ StartEventsNotificationResponse response = START_EVENTS_NOTIFICATION_RESPONSE__INIT;
StartEventsNotificationRequest* request = start_events_notification_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data);
ustrncpy (AlarmHandlingToken, requestContainer->token,36);
start_events_notification_request__free_unpacked(request,NULL);
+
+ responseContainer = createContainer(MESSAGE_TYPE__StartEventsNotificationResponse, AlarmHandlingToken, false, &response, &start_events_notification_response__pack, &start_events_notification_response__get_packed_size);
+ responseContainer.has_continuous = true;
+ responseContainer.continuous = true;
+ uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer));
+ size_t container_size = message_container__pack(&responseContainer, container_buffer);
+ my_free(responseContainer.data.data);
+ SendChars(container_buffer, container_size);
return status;
}
uint32_t StopEventsNotificationRequestFunc(MessageContainer* requestContainer)
diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
index 2c7512129..fe350d78d 100644
--- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
+++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
@@ -569,6 +569,7 @@ void setRapidPressureRead(bool value)
}
uint16_t PumpCounter = 0;
+uint16_t realtimetest[101];
uint32_t MillisecLowLoop(uint32_t tick)
{
uint8_t Motor_i,Disp_i,temp;
@@ -598,6 +599,7 @@ uint32_t MillisecLowLoop(uint32_t tick)
Onesecond_Tick = (tick%eOneSecond == 0) ?true:false;
OneMinute_Tick = (tick%eOneMinute == 0) ?true:false;
OneHourTick = (tick%eOneHour == 0) ?true:false;
+ realtimetest[(tick%1000)/10]++;
//gather Motor data from FPGA
//ROM_IntMasterDisable();
int StartPT100 = 0;
@@ -723,6 +725,7 @@ uint32_t MillisecLowLoop(uint32_t tick)
WHS_Blower_Avarege_ORF1(); //drier
WHS_Blower_Avarege_ORF3(); //head
Trigger_WHSReadAllFanTacho ();
+ WHS_Start_Blower_Control_Closed_Loop ();
}
if (OneMinute_Tick)
{
diff --git a/Software/Embedded_SW/Embedded/Modules/Control/control.c b/Software/Embedded_SW/Embedded/Modules/Control/control.c
index ba11ff58c..bea68e314 100644
--- a/Software/Embedded_SW/Embedded/Modules/Control/control.c
+++ b/Software/Embedded_SW/Embedded/Modules/Control/control.c
@@ -585,7 +585,7 @@ uint32_t ControlLowLoop(uint32_t tick)
{
if (ControlArray[ControlLowDevice_i].ControlActive)
{
- if (tick == ControlArray[ControlLowDevice_i].StartTick)
+ if (tick - ControlArray[ControlLowDevice_i].StartTick<=skipped_ticks)
continue;
if (ControlArray[ControlLowDevice_i].ControlTiming == eOneMillisecond)
continue;
diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
index 63fe510c4..0764b2028 100644
--- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
+++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
@@ -446,7 +446,7 @@ void DiagnosticOneMinuteCollection(void)
}
DiagnosticsMonitor.n_overalltemperature = 1;
OverallTemperature = max(MillisecGetTemperatures(TEMP_SENSE_AN_ENCLOSURETEMP1),MillisecGetTemperatures(TEMP_SENSE_AN_ENCLOSURETEMP2));
- OverallTemperature = ((int)(MillisecGetTemperatures(TEMP_SENSE_AN_ENCLOSURETEMP1))*10 + (int)(MillisecGetTemperatures(TEMP_SENSE_AN_ENCLOSURETEMP2)/100));
+ OverallTemperature = ((int)(MillisecGetTemperatures(TEMP_SENSE_AN_ENCLOSURETEMP1)/100)*1000 + (int)(MillisecGetTemperatures(TEMP_SENSE_AN_ENCLOSURETEMP2)/100));
DiagnosticsMonitor.overalltemperature = &OverallTemperature;
DiagnosticsMonitor.n_midtank1level = 1;
diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
index 4f6a40c90..ec59385ab 100644
--- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
+++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
@@ -129,6 +129,7 @@ uint32_t HWConfigurationInit(void)
status = HWConfiguration(UploadRequest);
if (status !=OK)
{
+ AlarmHandlingSetAlarm (EVENT_TYPE__MACHINE_STATE_NO_CFG_FILE,ON);
SetMachineState(MACHINE_STATE_HW_CONFIG_FAILED);
STATUS_GREEN_LED_OFF;
}
@@ -494,12 +495,18 @@ uint32_t HWConfiguration(UploadHardwareConfigurationRequest* UploadRequest)
}
BlowerCfg.enabled = true;
- BlowerCfg.voltage = 2650;
- BlowerCfg.heatingvoltage = 3000;
if (WHS_Type == WHS_TYPE_UNKNOWN)
- blowerType = HARDWARE_BLOWER_TYPE__WHSBlower2;
- else
+ {
blowerType = HARDWARE_BLOWER_TYPE__DefaultBlower;
+ BlowerCfg.voltage = 3000;
+ BlowerCfg.heatingvoltage = 2650;
+ }
+ else
+ {
+ blowerType = HARDWARE_BLOWER_TYPE__WHSBlower2;
+ BlowerCfg.voltage = 2200;
+ BlowerCfg.heatingvoltage = 2000;
+ }
if (request->n_blowers)
{
for (Dispenser_i = 0; Dispenser_i < request->n_blowers ; Dispenser_i++)
@@ -717,6 +724,21 @@ uint32_t LoadConfigurationParamsFromFile(bool Initialize)
}
return Fresult;
}
+void HWConfigurationLoadFile(void)
+{
+ FRESULT Fresult = FR_OK;
+ uint8_t* buffer = NULL;
+ uint32_t Bytes = 0;
+ buffer = HWConfigurationLoadFromFile(&Bytes); //load hardware config
+ if (buffer)
+ {
+ ReadAppAndProgram(GENHWCFG_MAP_IN_FLASH, 4,&Bytes);
+ ReadAppAndProgram(GENHWCFG_MAP_IN_FLASH+4, Bytes, buffer);
+ free (buffer);
+ FlashInitResults[0] = true;
+ }
+ Report("Hardware Initialized", __FILE__,__LINE__,Bytes, RpMessage, GENHWCFG_MAP_IN_FLASH, 0);
+}
void FlashInitAndLoad(void)
{
FRESULT Fresult = FR_OK;
diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h
index 76e4d4414..55490a140 100644
--- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h
+++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h
@@ -17,6 +17,8 @@ extern void HWSystemResetRequest(MessageContainer* requestContainer);
uint32_t HWConfigurationInit(void);
void FlashInitAndLoad(void);
uint32_t LoadConfigurationParamsFromFile(bool);
+void HWConfigurationLoadFile(void);
+
extern HardwareBlower BlowerCfg;
extern bool DataUpdated;
diff --git a/Software/Embedded_SW/Embedded/Modules/General/process.c b/Software/Embedded_SW/Embedded/Modules/General/process.c
index 6b87db616..815a26385 100644
--- a/Software/Embedded_SW/Embedded/Modules/General/process.c
+++ b/Software/Embedded_SW/Embedded/Modules/General/process.c
@@ -22,6 +22,7 @@
#include "modules/ids/ids_ex.h"
#include "Common/SWUpdate/FileSystem.h"
#include "StateMachines/Initialization/PowerIdle.h"
+#include "StateMachines/Initialization/InitSequence.h"
#include "drivers/Flash_ram/FlashProgram.h"
@@ -94,6 +95,11 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData)
if (ProcessParams->headzone6temp > MAX_ALLOWED_TEMPERATURE) status = ERROR_CODE__INVALID_PARAMETER;
if (status != 0)
return status;
+ if (GetMachineState()<MACHINE_STATE_HEATING_STARTED)
+ {
+ status = ERROR_CODE__GENERAL_ERROR;
+ return status;
+ }
if (ProcessParams)
{
memcpy (&ProcessParametersKeep,ProcessParams,sizeof(ProcessParameters));
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
index 290e65fa9..06da53823 100644
--- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
@@ -40,6 +40,8 @@
#include "StateMachines/Printing/PrintingSTM.h"
#include "StateMachines/Initialization/PowerIdle.h"
+#include "StateMachines/Initialization/PowerOffSequence.h"
+#include "StateMachines/Initialization/InitSequence.h"
/******************** Data Structures ********************************************/
@@ -1485,19 +1487,75 @@ uint32_t HeatersDisasterControl(uint32_t x,uint32_t y)
return OK;
}
bool UseSecondaryDrierHeater = true;
-uint32_t DrierHeaterVlotageSetup(double voltage)
+double TotalCurrentLimit(double VAC)
+{
+ if (VAC<=210)
+ {
+ return 5.8;
+ }
+ else if (VAC>222)
+ {
+ return 5.15;
+ }
+ else
+ {
+ return 5.5;
+ }
+
+}
+uint32_t DrierHeaterVoltageSetup(double voltage)
{
- uint32_t status = OK;
double DrierAcVoltage = 0.0;
+ char str[100];
+ bool tempDrier2 = UseSecondaryDrierHeater;
+
if (Head_Type > HEAD_TYPE_SYLKO_WITHOUT_CARD) //rapid/pp machines
{
DrierAcVoltage = ReadVAC();
-
+ if (DrierAcVoltage<=180)
+ {
+ AlarmHandlingSetAlarm(EVENT_TYPE__POWER_UP_BIT_FAILURE, true);
+ ReportWithPackageFilter(HeatersFilter,"Power too low!!!!!", __FILE__,__LINE__,DrierAcVoltage, RpMessage, 0, 0);
+ }
+ else if (DrierAcVoltage>264)
+ {
+ AlarmHandlingSetAlarm(EVENT_TYPE__POWER_UP_BIT_FAILURE, true);
+ ReportWithPackageFilter(HeatersFilter,"Power too high!!!!!", __FILE__,__LINE__,DrierAcVoltage, RpMessage, 0, 0);
+ ReportWithPackageFilter(HeatersFilter,"Power too high!!!!!", __FILE__,__LINE__,DrierAcVoltage, RpMessage, 0, 0);
+ ReportWithPackageFilter(HeatersFilter,"Power too high!!!!!", __FILE__,__LINE__,DrierAcVoltage, RpMessage, 0, 0);
+ HeatersEnd();
+ //PowerOffPowerOff();
+ }
+ else if (DrierAcVoltage<205)
+ {
+ UseSecondaryDrierHeater = true;
+ }
+ else if (DrierAcVoltage>224)
+ {
+ UseSecondaryDrierHeater = false;
+ }
+ else
+ {
+ if ((GetZone2RMSCurrent(DrierAcVoltage)+Get_Heaters_Current(HEATER_DRYER_CURRENT_1))>TotalCurrentLimit(DrierAcVoltage))
+ {
+ UseSecondaryDrierHeater = false;
+ }
+ else
+ {
+ UseSecondaryDrierHeater = true;
+ }
+ }
}
else
{
UseSecondaryDrierHeater = true;
}
+ if (tempDrier2 != UseSecondaryDrierHeater)
+ {
+ usnprintf(str, 100, "\r\n Changing Drier 2 setting VAC %d D1 Current %d D2 assumed current %d limit %d"
+ ,DrierAcVoltage,(int)(GetZone2RMSCurrent(DrierAcVoltage)*100),(int)(Get_Heaters_Current(HEATER_DRYER_CURRENT_1)*100),(int)(TotalCurrentLimit(DrierAcVoltage)*100));
+ ReportWithPackageFilter(HeatersFilter,str, __FILE__,__LINE__,DrierAcVoltage, RpMessage, UseSecondaryDrierHeater, 0);
+ }
return OK;
}
uint32_t HeatersControlLoop(uint32_t tick)
@@ -1541,7 +1599,7 @@ uint32_t HeatersControlLoop(uint32_t tick)
}
if ((HeaterMaxTempFlag[HEATER_TYPE__DryerSecondaryHeater] == false)&&(UseSecondaryDrierHeater == true))
{
-#warning trial use both heaters in drier
+//#warning trial use both heaters in drier
ActivateHeater (HEATER_TYPE__DryerSecondaryHeater);
//DeActivate HEATER_TYPE__DryerSecondaryHeater
//DeActivateHeater (HEATER_TYPE__DryerSecondaryHeater);
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
index 88b8cb0c9..ccd051c71 100644
--- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
@@ -14,10 +14,12 @@
#include "drivers/Flash_Memory/FATFS/ff.h"
#include "drivers/Flash_Memory/FATFS/Control_File_System.h"
+#include "drivers/Flash_ram/FlashProgram.h"
#include "drivers/adc_sampling/adc.h"
#include "drivers/Heater/TemperatureSensor.h"
#include "drivers/ADC_Sampling/adc.h"
#include "drivers/Flash_ram/MCU_E2Prom.h"
+#include "Drivers/SSI_Comm/Dancer/Dancer.h"
#include "Drivers/I2C_Communication/Head_Card/PT100/Head_PT100_ADC.h"
#include "Drivers/I2C_Communication/Head_Card/Fan/fan_click.h"
@@ -121,18 +123,30 @@ void Stub_ProgressRequest(MessageContainer* requestContainer)
{
if (WHS_Type == WHS_TYPE_NEW)
{
- WHS_Set_Blower_Control_Closed_Loop (request->delay);
+ WHS_Set_SetPoint_Q_value((double) request->delay);
response.progress = 0;
response.has_progress = false;
}
}
else
+ if (request->amount == 0x3E6) // get WHS Blower speed by Q value
+ {
+ if (WHS_Type == WHS_TYPE_NEW)
+ {
+ response.progress = WHS_Get_Volt_Blower_Control();
+ //response.progress = 0;
+ response.has_progress = true;
+ }
+ }
+ // WHS_Get_Volt_Blower_Control
+ else
if(request->amount == 0x3EA)
{
uint16_t tempu16 = 0;
+ double temp_double = 0.0;
if (WHS_Type == WHS_TYPE_NEW)
{
- switch(request->delay )// set WHS Blower speed 0x00-0xfff
+ switch(request->delay )// get A2D
{
case 0:
get_orf_1(&tempu16);
@@ -161,12 +175,53 @@ void Stub_ProgressRequest(MessageContainer* requestContainer)
case 8:
tempu16 = 0; //get_cur_vlv2(&tempu16);
break;
+ case 10:
+ temp_double = get_ORF1_Q();
+ break;
+ case 12:
+ temp_double = get_ORF3_Q();
+ break;
+ case 20:
+ temp_double = get_average_ORF1_Q();
+ break;
+ case 22:
+ temp_double = get_average_ORF3_Q();
+ break;
+
+ case 11:
+ //get_orf_2(&tempu16);
+ break;
+ case 13:
+ //get_vlev1(&tempu16);
+ break;
+ case 14:
+ //get_vlev2(&tempu16);
+ break;
+ case 15:
+ //get_gas_out(&tempu16);
+ break;
+ case 16:
+ //get_cur_fan(&tempu16);
+ break;
+ case 17:
+ //get_cur_vlv1(&tempu16);
+ break;
+ case 18:
+ //tempu16 = 0; //get_cur_vlv2(&tempu16);
+ break;
default :
tempu16 = 0x500; //get_cur_vlv2(&tempu16);
break;
}
}
- response.progress = (double)tempu16;
+ if ((request->delay)<10)
+ {
+ response.progress = (double)tempu16;
+ }
+ else
+ {
+ response.progress = temp_double;
+ }
response.has_progress = true;
}
else //
@@ -511,7 +566,7 @@ void Stub_ProgressRequest(MessageContainer* requestContainer)
else
if((request->amount == 0x0CE) && (request->delay == 0x0CE)) //Get Gas Sensor
{
- LOG_ERROR(request->delay,"FlashInitAndLoad");
+ LOG_ERROR(request->delay,"FlashInit");
FlashInit();
response.progress = (double)OK;
response.has_progress = true;