From 797d4654f845a6d6c8f6e02bcdc6bc11ceeed51f Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Sun, 1 Dec 2019 14:34:42 +0200 Subject: update with Beta code --- .../Embedded/Common/SWUpdate/FileSystem.c | 65 +++++++++++++++------- 1 file changed, 45 insertions(+), 20 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c') diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c index 7871c5e28..5650cbd1b 100644 --- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c +++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c @@ -94,32 +94,39 @@ uint32_t FileUploadRequestFunc(MessageContainer* requestContainer) Fresult = FR_DENIED; else { - Semaphore_pend(FFS_Sem, BIOS_WAIT_FOREVER); - Fresult = f_open(UploadFileHandle,request->path,FA_READ | FA_WRITE | FA_OPEN_ALWAYS | FA_CREATE_ALWAYS); - if (Fresult == FR_OK) + if (Semaphore_pend(FFS_Sem, BIOS_NO_WAIT)) { - FileLength = request->length; - FileReceivedLength = 0; - REPORT_MSG (FileLength,"file upload request"); - response.has_maxchunklength = true; - response.maxchunklength = MAX_CHUNK_LENGTH; - strcpy(FileHandleChar, "1234"); - response.uploadid = FileHandleChar; //supporting only single file at each time. - FileDone = false; + CommRxTaskHandle = Task_self(); + Task_setPri(CommRxTaskHandle, 3); + // Report("Task_setPri", __FILE__, __LINE__, 4, RpWarning, (int)CommRxTaskHandle, 0); + Report("FileUploadRequestFunc 2", __FILE__, __LINE__, msec_millisecondCounter, RpWarning, (int)0, 0); + Fresult = f_open(UploadFileHandle,request->path,FA_READ | FA_WRITE | FA_OPEN_ALWAYS | FA_CREATE_ALWAYS); + if (Fresult == FR_OK) + { + Report("FileUploadRequestFunc 3", __FILE__, __LINE__, msec_millisecondCounter, RpWarning, (int)0, 0); + FileLength = request->length; + FileReceivedLength = 0; + REPORT_MSG (FileLength,"file upload request"); + response.has_maxchunklength = true; + response.maxchunklength = MAX_CHUNK_LENGTH; + strcpy(FileHandleChar, "1234"); + response.uploadid = FileHandleChar; //supporting only single file at each time. + FileDone = false; + } + else + { + my_free (UploadFileHandle); + UploadFileHandle = 0; + Semaphore_post(FFS_Sem); + } } else { - my_free (UploadFileHandle); - UploadFileHandle = 0; - Semaphore_post(FFS_Sem); + Fresult = FR_DENIED; + Report("Semaphore_pend failed", __FILE__, __LINE__, 4, RpWarning, (int)0, 0); } - } } - CommRxTaskHandle = Task_self(); - Task_setPri(CommRxTaskHandle, 4); - // Report("Task_setPri", __FILE__, __LINE__, 4, RpWarning, (int)CommRxTaskHandle, 0); - responseContainer = createContainer(MESSAGE_TYPE__FileUploadResponse, requestContainer->token, false, &response, &file_upload_response__pack, &file_upload_response__get_packed_size); if (Fresult!= FR_OK) @@ -533,6 +540,8 @@ uint32_t GetStorageInfoRequestFunc(MessageContainer* requestContainer) return OK; } +//char Datestr[100]; + uint32_t GetFilesRequestFunc(MessageContainer* requestContainer) { //uint32_t status = OK; @@ -549,6 +558,15 @@ uint32_t GetFilesRequestFunc(MessageContainer* requestContainer) char FullPath[MAX_NUM_OF_FILES][60]; int i,NumOfFiles = 0; FRESULT Fresult = FR_OK; + /* + time_t t; + struct tm *ltm; + char *curTime; + t = time(NULL); + ltm = localtime(&t); + curTime = asctime(ltm); + Report(curTime, __FILE__, ltm->tm_hour,ltm->tm_min , RpWarning, ltm->tm_sec, 0); + */ Semaphore_pend(FFS_Sem, BIOS_WAIT_FOREVER); Fresult |= f_opendir(&dir, g_cCwdBuf); @@ -600,7 +618,14 @@ uint32_t GetFilesRequestFunc(MessageContainer* requestContainer) Data[i].lastmodifieddate = fno[i]->fdate; Data[i].has_lastmodifiedtime = true; Data[i].lastmodifiedtime = fno[i]->ftime; - //Report(Data[i].name, __FILE__, __LINE__, Data[i].lastmodifieddate, RpWarning, (int)Data[i].lastmodifiedtime, 0); + /* + t = (fno[i]->fdate<<16)+fno[i]->ftime; + ltm = localtime(&t); + curTime = asctime(ltm); + usnprintf(&Datestr, 100, "File info %s %s",fno[i]->fname, curTime); + Report(Datestr, __FILE__, __LINE__, t, RpWarning, (int)Data[i].lastmodifiedtime, 0); + Task_sleep(50); + */ if (i==0) usnprintf(&FullPath[i], 50, "%s", request->path); -- cgit v1.3.1 From 1171059d96c39662cef5c7414cd387048c2372d9 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Thu, 12 Dec 2019 15:44:30 +0200 Subject: improvements and debugging --- .../Embedded/Common/SWUpdate/FileSystem.c | 2 + .../Embedded_SW/Embedded/Common/SW_Info/SW_Info.c | 2 +- .../Embedded_SW/Embedded/Communication/Container.c | 4 +- .../Embedded/Drivers/Heater/TemperatureSensor.c | 5 +- .../Embedded/Drivers/USB_Communication/USBCDCD.c | 5 +- .../Embedded/Modules/AlarmHandling/AlarmHandling.c | 158 ++------------------- .../Embedded/Modules/Control/MillisecTask.c | 2 + .../Embedded/Modules/Diagnostics/Diagnostics.c | 142 +++++++++--------- .../Embedded/Modules/Diagnostics/Diagnostics.h | 2 + .../Embedded/Modules/General/GeneralHardware.c | 2 +- .../Embedded/Modules/Heaters/Heaters_print.c | 6 +- .../Embedded/Software Release Notes.txt | 36 ++++- 12 files changed, 139 insertions(+), 227 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c') diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c index 5650cbd1b..b23b4361b 100644 --- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c +++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c @@ -176,6 +176,8 @@ uint32_t FileChunkUploadRequestFunc(MessageContainer* requestContainer) else { FileReceivedLength += WrittenBytes; + ReportWithPackageFilter(CommFilter,"Chunk received", __FILE__,WrittenBytes,FileReceivedLength, RpMessage,msec_millisecondCounter, 0); + //REPORT_MSG (FileReceivedLength,"file upload chunk"); if (FileReceivedLength == FileLength) { diff --git a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c index 92ef02008..fd28180d7 100644 --- a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c +++ b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c @@ -20,7 +20,7 @@ typedef struct } TangoVersion_t; -TangoVersion_t _gTangoVersion = {1,4,8,0}; +TangoVersion_t _gTangoVersion = {1,4,6,0}; #define BUILD_DATE __DATE__ char Dat[50] = BUILD_DATE; char _gTangoName [MAX_STRING_LEN] = "Tango01 ";//d diff --git a/Software/Embedded_SW/Embedded/Communication/Container.c b/Software/Embedded_SW/Embedded/Communication/Container.c index 5ca7a4293..8cc4d883f 100644 --- a/Software/Embedded_SW/Embedded/Communication/Container.c +++ b/Software/Embedded_SW/Embedded/Communication/Container.c @@ -134,10 +134,10 @@ void receive_callback(char* buffer, size_t length) MessageContainer* requestContainer = message_container__unpack(NULL, length, (uint8_t*)buffer); if (requestContainer == NULL) return; - if ((requestContainer->type>= MESSAGE_TYPE__StartDiagnosticsRequest)&&(requestContainer->type != MESSAGE_TYPE__KeepAliveRequest)) //user action resets the idle counter + /*if ((requestContainer->type>= MESSAGE_TYPE__StartDiagnosticsRequest)&&(requestContainer->type != MESSAGE_TYPE__KeepAliveRequest)) //user action resets the idle counter { ReportWithPackageFilter(CommFilter,"Message received", __FILE__,__LINE__,requestContainer->type, RpMessage,length, 0); - } + }*/ if (requestContainer->type != MESSAGE_TYPE__KeepAliveRequest) resetIdleCounter(); KeepAliveOneSecondCounter = 0; diff --git a/Software/Embedded_SW/Embedded/Drivers/Heater/TemperatureSensor.c b/Software/Embedded_SW/Embedded/Drivers/Heater/TemperatureSensor.c index 1fab20d7e..cda7f6db7 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Heater/TemperatureSensor.c +++ b/Software/Embedded_SW/Embedded/Drivers/Heater/TemperatureSensor.c @@ -184,9 +184,10 @@ int TemperatureListString(char* str) len = usnprintf(str, 150, "Prepare H1: %d H2: %d H3: %d H4: %d H5: %d H6: %d D1: %d D2: %d D3: %d M: %d",TempSensorResponse[TEMP_SENSE_ANALOG_DYEINGH_TEMP1].Temperature_C_mult_by_100/100, TempSensorResponse[TEMP_SENSE_ANALOG_DYEINGH_TEMP2].Temperature_C_mult_by_100/100,TempSensorResponse[TEMP_SENSE_ANALOG_DYEINGH_TEMP3].Temperature_C_mult_by_100/100, TempSensorResponse[TEMP_SENSE_ANALOG_DYEINGH_TEMP4].Temperature_C_mult_by_100/100,TempSensorResponse[TEMP_SENSE_ANALOG_DYEINGH_TEMP5].Temperature_C_mult_by_100/100, - TempSensorResponse[TEMP_SENSE_ANALOG_MIXCHIP_TEMP].Temperature_C_mult_by_100/100,TempSensorResponse[TEMP_SENSE_ANALOG_DRYER_TEMP1].Temperature_C_mult_by_100/100, + TempSensorResponse[HEAD6_PT100].Temperature_C_mult_by_100/100,TempSensorResponse[TEMP_SENSE_ANALOG_DRYER_TEMP1].Temperature_C_mult_by_100/100, TempSensorResponse[TEMP_SENSE_ANALOG_DRYER_TEMP2].Temperature_C_mult_by_100/100,TempSensorResponse[TEMP_SENSE_ANALOG_DRYER_TEMP3].Temperature_C_mult_by_100/100 - ,TempSensorResponse[TEMP_SENSE_AN_ENCLOSURETEMP3].Temperature_C_mult_by_100/100); + ,TempSensorResponse[MIXER6_PT100].Temperature_C_mult_by_100/100); + //Prepare H1: 78 H2: 111 H3: 137 H4: 135 H5: 144 H6: 75 D1: 120 D2: 167 D3: 158 M: 129 return len; } #endif diff --git a/Software/Embedded_SW/Embedded/Drivers/USB_Communication/USBCDCD.c b/Software/Embedded_SW/Embedded/Drivers/USB_Communication/USBCDCD.c index e6812d607..22a734781 100644 --- a/Software/Embedded_SW/Embedded/Drivers/USB_Communication/USBCDCD.c +++ b/Software/Embedded_SW/Embedded/Drivers/USB_Communication/USBCDCD.c @@ -82,7 +82,7 @@ static unsigned char UsbRxBuffer[COMM_MAX_BUFFER_SIZE]; static unsigned char transmitBuffer[COMM_MAX_BUFFER_SIZE]; -int expected_message_size; +int expected_message_size,keep_expected_message_size; int current_message_size; static volatile uint32_t g_RxCount; //static GateMutex_Handle gateTxSerial; @@ -647,7 +647,10 @@ if (expected_message_size == 0) // ULength[URxIndex] = expected_message_size; buffId = initArray( expected_message_size); if (buffId == 0xFF) + { + keep_expected_message_size = expected_message_size; expected_message_size = 0; + } } do diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c index b62b33cc5..2e33bc248 100644 --- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c +++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c @@ -91,7 +91,7 @@ typedef struct AlarmHandlingMessage{ // uint32_t Data; }AlarmHandlingMessageStruc; -#define MAX_SYSTEM_ALARMS 300+1 +#define MAX_SYSTEM_ALARMS 400+1 /*typedef enum { TemperatureAlarm, @@ -586,7 +586,7 @@ JobEndReasonEnum getEndReason(uint32_t AlarmId) } else { - usnprintf(AlarmReasonStr, 100, "Alarm %d caused a job stop",AlarmId); + usnprintf(AlarmReasonStr, 100, "Alarm %d type %d caused a job stop",AlarmId,AlarmItem[AlarmId].EventType); return JOB_OTHER_ALARM; } default: @@ -988,6 +988,9 @@ uint32_t AlarmHandlingStop(void) } return OK; } +uint32_t Save_Alarm_i; +void *Save_Alarm_ptr; +EventType Save_Alarm_Type; uint32_t AlarmHandlingLoop(uint32_t tick) { @@ -1105,10 +1108,10 @@ uint32_t AlarmHandlingLoop(uint32_t tick) { if (AlarmItem[Alarm_i].AlarmDirection == true) { - if ((doubleValue >= (AlarmItem[Alarm_i].AlarmValue*CurrentAlarmHighLimit)) || (doubleValue <= (AlarmItem[Alarm_i].AlarmValue*CurrentAlarmLowLimit))) + if ((doubleValue >= (float)(AlarmItem[Alarm_i].AlarmValue*CurrentAlarmHighLimit)) || (doubleValue <= (float)(AlarmItem[Alarm_i].AlarmValue*CurrentAlarmLowLimit))) { Status = true; - //ReportWithPackageFilter(AlarmFilter,"OverCurrent Alarm ON ", __FILE__,AlarmItem[Alarm_i].DeviceId,AlarmItem[Alarm_i].EventType, RpMessage, (int)doubleValue, 0); + ReportWithPackageFilter(AlarmFilter,"OverCurrent Alarm ON ", __FILE__,AlarmItem[Alarm_i].DeviceId,AlarmItem[Alarm_i].EventType, RpMessage, (int)doubleValue, 0); } } else @@ -1116,7 +1119,7 @@ uint32_t AlarmHandlingLoop(uint32_t tick) if (doubleValue <= 0.1) { Status = true; - //ReportWithPackageFilter(AlarmFilter,"llop break Alarm ON ", __FILE__,AlarmItem[Alarm_i].DeviceId,AlarmItem[Alarm_i].EventType, RpMessage, (int)doubleValue, 0); + ReportWithPackageFilter(AlarmFilter,"loop break Alarm ON ", __FILE__,AlarmItem[Alarm_i].DeviceId,AlarmItem[Alarm_i].EventType, RpMessage, (int)doubleValue, 0); } } @@ -1189,7 +1192,7 @@ uint32_t AlarmHandlingLoop(uint32_t tick) case ALARM_SOURCE_TYPE__TachoAlarm: // add by shai Status = false; - if (CheckTamperAlarms) + if (CheckCurrentAlarms) { // ReportWithPackageFilter(AlarmFilter,"------------FANS_RPM[Alarm_i]----------------", __FILE__,__LINE__,Alarm_i, RpMessage, value, 0); @@ -1365,16 +1368,19 @@ uint32_t AlarmHandlingLoop(uint32_t tick) } else // alarm off { + ReportWithPackageFilter(AlarmFilter,"Alarm OFF ", __FILE__,__LINE__,AlarmItem[Alarm_i].EventType, RpMessage, 0, Alarm_i); if (AlarmState[Alarm_i].EventPtr) { //ROM_IntMasterDisable(); + Save_Alarm_i = Alarm_i; + Save_Alarm_ptr = AlarmState[Alarm_i].EventPtr; + Save_Alarm_Type = AlarmItem[Alarm_i].EventType; my_free(AlarmState[Alarm_i].EventPtr); AlarmState[Alarm_i].EventPtr = NULL; //ROM_IntMasterEnable(); } AlarmState[Alarm_i].Status = false; AlarmHandlingConsequentActions(Alarm_i, DEBUG_LOG_CATEGORY__Info); - ReportWithPackageFilter(AlarmFilter,"Alarm OFF ", __FILE__,__LINE__,AlarmItem[Alarm_i].EventType, RpMessage, 0, Alarm_i); } } } @@ -1579,143 +1585,7 @@ uint32_t StopEventsNotificationRequestFunc(MessageContainer* requestContainer) my_free(responseContainer.data.data); SendChars(container_buffer, container_size); -return OK; - - -/* function : - * ------------- - * DrawerFansStatus // uint32_t getDrawerFansStatus(void) 5 fans OK or NotOK - * SystemFansStatus // uint32_t getSystemFansStatus(void) 2 fans OK or NotOK - * Fans_Speed_RPM[MAX_FANS] // - * - * Read_Dryer_Fan_Tacho // uint32_t Read_Dryer_Fan_Tacho() - * Control_Dryer_Fan(bool StartStop, uint8_t PWM_Command_Precent) //uint32_t Control_Dryer_Fan(bool StartStop, uint8_t PWM_Command_Precent); - * - * excell alarm ver9 from Nadav - * ---------------------------- - * 2009 MACHINE_FANS_RPM_TOO_LOW Warning - * 2010 MACHINE_FANS_STOPPED Critical - * 2011 ELECTRICAL_CABINET_FANS_RPM_TOO_LOW Warning - * 2012 ELECTRICAL_CABINET_FANS_STOPPED Critical - * 4015 DRYER_FAN_RPM_TOO_LOW Warning - * 4016 DRYER_FAN_STOPPED Critical - * - * - * - * - - - - - #define MACHINE_FANS_MIN_RPM 1000 - #define MACHINE_FANS_STOP 0 - #define ELECTRICAL_CABINET_FANS_MIN_RPM 1000 - #define ELECTRICAL_CABINET_FANS_STOP 0 - #define DRYER_FAN_MIN_RPM 1000 - #define DRYER_FAN_STOP 0 - - typedef enum - { - MACHINE_FANS, - ELECTRICAL_CABINET_FANS, -// ELECTRICAL_CABINET_FAN_BIG, -// ELECTRICAL_CABINET_FAN_SMALL1, -// ELECTRICAL_CABINET_FAN_SMALL2, -// ELECTRICAL_CABINET_FAN_SMALL3, -// ELECTRICAL_CABINET_FAN_SMALL4, - DRYER_FAN, - NUM_OF_FANS, - } Fans_t; - - - ----- 2009 : ------- - {eOneSecond, // uint16_t Frequency; - ALARM_SOURCE_TYPE__TachoAlarm, // AlarmSourceType AlarmSource; - MACHINE_FANS , // uint16_t DeviceId; - MACHINE_FANS , // uint8_t ModuleDeviceId; - MACHINE_FANS_MIN_RPM , // uint16_t AlarmValue; - FALSE , // bool AlarmDirection; - DEBUG_LOG_CATEGORY__Warning , // DebugLogCategory Severity; - 0xFF , // uint16_t Predecessor; - 5 , // uint8_t DebounceValue; - EVENT_TYPE__MACHINE_FANS_RPM_TOO_LOW // EventType EventType; - }, - - ----- 2010 : ------- - {eOneSecond, // uint16_t Frequency; - ALARM_SOURCE_TYPE__TachoAlarm, // AlarmSourceType AlarmSource; - MACHINE_FANS , // uint16_t DeviceId; - MACHINE_FANS , // uint8_t ModuleDeviceId; - MACHINE_FANS_STOP , // uint16_t AlarmValue; - FALSE , // bool AlarmDirection; - DEBUG_LOG_CATEGORY__Critical , // DebugLogCategory Severity; - 0xFF , // uint16_t Predecessor; - 5 , // uint8_t DebounceValue; - EVENT_TYPE__MACHINE_FANS_STOPPED // EventType EventType; - }, - - ----- 2011 : ------- - {eOneSecond, // uint16_t Frequency; - ALARM_SOURCE_TYPE__TachoAlarm, // AlarmSourceType AlarmSource; - ELECTRICAL_CABINET_FANS , // uint16_t DeviceId; - ELECTRICAL_CABINET_FANS , // uint8_t ModuleDeviceId; - ELECTRICAL_CABINET_FANS_MIN_RPM , // uint16_t AlarmValue; - FALSE , // bool AlarmDirection; - DEBUG_LOG_CATEGORY__Warning , // DebugLogCategory Severity; - 0xFF , // uint16_t Predecessor; - 5 , // uint8_t DebounceValue; - EVENT_TYPE__ELECTRICAL_CABINET_FANS_RPM_TOO_LOW // EventType EventType; - }, - - ----- 2012 : ------- - {eOneSecond, // uint16_t Frequency; - ALARM_SOURCE_TYPE__TachoAlarm, // AlarmSourceType AlarmSource; - ELECTRICAL_CABINET_FANS , // uint16_t DeviceId; - ELECTRICAL_CABINET_FANS , // uint8_t ModuleDeviceId; - ELECTRICAL_CABINET_FANS_STOP , // uint16_t AlarmValue; - FALSE , // bool AlarmDirection; - DEBUG_LOG_CATEGORY__Critical , // DebugLogCategory Severity; - 0xFF , // uint16_t Predecessor; - 5 , // uint8_t DebounceValue; - EVENT_TYPE__ELECTRICAL_CABINET_FANS_STOPPED // EventType EventType; - }, - - - ----- 2015 : ------- - {eOneSecond, // uint16_t Frequency; - ALARM_SOURCE_TYPE__TachoAlarm, // AlarmSourceType AlarmSource; - DRYER_FAN , // uint16_t DeviceId; - DRYER_FAN , // uint8_t ModuleDeviceId; - DRYER_FAN_MIN_RPM , // uint16_t AlarmValue; - FALSE , // bool AlarmDirection; - DEBUG_LOG_CATEGORY__Warning , // DebugLogCategory Severity; - 0xFF , // uint16_t Predecessor; - 5 , // uint8_t DebounceValue; - EVENT_TYPE__DRYER_FAN_RPM_TOO_LOW // EventType EventType; - }, - - ----- 2016 : ------- - {eOneSecond, // uint16_t Frequency; - ALARM_SOURCE_TYPE__TachoAlarm, // AlarmSourceType AlarmSource; - DRYER_FAN , // uint16_t DeviceId; - DRYER_FAN , // uint8_t ModuleDeviceId; - DRYER_FAN_STOP , // uint16_t AlarmValue; - FALSE , // bool AlarmDirection; - DEBUG_LOG_CATEGORY__Critical , // DebugLogCategory Severity; - 0xFF , // uint16_t Predecessor; - 5 , // uint8_t DebounceValue; - EVENT_TYPE__DRYER_FAN_STOPPED // EventType EventType; - }, - - {eOneSecond, ALARM_SOURCE_TYPE__TachoAlarm,MACHINE_FANS , MACHINE_FANS , MACHINE_FANS_MIN_RPM , FALSE , DEBUG_LOG_CATEGORY__Warning , 0xFF, 5, EVENT_TYPE__MACHINE_FANS_RPM_TOO_LOW }, - {eOneSecond, ALARM_SOURCE_TYPE__TachoAlarm,MACHINE_FANS , MACHINE_FANS , MACHINE_FANS_STOP , FALSE , DEBUG_LOG_CATEGORY__Critical, 0xFF, 5, EVENT_TYPE__MACHINE_FANS_STOPPED }, - {eOneSecond, ALARM_SOURCE_TYPE__TachoAlarm, ELECTRICAL_CABINET_FANS, ELECTRICAL_CABINET_FANS, ELECTRICAL_CABINET_FANS_MIN_RPM, FALSE , DEBUG_LOG_CATEGORY__Warning , 0xFF, 5, EVENT_TYPE__ELECTRICAL_CABINET_FANS_RPM_TOO_LOW }, - {eOneSecond, ALARM_SOURCE_TYPE__TachoAlarm, ELECTRICAL_CABINET_FANS, ELECTRICAL_CABINET_FANS, ELECTRICAL_CABINET_FANS_STOP , FALSE , DEBUG_LOG_CATEGORY__Critical, 0xFF, 5, EVENT_TYPE__ELECTRICAL_CABINET_FANS_STOPPED }, - {eOneSecond, ALARM_SOURCE_TYPE__TachoAlarm, DRYER_FAN , DRYER_FAN , DRYER_FAN_MIN_RPM , FALSE , DEBUG_LOG_CATEGORY__Warning , 0xFF, 5, EVENT_TYPE__DRYER_FAN_RPM_TOO_LOW }, - {eOneSecond, ALARM_SOURCE_TYPE__TachoAlarm, DRYER_FAN , DRYER_FAN , DRYER_FAN_STOP , FALSE , DEBUG_LOG_CATEGORY__Critical, 0xFF, 5, EVENT_TYPE__DRYER_FAN_STOPPED }, - - -* */ + return OK; } diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index 8897dfdbb..76b7aa7a1 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -567,6 +567,8 @@ float MillisecGetPressures (int SensorId) void setRapidPressureRead(bool value) { RapidPressureRead = value; + if (GetDiagnosticMode() == Diagnostic_Extreme_Mode) + RapidPressureRead = true; } uint16_t PumpCounter = 0; diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c index 6e8b50c02..43a7b779f 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c @@ -70,7 +70,7 @@ DiagnosticsMonitors DiagnosticsMonitor = DIAGNOSTICS_MONITORS__INIT; #define DIAGNOSTICS_LIMIT 3 #define DIAGNOSTICS_DANCER_LIMIT 30 int DiagnosticsIndex = 0; -int DiagnosticCollectionLimit = 2; //number of data samples to collect before sending to the host +int DiagnosticCollectionLimit = 3; //number of data samples to collect before sending to the host //int DiagnosticLimit = eHundredMillisecond; //frequency of data collection //int DiagnosticFastLimit = eTenMillisecond; //frequency of data collection int DiagnosticLimit =eHundredMillisecond; //frequency of data collection @@ -221,6 +221,11 @@ void SetDiagnosticMode(Diagnostic_Mode Mode) DiagnosticMode = Mode; REPORT_MSG(Mode,"Diagnostic Mode set"); } +Diagnostic_Mode GetDiagnosticMode(void) +{ + return DiagnosticMode; +} + void SetDiagnosticCollectionLimit(int limit) { @@ -228,11 +233,12 @@ void SetDiagnosticCollectionLimit(int limit) DiagnosticCollectionLimit = limit; DiagnosticLimit =eHundredMillisecond; //frequency of data collection - if (DiagnosticMode <= Diagnostic_Normal_Mode) + /*if (DiagnosticMode <= Diagnostic_Normal_Mode) { DiagnosticCollectionLimit = 1; //overrule - send at least once every second DiagnosticLimit =eOneSecond; //frequency of data collection - } + }*/ + REPORT_MSG(DiagnosticCollectionLimit,"Diagnostic limit set"); } uint8_t HeaterCounterIndex[HEATER_TYPE_MAX_HEATERS]= {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; @@ -496,6 +502,21 @@ void DiagnosticOneMinuteCollection(void) 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)); +#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)); @@ -503,7 +524,7 @@ void DiagnosticOneSecCollection(void) 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 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)); @@ -512,9 +533,9 @@ void DiagnosticOneSecCollection(void) dispensermotorfrequency[i][DiagnosticsIndex] = IdsGetMotorSpeed(i); //dispensermotorfrequency[i][DiagnosticsIndex] = IDS_Dispenser_Data[i].consumedinnanolitter; - dispenserspressure[i][DiagnosticsIndex] = GetDispenserPressure(i); //Read_MidTank_Pressure_Sensor - - MidTankpressure[i][0] = Get_MidTank_Pressure_Sensor(i); + if (DiagnosticMode < Diagnostic_Extended_Mode) + dispenserspressure[i][DiagnosticsIndex] = GetDispenserPressure(i); //Read_MidTank_Pressure_Sensor + MidTankpressure[i][0] = Get_MidTank_Pressure_Sensor(i); } } void Diagnostic100msecCollection(void) @@ -537,31 +558,11 @@ void Diagnostic100msecCollection(void) DiagnosticLoadMotor(WINDER_MOTOR, ThreadGetMotorSpeed (WINDER_MOTOR)); DiagnosticLoadMotor(SCREW_MOTOR, ThreadGetMotorSpeed (SCREW_MOTOR)); } + for (i=0;ibreaksensorlimit = 10; EmbeddedParameters->has_diagnosticcollectionlimit = true; - EmbeddedParameters->diagnosticcollectionlimit = 1; + EmbeddedParameters->diagnosticcollectionlimit = 3; EmbeddedParameters->has_overheatcountlimit = true; EmbeddedParameters->overheatcountlimit = 3; EmbeddedParameters->has_underheatcountlimit = true; diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index 51498dc04..b879a1404 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -216,6 +216,8 @@ uint32_t InternalId2PT100Id[MAX_INTERNAL_ALARMS] = {TEMP_SENSE_AN_ENCLOSURETEMP1 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}; +EventType InternalTempEventType[MAX_INTERNAL_ALARMS] = {EVENT_TYPE__MACHINE_INTERNAL_OVERTEMPERATURE,EVENT_TYPE__ELECTRICAL_CABINET_OVERTEMPERATURE,EVENT_TYPE__MACHINE_INTERNAL_OVERTEMPERATURE_2}; + uint32_t HeatersTestInternalAlarmsCBFunction(uint32_t IfIndex, uint32_t readValue) { int index=HEATER_TYPE_MAX_HEATERS; @@ -250,7 +252,7 @@ uint32_t HeatersTestInternalAlarmsCBFunction(uint32_t IfIndex, uint32_t readValu InternalAlarmActive[index] = true; ReportWithPackageFilter(HeatersFilter,"Internal Over the max temperature, turned off",__FILE__,index,readValue,RpWarning, 0,0); - AlarmHandlingSetAlarm(EVENT_TYPE__MACHINE_INTERNAL_OVERTEMPERATURE, true); + AlarmHandlingSetAlarm(InternalTempEventType[index], true); } } } @@ -264,7 +266,7 @@ uint32_t HeatersTestInternalAlarmsCBFunction(uint32_t IfIndex, uint32_t readValu InternalAlarmActive[index] = true; ReportWithPackageFilter(HeatersFilter,"Internal Over the max temperature, turned off",__FILE__,index,readValue,RpWarning, 0,0); - AlarmHandlingSetAlarm(EVENT_TYPE__MACHINE_INTERNAL_OVERTEMPERATURE, false); + AlarmHandlingSetAlarm(InternalTempEventType[index], false); } } diff --git a/Software/Embedded_SW/Embedded/Software Release Notes.txt b/Software/Embedded_SW/Embedded/Software Release Notes.txt index 8e4424747..6a00adf48 100644 --- a/Software/Embedded_SW/Embedded/Software Release Notes.txt +++ b/Software/Embedded_SW/Embedded/Software Release Notes.txt @@ -1,17 +1,39 @@ Embedded SW Release note - Version 1.4.6.0 ============================================================= +Common: +logs: better control (filter messages and priorities) + +Drivers: I2C reading task for better handling of slow I2C interactions (head etc) +observe and handle FPGA watchdog reset (report, reinitialize motors) + +Modules: textual names for control calls to help debuggng add midtank and dispenser ink content to diagnostics -*observe and handle FPGA watchdog reset (reinitialize motors) +alarm handling: + 7midtamk overflow, + *fix current alarms, + *consequent actions and job verification, + *critical alarms, + *use alarms file (remote update) +IDS: + *dispenser data, + *improve autofill on job start, + *puller_tension from RML as cleaner speed, + *handle inactive dispenser pressure, + *dispensers PID preparation, + *bring dispensers to first segment pressures before job +Thread: + *real dryer rampup. + *dancers from EEPROM only. + *insure rockers motors voltage value; -alarm handling: midtamk overflow, fix current alarms, consequent actions and job verification, critical alrms. -diagnostics: improved -*heaters: band alarm fixed -IDS: *dispenser data, *improve autofill on job start, *puller_tension from RML as cleaner speed -Thread: *real dryer rampup. dancers from EEPROM only. *insure rockers motors voltage value; -print: *prevent job on open covers (dryer, head) +State machines: +print: *prevent job on open covers (dryer, head) (suspended until new head) +preparation for new head: +I2C scheduling (control, task) +larger number of heaters (heaters module, control, diagnostics, alarms. Embedded SW Release note - Version 1.4.5.104 (alpha 1 ++) ============================================================= -- cgit v1.3.1