aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2020-02-20 11:39:04 +0200
committerShlomo Hecht <shlomo@twine-s.com>2020-02-20 11:39:04 +0200
commit57a828b4d11ab8274053ee035c8de8014ddd4ca1 (patch)
treec88e63b5e9019fe67cc3be451e46fbe57efc4a35 /Software/Embedded_SW/Embedded/Modules
parent2d55102532afaccc447c8a28ded8ccb93437683b (diff)
parentd6e2772dd98e6880de14ea12be0ef53bae24f763 (diff)
downloadTango-57a828b4d11ab8274053ee035c8de8014ddd4ca1.tar.gz
Tango-57a828b4d11ab8274053ee035c8de8014ddd4ca1.zip
merge
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c122
-rw-r--r--Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.h2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c92
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/control.c62
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c57
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c464
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.h3
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c69
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c6
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/buttons.c90
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/process.c264
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters.h1
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h1
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c24
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c265
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c6
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c38
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c67
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IFS/ifs.c21
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c455
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/StubRealTimeUsage.c6
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Cartridge.c49
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c23
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c65
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Waste/Waste_init.c268
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Waste/newWHS_init.c10
30 files changed, 1642 insertions, 902 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
index a83d95fa8..22cc33822 100644
--- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
+++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
@@ -28,6 +28,7 @@
#include "drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.h"
#include "drivers/I2C_Communication/Head_Card/ADC/Head_ADC.h"
#include "Common/SWUpdate/FileSystem.h"
+#include "drivers/Flash_ram/MCU_E2Prom.h"
#include "modules/thread/thread_ex.h"
#include "modules/heaters/heaters_ex.h"
@@ -66,7 +67,6 @@ uint32_t AlarmHandlingControlId = 0xFF;
uint32_t AlarmHandlingTick = 0;
double CurrentAlarmHighLimit ,CurrentAlarmLowLimit;
-
bool CheckHardLimitAlarms = false,CheckCurrentAlarms = false,CheckTamperAlarms = false,CheckMotorAlarms = false;
uint8_t alarm_response_buffer[500];
@@ -581,14 +581,35 @@ void AlarmHandlingSetCurrentLimits(double currentalarmhighlimit,double curre
CurrentAlarmLowLimit = currentalarmlowlimit;
ReportWithPackageFilter(AlarmFilter,"Alarm Current Limits", __FILE__,__LINE__,(int)(currentalarmhighlimit*100), RpMessage, (int)(currentalarmlowlimit*100), 0);
}
+uint32_t AlarmhandlingFlags = 0;
+void AlarmHandlingLoadFlags(void)
+{
+ MCU_E2PromRead(ALARM_SUPPORT_ADDR,&AlarmhandlingFlags);
+
+ CheckHardLimitAlarms = (AlarmhandlingFlags && 0x0001);
+ CheckCurrentAlarms = (AlarmhandlingFlags && 0x0002);
+ CheckTamperAlarms = (AlarmhandlingFlags && 0x0004);
+ CheckMotorAlarms = (AlarmhandlingFlags && 0x0008);
+ ReportWithPackageFilter(AlarmFilter,"Alarm group setting", __FILE__,__LINE__,0, RpMessage, 1*CheckHardLimitAlarms+2*CheckCurrentAlarms+3*CheckTamperAlarms+4*CheckMotorAlarms, 0);
+}
void AlarmHandlingSetFlags(bool checkHardLimitAlarms,bool checkCurrentAlarms, bool checkTamperAlarms, bool checkMotorAlarms)
{
+ uint32_t flags = 0;
CheckHardLimitAlarms = checkHardLimitAlarms;
CheckCurrentAlarms = checkCurrentAlarms;
CheckTamperAlarms = checkTamperAlarms;
CheckMotorAlarms = checkMotorAlarms;
ReportWithPackageFilter(AlarmFilter,"Alarm group setting", __FILE__,__LINE__,0, RpMessage, 1*CheckHardLimitAlarms+2*CheckCurrentAlarms+3*CheckTamperAlarms+4*CheckMotorAlarms, 0);
+ if (CheckHardLimitAlarms) flags |= 0x1;
+ if (CheckCurrentAlarms) flags |= 0x2;
+ if (CheckTamperAlarms) flags |= 0x4;
+ if (CheckMotorAlarms) flags |= 0x8;
+ if (AlarmhandlingFlags != flags)
+ {
+ MCU_E2PromProgram(ALARM_SUPPORT_ADDR,flags);
+ AlarmhandlingFlags = flags;
+ }
}
char AlarmReasonStr[100];
JobEndReasonEnum getEndReason(uint32_t AlarmId)
@@ -636,7 +657,8 @@ uint32_t AlarmHandlingConsequentActions(uint32_t AlarmId, DebugLogCategory Sever
{
if (AlarmItem == NULL)
return ERROR;
- //DebugLogCategory reprocessedSeverity = Severity;
+
+ DebugLogCategory reprocessedSeverity = Severity;
//ProcessParameters ProcessParameterZero;
switch (AlarmItem[AlarmId].AlarmSource)
{
@@ -691,14 +713,19 @@ uint32_t AlarmHandlingConsequentActions(uint32_t AlarmId, DebugLogCategory Sever
Valve_Set(IDS_Id_to_AirValve[AlarmItem[AlarmId].DeviceId], AlarmItem[AlarmId].DeviceId ); //AlarmItem[AlarmId].DeviceId/ON
Valve_Set(IDS_Id_to_CartrideValve[AlarmItem[AlarmId].DeviceId], AlarmItem[AlarmId].DeviceId ); //Atm_MidTank_OFF/ON
}
+ if ((JobIsActive())&&(DispenserUsedInJob[AlarmItem[AlarmId].DeviceId] == false))
+ {
+ reprocessedSeverity = DEBUG_LOG_CATEGORY__Warning;
+ }
+
}
break;
default:
break;
}
- /*switch (reprocessedSeverity)*/
- switch (Severity)
+ switch (reprocessedSeverity)
+ /*switch (Severity)*/
{
case DEBUG_LOG_CATEGORY__Warning:
//raise flag fr next job
@@ -831,6 +858,13 @@ JobEndReasonEnum AlarmHandlingPrepareJob(void *CurrentJob)
}
for (Alarm_i = 0;Alarm_i<NumOfSystemAlarms;Alarm_i++)
{
+ if ((AlarmState[Alarm_i].Status == true)&&(AlarmItem[Alarm_i].Severity == DEBUG_LOG_CATEGORY__Critical))
+ {
+ status = JOB_SAFETY_CRITICAL_ALARM;
+ ReportWithPackageFilter(AlarmFilter,"critical alarm preventing job", __FILE__,__LINE__,AlarmItem[Alarm_i].EventType, AlarmItem[Alarm_i].Severity, AlarmItem[Alarm_i].DeviceId, 0);
+ AlarmId = Alarm_i;
+ break;
+ }
if (AlarmItem[Alarm_i].AlarmSource == ALARM_SOURCE_TYPE__CoversAlarm)
{
@@ -876,12 +910,7 @@ JobEndReasonEnum AlarmHandlingPrepareJob(void *CurrentJob)
{
if (HeaterCheckReady()==false)
{
-#warning fit to new head with new alarms
-#ifdef Use_Head_Card
for (Heater_i=HEATER_TYPE__DryerAirHeater;Heater_i<HEATER_TYPE_MAX_HEATERS;Heater_i++)
-#else
- for (Heater_i=HEATER_TYPE__DryerAirHeater;Heater_i<MAX_HEATERS_NUM;Heater_i++)
-#endif
{
LoadHeaterState((HeaterType)Heater_i,&HeaterState);
if (HeaterState.setpoint)//temperature is set - heater active
@@ -928,10 +957,12 @@ uint32_t AlarmHandling_ControlTrigger(uint32_t IfIndex, uint32_t ReadValue)
{
AlarmHandlingMessageStruc Message;
+ if (AlarmHandlingActive == false)
+ return OK;
//send message to the Millisec task
Message.messageId = AlarmHandlingTrigger;
Message.msglen = sizeof(AlarmHandlingMessageStruc);
- AlarmHandlingTick +=10;
+ AlarmHandlingTick +=100;
Message.tick = AlarmHandlingTick;
if (AlarmHandlingMsgQ != NULL)
Mailbox_post(AlarmHandlingMsgQ , &Message, BIOS_NO_WAIT);
@@ -957,7 +988,7 @@ void AlarmHandlingInternalSetAlarm(uint32_t AlarmId, bool value)
{
int Alarm_i;
if (AlarmItem == NULL)
- return ERROR;
+ return;
for (Alarm_i = 0;Alarm_i < NumOfSystemAlarms;Alarm_i++)
{
if (AlarmItem[Alarm_i].EventType == AlarmId)
@@ -1011,7 +1042,7 @@ uint32_t AlarmHandlingStart(void)
if ( AlarmHandlingActive == false)
{
AlarmHandlingActive = true;
- AlarmHandlingControlId = AddControlCallback("Alarm Handling",AlarmHandling_ControlTrigger,eTenMillisecond,TemplateDataReadCBFunction,0,0,0);
+ //AlarmHandlingControlId = AddControlCallback("Alarm Handling",AlarmHandling_ControlTrigger,eHundredMillisecond,TemplateDataReadCBFunction,0,0,0);
}
return OK;
}
@@ -1148,24 +1179,31 @@ uint32_t AlarmHandlingLoop(uint32_t tick)
{
if (AlarmItem[Alarm_i].ModuleDeviceId == 0xFF)
{
- if (Get_Heaters_Current_float(AlarmItem[Alarm_i].DeviceId, &doubleValue) == OK)
+ if (LoadHeaterSetPoint(HEATER_TYPE__DryerAirHeater) <= 2)
{
- if (AlarmItem[Alarm_i].AlarmDirection == true)
+ Status = false;
+ }
+ else
+ {
+ if (Get_Heaters_Current_float(AlarmItem[Alarm_i].DeviceId, &doubleValue) == OK)
{
- if ((doubleValue >= (float)(AlarmItem[Alarm_i].AlarmValue*CurrentAlarmHighLimit)) || (doubleValue <= (float)(AlarmItem[Alarm_i].AlarmValue*CurrentAlarmLowLimit)))
+ if (AlarmItem[Alarm_i].AlarmDirection == true)
{
- Status = true;
- if (AlarmState[Alarm_i].Status == false)
- ReportWithPackageFilter(AlarmFilter,"OverCurrent Alarm ON ", __FILE__,AlarmItem[Alarm_i].DeviceId,(int)(AlarmItem[Alarm_i].AlarmValue*100), RpMessage, (int)(doubleValue*100), 0);
+ if ((doubleValue >= (float)(AlarmItem[Alarm_i].AlarmValue*CurrentAlarmHighLimit)) || (doubleValue <= (float)(AlarmItem[Alarm_i].AlarmValue*CurrentAlarmLowLimit)))
+ {
+ Status = true;
+ if (AlarmState[Alarm_i].Status == false)
+ ReportWithPackageFilter(AlarmFilter,"OverCurrent Alarm ON ", __FILE__,AlarmItem[Alarm_i].DeviceId,(int)(AlarmItem[Alarm_i].AlarmValue*100), RpMessage, (int)(doubleValue*100), 0);
+ }
}
- }
- else
- {
- if (doubleValue <= 0.1)
+ else
{
- Status = true;
- if (AlarmState[Alarm_i].Status == false)
- ReportWithPackageFilter(AlarmFilter,"loop break Alarm ON ", __FILE__,AlarmItem[Alarm_i].DeviceId,(int)(AlarmItem[Alarm_i].AlarmValue*100), RpMessage, (int)(doubleValue*100), 0);
+ if (doubleValue <= 0.1)
+ {
+ Status = true;
+ if (AlarmState[Alarm_i].Status == false)
+ ReportWithPackageFilter(AlarmFilter,"loop break Alarm ON ", __FILE__,AlarmItem[Alarm_i].DeviceId,(int)(AlarmItem[Alarm_i].AlarmValue*100), RpMessage, (int)(doubleValue*100), 0);
+ }
}
}
}
@@ -1263,7 +1301,7 @@ uint32_t AlarmHandlingLoop(uint32_t tick)
case ALARM_SOURCE_TYPE__TachoAlarm: // add by shai
Status = false;
- if (CheckCurrentAlarms)
+ if (CheckTamperAlarms)
{
// ReportWithPackageFilter(AlarmFilter,"------------FANS_RPM[Alarm_i]----------------", __FILE__,__LINE__,Alarm_i, RpMessage, value, 0);
@@ -1470,7 +1508,9 @@ uint32_t AlarmHandlingLoop(uint32_t tick)
ReportWithPackageFilter(AlarmFilter,"Error in alarms data!!!!!!!!! ", __FILE__,__LINE__,AlarmItem[Alarm_i].EventType, RpFatalError, 0, Alarm_i);
if ((tick%eOneSecond == 0)&&(EventsNotificationRequestAccepted==true))
+ {
SendEventNotifications();
+ }
return OK;
}
/******************************************************************************
@@ -1526,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)
@@ -1554,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;
}
}
@@ -1569,8 +1619,9 @@ 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;
uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer));
@@ -1629,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/AlarmHandling/AlarmHandling.h b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.h
index be7687f28..29be2bd23 100644
--- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.h
+++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.h
@@ -13,6 +13,8 @@
uint32_t AlarmHandlingFlashLoad(void);
uint32_t AlarmHandlingLoadFile(void);
+void AlarmHandlingInit(void);
+
uint32_t AlarmHandling_ControlTrigger(uint32_t IfIndex, uint32_t ReadValue);
//uint32_t AlarmHandling_CalculateTemperatures(uint32_t SensorId, uint32_t Data);
diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
index 6d92e06c9..fe350d78d 100644
--- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
+++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
@@ -56,10 +56,9 @@
#include "Modules/General/buttons.h"
#include "Drivers/I2C_Communication/Head_Card/PT100/Head_PT100_ADC.h"
-#ifdef Use_WHS_Card
#include <Drivers/I2C_Communication/WHS_Card/D_ADS122_PT100/WHS_PT100_ADC.h>
#include <Drivers/I2C_Communication/I2C_Task.h>
-#endif
+#include <Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.h>
Task_Handle Millisecond_Task_Handle;
/******************** Definitions ********************************************/
@@ -229,11 +228,6 @@ void OneMilliSecondMillisecInterrupt(UArg arg0)
return ;
}
uint32_t PT100Activity = 0;
-int32_t MillisecReadFromI2CTempSensor(uint32_t TempSensorId, MSecFptr Callback)
-{
-#warning call I2C temeratures
- return OK;
-}
int32_t MillisecReadFromTempSensor(uint32_t TempSensorId, MSecFptr Callback)
{
@@ -575,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;
@@ -585,7 +580,7 @@ uint32_t MillisecLowLoop(uint32_t tick)
//test dancers and speed encoders
//check all callback units (state machine waiting for completion of a change)
bool Ten_msTick, Fifty_msTick, Hundred_msTick , m20msecTick,m70msecTick,m90msecTick, Onesecond_Tick,OneMinute_Tick,OneHourTick,Gradient_Tick;
- bool O100Millisecond_Tick,O200Millisecond_Tick,O400Millisecond_Tick,O500Millisecond_Tick,O600Millisecond_Tick;
+ bool O700Millisecond_Tick,O200Millisecond_Tick,O400Millisecond_Tick,O500Millisecond_Tick,O600Millisecond_Tick;
//bool O100Millisecond_Tick,O200Millisecond_Tick,O400Millisecond_Tick,O500Millisecond_Tick,O600Millisecond_Tick,O800Millisecond_Tick,O900Millisecond_Tick;
Ten_msTick = (tick%eTenMillisecond == 0) ?true:false;
Fifty_msTick = (tick%eHundredMillisecond == 40) ?true:false; //eFiftyMillisecond
@@ -593,7 +588,7 @@ uint32_t MillisecLowLoop(uint32_t tick)
m20msecTick = (tick%eHundredMillisecond == 20) ?true:false;
m70msecTick = (tick%eHundredMillisecond == 70) ?true:false;
m90msecTick = (tick%eHundredMillisecond == 90) ?true:false;
- O100Millisecond_Tick = (tick%eOneSecond == 100) ?true:false;
+ O700Millisecond_Tick = (tick%eOneSecond == 700) ?true:false;
O200Millisecond_Tick = (tick%eOneSecond == 200) ?true:false;
O400Millisecond_Tick = (tick%eOneSecond == 400) ?true:false;
O500Millisecond_Tick = (tick%eOneSecond == 500) ?true:false;
@@ -604,14 +599,16 @@ 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;
//Screw_ENC_Velocity_to_DAC(); - for testing the screw enc
-
+ if (Head_Type > HEAD_TYPE_SYLKO_WITHOUT_CARD)
+ StartPT100 = TEMP_SENSE_ANALOG_DRYER_TEMP1;
if (Ten_msTick)
{
- //Speed_Data = Calculate_Speed_Sensor_Velocity();
+ Speed_Data = Read_Speed_Sensor_TypeII();
//MillisecReadFromTempSensor(Sensor_Read, NULL);
//if (Sensor_Read++ >= MAX_MAIN_CARD_TEMPERATURE_SENSOR_ID) Sensor_Read = 0;
if(Machine_Idle_Mode == true)
@@ -619,39 +616,18 @@ uint32_t MillisecLowLoop(uint32_t tick)
Trigger_HeaterWriting();
}
-#ifdef Use_Head_Card
if(Fifty_msTick)
{
Trigger_PT100_Read();//call every 50mSec (minimum delay 30mSec)
//Set_HeadCard_PT100();//call every 50mSec (minimum delay 30mSec)
}
-#endif
-/*#ifdef Use_Head_Card
- if (m20msecTick) //read odd PT1000
- {
- for (Sensor_i = HEAD_PT100_ZONE_1_0X80_0;Sensor_i < HEAD_PT100_ZONE_2_0X80_1;Sensor_i++)
- {
- //MillisecReadFromI2CTempSensor(Sensor_i, NULL);
- }
- //Set_HeadCard_PT100();
-#warning call chip select replace in I2C
- }
- if (m70msecTick) //read odd PT1000
+ if(m70msecTick)
{
- for (Sensor_i = HEAD_PT100_ZONE_2_0X80_1;Sensor_i < HEAD_PT100_RESERVE_0X8E_1;Sensor_i++)
- {
- //MillisecReadFromI2CTempSensor(Sensor_i, NULL);
- }
- //Set_HeadCard_PT100();
+ AlarmHandling_ControlTrigger(0,0);
}
-#endif */
if (m90msecTick)
{
-#ifdef Use_Head_Card
- for (Sensor_i = TEMP_SENSE_ANALOG_DRYER_TEMP1;Sensor_i < MAX_HEAD_CARD_TEMP_SENS_ID;Sensor_i++)
-#else
- for (Sensor_i = 0;Sensor_i < MAX_MAIN_CARD_TEMP_SENS_ID;Sensor_i++)
-#endif
+ for (Sensor_i = StartPT100;Sensor_i < MAX_HEAD_CARD_TEMP_SENS_ID;Sensor_i++)
{
MillisecReadFromTempSensor(Sensor_i, NULL);
}
@@ -664,11 +640,7 @@ uint32_t MillisecLowLoop(uint32_t tick)
///////////////////////////////////////////////////////////////////
-#ifdef Use_Head_Card
- for (Sensor_i = TEMP_SENSE_ANALOG_DRYER_TEMP1;Sensor_i < MAX_HEAD_CARD_TEMP_SENS_ID;Sensor_i++)
-#else
- for (Sensor_i = 0;Sensor_i < MAX_MAIN_CARD_TEMP_SENS_ID;Sensor_i++)
-#endif
+ for (Sensor_i = StartPT100;Sensor_i < MAX_HEAD_CARD_TEMP_SENS_ID;Sensor_i++)
{
MillisecUpdateTemperatures (Sensor_i,TemperatureSensorRead(Sensor_i));
}
@@ -689,14 +661,11 @@ uint32_t MillisecLowLoop(uint32_t tick)
ADC_TriggerCollection();
}
-#ifdef Use_Head_Card
- //Head_Read_IO_Reg(0x46, HIGH);//READ HEAD CARD LS
-#endif
-
+ Trigger_InputsReading();
}
if (Gradient_Tick)
DispensersCollectionCall();
- if (O100Millisecond_Tick)
+ if (O700Millisecond_Tick)
{
Trigger_Heater_Current_Read();
}
@@ -736,15 +705,11 @@ uint32_t MillisecLowLoop(uint32_t tick)
char Lenstr[160];
static int Counter = 0;
MachineUpdateResponseFunc();
- KeepAliveOneSecondCall();
-#ifdef Use_Head_Card
- TemperatureListString(Lenstr);
- ReportWithPackageFilter(ThreadFilter,Lenstr,__FILE__,__LINE__,(int)Counter++,RpWarning,(int) msec_millisecondCounter,0);
-//#ifdef Use_Head_Card
- for (Sensor_i = TEMP_SENSE_ANALOG_DRYER_TEMP1;Sensor_i < MAX_HEAD_CARD_TEMP_SENS_ID;Sensor_i++)
-#else
- for (Sensor_i = 0;Sensor_i < MAX_MAIN_CARD_TEMP_SENS_ID;Sensor_i++)
-#endif
+ //KeepAliveOneSecondCall();
+
+ //TemperatureListString(Lenstr);
+ //ReportWithPackageFilter(ThreadFilter,Lenstr,__FILE__,__LINE__,(int)Counter++,RpWarning,(int) msec_millisecondCounter,0);
+ for (Sensor_i = StartPT100;Sensor_i < MAX_HEAD_CARD_TEMP_SENS_ID;Sensor_i++)
{
TemperatureCalc[Sensor_i] = MillisecCalculateTemperatures ( Sensor_i);
}
@@ -755,11 +720,12 @@ uint32_t MillisecLowLoop(uint32_t tick)
PressureCalc[Disp_i] = MillisecCalculatePressures(Disp_i);
}
}
-#ifdef Use_WHS_Card
- Trigger_WHS_PT100_Read_All();
- Trigger_WHS_MAX11614_Read_allADC();
-#endif
-
+ Trigger_WHS_PT100_Read_All();
+ Trigger_WHS_MAX11614_Read_allADC();
+ WHS_Blower_Avarege_ORF1(); //drier
+ WHS_Blower_Avarege_ORF3(); //head
+ Trigger_WHSReadAllFanTacho ();
+ WHS_Start_Blower_Control_Closed_Loop ();
}
if (OneMinute_Tick)
{
@@ -778,8 +744,10 @@ uint32_t MillisecLowLoop(uint32_t tick)
}*/
midtankDisplay = 1-midtankDisplay;
Gas_PPM_Info = Calculate_Gas_Power_Consumption();
- Trigger_WHS_MAX11614_Read_allADC();
-
+ //Trigger_WHS_MAX11614_Read_allADC();
+#ifdef CONTROL_DEBUG
+ ResetControlTime();
+#endif
}
if (OneHourTick)
{
diff --git a/Software/Embedded_SW/Embedded/Modules/Control/control.c b/Software/Embedded_SW/Embedded/Modules/Control/control.c
index e093815a9..bea68e314 100644
--- a/Software/Embedded_SW/Embedded/Modules/Control/control.c
+++ b/Software/Embedded_SW/Embedded/Modules/Control/control.c
@@ -66,8 +66,9 @@
+#define DURATION_LIMIT 6
/******************** Definitions ********************************************/
-#define MAX_TANGO_CONTROL_DEVICES 120
+#define MAX_TANGO_CONTROL_DEVICES 100
/******************** STRUCTURES AND ENUMs ********************************************/
@@ -108,6 +109,7 @@ ControlDeviceStruc ControlArray[MAX_TANGO_CONTROL_DEVICES];
uint32_t ControlDatalog[MAX_TANGO_CONTROL_DEVICES];
#define MAX_BACKLOG_SIZE 100
uint16_t ControlBacklog[MAX_BACKLOG_SIZE]={0};
+uint32_t ControlTime[MAX_TANGO_CONTROL_DEVICES]={0};
uint16_t backlogindex = 0;
uint32_t Control_timerBase = TIMER0_BASE; //Timer handle
uint32_t MaxHighDevices = 0xFF;
@@ -382,6 +384,7 @@ uint32_t AddControlCallback(char* Name, ControlCBFunction Callback, uint32_t Ct
if (deviceId == 0xFF)
{
LOG_ERROR(deviceId, "Add Callback failed");
+ AlarmHandlingSetAlarm(EVENT_TYPE__FPGA_WATCHDOG_ACTIVATED,true);
return 0xFF;
}
key = GateMutex_enter(gateControlDB);
@@ -556,22 +559,44 @@ uint32_t ControlLoop(uint32_t tick)
return OK;
}
+uint32_t prevtick = 0;
+#ifdef CONTROL_DEBUG
+void ResetControlTime(void)
+{
+ memset(ControlTime,0,sizeof(ControlTime));
+}
+#endif
uint32_t ControlLowLoop(uint32_t tick)
{
+ uint32_t skipped_ticks = 0;
+#ifdef CONTROL_DEBUG
+ uint32_t tempp,tempq,delta;
+ uint32_t sys_ticks_start = msec_millisecondCounter,sys_ticks_end,max = 0,dev = 0;
+#endif
+ if (tick-prevtick>1)
+ {
+ skipped_ticks = tick-prevtick-1;
+ //if (tick-prevtick>10)
+ // Report("ControlLowLoop skipped",__FILE__,tick,(int)prevtick,RpWarning,(int)skipped_ticks,0);
+ }
+ prevtick = tick;
+
for (ControlLowDevice_i = 0; ControlLowDevice_i < MAX_TANGO_CONTROL_DEVICES;ControlLowDevice_i++)
{
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;
- if (((tick - ControlArray[ControlLowDevice_i].StartTick)%ControlArray[ControlLowDevice_i].ControlTiming)==0) // run the control on exact intervals
+ if (((tick - ControlArray[ControlLowDevice_i].StartTick)%ControlArray[ControlLowDevice_i].ControlTiming)<=skipped_ticks) // run the control on exact intervals
{
ControlBacklog[backlogindex]=ControlLowDevice_i;
if ( ++backlogindex >= MAX_BACKLOG_SIZE)
backlogindex = 0;
-
+#ifdef CONTROL_DEBUG
+ tempp = HibernateRTCSSGet();
+#endif
if(ControlArray[ControlLowDevice_i].ControlDataReadPtr)
ControlDatalog[ControlLowDevice_i] = ControlArray[ControlLowDevice_i].ControlDataReadPtr( ControlArray[ControlLowDevice_i].Parameter1);
else
@@ -580,9 +605,38 @@ uint32_t ControlLowLoop(uint32_t tick)
ControlArray[ControlLowDevice_i].ControlCallbackPtr(ControlArray[ControlLowDevice_i].IfIndex, ControlDatalog[ControlLowDevice_i]);
else
LOG_ERROR (ControlLowDevice_i, "Invalid callback ptr");
+#ifdef CONTROL_DEBUG
+ tempq = HibernateRTCSSGet();
+ if (tempq < tempp)
+ {
+ delta = (32768 - tempp) + tempq + 1;
+ }
+ else
+ delta = tempq - tempp;
+ if (ControlTime[ControlLowDevice_i]<delta)
+ {
+ ControlTime[ControlLowDevice_i] = delta;
+ }
+#endif
}
} //if control active
} //for
+#ifdef CONTROL_DEBUG
+ sys_ticks_end= msec_millisecondCounter;
+ if (sys_ticks_end-sys_ticks_start > DURATION_LIMIT)
+ {
+ Report("ControlLowLoop long",__FILE__,sys_ticks_end-sys_ticks_start,(int)sys_ticks_end,RpWarning,(int)sys_ticks_start,0);
+ for (ControlLowDevice_i = 0; ControlLowDevice_i < MAX_TANGO_CONTROL_DEVICES;ControlLowDevice_i++)
+ {
+ if (ControlTime[ControlLowDevice_i]>max)
+ {
+ max = ControlTime[ControlLowDevice_i];
+ dev = ControlLowDevice_i;
+ }
+ }
+ //Report(ControlArray[dev].Name,__FILE__,__LINE__,dev,RpWarning,max,0);
+ }
+#endif
//ROM_IntMasterEnable();
return OK;
diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c
index ef4feda09..41f6b2334 100644
--- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c
+++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c
@@ -31,8 +31,8 @@
#include "drivers/Valves/Valve.h"
#include "drivers/Heater/Heater.h"
#include "modules/waste/waste.h"
-#include <Drivers/I2C_Communication/I2C_Task.h>
-
+#include "Drivers/I2C_Communication/I2C_Task.h"
+#include "Drivers/I2C_Communication/I2C.h"
#include "modules/ids/ids_ex.h"
/********************************************************************************
@@ -58,13 +58,12 @@ uint32_t SetComponentValueRequestRequestFunc(MessageContainer* requestContainer)
{
case VALUE_COMPONENT__BlowerVoltage:
blowervolatgedisplay = true;
- voltage = request->value;
- if (voltage == 0.0)
+ intvoltage = (int)request->value;
+ if (intvoltage < 10.0)
Turn_the_Blower_Off();
else
{
Turn_the_Blower_On();
- intvoltage = voltage;
Control_Voltage_To_Blower(intvoltage);
}
break;
@@ -208,11 +207,10 @@ uint32_t SetDigitalOutRequestRequestFunc(MessageContainer* requestContainer)
Control_Dryer_Fan(STOP,0);//use START or STOP, 0 - 100%();
break;
case INTERFACE_IOS__GPO_WASTECH_PUMP2://valve
-#ifdef Use_WHS_Card
- Trigger_SetWHSValveWatseCartridge(request->value);
-#else
- Valve_Set(VALVE_WASTE_TANK, request->value);
-#endif // Valve_Set(VALVE_WASTE_TANK, request->value);
+ if (WHS_Type == WHS_TYPE_UNKNOWN)
+ Valve_Set(VALVE_WASTE_TANK, request->value);
+ else
+ Trigger_SetWHSValveWatseCartridge(request->value);
break;
case INTERFACE_IOS__GPO_WHS_WTANKPUMP2:
SetWastePump( request->value);
@@ -227,10 +225,10 @@ uint32_t SetDigitalOutRequestRequestFunc(MessageContainer* requestContainer)
Pumps_Control(WASTECH_PUMP2, request->value);
break;
case INTERFACE_IOS__GPO_LED3:
- HeadCard_Actuators_Control(ACTIN, LOW,request->value);
+ Trigger_Head_Actuators_Control(ACTIN, LOW,request->value);
break;
case INTERFACE_IOS__GPO_LED4:
- HeadCard_Actuators_Control(ACTOT, LOW,request->value);
+ Trigger_Head_Actuators_Control(ACTOT, LOW,request->value);
break;
case INTERFACE_IOS__GPO_BUZZER:
if (request->value == true)
@@ -370,24 +368,27 @@ uint32_t SetBlowerStateRequestFunc(MessageContainer* requestContainer)
Turn_the_Blower_Off();
break;
case HARDWARE_BLOWER_TYPE__HeadBlower1:
-#ifdef Use_Head_Card
- if ((request->has_voltage)&&(request->isactive == true))
- status = Head_Fan_PWM_Control(0,request->voltage);
- else if (request->isactive == false)
- status = Head_Fan_PWM_Control(0,0);
-#else
- status = NOT_SUPPORTED;
-#endif
+ if (Head_Type == HEAD_TYPE_STAPLE_SPUN)
+ {
+ if ((request->has_voltage)&&(request->isactive == true))
+ status = Head_Fan_PWM_Control(0,request->voltage);
+ else if (request->isactive == false)
+ status = Head_Fan_PWM_Control(0,0);
+ }
+ else
+ status = NOT_SUPPORTED;
+
break;
case HARDWARE_BLOWER_TYPE__HeadBlower2:
-#ifdef Use_Head_Card
- if ((request->has_voltage)&&(request->isactive == true))
- status = Head_Fan_PWM_Control(1,request->voltage);
- else if (request->isactive == false)
- status = Head_Fan_PWM_Control(1,0);
-#else
- status = NOT_SUPPORTED;
-#endif
+ if (Head_Type == HEAD_TYPE_STAPLE_SPUN)
+ {
+ if ((request->has_voltage)&&(request->isactive == true))
+ status = Head_Fan_PWM_Control(1,request->voltage);
+ else if (request->isactive == false)
+ status = Head_Fan_PWM_Control(1,0);
+ }
+ else
+ status = NOT_SUPPORTED;
break;
default:
status = NOT_SUPPORTED;
diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
index 71ed7a97b..0764b2028 100644
--- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
+++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
@@ -21,6 +21,7 @@
#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/valves/valve.h"
@@ -112,7 +113,9 @@ 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 HeadCurrent[MAX_FLAT_HEAD_HEATERS][1];
double VOC_Sensor;
double OverallTemperature;
@@ -311,11 +314,14 @@ uint32_t DiagnosticsLoadDigitalValues(void)
DigitalOutputState[index].interfaceio = INTERFACE_IOS__GPO_SPARE_SSR13_CTRL;
DigitalOutputState[index++].value = ReadHeadMagnetBit();
- DigitalOutputState[index].interfaceio = INTERFACE_IOS__GPO_LED3;
- DigitalOutputState[index++].value = HeadCard_Actuators_Status(ACTIN);
+ /*if (Head_Type == HEAD_TYPE_SYLKO) //rapid/pp machines
+ {
+ DigitalOutputState[index].interfaceio = INTERFACE_IOS__GPO_LED3;
+ DigitalOutputState[index++].value = HeadCard_Actuators_Status(ACTIN);
- DigitalOutputState[index].interfaceio = INTERFACE_IOS__GPO_LED4;
- DigitalOutputState[index++].value = HeadCard_Actuators_Status(ACTOT);
+ DigitalOutputState[index].interfaceio = INTERFACE_IOS__GPO_LED4;
+ DigitalOutputState[index++].value = HeadCard_Actuators_Status(ACTOT);
+ }*/
DigitalOutputState[index].interfaceio = INTERFACE_IOS__GPI_WCONTAINER_FULL;
DigitalOutputState[index++].value = WHS_IsContainerFull();
@@ -404,11 +410,12 @@ void DiagnosticTenMsecCollection(void)
DiagnosticLoadDancerError(POOLER_DANCER,ThreadGetMotorCalculatedError(POOLER_DANCER));
DiagnosticLoadDancerError(FEEDER_DANCER,ThreadGetMotorCalculatedError(FEEDER_DANCER));
- //DiagnosticLoadSpeedSensor(getSensorSpeedData());
+ DiagnosticLoadSpeedSensor(getSensorSpeedData());
}
void DiagnosticOneMinuteCollection(void)
{
int i;
+ bool status = OK;
DiagnosticsMonitor.n_dispensersinklevel = 0;
DiagnosticsMonitor.n_midtanksinklevel = 0;
@@ -439,6 +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)/100)*1000 + (int)(MillisecGetTemperatures(TEMP_SENSE_AN_ENCLOSURETEMP2)/100));
DiagnosticsMonitor.overalltemperature = &OverallTemperature;
DiagnosticsMonitor.n_midtank1level = 1;
@@ -457,48 +465,205 @@ void DiagnosticOneMinuteCollection(void)
DiagnosticsMonitor.midtank7level = MidTankpressure[6];
DiagnosticsMonitor.n_midtank8level = 1;
DiagnosticsMonitor.midtank8level = MidTankpressure[7];
-
- for (i=0;i<NUM_OF_CURRENT_HEATERS;i++)
+ if (Head_Type > HEAD_TYPE_SYLKO_WITHOUT_CARD) //rapid/pp machines
{
- if (Read_Head_MixChip_Heaters_Current(i) == true)
+ /*DiagnosticsMonitor.n_drierzone1heatercurrent = 1;
+ DiagnosticsMonitor.drierzone1heatercurrent = HeatersCurrent[HEATER_DRYER_CURRENT_1];
+ DiagnosticsMonitor.n_drierzone2heatercurrent = 1;
+ DiagnosticsMonitor.drierzone2heatercurrent = HeatersCurrent[HEATER_DRYER_CURRENT_2];*/
+ Get_Head_Current(HEAD_CURRENT_MIXER,&HeadCurrent[HEAD_CURRENT_ZONE_12+1][0]);
+ DiagnosticsMonitor.n_mixer1heatercurrent = 1;
+ DiagnosticsMonitor.mixer1heatercurrent = HeadCurrent[HEAD_CURRENT_ZONE_12+1];
+ if (Head_Type == HEAD_TYPE_SYLKO)
{
- HeatersCurrent[i][0] = Get_Heaters_Current(i);
- switch(i)
+ for (i=0;i<HEAD_CURRENT_ZONE_12;i++)
{
- case HEATER_DRYER_CURRENT_1:
- DiagnosticsMonitor.n_drierzone1heatercurrent = 1;
- DiagnosticsMonitor.drierzone1heatercurrent = HeatersCurrent[HEATER_DRYER_CURRENT_1];
- break;
- case HEATER_DRYER_CURRENT_2:
- DiagnosticsMonitor.n_drierzone2heatercurrent = 1;
- DiagnosticsMonitor.drierzone2heatercurrent = HeatersCurrent[HEATER_DRYER_CURRENT_2];
- break;
- case HEATER_MIXCHIP_CURRENT:
- DiagnosticsMonitor.n_mixer1heatercurrent = 1;
- DiagnosticsMonitor.mixer1heatercurrent = HeatersCurrent[HEATER_MIXCHIP_CURRENT];
- break;
- case HEATER_HEAD_CURRENT_ZONE_1:
+ if (Get_Head_Heater_Current_Reading_State(i) == true)
+ {
+ status = Get_Head_Current(i,&HeadCurrent[i][0]);
+ switch(i)
+ {
+ case HEAD_CURRENT_ZONE_1:
+ DiagnosticsMonitor.n_headzone1heatercurrent = 1;
+ DiagnosticsMonitor.headzone1heatercurrent = HeadCurrent[HEAD_CURRENT_ZONE_1];
+ break;
+ case HEAD_CURRENT_ZONE_2:
+ DiagnosticsMonitor.n_headzone2heatercurrent = 1;
+ DiagnosticsMonitor.headzone2heatercurrent = HeadCurrent[HEAD_CURRENT_ZONE_2];
+ break;
+ case HEAD_CURRENT_ZONE_3:
+ DiagnosticsMonitor.n_headzone3heatercurrent = 1;
+ DiagnosticsMonitor.headzone3heatercurrent = HeadCurrent[HEAD_CURRENT_ZONE_3];
+ break;
+ case HEAD_CURRENT_ZONE_4:
+ DiagnosticsMonitor.n_headzone4heatercurrent = 1;
+ DiagnosticsMonitor.headzone4heatercurrent = HeadCurrent[HEAD_CURRENT_ZONE_4];
+ break;
+ case HEAD_CURRENT_ZONE_5:
+ DiagnosticsMonitor.n_headzone5_6heatercurrent = 1;
+ DiagnosticsMonitor.headzone5_6heatercurrent = HeadCurrent[HEAD_CURRENT_ZONE_5];
+ break;
+/* case HEAD_CURRENT_ZONE_6:
+ DiagnosticsMonitor.n_headzone6heatercurrent = 1;
+ DiagnosticsMonitor.headzone6heatercurrent = HeadCurrent[HEAD_CURRENT_ZONE_6];
+ break;*/
+ case HEAD_CURRENT_ZONE_7:
+ DiagnosticsMonitor.n_headzone7heatercurrent = 1;
+ DiagnosticsMonitor.headzone7heatercurrent = HeadCurrent[HEAD_CURRENT_ZONE_7];
+ break;
+ case HEAD_CURRENT_ZONE_8:
+ DiagnosticsMonitor.n_headzone8heatercurrent = 1;
+ DiagnosticsMonitor.headzone8heatercurrent = HeadCurrent[HEAD_CURRENT_ZONE_8];
+ break;
+ case HEAD_CURRENT_ZONE_9:
+ DiagnosticsMonitor.n_headzone9heatercurrent = 1;
+ DiagnosticsMonitor.headzone9heatercurrent = HeadCurrent[HEAD_CURRENT_ZONE_9];
+ break;
+ case HEAD_CURRENT_ZONE_10:
+ DiagnosticsMonitor.n_headzone10heatercurrent = 1;
+ DiagnosticsMonitor.headzone10heatercurrent = HeadCurrent[HEAD_CURRENT_ZONE_10];
+ break;
+ case HEAD_CURRENT_ZONE_11:
+ DiagnosticsMonitor.n_headzone11heatercurrent = 1;
+ DiagnosticsMonitor.headzone11heatercurrent = HeadCurrent[HEAD_CURRENT_ZONE_11];
+ break;
+ case HEAD_CURRENT_ZONE_12:
+ DiagnosticsMonitor.n_headzone12heatercurrent = 1;
+ DiagnosticsMonitor.headzone12heatercurrent = HeadCurrent[HEAD_CURRENT_ZONE_12];
+ break;
+ default:
+ break;
+ }
+ }
+ }
+ }
+ else //arc head
+ {
+ i = 0;
+ if (Get_Head_Heater_Current_Reading_State(HEAD_CURRENT_ZONE_1) == true)
+ {
+ Get_Head_Current(HEAD_CURRENT_ZONE_1,&HeadCurrent[i][0]);
DiagnosticsMonitor.n_headzone1heatercurrent = 1;
- DiagnosticsMonitor.headzone1heatercurrent = HeatersCurrent[HEATER_HEAD_CURRENT_ZONE_1];
- break;
- case HEATER_HEAD_CURRENT_ZONE_2:
+ DiagnosticsMonitor.headzone1heatercurrent = HeadCurrent[i];
+ i++;
+ }
+ if (Get_Head_Heater_Current_Reading_State(HEAD_CURRENT_ZONE_2) == true)
+ {
+ Get_Head_Current(HEAD_CURRENT_ZONE_2,&HeadCurrent[i][0]);
DiagnosticsMonitor.n_headzone2heatercurrent = 1;
- DiagnosticsMonitor.headzone2heatercurrent = HeatersCurrent[HEATER_HEAD_CURRENT_ZONE_2];
- break;
- case HEATER_HEAD_CURRENT_ZONE_3:
+ DiagnosticsMonitor.headzone2heatercurrent = HeadCurrent[i];
+ i++;
+ }
+ if (Get_Head_Heater_Current_Reading_State(HEAD_CURRENT_ZONE_3) == true)
+ {
+ Get_Head_Current(HEAD_CURRENT_ZONE_3,&HeadCurrent[i][0]);
DiagnosticsMonitor.n_headzone3heatercurrent = 1;
- DiagnosticsMonitor.headzone3heatercurrent = HeatersCurrent[HEATER_HEAD_CURRENT_ZONE_3];
- break;
- case HEATER_HEAD_CURRENT_ZONE_4:
+ DiagnosticsMonitor.headzone3heatercurrent = HeadCurrent[i];
+ i++;
+ }
+ if (Get_Head_Heater_Current_Reading_State(HEAD_CURRENT_HTIN_1) == true)
+ {
+ Get_Head_Current(HEAD_CURRENT_HTIN_1,&HeadCurrent[i][0]);
DiagnosticsMonitor.n_headzone4heatercurrent = 1;
- DiagnosticsMonitor.headzone4heatercurrent = HeatersCurrent[HEATER_HEAD_CURRENT_ZONE_4];
- break;
- case HEATER_HEAD_CURRENT_ZONE_5_6:
+ DiagnosticsMonitor.headzone4heatercurrent = HeadCurrent[i];
+ i++;
+ }
+ if (Get_Head_Heater_Current_Reading_State(HEAD_CURRENT_HTOT_1) == true)
+ {
+ Get_Head_Current(HEAD_CURRENT_HTOT_1,&HeadCurrent[i][0]);
DiagnosticsMonitor.n_headzone5_6heatercurrent = 1;
- DiagnosticsMonitor.headzone5_6heatercurrent = HeatersCurrent[HEATER_HEAD_CURRENT_ZONE_5_6];
- break;
- default:
- break;
+ DiagnosticsMonitor.headzone5_6heatercurrent = HeadCurrent[i];
+ i++;
+ }
+ if (Get_Head_Heater_Current_Reading_State(HEAD_CURRENT_HTIN_1) == true)
+ {
+ Get_Head_Current(HEAD_CURRENT_HTIN_2,&HeadCurrent[i][0]);
+ DiagnosticsMonitor.n_headzone7heatercurrent = 1;
+ DiagnosticsMonitor.headzone7heatercurrent = HeadCurrent[i];
+ i++;
+ }
+ if (Get_Head_Heater_Current_Reading_State(HEAD_CURRENT_HTIN_1) == true)
+ {
+ Get_Head_Current(HEAD_CURRENT_HTIN_3,&HeadCurrent[i][0]);
+ DiagnosticsMonitor.n_headzone8heatercurrent = 1;
+ DiagnosticsMonitor.headzone8heatercurrent = HeadCurrent[i];
+ i++;
+ }
+ if (Get_Head_Heater_Current_Reading_State(HEAD_CURRENT_HTIN_1) == true)
+ {
+ Get_Head_Current(HEAD_CURRENT_HTIN_4,&HeadCurrent[i][0]);
+ DiagnosticsMonitor.n_headzone9heatercurrent = 1;
+ DiagnosticsMonitor.headzone9heatercurrent = HeadCurrent[i];
+ i++;
+ }
+ if (Get_Head_Heater_Current_Reading_State(HEAD_CURRENT_HTOT_2) == true)
+ {
+ Get_Head_Current(HEAD_CURRENT_HTOT_2,&HeadCurrent[i][0]);
+ DiagnosticsMonitor.n_headzone10heatercurrent = 1;
+ DiagnosticsMonitor.headzone10heatercurrent = HeadCurrent[i];
+ i++;
+ }
+ if (Get_Head_Heater_Current_Reading_State(HEAD_CURRENT_HTOT_3) == true)
+ {
+ Get_Head_Current(HEAD_CURRENT_HTOT_3,&HeadCurrent[i][0]);
+ DiagnosticsMonitor.n_headzone11heatercurrent = 1;
+ DiagnosticsMonitor.headzone11heatercurrent = HeadCurrent[i];
+ i++;
+ }
+ if (Get_Head_Heater_Current_Reading_State(HEAD_CURRENT_HTOT_4) == true)
+ {
+ Get_Head_Current(HEAD_CURRENT_HTOT_4,&HeadCurrent[i][0]);
+ DiagnosticsMonitor.n_headzone12heatercurrent = 1;
+ DiagnosticsMonitor.headzone12heatercurrent = HeadCurrent[i];
+ i++;
+ }
+ }
+
+ }
+ else
+ {
+ for (i=0;i<NUM_OF_CURRENT_HEATERS;i++)
+ {
+ if (Get_Heater_Current_Reading_State(i) == true)
+ {
+ HeatersCurrent[i][0] = Get_Heaters_Current(i);
+ switch(i)
+ {
+ case HEATER_DRYER_CURRENT_1:
+ DiagnosticsMonitor.n_drierzone1heatercurrent = 1;
+ DiagnosticsMonitor.drierzone1heatercurrent = HeatersCurrent[HEATER_DRYER_CURRENT_1];
+ break;
+ case HEATER_DRYER_CURRENT_2:
+ DiagnosticsMonitor.n_drierzone2heatercurrent = 1;
+ DiagnosticsMonitor.drierzone2heatercurrent = HeatersCurrent[HEATER_DRYER_CURRENT_2];
+ break;
+ case HEATER_MIXCHIP_CURRENT:
+ DiagnosticsMonitor.n_mixer1heatercurrent = 1;
+ DiagnosticsMonitor.mixer1heatercurrent = HeatersCurrent[HEATER_MIXCHIP_CURRENT];
+ break;
+ case HEATER_HEAD_CURRENT_ZONE_1:
+ DiagnosticsMonitor.n_headzone1heatercurrent = 1;
+ DiagnosticsMonitor.headzone1heatercurrent = HeatersCurrent[HEATER_HEAD_CURRENT_ZONE_1];
+ break;
+ case HEATER_HEAD_CURRENT_ZONE_2:
+ DiagnosticsMonitor.n_headzone2heatercurrent = 1;
+ DiagnosticsMonitor.headzone2heatercurrent = HeatersCurrent[HEATER_HEAD_CURRENT_ZONE_2];
+ break;
+ case HEATER_HEAD_CURRENT_ZONE_3:
+ DiagnosticsMonitor.n_headzone3heatercurrent = 1;
+ DiagnosticsMonitor.headzone3heatercurrent = HeatersCurrent[HEATER_HEAD_CURRENT_ZONE_3];
+ break;
+ case HEATER_HEAD_CURRENT_ZONE_4:
+ DiagnosticsMonitor.n_headzone4heatercurrent = 1;
+ DiagnosticsMonitor.headzone4heatercurrent = HeatersCurrent[HEATER_HEAD_CURRENT_ZONE_4];
+ break;
+ case HEATER_HEAD_CURRENT_ZONE_5_6:
+ DiagnosticsMonitor.n_headzone5_6heatercurrent = 1;
+ DiagnosticsMonitor.headzone5_6heatercurrent = HeatersCurrent[HEATER_HEAD_CURRENT_ZONE_5_6];
+ break;
+ default:
+ break;
+ }
}
}
}
@@ -514,41 +679,84 @@ 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;
+ }
+*/
+
}
+void DiaglosticChangeBlowerData()
+{
+ DiagnosticsMonitor.n_blowervoltage = 1;
+ diagvoltage = getBlowerState();
+ DiagnosticsMonitor.blowervoltage = &diagvoltage;
+}
void DiagnosticOneSecCollection(void)
{
int i;
-#ifdef Use_Head_Card
- DiagnosticLoadTemperature(HEATER_TYPE__MixerHeater, MillisecGetTemperatures( HEAD_PT100_MIXER_0X8E_0));
- DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone1, MillisecGetTemperatures(HEAD_PT100_ZONE_1_0X80_0));
- DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone2, MillisecGetTemperatures(HEAD_PT100_ZONE_2_0X80_1));
- DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone3, MillisecGetTemperatures(HEAD_PT100_ZONE_3_0X82_0));
- DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone4, MillisecGetTemperatures(HEAD_PT100_ZONE_4_0X82_1));
- DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone5, MillisecGetTemperatures(HEAD_PT100_ZONE_5_0X84_0));
- DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone6, MillisecGetTemperatures(HEAD_PT100_ZONE_6_0X84_1));
- DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone7, MillisecGetTemperatures(HEAD_PT100_ZONE_7_0X86_0));
- DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone8, MillisecGetTemperatures(HEAD_PT100_ZONE_8_0X86_1));
- DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone9, MillisecGetTemperatures(HEAD_PT100_ZONE_9_0X88_0));
- DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone10, MillisecGetTemperatures(HEAD_PT100_ZONE_10_0X88_1));
- DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone11, MillisecGetTemperatures(HEAD_PT100_ZONE_11_0X8A_0));
- DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone12, MillisecGetTemperatures(HEAD_PT100_ZONE_12_0X8A_1));
- DiagnosticLoadTemperature(HEATER_TYPE__HeadCoverHeater1, MillisecGetTemperatures(HEAD_PT100_AIR_HEATER_2_0X8C_1));
- DiagnosticLoadTemperature(HEATER_TYPE__HeadCoverHeater2, MillisecGetTemperatures(HEAD_PT100_AIR_HEATER_1_0X8C_0));
-#else
- DiagnosticLoadTemperature(HARDWARE_PID_CONTROL_TYPE__MixerHeater, MillisecGetTemperatures( MIXER_PT100));
- DiagnosticLoadTemperature(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ1, MillisecGetTemperatures(TEMP_SENSE_ANALOG_DYEINGH_TEMP1));
- DiagnosticLoadTemperature(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ2, MillisecGetTemperatures(TEMP_SENSE_ANALOG_DYEINGH_TEMP2));
- DiagnosticLoadTemperature(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ3, MillisecGetTemperatures(TEMP_SENSE_ANALOG_DYEINGH_TEMP3));
- DiagnosticLoadTemperature(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ4, MillisecGetTemperatures(TEMP_SENSE_ANALOG_DYEINGH_TEMP4));
- DiagnosticLoadTemperature(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ5, MillisecGetTemperatures(TEMP_SENSE_ANALOG_DYEINGH_TEMP5));
- DiagnosticLoadTemperature(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ6, MillisecGetTemperatures(HEAD6_PT100));
-#endif
+ 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 (WHS_Type == WHS_TYPE_NEW) //rapid/pp machines
+ {
+ 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)
+ {
+ DiagnosticLoadTemperature(HARDWARE_PID_CONTROL_TYPE__MixerHeater, MillisecGetTemperatures( MIXER_PT100));
+ DiagnosticLoadTemperature(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ1, MillisecGetTemperatures(TEMP_SENSE_ANALOG_DYEINGH_TEMP1));
+ DiagnosticLoadTemperature(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ2, MillisecGetTemperatures(TEMP_SENSE_ANALOG_DYEINGH_TEMP2));
+ DiagnosticLoadTemperature(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ3, MillisecGetTemperatures(TEMP_SENSE_ANALOG_DYEINGH_TEMP3));
+ DiagnosticLoadTemperature(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ4, MillisecGetTemperatures(TEMP_SENSE_ANALOG_DYEINGH_TEMP4));
+ DiagnosticLoadTemperature(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ5, MillisecGetTemperatures(TEMP_SENSE_ANALOG_DYEINGH_TEMP5));
+ DiagnosticLoadTemperature(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ6, MillisecGetTemperatures(HEAD6_PT100));
+ }
+ if (Head_Type == HEAD_TYPE_SYLKO)
+ {
+ DiagnosticLoadTemperature(HEATER_TYPE__MixerHeater, MillisecGetTemperatures( HEAD_PT100_MIXER_0X8E_0));
+ DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone1, MillisecGetTemperatures(HEAD_PT100_ZONE_1_0X80_0));
+ DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone2, MillisecGetTemperatures(HEAD_PT100_ZONE_2_0X80_1));
+ DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone3, MillisecGetTemperatures(HEAD_PT100_ZONE_3_0X82_0));
+ DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone4, MillisecGetTemperatures(HEAD_PT100_ZONE_4_0X82_1));
+ DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone5, MillisecGetTemperatures(HEAD_PT100_ZONE_5_0X84_0));
+ DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone6, MillisecGetTemperatures(HEAD_PT100_ZONE_6_0X84_1));
+ DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone7, MillisecGetTemperatures(HEAD_PT100_ZONE_7_0X86_0));
+ DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone8, MillisecGetTemperatures(HEAD_PT100_ZONE_8_0X86_1));
+ DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone9, MillisecGetTemperatures(HEAD_PT100_ZONE_9_0X88_0));
+ DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone10, MillisecGetTemperatures(HEAD_PT100_ZONE_10_0X88_1));
+ DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone11, MillisecGetTemperatures(HEAD_PT100_ZONE_11_0X8A_0));
+ DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone12, MillisecGetTemperatures(HEAD_PT100_ZONE_12_0X8A_1));
+ }
+ if (Head_Type == HEAD_TYPE_STAPLE_SPUN)
+ {
+ DiagnosticLoadTemperature(HEATER_TYPE__MixerHeater, MillisecGetTemperatures( HEAD_PT100_MIXER_0X8E_0));
+ DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone1, MillisecGetTemperatures(HEAD_PT100_ZONE_1_0X80_0));
+ DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone2, MillisecGetTemperatures(HEAD_PT100_ZONE_2_0X80_1));
+ DiagnosticLoadTemperature(HEATER_TYPE__HeaterZone3, MillisecGetTemperatures(HEAD_PT100_ZONE_3_0X82_0));
+ DiagnosticLoadTemperature(HEATER_TYPE__HeadCoverHeater1, MillisecGetTemperatures(HEAD_PT100_AIR_HEATER_2_0X8C_1));
+ DiagnosticLoadTemperature(HEATER_TYPE__HeadCoverHeater2, MillisecGetTemperatures(HEAD_PT100_AIR_HEATER_1_0X8C_0));
+ }
DiagnosticLoadTemperature(HARDWARE_PID_CONTROL_TYPE__DryerAirTemperature, MillisecGetTemperatures(TEMP_SENSE_ANALOG_DRYER_TEMP1));
DiagnosticLoadTemperature(HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain, MillisecGetTemperatures(TEMP_SENSE_ANALOG_DRYER_TEMP2));
DiagnosticLoadTemperature(HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary, MillisecGetTemperatures(TEMP_SENSE_ANALOG_DRYER_TEMP3));
@@ -587,13 +795,12 @@ void Diagnostic100msecCollection(void)
dispenserspressure[i][DiagnosticsIndex] = GetDispenserPressure(i); //Read_MidTank_Pressure_Sensor
}
}
- if (DiagnosticMode == Diagnostic_Extreme_Mode)
- {
- for (i=0;i<NUM_OF_CURRENT_HEATERS;i++)
- {
- HeatersCurrent[i][0] = Get_Heaters_Current(i);
- }
- }
+
+ DiagnosticsMonitor.n_drierzone1heatercurrent = 1;
+ HeatersCurrent[HEATER_DRYER_CURRENT_1][0] = Get_Heaters_Current(HEATER_DRYER_CURRENT_1);
+ DiagnosticsMonitor.n_drierzone2heatercurrent = 1;
+ HeatersCurrent[HEATER_DRYER_CURRENT_2][0] = Get_Heaters_Current(HEATER_DRYER_CURRENT_2);
+
/*dispenser1motorfrequency[DiagnosticsIndex] = MotorGetSpeed(HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_1);
dispenser2motorfrequency[DiagnosticsIndex] = MotorGetSpeed(HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_2);
dispenser3motorfrequency[DiagnosticsIndex] = MotorGetSpeed(HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_3);
@@ -615,7 +822,6 @@ void DiagnosticsReset(void)
memset(MotorCounterIndex,0,sizeof(MotorCounterIndex));
memset(DancerErrorCounterIndex,0,sizeof(DancerErrorCounterIndex));
SpeedCounterIndex = 0;
- memset(HeaterCounterIndex,0,sizeof(HeaterCounterIndex));
DiagnosticsIndex = 0;
DiagnosticsMonitor.n_dancer1angle = 0;
DiagnosticsMonitor.n_dancer2angle = 0;
@@ -711,41 +917,46 @@ void SendDiagnostics(void)
DiagnosticsMonitor.headzone1temperature = HeaterTemperature[HEATER_TYPE__HeaterZone1];
DiagnosticsMonitor.headzone2temperature = HeaterTemperature[HEATER_TYPE__HeaterZone2];
DiagnosticsMonitor.headzone3temperature = HeaterTemperature[HEATER_TYPE__HeaterZone3];
- DiagnosticsMonitor.headzone4temperature = HeaterTemperature[HEATER_TYPE__HeaterZone4];
- DiagnosticsMonitor.headzone5temperature = HeaterTemperature[HEATER_TYPE__HeaterZone5];
- DiagnosticsMonitor.headzone6temperature = HeaterTemperature[HEATER_TYPE__HeaterZone6];
-#ifdef Use_Head_Card
- DiagnosticsMonitor.headzone7temperature = HeaterTemperature[HEATER_TYPE__HeaterZone7];
- DiagnosticsMonitor.headzone8temperature = HeaterTemperature[HEATER_TYPE__HeaterZone8];
- DiagnosticsMonitor.headzone9temperature = HeaterTemperature[HEATER_TYPE__HeaterZone9];
- DiagnosticsMonitor.headzone10temperature = HeaterTemperature[HEATER_TYPE__HeaterZone10];
- DiagnosticsMonitor.headzone11temperature = HeaterTemperature[HEATER_TYPE__HeaterZone11];
- DiagnosticsMonitor.headzone12temperature = HeaterTemperature[HEATER_TYPE__HeaterZone12];
- DiagnosticsMonitor.headcoverheater1temperature = HeaterTemperature[HEATER_TYPE__HeadCoverHeater1];
- DiagnosticsMonitor.headcoverheater2temperature = HeaterTemperature[HEATER_TYPE__HeadCoverHeater2];
-
-#endif
- DiagnosticsMonitor.dryerzone1temperature = HeaterTemperature[HEATER_TYPE__DryerAirHeater];
- DiagnosticsMonitor.dryerzone2temperature = HeaterTemperature[HEATER_TYPE__DryerMainHeater];
- DiagnosticsMonitor.dryerzone3temperature = HeaterTemperature[HEATER_TYPE__DryerSecondaryHeater];
-
DiagnosticsMonitor.n_mixertemperature = HeaterCounterIndex[HEATER_TYPE__MixerHeater];
DiagnosticsMonitor.n_headzone1temperature = HeaterCounterIndex[HEATER_TYPE__HeaterZone1];
DiagnosticsMonitor.n_headzone2temperature = HeaterCounterIndex[HEATER_TYPE__HeaterZone2];
DiagnosticsMonitor.n_headzone3temperature = HeaterCounterIndex[HEATER_TYPE__HeaterZone3];
- DiagnosticsMonitor.n_headzone4temperature = HeaterCounterIndex[HEATER_TYPE__HeaterZone4];
- DiagnosticsMonitor.n_headzone5temperature = HeaterCounterIndex[HEATER_TYPE__HeaterZone5];
- DiagnosticsMonitor.n_headzone6temperature = HeaterCounterIndex[HEATER_TYPE__HeaterZone6];
-#ifdef Use_Head_Card
- DiagnosticsMonitor.n_headzone7temperature = HeaterCounterIndex[HEATER_TYPE__HeaterZone7];
- DiagnosticsMonitor.n_headzone8temperature = HeaterCounterIndex[HEATER_TYPE__HeaterZone8];
- DiagnosticsMonitor.n_headzone9temperature = HeaterCounterIndex[HEATER_TYPE__HeaterZone9];
- DiagnosticsMonitor.n_headzone10temperature = HeaterCounterIndex[HEATER_TYPE__HeaterZone10];
- DiagnosticsMonitor.n_headzone11temperature = HeaterCounterIndex[HEATER_TYPE__HeaterZone11];
- DiagnosticsMonitor.n_headzone12temperature = HeaterCounterIndex[HEATER_TYPE__HeaterZone12];
- DiagnosticsMonitor.n_headcoverheater1temperature = HeaterCounterIndex[HEATER_TYPE__HeadCoverHeater1];
- DiagnosticsMonitor.n_headcoverheater2temperature = HeaterCounterIndex[HEATER_TYPE__HeadCoverHeater2];
-#endif
+ if ((Head_Type == HEAD_TYPE_SYLKO)||(Head_Type == HEAD_TYPE_SYLKO_WITHOUT_CARD))
+ {
+ DiagnosticsMonitor.headzone4temperature = HeaterTemperature[HEATER_TYPE__HeaterZone4];
+ DiagnosticsMonitor.headzone5temperature = HeaterTemperature[HEATER_TYPE__HeaterZone5];
+ DiagnosticsMonitor.headzone6temperature = HeaterTemperature[HEATER_TYPE__HeaterZone6];
+ DiagnosticsMonitor.n_headzone4temperature = HeaterCounterIndex[HEATER_TYPE__HeaterZone4];
+ DiagnosticsMonitor.n_headzone5temperature = HeaterCounterIndex[HEATER_TYPE__HeaterZone5];
+ DiagnosticsMonitor.n_headzone6temperature = HeaterCounterIndex[HEATER_TYPE__HeaterZone6];
+ }
+ if (Head_Type == HEAD_TYPE_SYLKO)
+ {
+ DiagnosticsMonitor.headzone7temperature = HeaterTemperature[HEATER_TYPE__HeaterZone7];
+ DiagnosticsMonitor.headzone8temperature = HeaterTemperature[HEATER_TYPE__HeaterZone8];
+ DiagnosticsMonitor.headzone9temperature = HeaterTemperature[HEATER_TYPE__HeaterZone9];
+ DiagnosticsMonitor.headzone10temperature = HeaterTemperature[HEATER_TYPE__HeaterZone10];
+ DiagnosticsMonitor.headzone11temperature = HeaterTemperature[HEATER_TYPE__HeaterZone11];
+ DiagnosticsMonitor.headzone12temperature = HeaterTemperature[HEATER_TYPE__HeaterZone12];
+ DiagnosticsMonitor.n_headzone7temperature = HeaterCounterIndex[HEATER_TYPE__HeaterZone7];
+ DiagnosticsMonitor.n_headzone8temperature = HeaterCounterIndex[HEATER_TYPE__HeaterZone8];
+ DiagnosticsMonitor.n_headzone9temperature = HeaterCounterIndex[HEATER_TYPE__HeaterZone9];
+ DiagnosticsMonitor.n_headzone10temperature = HeaterCounterIndex[HEATER_TYPE__HeaterZone10];
+ DiagnosticsMonitor.n_headzone11temperature = HeaterCounterIndex[HEATER_TYPE__HeaterZone11];
+ DiagnosticsMonitor.n_headzone12temperature = HeaterCounterIndex[HEATER_TYPE__HeaterZone12];
+ }
+ if ((Head_Type == HEAD_TYPE_SYLKO)||(Head_Type == HEAD_TYPE_STAPLE_SPUN))
+// if (Head_Type == HEAD_TYPE_STAPLE_SPUN)
+ {
+ DiagnosticsMonitor.headcoverheater1temperature = HeaterTemperature[HEATER_TYPE__HeadCoverHeater1];
+ DiagnosticsMonitor.headcoverheater2temperature = HeaterTemperature[HEATER_TYPE__HeadCoverHeater2];
+ DiagnosticsMonitor.n_headcoverheater1temperature = HeaterCounterIndex[HEATER_TYPE__HeadCoverHeater1];
+ DiagnosticsMonitor.n_headcoverheater2temperature = HeaterCounterIndex[HEATER_TYPE__HeadCoverHeater2];
+ }
+ DiagnosticsMonitor.dryerzone1temperature = HeaterTemperature[HEATER_TYPE__DryerAirHeater];
+ DiagnosticsMonitor.dryerzone2temperature = HeaterTemperature[HEATER_TYPE__DryerMainHeater];
+ DiagnosticsMonitor.dryerzone3temperature = HeaterTemperature[HEATER_TYPE__DryerSecondaryHeater];
+
DiagnosticsMonitor.n_dryerzone1temperature = HeaterCounterIndex[HEATER_TYPE__DryerAirHeater];
DiagnosticsMonitor.n_dryerzone2temperature = HeaterCounterIndex[HEATER_TYPE__DryerMainHeater];
DiagnosticsMonitor.n_dryerzone3temperature = HeaterCounterIndex[HEATER_TYPE__DryerSecondaryHeater];
@@ -823,7 +1034,7 @@ void SendDiagnostics(void)
DiagnosticsMonitor.n_midtank8level = 1;
DiagnosticsMonitor.midtank8level = MidTankpressure[7];
- DiagnosticsMonitor.n_drierzone1heatercurrent = 1;
+/* DiagnosticsMonitor.n_drierzone1heatercurrent = 1;
DiagnosticsMonitor.drierzone1heatercurrent = HeatersCurrent[HEATER_DRYER_CURRENT_1];
DiagnosticsMonitor.n_drierzone2heatercurrent = 1;
DiagnosticsMonitor.drierzone2heatercurrent = HeatersCurrent[HEATER_DRYER_CURRENT_2];
@@ -839,7 +1050,7 @@ void SendDiagnostics(void)
DiagnosticsMonitor.headzone4heatercurrent = HeatersCurrent[HEATER_HEAD_CURRENT_ZONE_4];
DiagnosticsMonitor.n_headzone5_6heatercurrent = 1;
DiagnosticsMonitor.headzone5_6heatercurrent = HeatersCurrent[HEATER_HEAD_CURRENT_ZONE_5_6];
-
+*/
VOC_Sensor = (double) getGasReading();
DiagnosticsMonitor.n_filterdeltapressure = 1;
DiagnosticsMonitor.filterdeltapressure = &VOC_Sensor;
@@ -851,20 +1062,38 @@ void SendDiagnostics(void)
response.n_digitalinterfacestates = DiagnosticsLoadDigitalValues();
response.digitalinterfacestates = digitalinterfacestates;
-#ifdef Use_Head_Card
- for (i=HEATER_TYPE__DryerAirHeater;i<HEATER_TYPE_MAX_HEATERS;i++)
-#else
- for (i=HEATER_TYPE__DryerAirHeater;i<MAX_HEATERS_NUM;i++)
-#endif
+ response.n_heatersstates = 0;
+ i = 0;
+ LoadHeaterState(HEATER_TYPE__DryerAirHeater,&HeaterInfo[i++]);
+ LoadHeaterState(HEATER_TYPE__DryerMainHeater,&HeaterInfo[i++]);
+ LoadHeaterState(HEATER_TYPE__DryerSecondaryHeater,&HeaterInfo[i++]);
+ LoadHeaterState(HEATER_TYPE__MixerHeater,&HeaterInfo[i++]);
+ LoadHeaterState(HEATER_TYPE__HeaterZone1,&HeaterInfo[i++]);
+ LoadHeaterState(HEATER_TYPE__HeaterZone2,&HeaterInfo[i++]);
+ LoadHeaterState(HEATER_TYPE__HeaterZone3,&HeaterInfo[i++]);
+
+ if ((Head_Type == HEAD_TYPE_SYLKO)||(Head_Type == HEAD_TYPE_SYLKO_WITHOUT_CARD))
+ {
+ LoadHeaterState(HEATER_TYPE__HeaterZone4,&HeaterInfo[i++]);
+ LoadHeaterState(HEATER_TYPE__HeaterZone5,&HeaterInfo[i++]);
+ LoadHeaterState(HEATER_TYPE__HeaterZone6,&HeaterInfo[i++]);
+ }
+ if (Head_Type == HEAD_TYPE_SYLKO)
+ {
+ LoadHeaterState(HEATER_TYPE__HeaterZone7,&HeaterInfo[i++]);
+ LoadHeaterState(HEATER_TYPE__HeaterZone8,&HeaterInfo[i++]);
+ LoadHeaterState(HEATER_TYPE__HeaterZone9,&HeaterInfo[i++]);
+ LoadHeaterState(HEATER_TYPE__HeaterZone10,&HeaterInfo[i++]);
+ LoadHeaterState(HEATER_TYPE__HeaterZone11,&HeaterInfo[i++]);
+ LoadHeaterState(HEATER_TYPE__HeaterZone12,&HeaterInfo[i++]);
+ }
+ if ((Head_Type == HEAD_TYPE_SYLKO)||(Head_Type == HEAD_TYPE_STAPLE_SPUN))
+ //if (Head_Type == HEAD_TYPE_STAPLE_SPUN)
{
- LoadHeaterState((HeaterType)i,&HeaterInfo[i]);
- //heatersstates[i] = &HeaterInfo[i];
+ LoadHeaterState(HEATER_TYPE__HeadCoverHeater1,&HeaterInfo[i++]);
+ LoadHeaterState(HEATER_TYPE__HeadCoverHeater2,&HeaterInfo[i++]);
}
-#ifdef Use_Head_Card
- response.n_heatersstates = HEATER_TYPE_MAX_HEATERS;
-#else
- response.n_heatersstates = MAX_HEATERS_NUM;
-#endif
+ response.n_heatersstates = i;
response.heatersstates = heatersstates;
response.has_elapsedmilli = true;
@@ -879,6 +1108,7 @@ void SendDiagnostics(void)
// diagnosticsresponseContainer = createContainer(MESSAGE_TYPE__StartDiagnosticsResponse, DiagnosticsToken, false, &response, &start_diagnostics_response__pack, &start_diagnostics_response__get_packed_size);
diagnosticsresponseContainer = createAllocatedContainer(MESSAGE_TYPE__StartDiagnosticsResponse, DiagnosticsToken, false, &response, &start_diagnostics_response__pack, &start_diagnostics_response__get_packed_size,diagnostics_response_ptr);
+ diagnosticsresponseContainer.has_continuous = true;
diagnosticsresponseContainer.continuous = true;
if (diagnosticsresponseContainer.data.data)
diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.h b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.h
index c9698d05e..b7b1ec9c8 100644
--- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.h
+++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.h
@@ -11,7 +11,7 @@
extern bool blowervolatgedisplay;
extern bool midtankDisplay;
-extern double voltage;
+
extern char* diagnosticscontainer_buffer;
typedef enum
@@ -52,6 +52,7 @@ uint32_t SetDigitalOutRequestRequestFunc(MessageContainer* requestContainer);
uint32_t SetValveStateRequestFunc(MessageContainer* requestContainer);
uint32_t SetBlowerStateRequestFunc(MessageContainer* requestContainer);
+void DiaglosticChangeBlowerData();
diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c
index c58d54a8c..be8e84f3e 100644
--- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c
+++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c
@@ -45,6 +45,7 @@ uint32_t MotorHomingRequestCallback(uint32_t deviceID, uint32_t ReadValue)
MotorHomingResponse response = MOTOR_HOMING_RESPONSE__INIT;
responseContainer = createContainer(MESSAGE_TYPE__MotorHomingResponse, HomingToken[deviceID], true, &response, &motor_homing_response__pack, &motor_homing_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);
@@ -141,6 +142,7 @@ uint32_t MotorHomingRequestFunc(MessageContainer* requestContainer)
responseContainer.error = ERROR_CODE__INVALID_PROCESS_ID;
responseContainer.errormessage = "Job Active or incorrect motor ID";
responseContainer = createContainer(MESSAGE_TYPE__MotorHomingResponse, requestContainer->token, true, &response, &motor_homing_response__pack, &motor_homing_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);
@@ -186,6 +188,7 @@ uint32_t DispenserHomingRequestCallback(uint32_t deviceID, uint32_t ReadValue)
//MotorSetMicroStep(deviceID, MotorsCfg[deviceID].microstep);
responseContainer = createContainer(MESSAGE_TYPE__DispenserHomingResponse, HomingToken[MotorId], true, &response, &motor_homing_response__pack, &motor_homing_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);
@@ -212,6 +215,7 @@ uint32_t DispenserHomingRequestFunc(MessageContainer* requestContainer)
if (speed == 0) speed = 150;
responseContainer = createContainer(MESSAGE_TYPE__DispenserHomingResponse, requestContainer->token, false, &response, &dispenser_homing_response__pack, &dispenser_homing_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);
diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
index 82d2dc226..ec59385ab 100644
--- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
+++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
@@ -40,6 +40,7 @@
#include "drivers/I2C_Communication/DAC/Blower.h"
#include "drivers/Valves/Valve.h"
#include "drivers/I2C_Communication/ADC_MUX/ADC_MUX.h"
+#include "Drivers/I2C_Communication/I2C.h"
#include "drivers/Flash_ram/MCU_E2Prom.h"
#include "StateMachines/Printing/PrintingSTM.h"
@@ -128,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;
}
@@ -145,14 +147,15 @@ uint32_t HWConfigurationInit(void)
if (buffer)
free (buffer);
+ Trigger_Head_Init_PT100();//OK
//EmbeddedParametersInit();
IDS_Dispenser_Content_Init();
//ProcessParamsInit();
Buttons_Init();
+ if (WHS_Type == WHS_TYPE_NEW)
+ newWHS_init();
WHS_init();
-#ifdef Use_WHS_Card
- newWHS_init();
-#endif
+
ADC_MUX_Init();
GeneralHwReady = true;
@@ -185,7 +188,7 @@ void LoadConfigurationParameters(ConfigurationParameters *Params)
EmbeddedParameters->has_initialdispenserpressure = true;
EmbeddedParameters->initialdispenserpressure = 0.25;
EmbeddedParameters->has_initialdispensertimeout = true;
- EmbeddedParameters->initialdispensertimeout = 60000;
+ EmbeddedParameters->initialdispensertimeout = 180000;
EmbeddedParameters->has_initialdispensertimelag = true;
EmbeddedParameters->initialdispensertimelag = 100;
EmbeddedParameters->has_dispenserbuildpressurespeed = true;
@@ -207,7 +210,7 @@ void LoadConfigurationParameters(ConfigurationParameters *Params)
EmbeddedParameters->has_midtankpressurecorrection = true;
EmbeddedParameters->midtankpressurecorrection = 0.0;
EmbeddedParameters->has_dispenserpresegmentwfcf = true;
- EmbeddedParameters->dispenserpresegmentwfcf = 80;
+ EmbeddedParameters->dispenserpresegmentwfcf = 40;
EmbeddedParameters->has_startheatingoninitsequence = true;
EmbeddedParameters->startheatingoninitsequence = true; //set to true shlomo 14/5/2019
EmbeddedParameters->n_generalparameters = 8;
@@ -250,7 +253,7 @@ void LoadConfigurationParameters(ConfigurationParameters *Params)
EmbeddedParameters->has_idlemixertemperature = true;
EmbeddedParameters->idlemixertemperature = 0;
EmbeddedParameters->has_powerofftemperaturelimit = true;
- EmbeddedParameters->powerofftemperaturelimit = 50;
+ EmbeddedParameters->powerofftemperaturelimit = 90;
EmbeddedParameters->has_ids_presegment_wfcf_timebeforesegment = true;
EmbeddedParameters->ids_presegment_wfcf_timebeforesegment = 20000;
uint8_t* response_buffer = my_malloc(configuration_parameters__get_packed_size(EmbeddedParameters));
@@ -383,6 +386,7 @@ uint32_t HWConfiguration(UploadHardwareConfigurationRequest* UploadRequest)
{
uint32_t status = 0;
int Dancer_i, Dispenser_i,PID_i,tempheaterId;
+ HardwareBlowerType blowerType = HARDWARE_BLOWER_TYPE__DefaultBlower;
if (UploadRequest == NULL)
{
@@ -491,13 +495,18 @@ uint32_t HWConfiguration(UploadHardwareConfigurationRequest* UploadRequest)
}
BlowerCfg.enabled = true;
- BlowerCfg.voltage = 3000;
- BlowerCfg.heatingvoltage = 3000;
-#ifdef Use_WHS_Card
- HardwareBlowerType blowerType = HARDWARE_BLOWER_TYPE__WHSBlower2;
-#else
- HardwareBlowerType blowerType = HARDWARE_BLOWER_TYPE__DefaultBlower;
-#endif
+ if (WHS_Type == WHS_TYPE_UNKNOWN)
+ {
+ 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++)
@@ -516,25 +525,6 @@ uint32_t HWConfiguration(UploadHardwareConfigurationRequest* UploadRequest)
}
}
}
- //from now on starting blower on INIT, so that the chiller does not freeze
- /*if (BlowerCfg.enabled == true)
- {
- Turn_the_Blower_On();//Turn on with the Default_Voltage
- if (BlowerCfg.heatingvoltage)
- Control_Voltage_To_Blower(BlowerCfg.heatingvoltage);
- else
- Control_Voltage_To_Blower(BlowerCfg.voltage-500);
-
- }*/
-
-/*
- for (Dispenser_i = 0;Dispenser_i < MAX_SYSTEM_DISPENSERS;Dispenser_i++)
- {
- Enable_MidTank_Pressure_Reading(Dispenser_i);
- Valve_Set(IDS_Id_to_AirValve[Dispenser_i], Atm_MidTank_ON ); //Atm_MidTank_OFF/ON
- }
- GenHWControlId = AddControlCallback(NULL, GenHWInitCallBackFunction, 2* eOneSecond, TemplateDataReadCBFunction,0,0, 0 );
-*/
ControlStart();
AlarmHandlingStart();
//ThreadInitialTestStub(request);
@@ -734,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 5fd8588af..55490a140 100644
--- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h
+++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h
@@ -16,7 +16,9 @@ extern uint32_t MachineCalibrationDataRequestFunc(MessageContainer* requestConta
extern void HWSystemResetRequest(MessageContainer* requestContainer);
uint32_t HWConfigurationInit(void);
void FlashInitAndLoad(void);
-uint32_t LoadConfigurationParamsFromFile(bool Initialize);
+uint32_t LoadConfigurationParamsFromFile(bool);
+void HWConfigurationLoadFile(void);
+
extern HardwareBlower BlowerCfg;
extern bool DataUpdated;
diff --git a/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c b/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c
index 157841365..3f557496c 100644
--- a/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c
+++ b/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c
@@ -48,10 +48,10 @@ int MachineUpdateResponseFunc(void)
return OK;
StartMachineStatusUpdateResponse response = START_MACHINE_STATUS_UPDATE_RESPONSE__INIT;
- MachineStatus MachineStatus;
+ MachineStatus MachineStatus = MACHINE_STATUS__INIT;
response.status = &MachineStatus;
- machine_status__init(&MachineStatus);
+ //machine_status__init(&MachineStatus);
MachineStatus.has_state = true;
MachineStatus.state = StoredMachineStatus;
MachineStatus.n_idspackslevels = 0;
@@ -83,6 +83,7 @@ int MachineUpdateResponseFunc(void)
responseContainer = /*MachineUpdate*/createContainer(MESSAGE_TYPE__StartMachineStatusUpdateResponse, MachineUpdateToken, false, &response, &start_machine_status_update_response__pack, &start_machine_status_update_response__get_packed_size);
+ responseContainer.has_continuous = true;
responseContainer.continuous = true;
//if (responseContainer.data.data)
{
@@ -138,6 +139,7 @@ uint32_t StopMachineUpdateFunc(MessageContainer* requestContainer)
//TODO Handle the request!!!!
MachineUpdateStopReporting();
responseContainer = createContainer(MESSAGE_TYPE__StopMachineStatusUpdateResponse, MachineUpdateToken, false, &response, &stop_machine_status_update_response__pack, &stop_machine_status_update_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);
diff --git a/Software/Embedded_SW/Embedded/Modules/General/buttons.c b/Software/Embedded_SW/Embedded/Modules/General/buttons.c
index d8c68b345..7326dc039 100644
--- a/Software/Embedded_SW/Embedded/Modules/General/buttons.c
+++ b/Software/Embedded_SW/Embedded/Modules/General/buttons.c
@@ -130,6 +130,7 @@ bool get_pbAction (button *pBtn, PB_Status ReadValue )
case OFFPB:
if (ReadValue == PRESS)
{
+ ReportWithPackageFilter(GeneralFilter,"------------ get_pbAction: OFFPB -> COUNTPB -----------------", __FILE__,__LINE__,0, RpMessage, 0, 0);
pBtn->count = 1 ;
pBtn->Action = COUNTPB;
}
@@ -146,22 +147,39 @@ bool get_pbAction (button *pBtn, PB_Status ReadValue )
if (pBtn->count > SECOND5)
{
pBtn->Action = LONGPB;
+ ReportWithPackageFilter(GeneralFilter,"------------ get_pbAction: COUNTPB -> LONGPB -----------------", __FILE__,__LINE__,0, RpMessage, 0, 0);
}
}
else
{
pBtn->count = 0 ;
pBtn->Action = SHORTPB;
+ ReportWithPackageFilter(GeneralFilter,"------------ get_pbAction: COUNTPB -> SHORTPB -----------------", __FILE__,__LINE__,0, RpMessage, 0, 0);
}
break;
case SHORTPB:
pBtn->Action = OFFPB;
+ ReportWithPackageFilter(GeneralFilter,"------------ get_pbAction: SHORTPB -> OFFPB -----------------", __FILE__,__LINE__,0, RpMessage, 0, 0);
break ;
case LONGPB:
if (ReadValue == RELEASE)
{
pBtn->count = 0 ;
pBtn->Action = OFFPB;
+ ReportWithPackageFilter(GeneralFilter,"------------ get_pbAction: LONGPB -> OFFPB -----------------", __FILE__,__LINE__,0, RpMessage, 0, 0);
+ }
+ else
+ {
+ pBtn->Action = REPLONGPB;
+ ReportWithPackageFilter(GeneralFilter,"------------ get_pbAction: LONGPB -> REPLONGPB -----------------", __FILE__,__LINE__,0, RpMessage, 0, 0);
+ }
+ break ;
+ case REPLONGPB:
+ if (ReadValue == RELEASE)
+ {
+ pBtn->count = 0 ;
+ pBtn->Action = OFFPB;
+ ReportWithPackageFilter(GeneralFilter,"------------ get_pbAction: REPLONGPB -> OFFPB -----------------", __FILE__,__LINE__,0, RpMessage, 0, 0);
}
break ;
default:
@@ -211,6 +229,7 @@ uint32_t Buttons_Init(void)
power.state = sttON; //sttOFF, sttON, sttDISABLE, sttENABLE, sttIDLE, sttJOGGING
power.count = 0;
+ Task_sleep(15);
AddControlCallback("ButtonPowerCB", ButtonPowerCBFunction, BUTTONS_SAMPLE_TIME, ButtonPowerCallBackFunction, 0,0,0 ); // eFiftyMillisecond
strcpy(jog.bttn_name, "jog");
@@ -221,6 +240,7 @@ uint32_t Buttons_Init(void)
jog.state = sttENABLE; // sttDISABLE, sttENABLE, sttJOGGING
jog.count = 0;
+ Task_sleep(15);
AddControlCallback("ButtonJogCB", ButtonJogCBFunction, BUTTONS_SAMPLE_TIME, ButtonJogCallBackFunction, 0,0,0 ); //
strcpy(load.bttn_name, "load");
@@ -231,6 +251,7 @@ uint32_t Buttons_Init(void)
load.state = sttRDY; //
load.count = 0;
+ Task_sleep(15);
AddControlCallback("ButtonLoadCB", ButtonLoadCBFunction, BUTTONS_SAMPLE_TIME, ButtonLoadCallBackFunction, 0,0,0 ); //
return OK;
}
@@ -259,36 +280,57 @@ uint32_t ButtonJogCBFunction(uint32_t IfIndex, uint32_t ReadValue)
case sttDISABLE:
if (JobIsActive() == false)
{
+ ReportWithPackageFilter(GeneralFilter,"------------ joggingMachine: jog.state=sttDISABLE , JobIsActive() == false-----------------", __FILE__,__LINE__,jog.state, RpMessage, jog.Action, 0);
jog.color = colorON;
Pannel_Leds(THREAD_JOGGING, MODE_ON);
jog.state = sttENABLE;
}
break;
case sttENABLE:
- if (jog.Action == COUNTPB)
+ if (JobIsActive() == true)
{
- ReportWithPackageFilter(GeneralFilter,"------------ joggingMachine: Jogging is sttENABLE and PRESS-----------------", __FILE__,__LINE__,0, RpMessage, 0, 0); jog.state = sttJOGGING;
- jog.color = colorON;
- jog.color = BLINK;
- ThreadJoggingFunc(40);
- jog.state = sttJOGGING;
+ ReportWithPackageFilter(GeneralFilter,"------------ joggingMachine: Jogging is Disable -----------------", __FILE__,__LINE__,jog.state, RpMessage, jog.Action, 0);
+ jog.Action = OFFPB;
+ jog.color = colorOFF;
+ Pannel_Leds(THREAD_JOGGING,MODE_OFF);
+ jog.state = sttDISABLE;
}
else
{
- if (JobIsActive() == true)
+ if (jog.Action == COUNTPB)
{
- ReportWithPackageFilter(GeneralFilter,"------------ joggingMachine: Jogging is Disable -----------------", __FILE__,__LINE__,0, RpMessage, 0, 0);
- jog.Action = OFFPB;
- jog.color = colorOFF;
- Pannel_Leds(THREAD_JOGGING,MODE_OFF);
- jog.state = sttDISABLE;
+ ReportWithPackageFilter(GeneralFilter,"------------ joggingMachine: Jogging is sttENABLE and PRESS-----------------", __FILE__,__LINE__,jog.state, RpMessage, jog.Action, 0);
+ jog.color = colorON;
+ jog.color = BLINK;
+ ThreadJoggingFunc(40);
+ jog.state = sttJOGGING;
}
}
+
+// if (jog.Action == COUNTPB)
+// {
+// ReportWithPackageFilter(GeneralFilter,"------------ joggingMachine: Jogging is sttENABLE and PRESS-----------------", __FILE__,__LINE__,0, RpMessage, 0, 0);
+// jog.color = colorON;
+// jog.color = BLINK;
+// ThreadJoggingFunc(40);
+// jog.state = sttJOGGING;
+// }
+// else
+// {
+// if (JobIsActive() == true)
+// {
+// ReportWithPackageFilter(GeneralFilter,"------------ joggingMachine: Jogging is Disable -----------------", __FILE__,__LINE__,0, RpMessage, 0, 0);
+// jog.Action = OFFPB;
+// jog.color = colorOFF;
+// Pannel_Leds(THREAD_JOGGING,MODE_OFF);
+// jog.state = sttDISABLE;
+// }
+// }
break;
case sttJOGGING:
if (jog.Action == SHORTPB) //PB is OFF
{
- ReportWithPackageFilter(GeneralFilter,"------------ joggingMachine: sttJOGGING action->SHORTPB-----------------", __FILE__,__LINE__,0, RpMessage, 0, 0); jog.state = sttJOGGING;
+ ReportWithPackageFilter(GeneralFilter,"------------ joggingMachine: sttJOGGING action SHORTPB, sttJOGGING -> sttENABLE, stop JOGGING----------------", __FILE__,__LINE__,jog.state, RpMessage, jog.Action, 0);
ThreadAbortJoggingFunc();
jog.color = colorON;
Pannel_Leds(THREAD_JOGGING, MODE_ON);
@@ -296,26 +338,25 @@ uint32_t ButtonJogCBFunction(uint32_t IfIndex, uint32_t ReadValue)
}
else if (jog.Action == LONGPB)
{
- ReportWithPackageFilter(GeneralFilter,"------------ joggingMachine: sttJOGGING action->LONGPB-----------------", __FILE__,__LINE__,0, RpMessage, 0, 0); jog.state = sttJOGGING;
+ ReportWithPackageFilter(GeneralFilter,"------------ joggingMachine: sttJOGGING action LONGPB, sttJOGGING -> sttLONG_JOGGING-----------------", __FILE__,__LINE__, jog.state, RpMessage, jog.Action, 0);
jog.state = sttLONG_JOGGING;
- if (JobIsActive() == false) // added because sometimes the jog stops because of another reason and the button s stucked blinking
- {
- jog.color = colorON;
- Pannel_Leds(THREAD_JOGGING, MODE_ON);
- jog.state = sttENABLE;
- }
-
}
break;
case sttLONG_JOGGING:
if (jog.Action == COUNTPB)
{
- ReportWithPackageFilter(GeneralFilter,"------------ joggingMachine: sttLONG_JOGGING action->COUNTPB-----------------", __FILE__,__LINE__,0, RpMessage, 0, 0); jog.state = sttJOGGING;ThreadAbortJoggingFunc(); // to do!!!!
+ ReportWithPackageFilter(GeneralFilter,"------------ joggingMachine: sttLONG_JOGGING action COUNTPB, sttLONG_JOGGING -> sttENABLE, stop JOGGING-----------------", __FILE__,__LINE__, jog.state, RpMessage, jog.Action, 0);
ThreadAbortJoggingFunc();
jog.color = colorON;
Pannel_Leds(THREAD_JOGGING, MODE_ON);
jog.state = sttENABLE;
}
+ if (JobIsActive() == false) // added because sometimes the jog stops because of another reason and the button s stucked blinking
+ {
+ jog.color = colorON;
+ Pannel_Leds(THREAD_JOGGING, MODE_ON);
+ jog.state = sttENABLE;
+ }
break;
default:
break;
@@ -338,6 +379,9 @@ uint32_t ButtonLoadCBFunction(uint32_t IfIndex, uint32_t ReadValue)
ReportWithPackageFilter(GeneralFilter,"------------ thread loading LONGPB -----------------", __FILE__,__LINE__,0, RpMessage, 0, 0);
LoadLongPress( &load );
break;
+ case REPLONGPB:
+ ReportWithPackageFilter(GeneralFilter,"------------ thread loading REPLONGPB please release the PB -----------------", __FILE__,__LINE__,0, RpMessage, 0, 0);
+ break;
default:
if (ThreadLoadingActive() == false)
{
@@ -532,7 +576,7 @@ return OK;
uint32_t LoadStatMachine( button *pBtn)
{
- ReportWithPackageFilter(GeneralFilter,"------------ start loading -----------------", __FILE__,__LINE__,pBtn->state, RpMessage, pBtn->color, 0);
+ ReportWithPackageFilter(GeneralFilter,"------------ (state) (color) -----------------", __FILE__,__LINE__,pBtn->state, RpMessage, pBtn->color, 0);
switch (pBtn->state)
{
case sttRDY :
diff --git a/Software/Embedded_SW/Embedded/Modules/General/process.c b/Software/Embedded_SW/Embedded/Modules/General/process.c
index 1ef4a0931..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"
@@ -57,12 +58,22 @@ void HeatersStopControlOnHeatersOff(ProcessParameters* ProcessParams)
temp_sum += ProcessParams->headzone4temp;
temp_sum += ProcessParams->headzone5temp;
temp_sum += ProcessParams->headzone6temp;
+ temp_sum += ProcessParams->headzone7temp;
+ temp_sum += ProcessParams->headzone8temp;
+ temp_sum += ProcessParams->headzone9temp;
+ temp_sum += ProcessParams->headzone10temp;
+ temp_sum += ProcessParams->headzone11temp;
+ temp_sum += ProcessParams->headzone12temp;
if (temp_sum == 0)// heating off
{
HeatersControlStop();
REPORT_MSG(temp_sum,"Heating control off - temperatures off");
}
+ else
+ {
+ HeatersControlStart();
+ }
}
uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData)
{
@@ -84,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));
@@ -101,191 +117,135 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData)
}
}
if (ProcessParams->mixertemp>1)
- status |= HeaterCommandRequestMessage(
- HARDWARE_PID_CONTROL_TYPE__MixerHeater, true,
- ProcessParams->mixertemp);
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__MixerHeater, true,ProcessParams->mixertemp);
else
- status |= HeaterCommandRequestMessage(
- HARDWARE_PID_CONTROL_TYPE__MixerHeater, false,
- ProcessParams->mixertemp);
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__MixerHeater, false,ProcessParams->mixertemp);
if (ProcessParams->headzone1temp>1)
{
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ1, true,ProcessParams->headzone1temp);
-#ifdef Use_Head_Card
- status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ7, true,ProcessParams->headzone1temp);
- status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater1, true,ProcessParams->headzone1temp);
-#endif
}
else
{
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ1, false,ProcessParams->headzone1temp);
-#ifdef Use_Head_Card
- status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ7, false,ProcessParams->headzone1temp);
- status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater1, false,ProcessParams->headzone1temp);
-#endif
}
if (ProcessParams->headzone2temp>1)
{
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ2, true,ProcessParams->headzone2temp);
-#ifdef Use_Head_Card
- status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ8, true,ProcessParams->headzone2temp);
- status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater2, true,ProcessParams->headzone2temp);
-#endif
}
else
{
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ2, false,ProcessParams->headzone2temp);
-#ifdef Use_Head_Card
- status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ8, false,ProcessParams->headzone2temp);
- status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater2, false,ProcessParams->headzone2temp);
-#endif
}
if (ProcessParams->headzone3temp>1)
{
status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ3, true,ProcessParams->headzone3temp);
-#ifdef Use_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
- status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ9, false,ProcessParams->headzone3temp);
-#endif
}
- if (ProcessParams->headzone4temp>1)
+ if(Head_Type != HEAD_TYPE_STAPLE_SPUN)
{
- status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ4, true,ProcessParams->headzone4temp);
-#ifdef Use_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
- 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
- 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
- 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
- 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
- status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ12, false,ProcessParams->headzone6temp);
-#endif
+ if (ProcessParams->headzone4temp>1)
+ {
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ4, true,ProcessParams->headzone4temp);
+ }
+ else
+ {
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ4, false,ProcessParams->headzone4temp);
+ }
+ if (ProcessParams->headzone5temp>1)
+ {
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ5, true,ProcessParams->headzone5temp);
+ }
+ else
+ {
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ5, false,ProcessParams->headzone5temp);
+ }
+ if (ProcessParams->headzone6temp>1)
+ {
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ6, true,ProcessParams->headzone6temp);
+ }
+ else
+ {
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ6, false,ProcessParams->headzone6temp);
+ }
}
if (ProcessParams->dryerzone1temp>1)
- 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)
- {
- status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ7, true,ProcessParams->headzone7temp);
- }
- else
- {
- status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ7, false,ProcessParams->headzone7temp);
- }
- if (ProcessParams->headzone8temp>1)
- {
- status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ8, true,ProcessParams->headzone8temp);
- }
- else
- {
- status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ8, false,ProcessParams->headzone8temp);
- }
- if (ProcessParams->headzone9temp>1)
- {
- status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ9, true,ProcessParams->headzone9temp);
- }
- else
- {
- status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ9, false,ProcessParams->headzone9temp);
- }
- if (ProcessParams->headzone10temp>1)
- {
- status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ10, true,ProcessParams->headzone10temp);
- }
- else
- {
- status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ10, false,ProcessParams->headzone10temp);
- }
- if (ProcessParams->headzone11temp>1)
- {
- status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ11, true,ProcessParams->headzone11temp);
- }
- else
- {
- status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ11, false,ProcessParams->headzone11temp);
- }
- if (ProcessParams->headzone12temp>1)
- {
- status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ12, true,ProcessParams->headzone12temp);
- }
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__DryerAirTemperature, true,ProcessParams->dryerzone1temp);
else
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__DryerAirTemperature, false,ProcessParams->dryerzone1temp);
+ if(Head_Type == HEAD_TYPE_SYLKO)
{
- status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ12, false,ProcessParams->headzone12temp);
- }
- if (ProcessParams->stspzone1temp>1)
- {
- status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater1, true,ProcessParams->stspzone1temp);
- }
- else
- {
- status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater1, false,ProcessParams->stspzone1temp);
- }
- if (ProcessParams->stspzone2temp>1)
- {
- status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater2, true,ProcessParams->stspzone2temp);
+ if (ProcessParams->headzone7temp>1)
+ {
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ7, true,ProcessParams->headzone7temp);
+ }
+ else
+ {
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ7, false,ProcessParams->headzone7temp);
+ }
+ if (ProcessParams->headzone8temp>1)
+ {
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ8, true,ProcessParams->headzone8temp);
+ }
+ else
+ {
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ8, false,ProcessParams->headzone8temp);
+ }
+ if (ProcessParams->headzone9temp>1)
+ {
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ9, true,ProcessParams->headzone9temp);
+ }
+ else
+ {
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ9, false,ProcessParams->headzone9temp);
+ }
+ if (ProcessParams->headzone10temp>1)
+ {
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ10, true,ProcessParams->headzone10temp);
+ }
+ else
+ {
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ10, false,ProcessParams->headzone10temp);
+ }
+ if (ProcessParams->headzone11temp>1)
+ {
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ11, true,ProcessParams->headzone11temp);
+ }
+ else
+ {
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ11, false,ProcessParams->headzone11temp);
+ }
+ if (ProcessParams->headzone12temp>1)
+ {
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ12, true,ProcessParams->headzone12temp);
+ }
+ else
+ {
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ12, false,ProcessParams->headzone12temp);
+ }
}
- else
+ if(Head_Type == HEAD_TYPE_STAPLE_SPUN)
{
- status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater2, false,ProcessParams->stspzone2temp);
+ if (ProcessParams->stspzone1temp>1)
+ {
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater1, true,ProcessParams->stspzone1temp);
+ }
+ else
+ {
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater1, false,ProcessParams->stspzone1temp);
+ }
+ if (ProcessParams->stspzone2temp>1)
+ {
+ status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater2, true,ProcessParams->stspzone2temp);
+ }
+ else
+ {
+ 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.h b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters.h
index 05425cc45..b1d870919 100644
--- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters.h
+++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters.h
@@ -17,6 +17,7 @@ extern int DCTimeSliceAllocation[HEATER_TYPE_MAX_HEATERS];
extern int NumberOFSlicesInUse;
extern uint32_t MillisecondsPerChange;
+void initializeArrays(void);
typedef struct HeaterPIDControlConfigstruc
{
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 d20f0511b..349d5a5e3 100644
--- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c
+++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c
@@ -63,27 +63,20 @@ uint32_t Heaters_Init(void)
int i;
//ROM_TimerDisable(Heater_timerBase, TIMER_A);
-#ifdef Use_Head_Card
- HeadADCPT100_SensorInitConfig();//OK
-#endif
FPGA_SensorInitConfig();
memset(HeaterControl,0,sizeof(HeaterControl));
-//#ifdef Use_Head_Card
for (i = 0;i<HEATER_TYPE_MAX_HEATERS; i++)
-/*#else
- for (i = 0;i<MAX_HEATERS_NUM; i++)
-#endif*/
DeActivateHeater(i);
+ initializeArrays();
BlowerCfg.enabled = true;
BlowerCfg.voltage = 3000;
BlowerCfg.heatingvoltage = 3000;
-#ifdef Use_WHS_Card
- BlowerCfg.hardwareblowertype = HARDWARE_BLOWER_TYPE__WHSBlower2;
-#else
- BlowerCfg.hardwareblowertype = HARDWARE_BLOWER_TYPE__DefaultBlower;
-#endif
+ if (WHS_Type == WHS_TYPE_UNKNOWN)
+ BlowerCfg.hardwareblowertype = HARDWARE_BLOWER_TYPE__DefaultBlower;
+ else
+ BlowerCfg.hardwareblowertype = HARDWARE_BLOWER_TYPE__WHSBlower2;
return OK;
}
@@ -193,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 )
{
@@ -205,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 6b7a01103..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 ********************************************/
@@ -93,17 +95,95 @@ uint32_t DisasterControlId = 0xFF;
#define MINIMUM_HEATER_READ 9.0
#define MAXIMUM_HEATER_READ 283
-#ifdef Use_Head_Card
uint32_t HeaterId2PT100Id[HEATER_TYPE_MAX_HEATERS] = {DRYER_AIR_PT100,DRYER_MAIN_PT100,DRYER_SECONDARY_PT100,HEAD_PT100_ZONE_1_0X80_0, HEAD_PT100_ZONE_2_0X80_1, HEAD_PT100_ZONE_3_0X82_0,
HEAD_PT100_ZONE_4_0X82_1, HEAD_PT100_ZONE_5_0X84_0, HEAD_PT100_ZONE_6_0X84_1,HEAD_PT100_MIXER_0X8E_0, HEAD_PT100_ZONE_7_0X86_0, HEAD_PT100_ZONE_8_0X86_1,
HEAD_PT100_ZONE_9_0X88_0, HEAD_PT100_ZONE_10_0X88_1, HEAD_PT100_ZONE_11_0X8A_0, HEAD_PT100_ZONE_12_0X8A_1,HEAD_PT100_AIR_HEATER_2_0X8C_1,HEAD_PT100_AIR_HEATER_1_0X8C_0 };
HEATERS_CURRENT HeaterId2CurrentId[HEATER_TYPE_MAX_HEATERS] = {NUM_OF_CURRENT_HEATERS,HEATER_DRYER_CURRENT_1,HEATER_DRYER_CURRENT_2,HEAD_CURRENT_ZONE_1, HEAD_CURRENT_ZONE_2,
HEAD_CURRENT_ZONE_3, HEAD_CURRENT_ZONE_4, HEAD_CURRENT_ZONE_5, HEAD_CURRENT_ZONE_6, HEAD_CURRENT_MIXER, HEAD_CURRENT_ZONE_7,
HEAD_CURRENT_ZONE_8, HEAD_CURRENT_ZONE_9, HEAD_CURRENT_ZONE_10, HEAD_CURRENT_ZONE_11, HEAD_CURRENT_ZONE_12,HEAD_CURRENT_HTIN_1,HEAD_CURRENT_HTOT_1};
-#else
-uint32_t HeaterId2PT100Id[HEATER_TYPE_MAX_HEATERS] = {DRYER_AIR_PT100,DRYER_MAIN_PT100,DRYER_SECONDARY_PT100,TEMP_SENSE_ANALOG_DYEINGH_TEMP1,TEMP_SENSE_ANALOG_DYEINGH_TEMP2,TEMP_SENSE_ANALOG_DYEINGH_TEMP3,TEMP_SENSE_ANALOG_DYEINGH_TEMP4,TEMP_SENSE_ANALOG_DYEINGH_TEMP5,HEAD6_PT100,MIXER_PT100,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};
-HEATERS_CURRENT HeaterId2CurrentId[HEATER_TYPE_MAX_HEATERS] = {NUM_OF_CURRENT_HEATERS,HEATER_DRYER_CURRENT_1,HEATER_DRYER_CURRENT_2,HEATER_HEAD_CURRENT_ZONE_1,HEATER_HEAD_CURRENT_ZONE_2,HEATER_HEAD_CURRENT_ZONE_3,HEATER_HEAD_CURRENT_ZONE_4,HEATER_HEAD_CURRENT_ZONE_5_6,HEATER_HEAD_CURRENT_ZONE_5_6,HEATER_MIXCHIP_CURRENT};
-#endif
+void initializeArrays(void)
+{
+ int i;
+ for (i=0;i<HEATER_TYPE_MAX_HEATERS;i++)
+ {
+ HeaterId2PT100Id[i] = 0xFF;
+ HeaterId2CurrentId[i] = NUM_OF_CURRENT_HEATERS;
+ }
+ if (Head_Type > HEAD_TYPE_SYLKO_WITHOUT_CARD)
+ {
+ HeaterId2PT100Id[HEATER_TYPE__DryerAirHeater] = DRYER_AIR_PT100;
+ HeaterId2PT100Id[HEATER_TYPE__DryerMainHeater] = DRYER_MAIN_PT100;
+ HeaterId2PT100Id[HEATER_TYPE__DryerSecondaryHeater] = DRYER_SECONDARY_PT100;
+ HeaterId2PT100Id[HEATER_TYPE__HeaterZone1] = HEAD_PT100_ZONE_1_0X80_0;
+ HeaterId2PT100Id[HEATER_TYPE__HeaterZone2] = HEAD_PT100_ZONE_2_0X80_1;
+ HeaterId2PT100Id[HEATER_TYPE__HeaterZone3] = HEAD_PT100_ZONE_3_0X82_0;
+ HeaterId2PT100Id[HEATER_TYPE__HeaterZone4] = HEAD_PT100_ZONE_4_0X82_1;
+ HeaterId2PT100Id[HEATER_TYPE__HeaterZone5] = HEAD_PT100_ZONE_5_0X84_0;
+ HeaterId2PT100Id[HEATER_TYPE__HeaterZone6] = HEAD_PT100_ZONE_6_0X84_1;
+ HeaterId2PT100Id[HEATER_TYPE__MixerHeater] = HEAD_PT100_MIXER_0X8E_0;
+ HeaterId2PT100Id[HEATER_TYPE__HeaterZone7] = HEAD_PT100_ZONE_7_0X86_0;
+ HeaterId2PT100Id[HEATER_TYPE__HeaterZone8] = HEAD_PT100_ZONE_8_0X86_1;
+ HeaterId2PT100Id[HEATER_TYPE__HeaterZone9] = HEAD_PT100_ZONE_9_0X88_0;
+ HeaterId2PT100Id[HEATER_TYPE__HeaterZone10] = HEAD_PT100_ZONE_10_0X88_1;
+ HeaterId2PT100Id[HEATER_TYPE__HeaterZone11] = HEAD_PT100_ZONE_11_0X8A_0;
+ HeaterId2PT100Id[HEATER_TYPE__HeaterZone12] = HEAD_PT100_ZONE_12_0X8A_1;
+ HeaterId2PT100Id[HEATER_TYPE__HeadCoverHeater1] = HEAD_PT100_AIR_HEATER_2_0X8C_1;
+ HeaterId2PT100Id[HEATER_TYPE__HeadCoverHeater2] = HEAD_PT100_AIR_HEATER_1_0X8C_0 ;
+
+ HeaterId2CurrentId[HEATER_TYPE__DryerAirHeater] = NUM_OF_CURRENT_HEATERS;
+ HeaterId2CurrentId[HEATER_TYPE__DryerMainHeater] = HEATER_DRYER_CURRENT_1;
+ HeaterId2CurrentId[HEATER_TYPE__DryerSecondaryHeater] = HEATER_DRYER_CURRENT_2;
+ HeaterId2CurrentId[HEATER_TYPE__HeaterZone1] = HEAD_CURRENT_ZONE_1;
+ HeaterId2CurrentId[HEATER_TYPE__HeaterZone2] = HEAD_CURRENT_ZONE_2;
+ HeaterId2CurrentId[HEATER_TYPE__HeaterZone3] = HEAD_CURRENT_ZONE_3;
+ HeaterId2CurrentId[HEATER_TYPE__HeaterZone4] = HEAD_CURRENT_ZONE_4;
+ HeaterId2CurrentId[HEATER_TYPE__HeaterZone5] = HEAD_CURRENT_ZONE_5;
+ HeaterId2CurrentId[HEATER_TYPE__HeaterZone6] = HEAD_CURRENT_ZONE_6;
+ HeaterId2CurrentId[HEATER_TYPE__MixerHeater] = HEAD_CURRENT_MIXER;
+ HeaterId2CurrentId[HEATER_TYPE__HeaterZone7] = HEAD_CURRENT_ZONE_7;
+ HeaterId2CurrentId[HEATER_TYPE__HeaterZone8] = HEAD_CURRENT_ZONE_8;
+ HeaterId2CurrentId[HEATER_TYPE__HeaterZone9] = HEAD_CURRENT_ZONE_9;
+ HeaterId2CurrentId[HEATER_TYPE__HeaterZone10] = HEAD_CURRENT_ZONE_10;
+ HeaterId2CurrentId[HEATER_TYPE__HeaterZone11] = HEAD_CURRENT_ZONE_11;
+ HeaterId2CurrentId[HEATER_TYPE__HeaterZone12] = HEAD_CURRENT_ZONE_12;
+ HeaterId2CurrentId[HEATER_TYPE__HeadCoverHeater1] = HEAD_CURRENT_HTIN_1;
+ HeaterId2CurrentId[HEATER_TYPE__HeadCoverHeater2] = HEAD_CURRENT_HTOT_1;
+
+ }
+ else
+ {
+ HeaterId2PT100Id[HEATER_TYPE__DryerAirHeater] = DRYER_AIR_PT100;
+ HeaterId2PT100Id[HEATER_TYPE__DryerMainHeater] = DRYER_MAIN_PT100;
+ HeaterId2PT100Id[HEATER_TYPE__DryerSecondaryHeater] = DRYER_SECONDARY_PT100;
+ HeaterId2PT100Id[HEATER_TYPE__HeaterZone1] = TEMP_SENSE_ANALOG_DYEINGH_TEMP1;
+ HeaterId2PT100Id[HEATER_TYPE__HeaterZone2] = TEMP_SENSE_ANALOG_DYEINGH_TEMP2;
+ HeaterId2PT100Id[HEATER_TYPE__HeaterZone3] = TEMP_SENSE_ANALOG_DYEINGH_TEMP3;
+ HeaterId2PT100Id[HEATER_TYPE__HeaterZone4] = TEMP_SENSE_ANALOG_DYEINGH_TEMP4;
+ HeaterId2PT100Id[HEATER_TYPE__HeaterZone5] = TEMP_SENSE_ANALOG_DYEINGH_TEMP5;
+ HeaterId2PT100Id[HEATER_TYPE__HeaterZone6] = HEAD6_PT100;
+ HeaterId2PT100Id[HEATER_TYPE__MixerHeater] = MIXER_PT100;
+ HeaterId2PT100Id[HEATER_TYPE__HeaterZone7] = 0xFF;
+ HeaterId2PT100Id[HEATER_TYPE__HeaterZone8] = 0xFF;
+ HeaterId2PT100Id[HEATER_TYPE__HeaterZone9] = 0xFF;
+ HeaterId2PT100Id[HEATER_TYPE__HeaterZone10] = 0xFF;
+ HeaterId2PT100Id[HEATER_TYPE__HeaterZone11] = 0xFF;
+ HeaterId2PT100Id[HEATER_TYPE__HeaterZone12] = 0xFF;
+ HeaterId2PT100Id[HEATER_TYPE__HeadCoverHeater1] = 0xFF;
+ HeaterId2PT100Id[HEATER_TYPE__HeadCoverHeater2] = 0xFF;
+
+ HeaterId2CurrentId[HEATER_TYPE__DryerAirHeater] = NUM_OF_CURRENT_HEATERS;
+ HeaterId2CurrentId[HEATER_TYPE__DryerMainHeater] = HEATER_DRYER_CURRENT_1;
+ HeaterId2CurrentId[HEATER_TYPE__DryerSecondaryHeater] = HEATER_DRYER_CURRENT_2;
+ HeaterId2CurrentId[HEATER_TYPE__HeaterZone1] = HEATER_HEAD_CURRENT_ZONE_1;
+ HeaterId2CurrentId[HEATER_TYPE__HeaterZone2] = HEATER_HEAD_CURRENT_ZONE_2;
+ HeaterId2CurrentId[HEATER_TYPE__HeaterZone3] = HEATER_HEAD_CURRENT_ZONE_3;
+ HeaterId2CurrentId[HEATER_TYPE__HeaterZone4] = HEATER_HEAD_CURRENT_ZONE_4;
+ HeaterId2CurrentId[HEATER_TYPE__HeaterZone5] = HEATER_HEAD_CURRENT_ZONE_5_6;
+ HeaterId2CurrentId[HEATER_TYPE__HeaterZone6] = HEATER_HEAD_CURRENT_ZONE_5_6;
+ HeaterId2CurrentId[HEATER_TYPE__MixerHeater] = HEATER_MIXCHIP_CURRENT;
+
+ }
+}
uint32_t DryerInternalPT100Id = DRYER_AIR_PT100;
bool HeatersRestart = false;
@@ -125,6 +205,7 @@ Mailbox_Handle HeatersControlMsgQ = NULL;
bool HeaterReady[HEATER_TYPE_MAX_HEATERS] = {true};
bool HeaterAtTemp[HEATER_TYPE_MAX_HEATERS] = {true};
uint32_t HeaterPreviousRead[HEATER_TYPE_MAX_HEATERS] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; //A/C Heaters Cycle time in milliseconds - one for all heaters
+uint32_t HeaterSpikeRead[HEATER_TYPE_MAX_HEATERS] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; //A/C Heaters Cycle time in milliseconds - one for all heaters
EventType HeaterEventType[HEATER_TYPE_MAX_HEATERS] = {EVENT_TYPE__DRYER_ZONE_1_OVERTEMPERATURE,EVENT_TYPE__DRYER_ZONE_2_OVERTEMPERATURE,EVENT_TYPE__DRYER_ZONE_1_OVERTEMPERATURE,EVENT_TYPE__DYEING_HEAD_ZONE_1_OVERTEMPERATURE,EVENT_TYPE__DYEING_HEAD_ZONE_2_OVERTEMPERATURE,
EVENT_TYPE__DYEING_HEAD_ZONE_3_OVERTEMPERATURE,EVENT_TYPE__DYEING_HEAD_ZONE_4_OVERTEMPERATURE,EVENT_TYPE__DYEING_HEAD_ZONE_5_OVERTEMPERATURE,EVENT_TYPE__DYEING_HEAD_ZONE_6_OVERTEMPERATURE,
EVENT_TYPE__MIXER_OVERTEMPERATURE,EVENT_TYPE__DYEING_HEAD_ZONE_7_OVERTEMPERATURE,EVENT_TYPE__DYEING_HEAD_ZONE_8_OVERTEMPERATURE,EVENT_TYPE__DYEING_HEAD_ZONE_9_OVERTEMPERATURE,
@@ -216,7 +297,7 @@ typedef enum{
MAX_INTERNAL_ALARMS
}InternalTemperatureTestPointsEnum;
int InternalAlarmCounter[MAX_INTERNAL_ALARMS] = {0,0,0};
-uint32_t InternalId2PT100Id[MAX_INTERNAL_ALARMS] = {TEMP_SENSE_AN_ENCLOSURETEMP1,TEMP_SENSE_AN_ENCLOSURETEMP1,0xFF};
+uint32_t InternalId2PT100Id[MAX_INTERNAL_ALARMS] = {TEMP_SENSE_AN_ENCLOSURETEMP1,TEMP_SENSE_AN_ENCLOSURETEMP2,0xFF};
int32_t InternalOverHeatCounter [MAX_INTERNAL_ALARMS] = {0,0,0};
bool InternalAlarmActive[MAX_INTERNAL_ALARMS] = {false,false,false};
uint32_t ControlIdtoInternalId[MAX_INTERNAL_ALARMS] = {0xFF,0xFF,0xFF};
@@ -362,7 +443,10 @@ uint32_t HeatersSingleHeaterEnd(int HeaterId)
HeaterCmd[HeaterId].targettemperatue = 0;
HeaterReady[HeaterId] = true;
HeaterAtTemp[HeaterId] = true;
- Disable_Reading_Heaters_Current(HeaterId2CurrentId[HeaterId]);
+ if(Head_Type > HEAD_TYPE_SYLKO_WITHOUT_CARD)
+ Disable_Reading_Heaters_ADC(HeaterId2CurrentId[HeaterId]);
+ else
+ Disable_Reading_Heaters_Current(HeaterId2CurrentId[HeaterId]);
}
else if (HeaterId < MAX_AC_HEATERS) //AC Heaters
{
@@ -390,8 +474,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;
@@ -615,6 +699,7 @@ void PrepareACHeater(int HeaterId,uint32_t Frequency, uint32_t SetTemperatue)
HeaterAtTemp[HeaterId] = false;
if (BlowerCfg.enabled == true)
{
+ //WHS_Start_Blower_Control_Closed_Loop(2.5);
Turn_the_Blower_On();//Turn on with the Default_Voltage
if (BlowerCfg.heatingvoltage)
Control_Voltage_To_Blower(BlowerCfg.heatingvoltage);
@@ -641,7 +726,7 @@ int PrepareDCHeater(int HeaterId, uint32_t Frequency, uint32_t SetTemperatue)
HeaterPreviousRead[HeaterId] = MillisecGetTemperatures(HeaterId2PT100Id[HeaterId]);//MillisecGetTemperatures(HeaterId2PT100Id[HeaterId]);
if((HeaterPreviousRead[HeaterId]<=MINIMUM_HEATER_READ*100)||(MAXIMUM_HEATER_READ*100<=HeaterPreviousRead[HeaterId]))
{
- ReportWithPackageFilter(HeatersFilter,"PT100 not working properly",__FILE__,__LINE__,HeaterId,RpError, 0,0);
+ ReportWithPackageFilter(HeatersFilter,"PT100 not working properly",__FILE__,HeaterId,HeaterPreviousRead[HeaterId],RpError, 0,0);
if (ControlIdtoMaxHeaterId [HeaterId] != 0xFF)
{
RemoveControlCallback(ControlIdtoMaxHeaterId [HeaterId], DcHeaterMaxTempCBFunction);
@@ -671,7 +756,10 @@ int PrepareDCHeater(int HeaterId, uint32_t Frequency, uint32_t SetTemperatue)
AlarmHandlingSetAlarm(HeaterUnderEventType_B[HeaterId], false);
AlarmHandlingSetAlarm(HeaterEventType[HeaterId], false);
- Enable_Reading_Heaters_Current(HeaterId2CurrentId[HeaterId]);
+ if(Head_Type > HEAD_TYPE_SYLKO_WITHOUT_CARD)
+ Enable_Reading_Heaters_ADC(HeaterId2CurrentId[HeaterId]);
+ else
+ Enable_Reading_Heaters_Current(HeaterId2CurrentId[HeaterId]);
//ReportWithPackageFilter(HeatersFilter,"PrepareHeater Read", __FILE__,HeaterId, SetTemperatue, RpWarning,HeaterPreviousRead[HeaterId], 0);
if (ControlIdtoMaxHeaterId [HeaterId] == 0xFF)
@@ -785,17 +873,11 @@ bool HeaterGetOverTemperatureState(uint8_t HeaterId)
return HeaterMaxTempFlag[HeaterId];
}
uint32_t MainPT100Read = 0,SecondaryPT100Read = 0;
-int MinuteCallerMaxAc = 0,MinuteCallerMaxDc = 0,MinuteCallerAc = 0,MinuteCallerDc = 0;
uint32_t HeaterMaxTempCBFunction(uint32_t IfIndex, uint32_t readValue)
{
int index=HEATER_TYPE_MAX_HEATERS;
int32_t MaxreadValue;
- if (MinuteCallerMaxAc++ >= 60)
- {
- MinuteCallerMaxAc = 0;
- ReportWithPackageFilter(HeatersFilter, "MinuteCallerMaxAc",__FILE__,__LINE__,IfIndex,RpError, readValue,0);
- }
if (IfIndex>>8 != IfTypeHeaters)
{
ReportWithPackageFilter(HeatersFilter, "Wrong Interface type",__FILE__,__LINE__,IfIndex,RpError, 0,0);
@@ -812,6 +894,15 @@ uint32_t HeaterMaxTempCBFunction(uint32_t IfIndex, uint32_t readValue)
if (abs(readValue - HeaterPreviousRead[index])>2000)
{
ReportWithPackageFilter(HeatersFilter,"Temperature Spike",__FILE__,index,HeaterPreviousRead[index],RpWarning,readValue, index);
+ if (HeaterSpikeRead[index] == 0)
+ {
+ HeaterSpikeRead[index] = readValue;
+ }
+ else
+ {
+ HeaterPreviousRead[index] = HeaterSpikeRead[index];
+ HeaterSpikeRead[index] = 0;
+ }
HeaterMaxTempFlag[index] = true;
DeActivateHeater(HEATER_TYPE__DryerMainHeater);
HeaterRecalculateSharedHeatersParams(HEATER_TYPE__DryerMainHeater,0);
@@ -869,11 +960,6 @@ uint32_t HeaterMaxTempCBFunction(uint32_t IfIndex, uint32_t readValue)
uint32_t DcHeaterMaxTempCBFunction(uint32_t IfIndex, uint32_t readValue)
{
int index=HEATER_TYPE_MAX_HEATERS;
- if (MinuteCallerMaxDc++ >= 60*10)
- {
- MinuteCallerMaxDc = 0;
- ReportWithPackageFilter(HeatersFilter, "MinuteCallerMaxDc",__FILE__,__LINE__,IfIndex,RpError, readValue,0);
- }
if (IfIndex>>8 != IfTypeHeaters)
{
ReportWithPackageFilter(HeatersFilter, "Wrong Interface type",__FILE__,__LINE__,IfIndex,RpError, 0,0);
@@ -885,7 +971,7 @@ uint32_t DcHeaterMaxTempCBFunction(uint32_t IfIndex, uint32_t readValue)
return OK;
if ((HeaterPreviousRead[index]) >= HeaterControl[index].sensormaxvalue)
{
- ReportWithPackageFilter(HeatersFilter,"Heater over the max temperature",__FILE__,OverHeatCounter[index],index,RpWarning,HeaterControl[index].sensormaxvalue, 0);
+ ReportWithPackageFilter(HeatersFilter,"Heater over the max temperature",__FILE__,index,OverHeatCounter[index],RpWarning,HeaterControl[index].sensormaxvalue, 0);
if(OverHeatCounter[index]++ >=Overheat_Count_Limit)
{
OverHeatCounter[index] = Overheat_Count_Limit;
@@ -913,8 +999,8 @@ uint32_t DcHeaterMaxTempCBFunction(uint32_t IfIndex, uint32_t readValue)
{
if (HeaterReady[index]==true)
{
- ReportWithPackageFilter(HeatersFilter,"Heater under the min temperature",__FILE__,UnderHeatCounter[index],index,RpWarning,HeaterControl[index].sensorminvalue, 0);
- ReportWithPackageFilter(HeatersFilter,"Heater under the min temperature",__FILE__,HeaterReady[index],GetHeaterState(index),RpWarning,HeaterPreviousRead[index], 0);
+ ReportWithPackageFilter(HeatersFilter,"Heater under the min temperature",__FILE__,index,UnderHeatCounter[index],RpWarning,HeaterControl[index].sensorminvalue, 0);
+ ReportWithPackageFilter(HeatersFilter,"Heater under the min temperature more info",__FILE__,HeaterReady[index],GetHeaterState(index),RpWarning,HeaterPreviousRead[index], 0);
}
if(UnderHeatCounter[index]++ >=Underheat_Count_Limit)
{
@@ -968,11 +1054,6 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue)
{
int index=HEATER_TYPE_MAX_HEATERS;
//uint8_t len = 0;
- if (MinuteCallerAc++ >= 60)
- {
- MinuteCallerAc = 0;
- ReportWithPackageFilter(HeatersFilter, "MinuteCallerAc",__FILE__,__LINE__,IfIndex,RpError, readValue,0);
- }
if (IfIndex>>8 != IfTypeHeaters)
{
ReportWithPackageFilter(HeatersFilter, "Wrong Interface type",__FILE__,__LINE__,IfIndex,RpError, 0,0);
@@ -999,6 +1080,15 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue)
ReportWithPackageFilter(HeatersFilter,"AC Temperature Spike",__FILE__,index,HeaterPreviousRead[index],RpWarning,readValue, index);
if (readValue > HeaterCmd[index].targettemperatue)
{
+ if (HeaterSpikeRead[index] == 0)
+ {
+ HeaterSpikeRead[index] = readValue;
+ }
+ else
+ {
+ HeaterPreviousRead[index] = HeaterSpikeRead[index];
+ HeaterSpikeRead[index] = 0;
+ }
DeActivateHeater(HEATER_TYPE__DryerSecondaryHeater);
DeActivateHeater(HEATER_TYPE__DryerMainHeater);
HeaterRecalculateSharedHeatersParams(HEATER_TYPE__DryerMainHeater,0);
@@ -1073,21 +1163,22 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue)
&& (readValue < (HeaterCmd[index].targettemperatue * ((100+HeaterControl[index].outputproportionalband)/100))))
{
//InitialHeating = false;
- ReportWithPackageFilter(HeatersFilter,"AC PID Activating",__FILE__,__LINE__,readValue,RpWarning,(HeaterCmd[index].targettemperatue), 0);
+ ReportWithPackageFilter(HeatersFilter,"AC PID Activating",__FILE__,index,readValue,RpWarning,(HeaterCmd[index].targettemperatue), 0);
DeActivateHeater(HEATER_TYPE__DryerSecondaryHeater);
HeaterRecalculateSharedHeatersParams(HEATER_TYPE__DryerSecondaryHeater, 0);
HeatersControlStart();
AlarmHandlingSetAlarm(HeaterUnderEventType[index], false);
if (BlowerCfg.enabled == true)
{
+ //WHS_Start_Blower_Control_Closed_Loop(5.0);
Turn_the_Blower_On();//Turn on with the Default_Voltage
if (BlowerCfg.voltage)
//Gradual_Increase_Blower(BlowerCfg.heatingvoltage,BlowerCfg.voltage);
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;
@@ -1097,7 +1188,7 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue)
if ((readValue > (HeaterCmd[index].targettemperatue * AcHeatersLoweroperationLimit/1000))&&(readValue < (HeaterCmd[index].targettemperatue * AcHeatersUpperoperationLimit/1000)))//read value within 0.5 percent from target
{
//InitialHeating = false;
- ReportWithPackageFilter(HeatersFilter,"AC Ready",__FILE__,__LINE__,readValue,RpWarning,(HeaterCmd[index].targettemperatue), 0);
+ ReportWithPackageFilter(HeatersFilter,"AC Ready",__FILE__,index,readValue,RpWarning,(HeaterCmd[index].targettemperatue), 0);
HeaterAtTemp[index] = true;
HeaterPrepareReady();
}
@@ -1172,11 +1263,6 @@ uint32_t DCHeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue)
int index=HEATER_TYPE_MAX_HEATERS;
//int len;
//uint8_t len = 0;
- if (MinuteCallerDc++ >= 60*10)
- {
- MinuteCallerDc = 0;
- ReportWithPackageFilter(HeatersFilter, "MinuteCallerDc",__FILE__,__LINE__,IfIndex,RpError, readValue,0);
- }
if (IfIndex>>8 != IfTypeHeaters)
{
ReportWithPackageFilter(HeatersFilter, "Wrong Interface type",__FILE__,__LINE__,IfIndex,RpError, 0,0);
@@ -1202,6 +1288,15 @@ uint32_t DCHeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue)
{
DeActivateHeater(index);
HeaterRecalculateHeaterParams(index, 0);
+ if (HeaterSpikeRead[index] == 0)
+ {
+ HeaterSpikeRead[index] = readValue;
+ }
+ else
+ {
+ HeaterPreviousRead[index] = HeaterSpikeRead[index];
+ HeaterSpikeRead[index] = 0;
+ }
}
}
HeaterPreviousRead[index] = readValue;
@@ -1226,7 +1321,7 @@ uint32_t DCHeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue)
DeActivateHeater(index);
HeaterRecalculateHeaterParams(index, 0);
//Heaters OFF until coming into the proportional band
- ReportWithPackageFilter(HeatersFilter,"HEATER Over temperature ", __FILE__,__LINE__,index, RpMessage, readValue, 0);
+ ReportWithPackageFilter(HeatersFilter,"HEATER Over temperature ", __FILE__,index,HeaterCmd[index].targettemperatue, RpMessage, readValue, 0);
return OK;
}
if (readValue < ((HeaterCmd[index].targettemperatue * (100-HeaterControl[index].outputproportionalband))/100))
@@ -1246,7 +1341,10 @@ uint32_t DCHeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue)
//DCInitialHeating[index] = false;
HeatersControlStart();
AlarmHandlingSetAlarm(HeaterUnderEventType[index], false);
- Disable_Reading_Heaters_Current(HeaterId2CurrentId[index]);
+ if(Head_Type > HEAD_TYPE_SYLKO_WITHOUT_CARD)
+ Disable_Reading_Heaters_ADC(HeaterId2CurrentId[index]);
+ else
+ Disable_Reading_Heaters_Current(HeaterId2CurrentId[index]);
HeaterReady[index] = true;
}
return OK;
@@ -1257,6 +1355,11 @@ uint32_t DCHeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue)
{
ReportWithPackageFilter(HeatersFilter,"DC Ready",__FILE__,index,readValue,RpWarning,(HeaterCmd[index].targettemperatue), 0);
HeaterAtTemp[index] = true;
+ if (HeaterReady[index] == false)
+ {
+ HeaterReady[index] = true;
+ ReportWithPackageFilter(HeatersFilter,"DC FastReady",__FILE__,index,readValue,RpWarning,(HeaterCmd[index].targettemperatue), 0);
+ }
HeaterPrepareReady();
}
}
@@ -1365,7 +1468,7 @@ uint32_t HeatersDisasterControl(uint32_t x,uint32_t y)
temperature = MillisecGetTemperatures(HeaterId2PT100Id[HeaterId]);
if ((temperature>=HeaterDisasterTemp[HeaterId])&&(temperature<28300))
{
- ReportWithPackageFilter(HeatersFilter,"Disaster Temperature ",__FILE__,HeaterId,temperature,RpWarning,HeaterDisasterTemp[HeaterId], 0);
+ //ReportWithPackageFilter(HeatersFilter,"Disaster Temperature ",__FILE__,HeaterId,temperature,RpWarning,HeaterDisasterTemp[HeaterId], 0);
if (HeaterDisasterCounter[HeaterId]++ >= DISASTER_COUNTER_LIMIT)
HeaterDisasterCounter[HeaterId] = DISASTER_COUNTER_LIMIT;
}
@@ -1383,6 +1486,78 @@ uint32_t HeatersDisasterControl(uint32_t x,uint32_t y)
}
return OK;
}
+bool UseSecondaryDrierHeater = true;
+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)
+{
+ 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)
{
//char str[100];
@@ -1410,7 +1585,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)
{
@@ -1422,9 +1597,9 @@ uint32_t HeatersControlLoop(uint32_t tick)
//DeActivate HEATER_TYPE__DryerSecondaryHeater
//DeActivateHeater (HEATER_TYPE__DryerSecondaryHeater);
}
- if (HeaterMaxTempFlag[HEATER_TYPE__DryerSecondaryHeater] == false)
+ 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/IDS/IDS_dispenser.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c
index f43cf8c56..6e4eed580 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c
@@ -27,9 +27,9 @@
uint32_t CloseValveTimeout = 10;
uint32_t OpenValveTimeout = 10;
-#define DISPENSER_BUILD_PRESSURE_SPEED 900
-#define DISPENSER_BUILD_PRESSURE_LIMIT 1.5
-#define DISPENSER_BUILD_PRESSURE_TIMEOUT 60000
+#define DISPENSER_BUILD_PRESSURE_SPEED 940
+#define DISPENSER_BUILD_PRESSURE_LIMIT 1.0
+#define DISPENSER_BUILD_PRESSURE_TIMEOUT 120000
#define DISPENSER_BUILD_PRESSURE_LAG 50
#define DEFAULT_NANOLITER_PER_PULSE 2.34
uint32_t DispenserPrepareSpeed = DISPENSER_BUILD_PRESSURE_SPEED;
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h
index a819448a8..5c01d7563 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h
@@ -76,6 +76,8 @@ uint32_t IDS_StopHomeDispenser (uint32_t deviceID);
uint32_t IDS_HomeDispenserWaitForHomingEnd(uint32_t DispenserId, uint32_t timeout , callback_fptr callback);
bool IDS_IsHomingActive(uint32_t DispenserId);
+
+
uint32_t IDS_EmptyDispenser (uint32_t deviceID, uint32_t speed , callback_fptr callback);
uint32_t IDS_Dispenser_Alarm_On (uint8_t deviceID);
uint32_t IDS_Dispenser_Alarm_Off (uint8_t deviceID);
@@ -90,6 +92,8 @@ void IDS_Dispenser_SetPreSegmentWFCFValues(double dispenserpresegmentwfcf, doubl
void IDS_Dispenser_SetPreSegmentCleaningValues(double ids_cleaningspeed,double ids_cleaningstartspraypresegmenttime ,double ids_cleaningstopbeforesegmenttime,double ids_leftcleaningmotorspeed,double ids_rightcleaningmotorspeed);
void IDS_Dispenser_SetAutoHoming_Config(AutoHoming_Config_enum Config);
+bool Set_Check_Pressure_Bypass(int);
+
uint32_t IDS_Dispenser_Close_Valve_And_Stop_Motor(int DispenserId, callback_fptr callback);
uint32_t IDS_Dispenser_Start_Motor_and_Open_Valve(int DispenserId, int MotorSpeed, callback_fptr callback);
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c
index ad0f29392..3b6291285 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c
@@ -90,7 +90,11 @@ AutoHoming_Config_enum AutoHoming_Config = AutoHoming_off;
void IDS_Dispenser_SetAutoHoming_Config(AutoHoming_Config_enum Config)
{
Report("IDS_Dispenser_SetAutoHoming_Config ",__FILE__,__LINE__,Config,RpWarning,AutoHoming_Config,0);
+#ifdef SPECIAL_DISPENSERS
+ AutoHoming_Config = AutoHoming_off;
+#else
AutoHoming_Config = Config;
+#endif
}
void IDS_Dispenser_SetBackLashValues(double initialdispenserpressure, uint32_t initialdispensertimeout, uint32_t initialdispensertimelag, uint32_t initialdispenserspeed)
@@ -199,7 +203,7 @@ uint32_t IDS_HomeDispenserCallback(uint32_t motorId, uint32_t ReadValue)
// MotorSetSpeed(motorId, InitialDispenserSpeed);
CurrentDispenserSpeed[DispenserId] = 0;
/////////////////////////////////////////////////////////////
- if (Extended_Motor_Param == true)
+ if (Extended_Motor_Param[motorId] == true)
Power_Step_01_Dispenser_Mode(DispenserId,Voltage);
//MotorSetMicroStep(motorId, KeepMicrostep[DispenserId]);
HomingActive[DispenserId]= false;
@@ -264,7 +268,7 @@ uint32_t IDS_HomeDispenser (uint32_t DispenserId, uint32_t speed , callback_fptr
HomingActive[DispenserId] = true;
//open dispenser valve dispenser to midtank direction
Control3WayValvesWithCallback ((Valves_t)DispenserId, MidTank_Dispenser, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer
- if (Extended_Motor_Param == true)
+ if (Extended_Motor_Param[MotorId] == true)
Power_Step_01_Dispenser_Mode(DispenserId,Current);
KeepMicrostep[DispenserId] = MotorsCfg[MotorId].microstep;
//MotorSetMicroStep(MotorId, 1);
@@ -275,15 +279,15 @@ uint32_t IDS_HomeDispenser (uint32_t DispenserId, uint32_t speed , callback_fptr
IDS_Dispenser_RefillStarted(DispenserId,1);
if (DispenserId== LUBRICANT_DISPENSER)
{
- MotorMovetoLimitSwitch (MotorId,1-MotorsCfg[MotorId].directionthreadwize, speed/2, Dispenser_Id_to_LS_Id[DispenserId], IDS_HomeDispenserCallback,0);
- CurrentDispenserSpeed[DispenserId] = speed/2;
- Report("IDS_HomeDispenser ",__FILE__,__LINE__,(int)DispenserId,RpWarning,speed/2,0);
+ MotorMovetoLimitSwitch (MotorId,1-MotorsCfg[MotorId].directionthreadwize, speed/4, Dispenser_Id_to_LS_Id[DispenserId], IDS_HomeDispenserCallback,0);
+ CurrentDispenserSpeed[DispenserId] = speed/4;
+ Report("IDS_HomeDispenser ",__FILE__,(int)midTankContent*1000,(int)DispenserId,RpWarning,speed/4,0);
}
else
{
MotorMovetoLimitSwitch (MotorId,1-MotorsCfg[MotorId].directionthreadwize, speed, Dispenser_Id_to_LS_Id[DispenserId], IDS_HomeDispenserCallback,0);
CurrentDispenserSpeed[DispenserId] = speed;
- Report("IDS_HomeDispenser ",__FILE__,__LINE__,(int)DispenserId,RpWarning,speed,0);
+ Report("IDS_HomeDispenser ",__FILE__,(int)midTankContent*1000,(int)DispenserId,RpWarning,speed,0);
}
CurrentDispenserSpeed[DispenserId] = (-1*CurrentDispenserSpeed[DispenserId]);
return OK;
@@ -322,7 +326,7 @@ uint32_t IDS_StopHomeDispenser (uint32_t DispenserId)
HomingActive[DispenserId] = false;
PrimingActive[DispenserId] = false;
Control_TCA9534ByPass(DispenserId,DISABLE);// use ENABLE or DISABLE
- if (Extended_Motor_Param == true)
+ if (Extended_Motor_Param[MotorId] == true)
Power_Step_01_Dispenser_Mode(DispenserId,Voltage);
//MotorSetMicroStep(MotorId, KeepMicrostep[DispenserId]);
CurrentDispenserSpeed[DispenserId] = 0;
@@ -400,7 +404,7 @@ uint32_t IDS_EmptyDispenserCallback(uint32_t motorId, uint32_t ReadValue)
MotorStop(motorId,Hard_Hiz);
CurrentDispenserSpeed[DispenserId] = 0;
- if (Extended_Motor_Param == true)
+ if (Extended_Motor_Param[motorId] == true)
Power_Step_01_Dispenser_Mode(DispenserId,Voltage);
//MotorSetMicroStep(motorId, KeepMicrostep[DispenserId]);
PrimingActive[DispenserId]= false;
@@ -445,7 +449,7 @@ uint32_t IDS_EmptyDispenser (uint32_t DispenserId, uint32_t speed , callback_fpt
HomingRequestCallback[DispenserId] = callback;
//open dispenser valve dispenser to midtank direction
Control3WayValvesWithCallback ((Valves_t)DispenserId, Dispenser_Mixer, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer
- if (Extended_Motor_Param == true)
+ if (Extended_Motor_Param[MotorId] == true)
Power_Step_01_Dispenser_Mode(DispenserId,Current);
//Valve_Set((Valves_t) request->index, Dispenser_Mixer);
KeepMicrostep[DispenserId] = MotorsCfg[MotorId].microstep;
@@ -473,7 +477,7 @@ uint32_t IDS_Dispenser_Alarm_On (uint8_t DispenserId)
status |= MotorAbortMovetoLimitSwitch(MotorId);
Valve_Set(IDS_Id_to_AirValve[DispenserId], Atm_MidTank_OFF);
Disable_MidTank_Pressure_Reading(DispenserId);
- if (Extended_Motor_Param == true)
+ if (Extended_Motor_Param[MotorId] == true)
Power_Step_01_Dispenser_Mode(DispenserId,Voltage);
//status |= MotorSetMicroStep(MotorId, KeepMicrostep[DispenserId]);
status |= MotorStop(MotorId, Hard_Hiz);
@@ -496,6 +500,15 @@ uint32_t IDS_ReCheck_Pressure_Callback(uint32_t DispenserId, uint32_t ReadValue)
return OK;
}
+bool Check_Pressure_Bypass = false;
+bool Set_Check_Pressure_Bypass (int value)
+{
+ if (value == 0)
+ Check_Pressure_Bypass = false;
+ else
+ Check_Pressure_Bypass = true;
+ return Check_Pressure_Bypass;
+}
uint32_t IDS_Check_Pressure_Callback(uint32_t DispenserId, uint32_t ReadValue)
{
TimerMotors_t HW_Motor_Id = DispenserIdToMotorId[DispenserId];
@@ -507,6 +520,8 @@ uint32_t IDS_Check_Pressure_Callback(uint32_t DispenserId, uint32_t ReadValue)
return ERROR;
}
}
+ if (Check_Pressure_Bypass == true)
+ return OK;
if (GetDispenserPressure(DispenserId)>3.0)
{
@@ -533,7 +548,8 @@ void IDS_Dispenser_Init(uint8_t DispenserId)
PrimingActive[DispenserId]= false;
Valve_Set(IDS_Id_to_AirValve[DispenserId], Atm_MidTank_OFF);
Control3WayValvesWithCallback ((Valves_t)DispenserId, MidTank_Dispenser, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer
+#ifdef SPECIAL_DISPENSERS
if (ControlIdtoInactiveDispenserId[DispenserId] == 0xFF)
ControlIdtoInactiveDispenserId[DispenserId] = AddControlCallback("IDS_Check_Pressure", IDS_Check_Pressure_Callback, eOneMinute,TemplateDataReadCBFunction ,DispenserId, 0, 0 );
-
+#endif
}
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
index 708b11342..0c28ee564 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
@@ -519,16 +519,16 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue)
if (DispenserUsedInJob[i] == true) //we actually should check for all dispensers
{
HW_Motor_Id = DispenserIdToMotorId[i];
- if (GetDispenserPressure(i) > DispenserPreparePressure)
+ if (GetDispenserPressure(i) > DispenserPreparePressure*1.05)
{
NumofReadyDispensers++;
- CurrentDispenserSpeed[i] = 0;
#ifdef SPECIAL_DISPENSERS
MotorStop(HW_Motor_Id, Hard_Hiz);
+ CurrentDispenserSpeed[i] = 0;
//Report("IDS stopped ready",__FILE__,i,(int)(DispenserPreparePressure*100),RpWarning,(int)NumofReadyDispensers,0);
#else
tempSpeed = CurrentDispenserSpeed[i];
- updatedSpeed = (tempSpeed*0.985>100)?tempSpeed*0.985:100;
+ updatedSpeed = (tempSpeed*0.992>100)?tempSpeed*0.992:100;
MotorSetSpeed(HW_Motor_Id, updatedSpeed);
CurrentDispenserSpeed[i] = updatedSpeed;
//Report("IDS reduce speed",__FILE__,i,(int)tempSpeed,RpWarning,(int)updatedSpeed,0);
@@ -543,7 +543,7 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue)
#else
tempSpeed = CurrentDispenserSpeed[i];
#endif
- updatedSpeed = (tempSpeed*1.02<InitialDispenserSpeed)?tempSpeed*1.02:InitialDispenserSpeed;
+ updatedSpeed = (tempSpeed*1.03<InitialDispenserSpeed)?tempSpeed*1.03:InitialDispenserSpeed;
MotorSetSpeed(HW_Motor_Id, updatedSpeed);
CurrentDispenserSpeed[i] = updatedSpeed;
#ifdef SPECIAL_DISPENSERS
@@ -569,7 +569,7 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue)
Report("pressureReady = true or timeout;",__FILE__,DispenserBuildTimeCounter,NumofReadyDispensers,RpWarning,(int)NumOfActiveDispensers,0);
}
}
-#ifndef SPECIAL_DISPENSERS
+//#ifndef SPECIAL_DISPENSERS
else if (endOfPrepareWCF == false)
{
if ((DispenserBuildTimeCounter == PRESSURE_READ_TIME_GAP)&&(FirstBrushStop))
@@ -614,8 +614,11 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue)
segmentfirst_speed /= 100;
DispenserSegmentReady[DispenserId] = false;
//Control3WayValvesWithCallback (DispenserId, Dispenser_Mixer, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer
- //IDS_Dispenser_Start_Motor_and_Open_Valve(DispenserId,segmentfirst_speed,NULL);
+#ifdef SPECIAL_DISPENSERS
+ IDS_Dispenser_Start_Motor_and_Open_Valve(DispenserId,segmentfirst_speed,NULL);
+#else
MotorSetSpeed(HW_Motor_Id, segmentfirst_speed);
+#endif
CurrentDispenserSpeed[Dispenser_i] = segmentfirst_speed;
usnprintf(IdMessage, 80,
@@ -657,13 +660,13 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue)
}
}
-#endif
+/*#endif
#ifdef SPECIAL_DISPENSERS
if (pressureReady == true)
-#else
+#else*/
//start new stage
if (endOfPrepareWCF == true)
-#endif
+//#endif
{
SafeRemoveControlCallback(DispenserPrepareControlId, IDS_Prepare_Callback );
DispenserPrepareControlId = 0xFF;
@@ -785,6 +788,9 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue)
for (i = 0; i < MAX_DYE_DISPENSERS; i++)
{
dispenserspeed = DispenserPrepareSpeed;
+#ifdef SPECIAL_DISPENSERS
+ dispenserspeed = 300;
+#endif
TimerMotors_t HW_Motor_Id = DispenserIdToMotorId[i];
if (DispenserUsedInJob[i] == true) //we actually should check for all dispensers
@@ -1024,7 +1030,7 @@ uint32_t IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback);
*/
//InterSegmentStepsLimit = lInterSegmentLength*10;//100 millisec steps
InterSegmentStepsCount+=100;
- if (InterSegmentStepsCount == lInterSegmentLength)
+ if (InterSegmentStepsCount >= lInterSegmentLength)
{
//IDS_Valve_PresegmentReady(1,0);
Report("End of Pre-segment Handling",__FILE__,__LINE__,InterSegmentStepsCount,RpWarning,(int)lInterSegmentLength,0);
@@ -1033,6 +1039,8 @@ uint32_t IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback);
if (CurrentDispenserSpeed[CLEANER_DISPENSER]>0)
IDS_Cleaning_Stop_Cleaning_Solution (NULL);
setRapidPressureRead(false);
+ if (JobEndSequence == true)
+ DistanceToSpoolReady(Module_IDS,ModuleDone);
}
if (EnableCleaning == true)
{
@@ -1058,7 +1066,7 @@ uint32_t IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback);
//cleaning
return OK;
}
-#ifndef SPECIAL_DISPENSERS
+//#ifndef SPECIAL_DISPENSERS
if ((InterSegmentStartWFCFDispensers > 12000)&&(InterSegmentStartWFCFDispensers == (InterSegmentStepsCount+12000)))
{
//start prepare 4 seconds before wcf
@@ -1139,7 +1147,7 @@ uint32_t IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback);
//close waste valve one second before segment - trial
Valve_Set(VALVE_MIXCHIP_WASTECH, Mixer_Head);
}
-#endif
+//#endif
return OK;
}
uint32_t IDSCheckSegmentData(void *SegmentDetails, int SegmentId)
@@ -1510,7 +1518,7 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId)
#else
Valve_Set(VALVE_MIXCHIP_WASTECH, Mixer_Head);
#endif
- //IDS_Cleaning_Stop_Cleaning_Solution(NULL);
+ IDS_Cleaning_Stop_Cleaning_Solution(NULL);
SegmentNumOfBrushStops = Segment->n_brushstops;
BrushStopTime = Segment->length*1000/(double)SegmentNumOfBrushStops; //brushstop in meters //brushstop in millisecond
BrushStopTime = ((BrushStopTime*100)/dyeingspeed);//brushstop in seconds
@@ -1537,7 +1545,7 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId)
if (DispenserPreSegmentControlId != 0xFF)
{
Report("IDS presegment not yet ended!!",__FILE__,__LINE__,(int)InterSegmentStepsCount,RpWarning,(int)lInterSegmentLength,0);
- IDS_Cleaning_Stop_Cleaning_Solution (NULL);
+ //IDS_Cleaning_Stop_Cleaning_Solution (NULL);
RemoveControlCallback(DispenserPreSegmentControlId, IDSPreSegmentStateCallbackRunner );
DispenserPreSegmentControlId = 0xFF;
}
@@ -1580,6 +1588,7 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId)
{
int i;
DispenserDistanceToSpoolReady[deviceID] = true;
+ REPORT_MSG(deviceID,"IDS_Valve_DistanceToSpoolReady End called");
for (i=0;i<MAX_DYE_DISPENSERS;i++)
{
if (DispenserDistanceToSpoolReady[i] == false)
@@ -1587,7 +1596,6 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId)
return OK; //not all configured heaters are ready
}
}
- REPORT_MSG(deviceID,"IDS_Valve_DistanceToSpoolReady End called");
DistanceToSpoolReady(Module_IDS,ModuleDone);
return OK; // all configured heaters are ready
}
@@ -1596,22 +1604,23 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId)
{
int Dispenser_i;
- REPORT_MSG(100,"Dispenser DTS");
+ REPORT_MSG(NumOfActiveDispensers,"Dispenser DTS");
Valve_Set(VALVE_MIXCHIP_WASTECH, Mixer_Waste); //#bug 323
for (Dispenser_i = 0;Dispenser_i < MAX_DYE_DISPENSERS;Dispenser_i++)
{
DispenserDistanceToSpoolReady[Dispenser_i] = true;
- if (DispenserUsedInJob[Dispenser_i]==false)//unconfigured dispenser
- continue;
- DispenserDistanceToSpoolReady[Dispenser_i] = false;
-#ifdef SPECIAL_DISPENSERS
- IDS_Dispenser_Close_Valve_And_Stop_Motor(Dispenser_i,NULL);
-#else
- MotorStop(DispenserIdToMotorId[Dispenser_i],Hard_Hiz);
-#endif
- Control3WayValvesWithCallback ((Valves_t)Dispenser_i, MidTank_Dispenser, IDS_Valve_DistanceToSpoolValveReady); //direction: MidTank_Dispenser or Dispenser_Mixer
- CurrentDispenserSpeed[Dispenser_i] = 0;
- //IDS_Dispenser_Close_Valve_And_Stop_Motor(Dispenser_i,IDS_Valve_DistanceToSpoolValveReady);
+ if (DispenserUsedInJob[Dispenser_i]==true)//unconfigured dispenser
+ {
+ DispenserDistanceToSpoolReady[Dispenser_i] = false;
+ #ifdef SPECIAL_DISPENSERS
+ IDS_Dispenser_Close_Valve_And_Stop_Motor(Dispenser_i,NULL);
+ #else
+ MotorStop(DispenserIdToMotorId[Dispenser_i],Hard_Hiz);
+ #endif
+ Control3WayValvesWithCallback ((Valves_t)Dispenser_i, MidTank_Dispenser, IDS_Valve_DistanceToSpoolValveReady); //direction: MidTank_Dispenser or Dispenser_Mixer
+ CurrentDispenserSpeed[Dispenser_i] = 0;
+ //IDS_Dispenser_Close_Valve_And_Stop_Motor(Dispenser_i,IDS_Valve_DistanceToSpoolValveReady);
+ }
}
//cleaning
@@ -1622,13 +1631,13 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId)
lInterSegmentLength = (dryerbufferCentimeters*1000/dyeingspeed);
lInterSegmentLength-=(lInterSegmentLength%100); //round to a 100 multiplication
InterSegmentStepsCount = 0;
- DispenserPreSegmentControlId = AddControlCallback(NULL, IDSPreSegmentStateCallbackRunner, 100,TemplateDataReadCBFunction ,0, 0, 0 );
+ DispenserPreSegmentControlId = AddControlCallback("IDS DTS", IDSPreSegmentStateCallbackRunner, 100,TemplateDataReadCBFunction ,0, 0, 0 );
if (DispenserPreSegmentControlId == 0xFF)
{
Report("Add control callback failed",__FILE__,__LINE__,(int)100,RpWarning,(int)0,0);
return ERROR;
}
- Report("Add control callback ",__FILE__,__LINE__,(int)100,RpWarning,(int)IntersegmentLength,0);
+ Report("Add control callback ",__FILE__,__LINE__,(int)100,RpWarning,(int)lInterSegmentLength,0);
/*if (EnableCleaning == true)
{
InterSegmentStartSprayCleaner = 500;
diff --git a/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c b/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c
index a358bd724..a98cc173e 100644
--- a/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c
+++ b/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c
@@ -104,15 +104,13 @@ bool DetectIfCartridgeFinished(int int_MidTank_Pressure_1000)
WHS_sensor CartridgeInkCallBackFunction()
{
- uint32_t parameter = 6 ;
-
- WHS_sensor ret = WHS_no_event;
+ WHS_sensor ret = WHS_no_event;
if (IFS_info.IFS_Ink_precense_sensor != RdInkCartridgeSensor())
{
- REPORT_MSG(parameter," ------------ find : IFS_Ink_presence_sensor event ----------------- ");
WHS_info.event = IFS_INK_presence_sensor;
IFS_info.IFS_Ink_precense_sensor = !IFS_info.IFS_Ink_precense_sensor;
+ ReportWithPackageFilter(WasteFilter,"------------ find : IFS_Ink_presence_sensor event -----------------", __FILE__,__LINE__, IFS_info.IFS_Ink_precense_sensor, RpMessage, 0, 0);
ret = IFS_INK_presence_sensor;
}
return ret;
@@ -173,11 +171,10 @@ WHS_sensor CartridgeInkTimeOutCallBackFunction()
/*** first TimeOut ***/
if (IFS_info.Ink.time_out == CARTRIDGE_INK_TIMEOUT)
{
- ReportWithPackageFilter(WasteFilter,"------------ first IFS_info.Ink.time_out -----------------", __FILE__, __LINE__, (IFS_info.Ink.time_out * SECONDS_5), RpMessage, MidTank_Pressure, 0);
+ ReportWithPackageFilter(WasteFilter,"------------ first IFS_info.Ink.time_out, close valves -----------------", __FILE__, __LINE__, (IFS_info.Ink.time_out * SECONDS_5), RpMessage, (int_MidTank_Pressure_1000), 0);
//IFS_info.Ink.time_out = 0;
//return IFS_info.event = IFS_Timeout;
- REPORT_MSG(WHS_emptying," ------------ IFS_Timeout close valves----------------- ");
// try again :
// start timeout
// close and open the correct valves
@@ -189,13 +186,13 @@ WHS_sensor CartridgeInkTimeOutCallBackFunction()
if (IFS_info.Ink.time_out == (CARTRIDGE_INK_TIMEOUT + 1)) //need to open the valve for second chance
{
- ReportWithPackageFilter(WasteFilter,"------------ IFS_Timeout open valves for second timeout -----------------", __FILE__, __LINE__, (IFS_info.Ink.time_out * SECONDS_5), RpMessage, MidTank_Pressure, 0);
+ ReportWithPackageFilter(WasteFilter,"------------ IFS_Timeout open valves for second timeout -----------------", __FILE__, __LINE__, (IFS_info.Ink.time_out * SECONDS_5), RpMessage, (int_MidTank_Pressure_1000), 0);
MidTankValvesAction(Cartridge_MidTank_ON);
}
if (IFS_info.Ink.time_out >= (CARTRIDGE_INK_TIMEOUTx2 + 1))
{
- REPORT_MSG(WHS_full," ------------ IFS_Timeout_Second_Time ----------------- ");
+ ReportWithPackageFilter(WasteFilter,"------------ IFS_Timeout_Second_Time -----------------", __FILE__, __LINE__, (IFS_info.Ink.time_out * SECONDS_5), RpMessage, (int_MidTank_Pressure_1000), 0);
IFS_info.Ink.time_out = 0;
MidTankValvesAction(Cartridge_MidTank_OFF);
WHS_info.event = IFS_Timeout_Second;
@@ -295,7 +292,7 @@ uint32_t ReadCartridgeData(cartridge_name cart_name)
//-------------------------------------------------------------------------------------------
uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer));
size_t container_size = message_container__pack(&responseContainer, container_buffer);
- REPORT_MSG(WHS_full," ------------ IFS: send message_container__pack ----------------- ");
+ ReportWithPackageFilter(WasteFilter,"------------ IFS: send message_container__pack -----------------", __FILE__, __LINE__, CARTRIDGE_ACTION__Inserted, RpMessage, 0, 0);
my_free(responseContainer.data.data);
SendChars((char*)container_buffer, container_size);
@@ -320,19 +317,19 @@ bool CartridgeValidationResponseFunc(MessageContainer* requestContainer)
// 2. the index is out of rang
if (response == NULL)
{
- REPORT_MSG(WHS_filling," ------------ IFS_filling message from PPC is null!!! ----------------- "); // write to log error
+ ReportWithPackageFilter(WHS_filling,"------------ IFS_filling message from PPC is null!!! -----------------", __FILE__,__LINE__,0, RpMessage, 0, 0);
return ret;
}
if (response->index < NUM_OF_MIDTANKS)
{
IFS_info.Ink.cart_color = response->index; // midtank 1-8
- ReportWithPackageFilter(WasteFilter,"------------ IFS get message response->index is -----------------", __FILE__, __LINE__, response->index, RpMessage, 0, 0);
+ ReportWithPackageFilter(WHS_filling,"------------ IFS get message response->index is -----------------", __FILE__, __LINE__, response->index, RpMessage, 0, 0);
WHS_info.event = IFS_INK_authentication_pass;
}
else
{
- ReportWithPackageFilter(WasteFilter,"------------ IFS get message response->index is out of rang -----------------", __FILE__, __LINE__, response->index, RpMessage, 0, 0);
+ ReportWithPackageFilter(WHS_filling,"------------ IFS get message response->index is out of rang -----------------", __FILE__, __LINE__, response->index, RpMessage, 0, 0);
WHS_info.event = IFS_INK_authentication_fail;
}
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
index c31e21e23..ccd051c71 100644
--- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
@@ -10,13 +10,16 @@
#include "Drivers/USB_Communication/USBCDCD.h"
#include "StateMachines/Initialization/PowerOffSequence.h"
+#include "StateMachines/Initialization/PowerIdle.h"
#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"
@@ -27,6 +30,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>
@@ -39,6 +43,8 @@
#include <Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.h>
#include <Drivers/I2C_Communication/WHS_Card/IO_Extender_Ports_TCA9555/WHS_IO.h>
+#include "Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.h"
+
extern float NumberOfRotationPerPassage; // how many rotations per spool passage
//#include "graphics_adapter.h"
@@ -66,94 +72,164 @@ void Stub_ProgressRequest(MessageContainer* requestContainer)
uint8_t pin = 0;
uint8_t value= 0;
-#ifdef Use_WHS_Card
if(request->amount == 0x3E9) // set TCA9555 u3 or u4
{
- if (request->delay & 0x8000) // bit15 select the chip address
- {
- addr = I2CExp2_ADDRESS;
- }
- else
+ if (WHS_Type == WHS_TYPE_NEW)
{
- addr = I2CExp1_ADDRESS;
- }
+ if (request->delay & 0x8000) // bit15 select the chip address
+ {
+ addr = I2CExp2_ADDRESS;
+ }
+ else
+ {
+ addr = I2CExp1_ADDRESS;
+ }
- if (request->delay & 0x4000) // bit 14 select port 0 or 1
- {
- port = D_TCA9555_PORT_1;
- }
- else
- {
- port = D_TCA9555_PORT_0;
- }
+ if (request->delay & 0x4000) // bit 14 select port 0 or 1
+ {
+ port = D_TCA9555_PORT_1;
+ }
+ else
+ {
+ port = D_TCA9555_PORT_0;
+ }
- pin = ((request->delay & 0x0F00) >> 8); // 8..11
+ pin = ((request->delay & 0x0F00) >> 8); // 8..11
- if (request->delay & 0x0001)
+ if (request->delay & 0x0001)
+ {
+ value = 1;
+ }
+ else
+ {
+ value = 0;
+ }
+ response.progress = Write_WHS_9555_io_value( addr, port, pin, value);
+ response.has_progress = true;
+ }
+ }
+ else
+ if((request->amount == 0x3E8) && (request->delay <= 0x0fff))// set WHS Blower speed 0x00-0xfff
{
- value = 1;
+ if (WHS_Type == WHS_TYPE_NEW)
+ {
+ Trigger_SetWHSBlowerVoltage (request->delay);
+ response.progress = 0;
+ response.has_progress = false;
+ }
}
- else
+ else
+ if (request->amount == 0x3E7) // set WHS Blower speed by Q value
{
- value = 0;
+ if (WHS_Type == WHS_TYPE_NEW)
+ {
+ WHS_Set_SetPoint_Q_value((double) request->delay);
+ response.progress = 0;
+ response.has_progress = false;
+ }
}
- response.progress = Write_WHS_9555_io_value( addr, port, pin, value);
- response.has_progress = true;
- }
else
- if((request->amount == 0x3E8) && (request->delay <= 0x0fff))// set WHS Blower speed 0x00-0xfff
+ if (request->amount == 0x3E6) // get WHS Blower speed by Q value
{
- //Trigger_WHS_Set_Volt_Blower_Control(request->delay);
- Trigger_SetWHSBlowerVoltage (request->delay);
- response.progress = 0;
- response.has_progress = true;
+ 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;
- switch(request->delay )// set WHS Blower speed 0x00-0xfff
- {
- case 0:
- get_orf_1(&tempu16);
- break;
- case 1:
- get_orf_2(&tempu16);
- break;
- case 2:
- get_orf_3(&tempu16);
- break;
- case 3:
- get_vlev1(&tempu16);
- break;
- case 4:
- get_vlev2(&tempu16);
- break;
- case 5:
- get_gas_out(&tempu16);
- break;
- case 6:
- get_cur_fan(&tempu16);
- break;
- case 7:
- get_cur_vlv1(&tempu16);
- break;
- case 8:
- tempu16 = 0; //get_cur_vlv2(&tempu16);
- break;
- default :
- tempu16 = 0x500; //get_cur_vlv2(&tempu16);
- break;
-
+ if(request->amount == 0x3EA)
+ {
+ uint16_t tempu16 = 0;
+ double temp_double = 0.0;
+ if (WHS_Type == WHS_TYPE_NEW)
+ {
+ switch(request->delay )// get A2D
+ {
+ case 0:
+ get_orf_1(&tempu16);
+ break;
+ case 1:
+ get_orf_2(&tempu16);
+ break;
+ case 2:
+ get_orf_3(&tempu16);
+ break;
+ case 3:
+ get_vlev1(&tempu16);
+ break;
+ case 4:
+ get_vlev2(&tempu16);
+ break;
+ case 5:
+ get_gas_out(&tempu16);
+ break;
+ case 6:
+ get_cur_fan(&tempu16);
+ break;
+ case 7:
+ get_cur_vlv1(&tempu16);
+ break;
+ 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;
+ }
}
+ if ((request->delay)<10)
+ {
response.progress = (double)tempu16;
- response.has_progress = true;
}
+ else
+ {
+ response.progress = temp_double;
+ }
+ response.has_progress = true;
+ }
else //
- if(request->amount == 0x3EB)
+ if(request->amount == 0x3EB)
+ {
+ uint16_t tempu16 = 0;
+ if (WHS_Type == WHS_TYPE_NEW)
{
- uint16_t tempu16;
if (request->delay <= 0x03FF)
{
Trigger_WHS_Set_RDAC(request->delay); // 0 -> 0x03FF
@@ -163,11 +239,11 @@ void Stub_ProgressRequest(MessageContainer* requestContainer)
Trigger_WHS_set_Rheostat_to_CLEAN_AIR();
}
get_gas_out(&tempu16);
- response.progress = (double)tempu16;
- response.has_progress = true;
}
+ response.progress = (double)tempu16;
+ response.has_progress = true;
+ }
else
-#endif
if((request->amount == 0xDE) && (request->delay < 8) && (request->delay >= 0)) // read dispenser type + LS status
{
response.progress = ((Dispenser_struct[request->delay].Type) << 8) + Dispenser_struct[request->delay].Status;
@@ -182,6 +258,34 @@ void Stub_ProgressRequest(MessageContainer* requestContainer)
response.has_progress = true;
}
else
+ if(request->amount == 0xAD1) //Set_Check_Pressure_Bypass
+ {
+ LOG_ERROR((request->delay)?1:0,"Set_Check_Pressure_Bypass");
+ response.progress = Set_Check_Pressure_Bypass(request->delay);
+ response.has_progress = true;
+ }
+ else
+ if(request->amount == 0xAD2) //Set_Thread_Rockers_Bypass
+ {
+ LOG_ERROR((request->delay)?1:0,"Set_Thread_Rockers_Bypass");
+ response.progress = Set_Thread_Rockers_Bypass(request->delay);
+ response.has_progress = true;
+ }
+ else
+ if(request->amount == 0xAD3) //Set_Auto_Shutdown_Bypass
+ {
+ LOG_ERROR((request->delay)?1:0,"Set_Auto_Shutdown_Bypass");
+ response.progress = Set_Auto_Shutdown_Bypass(request->delay);
+ response.has_progress = true;
+ }
+ else
+ if(request->amount == 0xAD4) //Set_Auto_Idle_Bypass
+ {
+ LOG_ERROR((request->delay)?1:0,"Set_Auto_Idle_Bypass");
+ response.progress = Set_Auto_Idle_Bypass(request->delay);
+ response.has_progress = true;
+ }
+ else
if((request->amount == 0x01) && ((request->delay &0x010000) == 0x010000)) //change mode powerset01
{
response.progress = Power_Step_01_Mode(((request->delay &0x00FF00)>>8), request->delay &0x0000FF);
@@ -209,33 +313,143 @@ void Stub_ProgressRequest(MessageContainer* requestContainer)
}
else
- if(request->amount == 0x0EAD) //Head Card I/O
- {
- uint8_t Write_Buf[2] = {0,0};
- uint8_t Script_Slave_Add = request -> delay >> 16;
- Write_Buf[0] = request -> delay >> 8;
- Write_Buf[1] = request -> delay & 0x0000FF;
+ if(request->amount == 0x0EAD) //Head Card I/O
+ {
+ uint8_t Read_Buf[1] = {0};
+ uint8_t Write_Buf[2] = {0,0};
+ uint8_t Script_Slave_Add = request -> delay >> 16;//Slave address 0x40 / 0x42 / 0x44 / 0x46
+ Write_Buf[0] = (request -> delay & 0x00FF00) >> 8;//read/write low/high
+ /*
+ ------------------
+ | Byte | WR | RD |
+ ------------------
+ | Low | 02 | 00 |
+ | High | 03 | 01 |
+ ------------------
+ */
+ Write_Buf[1] = request -> delay & 0x0000FF;//data to write
- Select_Main_Head_Mux_Channel();
- I2C_Write(I2C_ID_HEAD_CARD, Script_Slave_Add, Write_Buf, 2);
+ response.has_progress = false;
- delayms(1);
+ Select_Main_Head_Mux_Channel();
- uint8_t Read_Buf[2] = {0,0};
- I2C_Read(I2C_ID_HEAD_CARD, Script_Slave_Add + 1, Read_Buf, 2);
- response.progress = Read_Buf[1] << 8 | Read_Buf[0];
- response.has_progress = true;
+ if(Write_Buf[0] == 0)//Read
+ {
+ Head_Read_IO_Reg(Script_Slave_Add, LOW);
- }
- else
+ delayms(1);
+ if(Script_Slave_Add == 0x40)
+ {
+ Read_Buf[0] = Head_I2C_EXP1_0x40.uchar[0];
+ response.progress = Read_Buf[0];
+ response.has_progress = true;
+ }
+ else
+ if(Script_Slave_Add == 0x42)
+ {
+ Read_Buf[0] = Head_I2C_EXP2_0x42.uchar[0];
+ response.progress = Read_Buf[0];
+ response.has_progress = true;
+ }
+ else
+ if(Script_Slave_Add == 0x44)
+ {
+ Read_Buf[0] = Head_I2C_EXP3_0x44.uchar[0];
+ response.progress = Read_Buf[0];
+ response.has_progress = true;
+ }
+ else
+ if(Script_Slave_Add == 0x46)
+ {
+ Read_Buf[0] = Head_I2C_EXP4_0x46.uchar[0];
+ response.progress = Read_Buf[0];
+ response.has_progress = true;
+ }
+ }
+ else
+
+ if(Write_Buf[0] == 1)//Read
+ {
+ Head_Read_IO_Reg(Script_Slave_Add, HIGH);
+
+ delayms(1);
+ if(Script_Slave_Add == 0x40)
+ {
+ Read_Buf[0] = Head_I2C_EXP1_0x40.uchar[1];
+ response.progress = Read_Buf[0];
+ response.has_progress = true;
+ }
+ else
+ if(Script_Slave_Add == 0x42)
+ {
+ Read_Buf[0] = Head_I2C_EXP2_0x42.uchar[1];
+ response.progress = Read_Buf[0];
+ response.has_progress = true;
+ }
+ else
+ if(Script_Slave_Add == 0x44)
+ {
+ Read_Buf[0] = Head_I2C_EXP3_0x44.uchar[1];
+ response.progress = Read_Buf[0];
+ response.has_progress = true;
+ }
+ else
+ if(Script_Slave_Add == 0x46)
+ {
+ Read_Buf[0] = Head_I2C_EXP4_0x46.uchar[1];
+ response.progress = Read_Buf[0];
+ response.has_progress = true;
+ }
+ }
+ else
+ if(Write_Buf[0] == 2)//write
+ {
+ if(Script_Slave_Add == 0x40)
+ {
+ Head_I2C_EXP1_0x40.uchar[0] = Write_Buf[1];
+ }
+ else
+ if(Script_Slave_Add == 0x42)
+ {
+ Head_I2C_EXP2_0x42.uchar[0] = Write_Buf[1];
+ }
+ else
+ if(Script_Slave_Add == 0x46)
+ {
+ Head_I2C_EXP4_0x46.uchar[0] = (Write_Buf[1] & 0x80);
+ }
+
+ Head_Write_IO_Reg(Script_Slave_Add, LOW);
+ }
+ if(Write_Buf[0] == 3)//write
+ {
+ if(Script_Slave_Add == 0x40)
+ {
+ Head_I2C_EXP1_0x40.uchar[1] = Write_Buf[1];
+ }
+ else
+ if(Script_Slave_Add == 0x42)
+ {
+ Head_I2C_EXP2_0x42.uchar[1] = Write_Buf[1];
+ }
+ else
+ if(Script_Slave_Add == 0x46)
+ {
+ Head_I2C_EXP3_0x44.uchar[1] = (Write_Buf[1] & 0x0C);
+ }
+ Head_Write_IO_Reg(Script_Slave_Add, HIGH);
+ }
+ }
+ else
if(request->amount == 0xFEAD) //functions Head Card I/O
{
Select_Main_Head_Mux_Channel();
if((request -> delay & 0xFFF000) == 0xCAF000)//Actuator
{
- HeadCard_Actuators_Control((ACTUATORS)((request -> delay & 0x100)>>8), (bool)((request -> delay & 0x10)>>4), (bool)((request -> delay & 0x01)));//Actuators: ID, power, Direction
- response.progress = HeadCard_Actuators_Status((ACTUATORS)(request -> delay & 0x100)>>8);
+ //HeadCard_Actuators_Control((ACTUATORS)(((request -> delay) & 0x100)>>8), /*(bool)((request -> delay & 0x10)>>4), */(bool)((request -> delay & 0x01)));//Actuators: ID, power, Direction
+ Trigger_Head_Actuators_Control((ACTUATORS)(((request -> delay) & 0x100)>>8), (bool)((request -> delay & 0x10)>>4), (bool)((request -> delay & 0x01)));//Actuators: ID, power, Direction
+ //response.progress = HeadCard_Actuators_Status((ACTUATORS)((request -> delay) & 0x100)>>8);
response.has_progress = true;
}
else
@@ -259,7 +473,7 @@ void Stub_ProgressRequest(MessageContainer* requestContainer)
//Test_Head_fan_Click();
Head_Fan_PWM_Control(0, request->delay & 0xFF);
-
+ Task_sleep(2000);
//response.progress = Fan_Click_Info.Product_ID;
response.progress = Head_Fan_Tach[0];
@@ -270,23 +484,25 @@ void Stub_ProgressRequest(MessageContainer* requestContainer)
if((request->amount == 0xFAC1) /*&& (request->delay == 0xFAC)*/) //Head Fan control
{
Head_Fan_PWM_Control(1, request->delay & 0xFF);
-
+ Task_sleep(2000);
response.progress = Head_Fan_Tach[1];
response.has_progress = true;
}
else
-#ifdef Use_WHS_Card
if ((request->amount & 0x0000FFF0) == 0xFAC0) //WHS Fan control
{
uint16_t fan_tacho = 0;
- Trigger_SetWHSFanSpeed(((request->amount & 0x0000000F)-1) , request->delay & 0x000000FF);
-// getWHSFanTacho(((request->amount & 0x0000000F)-1), &fan_tacho);
+ if (WHS_Type == WHS_TYPE_NEW)
+ {
+ Trigger_SetWHSFanSpeed(((request->amount & 0x0000000F)-1) , request->delay & 0x000000FF);
+ Task_sleep(2000);
+ fan_tacho = WHS_Get_fan_tach( (request->amount & 0x0000000F)-1);
+ }
response.progress = fan_tacho;
response.has_progress = true;
}
else
-#endif
if((request->amount == 0x0A) && ((request->delay >= 0) && (request->delay < 8))) //read the midtank calibration
{
response.progress = Initial_Offset_A[request->delay];
@@ -350,14 +566,14 @@ void Stub_ProgressRequest(MessageContainer* requestContainer)
else
if((request->amount == 0x0CE) && (request->delay == 0x0CE)) //Get Gas Sensor
{
- LOG_ERROR(request->delay,"FlashInitAndLoad");
- FlashInitAndLoad();
+ LOG_ERROR(request->delay,"FlashInit");
+ FlashInit();
response.progress = (double)OK;
response.has_progress = true;
}
else
- if(request->amount == 0x0CC) //Cùøàøïâò÷ Vùêïâùàïíî ø÷ãôíîã÷
+ if(request->amount == 0x0CC) //Cartridge Validation Response Demo
{
LOG_ERROR(request->delay,"ResponseDemo");
ResponseDemo(request->delay);
@@ -401,7 +617,7 @@ void Stub_ProgressRequest(MessageContainer* requestContainer)
response.has_progress = true;
}
else
- if(request->amount == 0xB2) //fast refresh for pressure
+ if(request->amount == 0xB2) //Set loading arm cycles
{
LOG_ERROR(request->delay,"Set loading arm cycles");
@@ -413,21 +629,50 @@ 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
+ if(request->amount == 0xB4) //IDS_Dispenser_Content_Init
+ {
+ 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->amount,"IDS_Dispenser_Content_Init");
- IDS_Dispenser_Content_Init();
- //keepalivetest = true;
- response.progress = keepalivetest;
- response.has_progress = true;
+ 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 == 0xC3) //suspend I2C task
+ {
+ if (request->delay == 0)
+ {
+ LOG_ERROR(request->delay,"Suspend I2C");
+ PowerOffHeatersOff();
+ Task_sleep(1000);
+ Task_setPri (I2C_Task_Handle,-1);
+ }
+ else
+ {
+ LOG_ERROR(request->delay,"Resume");
+ Task_setPri (I2C_Task_Handle,8);
}
+ 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/Stubs_Handler/StubRealTimeUsage.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/StubRealTimeUsage.c
index 2342ef962..765e183cb 100644
--- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/StubRealTimeUsage.c
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/StubRealTimeUsage.c
@@ -46,8 +46,8 @@ void Stub_RealTimeUsageRequest(MessageContainer* requestContainer)
StubRealTimeUsageResponse response = STUB_REAL_TIME_USAGE_RESPONSE__INIT;
- response.n_percentile = 100;
- response.percentile = malloc(sizeof(response.percentile)*response.n_percentile);
+ response.n_percentile = 101;
+ response.percentile = my_malloc(sizeof(response.percentile)*response.n_percentile);
if (response.percentile)
IdleTaskGetLoadTable(response.percentile);
else
@@ -55,7 +55,7 @@ void Stub_RealTimeUsageRequest(MessageContainer* requestContainer)
//free(request);
//-------------------------------------------------------------------------------------------
responseContainer = createContainer(MESSAGE_TYPE__StubRealTimeUsageResponse, requestContainer->token, true, &response, &stub_real_time_usage_response__pack, &stub_real_time_usage_response__get_packed_size);
- uint8_t* container_buffer = malloc(message_container__get_packed_size(&responseContainer));
+ uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer));
size_t container_size = message_container__pack(&responseContainer, container_buffer);
free(responseContainer.data.data);
SendChars((char*)container_buffer, container_size);
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Cartridge.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Cartridge.c
index 6bd4e6f48..132d46fb7 100644
--- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Cartridge.c
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Cartridge.c
@@ -11,45 +11,42 @@
#include "driverlib/gpio.h"
#include "Drivers/USB_Communication/USBCDCD.h"
+#include "Drivers/I2C_Communication/RFID_NFC/logi-tag/LT_RFID.h"
+#include "Drivers/I2C_Communication/RFID_NFC/NFC.h"
#include "Stub_Status.h"
void Stub_CartridgeReadRequest(MessageContainer* requestContainer)
{
- uint32_t status = NOT_SUPPORTED;
+ uint32_t status = PASSED;
MessageContainer responseContainer;
StubCartridgeReadRequest* request = stub_cartridge_read_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data);
- //request->cartridgeid
+ Init_RFID_Reader();
+ uint8_t readerID = request->cartridgeid;
+ Connect_to_RFID_Reder(readerID);//2
- /*
- int i;
- for( i=0;i<8;i++)
- {
- Read_MidTank_Pressure_Sensor(i);
- SysCtlDelay(1);
- }
+ StubCartridgeReadResponse response = STUB_CARTRIDGE_READ_RESPONSE__INIT;
- */
+ response.cartridgeid = request->cartridgeid;
+ response.has_cartridgeid = true;
- StubCartridgeReadResponse response = STUB_CARTRIDGE_READ_RESPONSE__INIT;
-
- response.cartridgeid = request->cartridgeid;
- response.has_cartridgeid = true;
-
- //response.cartridgecolor
- response.has_cartridgecolor = false;
+ response.cartridgecolor = (uid[6] << 24) | (uid[5] << 16) | (uid[4] << 8) | uid[3];
+ //response.cartridgecolor
+ response.has_cartridgecolor = true;
+
+ response.cartridgeversion = (uid[2] << 16) | (uid[1] << 8) | uid[0];
+ //response.cartridgeversion
+ response.has_cartridgeversion = true;
+
+ response.cartridgedata = RFID_Status;
+ //response.cartridgedata
+ response.has_cartridgedata = false;
+
+ //response.cartridgeused
+ response.has_cartridgeused = false;
- //response.cartridgeversion
- response.has_cartridgeversion = false;
-
- //response.cartridgedata
- response.has_cartridgedata = false;
-
- //response.cartridgeused
- response.has_cartridgeused = false;
-
status_response(status,&response.status, &response.statusword ,&response.has_statusword);
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c
index bac3ba1d0..128564586 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c
@@ -31,7 +31,7 @@
#include "drivers/SSI_Comm/Dancer/Dancer.h"
#include "drivers/motors/motor.h"
#include "drivers/Flash_ram/MCU_E2Prom.h"
-
+#include "Drivers/I2C_Communication/I2C.h"
#include "PMR/Stubs/StubHeatingTestRequest.pb-c.h"
#include "PMR/Stubs/StubHeatingTestResponse.pb-c.h"
#include "PMR/Stubs/StubHeatingTestPollRequest.pb-c.h"
@@ -180,6 +180,14 @@
ProcessParametersClear.headzone4temp = 0;
ProcessParametersClear.headzone5temp = 0;
ProcessParametersClear.headzone6temp = 0;
+ ProcessParametersClear.headzone7temp = 0;
+ ProcessParametersClear.headzone8temp = 0;
+ ProcessParametersClear.headzone9temp = 0;
+ ProcessParametersClear.headzone10temp = 0;
+ ProcessParametersClear.headzone11temp = 0;
+ ProcessParametersClear.headzone12temp = 0;
+ ProcessParametersClear.stspzone1temp = 0;
+ ProcessParametersClear.stspzone2temp = 0;
ProcessParametersClear.dyeingspeed = 40;
ProcessParametersClear.dryerbufferlength = ProcessParametersKeep.dryerbufferlength;
if (HandleProcessParameters(&ProcessParametersClear,false)!= OK)
@@ -191,6 +199,7 @@
}
else
{
+ //WHS_Start_Blower_Control_Closed_Loop(2.5);
Turn_the_Blower_On();//Turn on with the Default_Voltage
if (BlowerCfg.heatingvoltage)
Control_Voltage_To_Blower(BlowerCfg.heatingvoltage);
@@ -401,9 +410,7 @@
CallbackCounter++;
//MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID,1-MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID].directionthreadwize, 200, Motor_Id_to_LS_IdUp[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID], Thread_Load_HomingCallback,10000);
MotorGotoWithCallback(HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID, 0, Motor_Id_to_LS_IdUp[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID], Thread_Load_HomingCallback,10000);
-#ifdef Use_Head_Card
- HeadCard_Actuators_Control(ACTOT, LOW,true);
-#endif
+ Trigger_Head_Actuators_Control(ACTOT, LOW,true);
return OK;
}
uint32_t Thread_Load_Lift_Dancers(void)
@@ -511,9 +518,7 @@
CallbackCounter++;
// MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID].directionthreadwize, 200, Motor_Id_to_LS_IdDown[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID], Thread_Load_HomingCallback,10000);
MotorGotoWithCallback(HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID, 2, Motor_Id_to_LS_IdDown[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID], Thread_Load_HomingCallback,10000);
-#ifdef Use_Head_Card
- HeadCard_Actuators_Control(ACTOT, LOW,false);
-#endif
+ Trigger_Head_Actuators_Control(ACTOT, LOW,false);
return OK;
}
uint32_t Thread_Load_Resume_Heating(void)
@@ -538,7 +543,7 @@
{
REPORT_MSG(LoadStages, "Thread Load State Machine step");
CallbackCounter++;
- MotorMovetoDancerPosition (HARDWARE_MOTOR_TYPE__MOTO_RDRIVING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RDRIVING].directionthreadwize, 100, FEEDER_DANCER ,true, Thread_Load_Jog_Feeder_To_Middle_Point_Callback,4000);
+ MotorMovetoDancerPosition (HARDWARE_MOTOR_TYPE__MOTO_RDRIVING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RDRIVING].directionthreadwize, 400, FEEDER_DANCER ,true, Thread_Load_Jog_Feeder_To_Middle_Point_Callback,4000);
return OK;
}
@@ -1360,6 +1365,7 @@ uint32_t ThreadLoadingReport(void)
//-------------------------------------------------------------------------------------------
responseContainer = createContainer(MESSAGE_TYPE__StartThreadLoadingResponse, ThreadLoadingToken, last, &response, &start_thread_loading_response__pack, &start_thread_loading_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);
@@ -1416,6 +1422,7 @@ uint32_t StopThreadLoadingFunc(MessageContainer* requestContainer)
MessageContainer responseContainer;
MessageState = 2;
Thread_Load_End();
+ MCU_E2PromProgram(EEPROM_STORAGE_DRYER_CYCLES,numberOfCycles);
Report("StopThreadLoadingFunc",__FILE__,__LINE__,0xFF,RpWarning,(int)LoadStages,0);
responseContainer = createContainer(MESSAGE_TYPE__StopThreadLoadingResponse, requestContainer->token, true, &Cresponse, &stop_thread_loading_response__pack, &stop_thread_loading_response__get_packed_size);
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h
index 420b782b5..114edc0cd 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h
@@ -38,6 +38,8 @@ uint32_t ThreadDistanceToSpoolState(void);
uint32_t ThreadEndState();
uint32_t ThreadInitialTestStub();
+bool Set_Thread_Rockers_Bypass (int value);
+
uint32_t StoreDancerConfigMessage(void);
uint32_t LoadDancerConfigMessage(void);
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
index 2484b9444..1dd101f82 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
@@ -28,6 +28,7 @@
#include "drivers/Heater/Heater.h"
#include "drivers/Motors/Motor.h"
#include "drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h"
+#include "drivers/FPGA/FPGA_SPI_Comm.h"
#include "modules/heaters/heaters.h"
#include "modules/General/process.h"
#include "modules/ids/ids_ex.h"
@@ -117,8 +118,8 @@ uint32_t Control_Delta_Position_Pass(uint32_t Current_Read,uint32_t Previous_Rea
if (Current_Read < Previous_Read)
{
- ReportWithPackageFilter(ThreadFilter,"Length rollover",__FILE__,__LINE__,(int)Current_Read,RpWarning,(int)Previous_Read,0);
Time_Pass = (MAX_COUNTER - Previous_Read) + Current_Read + 1;
+ ReportWithPackageFilter(ThreadFilter,"Length rollover",__FILE__,Time_Pass,(int)Current_Read,RpWarning,(int)Previous_Read,0);
}
else
Time_Pass = Current_Read - Previous_Read;
@@ -178,7 +179,10 @@ uint32_t ThreadLengthCBFunction(uint32_t IfIndex, uint32_t ReadValue)
initialpos = 0;
}
prevprev = PreviousPosition;
- positionDiff = Control_Delta_Position_Pass(CurrentPosition,PreviousPosition);
+ if (Extended_Motor_Param[ThreadMotorIdToMotorId[index]] == true) //powerstep driver reverses the direction
+ positionDiff = Control_Delta_Position_Pass(PoolerPreviousPosition,PoolerCurrentPosition);
+ else
+ positionDiff = Control_Delta_Position_Pass(PoolerCurrentPosition,PoolerPreviousPosition);
//positionDiff = positionDiff / MotorsCfg[ThreadMotorIdToMotorId[index]].microstep;
PreviousPosition = CurrentPosition;
@@ -268,7 +272,10 @@ uint32_t PoolerThreadLengthCBFunction(uint32_t IfIndex, uint32_t ReadValue)
Poolerinitialpos = 0;
}
prevprev = PoolerPreviousPosition;
- positionDiff = Control_Delta_Position_Pass(PoolerCurrentPosition,PoolerPreviousPosition);
+ if (Extended_Motor_Param[ThreadMotorIdToMotorId[index]] == true) //powerstep driver reverses the direction
+ positionDiff = Control_Delta_Position_Pass(PoolerPreviousPosition,PoolerCurrentPosition);
+ else
+ positionDiff = Control_Delta_Position_Pass(PoolerCurrentPosition,PoolerPreviousPosition);
//positionDiff = positionDiff / MotorsCfg[ThreadMotorIdToMotorId[index]].microstep;
PoolerPreviousPosition = PoolerCurrentPosition;
@@ -300,12 +307,7 @@ uint32_t PoolerThreadLengthCBFunction(uint32_t IfIndex, uint32_t ReadValue)
{
if (PrepareState == true)
{
-//#ifdef Use_Head_Card
-// strcpy(Lenstr,"Heating up");
-//#else
- //later - add temperatures
- TemperatureListString(Lenstr);
-//#endif
+ TemperatureListString(Lenstr);
SendJobProgress(0.0,0,false, Lenstr);
}
else
@@ -505,6 +507,10 @@ uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue)
{
//pooler dancer is right sided: data is opposite
TranslatedReadValue = (-1*TranslatedReadValue);
+ }
+ if (index == POOLER_MOTOR)
+ {
+ //pooler dancer is right sided: data is opposite
JobCounter++;
}
//TranslatedReadValue = 0;//test
@@ -911,7 +917,7 @@ uint32_t ThreadInitialTestStub(HardwareMotor * request)
void SetOriginMotorSpeed(float process_speed)
{
- int i,Motor_i, HW_Motor_Id;
+ int Motor_i, HW_Motor_Id;
for (Motor_i = 0; Motor_i <= WINDER_MOTOR; Motor_i++)
{
HW_Motor_Id = ThreadMotorIdToMotorId[Motor_i];
@@ -959,6 +965,15 @@ uint32_t ThreadDryerRampUp(uint32_t IfIndex, uint32_t BusyFlag)
return OK;
}
+bool Thread_Rockers_Bypass = false;
+bool Set_Thread_Rockers_Bypass (int value)
+{
+ if (value == 0)
+ Thread_Rockers_Bypass = false;
+ else
+ Thread_Rockers_Bypass = true;
+ return Thread_Rockers_Bypass;
+}
//********************************************************************************************************************
uint32_t ThreadPreSegmentState(void *SegmentDetails, uint32_t SegmentId)
@@ -996,17 +1011,19 @@ uint32_t ThreadPreSegmentState(void *SegmentDetails, uint32_t SegmentId)
#ifdef HUNDRED_MICROSECONDS_DANCER_READ
MillisecLogInit();
#endif
-
- if (MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].maxfrequency > 0)
- {
- MotorSetDirection((TimerMotors_t)HARDWARE_MOTOR_TYPE__MOTO_RLOADING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].directionthreadwize);
- MotorSetSpeed(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, 1);
- }
- if (MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LLOADING].maxfrequency > 0)
- {
- MotorSetDirection((TimerMotors_t)HARDWARE_MOTOR_TYPE__MOTO_LLOADING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LLOADING].directionthreadwize);
- MotorSetSpeed(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, 1);
- }
+ if (Thread_Rockers_Bypass == false)
+ {
+ if (MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].maxfrequency > 0)
+ {
+ MotorSetDirection((TimerMotors_t)HARDWARE_MOTOR_TYPE__MOTO_RLOADING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].directionthreadwize);
+ MotorSetSpeed(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, 1);
+ }
+ if (MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LLOADING].maxfrequency > 0)
+ {
+ MotorSetDirection((TimerMotors_t)HARDWARE_MOTOR_TYPE__MOTO_LLOADING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LLOADING].directionthreadwize);
+ MotorSetSpeed(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, 1);
+ }
+ }
if (EnableLubrication == true)
{
IDS_StartLubrication();
@@ -1109,7 +1126,7 @@ char Endstr[150];
{
int Motor_i;
ThreadControlActive = false;
- uint32_t status = OK,tempCtl;
+ uint32_t status = OK;
usnprintf(Endstr, 100, "Total _processed length: Feeder: %d Pooler %d",(int)TotalProcessedLength,(int)PoolerTotalProcessedLength);
SendJobProgress(0.0,0,false, Endstr);
ReportWithPackageFilter(ThreadFilter,Endstr,__FILE__,__LINE__,(int)TotalProcessedLength,RpWarning,(int)PoolerTotalProcessedLength,0);
@@ -1123,7 +1140,7 @@ char Endstr[150];
if (SpeedControlId != 0xFF)
{
if(RemoveControlCallback(SpeedControlId,ThreadLengthCBFunction)!=OK)
- ReportWithPackageFilter(ThreadFilter,"Remove Control Failed.",__FILE__,__LINE__,(int)Motor_i,RpError,(int)SpeedControlId,0);
+ ReportWithPackageFilter(ThreadFilter,"Remove Control Failed.",__FILE__,__LINE__,(int)ThreadLengthCBFunction,RpError,(int)SpeedControlId,0);
SpeedControlId = 0xFF;
}
if (PoolerSpeedControlId != 0xFF)
@@ -1135,7 +1152,6 @@ char Endstr[150];
for ( Motor_i = 0;Motor_i <= WINDER_MOTOR;Motor_i++)
{
- tempCtl = ControlIdtoMotorId[Motor_i];
if (ControlIdtoMotorId[Motor_i] != 0xFF)
{
status = RemoveControlCallback(ControlIdtoMotorId[Motor_i],ThreadControlCBFunction);
@@ -1144,7 +1160,6 @@ char Endstr[150];
else
ReportWithPackageFilter(ThreadFilter,"Remove Control Failed.",__FILE__,__LINE__,(int)Motor_i,RpError,(int)ControlIdtoMotorId[Motor_i],0);
}
- //ReportWithPackageFilter(ThreadFilter,"Remove Control",__FILE__,Motor_i,(int)status,RpError,(int)tempCtl,0);
}
Task_sleep(100);
diff --git a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_init.c b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_init.c
index 3c67dd8e1..c8101c031 100644
--- a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_init.c
+++ b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_init.c
@@ -327,25 +327,31 @@ bool SetWastePump( bool power)
// if (( power == OPEN ) && (WHS_info.WHS_sensors.cartridge_cover == CLOSE))
if ( power == OPEN )
{
-#ifdef Use_WHS_Card
- Trigger_SetWHSPump(OPEN);
-#else
- Pumps_Control(WHS_WTANKPUMP2, OPEN); //waste_pump_power_on();
-#endif
- REPORT_MSG(WHS_empty," ------------ WHS WHS_empty start PUMP ----------------- ");
+ if (WHS_Type == WHS_TYPE_UNKNOWN)
+ {
+ Pumps_Control(WHS_WTANKPUMP2, OPEN); //waste_pump_power_on();
+ }
+ else //new WHS
+ {
+ Trigger_SetWHSPump(OPEN);
+ }
WHS_info.WHS_pump.status = OPEN;
+ ReportWithPackageFilter(WasteFilter,"------------ WHS WHS_empty start PUMP -----------------", __FILE__, __LINE__, WHS_info.WHS_pump.status, RpMessage, 0, 0);
WHS_info.WHS_pump.time = STARTCOUNT;
ret = OPEN;
}
else
{
-#ifdef Use_WHS_Card
- Trigger_SetWHSPump(CLOSE);
-#else
- Pumps_Control(WHS_WTANKPUMP2, CLOSE); //waste_pump_power_on();
-#endif
- REPORT_MSG(WHS_empty," ------------ WHS WHS_empty stop PUMP ----------------- ");
- WHS_info.WHS_pump.status = CLOSE;
+ if (WHS_Type == WHS_TYPE_UNKNOWN)
+ {
+ Pumps_Control(WHS_WTANKPUMP2, CLOSE); //waste_pump_power_on();
+ }
+ else //new WHS
+ {
+ Trigger_SetWHSPump(CLOSE);
+ }
+ WHS_info.WHS_pump.status = CLOSE;
+ ReportWithPackageFilter(WasteFilter,"------------ WHS WHS_empty stop PUMP -----------------", __FILE__, __LINE__, WHS_info.WHS_pump.status, RpMessage, 0, 0);
WHS_info.WHS_pump.time = STOPCOUNT;
ret = CLOSE;
}
@@ -367,19 +373,20 @@ bool SetValveDirection()
if (WHS_info.active_cartridge == waste_cartridge1)
{
WHS_info.WHS_valve = VALVE_DIR_WASTE_CARTRIDGE1;
- }
+ ReportWithPackageFilter(WasteFilter,"------------WHS_info.WHS_valve VALVE_DIR_WASTE_CARTRIDGE1 -----------------", __FILE__, __LINE__, WHS_info.WHS_valve, RpMessage, 0 ,0);
+}
else
{
WHS_info.WHS_valve = VALVE_DIR_WASTE_CARTRIDGE2;
+ ReportWithPackageFilter(WasteFilter,"------------WHS_info.WHS_valve VALVE_DIR_WASTE_CARTRIDGE2 -----------------", __FILE__, __LINE__, WHS_info.WHS_valve, RpMessage, 0 ,0);
}
- ReportWithPackageFilter(WasteFilter,"------------WHS_info.WHS_valve -----------------", __FILE__,__LINE__,WHS_info.WHS_valve, RpMessage, 0 ,0);
-#ifdef Use_WHS_Card
- Trigger_SetWHSValveWatseCartridge(WHS_info.WHS_valve);
-#else
+ if (WHS_Type == WHS_TYPE_UNKNOWN)
Valve_Set(VALVE_WASTE_TANK, WHS_info.WHS_valve);
-#endif
+ else //new WHS
+ Trigger_SetWHSValveWatseCartridge(WHS_info.WHS_valve);
+
//ret = OK;
return ret;
@@ -398,7 +405,6 @@ U8 CartridgeWasteFilling(bool status)
//Pannel_Leds(PANEL_BUTTON_OR_CRAT_ID Pannel_Led_Id, OPERATION_MODE LED_Mode); //set cartridge led color slow blink
SetWastePump(OPEN);
//WHS_info.WHS_pump.time = 0;
- REPORT_MSG(WHS_empty," ------------ WHS WHS_empty start PUMP ----------------- ");
AlarmHandlingSetAlarm( EVENT_TYPE__NO_WASTE_CARTRIDGE_AVAILABLE, false);
ret=OK;
}
@@ -406,11 +412,11 @@ U8 CartridgeWasteFilling(bool status)
{
SetWastePump(CLOSE);
WHS_info.WHS_valve = VALVE_DIR_WASTE_CARTRIDGE1;
-#ifdef Use_WHS_Card
- Trigger_SetWHSValveWatseCartridge(WHS_info.WHS_valve);
-#else
- Valve_Set(VALVE_WASTE_TANK, WHS_info.WHS_valve);
-#endif
+ if (WHS_Type == WHS_TYPE_UNKNOWN)
+ Valve_Set(VALVE_WASTE_TANK, WHS_info.WHS_valve);
+ else //new WHS
+ Trigger_SetWHSValveWatseCartridge(WHS_info.WHS_valve);
+
AlarmHandlingSetAlarm( EVENT_TYPE__ALL_WASTE_CARTRIDGES_FULL, true);
switch (WHS_info.active_cartridge)
@@ -418,16 +424,16 @@ U8 CartridgeWasteFilling(bool status)
case waste_cartridge1:
Pannel_Leds( CART_2, MODE_OFF); //set led color
cart2.color = colorOFF;
- REPORT_MSG(WHS_empty," ------------ WHS waste_cartridge1 is used please replace it ----------------- ");
+ ReportWithPackageFilter(WasteFilter,"------------ WHS waste_cartridge1 is used please replace it -----------------", __FILE__, __LINE__, 0, RpMessage, 0, 0);
break;
case waste_cartridge2:
Pannel_Leds( CART_3, MODE_OFF); //set led color
cart3.color = colorOFF;
- REPORT_MSG(WHS_empty," ------------ WHS waste_cartridge2 is used please replace it ----------------- ");
+ ReportWithPackageFilter(WasteFilter,"------------ WHS waste_cartridge2 is used please replace it -----------------", __FILE__, __LINE__, 0, RpMessage, 0, 0);
break;
case no_waste_cartridge:
- REPORT_MSG(WHS_empty," ------------ !!!!!WHS No waste cartridge !!!!! ----------------- ");
- REPORT_MSG(WHS_empty," ------------ !!!! WHS insert cartridge!!!! ----------------- ");
+ ReportWithPackageFilter(WasteFilter,"------------ !!!!!WHS No waste cartridge !!!!! -----------------", __FILE__, __LINE__, 0, RpMessage, 0, 0);
+ ReportWithPackageFilter(WasteFilter,"------------ !!!! WHS insert cartridge!!!! -----------------", __FILE__, __LINE__, 0, RpMessage, 0, 0);
ret = ERROR;
break;
default:
@@ -481,40 +487,20 @@ WHS_sttMachin UpdateStateMachine()
if ( WHS_info.WHS_sensors.waste_tank_full_sensor == SENSORnotFULL)
{
WHS_info.sttMachine = WHS_empty ;
- REPORT_MSG(WHS_empty," ------------ WHS WHS_empty ----------------- ");
+ ReportWithPackageFilter(WasteFilter,"------------ WHS WHS_empty -----------------", __FILE__, __LINE__, WHS_info.WHS_sensors.waste_tank_full_sensor, RpMessage, WHS_info.WHS_sensors.waste_tank_empty_sensor, 0);
}
- else if ((WHS_info.WHS_sensors.waste_tank_full_sensor == SENSORFULL) &&
- (WHS_info.WHS_sensors.waste_tank_empty_sensor == SENSORnotEMPTY))
+ else if ((WHS_info.WHS_sensors.waste_tank_full_sensor == SENSORFULL) &&
+ (WHS_info.WHS_sensors.waste_tank_empty_sensor == SENSORnotEMPTY))
{
WHS_info.sttMachine = WHS_full ;
- REPORT_MSG(WHS_full," ------------ WHS WHS_full ----------------- ");
+ ReportWithPackageFilter(WasteFilter,"------------ WHS WHS_full -----------------", __FILE__, __LINE__, WHS_info.WHS_sensors.waste_tank_full_sensor, RpMessage, WHS_info.WHS_sensors.waste_tank_empty_sensor, 0);
}
else
{
WHS_info.sttMachine = WHS_sttError ;
- REPORT_MSG(WHS_sttError," ------------ WHS sensor Error ----------------- ");
+ ReportWithPackageFilter(WasteFilter,"------------ WHS sensor Error -----------------", __FILE__, __LINE__, WHS_info.WHS_sensors.waste_tank_full_sensor, RpMessage, WHS_info.WHS_sensors.waste_tank_empty_sensor, 0);
}
-
-/* if (//(WHS_info.WHS_sensors.waste_tank_over_flow_sensor == SENSORnotOVERFLOW) &&
- ( WHS_info.WHS_sensors.waste_tank_full_sensor == SENSORnotFULL) &&
- ((WHS_info.WHS_sensors.waste_tank_empty_sensor == SENSORnotEMPTY) ||
- (WHS_info.WHS_sensors.waste_tank_empty_sensor == SENSOREMPTY)))
- WHS_info.sttMachine = WHS_empty ;
- else if (//(WHS_info.WHS_sensors.waste_tank_over_flow_sensor == SENSORnotOVERFLOW) &&
- (WHS_info.WHS_sensors.waste_tank_full_sensor == SENSORFULL) &&
- (WHS_info.WHS_sensors.waste_tank_empty_sensor == SENSORnotEMPTY))
- WHS_info.sttMachine = WHS_full ;
- else if (//(WHS_info.WHS_sensors.waste_tank_over_flow_sensor == SENSOROVERFLOW) &&
- (WHS_info.WHS_sensors.waste_tank_full_sensor == SENSORFULL) &&
- (WHS_info.WHS_sensors.waste_tank_empty_sensor == SENSORnotEMPTY))
- WHS_info.sttMachine = WHS_overflow ;
- else
- {
- WHS_info.sttMachine = WHS_sttError ;
- REPORT_MSG(WHS_sttError," ------------ WHS sensor Error ----------------- ");
- }
-*/
- return OK;
+ return WHS_info.sttMachine;
}
@@ -522,26 +508,13 @@ bool initWHS_WasteTank()
{
WHS_info.WHS_sensors.waste_tank_empty_sensor = RdWasteTankEmptySensor();
WHS_info.WHS_sensors.waste_tank_full_sensor = SENSORnotFULL;
+ Task_sleep(15);
UpdateStateMachine();
AddControlCallback("Waste tank",WasteTankCBFunction, WasteTankCallBackTime , WasteTankCallBackFunction, 0,0,0);//eOneMinute
return OK;
}
-/*
-WHS_sensor OverflowSensorEvent()
-{
- WHS_sensor ret = WHS_no_event;
- if (RdWasteTankOverFlowSensor() != WHS_info.WHS_sensors.waste_tank_over_flow_sensor)
- {
- WHS_info.event = WHS_overflow_sensor;
- ret = WHS_overflow_sensor;
- WHS_info.WHS_sensors.waste_tank_over_flow_sensor = !(WHS_info.WHS_sensors.waste_tank_over_flow_sensor);
- }
- return ret;
-}
-*/
-
WHS_sensor EmptySensorEvent()
{
WHS_sensor ret = WHS_no_event;
@@ -550,6 +523,7 @@ WHS_sensor EmptySensorEvent()
WHS_info.event = WHS_empty_sensor;
ret = WHS_empty_sensor;
WHS_info.WHS_sensors.waste_tank_empty_sensor = !WHS_info.WHS_sensors.waste_tank_empty_sensor;
+ ReportWithPackageFilter(WasteFilter,"------------ WHS EmptySensorEvent (status) -----------------", __FILE__, __LINE__, WHS_info.WHS_sensors.waste_tank_full_sensor, RpMessage, WHS_info.WHS_sensors.waste_tank_empty_sensor, 0);
}
return ret;
}
@@ -562,6 +536,7 @@ WHS_sensor FullSensorEvent()
WHS_info.event = WHS_full_sensor;
ret = WHS_full_sensor;
WHS_info.WHS_sensors.waste_tank_full_sensor = 1-WHS_info.WHS_sensors.waste_tank_full_sensor;
+ ReportWithPackageFilter(WasteFilter,"------------ WHS FullSensorEvent (status) -----------------", __FILE__, __LINE__, WHS_info.WHS_sensors.waste_tank_full_sensor, RpMessage, WHS_info.WHS_sensors.waste_tank_empty_sensor, 0);
}
return ret;
}
@@ -580,6 +555,7 @@ WHS_sensor WasteTankCallBackFunction()
{
WHS_info.WHS_pump.time = 0;
AlarmHandlingSetAlarm( EVENT_TYPE__WASTE_CONTAINER_EMPTYING_TIMEOUT, false);
+ ReportWithPackageFilter(WasteFilter,"------------ WHS PUMPTIMEOUT -----------------", __FILE__, __LINE__, PUMPTIMEOUT, RpMessage, 0, 0);
return WHS_info.event = WHS_Timeout;
}
if ( FullSensorEvent())
@@ -597,7 +573,6 @@ WHS_sensor WasteTankCallBackFunction()
bool WasteTankCBFunction()
{
- uint8_t parameter = 7;
bool ret = notOK;
static bool pump_on_flag = CLOSE;
//uint32_t Cartridge_Cover_device_Id = 0;
@@ -611,11 +586,11 @@ bool WasteTankCBFunction()
if (WHS_info.sttMachine == WHS_empty)
{
WHS_info.sttMachine = WHS_filling;
- REPORT_MSG(WHS_filling," ------------ WHS_filling ----------------- ");
+ ReportWithPackageFilter(WasteFilter,"------------ WHS WHS_filling ------------", __FILE__, __LINE__, WHS_info.sttMachine, RpMessage, 0, 0);
}
else
{
- REPORT_MSG(WHS_filling," ------------ WHS EMPTY sensor failed !!!!!!! ----------------- ");
+ ReportWithPackageFilter(WasteFilter,"------------ WHS WHS EMPTY sensor failed !!!!!!! ------------", __FILE__, __LINE__, 0, RpMessage, 0, 0);
}
}
else //SENSOREMPTY
@@ -623,7 +598,7 @@ bool WasteTankCBFunction()
if (WHS_info.sttMachine == WHS_emptying)
{
WHS_info.sttMachine = WHS_empty;
- REPORT_MSG(WHS_filling," ------------ WHS_empty ----------------- ");
+ ReportWithPackageFilter(WasteFilter,"------------ WHS WHS_empty -------------", __FILE__, __LINE__, WHS_info.sttMachine, RpMessage, 0, 0);
ret = CartridgeWasteFilling(OFF);
WHS_info.Cartridge_Cover_device_Id = RemoveControlCallback(WHS_info.Cartridge_Cover_device_Id, WasteTankCBFunction );
WHS_info.Cartridge_Cover_device_Id = AddControlCallback("Cartridge Cover Door", WasteTankCBFunction, CartridgeCoverCallBackTime, CartridgeCoverCallBackFunction, 0,0,0 );//eOneSecond
@@ -631,7 +606,7 @@ bool WasteTankCBFunction()
}
else
{
- REPORT_MSG(WHS_emptying," ------------ WHS EMPTY sensor failed !!!!!!! ----------------- ");
+ ReportWithPackageFilter(WasteFilter,"------------ WHS WHS EMPTY sensor failed !!!!!!! -------------", __FILE__, __LINE__, WHS_info.sttMachine, RpMessage, 0, 0);
}
}
break;
@@ -641,9 +616,9 @@ bool WasteTankCBFunction()
break;
if ((WHS_info.WHS_sensors.cartridge_cover == OPEN) && (WHS_info.WHS_sensors.waste_tank_full_sensor == SENSORFULL))
{
- REPORT_MSG(WHS_emptying," ------------ WHS_full , cartridge cover is open cant start the pump!!!! ----------------- ");
- REPORT_MSG(WHS_emptying," ------------ close the cartridge cover to start the pump!!!! ----------------- ");
- //pump_on_flag = OPEN;
+ ReportWithPackageFilter(WasteFilter,"------------ WHS_full , cartridge cover is open cant start the pump!!!! -------------", __FILE__, __LINE__, WHS_info.sttMachine, RpMessage, WHS_info.WHS_sensors.cartridge_cover, 0);
+ ReportWithPackageFilter(WasteFilter,"------------ WHS, close the cartridge cover to start the pump!!!! -------------" , __FILE__, __LINE__, WHS_info.sttMachine, RpMessage, WHS_info.WHS_sensors.cartridge_cover, 0);
+
AlarmHandlingSetAlarm( EVENT_TYPE__NO_WASTE_CARTRIDGE_AVAILABLE, true);
WHS_info.WHS_sensors.waste_tank_full_sensor = SENSORnotFULL;
@@ -652,7 +627,7 @@ bool WasteTankCBFunction()
if (WHS_info.WHS_sensors.waste_tank_full_sensor == SENSORFULL)
{
WHS_info.sttMachine = WHS_full;
- REPORT_MSG(WHS_emptying," ------------ WHS_full ----------------- ");
+ ReportWithPackageFilter(WasteFilter,"------------ WHS, WHS_full -------------", __FILE__, __LINE__, WHS_info.sttMachine, RpMessage, WHS_info.WHS_sensors.waste_tank_full_sensor, 0);
WHS_info.Cartridge_Cover_device_Id = RemoveControlCallback(WHS_info.Cartridge_Cover_device_Id, WasteTankCBFunction );
WHS_info.Cartridge_Cover_device_Id = AddControlCallback("Cartridge Cover Door", WasteTankCBFunction, CartridgeCoverCallBackFastTime , CartridgeCoverCallBackFunction, 0,0,0 );//eTenMillisecond
if (RdRFIDStatus (WHS_info.active_cartridge) == WasteEmpty)
@@ -670,7 +645,7 @@ bool WasteTankCBFunction()
if (ret != OK)
{
- //recreate the full event until cartridge is inserted or atontocation
+ //recreate the full event until cartridge is inserted or authentication
WHS_info.WHS_sensors.waste_tank_full_sensor = 1-WHS_info.WHS_sensors.waste_tank_full_sensor;
}
@@ -681,34 +656,21 @@ bool WasteTankCBFunction()
if (WHS_info.sttMachine == WHS_full)
{
WHS_info.sttMachine = WHS_emptying;
- REPORT_MSG(WHS_emptying," ------------ WHS_emptying ----------------- ");
+ ReportWithPackageFilter(WasteFilter,"------------ WHS, WHS_emptying -------------", __FILE__, __LINE__, WHS_info.sttMachine, RpMessage, WHS_info.WHS_sensors.waste_tank_full_sensor, 0);
// can start a new JOB
}
else
{
- REPORT_MSG(WHS_full," ------------ WHS FULL sensor failed !!!!!!! ----------------- ");
+ ReportWithPackageFilter(WasteFilter,"------------ WHS, WHS FULL sensor failed !!!!!!! -------------", __FILE__, __LINE__, WHS_info.sttMachine, RpMessage, WHS_info.WHS_sensors.waste_tank_full_sensor, 0);
}
}
break;
-/* case WHS_overflow_sensor:
- if (WHS_info.WHS_sensors.waste_tank_empty_sensor)
- {
-
- // 1.StopMacine
- WHS_info.sttMachine = WHS_overflow;
- }
- else
- {
- WHS_info.sttMachine = WHS_full;
- }
- break;
-*/
case WHS_cartridge_cover_sensor:
if ( WHS_info.WHS_sensors.cartridge_cover == OPEN )
{
- REPORT_MSG(parameter," Cartridge cover open ");//popup message :"Cartridge cover open" //todo
+ ReportWithPackageFilter(WasteFilter,"------------ WHS, Cartridge cover open -------------", __FILE__, __LINE__, WHS_info.sttMachine, RpMessage, WHS_info.WHS_sensors.cartridge_cover, 0);//popup message :"Cartridge cover open" //todo
if ( WHS_info.WHS_pump.status == OPEN)
{
CartridgeWasteFilling(CLOSE);
@@ -728,7 +690,7 @@ bool WasteTankCBFunction()
}
else
{
- REPORT_MSG(parameter,"Power down in process");//popup message :"Cartridge cover open" //todo
+ ReportWithPackageFilter(WasteFilter,"------------ WHS, Power down in process -------------", __FILE__, __LINE__, WHS_info.sttMachine, RpMessage, WHS_info.WHS_sensors.cartridge_cover, 0);//popup message :"Cartridge cover open" //todo
}
@@ -757,7 +719,7 @@ bool WasteTankCBFunction()
if ( IFS_info.INK_isOK_flag )
{
IFS_info.INK_isOK_flag = false;//0
- REPORT_MSG(WHS_full," ------------ change INK cartridge status to color Used ----------------- ");
+ ReportWithPackageFilter(WasteFilter,"------------ WHS, change INK cartridge status to color Used -------------", __FILE__, __LINE__, IFS_info.INK_isOK_flag, RpMessage, 0, 0);
// test the Mid-tank capacity is not at Nadav sequence
MidTank_Pressure = Get_MidTank_Pressure_Sensor(IFS_info.Ink.cart_color);
if ( MidTank_Pressure > MidTank_Pressure_EMPTY )
@@ -765,11 +727,10 @@ bool WasteTankCBFunction()
ReportWithPackageFilter(WasteFilter,"------------ close door MidTank_Pressure > MidTank_Pressure_EMPTY -----------------", __FILE__,__LINE__,(int)(MidTank_Pressure_EMPTY*1000), RpMessage, (int)(MidTank_Pressure*1000), 0);
MidTankValvesAction(Cartridge_MidTank_OFF);
//Disable_MidTank_Pressure_Reading(IFS_info.Ink.cart_color);
- REPORT_MSG(WHS_full," ------------ Mid-tank not empty ----------------- ");
+ ReportWithPackageFilter(WasteFilter,"------------ WHS, Mid-tank not empty -------------", __FILE__, __LINE__, 0, RpMessage, 0, 0);
break;
}
IFS_info.MidTank_capacity = MidTank_Pressure;
- REPORT_MSG(WHS_full," ------------ Mid-tank filling in process ----------------- ");
ReportWithPackageFilter(WasteFilter,"------------ Mid-tank filling in process -----------------", __FILE__,__LINE__,(int)(MidTank_Pressure_EMPTY*1000), RpMessage, (int)(MidTank_Pressure*1000), 0);
Pannel_Leds(CART_1, MODE_ON);
cart1.color = BLINK;
@@ -799,7 +760,7 @@ bool WasteTankCBFunction()
if (IFS_info.IFS_Ink_precense_sensor == CarteidgePrecense)
{
// is power down in process?? //todo
- if ( !PowerOffInProcessGetState() ) // not in power down proccess
+ if ( !PowerOffInProcessGetState() ) // not in power down process
{
Pannel_Leds(CART_1, MODE_ON);
cart1.color = colorON;
@@ -808,10 +769,8 @@ bool WasteTankCBFunction()
else
{
// print: "power down in process";
- REPORT_MSG(WHS_full," ------------ power down in process ----------------- ");
+ ReportWithPackageFilter(WasteFilter,"------------ WHS, Power down in process -------------", __FILE__, __LINE__, WHS_info.sttMachine, RpMessage, IFS_info.IFS_Ink_precense_sensor, 0);
}
-
-
}
else // Cartridge is out
{
@@ -824,14 +783,13 @@ bool WasteTankCBFunction()
IFS_info.Ink.time_out = 0;
IFS_info.Cartridge_Ink_TimeOut_device_Id = RemoveControlCallback(IFS_info.Cartridge_Ink_TimeOut_device_Id, WasteTankCBFunction );
}
-
}
break;
case IFS_INK_authentication_pass:
if (!ColorMatch())
{
- REPORT_MSG(WHS_full," ------------ cartridge color does not match ----------------- ");
+ ReportWithPackageFilter(WasteFilter,"------------ WHS, cartridge color does not match -------------", __FILE__, __LINE__, WHS_info.sttMachine, RpMessage, 0, 0);
Pannel_Leds(CART_1, MODE_ON);
cart1.color = BLINK;
break;
@@ -920,7 +878,7 @@ bool WasteTankCBFunction()
break;
case WHS_Timeout:
- REPORT_MSG(WHS_emptying," ------------ WHS_Timeout ----------------- ");
+ ReportWithPackageFilter(WasteFilter,"------------ WHS, WHS_Timeout -------------", __FILE__, __LINE__, WHS_info.sttMachine, RpMessage, 0, 0);
AlarmHandlingSetAlarm( EVENT_TYPE__WASTE_CONTAINER_EMPTYING_TIMEOUT, true);
CartridgeWasteFilling(OFF);
break;
@@ -940,12 +898,12 @@ bool WasteTankCBFunction()
case IFS_Timeout_Second:
// Disable_MidTank_Pressure_Reading(IFS_info.Ink.cart_color);
IFS_info.Cartridge_Ink_TimeOut_device_Id = RemoveControlCallback(IFS_info.Cartridge_Ink_TimeOut_device_Id, WasteTankCBFunction );
- REPORT_MSG(WHS_full," ------------ Change cartridge status to Fail ----------------- ");
+ ReportWithPackageFilter(WasteFilter,"------------ WHS, Change cartridge status to Fail -------------", __FILE__, __LINE__, WHS_info.sttMachine, RpMessage, 0, 0);
MidTankValvesAction(Cartridge_MidTank_OFF);
cart1.color = fastBILNK;
- REPORT_MSG(WHS_full," ------------ Display Mid-tank # filling fail ----------------- ");
- REPORT_MSG(WHS_full," ------------ call customer support ----------------- ");
+ ReportWithPackageFilter(WasteFilter,"------------ Display Mid-tank # filling fail -------------", __FILE__, __LINE__, WHS_info.sttMachine, RpMessage, 0, 0);
+ ReportWithPackageFilter(WasteFilter,"------------ call customer support -------------", __FILE__, __LINE__, WHS_info.sttMachine, RpMessage, 0, 0);
Pannel_Leds(CART_1, MODE_ON);
cart1.color = fastBILNK;
IFS_TimeOutAlarm(true);
@@ -954,11 +912,11 @@ bool WasteTankCBFunction()
case IFS_MidTankFull:
// Disable_MidTank_Pressure_Reading(IFS_info.Ink.cart_color);
IFS_info.Cartridge_Ink_TimeOut_device_Id = RemoveControlCallback(IFS_info.Cartridge_Ink_TimeOut_device_Id, WasteTankCBFunction );
- REPORT_MSG(WHS_full," ------------ Change cartridge status to Waste Empty ----------------- ");
+ ReportWithPackageFilter(WasteFilter,"------------ Change cartridge status to Waste Empty -------------", __FILE__, __LINE__, WHS_info.sttMachine, RpMessage, 0, 0);
Pannel_Leds(CART_1, MODE_OFF);
cart1.color = colorOFF;
MidTankValvesAction(Cartridge_MidTank_OFF);
- REPORT_MSG(WHS_full," ------------ Display Mid-tank # filling done ----------------- ");
+ ReportWithPackageFilter(WasteFilter,"------------ Display Mid-tank # filling done -------------", __FILE__, __LINE__, WHS_info.sttMachine, RpMessage, 0, 0);
break;
@@ -979,7 +937,6 @@ bool WasteTankCBFunction()
bool RdCartridgeCoverSensor()
{
- uint32_t parameter = 6 ;
//REPORT_MSG(parameter," ------------ RD Cartridge Cover Sensor ----------------- ");
bool ret = notOK;
@@ -989,11 +946,11 @@ bool RdCartridgeCoverSensor()
ret = Get_COVER_1_State(CartridgesDoor);
if ((ret == OPEN ) && (ret != WHS_info.WHS_sensors.cartridge_cover))
{
- Report(" ------------ RD Cartridge Cover Sensor is = OPEN(1) ----------------- ",__FILE__,__LINE__,ret,RpWarning,ret,0);
+ ReportWithPackageFilter(WasteFilter,"------------ RD Cartridge Cover Sensor is = OPEN(1) -------------", __FILE__, __LINE__, ret, RpMessage, 0, 0);
}
if ((ret == CLOSE ) && (ret != WHS_info.WHS_sensors.cartridge_cover))
{
- REPORT_MSG(parameter," ------------ RD Cartridge Cover Sensor is = CLOSE(0) ----------------- ");
+ ReportWithPackageFilter(WasteFilter,"------------ RD Cartridge Cover Sensor is = CLOSE(0) -------------", __FILE__, __LINE__, ret, RpMessage, 0, 0);
}
return ret;
}
@@ -1003,21 +960,18 @@ bool RdCartridgeCoverSensor()
WHS_sensor CartridgeCoverCallBackFunction()
{
- uint32_t parameter = 6 ;
-
-
WHS_sensor ret = WHS_no_event;
//ret = RdCartridgeCoverSensor();
if ( WHS_info.WHS_sensors.cartridge_cover != RdCartridgeCoverSensor() )
{
- REPORT_MSG(parameter," ------------ find : WHS_cartridge_cover_sensor event ----------------- ");
WHS_info.event = WHS_cartridge_cover_sensor;
WHS_info.WHS_sensors.cartridge_cover = !WHS_info.WHS_sensors.cartridge_cover;
+ ReportWithPackageFilter(WasteFilter,"------------ find : WHS_cartridge_cover_sensor event -------------", __FILE__, __LINE__, WHS_info.WHS_sensors.cartridge_cover, RpMessage, 0, 0);
ret = WHS_cartridge_cover_sensor; //todo
}
else if (( IFS_info.INK_isOK_flag ) && ( WHS_info.WHS_sensors.cartridge_cover == WHS_CartridgeCoverOPEN))// for Mid-tank filling
{
- REPORT_MSG(parameter," ------------ Mid-tank Filling : Close cartridge cover ----------------- ");
+ ReportWithPackageFilter(WasteFilter,"------------ Mid-tank Filling : Close cartridge cover -------------", __FILE__, __LINE__, WHS_info.WHS_sensors.cartridge_cover, RpMessage, 0, 0);
}
/*else if(WHS_info.WHS_sensors.cartridge_cover == WHS_CartridgeCoverOPEN)
{
@@ -1089,15 +1043,13 @@ WHS_sensor CartridgeCoverCallBackFunction()
WHS_sensor CartridgeWaste1CallBackFunction()
{
- uint32_t parameter = 6 ;
-
WHS_sensor ret = WHS_no_event;
//ret = RdCartridgeCoverSensor();
if (WHS_info.WHS_sensors.waste_cartridge1_precense_sensor != RdWasteCartridge1Sensor())
{
- REPORT_MSG(parameter," ------------ find : WHS_waste1_presence_sensor event ----------------- ");
WHS_info.event = WHS_waste1_presence_sensor;
WHS_info.WHS_sensors.waste_cartridge1_precense_sensor = !WHS_info.WHS_sensors.waste_cartridge1_precense_sensor;
+ ReportWithPackageFilter(WasteFilter,"------------ find : WHS_waste1_presence_sensor event -------------", __FILE__, __LINE__, WHS_info.WHS_sensors.waste_cartridge1_precense_sensor, RpMessage, 0, 0);
ret = WHS_waste1_presence_sensor;
}
return ret;
@@ -1105,15 +1057,13 @@ WHS_sensor CartridgeWaste1CallBackFunction()
WHS_sensor CartridgeWaste2CallBackFunction()
{
- uint32_t parameter = 6 ;
-
WHS_sensor ret = WHS_no_event;
- //ret = RdCartridgeCoverSensor();
+
if (WHS_info.WHS_sensors.waste_cartridge2_precense_sensor != RdWasteCartridge2Sensor())
{
- REPORT_MSG(parameter," ------------ find : WHS_waste2_presence_sensor event ----------------- ");
WHS_info.event = WHS_waste2_presence_sensor;
WHS_info.WHS_sensors.waste_cartridge2_precense_sensor = !WHS_info.WHS_sensors.waste_cartridge2_precense_sensor;
+ ReportWithPackageFilter(WasteFilter,"------------ find : WHS_waste2_presence_sensor event -------------", __FILE__, __LINE__, WHS_info.WHS_sensors.waste_cartridge2_precense_sensor, RpMessage, 0, 0);
ret = WHS_waste2_presence_sensor;
}
return ret;
@@ -1122,42 +1072,40 @@ WHS_sensor CartridgeWaste2CallBackFunction()
/*------------------------------- Waste Cartridge + IFS Cartridge -----------------------------------------*/
bool InitCartStatus()
{
- uint32_t parameter = 6 ;
-
WHS_info.WHS_sensors.cartridge_cover = RdCartridgeCoverSensor();
/* INK => CART_1 */
- REPORT_MSG(parameter," ------------------------------------------------------------------------------------------ ");
- REPORT_MSG(parameter," ------------!!!!!!! at INIT what to do if IFS_INK is presence !!!!!!! ----------------- ");
- REPORT_MSG(parameter," ------------------------------------------------------------------------------------------ ");
+ ReportWithPackageFilter(WasteFilter,"------------------------------------------------------------------------------------------", __FILE__,__LINE__,0, RpMessage, 0, 0);
+ ReportWithPackageFilter(WasteFilter,"------------ !!!!!!! at INIT what to do if IFS_INK is presence !!!!!!! -----------------", __FILE__,__LINE__,0, RpMessage, 0, 0);
+ ReportWithPackageFilter(WasteFilter,"------------------------------------------------------------------------------------------", __FILE__,__LINE__,0, RpMessage, 0, 0);
if (RdInkCartridgeSensor())
{
- REPORT_MSG(parameter," ------------ INIT : IFS_INK is presence ----------------- ");
- IFS_info.IFS_Ink_precense_sensor = CarteidgePrecense;
- Pannel_Leds( CART_1, MODE_ON);
- cart1.color = colorON;
+ IFS_info.IFS_Ink_precense_sensor = CarteidgePrecense;
+ ReportWithPackageFilter(WasteFilter,"------------ INIT : IFS_INK is presence -----------------", __FILE__,__LINE__, IFS_info.IFS_Ink_precense_sensor, RpMessage, 0, 0);
+ Pannel_Leds( CART_1, MODE_ON);
+ cart1.color = colorON;
}
else
{
- REPORT_MSG(parameter," ------------ INIT : IFS_INK is NOT presence ----------------- ");
- IFS_info.IFS_Ink_precense_sensor = CarteidgeNotPrecense;
- Pannel_Leds( CART_1, MODE_OFF);
- cart1.color = colorOFF;
+ IFS_info.IFS_Ink_precense_sensor = CarteidgeNotPrecense;
+ ReportWithPackageFilter(WasteFilter,"------------ INIT : IFS_INK is NOT presence -----------------", __FILE__,__LINE__, IFS_info.IFS_Ink_precense_sensor, RpMessage, 0, 0);
+ Pannel_Leds( CART_1, MODE_OFF);
+ cart1.color = colorOFF;
}
/* waste_cartridge1 => CART_2 */
if (RdWasteCartridge1Sensor())
{
- REPORT_MSG(parameter," ------------ INIT : WHS_waste1 cart is presence ----------------- ");
WHS_info.WHS_sensors.waste_cartridge1_precense_sensor = CarteidgePrecense;
+ ReportWithPackageFilter(WasteFilter,"------------ INIT : WHS_waste1 cart is presence -----------------", __FILE__,__LINE__, WHS_info.WHS_sensors.waste_cartridge1_precense_sensor, RpMessage, 0, 0);
Pannel_Leds( CART_2, MODE_ON);
cart2.color = colorON;
}
else
{
- REPORT_MSG(parameter," ------------ INIT : WHS_waste1 cart is NOT presence !!! ----------------- ");
WHS_info.WHS_sensors.waste_cartridge1_precense_sensor = CarteidgeNotPrecense;
+ ReportWithPackageFilter(WasteFilter,"------------ INIT : WHS_waste1 cart is NOT presence !!! -----------------", __FILE__,__LINE__,WHS_info.WHS_sensors.waste_cartridge1_precense_sensor, RpMessage, 0, 0);
Pannel_Leds( CART_2, MODE_OFF);
cart2.color = colorOFF;
}
@@ -1165,21 +1113,19 @@ bool InitCartStatus()
/* waste_cartridge2 => CART_3 */
if (RdWasteCartridge2Sensor())
{
- REPORT_MSG(parameter," ------------ INIT : WHS_waste2 cart is presence ----------------- ");
WHS_info.WHS_sensors.waste_cartridge2_precense_sensor = CarteidgePrecense;
+ ReportWithPackageFilter(WasteFilter,"------------ INIT : WHS_waste2 cart is presence -----------------", __FILE__,__LINE__, WHS_info.WHS_sensors.waste_cartridge2_precense_sensor, RpMessage, 0, 0);
Pannel_Leds( CART_3, MODE_ON);
cart3.color = colorON;
}
else
{
- REPORT_MSG(parameter," ------------ INIT : WHS_waste2 cart is NOT presence_sensor !!! ----------------- ");
WHS_info.WHS_sensors.waste_cartridge2_precense_sensor = CarteidgeNotPrecense;
+ ReportWithPackageFilter(WasteFilter,"------------ INIT : WHS_waste2 cart is NOT presence_sensor !!! -----------------", __FILE__,__LINE__, WHS_info.WHS_sensors.waste_cartridge2_precense_sensor, RpMessage, 0, 0);
Pannel_Leds( CART_3, MODE_OFF);
cart3.color = colorOFF;
}
-
-
if (IFS_info.IFS_Ink_precense_sensor == CarteidgePrecense) CartridgeAuthentication(INK_cartridge);
if (WHS_info.WHS_sensors.waste_cartridge1_precense_sensor == CarteidgePrecense) CartridgeAuthentication(waste_cartridge1);
if (WHS_info.WHS_sensors.waste_cartridge2_precense_sensor == CarteidgePrecense) CartridgeAuthentication(waste_cartridge2);
@@ -1187,7 +1133,7 @@ bool InitCartStatus()
if (WHS_info.WHS_sensors.cartridge_cover == WHS_CartridgeCoverOPEN)
{
- REPORT_MSG(parameter," ------------ WHS_CartridgeCoverOPEN : add callback for cart1 and cart 2 ----------------- ");
+ ReportWithPackageFilter(WasteFilter,"------------ WHS_CartridgeCoverOPEN : add callback for cart1 and cart 2 -----------------", __FILE__,__LINE__, WHS_info.WHS_sensors.cartridge_cover, RpMessage, 0, 0);
IFS_info.Cartridge_Ink_device_Id = AddControlCallback("Ink Cartridge CB" , WasteTankCBFunction, eOneSecond, CartridgeInkCallBackFunction , 0,0,0 );
WHS_info.Cartridge_Waste1_device_Id = AddControlCallback("Waste1 Cartridge CB", WasteTankCBFunction, eOneSecond, CartridgeWaste1CallBackFunction, 0,0,0 );
WHS_info.Cartridge_Waste2_device_Id = AddControlCallback("Waste2 Cartridge CB", WasteTankCBFunction, eOneSecond, CartridgeWaste2CallBackFunction, 0,0,0 );
@@ -1201,8 +1147,6 @@ bool RdInkCartridgeSensor()
{
bool ret = notOK;
WHS_Read_GPI_Registers();
- //WHS_info.WHS_sensors.waste_cartridge1_precense_sensor = Is_Cartridge_Present(CART_2);
- //ret = WHS_info.WHS_sensors.waste_cartridge1_precense_sensor;
ret = Is_Cartridge_Present(CART_1);
return ret;
}
@@ -1211,8 +1155,6 @@ bool RdWasteCartridge1Sensor()
{
bool ret = notOK;
WHS_Read_GPI_Registers();
- //WHS_info.WHS_sensors.waste_cartridge1_precense_sensor = Is_Cartridge_Present(CART_2);
- //ret = WHS_info.WHS_sensors.waste_cartridge1_precense_sensor;
ret = Is_Cartridge_Present(CART_2);
return ret;
}
@@ -1221,37 +1163,34 @@ bool RdWasteCartridge2Sensor()
{
bool ret = notOK;
WHS_Read_GPI_Registers();
- //WHS_info.WHS_sensors.waste_cartridge2_precense_sensor = Is_Cartridge_Present(CART_3);
- //ret = WHS_info.WHS_sensors.waste_cartridge2_precense_sensor;
ret = Is_Cartridge_Present(CART_3);
return ret;
}
bool SetActiveWastCartridge()
{
- uint8_t parameter = 5;
-
bool ret = notOK;
+
if (( WHS_info.WHS_sensors.waste_cartridge1_precense_sensor == PRECENSE )
&& (WHS_info.cartridge_1.autheticate == PASSED)
&& (WHS_info.cartridge_1.status == WasteEmpty))
{
- REPORT_MSG(parameter," ------------ WHS : active_cartridge = waste_cartridge 1 ----------------- ");
WHS_info.active_cartridge = waste_cartridge1;
+ ReportWithPackageFilter(WasteFilter,"------------ WHS : active_cartridge = waste_cartridge 1 -----------------", __FILE__,__LINE__, WHS_info.active_cartridge, RpMessage, 0, 0);
AlarmHandlingSetAlarm( EVENT_TYPE__NO_WASTE_CARTRIDGE_AVAILABLE, false);
}
else if (( WHS_info.WHS_sensors.waste_cartridge2_precense_sensor == PRECENSE)
&& (WHS_info.cartridge_2.autheticate == PASSED)
&& (WHS_info.cartridge_2.status == WasteEmpty))
{
- REPORT_MSG(parameter," ------------ WHS : active_cartridge = waste_cartridge 2 ----------------- ");
WHS_info.active_cartridge = waste_cartridge2;
+ ReportWithPackageFilter(WasteFilter,"------------ WHS : active_cartridge = waste_cartridge 2 -----------------", __FILE__,__LINE__, WHS_info.active_cartridge, RpMessage, 0, 0);
AlarmHandlingSetAlarm( EVENT_TYPE__NO_WASTE_CARTRIDGE_AVAILABLE, false);
}
else
{
- REPORT_MSG(parameter," ------------ WHS : NO active_cartridge ----------------- ");
WHS_info.active_cartridge = no_waste_cartridge;
+ ReportWithPackageFilter(WasteFilter,"------------ WHS : NO active_cartridge -----------------", __FILE__,__LINE__, WHS_info.active_cartridge, RpMessage, 0, 0);
AlarmHandlingSetAlarm( EVENT_TYPE__NO_WASTE_CARTRIDGE_AVAILABLE, true);
}
return ret;
@@ -1268,11 +1207,10 @@ U8 WHS_init(void)
{
SetWastePump(CLOSE);
WHS_info.WHS_valve = VALVE_DIR_WASTE_CARTRIDGE1;
-#ifdef Use_WHS_Card
- Trigger_SetWHSValveWatseCartridge(WHS_info.WHS_valve);
-#else
+ if (WHS_Type == WHS_TYPE_UNKNOWN)
Valve_Set(VALVE_WASTE_TANK, WHS_info.WHS_valve);
-#endif
+ else //new WHS
+ Trigger_SetWHSValveWatseCartridge(WHS_info.WHS_valve);
//Valve_Set(VALVE_WASTE_TANK, VALVE_DIR_WASTE_CARTRIDGE1);
InitCartStatus();
initWHS_WasteTank();
@@ -1339,12 +1277,10 @@ U8 SetValve(bool value)
{
bool ret = OK;
WHS_info.WHS_valve = value;
-#ifdef Use_WHS_Card
- Trigger_SetWHSValveWatseCartridge(WHS_info.WHS_valve);
-#else
+ if (WHS_Type == WHS_TYPE_UNKNOWN)
Valve_Set(VALVE_WASTE_TANK, WHS_info.WHS_valve);
-#endif
-
+ else //new WHS
+ Trigger_SetWHSValveWatseCartridge(WHS_info.WHS_valve);
return ret;
}
diff --git a/Software/Embedded_SW/Embedded/Modules/Waste/newWHS_init.c b/Software/Embedded_SW/Embedded/Modules/Waste/newWHS_init.c
index c42546d1b..99b96ddf3 100644
--- a/Software/Embedded_SW/Embedded/Modules/Waste/newWHS_init.c
+++ b/Software/Embedded_SW/Embedded/Modules/Waste/newWHS_init.c
@@ -9,13 +9,13 @@
#include <Drivers/I2C_Communication/WHS_Card/I2C_WHS_Mux.h>
#include <Drivers/I2C_Communication/I2C.h>
#include "Drivers/I2C_Communication/WHS_Card/WHS_data.h"
-#include <Drivers/I2C_Communication/WHS_Card/EEPROM/WHS_EEPROM.h>
#include <Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/WHS_Fan.h>
#include <Drivers/I2C_Communication/I2C_Task.h>
#include <Drivers/I2C_Communication/WHS_Card/D_AD5272_Rheostat/WHS_Rheostat.h>
#include <Drivers/I2C_Communication/WHS_Card/D_ADS122_PT100/WHS_PT100_ADC.h>
#include <Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.h>
#include <Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.h>
+#include <Drivers/I2C_Communication/WHS_Card/EEPROM/D_EEPROM.h>
#include <Drivers/I2C_Communication/WHS_Card/IO_Extender_Ports_TCA9555/WHS_IO.h>
bool test_9555(void);
@@ -24,17 +24,21 @@ bool WHS_I2C_EEprom_Write_Ch_shai_taest(void);
bool newWHS_init(void)
{
bool status = OK;
- Main_Mux_Flag = 0;
+
+ //Main_Mux_Flag = 0;
// delayms(4000);
// status = Select_Main_WHS_Mux_Channel();
+
+ //Trigger_Check_WHS_Type_Via_EEPROM();
Trigger_WHS_init_IO();
Trigger_WHS_init_fan();
Trigger_WHS_init_PT100();
Trigger_WHS_init_Blower();
Trigger_WHS_MAX11614_Init();
Trigger_WHS_Rheostat_init();
+
//status |= WHS_IO_Init();
//status |= init_WHS_fan();
//
@@ -53,7 +57,7 @@ bool newWHS_init(void)
// //test_9555();
// status |= WHS_I2C_EEprom_Write_Ch_shai_taest();
- Set_All_WHS_Fans(0xFF);
+ //Set_All_WHS_Fans(0xFF);
// delayms(4000);
//Trigger_SetWHSBlowerVoltage (0x0C00);