diff options
| author | Victoria Plitt <Victoria.Plitt@twine-s.com> | 2020-06-10 17:09:07 +0300 |
|---|---|---|
| committer | Victoria Plitt <Victoria.Plitt@twine-s.com> | 2020-06-10 17:09:07 +0300 |
| commit | d28f4ab232aaec838d80335b98f906fbddc21dca (patch) | |
| tree | 2678fa30592d011bfb51235f476f8abf7d8985d8 | |
| parent | a622ca09b672048511cc65fd97c3847de7425bc5 (diff) | |
| parent | 3b13593f574debc58892a4d61a344624cc8e2b4a (diff) | |
| download | Tango-d28f4ab232aaec838d80335b98f906fbddc21dca.tar.gz Tango-d28f4ab232aaec838d80335b98f906fbddc21dca.zip | |
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
48 files changed, 539 insertions, 138 deletions
diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c index 1b53a826b..65328efb3 100644 --- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c +++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c @@ -60,6 +60,7 @@ uint32_t ReadBytes = 0; Task_Handle CommRxTaskHandle; extern Semaphore_Handle FFS_Sem; +extern Semaphore_Handle FileUpload_sem_param; ErrorCode getErrorCode(FRESULT Fresult) { @@ -101,7 +102,7 @@ uint32_t FileUploadRequestFunc(MessageContainer* requestContainer) Fresult = FR_DENIED; else { - if (Semaphore_pend(FFS_Sem, BIOS_NO_WAIT)) + if (Semaphore_pend(FileUpload_sem_param, BIOS_NO_WAIT)) { CommRxTaskHandle = Task_self(); Task_setPri(CommRxTaskHandle, 2); @@ -125,7 +126,7 @@ uint32_t FileUploadRequestFunc(MessageContainer* requestContainer) { my_free (UploadFileHandle); UploadFileHandle = 0; - Semaphore_post(FFS_Sem); + Semaphore_post(FileUpload_sem_param); } } else @@ -162,9 +163,14 @@ uint32_t FileChunkUploadCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) UploadFileHandle = 0; FileReceivedLength = 0; FileDone = true; + Task_setPri(CommRxTaskHandle, 9); + Semaphore_post(FileUpload_sem_param); + //Report("Task_setPri", __FILE__, __LINE__, 9, RpWarning, (int)CommRxTaskHandle, 0); if (SafeRemoveControlCallback(Chunk_ControlId, FileChunkUploadCallBackFunction )==OK) Chunk_ControlId = 0xFF; + return OK; + } uint32_t FileChunkUploadRequestFunc(MessageContainer* requestContainer) @@ -257,7 +263,7 @@ uint32_t FileChunkUploadRequestFunc(MessageContainer* requestContainer) if (FileDone == true) { Task_setPri(CommRxTaskHandle, 9); - Semaphore_post(FFS_Sem); + Semaphore_post(FileUpload_sem_param); //Report("Task_setPri", __FILE__, __LINE__, 9, RpWarning, (int)CommRxTaskHandle, 0); } return OK; @@ -273,7 +279,7 @@ void FileChunkUploadError(void) FileReceivedLength = 0; FileDone = true; Task_setPri(CommRxTaskHandle, 9); - Semaphore_post(FFS_Sem); + Semaphore_post(FileUpload_sem_param); } } uint32_t FileDownloadRequestFunc(MessageContainer* requestContainer) diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c b/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c index f39f6a5eb..013a06e22 100644 --- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c +++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c @@ -32,7 +32,6 @@ #include "Modules/AlarmHandling/AlarmHandling.h" #include "modules/General/process.h" -extern Semaphore_Handle FFS_Sem; int NumberOfFiles = 0,CurrentRunningFile; int CurrentFileSize = 0; diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/DiagnosticsMonitors.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/DiagnosticsMonitors.pb-c.c index f8b36e663..14b93a98c 100644 --- a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/DiagnosticsMonitors.pb-c.c +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/DiagnosticsMonitors.pb-c.c @@ -52,7 +52,7 @@ void diagnostics_monitors__free_unpacked assert(message->base.descriptor == &diagnostics_monitors__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -static const ProtobufCFieldDescriptor diagnostics_monitors__field_descriptors[88] = +static const ProtobufCFieldDescriptor diagnostics_monitors__field_descriptors[90] = { { "", @@ -1110,6 +1110,30 @@ static const ProtobufCFieldDescriptor diagnostics_monitors__field_descriptors[88 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "", + 89, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_DOUBLE, + offsetof(DiagnosticsMonitors, n_headblower1airflow), + offsetof(DiagnosticsMonitors, headblower1airflow), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "", + 90, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_DOUBLE, + offsetof(DiagnosticsMonitors, n_headblower2airflow), + offsetof(DiagnosticsMonitors, headblower2airflow), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, }; static const unsigned diagnostics_monitors__field_indices_by_name[] = { 38, /* field[38] = BlowerVoltage */ @@ -1150,6 +1174,8 @@ static const unsigned diagnostics_monitors__field_indices_by_name[] = { 25, /* field[25] = FilterDeltaPressure */ 85, /* field[85] = GasSensor */ 13, /* field[13] = HeadAirFlow */ + 88, /* field[88] = HeadBlower1AirFlow */ + 89, /* field[89] = HeadBlower2AirFlow */ 78, /* field[78] = HeadBlowerVoltage1 */ 79, /* field[79] = HeadBlowerVoltage2 */ 80, /* field[80] = HeadCoverHeater1Current */ @@ -1204,7 +1230,7 @@ static const unsigned diagnostics_monitors__field_indices_by_name[] = { static const ProtobufCIntRange diagnostics_monitors__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 88 } + { 0, 90 } }; const ProtobufCMessageDescriptor diagnostics_monitors__descriptor = { @@ -1214,7 +1240,7 @@ const ProtobufCMessageDescriptor diagnostics_monitors__descriptor = "", "", sizeof(DiagnosticsMonitors), - 88, + 90, diagnostics_monitors__field_descriptors, diagnostics_monitors__field_indices_by_name, 1, diagnostics_monitors__number_ranges, diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/DiagnosticsMonitors.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/DiagnosticsMonitors.pb-c.h index 172fb5e24..a6a28e4d0 100644 --- a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/DiagnosticsMonitors.pb-c.h +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/DiagnosticsMonitors.pb-c.h @@ -203,10 +203,14 @@ struct _DiagnosticsMonitors double *incomingvoltage; size_t n_wastelevel; double *wastelevel; + size_t n_headblower1airflow; + double *headblower1airflow; + size_t n_headblower2airflow; + double *headblower2airflow; }; #define DIAGNOSTICS_MONITORS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&diagnostics_monitors__descriptor) \ - , 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL } + , 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL, 0,NULL } /* DiagnosticsMonitors methods */ diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareBlowerType.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareBlowerType.pb-c.c index 0cc200a76..079666ee2 100644 --- a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareBlowerType.pb-c.c +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareBlowerType.pb-c.c @@ -7,22 +7,26 @@ #endif #include "HardwareBlowerType.pb-c.h" -static const ProtobufCEnumValue hardware_blower_type__enum_values_by_number[4] = +static const ProtobufCEnumValue hardware_blower_type__enum_values_by_number[6] = { { "", "", 0 }, { "", "", 1 }, { "", "", 2 }, { "", "", 3 }, + { "", "", 4 }, + { "", "", 5 }, }; static const ProtobufCIntRange hardware_blower_type__value_ranges[] = { -{0, 0},{0, 4} +{0, 0},{0, 6} }; -static const ProtobufCEnumValueIndex hardware_blower_type__enum_values_by_name[4] = +static const ProtobufCEnumValueIndex hardware_blower_type__enum_values_by_name[6] = { { "", 0 }, { "", 1 }, { "", 2 }, { "", 3 }, + { "", 5 }, + { "", 4 }, }; const ProtobufCEnumDescriptor hardware_blower_type__descriptor = { @@ -31,9 +35,9 @@ const ProtobufCEnumDescriptor hardware_blower_type__descriptor = "", "", "", - 4, + 6, hardware_blower_type__enum_values_by_number, - 4, + 6, hardware_blower_type__enum_values_by_name, 1, hardware_blower_type__value_ranges, diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareBlowerType.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareBlowerType.pb-c.h index b530430ff..84beee442 100644 --- a/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareBlowerType.pb-c.h +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Hardware/HardwareBlowerType.pb-c.h @@ -23,7 +23,9 @@ typedef enum _HardwareBlowerType { HARDWARE_BLOWER_TYPE__DefaultBlower = 0, HARDWARE_BLOWER_TYPE__HeadBlower1 = 1, HARDWARE_BLOWER_TYPE__HeadBlower2 = 2, - HARDWARE_BLOWER_TYPE__WHSBlower2 = 3 + HARDWARE_BLOWER_TYPE__WHSBlower2 = 3, + HARDWARE_BLOWER_TYPE__WHSSmallFans = 4, + HARDWARE_BLOWER_TYPE__WHSLargeFans = 5 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(HARDWARE_BLOWER_TYPE) } HardwareBlowerType; diff --git a/Software/Embedded_SW/Embedded/DataDef.h b/Software/Embedded_SW/Embedded/DataDef.h index a50889e47..ca8217683 100644 --- a/Software/Embedded_SW/Embedded/DataDef.h +++ b/Software/Embedded_SW/Embedded/DataDef.h @@ -165,6 +165,7 @@ enum #define STOPPED 0 #define MOVING 1 +extern int InitFailures; /* #define CurrentMotDriver 0x08 @@ -391,6 +392,8 @@ typedef enum }WHS_TYPE; extern uint8_t WHS_Type; +extern uint8_t SmallFansCfg; +extern uint8_t LargeFansCfg; bool Is_PP_Machine(void); diff --git a/Software/Embedded_SW/Embedded/Drivers/ADC_Sampling/ADC_DispPressSens.c b/Software/Embedded_SW/Embedded/Drivers/ADC_Sampling/ADC_DispPressSens.c index 0e3cecf99..f2cc8d093 100644 --- a/Software/Embedded_SW/Embedded/Drivers/ADC_Sampling/ADC_DispPressSens.c +++ b/Software/Embedded_SW/Embedded/Drivers/ADC_Sampling/ADC_DispPressSens.c @@ -73,7 +73,7 @@ float CalculateDispenserPressure (int DispenserId) { data = Bits_Min;//40mA 0Bar //if (isDispenserInConfig(DispenserId)) - // Report("Dispenser - Reading wrong data from ADC",__FILE__,__LINE__,DispenserId,RpWarning,(int)data,0); + // Report("Dispenser - Reading wrong data from ADC",__FILE__,__LINE__,DispenserId,RpWarning,(int)data,0); } temp = a[DispenserId] * data + b[DispenserId]; diff --git a/Software/Embedded_SW/Embedded/Drivers/Flash_Memory/FATFS/Control_File_System.c b/Software/Embedded_SW/Embedded/Drivers/Flash_Memory/FATFS/Control_File_System.c index 7707584c9..b51173607 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Flash_Memory/FATFS/Control_File_System.c +++ b/Software/Embedded_SW/Embedded/Drivers/Flash_Memory/FATFS/Control_File_System.c @@ -92,6 +92,7 @@ static FATFS g_sFatFs; //static int response ; extern Semaphore_Handle FFS_Sem; +extern Semaphore_Handle FileUpload_sem_param; char FlashReadstring [35]; char FlashReadstring1 [35]; @@ -107,7 +108,6 @@ FRESULT Init_Flash_File_System(bool Need_mkfs) //in C:\TI\TivaWare_C_Series-2.1.2.111\third_party\fatfs\src\ffconf.h #endif - Semaphore_post(FFS_Sem); // Mount the file system, using logical disk 0. iFResult = f_mount(0, &g_sFatFs); if(iFResult != FR_OK) @@ -132,6 +132,7 @@ FRESULT Init_Flash_File_System(bool Need_mkfs) iFResult = f_mkfs( 0, 0, 512 ); //Create File System on the Drive Semaphore_post(FFS_Sem); + Semaphore_post(FileUpload_sem_param); return iFResult; } diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/EEPROM/Head_EEPROM.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/EEPROM/Head_EEPROM.c index fa584a683..d7f0c8277 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/EEPROM/Head_EEPROM.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/EEPROM/Head_EEPROM.c @@ -6,6 +6,7 @@ */ #include "include.h" #include "Head_EEPROM.h" +#include "modules/AlarmHandling/AlarmHandling.h" #include <Drivers/I2C_Communication/I2C.h> #include "PMR/Diagnostics/EventType.pb-c.h" #include "../I2C_Head_Mux.h" diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.c index 8531b1d9c..1a161b9f4 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.c @@ -422,6 +422,12 @@ uint32_t HeadCard_Actuators_Control(ACTUATORS Act_ID, bool Direction) { uint32_t status = OK; + if(Head_I2C_EXP2_0x42.bits.OUTPUT_ACTLOW_ACT_RST == 0x00)//Disable movement + { + Head_I2C_EXP2_0x42.bits.OUTPUT_ACTLOW_ACT_RST = 0x01;//Enable movement + status |= Head_Write_IO_Reg(0x42,HIGH); + } + if(Act_ID == ACTIN)//0 { Head_I2C_EXP4_0x46.bits.OUTPUT_ACTLOW_ACTIN_ON = LOW; @@ -455,6 +461,46 @@ uint32_t HeadCard_Actuators_Control(ACTUATORS Act_ID, bool Direction) return status; } + +uint32_t HeadCard_Actuators_Stub(ACTUATORS Act_ID, bool Enable, bool Direction) +{ + uint32_t status = OK; + + if(Enable == true) + { + Head_I2C_EXP2_0x42.bits.OUTPUT_ACTLOW_ACT_RST = 0x01;//Enable movement + + Head_I2C_EXP4_0x46.bits.OUTPUT_ACT_DIR = Direction; + + if(Act_ID == ACTIN)//0 + { + Head_I2C_EXP4_0x46.bits.OUTPUT_ACTLOW_ACTIN_ON = LOW; + } + else//if(Act_ID == ACTOUT) 1 + { + Head_I2C_EXP4_0x46.bits.OUTPUT_ACTLOW_ACTOT_ON = LOW; + } + } + else + { + Head_I2C_EXP2_0x42.bits.OUTPUT_ACTLOW_ACT_RST = 0x00;//Disable movement + + if(Act_ID == ACTIN)//0 + { + Head_I2C_EXP4_0x46.bits.OUTPUT_ACTLOW_ACTIN_ON = HIGH; + } + else//if(Act_ID == ACTOUT) 1 + { + Head_I2C_EXP4_0x46.bits.OUTPUT_ACTLOW_ACTOT_ON = HIGH; + } + } + + status |= Head_Write_IO_Reg(0x42,HIGH); + status |= Head_Write_IO_Reg(0x46,LOW_AND_HIGH); + + return status; +} + /* bool HeadCard_Activate_Cover_LS = false; diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c index 6474dbf97..bebbe1365 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c @@ -42,6 +42,7 @@ typedef enum Head_Outputs_Writing, Head_Init_PT100, Actuators_Control, + Actuators_Control_Stub, Actuators_Disable, HeadFanControl, HeadMagnetAction, @@ -150,6 +151,19 @@ void Trigger_Head_Actuators_Control(uint32_t Act_ID, bool Active_Low_Pwr, bool D return; } +void Trigger_Head_Actuators_Stub(uint32_t Act_ID, bool Active_Low_Pwr, bool Direction) +{ + I2C_ReadingMessageStruc I2C_ReadingMessage; + + I2C_ReadingMessage.messageId = Actuators_Control_Stub; + I2C_ReadingMessage.parameter = Act_ID; + I2C_ReadingMessage.parameter2 = Active_Low_Pwr; + I2C_ReadingMessage.parameter3 = (uint8_t *)Direction; + if (I2C_ReadingMsgQ != NULL) + Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); + return; +} + void Trigger_Head_Actuators_Disable(void) { I2C_ReadingMessageStruc I2C_ReadingMessage; @@ -565,6 +579,9 @@ void I2C_ReadingTask(UArg arg0, UArg arg1) case Actuators_Control: HeadCard_Actuators_Control(I2C_ReadingMessage.parameter, /*(bool)I2C_ReadingMessage.parameter2,*/(bool)I2C_ReadingMessage.parameter3); break; + case Actuators_Control_Stub: + HeadCard_Actuators_Stub(I2C_ReadingMessage.parameter, (bool)I2C_ReadingMessage.parameter2,(bool)I2C_ReadingMessage.parameter3); + break; case Actuators_Disable: HeadCard_Actuators_Disable(); break; diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h index 23c2f13e0..8e31cf90f 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h @@ -46,6 +46,7 @@ void Trigger_PT100_Read(void); void Trigger_HeaterWriting(void); void Trigger_Head_Init_PT100(void); void Trigger_Head_Actuators_Control(uint32_t Act_ID, bool Active_Low_Pwr, bool Direction); +void Trigger_Head_Actuators_Stub(uint32_t Act_ID, bool Active_Low_Pwr, bool Direction); void Trigger_Head_Actuators_Disable(void); void Trigger_Head_Fan_Control(uint32_t Fan_ID, uint16_t PWM); void Trigger_InputsReading(void); diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/WHS_Fan.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/WHS_Fan.c index 40511fe98..7c854fe8b 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/WHS_Fan.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_EMC2302_Fan/WHS_Fan.c @@ -24,6 +24,8 @@ uint8_t Fan_Mux_Channel = UNKNOWN; bool Select_WHS_Fan_Mux_Channel(WHS_fan_num fan_number); uint8_t Select_Fan_Driver(WHS_fan_num fan_number); +uint8_t SmallFansCfg = 200; +uint8_t LargeFansCfg = 200; /* EMC2301 / EMC2302 diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c index f50689d61..3671ff4e0 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c @@ -354,7 +354,7 @@ double GetWHSAirFlow(uint8_t OR_Id) { case DRIER_FLOW_METER: - if (display_view == AVERAGE) + /*if (display_view == AVERAGE) { Q_value = get_average_Q(DRIER_FLOW_METER); } @@ -363,14 +363,15 @@ double GetWHSAirFlow(uint8_t OR_Id) //get_orf_3(&value); //Q_value = get_Q(value-orf3V0Value); Q_value = get_CurrentQ(DRIER_FLOW_METER); - } + }*/ + Q_value = get_CurrentQ(DRIER_FLOW_METER); //Q_value = get_average_Q(HEAD_FLOW_METER); break; case NU_FLOW_METER: get_orf_2(&value); break; case HEAD_FLOW_METER: - if (display_view == AVERAGE) + /*if (display_view == AVERAGE) { Q_value = get_average_Q(HEAD_FLOW_METER); } @@ -378,7 +379,8 @@ double GetWHSAirFlow(uint8_t OR_Id) { //get_orf_1(&value); Q_value = get_CurrentQ(HEAD_FLOW_METER); - } + }*/ + Q_value = get_CurrentQ(HEAD_FLOW_METER); break; default: break; diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.h index 1fdf91d11..5bf85fb6b 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.h @@ -52,6 +52,7 @@ bool Test_WHS_max11614(void); //double get_Q(int16_t num); double get_Q(WHS_Flow_Meter num); uint32_t WHS_MAX11614_Read_allADC(void); +double get_CurrentQ(WHS_Flow_Meter num); bool get_orf_1(uint16_t *value); bool get_orf_2(uint16_t *value); diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c index 4dc30752d..06c24d351 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c @@ -16,10 +16,26 @@ #include <Drivers/I2C_Communication/DAC/Blower.h> #include "drivers/I2C_Communication/ADC_MUX/ADC_MUX.h" +#include "modules/control/pidalgo.h" + #include "drivers/valves/valve.h" #include <Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.h> +#include "PMR/Hardware/HardwarePidControl.pb-c.h" + #include "StateMachines/Initialization/InitSequence.h" +typedef struct +{ + bool m_isEnabled; + float m_SetParam; + float m_mesuredParam; + float m_preError; + float m_integral; + float m_calculatedError; + bool m_isReady; + PID_Config_Params m_params; +}WhsControlConfig_t; +WhsControlConfig_t WHS_ControlData = {0}; bool Read_Max5805_device_ID(); double calc_Q_average(WHS_Flow_Meter ORF_id,double Q_temp); @@ -193,6 +209,24 @@ bool WHS_init_Blower() status |= WHS_Set_Volt_Blower_Control(0); // init with 0 volt ReportWithPackageFilter(WasteFilter,"------------ WHS_init_Blower (status) 0V-----------------", __FILE__,__LINE__, status, RpMessage, 0, 0); + WHS_ControlData.m_params.MAX = 200; + WHS_ControlData.m_params.MIN = -200; + WHS_ControlData.m_params.Kd = 0; + WHS_ControlData.m_params.Kp = 300; + WHS_ControlData.m_params.Ki = 600; + WHS_ControlData.m_params.IntegralErrorMultiplier = 100; + WHS_ControlData.m_params.ProportionalErrorMultiplier = 100; + WHS_ControlData.m_params.epsilon = 0; + WHS_ControlData.m_params.dt = 2; + //WHS_ControlData.m_ingnoreValue = PID_Request->sensorcorrectionadjustment; // the minimal change required to change the motor speed in pulses + WHS_ControlData.m_calculatedError = 0; + WHS_ControlData.m_integral = 0; + WHS_ControlData.m_isEnabled = true; + WHS_ControlData.m_isReady = true; + WHS_ControlData.m_mesuredParam = 0; + WHS_ControlData.m_preError = 0; + WHS_ControlData.m_SetParam = 5.0;//need to update SetParams on presegment stage + return status; } @@ -203,7 +237,7 @@ double WHS_Blower_Avarege(WHS_Flow_Meter ORF_id) double Q_temp = 0 ; double average_Q = 0.0; - switch (ORF_id) + /*switch (ORF_id) { case HEAD_FLOW_METER: // get_orf_1( &orifice_hex_value ); @@ -217,10 +251,10 @@ double WHS_Blower_Avarege(WHS_Flow_Meter ORF_id) break; default: break; - } + }*/ Q_temp = get_Q(ORF_id); - if (fabs(Q_temp - average_Q) > 1.75) + /*if (fabs(Q_temp - average_Q) > 1.75) { Report("------------ set_new_Q_average :-----------------", __FILE__,__LINE__, (int)(Q_temp*100), RpMessage, (int)(average_Q*100), 0); set_new_Q_average(ORF_id, Q_temp); @@ -229,11 +263,11 @@ double WHS_Blower_Avarege(WHS_Flow_Meter ORF_id) else { average_Q = calc_Q_average(ORF_id, Q_temp); - } + }*/ return average_Q; } -void set_new_Q_average(WHS_Flow_Meter ORF_id,double Q_temp) +/*void set_new_Q_average(WHS_Flow_Meter ORF_id,double Q_temp) { uint8_t i = 0; @@ -283,17 +317,6 @@ double calc_Q_average(WHS_Flow_Meter ORF_id,double Q_temp) sum_orifice_Q += average_orf1_Q_buff[i_head]; average_Q_orifice1 = sum_orifice_Q /ORF_BUFF_SIZE; Q_average = average_Q_orifice1; - /*if (i_head == 0) - { - for (ii = 0; ii<ORF_BUFF_SIZE;ii++) - { - Q_sum+=average_orf1_Q_buff[ii]; - } - t_avg = Q_sum/ORF_BUFF_SIZE; - usnprintf(whs_str, 150, "whs average shai's sum %d avg %d my sum %d avg %d",(int)(sum_orifice_Q*100),(int)(Q_average*100),(int)(Q_sum*100),(int)(t_avg*100)); - Report(whs_str, __FILE__,__LINE__, (int)(Q_temp*100), RpMessage, (int)(Q_average*100), 0); - - }*/ break; case DRIER_FLOW_METER: if (i_drier == ORF_BUFF_SIZE) @@ -331,9 +354,9 @@ double get_average_Q(WHS_Flow_Meter ORF_id) break; } return average_Q; -} +}*/ -bool Test_WHS_blower() +/*bool Test_WHS_blower() { bool status = OK; @@ -349,7 +372,7 @@ bool Test_WHS_blower() delayms(4000); return status; -} +}*/ bool IFS_Clearing_Suction = false; bool IFS_Clearing_SuctionWaiting = false; int midtank_cleared = NUM_OF_MIDTANKS; @@ -370,9 +393,10 @@ void WHS_Set_IFS_Clearing_Suction (int midtank) } #define MAX_ALLOWED_BLOWER_VOLTAGE 4300 +#define MIN_ALLOWED_BLOWER_VOLTAGE 2000 void SendLimitedBlowerControl(int mV) { - if (mV<=MAX_ALLOWED_BLOWER_VOLTAGE) + if ((mV<=MAX_ALLOWED_BLOWER_VOLTAGE)&&(mV>=MIN_ALLOWED_BLOWER_VOLTAGE)) Control_Voltage_To_Blower(mV); else Report("------------ Controlled voltage over the maximum - refused-----------------", __FILE__,__LINE__, (int)mV, RpMessage, MAX_ALLOWED_BLOWER_VOLTAGE, 0); @@ -381,14 +405,15 @@ void SendLimitedBlowerControl(int mV) #define STEP_100 100 //todo define the correct number #define STEP_10 10 //todo define the correct number #define STEP_1 1 //todo define the correct number +uint32_t WHS_Pid_Testing_Func(double setParam,double measuredParam); +uint16_t volt; bool WHS_Set_Blower_Control_Closed_Loop(double Q_value) { double current_dying_head_flow_Q = 0.0; - uint16_t volt; double tmp = 0.0; - current_dying_head_flow_Q = get_average_Q(HEAD_FLOW_METER); + current_dying_head_flow_Q = get_CurrentQ(HEAD_FLOW_METER);//get_average_Q(HEAD_FLOW_METER); ReportWithPackageFilter(WasteFilter,"------------ current_dying_head_flow_Q =-----------------", __FILE__,__LINE__, current_dying_head_flow_Q, RpMessage, 0, 0); ReportWithPackageFilter(WasteFilter,"------------ SET_DYEING_HEAD_ORRIFFICE_SENSOR =-----------------", __FILE__,__LINE__, (int)(Q_value * 1000), RpMessage, (int)(current_dying_head_flow_Q * 1000), 0); tmp = fabs((current_dying_head_flow_Q) - (Q_value)); @@ -417,9 +442,11 @@ bool WHS_Set_Blower_Control_Closed_Loop(double Q_value) } } - if (tmp > 0.05) + volt = getBlowerState(); + WHS_Pid_Testing_Func(Q_value,current_dying_head_flow_Q); + close_loop_time = 1; + if (0)//(tmp > 0.02) { - volt = getBlowerState(); //volt = g_MAX5805_device.CODE; if (current_dying_head_flow_Q < Q_value) { @@ -486,7 +513,7 @@ void WHS_Set_SetPoint_Q_value(double value) SetPoint_Q = value; CofigurationFlow = 0; WHS_Start_Blower_Control_Closed_Loop(); - Report("------------ SetPoint_Q_value :-----------------", __FILE__,__LINE__, (int)(SetPoint_Q*100), RpMessage, (int)CofigurationFlow, 0); + Report("------------ SetPoint_Q_value :-----------------", __FILE__,__LINE__, (int)(SetPoint_Q*100), RpMessage, (int)close_loop_time, 0); } void WHS_enable_control_loop(bool value) // 0=disable 1= enable @@ -541,4 +568,63 @@ uint16_t WHS_Get_Volt_Blower_Control() { return g_MAX5805_device.CODE; } +HardwarePidControl WHS_ControlInfo; +char whs_str[150]; +uint32_t WHS_Pid_Testing_Func(double setParam,double measuredParam) +{ + float calculated_speed; + WHS_ControlData.m_mesuredParam = measuredParam; + WHS_ControlData.m_SetParam = setParam; + WHS_ControlData.m_calculatedError = PIDAlgorithmCalculation((float)WHS_ControlData.m_SetParam , (float)WHS_ControlData.m_mesuredParam, + &WHS_ControlData.m_params, &WHS_ControlData.m_preError, &WHS_ControlData.m_integral); + calculated_speed = volt+WHS_ControlData.m_calculatedError; + /*if (calculated_speed > (volt + 100)) + calculated_speed = volt + 100; + if (calculated_speed < (volt - 100)) + calculated_speed = volt - 100;*/ + usnprintf(whs_str, 150, "WHS_Pid_Testing_Func meas %d set %d error %d integral %d blower %d", + (int)(measuredParam*100),(int)(setParam*100),(int)(WHS_ControlData.m_calculatedError*100),(int)(WHS_ControlData.m_integral*100),(int)(calculated_speed)); + Report(whs_str, __FILE__,__LINE__, (int)(calculated_speed), RpMessage, (int)(volt), 0); + SendLimitedBlowerControl(calculated_speed); + + return OK; +} +/*void WHS_Start_Pid_Testing(int DispenserId) +{ + DispenserPidControlId[DispenserId] = AddControlCallback(NULL, WHS_Pid_Testing_Func,eOneSecond , TemplateDataReadCBFunction,DispenserId,DispenserId, DispenserId ); + Report("WHS_Start_Pid_Testing ",__FILE__,__LINE__,DispenserId,RpWarning,(int)DispenserPidControlId[DispenserId],0); +} +void WHS_Stop_Pid_Testing(int DispenserId) +{ + //stop this control loop + RemoveControlCallback(DispenserPidControlId[DispenserId], WHS_Pid_Testing_Func ); + DispenserPidControlId[DispenserId] = 0xFF; + Report("WHS_Stop_Pid_Testing ",__FILE__,__LINE__,DispenserId,RpWarning,(int)DispenserPidControlId[DispenserId],0); +}*/ + +uint32_t WHS_PidRequestMessage(void* request) +{ + HardwarePidControl * PID_Request = request; + + WHS_ControlData.m_params.MAX = 200; + WHS_ControlData.m_params.MIN = -200; + WHS_ControlData.m_params.Kd = PID_Request->derivativetime; + WHS_ControlData.m_params.Kp = PID_Request->proportionalgain; + WHS_ControlData.m_params.Ki = PID_Request->integraltime; + WHS_ControlData.m_params.IntegralErrorMultiplier = PID_Request->setpointramprateorsoftstartramp; + WHS_ControlData.m_params.ProportionalErrorMultiplier = PID_Request->outputonoffhysteresisvalue; + WHS_ControlData.m_params.epsilon = PID_Request->epsilon; + WHS_ControlData.m_params.dt = PID_Request->controloutputtype; + //WHS_ControlData.m_ingnoreValue = PID_Request->sensorcorrectionadjustment; // the minimal change required to change the motor speed in pulses + WHS_ControlData.m_calculatedError = 0; + WHS_ControlData.m_integral = 0; + WHS_ControlData.m_isEnabled = true; + WHS_ControlData.m_isReady = true; + WHS_ControlData.m_mesuredParam = 0; + WHS_ControlData.m_preError = 0; + WHS_ControlData.m_SetParam = PID_Request->outputproportionalcycletime;//need to update SetParams on presegment stage + + + return OK; +} diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.h index 1bf096b90..f5bc52858 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.h @@ -32,6 +32,8 @@ double WHS_Get_Blower_Control_Closed_Loop_SetPoint(void); void WHS_Set_SetPoint_Q_value(double value); void WHS_enable_control_loop(bool value); +uint32_t WHS_PidRequestMessage(void* request); + extern double headairflow; /* from Blower.h * diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/EEPROM/WHS_EEPROM.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/EEPROM/WHS_EEPROM.c index 4e889f58c..c3f91775a 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/EEPROM/WHS_EEPROM.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/EEPROM/WHS_EEPROM.c @@ -12,6 +12,7 @@ #include "Drivers/I2C_Communication/WHS_Card/WHS_data.h" #include <Drivers/I2C_Communication/I2C_Task.h> #include "driverlib/i2c.h" +#include "modules/AlarmHandling/AlarmHandling.h" #include "PMR/stubs/StubWhsEEpromData.pb-c.h" #include "PMR/stubs/StubWhsEEpromRequest.pb-c.h" diff --git a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c index ee125c10b..2b08160a9 100644 --- a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c +++ b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c @@ -180,7 +180,7 @@ void MainCardEEpromReadRequestFunc(MessageContainer* requestContainer) StubMainCardEEpromReadRequest* request = stub_main_card_eeprom_read_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data); - StubMainCardEEpromReadResponse response = STUB_MAIN_CARD_EEPROM_WRITE_RESPONSE__INIT; + StubMainCardEEpromReadResponse response = STUB_MAIN_CARD_EEPROM_READ_RESPONSE__INIT; if (request->has_address == true) { diff --git a/Software/Embedded_SW/Embedded/Embedded.cfg b/Software/Embedded_SW/Embedded/Embedded.cfg index 666d9f9b3..10f94e08c 100644 --- a/Software/Embedded_SW/Embedded/Embedded.cfg +++ b/Software/Embedded_SW/Embedded/Embedded.cfg @@ -86,6 +86,12 @@ semaphore6Params.instance.name = "FFS_Sem"; semaphore6Params.mode = Semaphore.Mode_BINARY; Program.global.FFS_Sem = Semaphore.create(null, semaphore6Params); +var semaphore8Params = new Semaphore.Params(); +semaphore8Params.instance.name = "FileUpload_sem_param"; +semaphore8Params.mode = Semaphore.Mode_BINARY; +Program.global.FileUpload_sem_param = Semaphore.create(null, semaphore8Params); + + var semaphore7Params = new Semaphore.Params(); semaphore7Params.instance.name = "ReconnectSem"; semaphore7Params.mode = Semaphore.Mode_BINARY; diff --git a/Software/Embedded_SW/Embedded/Main.c b/Software/Embedded_SW/Embedded/Main.c index a5ddb694b..ed4948a28 100644 --- a/Software/Embedded_SW/Embedded/Main.c +++ b/Software/Embedded_SW/Embedded/Main.c @@ -135,6 +135,10 @@ Void errHook(Error_Block *eb) COMM_GREEN_LED_OFF; STATUS_RED_LED_ON; + //MCU_E2PromRead(EEPROM_INIT_FAILURE_COUNTER,&InitFailures); + InitFailures++; + MCU_E2PromProgram(EEPROM_INIT_FAILURE_COUNTER,InitFailures); + ACTIVITY_RED_LED_ON; COMM_RED_LED_ON; @@ -249,6 +253,7 @@ int main(void) LOG_ERROR(Version.m_minor,"Version change, do stuff"); FlashInit(); MCU_E2PromEmbeddedVersionProgram(); + MCU_E2PromProgram(EEPROM_INIT_FAILURE_COUNTER,0); } #endif diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c index 3b010247d..2d14f972e 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c @@ -420,12 +420,22 @@ return OK; } uint32_t Diagnostics_Set_Load_Arm_To_Stopper_Callback(uint32_t deviceID, uint32_t BusyFlag) { + MessageContainer responseContainer; + MotorHomingResponse response = MOTOR_HOMING_RESPONSE__INIT; Report("Diagnostics_Set_Load_Arm_To_Stopper time",__FILE__,__LINE__,msec_millisecondCounter,RpMessage,0,0); //NumberOfDrierLoaderCycles=0; //storeLoadArmParameters(); SetMotHome(HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM); //set this point as the spool home + 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); + my_free(responseContainer.data.data); + SendChars(container_buffer, container_size); + HomingToken[deviceID][0] = 0; return OK; } @@ -489,8 +499,19 @@ uint32_t Diagnostics_Dryer_UnLoading(void) } uint32_t Diagnostics_Dryer_MovetoEncoderPosition_Callback(uint32_t MotorId, uint32_t ReadValue) { + MessageContainer responseContainer; + MotorHomingResponse response = MOTOR_HOMING_RESPONSE__INIT; + //Report("Diagnostics_Dryer_MovetoEncoderPosition_Callback",__FILE__,__LINE__,0,RpMessage,CallbackCounter,0); MotorSetMaxSpeed (HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM, 200); + responseContainer = createContainer(MESSAGE_TYPE__MotorHomingResponse, 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); + my_free(responseContainer.data.data); + SendChars(container_buffer, container_size); + HomingToken[MotorId][0] = 0; return OK; } diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsJogging.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsJogging.c index 5b8866a28..0bb16c623 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsJogging.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsJogging.c @@ -39,6 +39,7 @@ uint32_t MotorJoggingRequestFunc(MessageContainer* requestContainer) { uint32_t status = OK; + bool allowedInJob =true; MessageContainer responseContainer; @@ -51,9 +52,23 @@ uint32_t MotorJoggingRequestFunc(MessageContainer* requestContainer) int speed = request->speed; if (speed == 0) speed = 150; + if (JobIsActive() == true) + { + switch (MotorId) + { + case HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_1:case HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_2:case HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_3:case HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_4: + case HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_5:case HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_6:case HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_7:case HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_8: + case HARDWARE_MOTOR_TYPE__MOTO_DRYER_DRIVING:case HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM:case HARDWARE_MOTOR_TYPE__MOTO_SCREW:case HARDWARE_MOTOR_TYPE__MOTO_WINDER: + case HARDWARE_MOTOR_TYPE__MOTO_LDRIVING:case HARDWARE_MOTOR_TYPE__MOTO_LLOADING:case HARDWARE_MOTOR_TYPE__MOTO_RDRIVING:case HARDWARE_MOTOR_TYPE__MOTO_RLOADING: + allowedInJob = false; + break; + default: + break; + } + } if (MotorId <= NUM_OF_MOTORS) { - if ((JobIsActive() == false)&&(isMotorConfigured(MotorId) == true)) + if ((allowedInJob == true)&&(isMotorConfigured(MotorId) == true)) { { switch (request->direction) diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c index 39d10bfc2..ae946ce1d 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c +++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c @@ -42,6 +42,7 @@ #include "drivers/I2C_Communication/ADC_MUX/ADC_MUX.h" #include "Drivers/I2C_Communication/I2C.h" #include "drivers/Flash_ram/MCU_E2Prom.h" +#include <Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.h> #include "StateMachines/Printing/PrintingSTM.h" #include "StateMachines/Initialization/InitSequence.h" @@ -396,6 +397,13 @@ uint32_t HWConfiguration(UploadHardwareConfigurationRequest* UploadRequest) LOG_ERROR (0, "Wrong Data Allocation"); return ERROR; } + /*if (InitFailures > 3) + { + Report("HWConfigurationInit repeated failure",__FILE__,__LINE__,(int)InitFailures,RpWarning,(int)EEPROM_INIT_FAILURE_COUNTER,0); + AlarmHandlingSetAlarm (EVENT_TYPE__MACHINE_STATE_HW_CONFIG_FAILED,ON); + return ERROR; + }*/ + HardwareConfiguration *request = UploadRequest->hardwareconfiguration; if (JobIsActive()) @@ -461,8 +469,12 @@ uint32_t HWConfiguration(UploadHardwareConfigurationRequest* UploadRequest) else if ((request->pidcontrols[PID_i]->hardwarepidcontroltype >= HARDWARE_PID_CONTROL_TYPE__MotorDryer)&& (request->pidcontrols[PID_i]->hardwarepidcontroltype < HARDWARE_PID_CONTROL_TYPE__Dispenser1)) status += MotorPidRequestMessage(request->pidcontrols[PID_i]); - else if (request->pidcontrols[PID_i]->hardwarepidcontroltype >= HARDWARE_PID_CONTROL_TYPE__Dispenser1) + else if ((request->pidcontrols[PID_i]->hardwarepidcontroltype >= HARDWARE_PID_CONTROL_TYPE__Dispenser1)&& + (request->pidcontrols[PID_i]->hardwarepidcontroltype < HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ7)) status += IDS_DispenserPidRequestMessage(request->pidcontrols[PID_i]); + else if (request->pidcontrols[PID_i]->hardwarepidcontroltype == HARDWARE_PID_CONTROL_TYPE__WasteControl) + status += WHS_PidRequestMessage(request->pidcontrols[PID_i]); + } } else @@ -528,6 +540,15 @@ uint32_t HWConfiguration(UploadHardwareConfigurationRequest* UploadRequest) break; } + if((request->blowers[Dispenser_i]->enabled)&&(request->blowers[Dispenser_i]->hardwareblowertype == HARDWARE_BLOWER_TYPE__WHSSmallFans)) + { + SmallFansCfg = request->blowers[Dispenser_i]->voltage; + } + if((request->blowers[Dispenser_i]->enabled)&&(request->blowers[Dispenser_i]->hardwareblowertype == HARDWARE_BLOWER_TYPE__WHSLargeFans)) + { + LargeFansCfg = request->blowers[Dispenser_i]->voltage; + } + } } ControlStart(); diff --git a/Software/Embedded_SW/Embedded/Modules/General/process.c b/Software/Embedded_SW/Embedded/Modules/General/process.c index 1e04ccb83..7bf72ba8c 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/process.c +++ b/Software/Embedded_SW/Embedded/Modules/General/process.c @@ -125,6 +125,11 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData) ReadAppAndProgram(PROCESS_PARAMETERS_MAP_IN_FLASH+4, Bytes, ProcessParams); REPORT_MSG(Bytes,"Bytes write to flash"); } + else + { + ProcessParams->headairflow = headairflow; + ReportWithPackageFilter(InitFilter,"HandleProcessParameters temp off blower on",__FILE__,(int)__LINE__,(int)ProcessParams->headairflow,RpWarning,(int)ProcessParametersKeep.headairflow,0); + } } HeatersStopControlOnHeatersOff(ProcessParams); dyeingspeed = ProcessParams->dyeingspeed; diff --git a/Software/Embedded_SW/Embedded/Modules/General/process.h b/Software/Embedded_SW/Embedded/Modules/General/process.h index 6318596f1..7cd592aad 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/process.h +++ b/Software/Embedded_SW/Embedded/Modules/General/process.h @@ -25,6 +25,8 @@ extern int32_t tableindex; extern double dryerbufferMeters; extern double dryerbufferCentimeters; +extern bool MachineReadyForHeating; + extern ProcessParameters ProcessParametersKeep; extern void ProcessRequestFunc(MessageContainer* requestContainer); diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index 380eb99ca..53501e3db 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -1149,7 +1149,7 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue) if ((readValue>(HeaterCmd[index].targettemperatue+800))&&(getIdleState() == false)) { - ReportWithPackageFilter(HeatersFilter, "AC OverHeating in progress",__FILE__,readValue,HeaterReady[index],RpError, HeaterAtTemp[index],0); + ReportWithPackageFilter(HeatersFilter, "AC OverHeating in progress",__FILE__,readValue,GetHeaterState(HEATER_TYPE__DryerMainHeater),RpError, GetHeaterState(HEATER_TYPE__DryerSecondaryHeater),0); ReportWithPackageFilter(HeatersFilter, "AC OverHeating PID",__FILE__,(int)HeaterPIDConfig[index].m_calculatedError,(int)HeaterPIDConfig[index].m_SetParam,RpError, (int)HeaterPIDConfig[index].m_integral,0); } // check if the read value is within the proportional band @@ -1636,9 +1636,10 @@ uint32_t DrierHeaterVoltageSetup(void) } else { - Z1Current = Get_Heaters_Current(HEATER_DRYER_CURRENT_1); + Z1Current = GetZone1RMSCurrent(DrierAcVoltage); //changed to assumed current as calculated on init Z2AssumedCurrent = GetZone2RMSCurrent(DrierAcVoltage); LimitCurrent = TotalCurrentLimit(DrierAcVoltage); + //hysteresis: activate if ((Z2AssumedCurrent+Z1Current)>LimitCurrent) { UseSecondaryDrierHeater = false; diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c index 2ffce8e46..81f4f9e7d 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c @@ -551,7 +551,7 @@ 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 - if (Special_Dispensers == true) + //if (Special_Dispensers == true) { if (ControlIdtoInactiveDispenserId[DispenserId] == 0xFF) ControlIdtoInactiveDispenserId[DispenserId] = AddControlCallback("IDS_Check_Pressure", IDS_Check_Pressure_Callback, eOneMinute,TemplateDataReadCBFunction ,DispenserId, 0, 0 ); diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c index 1c43872cc..a713ce355 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c @@ -725,6 +725,11 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue) Report("Setting pressure from RML feeder tension",__FILE__,__LINE__,(int)(cleanerFlow),RpWarning,(int)CleaningDispenserSpeed,0); CleaningDispenserSpeed = cleanerFlow; } + else if (cleanerFlow <= 10) + { + CleaningDispenserSpeed = 0; + EnableCleaning = false; + } for (Motor_i = 0;Motor_i < MAX_SYSTEM_DISPENSERS;Motor_i++) { diff --git a/Software/Embedded_SW/Embedded/Modules/IFS/ifs.h b/Software/Embedded_SW/Embedded/Modules/IFS/ifs.h index e89efdb13..7baced344 100644 --- a/Software/Embedded_SW/Embedded/Modules/IFS/ifs.h +++ b/Software/Embedded_SW/Embedded/Modules/IFS/ifs.h @@ -24,6 +24,7 @@ #define CartridgeInkTimeOutCallBackTime (eOneSecond * SECONDS_5) #define CartridgeInkCallBackTime eOneSecond #define MidTank_Pressure_EMPTY 0.3 //todo get from Moti the correct number (Oleg -> 300cc) +#define MidTank_PP_Pressure_EMPTY 0.6 //todo get from Moti the correct number (Oleg -> 300cc) #define CARTRIDGE_CAPATICY 1500 //todo get from Moti the correct number #define FULL 1000 //todo get from Moti the correct number diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c index 8d736f352..d28ca4f21 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c @@ -243,32 +243,32 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) if (WHS_Type == WHS_TYPE_NEW) { - display_byte = ((request->delay & 0x3000)>>12); + /*display_byte = ((request->delay & 0x3000)>>12); switch (display_byte) { case 0: - //stubManager.Run<ProgressResponse>("ProgressRequest" ,0x3EA, /*DisplayView =*/0x0000); // + //stubManager.Run<ProgressResponse>("ProgressRequest" ,0x3EA, 0x0000); // SetLeftDisplayView (HeadAVERAGE); SetWriteDisplayView(DrierAVERAGE); SetDisplayView (AVERAGE); break; case 1: - //stubManager.Run<ProgressResponse>("ProgressRequest" ,0x3EA, /*DisplayView =*/0x1000); // + //stubManager.Run<ProgressResponse>("ProgressRequest" ,0x3EA, 0x1000); // SetLeftDisplayView (HeadAVERAGE); SetWriteDisplayView(HeadCURRENT); break; case 2: - //stubManager.Run<ProgressResponse>("ProgressRequest" ,0x3EA, /*DisplayView =*/0x2000); // + //stubManager.Run<ProgressResponse>("ProgressRequest" ,0x3EA, 0x2000); // SetLeftDisplayView (DrierAVERAGE); SetWriteDisplayView(DrierCURRENT); break; case 3: - //stubManager.Run<ProgressResponse>("ProgressRequest" ,0x3EA, /*DisplayView =*/0x3000); // + //stubManager.Run<ProgressResponse>("ProgressRequest" ,0x3EA, 0x3000); // SetLeftDisplayView (HeadCURRENT); SetWriteDisplayView(DrierCURRENT); SetDisplayView (CURRENT); break; - } + }*/ A2D_data = (request->delay & 0x0FFF); switch(A2D_data )// get A2D @@ -306,11 +306,11 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) case 12: temp_double = get_Q(DRIER_FLOW_METER); break; - case 20: - temp_double = get_average_Q(HEAD_FLOW_METER); //HEAD + /*case 20: + //temp_double = get_average_Q(HEAD_FLOW_METER); //HEAD break; case 22: - temp_double = get_average_Q(DRIER_FLOW_METER); //Drier + //temp_double = get_average_Q(DRIER_FLOW_METER); //Drier break; case 11: @@ -333,7 +333,7 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) break; case 18: //tempu16 = 0; //get_cur_vlv2(&tempu16); - break; + break;*/ default : tempu16 = 0x500; //get_cur_vlv2(&tempu16); break; @@ -611,9 +611,44 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) 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 - 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); + if((request -> delay & 0x00000F) >1) + { + if((request -> delay & 0xFFFFFF) == 0xCAF002)//ACTUATOR-IN down without delay and without stop the actuator + { + Trigger_Head_Actuators_Stub(ACTIN, true, false); + } + else + if((request -> delay & 0xFFFFFF) == 0xCAF003)//ACTUATOR-IN up without delay and without stop the actuator + { + Trigger_Head_Actuators_Stub(ACTIN, true, true); + } + else + if((request -> delay & 0xFFFFFF) == 0xCAF008)//Stop ACTUATOR-IN + { + Trigger_Head_Actuators_Stub(ACTIN, false, true); + } + else + if((request -> delay & 0xFFFFFF) == 0xCAF102)//ACTUATOR-OUT down without delay and without stop the actuator + { + Trigger_Head_Actuators_Stub(ACTOT, true, false); + } + else + if((request -> delay & 0xFFFFFF) == 0xCAF103)//ACTUATOR-OUT up without delay and without stop the actuator + { + Trigger_Head_Actuators_Stub(ACTOT, true, true); + } + else + if((request -> delay & 0xFFFFFF) == 0xCAF108)//Stop ACTUATOR-OUT + { + Trigger_Head_Actuators_Stub(ACTOT, false, true); + } + } + else + { + //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 diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c index 349215d7d..c1d547f59 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c @@ -190,6 +190,9 @@ ProcessParametersClear.lblowerflow = 0; ProcessParametersClear.dyeingspeed = 40; ProcessParametersClear.dryerbufferlength = ProcessParametersKeep.dryerbufferlength; + ProcessParametersClear.pullertension = ProcessParametersKeep.pullertension; + ProcessParametersClear.windertension = ProcessParametersKeep.windertension; + if (HandleProcessParameters(&ProcessParametersClear,false)!= OK) { LOG_ERROR (LoadStages, "Thread_Load_Reduce_Heat failed"); @@ -286,7 +289,7 @@ { TimeoutsCounter = 0; load.color = fastBILNK; - usnprintf(LoadErrorMsg, 100, "Stage %s - motor %s timeout",LoadStagesStr[LoadStages], MotorStr[MotorId]); + usnprintf(LoadErrorMsg, 100, "Stage %s - %s timeout",LoadStagesStr[LoadStages], MotorStr[MotorId]); Report(LoadErrorMsg,__FILE__,__LINE__,LoadStages,RpWarning,TimeoutsCounter,0); LoadStatus = ERROR; @@ -647,6 +650,7 @@ { REPORT_MSG(LoadStages, "Thread Load State Machine step Thread_Load_Dryer_Loading"); + int CurrentlyLoaded = 0; if (dryerbufferlength) LoadArmRounds = (int)dryerbufferlength; if (LoadArmRounds <= 2) @@ -656,7 +660,12 @@ // OriginalMotorSpd_2PPS[FEEDER_MOTOR] = 1000; // CurrentControlledSpeed[FEEDER_MOTOR] = 1000; - //MCU_E2PromProgram(EEPROM_STORAGE_DRYER_CYCLES,LoadArmRounds); + MCU_E2PromRead(EEPROM_STORAGE_DRYER_CYCLES,&CurrentlyLoaded); + Report("Thread_Load_Dryer_Loading cycles",__FILE__,LoadArmRounds,CurrentlyLoaded,RpMessage,LoadArmRounds-CurrentlyLoaded,0); + if (CurrentlyLoaded) + { + LoadArmRounds -= CurrentlyLoaded; + } ThreadMotorIdToMotorId[FEEDER_MOTOR] = HARDWARE_MOTOR_TYPE__MOTO_RDRIVING ; ThreadMotorIdToMotorId[DRYER_MOTOR] = HARDWARE_MOTOR_TYPE__MOTO_DRYER_DRIVING; @@ -806,14 +815,14 @@ else //done enough cycles, go to the center point { MotorMovetoEncoderPosition(HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM,Thread_Load_Set_Load_Arm_To_Stopper_Callback,30000); - MCU_E2PromProgram(EEPROM_STORAGE_DRYER_CYCLES,LoadArmRounds-numberOfCycles); + MCU_E2PromProgram(EEPROM_STORAGE_DRYER_CYCLES,0); Report("Store Number of cycles in drier",__FILE__,__LINE__,numberOfCycles,RpMessage,LoadArmRounds,0); } } else //timeout or no movement { Report("Store Number of cycles in drier - halted",__FILE__,__LINE__,numberOfCycles,RpMessage,LoadArmRounds,0); - MCU_E2PromProgram(EEPROM_STORAGE_DRYER_CYCLES,LoadArmRounds-(numberOfCycles-1)); + MCU_E2PromProgram(EEPROM_STORAGE_DRYER_CYCLES,LoadArmRounds-numberOfCycles); TimeoutsCounter = 0; CallbackCounter = 0; /*if(PullerControlId != 0xFF) @@ -919,7 +928,12 @@ if (SecondTry == true) { - LoadArmRounds = 30; + MCU_E2PromRead(EEPROM_STORAGE_DRYER_CYCLES,&LoadArmRounds); + if (LoadArmRounds == 0) //prev trial stopped + { + LoadArmRounds = (int)dryerbufferlength; + } + //LoadArmRounds = 30; } else { @@ -1048,7 +1062,7 @@ } uint32_t ThreadLoadButton(THREAD_LOAD_STAGES_ENUM ReadValue) { - if (JobIsActive()) + if (JobIsActive()||(MachineReadyForHeating == false)) { Report("ThreadLoadButton called on job",__FILE__,__LINE__,LoadStages,RpMessage,ReadValue,0); return ERROR; diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c index 9ee2e1f37..ca41a8e70 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c @@ -149,12 +149,12 @@ uint32_t Winder_Prepare(void *JobDetails) if (FPGA_Read_limit_Switches(GPI_SW_SPOOL_EXISTS)==LIMIT) { REPORT_MSG(LIMIT, "No cone in winder"); - if (Is_PP_Machine()) + /*if (Is_PP_Machine()) { PrepareReady(Module_Winder,ModuleFail); AlarmHandlingSetAlarm(EVENT_TYPE__WINDER_CONE_DOES_NOT_EXIST,true); return ERROR; - } + }*/ } #ifdef READ_SCREW_ENCODER diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h index 1e730e252..5c9b360f6 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h @@ -81,6 +81,7 @@ void ThreadLoadRequest(MessageContainer* requestContainer); uint32_t StartThreadLoadingFunc(MessageContainer* requestContainer); uint32_t ContinueThreadLoadingFunc(MessageContainer* requestContainer); uint32_t StopThreadLoadingFunc(MessageContainer* requestContainer); +uint32_t TryThreadLoadingFunc(MessageContainer* requestContainer); uint32_t Thread_Load_End(void); diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index 545fb40e6..efcbd5030 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -217,6 +217,7 @@ uint32_t ThreadLengthCBFunction(uint32_t IfIndex, uint32_t ReadValue) if (FeederSpeedIndex>=SPEED_STORE_SIZE) { FeederSpeedIndex = 0; + FeederSpeedAverage = 0; for (Speed_i = 0;Speed_i<SPEED_STORE_SIZE;Speed_i++) FeederSpeedAverage+=FeederSpeedStore[Speed_i]; FeederSpeedAverage = FeederSpeedAverage/SPEED_STORE_SIZE; @@ -316,6 +317,7 @@ uint32_t PoolerThreadLengthCBFunction(uint32_t IfIndex, uint32_t ReadValue) if (PullerSpeedIndex>=SPEED_STORE_SIZE) { PullerSpeedIndex = 0; + PullerSpeedAverage = 0; for (Speed_i = 0;Speed_i<SPEED_STORE_SIZE;Speed_i++) PullerSpeedAverage+=PullerSpeedStore[Speed_i]; PullerSpeedAverage = PullerSpeedAverage/SPEED_STORE_SIZE; @@ -976,16 +978,19 @@ uint32_t ThreadPrepare_Tension (int DancerId, double tension) //return ERROR; }*/ - if (FPGA_Read_limit_Switches(Motor_Id_to_LS_IdUp[HARDWARE_MOTOR_TYPE__MOTO_DH_LID]) == LIMIT) + if ((FPGA_Read_limit_Switches(Motor_Id_to_LS_IdUp[HARDWARE_MOTOR_TYPE__MOTO_DH_LID]) == LIMIT)&&(JoggingJobActive == false)) { - ReportWithPackageFilter(ThreadFilter,"Dyeing head is wide open!!!",__FILE__,__LINE__,HARDWARE_MOTOR_TYPE__MOTO_DH_LID,RpFatalError,LIMIT,0); - JobEndReason = JOB_LIDS_OPEN; - PrepareReady(Module_Thread,ModuleFail); - return ERROR; + if(Head_Type != HEAD_TYPE_STAPLE_SPUN) + { + ReportWithPackageFilter(ThreadFilter,"Dyeing head is wide open!!!",__FILE__,__LINE__,HARDWARE_MOTOR_TYPE__MOTO_DH_LID,RpError,LIMIT,0); + JobEndReason = JOB_LIDS_OPEN; + PrepareReady(Module_Thread,ModuleFail); + return ERROR; + } } - if (FPGA_Read_limit_Switches(Motor_Id_to_LS_IdUp[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID]) == LIMIT) + if ((FPGA_Read_limit_Switches(Motor_Id_to_LS_IdUp[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID]) == LIMIT)&&(JoggingJobActive == false)) { - ReportWithPackageFilter(ThreadFilter,"Dryer lid is wide open!!!",__FILE__,__LINE__,HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID,RpFatalError,LIMIT,0); + ReportWithPackageFilter(ThreadFilter,"Dryer lid is wide open!!!",__FILE__,__LINE__,HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID,RpError,LIMIT,0); JobEndReason = JOB_LIDS_OPEN; PrepareReady(Module_Thread,ModuleFail); return ERROR; diff --git a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_init.c b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_init.c index 906a0d458..cf9fb3b7b 100644 --- a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_init.c +++ b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_init.c @@ -38,6 +38,7 @@ #define STOPCOUNT 0 #define PUMPTIMEOUT 1200 // seconds; 20 minutes, per Moty, 15/4/19 +float MidTankEmptyLimit = MidTank_Pressure_EMPTY; /*------------Waste Tank function-----------------------*/ bool initWHS_WasteTank(); @@ -775,16 +776,16 @@ bool WasteTankCBFunction() 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 ) + if ( MidTank_Pressure > MidTankEmptyLimit ) { - ReportWithPackageFilter(WasteFilter,"------------ close door MidTank_Pressure > MidTank_Pressure_EMPTY -----------------", __FILE__,__LINE__,(int)(MidTank_Pressure_EMPTY*1000), RpMessage, (int)(MidTank_Pressure*1000), 0); + ReportWithPackageFilter(WasteFilter,"------------ close door MidTank_Pressure > MidTankEmptyLimit -----------------", __FILE__,__LINE__,(int)(MidTankEmptyLimit*1000), RpMessage, (int)(MidTank_Pressure*1000), 0); MidTankValvesAction(Cartridge_MidTank_OFF); //Disable_MidTank_Pressure_Reading(IFS_info.Ink.cart_color); ReportWithPackageFilter(WasteFilter,"------------ WHS, Mid-tank not empty -------------", __FILE__, __LINE__, 0, RpMessage, 0, 0); break; } IFS_info.MidTank_capacity = MidTank_Pressure; - ReportWithPackageFilter(WasteFilter,"------------ Mid-tank filling in process -----------------", __FILE__,__LINE__,(int)(MidTank_Pressure_EMPTY*1000), RpMessage, (int)(MidTank_Pressure*1000), 0); + ReportWithPackageFilter(WasteFilter,"------------ Mid-tank filling in process -----------------", __FILE__,__LINE__,(int)(MidTankEmptyLimit*1000), RpMessage, (int)(MidTank_Pressure*1000), 0); Pannel_Leds(CART_1, MODE_ON); cart1.color = BLINK; MidTankValvesAction(Cartridge_MidTank_ON); @@ -1271,6 +1272,15 @@ U8 WHS_init(void) InitCartStatus(); initWHS_WasteTank(); + if (Is_PP_Machine()) + { + MidTankEmptyLimit = MidTank_PP_Pressure_EMPTY; + } + else + { + MidTankEmptyLimit = MidTank_Pressure_EMPTY; + } + return 0; } diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c index fb5cd884d..e9820d150 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c @@ -82,6 +82,7 @@ uint32_t InitSequenceMachineReadyToDye(void); uint32_t InitSequenceStateMachine( INIT_SEQUENCE_STAGES_ENUM ReadValue); uint32_t PowerUpUpdate(MACHINE_STATE_STAGES_ENUM stage); +int InitFailures = 0; MACHINE_STATE_STAGES_ENUM GetMachineState(void) { @@ -100,25 +101,27 @@ void StopInitSequence(void) uint32_t InitSequenceCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) { MACHINE_STATE_STAGES_ENUM status; - int InitFailures = 0; if (SafeRemoveControlCallback(HWControlId, InitSequenceCallBackFunction )==OK) HWControlId = 0xFF; else Report("Remove control callback failed",__FILE__,__LINE__,(int)HWControlId,RpWarning,(int)InitSequenceCallBackFunction,0); MCU_E2PromRead(EEPROM_INIT_FAILURE_COUNTER,&InitFailures); + InitFailures++; + MCU_E2PromProgram(EEPROM_INIT_FAILURE_COUNTER,InitFailures); + if (InitFailures > 100) { InitFailures = 0; MCU_E2PromProgram(EEPROM_INIT_FAILURE_COUNTER,0); } - if (InitFailures > 3) + /*if (InitFailures > 3) { Report("HWConfigurationInit repeated failure",__FILE__,__LINE__,(int)InitFailures,RpWarning,(int)EEPROM_INIT_FAILURE_COUNTER,0); - SetMachineState(status); + SetMachineState(MACHINE_STATE_HW_CONFIG_FAILED); AlarmHandlingSetAlarm (EVENT_TYPE__MACHINE_STATE_HW_CONFIG_FAILED,ON); SetMachineStatus(MACHINE_STATE__Error); return ERROR; - } + }*/ status = (MACHINE_STATE_STAGES_ENUM)HWConfigurationInit(); if (status == OK) { @@ -173,7 +176,6 @@ void InitSequenceBuiltInTestCallBack(uint32_t IfIndex, uint32_t BusyFlag) InitStages++; //InitSequenceStateMachine(InitStages); AlarmHandlingSetAlarm(EVENT_TYPE__POWER_UP_BIT_FAILURE,false); - MCU_E2PromProgram(EEPROM_INIT_FAILURE_COUNTER,0); } else { @@ -262,6 +264,7 @@ double MainCurrent,SecondaryCurrent,StableCurrent; double InitDrierAcVoltage = 0.0; int InitDrierAcVoltageCount = 0; double Zone2Resistance = 0.0; +double Zone1Resistance = 0.0; int WaitForCurrentRaise = 0;//let the heater current raise void InitCurrentReadingStable(void) { @@ -302,6 +305,11 @@ bool DetectIfCurrentReadingStable(double HeaterCurrent) } return ret; } + +double GetZone1RMSCurrent(double VAC) +{ + return (VAC/Zone1Resistance); +} double GetZone2RMSCurrent(double VAC) { return (VAC/Zone2Resistance); @@ -326,6 +334,7 @@ uint32_t PowerManagementCallBack(uint32_t IfIndex, uint32_t BusyFlag) InitDrierAcVoltage /= InitDrierAcVoltageCount; MainCurrent = StableCurrent; InitCurrentReadingStable(); + Zone1Resistance = InitDrierAcVoltage/MainCurrent; DeActivateHeater(HEATER_TYPE__DryerMainHeater); ActivateHeater(HEATER_TYPE__DryerSecondaryHeater); ReportWithPackageFilter(InitFilter,"starting secondary heater ", __FILE__,__LINE__,(int)(StableCurrent*100), RpMessage, Maxcount_Heater_Current, 0); @@ -518,6 +527,12 @@ uint32_t InitSequenceWaitForCoolerCallBackFunction(uint32_t IfIndex, uint32_t Bu } uint32_t InitSequenceWaitForCooler(void) { + Trigger_SetWHSFanSpeed(FAN1, SmallFansCfg); + Trigger_SetWHSFanSpeed(FAN2, SmallFansCfg); + Trigger_SetWHSFanSpeed(FAN3, SmallFansCfg); + Trigger_SetWHSFanSpeed(FAN4, SmallFansCfg); + Trigger_SetWHSFanSpeed(FAN5, LargeFansCfg); + Trigger_SetWHSFanSpeed(FAN6, LargeFansCfg); if (WHS_Type == WHS_TYPE_UNKNOWN) { InitStages++; @@ -574,6 +589,7 @@ uint32_t InitSequenceStartHeating(void) { SetMachineReadyForHeating(true); //SetMachineStatus(MACHINE_STATE__Ready); //prevent job while waiting for the cooler + MCU_E2PromProgram(EEPROM_INIT_FAILURE_COUNTER,0); if (InitialHeating) { diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.h b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.h index 8ce835a06..d0157ed47 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.h +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.h @@ -37,6 +37,7 @@ MACHINE_STATE_STAGES_ENUM GetMachineState(void); void SetMachineState(MACHINE_STATE_STAGES_ENUM); void InitSequenceSetStartHeating(bool StartHeating); double GetZone2RMSCurrent(double VAC); +double GetZone1RMSCurrent(double VAC); uint32_t PowerUpUpdateFunc(MessageContainer* requestContainer); uint32_t AbortPowerUpFunc(MessageContainer* requestContainer); diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c index 4b6eb93f3..169772480 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c @@ -251,6 +251,7 @@ uint32_t PowerOffHeatersOff(void) ProcessParametersClear.rblowerflow = 0; ProcessParametersClear.rblowerflow = 0; ProcessParametersClear.dyeingspeed = 40; + ProcessParametersClear.headairflow = 8.0; if (HandleProcessParameters(&ProcessParametersClear,false)!= OK) { LOG_ERROR (PowerOffMachineState, "Turn Off Heaters failed"); @@ -361,30 +362,69 @@ uint32_t PowerOffWaitForTemperatureCallback(uint32_t IfIndex, uint32_t BusyFlag) { uint32_t readTemp; MaxTemp = 0; - readTemp = MillisecGetTemperatures( MIXER_PT100); - if ((readTemp>= MaxTemp)&&(readTemp < 28000)) - MaxTemp = readTemp; - readTemp = MillisecGetTemperatures( TEMP_SENSE_ANALOG_DYEINGH_TEMP1); - if ((readTemp>= MaxTemp)&&(readTemp < 28000)) - MaxTemp = readTemp; - readTemp = MillisecGetTemperatures( TEMP_SENSE_ANALOG_DYEINGH_TEMP2); - if ((readTemp>= MaxTemp)&&(readTemp < 28000)) - MaxTemp = readTemp; - readTemp = MillisecGetTemperatures( TEMP_SENSE_ANALOG_DYEINGH_TEMP3); - if ((readTemp>= MaxTemp)&&(readTemp < 28000)) - MaxTemp = readTemp; - readTemp = MillisecGetTemperatures( TEMP_SENSE_ANALOG_DYEINGH_TEMP4); - if ((readTemp>= MaxTemp)&&(readTemp < 28000)) - MaxTemp = readTemp; - readTemp = MillisecGetTemperatures( TEMP_SENSE_ANALOG_DYEINGH_TEMP5); - if ((readTemp>= MaxTemp)&&(readTemp < 28000)) - MaxTemp = readTemp; - readTemp = MillisecGetTemperatures( HEAD6_PT100); - if ((readTemp>= MaxTemp)&&(readTemp < 28000)) - MaxTemp = readTemp; - readTemp = MillisecGetTemperatures( TEMP_SENSE_ANALOG_DRYER_TEMP1); - if ((readTemp>= MaxTemp)&&(readTemp < 28000)) - MaxTemp = readTemp; + /*if (Head_Type == HEAD_TYPE_SYLKO_WITHOUT_CARD) + { + readTemp = MillisecGetTemperatures( MIXER_PT100); + if ((readTemp>= MaxTemp)&&(readTemp < 27000)) MaxTemp = readTemp; + readTemp = MillisecGetTemperatures(TEMP_SENSE_ANALOG_DYEINGH_TEMP1); + if ((readTemp>= MaxTemp)&&(readTemp < 27000)) MaxTemp = readTemp; + readTemp = MillisecGetTemperatures(TEMP_SENSE_ANALOG_DYEINGH_TEMP2); + if ((readTemp>= MaxTemp)&&(readTemp < 27000)) MaxTemp = readTemp; + readTemp = MillisecGetTemperatures(TEMP_SENSE_ANALOG_DYEINGH_TEMP3); + if ((readTemp>= MaxTemp)&&(readTemp < 27000)) MaxTemp = readTemp; + readTemp = MillisecGetTemperatures(TEMP_SENSE_ANALOG_DYEINGH_TEMP4); + if ((readTemp>= MaxTemp)&&(readTemp < 27000)) MaxTemp = readTemp; + readTemp = MillisecGetTemperatures(TEMP_SENSE_ANALOG_DYEINGH_TEMP5); + if ((readTemp>= MaxTemp)&&(readTemp < 27000)) MaxTemp = readTemp; + readTemp = MillisecGetTemperatures(HEAD6_PT100); + if ((readTemp>= MaxTemp)&&(readTemp < 27000)) MaxTemp = readTemp; + } + if (Head_Type == HEAD_TYPE_SYLKO) + { + readTemp = MillisecGetTemperatures( HEAD_PT100_MIXER_0X8E_0); + if ((readTemp>= MaxTemp)&&(readTemp < 27000)) MaxTemp = readTemp; + readTemp = MillisecGetTemperatures(HEAD_PT100_ZONE_1_0X80_0); + if ((readTemp>= MaxTemp)&&(readTemp < 27000)) MaxTemp = readTemp; + readTemp = MillisecGetTemperatures(HEAD_PT100_ZONE_2_0X80_1); + if ((readTemp>= MaxTemp)&&(readTemp < 27000)) MaxTemp = readTemp; + readTemp = MillisecGetTemperatures(HEAD_PT100_ZONE_3_0X82_0); + if ((readTemp>= MaxTemp)&&(readTemp < 27000)) MaxTemp = readTemp; + readTemp = MillisecGetTemperatures(HEAD_PT100_ZONE_4_0X82_1); + if ((readTemp>= MaxTemp)&&(readTemp < 27000)) MaxTemp = readTemp; + readTemp = MillisecGetTemperatures(HEAD_PT100_ZONE_5_0X84_0); + if ((readTemp>= MaxTemp)&&(readTemp < 27000)) MaxTemp = readTemp; + readTemp = MillisecGetTemperatures(HEAD_PT100_ZONE_6_0X84_1); + if ((readTemp>= MaxTemp)&&(readTemp < 27000)) MaxTemp = readTemp; + readTemp = MillisecGetTemperatures(HEAD_PT100_ZONE_7_0X86_0); + if ((readTemp>= MaxTemp)&&(readTemp < 27000)) MaxTemp = readTemp; + readTemp = MillisecGetTemperatures(HEAD_PT100_ZONE_8_0X86_1); + if ((readTemp>= MaxTemp)&&(readTemp < 27000)) MaxTemp = readTemp; + readTemp = MillisecGetTemperatures(HEAD_PT100_ZONE_9_0X88_0); + if ((readTemp>= MaxTemp)&&(readTemp < 27000)) MaxTemp = readTemp; + readTemp = MillisecGetTemperatures(HEAD_PT100_ZONE_10_0X88_1); + if ((readTemp>= MaxTemp)&&(readTemp < 27000)) MaxTemp = readTemp; + readTemp = MillisecGetTemperatures(HEAD_PT100_ZONE_11_0X8A_0); + if ((readTemp>= MaxTemp)&&(readTemp < 27000)) MaxTemp = readTemp; + readTemp = MillisecGetTemperatures(HEAD_PT100_ZONE_12_0X8A_1); + if ((readTemp>= MaxTemp)&&(readTemp < 27000)) MaxTemp = readTemp; + } + if (Head_Type == HEAD_TYPE_STAPLE_SPUN) + { + readTemp = MillisecGetTemperatures( HEAD_PT100_MIXER_0X8E_0); + if ((readTemp>= MaxTemp)&&(readTemp < 27000)) MaxTemp = readTemp; + readTemp = MillisecGetTemperatures(HEAD_PT100_ZONE_1_0X80_0); + if ((readTemp>= MaxTemp)&&(readTemp < 27000)) MaxTemp = readTemp; + readTemp = MillisecGetTemperatures(HEAD_PT100_ZONE_2_0X80_1); + if ((readTemp>= MaxTemp)&&(readTemp < 27000)) MaxTemp = readTemp; + readTemp = MillisecGetTemperatures(HEAD_PT100_ZONE_3_0X82_0); + if ((readTemp>= MaxTemp)&&(readTemp < 27000)) MaxTemp = readTemp; + readTemp = MillisecGetTemperatures(HEAD_PT100_AIR_HEATER_2_0X8C_1); + if ((readTemp>= MaxTemp)&&(readTemp < 27000)) MaxTemp = readTemp; + readTemp = MillisecGetTemperatures(HEAD_PT100_AIR_HEATER_1_0X8C_0); + if ((readTemp>= MaxTemp)&&(readTemp < 27000)) MaxTemp = readTemp; + }*/ + readTemp = MillisecGetTemperatures(TEMP_SENSE_ANALOG_DRYER_TEMP1); + if ((readTemp>= MaxTemp)&&(readTemp < 27000)) MaxTemp = readTemp; if (StoreMax == 500) StoreMax = MaxTemp; @@ -409,6 +449,7 @@ uint32_t PowerOffWaitForTemperature(void) { Report("PowerOff Wait For Temperature",__FILE__,__LINE__,(int)PowerOffTemperatureThreshold,RpWarning,(int)3600,0); StoreMax = 500; + WHS_Set_IFS_Clearing_Suction(NUM_OF_MIDTANKS); if (WaitForProcessControlId == 0xFF) { WaitForProcessCounter = 0; diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c index be3b64f0a..71393cf48 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c @@ -371,7 +371,7 @@ uint32_t ThreadJoggingFunc(int speed) { ProcessParameters ProcessParametersCopy; uint32_t status = OK; - if ((JobIsActive() == true)||(JoggingJobActive == true)) + if ((JobIsActive() == true)||(JoggingJobActive == true)||(MachineReadyForHeating == false)) { status = ERROR; Report("Jog JobIsActive", __FILE__, __LINE__, JobIsActive(), RpWarning, JoggingJobActive, 0); @@ -382,7 +382,6 @@ uint32_t ThreadJoggingFunc(int speed) //usnprintf(ErrorMsg, 80,"Copy Configured T %d W %d I %d H %d W %d",CopyConfigured[Module_Thread],CopyConfigured[Module_Winder],CopyConfigured[Module_IDS],CopyConfigured[Module_Heaters],CopyConfigured[Module_Waste]); //Report(ErrorMsg, __FILE__, __LINE__, 0, RpWarning, 0, 0); - JoggingJobActive = true; //set the job handler to ignore heaters, ids and waste in the state machine Configured[Module_Thread] = true; Configured[Module_Winder] = true; @@ -419,6 +418,7 @@ uint32_t ThreadJoggingFunc(int speed) Ticket.spool = Tspool; CurrentJob = &Ticket; InternalWindingConfigMessage(Tspool); + JoggingJobActive = true; StartJob(&Ticket); } } @@ -537,7 +537,6 @@ uint32_t ThreadCleaningJob(int speed) else { //memcpy(&CopyConfigured,&Configured,sizeof(CopyConfigured)); - CleaningJobActive = true; //usnprintf(ErrorMsg, 80,"Copy Configured T %d W %d I %d H %d W %d",CopyConfigured[Module_Thread],CopyConfigured[Module_Winder],CopyConfigured[Module_IDS],CopyConfigured[Module_Heaters],CopyConfigured[Module_Waste]); //Report(ErrorMsg, __FILE__, __LINE__, 0, RpWarning, 0, 0); @@ -607,6 +606,7 @@ uint32_t ThreadCleaningJob(int speed) } InternalWindingConfigMessage(Tspool); + CleaningJobActive = true; StartJob(&Ticket); } } diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c index 982687201..61561c6a9 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c @@ -138,11 +138,9 @@ FRESULT RewindJobFile() } return Fresult; } -extern Semaphore_Handle FFS_Sem; FRESULT CloseJobFile() { Fresult = f_close(JobRequestFileHandle); - //Semaphore_post(FFS_Sem); #warning trying not to hold the semaphore and enable the PPC/MS to work on several files simultaneously readbBytes = 0; diff --git a/Software/Visual_Studio/Advanced Installer Projects/Machine Studio Installer.aip b/Software/Visual_Studio/Advanced Installer Projects/Machine Studio Installer.aip index 2ce93f743..0fbac6580 100644 --- a/Software/Visual_Studio/Advanced Installer Projects/Machine Studio Installer.aip +++ b/Software/Visual_Studio/Advanced Installer Projects/Machine Studio Installer.aip @@ -16,10 +16,10 @@ <ROW Property="ARPCOMMENTS" Value="This installer database contains the logic and data required to install [|ProductName]." ValueLocId="*"/> <ROW Property="ARPNOREPAIR" MultiBuildValue="DefaultBuild:1"/> <ROW Property="Manufacturer" Value="Twine"/> - <ROW Property="ProductCode" Value="1033:{5C2604C5-1EFA-4AC8-A4AB-8E18F86F3EAC} " Type="16"/> + <ROW Property="ProductCode" Value="1033:{F5AAF624-5EAD-4425-B468-573A7B9F7D30} " Type="16"/> <ROW Property="ProductLanguage" Value="1033"/> <ROW Property="ProductName" Value="Machine Studio"/> - <ROW Property="ProductVersion" Value="4.1.11.0" Type="32"/> + <ROW Property="ProductVersion" Value="4.1.12.0" Type="32"/> <ROW Property="SecureCustomProperties" Value="OLDPRODUCTS;AI_NEWERPRODUCTFOUND;AI_SETUPEXEPATH;SETUPEXEDIR"/> <ROW Property="UpgradeCode" Value="{CBEE5CAE-7C5A-4280-98DE-AA98113764E4}"/> <ROW Property="WindowsType9X" MultiBuildValue="DefaultBuild:Windows 9x/ME" ValueLocId="-"/> @@ -817,7 +817,7 @@ <ROW Action="AI_DetectSoftware" Sequence="101"/> </COMPONENT> <COMPONENT cid="caphyon.advinst.msicomp.BuildComponent"> - <ROW BuildKey="DefaultBuild" BuildName="DefaultBuild" BuildOrder="1" BuildType="0" PackageFolder="..\Build\Installers\Machine Studio\Release" PackageFileName="Machine Studio Installer_v4.0.9" Languages="en" InstallationType="4" CabsLocation="1" PackageType="1" FilesInsideExe="true" ExtractionFolder="[AppDataFolder][|Manufacturer]\[|ProductName] [|ProductVersion]\install" ExtUI="true" UseLargeSchema="true" ExeName="Machine Studio Installer_v4.1.11"/> + <ROW BuildKey="DefaultBuild" BuildName="DefaultBuild" BuildOrder="1" BuildType="0" PackageFolder="..\Build\Installers\Machine Studio\Release" PackageFileName="Machine Studio Installer_v4.0.9" Languages="en" InstallationType="4" CabsLocation="1" PackageType="1" FilesInsideExe="true" ExtractionFolder="[AppDataFolder][|Manufacturer]\[|ProductName] [|ProductVersion]\install" ExtUI="true" UseLargeSchema="true" ExeName="Machine Studio Installer_v4.1.12"/> </COMPONENT> <COMPONENT cid="caphyon.advinst.msicomp.DictionaryComponent"> <ROW Path="<AI_DICTS>ui.ail"/> diff --git a/Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/cacheIndex.txt b/Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/cacheIndex.txt Binary files differindex a603ff06b..9453b5c13 100644 --- a/Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/cacheIndex.txt +++ b/Software/Visual_Studio/Advanced Installer Projects/PPC Installer-cache/cacheIndex.txt diff --git a/Software/Visual_Studio/Advanced Installer Projects/PPC Installer.aip b/Software/Visual_Studio/Advanced Installer Projects/PPC Installer.aip index 631fd61b5..2794924cf 100644 --- a/Software/Visual_Studio/Advanced Installer Projects/PPC Installer.aip +++ b/Software/Visual_Studio/Advanced Installer Projects/PPC Installer.aip @@ -18,10 +18,10 @@ <ROW Property="ARPNOREPAIR" Value="1" MultiBuildValue="DefaultBuild:1"/> <ROW Property="ARPSYSTEMCOMPONENT" Value="1"/> <ROW Property="Manufacturer" Value="Twine"/> - <ROW Property="ProductCode" Value="1033:{51AC7C8D-BB1A-4E01-AFD0-C63D6CA266A8} " Type="16"/> + <ROW Property="ProductCode" Value="1033:{354C1029-F68D-4058-9956-F8CA8652A0B7} " Type="16"/> <ROW Property="ProductLanguage" Value="1033"/> <ROW Property="ProductName" Value="Tango"/> - <ROW Property="ProductVersion" Value="1.1.17.0" Type="32"/> + <ROW Property="ProductVersion" Value="1.1.18.0" Type="32"/> <ROW Property="SecureCustomProperties" Value="OLDPRODUCTS;AI_NEWERPRODUCTFOUND;AI_SETUPEXEPATH;SETUPEXEDIR"/> <ROW Property="UpgradeCode" Value="{F8EAB8B4-FD57-45B7-8307-D52DF760273D}"/> <ROW Property="WindowsType9X" MultiBuildValue="DefaultBuild:Windows 9x/ME" ValueLocId="-"/> @@ -203,13 +203,11 @@ <ROW Component="mscoree.dll" ComponentId="{85F439D0-8FD0-4B99-888D-336C7A125E3D}" Directory_="APPDIR" Attributes="0" KeyPath="mscoree.dll"/> <ROW Component="msvcp140d.dll" ComponentId="{69E32675-9ACF-4C23-A495-300B78913B66}" Directory_="APPDIR" Attributes="0" KeyPath="msvcp140d.dll"/> <ROW Component="protobufnet.dll" ComponentId="{163F1E17-6462-4ABE-BC86-E055F7690139}" Directory_="APPDIR" Attributes="0" KeyPath="protobufnet.dll"/> - <ROW Component="turbojpeg.dll" ComponentId="{54F3336E-421F-4BFE-98E3-B4286E1E8E02}" Directory_="win7x64_Dir" Attributes="256" KeyPath="turbojpeg.dll"/> - <ROW Component="turbojpeg.dll.meta" ComponentId="{418E313D-7727-4480-9FE1-EB9F4F421729}" Directory_="win7x64_Dir" Attributes="0" KeyPath="turbojpeg.dll.meta" Type="0"/> - <ROW Component="turbojpeg.dll.meta_1" ComponentId="{F080CB99-45D0-4E98-8133-0DB28360F33C}" Directory_="win7x86_Dir" Attributes="0" KeyPath="turbojpeg.dll.meta_1" Type="0"/> - <ROW Component="turbojpeg.dll_1" ComponentId="{7E06B606-9E3A-4AAF-888D-F415CB8A97ED}" Directory_="win7x86_Dir" Attributes="0" KeyPath="turbojpeg.dll_1"/> <ROW Component="ucrtbased.dll" ComponentId="{B8D025EA-CD16-4EE7-A3E7-713E2BE82BF3}" Directory_="APPDIR" Attributes="0" KeyPath="ucrtbased.dll"/> <ROW Component="vcruntime140.dll" ComponentId="{144594CC-D19B-45E4-A420-7A1BBB122EE3}" Directory_="APPDIR" Attributes="0" KeyPath="vcruntime140.dll"/> <ROW Component="vcruntime140d.dll" ComponentId="{7653420C-C6C3-4F31-97E8-D6DE417D3DF2}" Directory_="APPDIR" Attributes="0" KeyPath="vcruntime140d.dll"/> + <ROW Component="win7x64" ComponentId="{914A92FF-AF44-4DC5-8A9B-7F972D390416}" Directory_="win7x64_Dir" Attributes="0"/> + <ROW Component="win7x86" ComponentId="{78657818-A8BC-4A5A-AA79-1DB25B5DBC0E}" Directory_="win7x86_Dir" Attributes="0"/> </COMPONENT> <COMPONENT cid="caphyon.advinst.msicomp.MsiFeatsComponent"> <ROW Feature="MainFeature" Title="MainFeature" Description="Description" Display="1" Level="1" Directory_="APPDIR" Attributes="0"/> @@ -458,10 +456,6 @@ <ROW File="Tango.PPC.Shared.pdb" Component_="Tango.PPC.Shared.dll" FileName="TANGO~17.PDB|Tango.PPC.Shared.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Tango.PPC.Shared.pdb" SelfReg="false"/> <ROW File="Tango.CSV.dll" Component_="Tango.CSV.dll" FileName="TANGOC~8.DLL|Tango.CSV.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Tango.CSV.dll" SelfReg="false"/> <ROW File="Tango.CSV.pdb" Component_="Tango.CSV.dll" FileName="TANGOC~5.PDB|Tango.CSV.pdb" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\Tango.CSV.pdb" SelfReg="false"/> - <ROW File="turbojpeg.dll" Component_="turbojpeg.dll" FileName="TURBOJ~1.DLL|turbojpeg.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\win7-x64\turbojpeg.dll" SelfReg="false"/> - <ROW File="turbojpeg.dll.meta" Component_="turbojpeg.dll.meta" FileName="TURBOJ~1.MET|turbojpeg.dll.meta" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\win7-x64\turbojpeg.dll.meta" SelfReg="false"/> - <ROW File="turbojpeg.dll_1" Component_="turbojpeg.dll_1" FileName="TURBOJ~1.DLL|turbojpeg.dll" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\win7-x86\turbojpeg.dll" SelfReg="false"/> - <ROW File="turbojpeg.dll.meta_1" Component_="turbojpeg.dll.meta_1" FileName="TURBOJ~1.MET|turbojpeg.dll.meta" Version="65535.65535.65535.65535" Attributes="0" SourcePath="..\Build\PPC\Release\win7-x86\turbojpeg.dll.meta" SelfReg="false"/> <ATTRIBUTE name="DontAddFileAttributes" value="true"/> </COMPONENT> <COMPONENT cid="caphyon.advinst.msicomp.BootstrOptComponent"> @@ -471,7 +465,7 @@ <ROW Action="AI_DetectSoftware" Sequence="101"/> </COMPONENT> <COMPONENT cid="caphyon.advinst.msicomp.BuildComponent"> - <ROW BuildKey="DefaultBuild" BuildName="DefaultBuild" BuildOrder="1" BuildType="0" PackageFolder="..\Build\Installers\PPC" PackageFileName="PPC Installer v1.0.3" Languages="en" InstallationType="4" CabsLocation="1" PackageType="1" FilesInsideExe="true" ExtractionFolder="[AppDataFolder][|Manufacturer]\[|ProductName] [|ProductVersion]\install" ExtUI="true" UseLargeSchema="true" ExeName="PPC Installer_v1.1.17"/> + <ROW BuildKey="DefaultBuild" BuildName="DefaultBuild" BuildOrder="1" BuildType="0" PackageFolder="..\Build\Installers\PPC" PackageFileName="PPC Installer v1.0.3" Languages="en" InstallationType="4" CabsLocation="1" PackageType="1" FilesInsideExe="true" ExtractionFolder="[AppDataFolder][|Manufacturer]\[|ProductName] [|ProductVersion]\install" ExtUI="true" UseLargeSchema="true" ExeName="PPC Installer_v1.1.18"/> </COMPONENT> <COMPONENT cid="caphyon.advinst.msicomp.DictionaryComponent"> <ROW Path="<AI_DICTS>ui.ail"/> @@ -539,6 +533,8 @@ <COMPONENT cid="caphyon.advinst.msicomp.MsiCreateFolderComponent"> <ROW Directory_="SHORTCUTDIR" Component_="SHORTCUTDIR" ManualDelete="false"/> <ROW Directory_="APPDIR" Component_="APPDIR" ManualDelete="true"/> + <ROW Directory_="win7x64_Dir" Component_="win7x64" ManualDelete="false"/> + <ROW Directory_="win7x86_Dir" Component_="win7x86" ManualDelete="false"/> </COMPONENT> <COMPONENT cid="caphyon.advinst.msicomp.MsiCustActComponent"> <ROW Action="AI_BACKUP_AI_SETUPEXEPATH" Type="51" Source="AI_SETUPEXEPATH_ORIGINAL" Target="[AI_SETUPEXEPATH]"/> @@ -730,10 +726,8 @@ <ROW Feature_="MainFeature" Component_="LiteDB.dll"/> <ROW Feature_="MainFeature" Component_="Tango.PPC.Shared.dll"/> <ROW Feature_="MainFeature" Component_="Tango.CSV.dll"/> - <ROW Feature_="MainFeature" Component_="turbojpeg.dll"/> - <ROW Feature_="MainFeature" Component_="turbojpeg.dll.meta"/> - <ROW Feature_="MainFeature" Component_="turbojpeg.dll_1"/> - <ROW Feature_="MainFeature" Component_="turbojpeg.dll.meta_1"/> + <ROW Feature_="MainFeature" Component_="win7x86"/> + <ROW Feature_="MainFeature" Component_="win7x64"/> </COMPONENT> <COMPONENT cid="caphyon.advinst.msicomp.MsiInstExSeqComponent"> <ROW Action="AI_STORE_LOCATION" Condition="(Not Installed) OR REINSTALL" Sequence="1502"/> diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Properties/AssemblyInfo.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Properties/AssemblyInfo.cs index 5d5571e57..5aa2cdb2d 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Properties/AssemblyInfo.cs +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Properties/AssemblyInfo.cs @@ -4,5 +4,5 @@ using System.Runtime.InteropServices; [assembly: System.Windows.ThemeInfo(System.Windows.ResourceDictionaryLocation.None, System.Windows.ResourceDictionaryLocation.SourceAssembly)] [assembly: AssemblyTitle("Tango - Machine Studio")] -[assembly: AssemblyVersion("4.1.11.0")] +[assembly: AssemblyVersion("4.1.12.0")] [assembly: ComVisible(false)]
\ No newline at end of file diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Properties/AssemblyInfo.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/Properties/AssemblyInfo.cs index aff093b15..95307cb15 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.UI/Properties/AssemblyInfo.cs +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Properties/AssemblyInfo.cs @@ -8,4 +8,4 @@ using System.Windows; // set of attributes. Change these attribute values to modify the information // associated with an assembly. [assembly: AssemblyTitle("Tango PPC Application")] -[assembly: AssemblyVersion("1.1.17.0")] +[assembly: AssemblyVersion("1.1.18.0")] diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/app.manifest b/Software/Visual_Studio/PPC/Tango.PPC.UI/app.manifest index efc5f8179..d72e75011 100644 --- a/Software/Visual_Studio/PPC/Tango.PPC.UI/app.manifest +++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/app.manifest @@ -16,7 +16,7 @@ Remove this element if your application requires this virtualization for backwards compatibility. --> - <!--<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />--> + <requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> </requestedPrivileges> </security> </trustInfo> |
