From d1b050a74228f336443f2877bb8c241b3ab93402 Mon Sep 17 00:00:00 2001 From: Avi Levkovich Date: Tue, 5 Mar 2019 14:02:19 +0200 Subject: change the calll in MillisecLowLoop from Read_Head_MixChip_Heaters_Current to Read_Heaters_Current --- Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index a580dce02..db6624fd4 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -508,7 +508,7 @@ uint32_t MillisecLowLoop(uint32_t tick) } for (Heater_i = 0;Heater_i < NUM_OF_HEATERS;Heater_i++) { - Read_Head_MixChip_Heaters_Current(Heater_i); + Read_Heaters_Current(Heater_i); } } if (OneMinute_Tick) -- cgit v1.3.1 From fe40020b684bb0301050e2b116554fca2a37f8d2 Mon Sep 17 00:00:00 2001 From: Avi Levkovich Date: Tue, 5 Mar 2019 17:49:02 +0200 Subject: changing the motor direction when using motor driver PowerSTEP01 --- Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c index 435d7aef3..a1e91f6fc 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c @@ -17,6 +17,8 @@ #include "drivers/Flash_Memory/fatfs/ff.h" #include "drivers/SSI_Comm/Dancer/Dancer.h" +#include "drivers/FPGA/Moters_Driver/PowerSTEP01.h" + #include "thread.h" MotorDriverConfigStruc MotorsCfg[NUM_OF_MOTORS]={0}; HardwarePidControl MotorsControl[MAX_THREAD_MOTORS_NUM] = {0}; @@ -52,6 +54,14 @@ uint32_t MotorsConfigMessage(HardwareMotor * request) MotorsCfg[Motor_i].pulseperround = request->pulseperround; MotorsCfg[Motor_i].pulleyradius = request->pulleyradius; MotorsCfg[Motor_i].configword = request->configword; + if(MotorDriverResponse[Motor_i].DriverType == VoltageCombinedMotDriver) + { + MotorsCfg[Motor_i].directionthreadwize = !(request->directionthreadwize);//PowerSTEP01 + } + else + { + MotorsCfg[Motor_i].directionthreadwize = request->directionthreadwize;//L6470 + L6472 + } MotorsCfg[Motor_i].directionthreadwize = request->directionthreadwize; MotorsCfg[Motor_i].kvalhold = request->kvalhold; MotorsCfg[Motor_i].kvalrun = request->kvalrun; -- cgit v1.3.1 From a5d69ec4f8f0364fa25b7564c4d1be8ec0d0679f Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Wed, 6 Mar 2019 11:23:19 +0200 Subject: stop PID control when turning heaters off. improve heaters handling. thread break test --- .../Embedded_SW/Embedded/Common/SW_Info/SW_Info.c | 2 +- .../Embedded/Drivers/flash_ram/FlashProgram.c | 2 +- .../Embedded_SW/Embedded/Modules/General/process.c | 21 ++- .../Embedded/Modules/Heaters/Heaters_ex.h | 1 + .../Embedded/Modules/Heaters/Heaters_init.c | 4 +- .../Embedded/Modules/Heaters/Heaters_print.c | 152 +++++++++++++-------- .../Embedded/Modules/Thread/Thread_print.c | 10 +- .../Embedded/StateMachines/Printing/JobSTM.c | 19 +++ 8 files changed, 142 insertions(+), 69 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') 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 12d6bdeb6..c4f04254d 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,3,7,8}; +TangoVersion_t _gTangoVersion = {1,3,7,81}; #define BUILD_DATE __DATE__ char Dat[50] = BUILD_DATE; char _gTangoName [MAX_STRING_LEN] = "Tango01 ";//d diff --git a/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.c b/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.c index af7f13a00..637c91e7d 100644 --- a/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.c +++ b/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.c @@ -42,7 +42,7 @@ uint32_t ReadAppAndProgram(uint32_t ui32FlashStart,uint32_t ui32FileSize,void* b // by the amount of the reserved block. // ui32FlashEnd = ui32FlashStart + ui32FileSize; -#warning check all addresses + // // Check to make sure the file size is not too large to fit in the flash. diff --git a/Software/Embedded_SW/Embedded/Modules/General/process.c b/Software/Embedded_SW/Embedded/Modules/General/process.c index dd9f8deae..458bb35f2 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/process.c +++ b/Software/Embedded_SW/Embedded/Modules/General/process.c @@ -38,11 +38,29 @@ int32_t tableindex = 0; char ProcessParamsConfigPath[50] = "0://SysInfo//ProcessP.cfg"; ProcessParameters ProcessParametersKeep; +void HeatersStopControlOnHeatersOff(ProcessParameters* ProcessParams) +{ + uint32_t temp_sum = 0; + temp_sum += ProcessParams->dryerzone1temp; + temp_sum += ProcessParams->dryerzone2temp; + temp_sum += ProcessParams->dryerzone3temp; + temp_sum += ProcessParams->mixertemp; + temp_sum += ProcessParams->headzone1temp; + temp_sum += ProcessParams->headzone2temp; + temp_sum += ProcessParams->headzone3temp; + temp_sum += ProcessParams->headzone4temp; + temp_sum += ProcessParams->headzone5temp; + temp_sum += ProcessParams->headzone6temp; + if (temp_sum == 0)// heating off + { + HeatersControlStop(); + REPORT_MSG(temp_sum,"Heating control off - temperatures off"); + } +} uint32_t HandleProcessParameters(ProcessParameters* ProcessParams) { uint32_t status = 0; - if (ProcessParams==NULL) { status = ERROR_CODE__INVALID_PARAMETER; @@ -145,6 +163,7 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams) HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary, false, ProcessParams->dryerzone3temp); */ + HeatersStopControlOnHeatersOff(ProcessParams); dyeingspeed = ProcessParams->dyeingspeed; dryerbufferlength = ProcessParams->dryerbufferlength; mininkuptake = ProcessParams->mininkuptake; diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h index 8a77f98a2..0b65d9e5e 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h @@ -27,4 +27,5 @@ void Heaters_SetOperationLimits(int acheatersloweroperationlimit,int acheatersu uint32_t HeatersEnd(void); +void HeatersControlStop(void); uint32_t Heaters_Init(void); diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c index 6fbfa5884..7c4bb1761 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c @@ -29,7 +29,7 @@ /******************** STRUCTURES AND ENUMs ********************************************/ -typedef enum { +/*typedef enum { HeatersInitialState, HeatersInit, HeatersControlledOp, @@ -43,7 +43,7 @@ typedef enum { HeatersOverHeat, HeatersOnTest }HEATERS_EVENTS_ENUM; - +*/ /******************** GLOBAL PARAMETERS ********************************************/ HeaterPIDControlConfig HeaterControl[MAX_HEATERS_NUM] = {0,0,0,0,0,0,0,0,0,0,0,0}; bool AcHeaterConfigured[MAX_AC_HEATERS] = {0,0,0}; diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index bc5448e7b..3f62fc3b6 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -17,7 +17,7 @@ #include "PMR/Diagnostics/HeaterType.pb-c.h" #include "PMR/Diagnostics/HeaterState.pb-c.h" #include "PMR/common/MessageContainer.pb-c.h" -#include "PMR/Diagnostics/EventType.pb-c.h" +#include "PMR/Diagnostics/EventType.pb-c.h" #include "../AlarmHandling/AlarmHandling.h" #include "../control/control.h" @@ -277,6 +277,9 @@ uint32_t HeatersSingleHeaterEnd(HardwarePidControlType HeaterId) HeaterReady[HeaterId] = true; } + AlarmHandlingSetAlarm(HeaterUnderEventType[HeaterId], false); + AlarmHandlingSetAlarm(HeaterUnderEventType_B[HeaterId], false); + AlarmHandlingSetAlarm(HeaterEventType[HeaterId], false); return status; } @@ -389,7 +392,8 @@ uint32_t HeaterCommandRequestMessage(int HeaterId, bool OnOff, int Temperature) } else if ((HeaterState == HEATER_ON)&& (OnOff == HEATER_ON)) //set temperature { - if (abs(HeaterPIDConfig[HeaterId].m_SetParam - HeaterCmd[HeaterId].targettemperatue)>0.5) //#bug 221 + HeaterPIDConfig[HeaterId].m_SetParam = HeaterCmd[HeaterId].targettemperatue; + /*/if (abs(HeaterPIDConfig[HeaterId].m_SetParam - HeaterCmd[HeaterId].targettemperatue)>0.5) //#bug 221 { PrepareHeater(HeaterId,Temperature); //prepare the heaters control info } @@ -397,8 +401,8 @@ uint32_t HeaterCommandRequestMessage(int HeaterId, bool OnOff, int Temperature) { HeaterPreviousRead[HeaterId] = GetFilteredHeaterRead(HeaterId);// LOG_ERROR(HeaterId,"ReRead Heater Temp"); - } - HeaterPIDConfig[HeaterId].m_SetParam = HeaterCmd[HeaterId].targettemperatue; + }*/ + PrepareHeater(HeaterId,Temperature); //prepare the heaters control info // if the heater is not on return (?). //set the target operation temperature //set the heater operation mode to fast heating - depended on the current temperature @@ -417,6 +421,88 @@ uint32_t HeaterCommandRequestMessage(int HeaterId, bool OnOff, int Temperature) return OK; } +/* + * PrepareHeater + * called by: Communication from host + * initialized all global data + */ +void PrepareACHeater(int HeaterId,uint32_t Frequency, uint32_t SetTemperatue) +{ + if (ControlIdtoHeaterId [HeaterId] == 0xFF) + { + ControlIdtoHeaterId [HeaterId] = AddControlCallback( HeaterControlCBFunction, Frequency/*eOneSecond*/,TemperatureSensorRead,(IfTypeHeaters*0x100+HeaterId),DryerInternalPT100Id,0); + //HeaterPreviousRead[HeaterId] = TemperatureSensorRead(DryerInternalPT100Id); + HeaterPreviousRead[HeaterId] = GetFilteredHeaterRead(HeaterId);// + Report("PrepareHeater Read", __FILE__,__LINE__,HeaterId, SetTemperatue, HeaterPreviousRead[HeaterId], 0); + HeaterPreviousRead[HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain] = GetFilteredHeaterRead(HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain);//TemperatureSensorRead(HeaterId2PT100Id[HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain]); + HeaterPreviousRead[HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary] = GetFilteredHeaterRead(HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary);// = TemperatureSensorRead(HeaterId2PT100Id[HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary]); + } + //turn all alarms off + AlarmHandlingSetAlarm(HeaterUnderEventType[HeaterId], false); + AlarmHandlingSetAlarm(HeaterUnderEventType_B[HeaterId], false); + AlarmHandlingSetAlarm(HeaterEventType[HeaterId], false); + + if (ControlIdtoMaxHeaterId [HeaterId] == 0xFF) + ControlIdtoMaxHeaterId [HeaterId] = AddControlCallback( DcHeaterMaxTempCBFunction, eOneSecond,TemperatureSensorRead,(IfTypeHeaters*0x100+HeaterId),HeaterId2PT100Id[HeaterId],0); + + Enable_Reading_Heaters_Current(HeaterId2CurrentId[HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain]); + Enable_Reading_Heaters_Current(HeaterId2CurrentId[HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary]); + + HeaterRecalculateSharedHeatersParams(HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain, 0); + HeaterRecalculateSharedHeatersParams(HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary, 0); + if (MainDryerHeaterMaxTempControl == 0xFF) + MainDryerHeaterMaxTempControl = AddControlCallback( HeaterMaxTempCBFunction, eHundredMillisecond,TemperatureSensorRead,(IfTypeHeaters*0x100+HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain),HeaterId2PT100Id[HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain],0); + if (SecondDryerHeaterMaxTempControl == 0xFF) + SecondDryerHeaterMaxTempControl = AddControlCallback( HeaterMaxTempCBFunction, eHundredMillisecond,TemperatureSensorRead,(IfTypeHeaters*0x100+HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary),HeaterId2PT100Id[HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary],0); + //InitialHeating = true; + HeaterReady[HeaterId] = false; + if (BlowerCfg.enabled == true) + { + Turn_the_Blower_On();//Turn on with the Default_Voltage + if (BlowerCfg.heatingvoltage) + Control_Voltage_To_Blower(BlowerCfg.heatingvoltage); + else + Control_Voltage_To_Blower(BlowerCfg.voltage-500); + + } + if (SetTemperatue) + { + Control_Dryer_Fan(START,75);//use START or STOP, 0 - 100% + } +} +/* + * PrepareHeater + * called by: Communication from host + * initialized all global data + */ +int PrepareDCHeater(int HeaterId, uint32_t Frequency, uint32_t SetTemperatue) +{ + if (ControlIdtoHeaterId [HeaterId] == 0xFF) + ControlIdtoHeaterId [HeaterId] = AddControlCallback( DCHeaterControlCBFunction, Frequency/*eOneSecond*/,TemperatureSensorRead,(IfTypeHeaters*0x100+HeaterId),HeaterId2PT100Id[HeaterId],0); + //HeaterPIDConfig[HeaterId].m_params.dt *=10; + //DCInitialHeating[HeaterId] = true; + HeaterReady[HeaterId] = false; + HeaterRecalculateHeaterParams(HeaterId, 0); + + //turn all alarms off + AlarmHandlingSetAlarm(HeaterUnderEventType[HeaterId], false); + AlarmHandlingSetAlarm(HeaterUnderEventType_B[HeaterId], false); + AlarmHandlingSetAlarm(HeaterEventType[HeaterId], false); + + Enable_Reading_Heaters_Current(HeaterId2CurrentId[HeaterId]); + + HeaterPreviousRead[HeaterId] = GetFilteredHeaterRead(HeaterId);//TemperatureSensorRead(HeaterId2PT100Id[HeaterId]); + if((abs(HeaterPreviousRead[HeaterId]-MINIMUM_HEATER_READ)<1)||(abs(MAXIMUM_HEATER_READ-HeaterPreviousRead[HeaterId])<10)) + { + LOG_ERROR (HeaterId,"PT100 not working properly"); + return ERROR; + } + Report("PrepareHeater Read", __FILE__,__LINE__,HeaterId, SetTemperatue, HeaterPreviousRead[HeaterId], 0); + if (ControlIdtoMaxHeaterId [HeaterId] == 0xFF) + ControlIdtoMaxHeaterId [HeaterId] = AddControlCallback( DcHeaterMaxTempCBFunction, eOneSecond,TemperatureSensorRead,(IfTypeHeaters*0x100+HeaterId),HeaterId2PT100Id[HeaterId],0); + + return OK; +} /* * PrepareHeater * called by: Communication from host @@ -466,64 +552,12 @@ uint32_t PrepareHeater(int HeaterId, uint32_t SetTemperatue) } if (HeaterId >= MAX_AC_HEATERS) //DC Heaters { - if (ControlIdtoHeaterId [HeaterId] == 0xFF) - ControlIdtoHeaterId [HeaterId] = AddControlCallback( DCHeaterControlCBFunction, Frequency/*eOneSecond*/,TemperatureSensorRead,(IfTypeHeaters*0x100+HeaterId),HeaterId2PT100Id[HeaterId],0); - //HeaterPIDConfig[HeaterId].m_params.dt *=10; - //DCInitialHeating[HeaterId] = true; - HeaterReady[HeaterId] = false; - HeaterRecalculateHeaterParams(HeaterId, 0); - - Enable_Reading_Heaters_Current(HeaterId2CurrentId[HeaterId]); - - HeaterPreviousRead[HeaterId] = GetFilteredHeaterRead(HeaterId);//TemperatureSensorRead(HeaterId2PT100Id[HeaterId]); - if((abs(HeaterPreviousRead[HeaterId]-MINIMUM_HEATER_READ)<1)||(abs(MAXIMUM_HEATER_READ-HeaterPreviousRead[HeaterId])<10)) - { - LOG_ERROR (HeaterId,"PT100 not working properly"); + if (PrepareDCHeater(HeaterId,Frequency,SetTemperatue)!=OK) return ERROR; - } - Report("PrepareHeater Read", __FILE__,__LINE__,HeaterId, SetTemperatue, HeaterPreviousRead[HeaterId], 0); - if (ControlIdtoMaxHeaterId [HeaterId] == 0xFF) - ControlIdtoMaxHeaterId [HeaterId] = AddControlCallback( DcHeaterMaxTempCBFunction, eOneSecond,TemperatureSensorRead,(IfTypeHeaters*0x100+HeaterId),HeaterId2PT100Id[HeaterId],0); - } else if (HeaterId == HARDWARE_PID_CONTROL_TYPE__DryerAirTemperature) //AC Heaters { - if (ControlIdtoHeaterId [HeaterId] == 0xFF) - { - ControlIdtoHeaterId [HeaterId] = AddControlCallback( HeaterControlCBFunction, Frequency/*eOneSecond*/,TemperatureSensorRead,(IfTypeHeaters*0x100+HeaterId),DryerInternalPT100Id,0); - //HeaterPreviousRead[HeaterId] = TemperatureSensorRead(DryerInternalPT100Id); - HeaterPreviousRead[HeaterId] = GetFilteredHeaterRead(HeaterId);// - Report("PrepareHeater Read", __FILE__,__LINE__,HeaterId, SetTemperatue, HeaterPreviousRead[HeaterId], 0); - HeaterPreviousRead[HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain] = GetFilteredHeaterRead(HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain);//TemperatureSensorRead(HeaterId2PT100Id[HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain]); - HeaterPreviousRead[HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary] = GetFilteredHeaterRead(HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary);// = TemperatureSensorRead(HeaterId2PT100Id[HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary]); - } - if (ControlIdtoMaxHeaterId [HeaterId] == 0xFF) - ControlIdtoMaxHeaterId [HeaterId] = AddControlCallback( DcHeaterMaxTempCBFunction, eOneSecond,TemperatureSensorRead,(IfTypeHeaters*0x100+HeaterId),HeaterId2PT100Id[HeaterId],0); - - Enable_Reading_Heaters_Current(HeaterId2CurrentId[HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain]); - Enable_Reading_Heaters_Current(HeaterId2CurrentId[HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary]); - - HeaterRecalculateSharedHeatersParams(HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain, 0); - HeaterRecalculateSharedHeatersParams(HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary, 0); - if (MainDryerHeaterMaxTempControl == 0xFF) - MainDryerHeaterMaxTempControl = AddControlCallback( HeaterMaxTempCBFunction, eHundredMillisecond,TemperatureSensorRead,(IfTypeHeaters*0x100+HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain),HeaterId2PT100Id[HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain],0); - if (SecondDryerHeaterMaxTempControl == 0xFF) - SecondDryerHeaterMaxTempControl = AddControlCallback( HeaterMaxTempCBFunction, eHundredMillisecond,TemperatureSensorRead,(IfTypeHeaters*0x100+HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary),HeaterId2PT100Id[HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary],0); - //InitialHeating = true; - HeaterReady[HeaterId] = false; - if (BlowerCfg.enabled == true) - { - Turn_the_Blower_On();//Turn on with the Default_Voltage - if (BlowerCfg.heatingvoltage) - Control_Voltage_To_Blower(BlowerCfg.heatingvoltage); - else - Control_Voltage_To_Blower(BlowerCfg.voltage-500); - - } - if (SetTemperatue) - { - Control_Dryer_Fan(START,75);//use START or STOP, 0 - 100% - } + PrepareACHeater(HeaterId,Frequency,SetTemperatue); } return OK; } @@ -693,7 +727,7 @@ uint32_t DcHeaterMaxTempCBFunction(uint32_t IfIndex, uint32_t eadValue) return OK; } } - else //temperature withing limits + else //temperature within limits { if(UnderHeatCounter[index] ) { diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index 394e2ae13..6a8474438 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -427,9 +427,9 @@ uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue) JobEndReason = JOB_THREAD_BREAK; ThreadControlActive = false; SendJobProgress(0.0,0,false, TMessage); - //SegmentReady(Module_Thread,ModuleFail); - AlarmHandlingSetAlarm(EVENT_TYPE__THREAD_BREAK,true); - EndState(CurrentJob,"ReadBreakSensor Error" ); + SegmentReady(Module_Thread,ModuleFail); + //AlarmHandlingSetAlarm(EVENT_TYPE__THREAD_BREAK,true); + //EndState(CurrentJob,"ReadBreakSensor Error" ); LOG_ERROR(index, "ReadBreakSensor Error"); return OK; } //passed limit @@ -458,7 +458,7 @@ uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue) SendJobProgress(0.0,0,false, TMessage); //EndState(CurrentJob,TMessage ); SegmentReady(Module_Thread,ModuleFail); - switch (index) + /*switch (index) { case POOLER_MOTOR: AlarmHandlingSetAlarm(EVENT_TYPE__THREAD_TENSION_CONTROL_FAILURE_PULLER_DANCER,true); @@ -469,7 +469,7 @@ uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue) case WINDER_MOTOR: AlarmHandlingSetAlarm(EVENT_TYPE__THREAD_TENSION_CONTROL_FAILURE_WINDER_DANCER,true); break; - } + }*/ LOG_ERROR (DancerId, "Dancer Failure"); return OK; } diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c index 08233ce9a..e012dc020 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c @@ -43,6 +43,8 @@ #include "PMR/Hardware/Hardwaremotor.pb-c.h" #include "PMR/Hardware/HardwareWinder.pb-c.h" #include "PMR/common/MessageContainer.pb-c.h" +#include "PMR/Diagnostics/EventType.pb-c.h" + #include "Modules/General/process.h" #include "modules/Diagnostics/Diagnostics.h" @@ -748,6 +750,23 @@ void SendJobProgress(double ProcessedLength, int SegmentId, bool done, char *Mes { responseContainer.has_error = true; responseContainer.error = JobError_to_ErrorCode[JobEndReason]; + switch (JobEndReason) + { + case JOB_THREAD_BREAK: + AlarmHandlingSetAlarm(EVENT_TYPE__THREAD_BREAK,true); + break; + case JOB_POOLER_DANCER_FAIL: + AlarmHandlingSetAlarm(EVENT_TYPE__THREAD_TENSION_CONTROL_FAILURE_PULLER_DANCER,true); + break; + case JOB_FEEDER_DANCER_FAIL: + AlarmHandlingSetAlarm(EVENT_TYPE__THREAD_TENSION_CONTROL_FAILURE_FEEDER_DANCER,true); + break; + case JOB_WINDER_DANCER_FAIL: + AlarmHandlingSetAlarm(EVENT_TYPE__THREAD_TENSION_CONTROL_FAILURE_WINDER_DANCER,true); + break; + default: + break; + } } if (JobAbortedByUser == true) { -- cgit v1.3.1 From 9aab05cf66c58ae6f444ddcece0aa02e0fa54a3a Mon Sep 17 00:00:00 2001 From: Avi Levkovich Date: Wed, 6 Mar 2019 13:12:43 +0200 Subject: update the function Read_Head_MixChip_Heaters_Current + stub for HeatersEnd --- .../Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c | 12 ++++++------ .../Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Heater.c | 7 ++++++- 2 files changed, 12 insertions(+), 7 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c index 53fa64db4..94db2e3f4 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c @@ -305,27 +305,27 @@ uint32_t Read_Head_MixChip_Heaters_Current(HEATERS_CURRENT Heater_ID) //0-5 { case HEAD_ZONE_1: I2C_Slave_Add = 0x40; - Channel = 0x08; + Channel = 0x10; break; case HEAD_ZONE_2: I2C_Slave_Add = 0x40; - Channel = 0x10; + Channel = 0x08; break; case HEAD_ZONE_3: I2C_Slave_Add = 0x40; - Channel = 0x20; + Channel = 0x04; break; case HEAD_ZONE_4: I2C_Slave_Add = 0x44; - Channel = 0x01; + Channel = 0x80; break; case HEAD_ZONE_5_6: I2C_Slave_Add = 0x44; - Channel = 0x02; + Channel = 0x40; break; case MIXCHIP: I2C_Slave_Add = 0x46; - Channel = 0x20; + Channel = 0x08; break; default: diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Heater.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Heater.c index 47e1bda34..7735c9955 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Heater.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Heater.c @@ -25,7 +25,7 @@ void Stub_HeaterRequest(MessageContainer* requestContainer) { - uint32_t status = NOT_SUPPORTED; + uint32_t status = PASSED; MessageContainer responseContainer; StubHeaterRequest* request = stub_heater_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data); @@ -35,6 +35,11 @@ void Stub_HeaterRequest(MessageContainer* requestContainer) request->heatergroupon */ + if((request->heatergroupid == 0xff) && (request->heatergroupon == false) && (request->heatertemperaturereq == 0)) + { + HeatersEnd(); + } + else if (request->heatergroupon ) status = ActivateHeater(request->heatergroupid); else -- cgit v1.3.1 From c6a0bc8f103aeaccaee8ffcd83d8f0741e006bfc Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Wed, 6 Mar 2019 18:11:12 +0200 Subject: current added to the diagnostics data. added protobuf parameters compiled. --- .../PMR/Diagnostics/DiagnosticsMonitors.pb-c.c | 110 ++++++++++++++++++++- .../PMR/Diagnostics/DiagnosticsMonitors.pb-c.h | 18 +++- .../ConfigurationParameters.pb-c.c | 45 ++++++++- .../ConfigurationParameters.pb-c.h | 8 +- .../Embedded/Modules/Diagnostics/Diagnostics.c | 23 +++++ .../PMR/Messages/Debugging/DebugLogCategory.proto | 2 +- 6 files changed, 197 insertions(+), 9 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') 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 3bbdcdd8c..2a5974162 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[55] = +static const ProtobufCFieldDescriptor diagnostics_monitors__field_descriptors[63] = { { "Dancer1Angle", @@ -714,6 +714,102 @@ static const ProtobufCFieldDescriptor diagnostics_monitors__field_descriptors[55 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "DrierZone1HeaterCurrent", + 56, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_DOUBLE, + offsetof(DiagnosticsMonitors, n_drierzone1heatercurrent), + offsetof(DiagnosticsMonitors, drierzone1heatercurrent), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "DrierZone2HeaterCurrent", + 57, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_DOUBLE, + offsetof(DiagnosticsMonitors, n_drierzone2heatercurrent), + offsetof(DiagnosticsMonitors, drierzone2heatercurrent), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "HeadZone1HeaterCurrent", + 58, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_DOUBLE, + offsetof(DiagnosticsMonitors, n_headzone1heatercurrent), + offsetof(DiagnosticsMonitors, headzone1heatercurrent), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "HeadZone2HeaterCurrent", + 59, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_DOUBLE, + offsetof(DiagnosticsMonitors, n_headzone2heatercurrent), + offsetof(DiagnosticsMonitors, headzone2heatercurrent), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "HeadZone3HeaterCurrent", + 60, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_DOUBLE, + offsetof(DiagnosticsMonitors, n_headzone3heatercurrent), + offsetof(DiagnosticsMonitors, headzone3heatercurrent), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "HeadZone4HeaterCurrent", + 61, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_DOUBLE, + offsetof(DiagnosticsMonitors, n_headzone4heatercurrent), + offsetof(DiagnosticsMonitors, headzone4heatercurrent), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "HeadZone5_6HeaterCurrent", + 62, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_DOUBLE, + offsetof(DiagnosticsMonitors, n_headzone5_6heatercurrent), + offsetof(DiagnosticsMonitors, headzone5_6heatercurrent), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "Mixer1HeaterCurrent", + 63, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_DOUBLE, + offsetof(DiagnosticsMonitors, n_mixer1heatercurrent), + offsetof(DiagnosticsMonitors, mixer1heatercurrent), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, }; static const unsigned diagnostics_monitors__field_indices_by_name[] = { 38, /* field[38] = BlowerVoltage */ @@ -741,6 +837,8 @@ static const unsigned diagnostics_monitors__field_indices_by_name[] = { 23, /* field[23] = DispensersLinearPositions */ 21, /* field[21] = DispensersMotorsFrequency */ 24, /* field[24] = DispensersPressure */ + 55, /* field[55] = DrierZone1HeaterCurrent */ + 56, /* field[56] = DrierZone2HeaterCurrent */ 19, /* field[19] = DryerAirFlow */ 4, /* field[4] = DryerMotor */ 16, /* field[16] = DryerZone1Temperature */ @@ -750,11 +848,16 @@ static const unsigned diagnostics_monitors__field_indices_by_name[] = { 14, /* field[14] = FeederTension */ 25, /* field[25] = FilterDeltaPressure */ 13, /* field[13] = HeadAirFlow */ + 57, /* field[57] = HeadZone1HeaterCurrent */ 10, /* field[10] = HeadZone1Temperature */ + 58, /* field[58] = HeadZone2HeaterCurrent */ 11, /* field[11] = HeadZone2Temperature */ + 59, /* field[59] = HeadZone3HeaterCurrent */ 12, /* field[12] = HeadZone3Temperature */ + 60, /* field[60] = HeadZone4HeaterCurrent */ 35, /* field[35] = HeadZone4Temperature */ 36, /* field[36] = HeadZone5Temperature */ + 61, /* field[61] = HeadZone5_6HeaterCurrent */ 37, /* field[37] = HeadZone6Temperature */ 47, /* field[47] = MidTank1Level */ 48, /* field[48] = MidTank2Level */ @@ -764,6 +867,7 @@ static const unsigned diagnostics_monitors__field_indices_by_name[] = { 52, /* field[52] = MidTank6Level */ 53, /* field[53] = MidTank7Level */ 54, /* field[54] = MidTank8Level */ + 62, /* field[62] = Mixer1HeaterCurrent */ 9, /* field[9] = MixerTemperature */ 5, /* field[5] = PollerMotor */ 15, /* field[15] = PullerTension */ @@ -775,7 +879,7 @@ static const unsigned diagnostics_monitors__field_indices_by_name[] = { static const ProtobufCIntRange diagnostics_monitors__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 55 } + { 0, 63 } }; const ProtobufCMessageDescriptor diagnostics_monitors__descriptor = { @@ -785,7 +889,7 @@ const ProtobufCMessageDescriptor diagnostics_monitors__descriptor = "DiagnosticsMonitors", "", sizeof(DiagnosticsMonitors), - 55, + 63, 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 5917ffd76..13ebbaf21 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 @@ -137,10 +137,26 @@ struct _DiagnosticsMonitors double *midtank7level; size_t n_midtank8level; double *midtank8level; + size_t n_drierzone1heatercurrent; + double *drierzone1heatercurrent; + size_t n_drierzone2heatercurrent; + double *drierzone2heatercurrent; + size_t n_headzone1heatercurrent; + double *headzone1heatercurrent; + size_t n_headzone2heatercurrent; + double *headzone2heatercurrent; + size_t n_headzone3heatercurrent; + double *headzone3heatercurrent; + size_t n_headzone4heatercurrent; + double *headzone4heatercurrent; + size_t n_headzone5_6heatercurrent; + double *headzone5_6heatercurrent; + size_t n_mixer1heatercurrent; + double *mixer1heatercurrent; }; #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 } /* DiagnosticsMonitors methods */ diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/EmbeddedParameters/ConfigurationParameters.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/EmbeddedParameters/ConfigurationParameters.pb-c.c index 5e36720c9..b5e08ea1f 100644 --- a/Software/Embedded_SW/Embedded/Communication/PMR/EmbeddedParameters/ConfigurationParameters.pb-c.c +++ b/Software/Embedded_SW/Embedded/Communication/PMR/EmbeddedParameters/ConfigurationParameters.pb-c.c @@ -52,7 +52,7 @@ void configuration_parameters__free_unpacked assert(message->base.descriptor == &configuration_parameters__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -static const ProtobufCFieldDescriptor configuration_parameters__field_descriptors[18] = +static const ProtobufCFieldDescriptor configuration_parameters__field_descriptors[21] = { { "BreakSensorLimit", @@ -270,6 +270,42 @@ static const ProtobufCFieldDescriptor configuration_parameters__field_descriptor 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "DispenserPresegmentWFCF", + 19, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_DOUBLE, + offsetof(ConfigurationParameters, has_dispenserpresegmentwfcf), + offsetof(ConfigurationParameters, dispenserpresegmentwfcf), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "StartHeatingOnInitSequence", + 20, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_BOOL, + offsetof(ConfigurationParameters, has_startheatingoninitsequence), + offsetof(ConfigurationParameters, startheatingoninitsequence), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "GeneralParameters", + 21, + PROTOBUF_C_LABEL_REPEATED, + PROTOBUF_C_TYPE_DOUBLE, + offsetof(ConfigurationParameters, n_generalparameters), + offsetof(ConfigurationParameters, generalparameters), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, }; static const unsigned configuration_parameters__field_indices_by_name[] = { 13, /* field[13] = ACHeatersLowerOperationLimit */ @@ -283,18 +319,21 @@ static const unsigned configuration_parameters__field_indices_by_name[] = { 10, /* field[10] = DispenserBuildPressureLimit */ 9, /* field[9] = DispenserBuildPressureSpeed */ 11, /* field[11] = DispenserBuildPressureTimeout */ + 18, /* field[18] = DispenserPresegmentWFCF */ + 20, /* field[20] = GeneralParameters */ 6, /* field[6] = InitialDispenserPressure */ 8, /* field[8] = InitialDispenserTimeLag */ 7, /* field[7] = InitialDispenserTimeout */ 17, /* field[17] = MidTankPressureCorrection */ 5, /* field[5] = OpenValveTimeout */ 2, /* field[2] = OverHeatCountLimit */ + 19, /* field[19] = StartHeatingOnInitSequence */ 3, /* field[3] = UnderHeatCountLimit */ }; static const ProtobufCIntRange configuration_parameters__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 18 } + { 0, 21 } }; const ProtobufCMessageDescriptor configuration_parameters__descriptor = { @@ -304,7 +343,7 @@ const ProtobufCMessageDescriptor configuration_parameters__descriptor = "ConfigurationParameters", "", sizeof(ConfigurationParameters), - 18, + 21, configuration_parameters__field_descriptors, configuration_parameters__field_indices_by_name, 1, configuration_parameters__number_ranges, diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/EmbeddedParameters/ConfigurationParameters.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/EmbeddedParameters/ConfigurationParameters.pb-c.h index 307352efd..3911bbcb1 100644 --- a/Software/Embedded_SW/Embedded/Communication/PMR/EmbeddedParameters/ConfigurationParameters.pb-c.h +++ b/Software/Embedded_SW/Embedded/Communication/PMR/EmbeddedParameters/ConfigurationParameters.pb-c.h @@ -62,10 +62,16 @@ struct _ConfigurationParameters uint32_t dcheatersupperoperationlimit; protobuf_c_boolean has_midtankpressurecorrection; double midtankpressurecorrection; + protobuf_c_boolean has_dispenserpresegmentwfcf; + double dispenserpresegmentwfcf; + protobuf_c_boolean has_startheatingoninitsequence; + protobuf_c_boolean startheatingoninitsequence; + size_t n_generalparameters; + double *generalparameters; }; #define CONFIGURATION_PARAMETERS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&configuration_parameters__descriptor) \ - , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,NULL } /* ConfigurationParameters methods */ diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c index 72dd92d54..45db83b83 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c @@ -92,6 +92,7 @@ double dryerzone3temperature[DIAGNOSTICS_LIMIT]; double dispensermotorfrequency[MAX_SYSTEM_DISPENSERS][DIAGNOSTICS_LIMIT]; double dispenserspressure[MAX_SYSTEM_DISPENSERS][DIAGNOSTICS_LIMIT]; double MidTankpressure[MAX_SYSTEM_DISPENSERS][1]; +double HeatersCurrent[NUM_OF_HEATERS][1]; DoubleArray DispenserFreq[MAX_SYSTEM_DISPENSERS]; DoubleArray DiagnosticsDispenserPressure[MAX_SYSTEM_DISPENSERS]; @@ -347,6 +348,10 @@ void Diagnostic100msecCollection(void) dispenserspressure[i][DiagnosticsIndex] = GetDispenserPressure(i); //Read_MidTank_Pressure_Sensor MidTankpressure[i][0] = Get_MidTank_Pressure_Sensor(i); } + for (i=0;i Date: Thu, 7 Mar 2019 17:08:42 +0200 Subject: Add system fans + read the tacho of the new small drawer fans --- Software/Embedded_SW/Embedded/DataDef.h | 26 +++++ Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c | 105 ++++++++++++++++----- .../Embedded/Modules/Control/MillisecTask.c | 12 ++- .../Embedded/Modules/Control/MillisecTask.h | 1 + 4 files changed, 118 insertions(+), 26 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/DataDef.h b/Software/Embedded_SW/Embedded/DataDef.h index cf137a00a..4601e971b 100644 --- a/Software/Embedded_SW/Embedded/DataDef.h +++ b/Software/Embedded_SW/Embedded/DataDef.h @@ -243,6 +243,32 @@ typedef enum CART3 = 3, }CARTREGE; */ + +typedef struct +{ + bool DRAWER_BIG; //bit 0 + bool DRAWER_SMALL0;//bit 1 + bool DRAWER_SMALL1;//bit 2 + bool DRAWER_SMALL2;//bit 3 + bool DRAWER_SMALL3;//bit 4 + bool SYSTEM_FAN0; //bit 5 + bool SYSTEM_FAN1; //bit 6 + bool SYSTEM_FAN2; //bit 7 +}FANS_STATUS; + +enum +{ + DRAWER_B, + DRAWER_S0, + DRAWER_S1, + DRAWER_S2, + DRAWER_S3, + SYSTEM_0, + SYSTEM_1, + SYSTEM_2, + MAX_FANS, +}FANS_ID; + //--------------------- #define MaxFlashWords 128 //1K #define MaxFlashBytes MaxFlashWords*4 //4K Byte diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c index 8efa3998f..454e82c28 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c @@ -9,6 +9,7 @@ #include "FPGA_Rename.h" #include "FPGA_COMM.h" +#include #include "driverlib/sysctl.h" //for SysCtlDelay #include @@ -191,20 +192,29 @@ uint32_t Calculate_Tacho_Fan_Speed(uint32_t OSC_IN, uint8_t PPR, uint16_t Presca } +uint32_t Fans_Speed_RPM[MAX_FANS]; + -uint32_t Read_Fans_Tacho() +FANS_STATUS Read_Fans_Tacho() { - uint32_t Status = 0; - uint32_t Drawer_Fan_Speed_RPM = 0; + FANS_STATUS Fans_Status; + #ifndef EVALUATION_BOARD // The big Fan in the drawer - Drawer_Fan_Speed_RPM = Calculate_Tacho_Fan_Speed(29166666, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg0); - - if( Drawer_Fan_Speed_RPM < 1000 ) // need to work around 3000 RPM - Status|= 0x01;// not working / Low Speed + Fans_Speed_RPM[DRAWER_B] = Calculate_Tacho_Fan_Speed(29166666, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg0); + Fans_Speed_RPM[DRAWER_S0] = Calculate_Tacho_Fan_Speed(29166666, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg1); + Fans_Speed_RPM[DRAWER_S1] = Calculate_Tacho_Fan_Speed(29166666, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg2); + Fans_Speed_RPM[DRAWER_S2] = Calculate_Tacho_Fan_Speed(29166666, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg3); + Fans_Speed_RPM[DRAWER_S3] = Calculate_Tacho_Fan_Speed(29166666, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg4); + Fans_Speed_RPM[SYSTEM_0] = Calculate_Tacho_Fan_Speed(29166666, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg5); + Fans_Speed_RPM[SYSTEM_1] = Calculate_Tacho_Fan_Speed(29166666, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg6); + Fans_Speed_RPM[SYSTEM_2] = Calculate_Tacho_Fan_Speed(29166666, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg7); + + if( Fans_Speed_RPM[DRAWER_B] < 1000 ) // need to work around 3000 RPM + Fans_Status.DRAWER_BIG = ERROR;// not working / Low Speed else - Status&= ~0x01;//working (Speed ~0x400) + Fans_Status.DRAWER_BIG = OK;//working (Speed ~0x400) // The 4 small Fans in the drawer // F1_gpi_FANS @@ -212,7 +222,10 @@ uint32_t Read_Fans_Tacho() // “1” Fan working if (F1_gpi_FANS == 0x0F ) { - Status&= ~(0x0F<<1);//working + Fans_Status.DRAWER_SMALL0 = OK;//working + Fans_Status.DRAWER_SMALL1 = OK;//working + Fans_Status.DRAWER_SMALL2 = OK;//working + Fans_Status.DRAWER_SMALL3 = OK;//working } else { @@ -221,28 +234,72 @@ uint32_t Read_Fans_Tacho() bool F1_FAN3_TACH = (F1_gpi_FANS & 0x04)>>0x02; bool F1_FAN4_TACH = (F1_gpi_FANS & 0x08)>>0x03; - if( F1_FAN1_TACH == 0) // Small Fan in the drawer - Status|= (0x01<<1);// not working + if(( Fans_Speed_RPM[DRAWER_S0] < 3000 ) && ( F1_FAN1_TACH == 0)) // need to work around 5000 RPM + { + Fans_Status.DRAWER_SMALL0 = ERROR;/// not working / Low Speed + } else - Status&= ~(0x01<<1);//working + { + Fans_Status.DRAWER_SMALL0 = OK;//working (Speed ~0x400) + } - if( F1_FAN2_TACH == 0) // Small Fan in the drawer - Status|= (0x01<<2);// not working + if(( Fans_Speed_RPM[DRAWER_S1] < 3000 ) && ( F1_FAN2_TACH == 0)) // Small Fan in the drawer // need to work around 5000 RPM + { + Fans_Status.DRAWER_SMALL1 = ERROR;// not working / Low Speed + } else - Status&= ~(0x01<<2);//working - - if( F1_FAN3_TACH == 0) // Small Fan in the drawer - Status|= (0x01<<3);// not working + { + Fans_Status.DRAWER_SMALL1 = OK;//working (Speed ~0x400) + } + if(( Fans_Speed_RPM[DRAWER_S2] < 3000 ) && ( F1_FAN3_TACH == 0)) // Small Fan in the drawer // need to work around 5000 RPM + { + Fans_Status.DRAWER_SMALL2 = ERROR;// not working / Low Speed + } else - Status&= ~(0x01<<3);//working - - if( F1_FAN4_TACH == 0) // Small Fan in the drawer - Status|= (0x01<<4);// not working + { + Fans_Status.DRAWER_SMALL2 = OK;//working (Speed ~0x400) + } + if(( Fans_Speed_RPM[DRAWER_S3] < 3000 ) && ( F1_FAN4_TACH == 0)) // Small Fan in the drawer // need to work around 3050 RPM + { + Fans_Status.DRAWER_SMALL3 = ERROR;// not working / Low Speed + } else - Status&= ~(0x01<<4);//working + { + Fans_Status.DRAWER_SMALL3 = OK;//working (Speed ~0x400) < 1000 ) // need to work around 5000 RPM + } + + } + + if( Fans_Speed_RPM[SYSTEM_0] < 1000 ) // need to work around 3050 RPM + { + Fans_Status.SYSTEM_FAN0 = ERROR;// not working / Low Speed } + else + { + Fans_Status.SYSTEM_FAN0 = OK;//working (Speed ~0x400) + } + + if( Fans_Speed_RPM[SYSTEM_1] < 1000 ) // need to work around 3050 RPM + { + Fans_Status.SYSTEM_FAN1 = ERROR;// not working / Low Speed + } + else + { + Fans_Status.SYSTEM_FAN1 = OK;//working (Speed ~0x400) + } + + if( Fans_Speed_RPM[SYSTEM_2] < 1000 ) // need to work around 3050 RPM + { + Fans_Status.SYSTEM_FAN2 = ERROR;// not working / Low Speed + } + else + { + Fans_Status.SYSTEM_FAN2 = OK;//working (Speed ~0x400) + } + #endif - return Status; + + return Fans_Status; } //------------------------- WHS ---------------------- diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index db6624fd4..8e4a36e62 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -84,6 +84,8 @@ typedef struct MillisecMessage{ uint32_t Dancer_Data[NUM_OF_DANCERS] = {0}; float Speed_Data = 0; uint32_t DrawerFansStatus = 0; +uint32_t SystemFansStatus = 0; + bool watchdogCriticalAlarm = false; @@ -445,7 +447,7 @@ uint32_t MillisecLoop(uint32_t tick) } uint32_t MillisecLowLoop(uint32_t tick) { - uint8_t Motor_i,Disp_i,Heater_i; + uint8_t Motor_i,Disp_i,Heater_i,temp; TEMPERATURE_SENSOR_ID_ENUM Sensor_i; //static int temp=0; @@ -497,7 +499,9 @@ uint32_t MillisecLowLoop(uint32_t tick) //Read_MidTank_Pressure_Sensor(Disp_i); } FPGA_GetAllDispensersValveBusyOCD(); - DrawerFansStatus = Read_Fans_Tacho(); + temp = Read_Fans_Tacho(); + DrawerFansStatus = temp & 0x1F; + SystemFansStatus = temp & 0xE0; KeepAliveOneSecondCall(); for (Motor_i = 0;Motor_i < NUM_OF_MOTORS;Motor_i++) { @@ -617,6 +621,10 @@ uint32_t getDrawerFansStatus(void) { return DrawerFansStatus; } +uint32_t getSystemFansStatus(void) +{ + return SystemFansStatus; +} #ifdef HUNDRED_MICROSECONDS_DANCER_READ uint32_t DancerData[NUM_OF_DANCERS]; uint32_t Control_Read_Dancer_Position(HardwareDancerType DancerId, uint32_t Parameter1, uint32_t Parameter2) diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h index 61c7df7ee..7e2af1079 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h @@ -31,6 +31,7 @@ uint32_t getADCData(int DeviceId); */ float getSensorSpeedData(void); uint32_t getDrawerFansStatus(void); +uint32_t getSystemFansStatus(void); void MillisecInit(void); void MillisecStop(void); -- cgit v1.3.1 From db525669f8bcc4e1f911274dc53b6bf646eedff6 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Sun, 10 Mar 2019 12:13:12 +0200 Subject: suspend FAN checking pending tests. initial fix for dispensers storage --- .../Embedded_SW/Embedded/Modules/Control/MillisecTask.c | 4 ++-- Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c | 13 ++++++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index 8e4a36e62..5fe242436 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -499,9 +499,9 @@ uint32_t MillisecLowLoop(uint32_t tick) //Read_MidTank_Pressure_Sensor(Disp_i); } FPGA_GetAllDispensersValveBusyOCD(); - temp = Read_Fans_Tacho(); + /*temp = Read_Fans_Tacho(); DrawerFansStatus = temp & 0x1F; - SystemFansStatus = temp & 0xE0; + SystemFansStatus = temp & 0xE0;*/ KeepAliveOneSecondCall(); for (Motor_i = 0;Motor_i < NUM_OF_MOTORS;Motor_i++) { diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c index 1e33b99ca..7978e77bb 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c @@ -223,6 +223,12 @@ void IDS_Dispenser_Content_Init (void) for(i=0;idispenserinfo[i],sizeof(DispenserRunningData)); + IDS_Dispenser_Data[i].has_consumedinnanolitter = true; + IDS_Dispenser_Data[i].has_totalconsumedinnanolitter = true; + IDS_Dispenser_Data[i].has_direction = true; + IDS_Dispenser_Data[i].has_microsteps = true; + IDS_Dispenser_Data[i].has_numberofrefills = true; + IDS_Dispenser_Data[i].has_nanolitterperpulse = true; } free (buffer); dispenser_data__free_unpacked(NULL,StoredDispenserData); @@ -239,12 +245,17 @@ void IDS_Dispenser_Content_Calculation (char DispenserId) TimerMotors_t HW_Motor_Id = DispenserIdToMotorId[DispenserId]; double consumedintimeframe = MotorDriverRequest[HW_Motor_Id].Speed*IDS_Dispenser_Data[DispenserId].microsteps* IDS_Dispenser_Data[DispenserId].nanolitterperpulse * dir; + //consumedintimeframe = 10+DispenserId; IDS_Dispenser_Data[DispenserId].consumedinnanolitter += consumedintimeframe; IDS_Dispenser_Data[DispenserId].totalconsumedinnanolitter += consumedintimeframe; if (DispenserId == 0) { - if (seconds_counter++>=3600) + if (seconds_counter++>=600)//3600) { + if (IDS_Dispenser_Data[DispenserId].consumedinnanolitter) + { + REPORT_MSG(IDS_Dispenser_Data[DispenserId].consumedinnanolitter,"Saving Dispenser Data" ); + } seconds_counter = 0; IDSDispenserData.n_dispenserinfo = MAX_SYSTEM_DISPENSERS; IDSDispenserData.dispenserinfo = dispenserdata; -- cgit v1.3.1 From 719d6a683c0f7bfdef232003385e5da14c4522e7 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Sun, 10 Mar 2019 12:28:26 +0200 Subject: dispenser info logs --- .../Embedded/Modules/IDS/IDS_dispenser.c | 3 + .../Stubs Collection/stubs/get dispenser data.cs | 73 ++++++++++++++++++++++ 2 files changed, 76 insertions(+) create mode 100644 Software/Stubs Collection/stubs/get dispenser data.cs (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c index 7978e77bb..2c50f8647 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c @@ -279,6 +279,7 @@ void IDS_Dispenser_Set_Flow_Params (char DispenserId,double nanolitterperpulse,c IDS_Dispenser_Data[DispenserId].nanolitterperpulse = nanolitterperpulse; IDS_Dispenser_Data[DispenserId].microsteps = microsteps; IDS_Dispenser_Data[DispenserId].direction = 1; + Report("IDS_Dispenser_Set_Flow_Params",__FILE__,DispenserId,(int)nanolitterperpulse,RpWarning,microsteps,0); } void IDS_Dispenser_RefillStarted (char DispenserId) { @@ -287,6 +288,7 @@ void IDS_Dispenser_RefillStarted (char DispenserId) IDS_Dispenser_Data[DispenserId].nanolitterperpulse = assumedFlow; IDS_Dispenser_Data[DispenserId].microsteps = 1; IDS_Dispenser_Data[DispenserId].direction = 0; + Report("IDS_Dispenser_RefillStarted",__FILE__,__LINE__,(int)DispenserId,RpWarning,(int)(assumedFlow*100),0); } void IDS_Dispenser_RefillEnded (char DispenserId) { @@ -294,6 +296,7 @@ void IDS_Dispenser_RefillEnded (char DispenserId) IDS_Dispenser_Data[DispenserId].numberofrefills++; IDS_Dispenser_Data[DispenserId].direction = 1; IDS_Dispenser_Data[DispenserId].consumedinnanolitter = 0; + Report("IDS_Dispenser_RefillEnded",__FILE__,__LINE__,(int)DispenserId,RpWarning,(int)IDS_Dispenser_Data[DispenserId].numberofrefills,0); } void IDS_Dispenser_MovingDirection (char DispenserId, bool direction) { diff --git a/Software/Stubs Collection/stubs/get dispenser data.cs b/Software/Stubs Collection/stubs/get dispenser data.cs new file mode 100644 index 000000000..126cc5ee2 --- /dev/null +++ b/Software/Stubs Collection/stubs/get dispenser data.cs @@ -0,0 +1,73 @@ +using System; +using System.Text; +using System.Linq; +using System.Drawing; +using System.Diagnostics; +using System.Windows.Forms; +using System.Threading; +using System.Threading.Tasks; +using System.Collections.Generic; +using Tango.PMR.IO; +using Tango.Stubs; +using Google.Protobuf; +using System.IO; + +public void OnExecute(StubManager stubManager) +{ + +GetStorageInfoRequest getStorageInfoRequest = new GetStorageInfoRequest(); + var response = stubManager.Run(getStorageInfoRequest); + + +CreateRequest createRequest = new CreateRequest(); +createRequest.Attribute = Tango.PMR.IO.FileAttribute.Directory; +createRequest.Path = "0://Shlomo"; + var response1 = stubManager.Run(createRequest); + +DeleteRequest deleteRequest = new DeleteRequest(); +deleteRequest.Path = "0://Shlomo//Shlomo1.txt"; + var response5 = stubManager.Run(deleteRequest); +deleteRequest.Path = "0://Shlomo//Shlomo2.txt"; + response5 = stubManager.Run(deleteRequest); + + createRequest.Attribute = 0; +createRequest.Path = "0://Shlomo//Shlomo1.txt"; + response1 = stubManager.Run(createRequest); +createRequest.Attribute = 0; +createRequest.Path = "0://Shlomo//Shlomo2.txt"; + response1 = stubManager.Run(createRequest); + + +byte[] fileBytes = File.ReadAllBytes("C:\\FileSystemTests\\test.txt"); + +FileUploadRequest fileUploadRequest = new FileUploadRequest(); +fileUploadRequest.Path = "0://Shlomo//Shlomo1.txt"; +fileUploadRequest.Length = (int)fileBytes.Length; +FileUploadResponse response2 = stubManager.Run(fileUploadRequest); + +long chunk_size = response2.MaxChunkLength; + +FileStream fs = new FileStream("C:\\FileSystemTests\\test.txt",FileMode.Open); + +while (fs.Position < fs.Length) +{ + stubManager.Write("Position "+ fs.Position+ " Length "+ fs.Length +"\n\n"); + FileChunkUploadRequest fileChunkUploadRequest = new FileChunkUploadRequest(); + fileChunkUploadRequest.UploadID = response2.UploadID; + byte[] chunk = new byte[Math.Min(chunk_size,fs.Length - fs.Position)]; + fs.Read(chunk,0,chunk.Length); + fileChunkUploadRequest.Path = "0://Shlomo//Shlomo1.txt"; + fileChunkUploadRequest.Buffer = ByteString.CopyFrom(chunk); + var response3 = stubManager.Run(fileChunkUploadRequest); + //Thread.Sleep(2000); + +} + + +GetFilesRequest getFilesRequest = new GetFilesRequest(); +getFilesRequest.Path = "0://Shlomo"; + + var response4 = stubManager.Run(getFilesRequest); + + +} \ No newline at end of file -- cgit v1.3.1 From b9306bd57e04308d69ce46ed711fd12dfe0843e8 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Mon, 11 Mar 2019 10:15:20 +0200 Subject: version 1.3.7.88: send parameters on job request. no initial heating. removed some logs --- .../Embedded_SW/Embedded/Common/SW_Info/SW_Info.c | 2 +- Software/Embedded_SW/Embedded/DataDef.h | 2 +- .../Embedded_SW/Embedded/Drivers/Valves/Valve.c | 4 ++-- .../Embedded/Modules/IDS/IDS_dispenser.c | 24 +++++++++++----------- .../Embedded/Modules/Thread/Thread_Winder.c | 2 +- .../StateMachines/Initialization/InitSequence.c | 6 +++++- .../Embedded/StateMachines/Printing/JobSTM.c | 4 ++-- 7 files changed, 24 insertions(+), 20 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') 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 5d952c72a..15e9fe828 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,3,7,84}; +TangoVersion_t _gTangoVersion = {1,3,7,88}; #define BUILD_DATE __DATE__ char Dat[50] = BUILD_DATE; char _gTangoName [MAX_STRING_LEN] = "Tango01 ";//d diff --git a/Software/Embedded_SW/Embedded/DataDef.h b/Software/Embedded_SW/Embedded/DataDef.h index 4601e971b..60a6dfe12 100644 --- a/Software/Embedded_SW/Embedded/DataDef.h +++ b/Software/Embedded_SW/Embedded/DataDef.h @@ -17,7 +17,7 @@ //#define DEMO_TEMPERATURE //#define TEST_LONGER_PID_THREAD //#define HUNDRED_MICROSECONDS_DANCER_READ - +#define NO_INITIAL_HEATING #define MAX_STRING_LEN 255 //Embedded version + filter.c #define MAX_ERR_SAMPLES 5 //Number of Samples before sending error diff --git a/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c b/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c index af7cb9731..3b1d53758 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c +++ b/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c @@ -367,8 +367,8 @@ uint32_t Control3WayValvesWithCallback (Valves_t _ValveId, bool direction, callb Valve3WayControlId[_ValveId] = AddControlCallback( Valve3WayCallBackFunction, eOneSecond/*eHundredMillisecond*/, FPGA_GetDispenserValveBusyOCD,(IfTypeDisopenser*0x100+_ValveId), _ValveId, 0 ); if (Valve3WayControlId[_ValveId] == 0xFF) Report("Add control callback failed",__FILE__,__LINE__,(int)_ValveId,RpWarning,(int)Valve3WayControlId[_ValveId],0); - else - Report("Add control callback",__FILE__,__LINE__,(int)_ValveId,RpWarning,(int)Valve3WayControlId[_ValveId],0); + //else + // Report("Add control callback",__FILE__,__LINE__,(int)_ValveId,RpWarning,(int)Valve3WayControlId[_ValveId],0); EnableDisableDispenserValve(_ValveId, ENABLE); diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c index 2c50f8647..acaf19744 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c @@ -86,7 +86,7 @@ uint32_t IDS_Dispenser_Build_Pressure_Callback(uint32_t DispenserId, uint32_t Re uint32_t IDS_Dispenser_Build_Pressure(int DispenserId, callback_fptr callback) { DispenserCallback[DispenserId] = callback; - Report("Control3WayValvesWithCallback called ",__FILE__,__LINE__,(int)DispenserId,RpWarning,(int)0,0); + //Report("Control3WayValvesWithCallback called ",__FILE__,__LINE__,(int)DispenserId,RpWarning,(int)0,0); Control3WayValvesWithCallback ((Valves_t)DispenserId, CloseValve, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer if (DispenserControlId[DispenserId] != 0xFF) @@ -97,7 +97,7 @@ uint32_t IDS_Dispenser_Build_Pressure_Callback(uint32_t DispenserId, uint32_t Re Report("Add control callback failed",__FILE__,__LINE__,(int)DispenserId,RpWarning,(int)DispenserControlId[DispenserId],0); else { - Report("Add control callback",__FILE__,__LINE__,(int)DispenserId,RpWarning,(int)DispenserControlId[DispenserId],0); + //Report("Add control callback",__FILE__,__LINE__,(int)DispenserId,RpWarning,(int)DispenserControlId[DispenserId],0); DispenserPrepareTime[DispenserId]=0; TimerMotors_t HW_Motor_Id = DispenserIdToMotorId[DispenserId]; MotorSetSpeed(HW_Motor_Id, DispenserPrepareSpeed); @@ -130,7 +130,7 @@ uint32_t IDS_Dispenser_Build_Pressure_Callback(uint32_t DispenserId, uint32_t Re uint32_t IDS_Dispenser_Close_Valve_And_Stop_Motor(int DispenserId, callback_fptr callback) { DispenserCallback[DispenserId] = callback; - Report("IDS_Dispenser_Close_Valve_And_Stop_Motor",__FILE__,__LINE__,(int)DispenserId,RpWarning,(int)msec_millisecondCounter,0); + //Report("IDS_Dispenser_Close_Valve_And_Stop_Motor",__FILE__,__LINE__,(int)DispenserId,RpWarning,(int)msec_millisecondCounter,0); Control3WayValvesWithCallback ((Valves_t)DispenserId, CloseValve, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer if (DispenserControlId[DispenserId] != 0xFF) @@ -139,22 +139,22 @@ uint32_t IDS_Dispenser_Build_Pressure_Callback(uint32_t DispenserId, uint32_t Re DispenserControlId[DispenserId] = AddControlCallback( IDS_Dispenser_StopMotorCallback, CloseValveTimeout, TemplateDataReadCBFunction,DispenserId, DispenserId, 0 ); if (DispenserControlId[DispenserId] == 0xFF) Report("Add control callback failed",__FILE__,__LINE__,(int)DispenserId,RpWarning,(int)DispenserControlId[DispenserId],0); - else - Report("Add control callback",__FILE__,__LINE__,(int)DispenserId,RpWarning,(int)DispenserControlId[DispenserId],0); + //else + // Report("Add control callback",__FILE__,__LINE__,(int)DispenserId,RpWarning,(int)DispenserControlId[DispenserId],0); return OK; } uint32_t IDS_Dispenser_OpenValveCallback(uint32_t DispenserId, uint32_t ReadValue) { - Report("IDS_Dispenser_Start_Motor_and_Open_Valve Callback",__FILE__,__LINE__,(int)DispenserId,RpWarning,(int)msec_millisecondCounter,0); + //Report("IDS_Dispenser_Start_Motor_and_Open_Valve Callback",__FILE__,__LINE__,(int)DispenserId,RpWarning,(int)msec_millisecondCounter,0); if (SafeRemoveControlCallback(DispenserControlId[DispenserId], IDS_Dispenser_OpenValveCallback )==OK) DispenserControlId[DispenserId] = 0xFF; else Report("Remove control callback failed",__FILE__,__LINE__,(int)DispenserId,RpWarning,(int)DispenserControlId[DispenserId],0); - Report("Control3WayValvesWithCallback called ",__FILE__,__LINE__,(int)DispenserId,RpWarning,(int)0,0); + //Report("Control3WayValvesWithCallback called ",__FILE__,__LINE__,(int)DispenserId,RpWarning,(int)0,0); Control3WayValvesWithCallback (DispenserId, OpenValve, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer if (DispenserCallback[DispenserId]) @@ -185,13 +185,13 @@ uint32_t IDS_Dispenser_Start_Motor_and_Open_Valve(int DispenserId, int MotorSpee CurrentDispenserSpeed[DispenserId] = MotorSpeed; if (DispenserControlId[DispenserId] != 0xFF) Report("Cannot Add control callback",__FILE__,__LINE__,(int)DispenserId,RpWarning,(int)DispenserControlId[DispenserId],0); - Report("IDS_Dispenser_Start_Motor_and_Open_Valve",__FILE__,__LINE__,(int)DispenserId,RpWarning,(int)msec_millisecondCounter,0); + //Report("IDS_Dispenser_Start_Motor_and_Open_Valve",__FILE__,__LINE__,(int)DispenserId,RpWarning,(int)msec_millisecondCounter,0); DispenserControlId[DispenserId] = AddControlCallback( IDS_Dispenser_OpenValveCallback, OpenValveTimeout, TemplateDataReadCBFunction,DispenserId, DispenserId, 0 ); if (DispenserControlId[DispenserId] == 0xFF) Report("Add control callback failed",__FILE__,__LINE__,(int)DispenserId,RpWarning,(int)DispenserControlId[DispenserId],0); - else - Report("Add control callback",__FILE__,__LINE__,(int)DispenserId,RpWarning,(int)DispenserControlId[DispenserId],0); + //else + // Report("Add control callback",__FILE__,__LINE__,(int)DispenserId,RpWarning,(int)DispenserControlId[DispenserId],0); } return OK; @@ -242,8 +242,7 @@ void IDS_Dispenser_Content_Calculation (char DispenserId) { assert (DispenserIdprocessparameters) + if (Ticket->processparameters) { if (HandleProcessParameters(Ticket->processparameters)!= OK) { @@ -623,7 +623,7 @@ void JobRequestFunc(MessageContainer* requestContainer) error = ERROR_CODE__INVALID_PARAMETER; usnprintf(ErrorMsg, 100, "Hardware Parameters Not Set"); } - }*/ + } REPORT_MSG(0,"Process parameters in job request are not handled. push separately for now"); if (Ticket->spool) { -- cgit v1.3.1 From 9edbff9afd0a9e6f2fc133b89f5746757928d9d2 Mon Sep 17 00:00:00 2001 From: Avi Levkovich Date: Wed, 13 Mar 2019 14:07:02 +0200 Subject: Stub for dispenser GPIO --- .../Dispenser_Card/IO_Ports/Dispenser_IO.c | 63 ++++++++++++++++++---- .../Dispenser_Card/IO_Ports/Dispenser_IO.h | 5 +- Software/Embedded_SW/Embedded/Main.c | 3 +- .../Modules/Stubs_Handler/Stub_Dispenser.c | 47 +++++++++++++--- .../Embedded/Modules/Stubs_Handler/Stub_Heater.c | 1 + 5 files changed, 97 insertions(+), 22 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.c index 3721df198..1b2fe3c29 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.c @@ -3,6 +3,8 @@ * * Created on: Mar 11, 2019 * Author: avi + * + * ONLY FOR DISP_TYPE_EEPROM128KB !!!!!! */ #include @@ -64,7 +66,7 @@ uint8_t TCA9534ReadInputReg(uint8_t Dispenser_ID, TCA9534Regs* Regs)//3 read //----------------------------------------------------------------------------------------------------- -uint8_t TCA9534TestRelay(uint8_t Dispenser_ID, TCA9534Regs* Regs)//Set the test and check the relay_on +uint8_t TCA9534TestByPassTestRelay(uint8_t Dispenser_ID, TCA9534Regs* Regs)//Set the test and check the relay_on { uint8_t status = PASSED; @@ -169,7 +171,7 @@ uint8_t TCA9534TestRelay(uint8_t Dispenser_ID, TCA9534Regs* Regs)//Set the test } -uint8_t TCA9534ByPass(uint8_t Dispenser_ID, TCA9534Regs* Regs)//2 +uint8_t TCA9534TestRelay(uint8_t Dispenser_ID, TCA9534Regs* Regs, bool EnableTestRelay) { uint8_t status = PASSED; @@ -178,17 +180,56 @@ uint8_t TCA9534ByPass(uint8_t Dispenser_ID, TCA9534Regs* Regs)//2 //set Mux to the current dispenser Channel status |= Select_Dispenser_Mux_Channel(Dispenser_ID); - //Set BYPASS to output: - Regs->Config[Dispenser_ID].bit.BYPASS = TCA9534_OUTPUT; + if(EnableTestRelay) + { + //Set RELAY_TEST to output: + Regs->Config[Dispenser_ID].bit.RELAY_TEST = TCA9534_OUTPUT; + Write_Buf[0] = TCA9534_CONFIG_REG; + Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; + status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); + + + //Set the RELAY_TEST pin to LOW + Regs->Output[Dispenser_ID].bit.RELAY_TEST = LOW; + Write_Buf[0] = TCA9534_OUTPUT_REG; + Write_Buf[1] = Regs->Output[Dispenser_ID].Uchar; + status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); + } + + //Set RELAY_TEST to input: + Regs->Config[Dispenser_ID].bit.RELAY_TEST = TCA9534_INPUT; Write_Buf[0] = TCA9534_CONFIG_REG; Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); - //Set the BYPASS pin to LOW - Regs->Output[Dispenser_ID].bit.BYPASS = LOW; - Write_Buf[0] = TCA9534_OUTPUT_REG; - Write_Buf[1] = Regs->Output[Dispenser_ID].Uchar; - status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); + return status; + +} + +uint8_t TCA9534ByPass(uint8_t Dispenser_ID, TCA9534Regs* Regs, bool EnableByPass) +{ + uint8_t status = PASSED; + + uint8_t Write_Buf[2]; + + //set Mux to the current dispenser Channel + status |= Select_Dispenser_Mux_Channel(Dispenser_ID); + + if(EnableByPass) + { + //Set BYPASS to output: + Regs->Config[Dispenser_ID].bit.BYPASS = TCA9534_OUTPUT; + Write_Buf[0] = TCA9534_CONFIG_REG; + Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; + status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); + + + //Set the BYPASS pin to LOW + Regs->Output[Dispenser_ID].bit.BYPASS = LOW; + Write_Buf[0] = TCA9534_OUTPUT_REG; + Write_Buf[1] = Regs->Output[Dispenser_ID].Uchar; + status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); + } //Set BYPASS to input: Regs->Config[Dispenser_ID].bit.BYPASS = TCA9534_INPUT; @@ -232,8 +273,8 @@ uint8_t test_IO() status |= TCA9534Init(i, Regs); status |= TCA9534SetReadInputReg(i); status |= TCA9534ReadInputReg(i, Regs); - status |= TCA9534TestRelay(i, Regs); - status |= TCA9534ByPass(i, Regs); + status |= TCA9534TestRelay(i, Regs,ENABLE); + status |= TCA9534ByPass(i, Regs,ENABLE); Read_Notification_Disp_UP(i, Regs); Read_Notification_Disp_Down(i, Regs); Read_Notification_Realy_On(i, Regs); diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.h index e0e511d5b..2105434d2 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.h @@ -51,8 +51,9 @@ typedef struct { uint8_t TCA9534Init(uint8_t Dispenser_ID, TCA9534Regs* Regs); uint8_t TCA9534SetReadInputReg(uint8_t Dispenser_ID); uint8_t TCA9534ReadInputReg(uint8_t Dispenser_ID, TCA9534Regs* Regs); -uint8_t TCA9534TestRelay(uint8_t Dispenser_ID, TCA9534Regs* Regs); -uint8_t TCA9534ByPass(uint8_t Dispenser_ID, TCA9534Regs* Regs); +uint8_t TCA9534TestRelay(uint8_t Dispenser_ID, TCA9534Regs* Regs, bool EnableTestRelay); +uint8_t TCA9534ByPass(uint8_t Dispenser_ID, TCA9534Regs* Regs, bool EnableByPass); +uint8_t TCA9534TestByPassTestRelay(uint8_t Dispenser_ID, TCA9534Regs* Regs); bool Read_Notification_Disp_UP(uint8_t Dispenser_ID, TCA9534Regs* Regs); bool Read_Notification_Disp_Down(uint8_t Dispenser_ID, TCA9534Regs* Regs); bool Read_Notification_Realy_On(uint8_t Dispenser_ID, TCA9534Regs* Regs); diff --git a/Software/Embedded_SW/Embedded/Main.c b/Software/Embedded_SW/Embedded/Main.c index 64f4380a8..fc3d09402 100644 --- a/Software/Embedded_SW/Embedded/Main.c +++ b/Software/Embedded_SW/Embedded/Main.c @@ -58,13 +58,14 @@ #include "Drivers/I2C_Communication/I2C.h" -//#include "Drivers/I2C_Communication/Dispensers_EEPROM_MUX/Disp_EEPROM_MUX.h" +#include "Drivers/I2C_Communication/Dispenser_Card/EEPROM/Dispenser_EEPROM.h" #include "drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h" #include "drivers/Flash_Memory/FATFS/ff.h" #include "drivers/Flash_Memory/FATFS/Control_File_System.h" + //#define WATCHDOG //***************************************************************************** // diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Dispenser.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Dispenser.c index 7c0a4c980..0f9d9d418 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Dispenser.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Dispenser.c @@ -11,18 +11,18 @@ #include "drivers/adc_sampling/adc.h" #include "modules/ids/ids_ex.h" - +#include #include "Stub_Status.h" #include void Stub_DispenserRequest(MessageContainer* requestContainer) { - uint32_t status = NOT_SUPPORTED; + uint32_t status = PASSED; MessageContainer responseContainer; StubDispenserRequest* request = stub_dispenser_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data); - +/* ADCAcquireInit(); SysCtlDelay(10000); ADCAcquireStart(0,1); @@ -32,9 +32,36 @@ void Stub_DispenserRequest(MessageContainer* requestContainer) ADC0SS0Handler(); SysCtlDelay(100000); +*/ + + TCA9534Regs* Regs; + + status |= TCA9534Init(request->dispenserid, Regs); + if(request->start == 1) + { + TCA9534ByPass(request->dispenserid, Regs,ENABLE); + } + else + TCA9534ByPass(request->dispenserid, Regs,DISABLE); + delayms(5); + + if(request->setdirection == 1) + { + TCA9534TestRelay(request->dispenserid, Regs,ENABLE); + } + else + TCA9534TestRelay(request->dispenserid, Regs,DISABLE); + + delayms(5); + if(request->setmicrostepdivision == 1) + TCA9534TestByPassTestRelay(request->dispenserid, Regs); + delayms(5); + if(request->setspeed == 1) + test_IO(); + delayms(5); //request->dispenserid //request->start //request->setdirection @@ -46,15 +73,19 @@ void Stub_DispenserRequest(MessageContainer* requestContainer) response.dispenserid = (uint32_t)((round)(CalculateDispenserPressure(0x00000004)));//CHAN_DISPENSE_PRESSURE_6); + + status |= TCA9534SetReadInputReg(request->dispenserid); + status |= TCA9534ReadInputReg(request->dispenserid, Regs); + - //response.dispenserid = request->dispenserid; + response.dispenserid = request->dispenserid; response.has_dispenserid = true; - //response.dispenserposition - response.has_dispenserposition = false; + response.dispenserposition = (Read_Notification_Disp_UP(request->dispenserid, Regs) << 8) | (Read_Notification_Disp_Down(request->dispenserid, Regs)); + response.has_dispenserposition = true; - //response.inkworninglevel - response.has_inkworninglevel = false; + response.inkworninglevel = (Read_Notification_Realy_On(request->dispenserid, Regs) << 8) | (Read_Notification_Over_Press(request->dispenserid, Regs)); + response.has_inkworninglevel = true; status_response(status,&response.status, &response.statusword ,&response.has_statusword); diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Heater.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Heater.c index 7735c9955..6848dd1cf 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Heater.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Heater.c @@ -22,6 +22,7 @@ #include "Drivers/Heater/Heater.h" #include "../control/control.h" #include "Drivers/Heater/TemperatureSensor.h" +#include "Modules/heaters/heaters_ex.h" void Stub_HeaterRequest(MessageContainer* requestContainer) { -- cgit v1.3.1 From b40a16bd00381b710196b2db6bad08e875d90184 Mon Sep 17 00:00:00 2001 From: Avi Levkovich Date: Wed, 13 Mar 2019 14:28:15 +0200 Subject: update dispenser stub --- .../Dispenser_Card/IO_Ports/Dispenser_IO.c | 25 +++++++++++----------- .../Dispenser_Card/IO_Ports/Dispenser_IO.h | 10 +++++---- .../Modules/Stubs_Handler/Stub_Dispenser.c | 20 ++++++++--------- 3 files changed, 28 insertions(+), 27 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.c index 1b2fe3c29..6d032fe64 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.c @@ -15,7 +15,6 @@ #include #include - uint8_t TCA9534Init(uint8_t Dispenser_ID, TCA9534Regs* Regs)//1 { uint8_t status = PASSED; @@ -121,7 +120,7 @@ uint8_t TCA9534TestByPassTestRelay(uint8_t Dispenser_ID, TCA9534Regs* Regs)//Set status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); //deley - delayms(5); + delayms(Relay_Operate_time); //Read the Realay_on pin TCA9534SetReadInputReg(Dispenser_ID); @@ -138,7 +137,7 @@ uint8_t TCA9534TestByPassTestRelay(uint8_t Dispenser_ID, TCA9534Regs* Regs)//Set status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); //deley - delayms(5); + delayms(Relay_Operate_time); //Read the Realay_on pin TCA9534SetReadInputReg(Dispenser_ID); @@ -157,7 +156,7 @@ uint8_t TCA9534TestByPassTestRelay(uint8_t Dispenser_ID, TCA9534Regs* Regs)//Set status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); //deley - delayms(5); + delayms(Relay_Operate_time); //Read the Realay_on pin TCA9534SetReadInputReg(Dispenser_ID); @@ -265,20 +264,20 @@ uint8_t test_IO() { uint8_t status = PASSED; - TCA9534Regs* Regs; + TCA9534Regs Regs; uint8_t i; for(i=0;i<8;i++) { - status |= TCA9534Init(i, Regs); + status |= TCA9534Init(i, &Regs); status |= TCA9534SetReadInputReg(i); - status |= TCA9534ReadInputReg(i, Regs); - status |= TCA9534TestRelay(i, Regs,ENABLE); - status |= TCA9534ByPass(i, Regs,ENABLE); - Read_Notification_Disp_UP(i, Regs); - Read_Notification_Disp_Down(i, Regs); - Read_Notification_Realy_On(i, Regs); - Read_Notification_Over_Press(i, Regs); + status |= TCA9534ReadInputReg(i, &Regs); + status |= TCA9534TestRelay(i, &Regs, ENABLE); + status |= TCA9534ByPass(i, &Regs, ENABLE); + Read_Notification_Disp_UP(i, &Regs); + Read_Notification_Disp_Down(i, &Regs); + Read_Notification_Realy_On(i, &Regs); + Read_Notification_Over_Press(i, &Regs); } return status; diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.h index 2105434d2..af1470da5 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.h @@ -11,7 +11,7 @@ /************************** I2C Address ***************************************/ -#define TCA9534_ADDRESS 0x40 // I2C Address 0100 + ADDR + R/W - ADDR tied to GND (permanent) +#define TCA9534_ADDRESS 0x40 // I2C Address 0100 + ADDR + R/W - ADDR tied to GND (permanent) /************************** I2C Registers *************************************/ #define TCA9534_INPUT_REG 0x00 // Input status register @@ -19,9 +19,11 @@ #define TCA9534_POLARITY_REG 0x02 // Polarity inversion register. BIT '1' inverts input polarity of register 0x00 #define TCA9534_CONFIG_REG 0x03 // Configuration register. BIT = '1' sets port to input BIT = '0' sets port to output -#define TCA9534_INPUT 0x01 -#define TCA9534_OUTPUT 0x00 -#define TCA9534_All_INPUT 0xFF +#define TCA9534_INPUT 0x01 +#define TCA9534_OUTPUT 0x00 +#define TCA9534_All_INPUT 0xFF + +#define Relay_Operate_time 5 //mSec typedef struct { diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Dispenser.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Dispenser.c index 0f9d9d418..eb1de19ad 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Dispenser.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Dispenser.c @@ -34,30 +34,30 @@ void Stub_DispenserRequest(MessageContainer* requestContainer) SysCtlDelay(100000); */ - TCA9534Regs* Regs; + TCA9534Regs Regs; - status |= TCA9534Init(request->dispenserid, Regs); + status |= TCA9534Init(request->dispenserid, &Regs); if(request->start == 1) { - TCA9534ByPass(request->dispenserid, Regs,ENABLE); + TCA9534ByPass(request->dispenserid, &Regs, ENABLE); } else - TCA9534ByPass(request->dispenserid, Regs,DISABLE); + TCA9534ByPass(request->dispenserid, &Regs, DISABLE); delayms(5); if(request->setdirection == 1) { - TCA9534TestRelay(request->dispenserid, Regs,ENABLE); + TCA9534TestRelay(request->dispenserid, &Regs,ENABLE); } else - TCA9534TestRelay(request->dispenserid, Regs,DISABLE); + TCA9534TestRelay(request->dispenserid, &Regs,DISABLE); delayms(5); if(request->setmicrostepdivision == 1) - TCA9534TestByPassTestRelay(request->dispenserid, Regs); + TCA9534TestByPassTestRelay(request->dispenserid, &Regs); delayms(5); if(request->setspeed == 1) test_IO(); @@ -75,16 +75,16 @@ void Stub_DispenserRequest(MessageContainer* requestContainer) status |= TCA9534SetReadInputReg(request->dispenserid); - status |= TCA9534ReadInputReg(request->dispenserid, Regs); + status |= TCA9534ReadInputReg(request->dispenserid, &Regs); response.dispenserid = request->dispenserid; response.has_dispenserid = true; - response.dispenserposition = (Read_Notification_Disp_UP(request->dispenserid, Regs) << 8) | (Read_Notification_Disp_Down(request->dispenserid, Regs)); + response.dispenserposition = (Read_Notification_Disp_UP(request->dispenserid, &Regs) << 8) | (Read_Notification_Disp_Down(request->dispenserid, &Regs)); response.has_dispenserposition = true; - response.inkworninglevel = (Read_Notification_Realy_On(request->dispenserid, Regs) << 8) | (Read_Notification_Over_Press(request->dispenserid, Regs)); + response.inkworninglevel = (Read_Notification_Realy_On(request->dispenserid, &Regs) << 8) | (Read_Notification_Over_Press(request->dispenserid, &Regs)); response.has_inkworninglevel = true; status_response(status,&response.status, &response.statusword ,&response.has_statusword); -- cgit v1.3.1 From 581fc5ccade02a541b9e9fff2ab8c34bf6deef2c Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Thu, 14 Mar 2019 23:56:45 +0200 Subject: version 1.3.7.9 --- .../Embedded_SW/Embedded/Common/SW_Info/SW_Info.c | 2 +- .../Embedded_SW/Embedded/Drivers/Motors/Motor.h | 1 + .../Embedded/Drivers/SSI_Comm/Dancer/Dancer.c | 5 + .../Embedded/Drivers/SSI_Comm/Dancer/Dancer.h | 1 + Software/Embedded_SW/Embedded/Embedded.cfg | 1 + .../Embedded/Modules/Control/MillisecTask.c | 4 +- .../Modules/Diagnostics/DiagnosticActions.c | 6 ++ .../Embedded/Modules/Heaters/Heaters_print.c | 4 + Software/Embedded_SW/Embedded/Modules/IDS/IDS.h | 1 - .../Embedded/Modules/IDS/IDS_dispenser.c | 10 +- Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h | 4 + .../Embedded_SW/Embedded/Modules/IDS/IDS_print.c | 27 +++++- .../Embedded/Modules/Thread/ThreadLoad.c | 34 +++---- .../Embedded/Modules/Thread/Thread_Winder.c | 25 +++-- .../Embedded/Modules/Thread/Thread_print.c | 4 +- .../Embedded/StateMachines/Printing/JobSTM.c | 105 +++++++++++---------- 16 files changed, 149 insertions(+), 85 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') 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 15e9fe828..5efeaa71d 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,3,7,88}; +TangoVersion_t _gTangoVersion = {1,3,7,9}; #define BUILD_DATE __DATE__ char Dat[50] = BUILD_DATE; char _gTangoName [MAX_STRING_LEN] = "Tango01 ";//d diff --git a/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h b/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h index 7599c10db..ecc70765b 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h +++ b/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h @@ -201,6 +201,7 @@ uint32_t MotorMovetoBreakSensor (TimerMotors_t _motorId,bool direction, uint32_t uint32_t MotorMovetoDancerPosition (TimerMotors_t _motorId,bool direction, uint32_t Freq,uint32_t DancerId,bool dancervaluedirection, callback_fptr callback,uint32_t timeout); uint32_t MotorAbortMovetoLimitSwitch (TimerMotors_t _motorId); uint32_t MotorMoveToStopper (TimerMotors_t _motorId,bool direction, uint32_t Speed, callback_fptr callback,uint32_t backlash,uint32_t timeout); +uint32_t MotorMovetoEncoderPosition (TimerMotors_t MotorId, callback_fptr callback,uint32_t timeout); uint32_t MotorGoTo(TimerMotors_t _motorIdn, uint32_t Steps); #endif /* DRIVERS_MOTOR_H_ */ diff --git a/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.c b/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.c index 6c692ed10..de2ceb698 100644 --- a/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.c +++ b/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.c @@ -84,6 +84,11 @@ uint32_t Read_Dryer_ENC_Position () FPGA_SSI_Dryer_ENC_Transnit(); return Dryer_ENC.Position; } +uint32_t Control_Read_Dryer_Position(HardwareDancerType DancerId, uint32_t Parameter1) +{ + return Dryer_ENC.Position; + //return SSI_enc.Position; +} void Loop_SSI() { diff --git a/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.h b/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.h index bc03b3e9e..7a843b1c1 100644 --- a/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.h +++ b/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.h @@ -12,6 +12,7 @@ uint32_t Read_Dancer_Position (HardwareDancerType DancerId); uint32_t Control_Read_Dancer_Position(HardwareDancerType DancerId, uint32_t Parameter1, uint32_t Parameter2); uint32_t Read_Dryer_ENC_Position (); +uint32_t Control_Read_Dryer_Position(uint32_t DryerID, uint32_t Parameter1, uint32_t Parameter2); void Loop_SSI(); diff --git a/Software/Embedded_SW/Embedded/Embedded.cfg b/Software/Embedded_SW/Embedded/Embedded.cfg index ea7a370b8..89aff2c92 100644 --- a/Software/Embedded_SW/Embedded/Embedded.cfg +++ b/Software/Embedded_SW/Embedded/Embedded.cfg @@ -60,6 +60,7 @@ Program.global.timer1 = Hwi.create(37, "&MillisecInterrupt", hwi6Params); var hwi17Params = new Hwi.Params(); hwi17Params.instance.name = "timer3"; hwi17Params.arg = 3; +hwi17Params.priority = 96; Program.global.timer3 = Hwi.create(51, "&ScrewTimerInterrupt", hwi17Params); /* diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index 5fe242436..8e4a36e62 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -499,9 +499,9 @@ uint32_t MillisecLowLoop(uint32_t tick) //Read_MidTank_Pressure_Sensor(Disp_i); } FPGA_GetAllDispensersValveBusyOCD(); - /*temp = Read_Fans_Tacho(); + temp = Read_Fans_Tacho(); DrawerFansStatus = temp & 0x1F; - SystemFansStatus = temp & 0xE0;*/ + SystemFansStatus = temp & 0xE0; KeepAliveOneSecondCall(); for (Motor_i = 0;Motor_i < NUM_OF_MOTORS;Motor_i++) { diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c index e3f593924..425894857 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c @@ -254,6 +254,12 @@ uint32_t SetDigitalOutRequestRequestFunc(MessageContainer* requestContainer) else Valve_Set(VALVE_MIXCHIP_WASTECH,0); break; + case INTERFACE_IOS__GPO_BLOWER_PWM: + if (request->value == true) + Control_Dryer_Fan(START,75);//use START or STOP, 0 - 100%(); + else + Control_Dryer_Fan(STOP,0);//use START or STOP, 0 - 100%(); + break; default: responseContainer.has_error = true; responseContainer.error = ERROR_CODE__GENERAL_ERROR; diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index 3f62fc3b6..a6fbe3ebc 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -782,6 +782,8 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue) if (readValue > HeaterCmd[index].targettemperatue) { DeActivateHeater(index); + HeaterRecalculateSharedHeatersParams(HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain,0); + HeaterRecalculateSharedHeatersParams(HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary,0); } return ERROR; } @@ -795,6 +797,8 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue) DeActivateHeater(HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary); DeActivateHeater(HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain); //Heaters OFF until coming into the proportional band + HeaterRecalculateSharedHeatersParams(HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain,0); + HeaterRecalculateSharedHeatersParams(HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary,0); return OK; } // if (readValue < ((HeaterCmd[index].targettemperatue * (100-HeaterControl[index].outputproportionalband))/100)) diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h b/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h index d27fb7c56..e7e6f3ff6 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h @@ -31,7 +31,6 @@ void IDS_Dispenser_Set_Flow_Params (char DispenserId,double NanoLitterPerPulse,c void IDS_Dispenser_RefillStarted (char DispenserId); void IDS_Dispenser_RefillEnded (char DispenserId); void IDS_Dispenser_MovingDirection (char DispenserId, bool direction); -uint32_t IDS_Dispenser_Build_Pressure(int DispenserId, callback_fptr callback); #endif //MODULES_IDS_IDS_H_ diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c index acaf19744..abfabe17d 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c @@ -62,10 +62,15 @@ uint32_t IdsGetMotorSpeed(uint32_t DispenserId) uint32_t IDS_Dispenser_Build_Pressure_Callback(uint32_t DispenserId, uint32_t ReadValue) { + uint32_t status; DispenserPrepareTime[DispenserId]+=DispenserPrepareTimeLag; if ((GetDispenserPressure(DispenserId)>=DispenserPreparePressure)||(DispenserPrepareTime[DispenserId]>=DispenserPrepareTimeout)) { + if (DispenserPrepareTime[DispenserId]>=DispenserPrepareTimeout) + status = ERROR; + else + status = OK; if (SafeRemoveControlCallback(DispenserControlId[DispenserId], IDS_Dispenser_Build_Pressure_Callback )==OK) DispenserControlId[DispenserId] = 0xFF; else @@ -76,11 +81,12 @@ uint32_t IDS_Dispenser_Build_Pressure_Callback(uint32_t DispenserId, uint32_t Re if (DispenserCallback[DispenserId]) { - DispenserCallback[DispenserId](DispenserId,ReadValue); + + DispenserCallback[DispenserId](DispenserId,status); DispenserCallback[DispenserId] = 0; } } - return OK; + return status; } uint32_t IDS_Dispenser_Build_Pressure(int DispenserId, callback_fptr callback) diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h index bf73ed7fa..b201e6611 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h @@ -39,6 +39,9 @@ uint32_t IDSSegmentState(void *JobDetails, int SegmentId); uint32_t IDSDistanceToSpoolState(void); uint32_t IDSEndState(void *JobDetails); +uint32_t IDS_StartLubrication(void); +uint32_t IDS_StopLubrication(void); + uint32_t IDS_DispenserPidRequestMessage(HardwarePidControl* request); uint32_t IDS_DispenserControlInit(); @@ -49,6 +52,7 @@ uint32_t IDS_Dispenser_Alarm_On (uint8_t deviceID); uint32_t IDS_Dispenser_Alarm_Off (uint8_t deviceID); uint32_t IDS_CheckDispenserLimitSwitch (LimitSwitchAlarms LS_Id); +uint32_t IDS_Dispenser_Build_Pressure(int DispenserId, callback_fptr callback); void IDS_Dispenser_SetTimeOutValues(uint32_t CloseTimeout, uint32_t OpenTimeout); void IDS_Dispenser_SetBackLashValues(double initialdispenserpressure, uint32_t initialdispensertimeout, uint32_t initialdispensertimelag); diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c index 2be233962..0a9d40a15 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c @@ -31,11 +31,12 @@ typedef struct PID_Config_Params m_params; }DispenserControlConfig_t; HardwarePidControl *DispensersControl;// = (HardwarePidControl *)GENHWCFG_MAP_IN_FLASH + 0x4000; - +#define LUBRICANT_DISPENSER 7 +#define MAX_DYE_DISPENSERS 7 int32_t DispenserSamples[MAX_SYSTEM_DISPENSERS][MAX_CONTROL_SAMPLES] = {0}; int DispenserSamplePointer[MAX_SYSTEM_DISPENSERS] = {0}; double DispenserNormalizedErrorCoEfficient[MAX_SYSTEM_DISPENSERS] = {0}; - +double lubricant_speed = 0.0; HardwarePidControlType ThreadDispenserIdToControlId[MAX_SYSTEM_DISPENSERS] = { HARDWARE_PID_CONTROL_TYPE__Dispenser1,HARDWARE_PID_CONTROL_TYPE__Dispenser2,HARDWARE_PID_CONTROL_TYPE__Dispenser3,HARDWARE_PID_CONTROL_TYPE__Dispenser4,HARDWARE_PID_CONTROL_TYPE__Dispenser5,HARDWARE_PID_CONTROL_TYPE__Dispenser6,HARDWARE_PID_CONTROL_TYPE__Dispenser7,HARDWARE_PID_CONTROL_TYPE__Dispenser8}; bool DispenserReady[MAX_SYSTEM_DISPENSERS] = {true}; @@ -160,6 +161,13 @@ void DispenserPrepareReady(void) if (JobTicket->segments[Segment_i]->brushstops[Brush_i]->dispensers[Dispenser_i]->nanolitterpersecond>0.0) { DispenserUsedInJob[DispenserId] = true; + if(DispenserId == LUBRICANT_DISPENSER) + { + lubricant_speed = JobTicket->segments[0]->brushstops[0]->dispensers[Dispenser_i]->nanolitterpersecond/ + JobTicket->segments[0]->brushstops[0]->dispensers[Dispenser_i]->nanoliterperpulse; + REPORT_MSG (lubricant_speed*100, "LUBRICANT_SPEED*100"); + } + } }//for dispenser }//if dispensers @@ -522,3 +530,18 @@ uint32_t IDSPreSegmentState(void *JobDetails, int SegmentId) return OK; } +uint32_t IDS_StartLubrication(void) +{ + IDS_Dispenser_Start_Motor_and_Open_Valve(LUBRICANT_DISPENSER,lubricant_speed,NULL); + Lubricant_2Way_Valve (START); + return OK; +} +uint32_t IDS_StopLubrication(void) +{ + if(DispenserUsedInJob[LUBRICANT_DISPENSER]) + { + IDS_Dispenser_Close_Valve_And_Stop_Motor(LUBRICANT_DISPENSER,IDS_Valve_EndValveReady); + Lubricant_2Way_Valve (STOP); + } + return OK; +} diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c index a82fe37e6..ff319918e 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c @@ -38,21 +38,21 @@ /* typedef enum { 0 THREAD_LOAD_INIT, - 1 THREAD_LOAD_REDUCE_HEAT, //HEATERS OFF, DRYER BLOWER OFF, BLOWER LOW, - 2 THREAD_LOAD_SET_LOAD_ARM_TO_START_POSITION,//USE NOTATION HOW MANY ROTATIONS IN THE DRYER, OR CHECK AGAINST STOPPER. MOVE SLOWLY - 3 THREAD_LOAD_CENTER_HEAD_ROCKERS, //puthead cleaning rockers to middle position - 4 THREAD_LOAD_OPEN_COVERS, //OPEN DYEING HEAD COVER AND DRYER LID + 1 THREAD_LOAD_REDUCE_HEAT, //HEATERS OFF, DRYER BLOWER OFF, BLOWER LOW, + 2 THREAD_LOAD_SET_LOAD_ARM_TO_START_POSITION, //USE NOTATION HOW MANY ROTATIONS IN THE DRYER, OR CHECK AGAINST STOPPER. MOVE SLOWLY + 3 THREAD_LOAD_CENTER_HEAD_ROCKERS, //puthead cleaning rockers to middle position + 4 THREAD_LOAD_OPEN_COVERS, //OPEN DYEING HEAD COVER AND DRYER LID 5 THREAD_LOAD_LIFT_DANCERS, - 6 THREAD_LOAD_LIFT_ROCKERS, //MACHINE IS READY. SEND MESSAGE, START TIMER TO CLOSE LIDS, WAIT FOR OPERATOR RESPONSE - 7 THREAD_LOAD_INITIAL_TENSION,//CHECK SPOOL PRESENCERUN WINDER UNTIL BREAK SENSOR IS IDENTIFIEING MOVEMENT FOR A SECOND + 6 THREAD_LOAD_LIFT_ROCKERS, //MACHINE IS READY. SEND MESSAGE, START TIMER TO CLOSE LIDS, WAIT FOR OPERATOR RESPONSE + 7 THREAD_LOAD_INITIAL_TENSION, //CHECK SPOOL PRESENCERUN WINDER UNTIL BREAK SENSOR IS IDENTIFIEING MOVEMENT FOR A SECOND 8 THREAD_LOAD_CLOSE_ROCKERS, - 9 THREAD_LOAD_CLOSE_DANCERS, //SEND DANCER MOTORS TO PRESET LOCATION, CHECK THAT THE DANCERS ARE ON THE THREAD + 9 THREAD_LOAD_CLOSE_DANCERS, //SEND DANCER MOTORS TO PRESET LOCATION, CHECK THAT THE DANCERS ARE ON THE THREAD 10 THREAD_LOAD_CLOSE_LIDS, 11 THREAD_LOAD_RESUME_HEATING, - 12 THREAD_LOAD_JOG_FEEDER_TO_MIDDLE_POINT,//JOG THE FEEDER MOTOR UNTIL THE FEEDER DANCER IS AT MIDDLE POSITION - 13 THREAD_LOAD_DRYER_LOADING, //START FEEDER PID, ROTATE LOADING ARM COUNTER THREAD DIRECTION X CIRCLES ACCORDING TO RML. FEEDER SPEED IS 40 - //KEEP NOTATION HOW MANY ROTATIONS IN THE DRYER - 14 THREAD_LOAD_JOG_THREAD, //JOG THREAD SHORTLY TO MAKE SURE SPOOL IS RUNNING. REPORT END OF LOADING + 12 THREAD_LOAD_JOG_FEEDER_TO_MIDDLE_POINT, //JOG THE FEEDER MOTOR UNTIL THE FEEDER DANCER IS AT MIDDLE POSITION + 13 THREAD_LOAD_DRYER_LOADING, //START FEEDER PID, ROTATE LOADING ARM COUNTER THREAD DIRECTION X CIRCLES ACCORDING TO RML. FEEDER SPEED IS 40 + //KEEP NOTATION HOW MANY ROTATIONS IN THE DRYER + 14 THREAD_LOAD_JOG_THREAD, //JOG THREAD SHORTLY TO MAKE SURE SPOOL IS RUNNING. REPORT END OF LOADING 15 THREAD_LOAD_END }THREAD_LOAD_STAGES_ENUM;*/ THREAD_LOAD_STAGES_ENUM LoadStages = THREAD_LOAD_INIT; @@ -222,9 +222,9 @@ else { LoadStages++; - if (LoadStages != THREAD_LOAD_INITIAL_TENSION) //on this satge we should wait for user call + if (LoadStages != THREAD_LOAD_INITIAL_TENSION) //on this stage we should wait for user call { - ThreadLoadStateMachine(LoadStages); + //ThreadLoadStateMachine(LoadStages); } } } @@ -340,7 +340,7 @@ { Control_Dryer_Fan(START,75);//use START or STOP, 0 - 100% LoadStages++; - ThreadLoadStateMachine(LoadStages); + //ThreadLoadStateMachine(LoadStages); } return OK; } @@ -371,7 +371,7 @@ LoadStages++; if (LoadStages != THREAD_LOAD_INITIAL_TENSION) //on this satge we should wait for user call { - ThreadLoadStateMachine(LoadStages); + //ThreadLoadStateMachine(LoadStages); } } } @@ -417,7 +417,7 @@ //Keep Notation How Many Rotations In The Dryer //LoadArmInfo.LoadArmBackLash = 0; - //LoadArmInfo.LoadArmRounds = 0xFF; + LoadArmInfo.LoadArmRounds = 0xFF; FileWrite(&LoadArmInfo, sizeof(LoadArmInfo),LoadArmPath); return OK; } @@ -428,7 +428,7 @@ ControlId = 0xFF; ThreadAbortJoggingFunc(); LoadStages++; - ThreadLoadStateMachine(LoadStages); + //ThreadLoadStateMachine(LoadStages); return OK; } uint32_t Thread_Load_Jog_Thread(void) diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c index c598e0c55..0277d1daa 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c @@ -40,6 +40,8 @@ void ScrewsStartControlTimer (void); bool Winder_ScrewHoming = false; bool ScrewCurrentDirection = false; //holds current screw direction uint32_t ScrewDirectionChangeCounter = 1; //holds the current number of runs of the screw - will be used to build the cone +uint32_t ScrewChangeCounter = 0; +uint32_t ScrewChangeLimit = 0; uint32_t CalculationDirectionChangeCounter = 1; //holds the current number of runs of the screw - will be used to build the cone uint16_t WinderMotorSpeed[MAX_WINDER_SPEED_CALCULATION]; uint16_t WinderMotorSpeedCounter = 0; @@ -196,13 +198,17 @@ uint32_t Screw100msecDirectionChange(uint32_t deviceID, uint32_t BusyFlag) double RotationsPerSecond; int32_t Averagewinderspeed = 0; - TotalWinderSpeed-=WinderMotorSpeed[WinderMotorSpeedCounter]; - WinderMotorSpeed[WinderMotorSpeedCounter] = CurrentControlledSpeed[WINDER_MOTOR]; - TotalWinderSpeed+=WinderMotorSpeed[WinderMotorSpeedCounter]; - if (WinderMotorSpeedCounter++>=MAX_WINDER_SPEED_CALCULATION) + ScrewChangeCounter++; + if ((ScrewChangeCounter>3)&&(ScrewChangeCounter<(ScrewChangeLimit-2))) //do not take the winder speed near the limits { - WinderMotorSpeedCounter=0; - WinderMotorSpeedRollOver=true; + TotalWinderSpeed-=WinderMotorSpeed[WinderMotorSpeedCounter]; + WinderMotorSpeed[WinderMotorSpeedCounter] = CurrentControlledSpeed[WINDER_MOTOR]; + TotalWinderSpeed+=WinderMotorSpeed[WinderMotorSpeedCounter]; + if (WinderMotorSpeedCounter++>=MAX_WINDER_SPEED_CALCULATION) + { + WinderMotorSpeedCounter=0; + WinderMotorSpeedRollOver=true; + } } if (ScrewDirectionChangeCounter == CalculationDirectionChangeCounter) @@ -260,7 +266,7 @@ uint32_t Screw100msecDirectionChange(uint32_t deviceID, uint32_t BusyFlag) //Report(TempScrewStr,__FILE__,__LINE__,0,RpWarning,0, 0); //Report(ScrewStr,__FILE__,__LINE__,ScrewCurrentDirection,RpWarning,CalculationDirectionChangeCounter, 0); //REPORT_MSG(temp , "new winder speed"); - Report("new winder speed",__FILE__,__LINE__,temp,RpWarning,ScrewSpeed,0); + Report("new winder speed",__FILE__,ScrewNumberOfSteps,temp,RpWarning,ScrewSpeed,0); } /********************************************************************************/ @@ -397,6 +403,7 @@ void ScrewsStartControlTimer (void) //ROM_TimerConfigure(Screw_timerBase, TIMER_CFG_PERIODIC); // 32 bits Timer TimerEnable(Screw_timerBase, TIMER_A); ROM_IntEnable(INT_TIMER3A); + //IntPrioritySet(Screw_timerBase, 0x40); ROM_TimerIntEnable(Screw_timerBase, TIMER_TIMA_TIMEOUT); ROM_TimerLoadSet(Screw_timerBase, TIMER_A,(int)1200000/*10 millisec*/ ); Report("ScrewsStartControlTimer direction,speed ", __FILE__,__LINE__,ScrewCurrentDirection, RpMessage, ScrewSpeed, 0); @@ -410,9 +417,11 @@ void ScrewTimerInterrupt(int ARG0) if (SCREW_TimerActivated == true) { + ROM_TimerLoadSet(Screw_timerBase, TIMER_A,(int)ScrewRunningTime); MotorSetDirection (HARDWARE_MOTOR_TYPE__MOTO_SCREW, ScrewCurrentDirection); MotorSetSpeedDirect(HARDWARE_MOTOR_TYPE__MOTO_SCREW,ScrewSpeed); - ROM_TimerLoadSet(Screw_timerBase, TIMER_A,(int)ScrewRunningTime); + ScrewChangeCounter = 0; + ScrewChangeLimit = ScrewRunningTime/12000000; ScrewDirectionChangeCounter++; } else diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index 6a8474438..f4dc6a170 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -30,6 +30,7 @@ #include "drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h" #include "modules/heaters/heaters.h" #include "modules/General/process.h" +#include "modules/ids/ids_ex.h" #include "Modules/AlarmHandling/AlarmHandling.h" #include "Control/MillisecTask.h" @@ -708,6 +709,7 @@ uint32_t ThreadPreSegmentState(void *JobDetails, uint32_t SegmentId) MotorSetDirection((TimerMotors_t)HARDWARE_MOTOR_TYPE__MOTO_LLOADING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LLOADING].directionthreadwize); MotorSetSpeed(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, 1); } + IDS_StartLubrication(); } // activate control fr all motors //set speed for both rocker motors @@ -807,7 +809,7 @@ char Endstr[150]; } MotorStop(HARDWARE_MOTOR_TYPE__MOTO_RLOADING,Hard_Hiz); MotorStop(HARDWARE_MOTOR_TYPE__MOTO_LLOADING,Hard_Hiz); - + IDS_StopLubrication(); return OK; } diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c index 8c3d127ab..05ed98abd 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c @@ -587,70 +587,73 @@ void JobRequestFunc(MessageContainer* requestContainer) ErrorCode error = ERROR_CODE__NONE; JobEndReasonEnum JobAlarmReason = JOB_OK; - JobRequest* request = job_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data); - if (request != NULL) - { - ustrncpy (JobToken, requestContainer->token,36); - previousJobLength = 0.0; - JobTicket *Ticket = request->jobticket; - int TicketSize = job_ticket__get_packed_size(Ticket); - if (TicketSize >= MAX_TICKET_SIZE) - { - LOG_ERROR (TicketSize, "job ticket message too long"); - status = FAILED; - error = ERROR_CODE__BAD_CRC; - usnprintf(ErrorMsg, 100, "job ticket message too long"); - } - else + if (JobActive == false) + { + JobRequest* request = job_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data); + if (request != NULL) { - //memcpy(CurrentJob, Ticket,TicketSize); - CurrentJob = Ticket; - if (CurrentRequest!= NULL) - job_request__free_unpacked(CurrentRequest,NULL); - CurrentRequest = request; - - status = PASSED; - JobEndReason = JOB_OK; - JobAlarmReason = AlarmHandlingPrepareJob(CurrentJob); - if (JobAlarmReason ==OK) + ustrncpy (JobToken, requestContainer->token,36); + previousJobLength = 0.0; + JobTicket *Ticket = request->jobticket; + int TicketSize = job_ticket__get_packed_size(Ticket); + if (TicketSize >= MAX_TICKET_SIZE) { -#warning Process parameters in job request are not handled. push separately for now - if (Ticket->processparameters) + LOG_ERROR (TicketSize, "job ticket message too long"); + status = FAILED; + error = ERROR_CODE__BAD_CRC; + usnprintf(ErrorMsg, 100, "job ticket message too long"); + } + else + { + //memcpy(CurrentJob, Ticket,TicketSize); + CurrentJob = Ticket; + if (CurrentRequest!= NULL) + job_request__free_unpacked(CurrentRequest,NULL); + CurrentRequest = request; + + status = PASSED; + JobEndReason = JOB_OK; + JobAlarmReason = AlarmHandlingPrepareJob(CurrentJob); + if (JobAlarmReason ==OK) { - if (HandleProcessParameters(Ticket->processparameters)!= OK) + #warning Process parameters in job request are not handled. push separately for now + if (Ticket->processparameters) { - status = FAILED; - error = ERROR_CODE__INVALID_PARAMETER; - usnprintf(ErrorMsg, 100, "Hardware Parameters Not Set"); + if (HandleProcessParameters(Ticket->processparameters)!= OK) + { + status = FAILED; + error = ERROR_CODE__INVALID_PARAMETER; + usnprintf(ErrorMsg, 100, "Hardware Parameters Not Set"); + } } - } - REPORT_MSG(0,"Process parameters in job request are not handled. push separately for now"); - if (Ticket->spool) - { - if (InternalWindingConfigMessage(Ticket->spool)!= OK) + REPORT_MSG(0,"Process parameters in job request are not handled. push separately for now"); + if (Ticket->spool) { - status = FAILED; - error = ERROR_CODE__INVALID_PARAMETER; - usnprintf(ErrorMsg, 100, "spool parameters error"); + if (InternalWindingConfigMessage(Ticket->spool)!= OK) + { + status = FAILED; + error = ERROR_CODE__INVALID_PARAMETER; + usnprintf(ErrorMsg, 100, "spool parameters error"); + } } - } + } + else + { + status = FAILED; + error = JobError_to_ErrorCode[JobAlarmReason]; + usnprintf(ErrorMsg, 100, "Existing alarms prevent running"); + } } - else + if (status == PASSED) { - status = FAILED; - error = JobError_to_ErrorCode[JobAlarmReason]; - usnprintf(ErrorMsg, 100, "Existing alarms prevent running"); + Report("Job Request ",__FILE__,__LINE__,Ticket->processparameters->dyeingspeed,RpWarning,Ticket->n_segments, Ticket->intersegmentlength); + StartJob(CurrentJob); } } - if (status == PASSED) - { - Report("Job Request ",__FILE__,__LINE__,Ticket->processparameters->dyeingspeed,RpWarning,Ticket->n_segments, Ticket->intersegmentlength); - StartJob(CurrentJob); - } + else + status = FAILED; } - else - status = FAILED; JobResponse response = JOB_RESPONSE__INIT; JobStatus jobStatus = JOB_STATUS__INIT; -- cgit v1.3.1 From 0e214df453878313d70065f68679a5a0267b0591 Mon Sep 17 00:00:00 2001 From: Avi Levkovich Date: Sun, 17 Mar 2019 09:43:29 +0200 Subject: fix bug (typo) in the address of F1_GPO_02_bus, F1_Tacho_reg8 , F1_Tacho_reg9 --- Software/Embedded_SW/Embedded/DataDef.h | 2 + Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c | 46 ++++++++--- Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.h | 2 +- .../Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h | 6 +- .../Dispenser_Card/IO_Ports/Dispenser_IO.c | 21 ++--- Software/Embedded_SW/Embedded/Main.c | 2 + .../Embedded/Modules/Control/MillisecTask.c | 2 +- Software/Stubs Collection/stubs/NewSpeedSensor.cs | 45 +++++++++++ .../stubs/new dispenser card GPIO.cs | 90 ++++++++++++++++++++++ 9 files changed, 193 insertions(+), 23 deletions(-) create mode 100644 Software/Stubs Collection/stubs/NewSpeedSensor.cs create mode 100644 Software/Stubs Collection/stubs/new dispenser card GPIO.cs (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/DataDef.h b/Software/Embedded_SW/Embedded/DataDef.h index 3b62a0489..a85ea7024 100644 --- a/Software/Embedded_SW/Embedded/DataDef.h +++ b/Software/Embedded_SW/Embedded/DataDef.h @@ -141,6 +141,8 @@ enum //#define FPGA_Reg_Size_Bits 16 +#define FPGA_Freq 29166667 + #define MIDTANK_DIRECTION 0 #define MIXER_DIRECTION 1 diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c index 0b98891c5..b5525252c 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.c @@ -202,14 +202,14 @@ uint8_t Read_Fans_Tacho() #ifndef EVALUATION_BOARD // The big Fan in the drawer - Fans_Speed_RPM[DRAWER_B] = Calculate_Tacho_Fan_Speed(29166666, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg0); - Fans_Speed_RPM[DRAWER_S0] = Calculate_Tacho_Fan_Speed(29166666, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg1); - Fans_Speed_RPM[DRAWER_S1] = Calculate_Tacho_Fan_Speed(29166666, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg2); - Fans_Speed_RPM[DRAWER_S2] = Calculate_Tacho_Fan_Speed(29166666, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg3); - Fans_Speed_RPM[DRAWER_S3] = Calculate_Tacho_Fan_Speed(29166666, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg4); - Fans_Speed_RPM[SYSTEM_0] = Calculate_Tacho_Fan_Speed(29166666, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg5); - Fans_Speed_RPM[SYSTEM_1] = Calculate_Tacho_Fan_Speed(29166666, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg6); - Fans_Speed_RPM[SYSTEM_2] = Calculate_Tacho_Fan_Speed(29166666, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg7); + Fans_Speed_RPM[DRAWER_B] = Calculate_Tacho_Fan_Speed(FPGA_Freq, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg0); + Fans_Speed_RPM[DRAWER_S0] = Calculate_Tacho_Fan_Speed(FPGA_Freq, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg1); + Fans_Speed_RPM[DRAWER_S1] = Calculate_Tacho_Fan_Speed(FPGA_Freq, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg2); + Fans_Speed_RPM[DRAWER_S2] = Calculate_Tacho_Fan_Speed(FPGA_Freq, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg3); + Fans_Speed_RPM[DRAWER_S3] = Calculate_Tacho_Fan_Speed(FPGA_Freq, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg4); + Fans_Speed_RPM[SYSTEM_0] = Calculate_Tacho_Fan_Speed(FPGA_Freq, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg5); + Fans_Speed_RPM[SYSTEM_1] = Calculate_Tacho_Fan_Speed(FPGA_Freq, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg6); + Fans_Speed_RPM[SYSTEM_2] = Calculate_Tacho_Fan_Speed(FPGA_Freq, 0X02, F1_Prescaler1_reg5, F1_Tacho_reg7); if( Fans_Speed_RPM[DRAWER_B] < 1000 ) // need to work around 3000 RPM Fans_Status.bit.DRAWER_BIG = ERROR;// not working / Low Speed @@ -342,7 +342,7 @@ uint32_t Read_Dryer_Fan_Tacho() uint32_t Drayer_Fan_Speed_RPM = 0; - Drayer_Fan_Speed_RPM = Calculate_Tacho_Fan_Speed(29166666, 12, F1_Prescaler1_reg5, F1_Tacho_reg8); + Drayer_Fan_Speed_RPM = Calculate_Tacho_Fan_Speed(FPGA_Freq, 12, F1_Prescaler1_reg5, F1_Tacho_reg8); return Drayer_Fan_Speed_RPM; @@ -398,3 +398,31 @@ void Machine_Idle_Breathing_Led() //if (Ten_msTick) } } + +uint32_t Read_Speed_Sensor_TypeII(uint32_t Counter, uint32_t Prescaler) +/* Counter - Increase the number to higher resolution * + * Prescaler - Deccrease the number to higher resolution*/ +{ + + uint32_t Speed_Hz; + + F1_Prescaler1_reg6 = Prescaler; + F1_gpo_cnt_A_reg = Counter; + + uint32_t i,temp,temp1; + for(i = 0 ; i< 10000; i++) + { + temp = F1_Tacho_reg9; + temp1 = FPGA_Freq; + temp1*=Counter; + temp1/=temp; + temp1/=Prescaler; + Speed_Hz = temp1; + //Speed_Hz = (FPGA_Freq * Counter) /(temp * Prescaler); + delayms(100); + } + #warning change the speed from Hz to Cm/Sec + + return Speed_Hz; +} + diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.h b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.h index 1c2bbfb1a..c3c427933 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.h +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA.h @@ -15,7 +15,7 @@ void Control_Dryer_Fan_PWM(uint8_t PWM_Command_Precent); void Machine_Idle_Breathing_Led(); uint32_t Read_Dryer_Fan_Tacho(); - +uint32_t Read_Speed_Sensor_TypeII(uint32_t Counter, uint32_t Prescaler); #endif //FPGA_H diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h index 752773c0d..9ddbbe485 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_Comm.h @@ -147,9 +147,9 @@ #define F1_LDANCER1_ROTENC_DATA_p_TX (*((volatile short *)(FPGA1_BASE | 0x1CE))) //This register triggers a TX transmission //FPGA VER 050219 -#define F1_GPO_02_bus (*((volatile short *)(FPGA3_BASE | 0x1D0))) //General purpose GPIO register -#define F1_Tacho_reg8 (*((volatile short *)(FPGA3_BASE | 0x1E0))) //This Register stores the Tacho counter -#define F1_Tacho_reg9 (*((volatile short *)(FPGA3_BASE | 0x1E2))) //This Register stores the Tacho counter A to A +#define F1_GPO_02_bus (*((volatile short *)(FPGA1_BASE | 0x1D0))) //General purpose GPIO register +#define F1_Tacho_reg8 (*((volatile short *)(FPGA1_BASE | 0x1E0))) //This Register stores the Tacho counter +#define F1_Tacho_reg9 (*((volatile short *)(FPGA1_BASE | 0x1E2))) //This Register stores the Tacho counter A to A // //SPI_MOTO_RLOADING_A1 #define F1_MOTO_RLOADING_A1_TX_00 (*((volatile short *)(FPGA1_BASE | 0x200))) //The second register to be shifted out of the spi. The msb bit of this register is shifted out first. diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.c index 6d032fe64..6a747ba61 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.c @@ -269,15 +269,18 @@ uint8_t test_IO() for(i=0;i<8;i++) { - status |= TCA9534Init(i, &Regs); - status |= TCA9534SetReadInputReg(i); - status |= TCA9534ReadInputReg(i, &Regs); - status |= TCA9534TestRelay(i, &Regs, ENABLE); - status |= TCA9534ByPass(i, &Regs, ENABLE); - Read_Notification_Disp_UP(i, &Regs); - Read_Notification_Disp_Down(i, &Regs); - Read_Notification_Realy_On(i, &Regs); - Read_Notification_Over_Press(i, &Regs); + if(Dispenser_struct[i].Type == DISP_TYPE_EEPROM128KB) + { + status |= TCA9534Init(i, &Regs); + status |= TCA9534SetReadInputReg(i); + status |= TCA9534ReadInputReg(i, &Regs); + status |= TCA9534TestRelay(i, &Regs, ENABLE); + status |= TCA9534ByPass(i, &Regs, ENABLE); + //Read_Notification_Disp_UP(i, &Regs); + //Read_Notification_Disp_Down(i, &Regs); + //Read_Notification_Realy_On(i, &Regs); + //Read_Notification_Over_Press(i, &Regs); + } } return status; diff --git a/Software/Embedded_SW/Embedded/Main.c b/Software/Embedded_SW/Embedded/Main.c index fc3d09402..45aad656f 100644 --- a/Software/Embedded_SW/Embedded/Main.c +++ b/Software/Embedded_SW/Embedded/Main.c @@ -215,6 +215,8 @@ int main(void) // //test_avi(); //example for shai + //Read_Speed_Sensor_TypeII(2,2); + //Test_ADS120_Internal_Temperature_Sensor(0); #ifndef EVALUATION_BOARD diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index 5fe242436..3ccb523c6 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -447,7 +447,7 @@ uint32_t MillisecLoop(uint32_t tick) } uint32_t MillisecLowLoop(uint32_t tick) { - uint8_t Motor_i,Disp_i,Heater_i,temp; + uint8_t Motor_i,Disp_i,Heater_i;//,temp; TEMPERATURE_SENSOR_ID_ENUM Sensor_i; //static int temp=0; diff --git a/Software/Stubs Collection/stubs/NewSpeedSensor.cs b/Software/Stubs Collection/stubs/NewSpeedSensor.cs new file mode 100644 index 000000000..02f8384bc --- /dev/null +++ b/Software/Stubs Collection/stubs/NewSpeedSensor.cs @@ -0,0 +1,45 @@ +using System; +using System.Text; +using System.Linq; +using System.Drawing; +using System.Diagnostics; +using System.Windows.Forms; +using System.Threading; +using System.Threading.Tasks; +using System.Collections.Generic; +using Tango.PMR.Stubs; +using Tango.Stubs; + +const UInt32 Freq = 29166667;//FPGA Freq + +const UInt32 F1_Tacho_reg9 = 0x1E2;//Time of Tacho / No of clk in one cycle +const UInt32 F1_gpo_cnt_A_reg = 0x3B0;// how many pulses to count +//const Int32 F1_Prescaler1_reg5 = 0x3E8; //OLD FPGA 05.022019 +const UInt32 F1_Prescaler1_reg6 = 0x3EA; //New FPGA + +const UInt32 CNT = 4;//bigger number for resolution +const UInt32 Presc = 2;//Lower number for resolution +UInt32 temp; + +public void OnExecute(StubManager stubManager) +{ + stubManager.Run("StubFpgaWriteRegRequest" ,0x60000000 + F1_Prescaler1_reg6, Presc);//for new FPGA use reg6!! + var response = stubManager.Run("StubFpgaReadRegRequest" ,0x60000000 + F1_Prescaler1_reg6);//for new FPGA use reg6!!! + response = stubManager.Run("StubFpgaReadRegRequest" ,0x60000000 + F1_gpo_cnt_A_reg); + stubManager.Run("StubFpgaWriteRegRequest" ,0x60000000 + F1_gpo_cnt_A_reg, CNT); + response = stubManager.Run("StubFpgaReadRegRequest" ,0x60000000 + F1_gpo_cnt_A_reg); + + for(int i =0;i<1000;i++) + { + response = stubManager.Run("StubFpgaReadRegRequest" ,0x60000000 + F1_Tacho_reg9); + + + temp = (Freq * CNT) /((UInt32)response.Value * Presc); + + stubManager.Write(temp); + stubManager.Write(" Hz, "); + stubManager.WriteHex((response.Value & 0xffff),4); + stubManager.WriteLine(""); + Thread.Sleep(100); //Sleep for 100 milli. + } +} \ No newline at end of file diff --git a/Software/Stubs Collection/stubs/new dispenser card GPIO.cs b/Software/Stubs Collection/stubs/new dispenser card GPIO.cs new file mode 100644 index 000000000..43d0dd76a --- /dev/null +++ b/Software/Stubs Collection/stubs/new dispenser card GPIO.cs @@ -0,0 +1,90 @@ +using System; +using System.Text; +using System.Linq; +using System.Drawing; +using System.Diagnostics; +using System.Windows.Forms; +using System.Threading; +using System.Threading.Tasks; +using System.Collections.Generic; +using Tango.PMR.Stubs; +using Tango.Stubs; + +public void OnExecute(StubManager stubManager) +{ + // Request ---- + // UInt32 : DispenserId + // Boolean : Start --- true for ByPass + // Boolean : SetDirection --- true for TestRelay + // UInt32 : SetMicrostepDivision -- 1 for TestByPassTestRelay + // Int32 : SetSpeed + + // Response ---- + // UInt32 : DispenserId + // UInt32 : DispenserPosition --- MSB for Disp_UP, LSB for Disp_Down + // UInt32 : InkWorningLevel ---- MSB for Realy_On, LSB for Over_Press + // String : Status + // UInt32 : StatusWord + + stubManager.Write("read inputs "); + stubManager.WriteLine(""); + var response = stubManager.Run("StubDispenserRequest" ,3, false, false, 0, 0);//read inputs + stubManager.Write("MSB for Disp_UP, LSB for Disp_Down "); + stubManager.WriteHex((response.DispenserPosition),4); + stubManager.WriteLine(""); + stubManager.Write("MSB for Realy_On, LSB for Over_Press "); + stubManager.WriteHex((response.InkWorningLevel),4); + stubManager.WriteLine(""); + stubManager.WriteLine("----"); + stubManager.WriteLine(""); + + stubManager.Write("TestRelay + read inputs "); + stubManager.WriteLine(""); + response = stubManager.Run("StubDispenserRequest" ,3, false, true, 0, 0);//TestRelay + read inputs + stubManager.Write("MSB for Disp_UP, LSB for Disp_Down "); + stubManager.WriteHex((response.DispenserPosition),4); + stubManager.WriteLine(""); + stubManager.Write("MSB for Realy_On, LSB for Over_Press "); + stubManager.WriteHex((response.InkWorningLevel),4); + stubManager.WriteLine(""); + stubManager.WriteLine("----"); + stubManager.WriteLine(""); + + stubManager.Write("ByPass + TestRelay + read inputs "); + stubManager.WriteLine(""); + response = stubManager.Run("StubDispenserRequest" ,3, true, true, 0, 0);//ByPass + TestRelay + read inputs + stubManager.Write("MSB for Disp_UP, LSB for Disp_Down "); + stubManager.WriteHex((response.DispenserPosition),4); + stubManager.WriteLine(""); + stubManager.Write("MSB for Realy_On, LSB for Over_Press "); + stubManager.WriteHex((response.InkWorningLevel),4); + stubManager.WriteLine(""); + stubManager.WriteLine("----"); + stubManager.WriteLine(""); + + stubManager.Write("Remove ByPass (TestRelay + read inputs) "); + stubManager.WriteLine(""); + response = stubManager.Run("StubDispenserRequest" ,3, false, true, 0, 0);//TestRelay + read inputs + stubManager.Write("MSB for Disp_UP, LSB for Disp_Down "); + stubManager.WriteHex((response.DispenserPosition),4); + stubManager.WriteLine(""); + stubManager.Write("MSB for Realy_On, LSB for Over_Press "); + stubManager.WriteHex((response.InkWorningLevel),4); + stubManager.WriteLine(""); + stubManager.WriteLine("----"); + stubManager.WriteLine(""); + + + stubManager.Write("Rempve TestRelay and read inputs "); + stubManager.WriteLine(""); + response = stubManager.Run("StubDispenserRequest" ,3, false, false, 0, 0);//read input + stubManager.Write("MSB for Disp_UP, LSB for Disp_Down "); + stubManager.WriteHex((response.DispenserPosition),4); + stubManager.WriteLine(""); + stubManager.Write("MSB for Realy_On, LSB for Over_Press "); + stubManager.WriteHex((response.InkWorningLevel),4); + stubManager.WriteLine(""); + stubManager.WriteLine("----"); + stubManager.WriteLine(""); + +} \ No newline at end of file -- cgit v1.3.1 From c8629b193fd4fa38f72905f1c33abe737f81a340 Mon Sep 17 00:00:00 2001 From: Avi Levkovich Date: Sun, 17 Mar 2019 12:01:28 +0200 Subject: Add default value of No_Safety_Event for I/O in old dispensers --- Software/Embedded_SW/Embedded/DataDef.h | 6 +- .../Dispenser_Card/IO_Ports/Dispenser_IO.c | 298 +++++++++++---------- .../Embedded/Modules/Control/MillisecTask.c | 2 +- 3 files changed, 164 insertions(+), 142 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/DataDef.h b/Software/Embedded_SW/Embedded/DataDef.h index a85ea7024..66a5aa74f 100644 --- a/Software/Embedded_SW/Embedded/DataDef.h +++ b/Software/Embedded_SW/Embedded/DataDef.h @@ -128,8 +128,7 @@ enum #define DOUBLE_BUFFER 2 -#define No_Safety_Event 1 -#define Safety_Event_Occurred 0 + #define CurrentMotDriver 0x08 #define VoltageMotDriver 0x00 @@ -296,6 +295,9 @@ typedef union #define LIMIT 0 // Limit Switch #define NO_LIMIT 1 +#define No_Safety_Event 1 +#define Safety_Event_Occurred 0 + //#define INVERSION_POLARITY_LIMIT 1 // Limit Switch //#define INVERSION_POLARITY_NO_LIMIT 0 diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.c index 6a747ba61..6376228cc 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.c @@ -19,17 +19,25 @@ uint8_t TCA9534Init(uint8_t Dispenser_ID, TCA9534Regs* Regs)//1 { uint8_t status = PASSED; - uint8_t Write_Buf[2]; + if(Dispenser_struct[Dispenser_ID].Type == DISP_TYPE_EEPROM128KB) + { + uint8_t Write_Buf[2]; + + status |= Select_Dispenser_Mux_Channel(Dispenser_ID); - status |= Select_Dispenser_Mux_Channel(Dispenser_ID); + //Set all GPIO to Input + Regs->Config[Dispenser_ID].Uchar = TCA9534_All_INPUT; - //Set all GPIO to Input - Regs->Config[Dispenser_ID].Uchar = TCA9534_All_INPUT; + Write_Buf[0] = TCA9534_CONFIG_REG; + Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; - Write_Buf[0] = TCA9534_CONFIG_REG; - Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; + status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); + } - status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); + Regs->Input[Dispenser_ID].bit.DISP_UP = No_Safety_Event; + Regs->Input[Dispenser_ID].bit.DISP_DOWN = No_Safety_Event; + Regs->Input[Dispenser_ID].bit.RELAY_ON = No_Safety_Event; + Regs->Input[Dispenser_ID].bit.OVER_PRESS = No_Safety_Event; return status; @@ -40,15 +48,16 @@ uint8_t TCA9534SetReadInputReg(uint8_t Dispenser_ID)//2 set before read { uint8_t status = PASSED; - uint8_t Write_Buf[1]; - - status |= Select_Dispenser_Mux_Channel(Dispenser_ID); - - Write_Buf[0] = TCA9534_INPUT_REG; + if(Dispenser_struct[Dispenser_ID].Type == DISP_TYPE_EEPROM128KB) + { + uint8_t Write_Buf[1]; - status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 1); + status |= Select_Dispenser_Mux_Channel(Dispenser_ID); + Write_Buf[0] = TCA9534_INPUT_REG; + status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 1); + } return status; } @@ -56,10 +65,12 @@ uint8_t TCA9534ReadInputReg(uint8_t Dispenser_ID, TCA9534Regs* Regs)//3 read { uint8_t status = PASSED; - status |= Select_Dispenser_Mux_Channel(Dispenser_ID); - - status |= I2C_Read(I2C_ID_DISP_MUX, TCA9534_ADDRESS + 1, Regs->Input[Dispenser_ID].Uchar, 1); + if(Dispenser_struct[Dispenser_ID].Type == DISP_TYPE_EEPROM128KB) + { + status |= Select_Dispenser_Mux_Channel(Dispenser_ID); + status |= I2C_Read(I2C_ID_DISP_MUX, TCA9534_ADDRESS + 1, Regs->Input[Dispenser_ID].Uchar, 1); + } return status; } @@ -69,103 +80,106 @@ uint8_t TCA9534TestByPassTestRelay(uint8_t Dispenser_ID, TCA9534Regs* Regs)//Set { uint8_t status = PASSED; - uint8_t Write_Buf[2]; + if(Dispenser_struct[Dispenser_ID].Type == DISP_TYPE_EEPROM128KB) + { - //set Mux to the current dispenser Channel - status |= Select_Dispenser_Mux_Channel(Dispenser_ID); + uint8_t Write_Buf[2]; - //Read the Realay_on pin - TCA9534SetReadInputReg(Dispenser_ID); - TCA9534ReadInputReg(Dispenser_ID, Regs); - if(Regs->Config[Dispenser_ID].bit.RELAY_ON != HIGH) - { - status |= FAILED; - } + //set Mux to the current dispenser Channel + status |= Select_Dispenser_Mux_Channel(Dispenser_ID); + + //Read the Realay_on pin + TCA9534SetReadInputReg(Dispenser_ID); + TCA9534ReadInputReg(Dispenser_ID, Regs); + if(Regs->Config[Dispenser_ID].bit.RELAY_ON != HIGH) + { + status |= FAILED; + } - //Set RELAY_TEST to output: - Regs->Config[Dispenser_ID].bit.RELAY_TEST = TCA9534_OUTPUT; - Write_Buf[0] = TCA9534_CONFIG_REG; - Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; - status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); + //Set RELAY_TEST to output: + Regs->Config[Dispenser_ID].bit.RELAY_TEST = TCA9534_OUTPUT; + Write_Buf[0] = TCA9534_CONFIG_REG; + Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; + status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); - //Set the test pin to LOW - Regs->Output[Dispenser_ID].bit.RELAY_TEST = LOW; - Write_Buf[0] = TCA9534_OUTPUT_REG; - Write_Buf[1] = Regs->Output[Dispenser_ID].Uchar; - status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); + //Set the test pin to LOW + Regs->Output[Dispenser_ID].bit.RELAY_TEST = LOW; + Write_Buf[0] = TCA9534_OUTPUT_REG; + Write_Buf[1] = Regs->Output[Dispenser_ID].Uchar; + status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); - //deley - delayms(5); + //deley + delayms(5); - //Read the Realay_on pin - TCA9534SetReadInputReg(Dispenser_ID); - TCA9534ReadInputReg(Dispenser_ID, Regs); - if(Regs->Config[Dispenser_ID].bit.RELAY_ON != LOW) - { - status |= FAILED; - } + //Read the Realay_on pin + TCA9534SetReadInputReg(Dispenser_ID); + TCA9534ReadInputReg(Dispenser_ID, Regs); + if(Regs->Config[Dispenser_ID].bit.RELAY_ON != LOW) + { + status |= FAILED; + } - //---------------------- test ByPass ---------------------- - //Set BYPASS to output: - Regs->Config[Dispenser_ID].bit.BYPASS = TCA9534_OUTPUT; - Write_Buf[0] = TCA9534_CONFIG_REG; - Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; - status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); - - //Set the BYPASS pin to LOW - Regs->Output[Dispenser_ID].bit.BYPASS = LOW; - Write_Buf[0] = TCA9534_OUTPUT_REG; - Write_Buf[1] = Regs->Output[Dispenser_ID].Uchar; - status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); - - //deley - delayms(Relay_Operate_time); - - //Read the Realay_on pin - TCA9534SetReadInputReg(Dispenser_ID); - TCA9534ReadInputReg(Dispenser_ID, Regs); - if(Regs->Config[Dispenser_ID].bit.RELAY_ON != HIGH) - { - status |= FAILED; - } + //---------------------- test ByPass ---------------------- + //Set BYPASS to output: + Regs->Config[Dispenser_ID].bit.BYPASS = TCA9534_OUTPUT; + Write_Buf[0] = TCA9534_CONFIG_REG; + Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; + status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); - //Set BYPASS to input: - Regs->Config[Dispenser_ID].bit.BYPASS = TCA9534_INPUT; - Write_Buf[0] = TCA9534_CONFIG_REG; - Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; - status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); + //Set the BYPASS pin to LOW + Regs->Output[Dispenser_ID].bit.BYPASS = LOW; + Write_Buf[0] = TCA9534_OUTPUT_REG; + Write_Buf[1] = Regs->Output[Dispenser_ID].Uchar; + status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); - //deley - delayms(Relay_Operate_time); + //deley + delayms(Relay_Operate_time); - //Read the Realay_on pin - TCA9534SetReadInputReg(Dispenser_ID); - TCA9534ReadInputReg(Dispenser_ID, Regs); - if(Regs->Config[Dispenser_ID].bit.RELAY_ON != LOW) - { - status |= FAILED; - } + //Read the Realay_on pin + TCA9534SetReadInputReg(Dispenser_ID); + TCA9534ReadInputReg(Dispenser_ID, Regs); + if(Regs->Config[Dispenser_ID].bit.RELAY_ON != HIGH) + { + status |= FAILED; + } - //--------------------------------------------------------- + //Set BYPASS to input: + Regs->Config[Dispenser_ID].bit.BYPASS = TCA9534_INPUT; + Write_Buf[0] = TCA9534_CONFIG_REG; + Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; + status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); - //Set RELAY_TEST to input: - Regs->Config[Dispenser_ID].bit.RELAY_TEST = TCA9534_INPUT; - Write_Buf[0] = TCA9534_CONFIG_REG; - Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; - status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); + //deley + delayms(Relay_Operate_time); - //deley - delayms(Relay_Operate_time); + //Read the Realay_on pin + TCA9534SetReadInputReg(Dispenser_ID); + TCA9534ReadInputReg(Dispenser_ID, Regs); + if(Regs->Config[Dispenser_ID].bit.RELAY_ON != LOW) + { + status |= FAILED; + } - //Read the Realay_on pin - TCA9534SetReadInputReg(Dispenser_ID); - TCA9534ReadInputReg(Dispenser_ID, Regs); - if(Regs->Config[Dispenser_ID].bit.RELAY_ON != HIGH) - { - status |= FAILED; - } + //--------------------------------------------------------- + + //Set RELAY_TEST to input: + Regs->Config[Dispenser_ID].bit.RELAY_TEST = TCA9534_INPUT; + Write_Buf[0] = TCA9534_CONFIG_REG; + Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; + status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); + + //deley + delayms(Relay_Operate_time); + //Read the Realay_on pin + TCA9534SetReadInputReg(Dispenser_ID); + TCA9534ReadInputReg(Dispenser_ID, Regs); + if(Regs->Config[Dispenser_ID].bit.RELAY_ON != HIGH) + { + status |= FAILED; + } + } return status; } @@ -174,33 +188,36 @@ uint8_t TCA9534TestRelay(uint8_t Dispenser_ID, TCA9534Regs* Regs, bool EnableTes { uint8_t status = PASSED; - uint8_t Write_Buf[2]; + if(Dispenser_struct[Dispenser_ID].Type == DISP_TYPE_EEPROM128KB) + { - //set Mux to the current dispenser Channel - status |= Select_Dispenser_Mux_Channel(Dispenser_ID); + uint8_t Write_Buf[2]; - if(EnableTestRelay) - { - //Set RELAY_TEST to output: - Regs->Config[Dispenser_ID].bit.RELAY_TEST = TCA9534_OUTPUT; - Write_Buf[0] = TCA9534_CONFIG_REG; - Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; - status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); + //set Mux to the current dispenser Channel + status |= Select_Dispenser_Mux_Channel(Dispenser_ID); + if(EnableTestRelay) + { + //Set RELAY_TEST to output: + Regs->Config[Dispenser_ID].bit.RELAY_TEST = TCA9534_OUTPUT; + Write_Buf[0] = TCA9534_CONFIG_REG; + Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; + status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); + + + //Set the RELAY_TEST pin to LOW + Regs->Output[Dispenser_ID].bit.RELAY_TEST = LOW; + Write_Buf[0] = TCA9534_OUTPUT_REG; + Write_Buf[1] = Regs->Output[Dispenser_ID].Uchar; + status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); + } - //Set the RELAY_TEST pin to LOW - Regs->Output[Dispenser_ID].bit.RELAY_TEST = LOW; - Write_Buf[0] = TCA9534_OUTPUT_REG; - Write_Buf[1] = Regs->Output[Dispenser_ID].Uchar; + //Set RELAY_TEST to input: + Regs->Config[Dispenser_ID].bit.RELAY_TEST = TCA9534_INPUT; + Write_Buf[0] = TCA9534_CONFIG_REG; + Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); } - - //Set RELAY_TEST to input: - Regs->Config[Dispenser_ID].bit.RELAY_TEST = TCA9534_INPUT; - Write_Buf[0] = TCA9534_CONFIG_REG; - Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; - status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); - return status; } @@ -209,33 +226,36 @@ uint8_t TCA9534ByPass(uint8_t Dispenser_ID, TCA9534Regs* Regs, bool EnableByPass { uint8_t status = PASSED; - uint8_t Write_Buf[2]; + if(Dispenser_struct[Dispenser_ID].Type == DISP_TYPE_EEPROM128KB) + { - //set Mux to the current dispenser Channel - status |= Select_Dispenser_Mux_Channel(Dispenser_ID); + uint8_t Write_Buf[2]; - if(EnableByPass) - { - //Set BYPASS to output: - Regs->Config[Dispenser_ID].bit.BYPASS = TCA9534_OUTPUT; - Write_Buf[0] = TCA9534_CONFIG_REG; - Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; - status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); + //set Mux to the current dispenser Channel + status |= Select_Dispenser_Mux_Channel(Dispenser_ID); + if(EnableByPass) + { + //Set BYPASS to output: + Regs->Config[Dispenser_ID].bit.BYPASS = TCA9534_OUTPUT; + Write_Buf[0] = TCA9534_CONFIG_REG; + Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; + status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); + + + //Set the BYPASS pin to LOW + Regs->Output[Dispenser_ID].bit.BYPASS = LOW; + Write_Buf[0] = TCA9534_OUTPUT_REG; + Write_Buf[1] = Regs->Output[Dispenser_ID].Uchar; + status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); + } - //Set the BYPASS pin to LOW - Regs->Output[Dispenser_ID].bit.BYPASS = LOW; - Write_Buf[0] = TCA9534_OUTPUT_REG; - Write_Buf[1] = Regs->Output[Dispenser_ID].Uchar; + //Set BYPASS to input: + Regs->Config[Dispenser_ID].bit.BYPASS = TCA9534_INPUT; + Write_Buf[0] = TCA9534_CONFIG_REG; + Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); } - - //Set BYPASS to input: - Regs->Config[Dispenser_ID].bit.BYPASS = TCA9534_INPUT; - Write_Buf[0] = TCA9534_CONFIG_REG; - Write_Buf[1] = Regs->Config[Dispenser_ID].Uchar; - status |= I2C_Write(I2C_ID_DISP_MUX, TCA9534_ADDRESS, Write_Buf, 2); - return status; } diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index 59aebd21a..8e4a36e62 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -447,7 +447,7 @@ uint32_t MillisecLoop(uint32_t tick) } uint32_t MillisecLowLoop(uint32_t tick) { - uint8_t Motor_i,Disp_i,Heater_i;//,temp; + uint8_t Motor_i,Disp_i,Heater_i,temp; TEMPERATURE_SENSOR_ID_ENUM Sensor_i; //static int temp=0; -- cgit v1.3.1 From aa9853ff33557531d89d8ce4f2eb196f45b0a591 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Sun, 17 Mar 2019 14:21:22 +0200 Subject: fix heaters error (DC, hot activation) --- .../Embedded/Modules/Heaters/Heaters_print.c | 7 +- .../stubs/technician view files/lp4 Tech Board.tpf | 143 ++++++++++----------- 2 files changed, 77 insertions(+), 73 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index 3f62fc3b6..230df628b 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -518,7 +518,7 @@ uint32_t PrepareHeater(int HeaterId, uint32_t SetTemperatue) return ERROR; } - //Report("PrepareHeater ", __FILE__,__LINE__,HeaterId, SetTemperatue, 0, 0); + Report("PrepareHeater ", __FILE__,__LINE__,HeaterId, SetTemperatue, 0, 0); //start thread control for all motors HeaterPIDConfig[HeaterId].m_params.MAX = HeaterControl[HeaterId].outputproportionalpowerlimit*100; @@ -699,6 +699,7 @@ uint32_t DcHeaterMaxTempCBFunction(uint32_t IfIndex, uint32_t eadValue) } } DeActivateHeater(index); + HeaterRecalculateHeaterParams(index, 0); HeaterMaxTempFlag[index] = true; //LOG_ERROR ((MinreadValue/100), "Heater Over the max temperature, turned off"); Report("Heater Over the max temperature, turned off",__FILE__,__LINE__,index,RpWarning,HeaterPreviousRead[index], HeaterControl[index].sensormaxvalue); @@ -782,6 +783,8 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue) if (readValue > HeaterCmd[index].targettemperatue) { DeActivateHeater(index); + HeaterRecalculateSharedHeatersParams(HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain,0); + HeaterRecalculateSharedHeatersParams(HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary,0); } return ERROR; } @@ -795,6 +798,8 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue) DeActivateHeater(HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary); DeActivateHeater(HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain); //Heaters OFF until coming into the proportional band + HeaterRecalculateSharedHeatersParams(HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain,0); + HeaterRecalculateSharedHeatersParams(HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary,0); return OK; } // if (readValue < ((HeaterCmd[index].targettemperatue * (100-HeaterControl[index].outputproportionalband))/100)) diff --git a/Software/Stubs Collection/stubs/technician view files/lp4 Tech Board.tpf b/Software/Stubs Collection/stubs/technician view files/lp4 Tech Board.tpf index 31d4041ee..94d383b94 100644 --- a/Software/Stubs Collection/stubs/technician view files/lp4 Tech Board.tpf +++ b/Software/Stubs Collection/stubs/technician view files/lp4 Tech Board.tpf @@ -26,11 +26,11 @@ 0 D7585119-4A42-4370-8F1E-F3E62553E588 -14774017 - 1 701 0 300 true + 1 ba743caa-95f2-4b20-8c32-8e5943ada3fc @@ -41,9 +41,9 @@ 0 78482AA4-3DF6-421F-944C-64328D3C3EF2 -14774017 + 10 0 70 - 10 true @@ -124,7 +124,7 @@ DryerAirHeater 0 - 23.74 + 23.97 false false true @@ -143,7 +143,7 @@ DryerMainHeater 0 - 77.21 + 24.889999999999997 false false true @@ -162,7 +162,7 @@ DryerSecondaryHeater 0 - -2 + 24.779999999999998 false false true @@ -181,7 +181,7 @@ HeaterZone3 0 - 86.1 + 27.02 false false true @@ -200,7 +200,7 @@ HeaterZone2 0 - 70.73 + 27.279999999999998 false false true @@ -219,7 +219,7 @@ HeaterZone1 0 - 77.05 + 26.299999999999997 false false true @@ -238,7 +238,7 @@ MixerHeater 0 - 49.069999999999993 + 24.419999999999998 false false true @@ -257,7 +257,7 @@ HeaterZone4 0 - 89.149999999999991 + 26.56 false false true @@ -276,7 +276,7 @@ HeaterZone5 0 - 93.05 + 26.97 false false true @@ -295,7 +295,7 @@ HeaterZone6 0 - 77.28 + 26.229999999999997 false false true @@ -421,7 +421,7 @@ 96B89605-F999-43FE-A1CD-2645BFB33A36 -1 10 - 2 + 0 6be024c6-3d1b-4267-9b77-44473aba56b7 @@ -433,7 +433,7 @@ FC60060A-3736-4910-B41A-FF6DABDF0E9E -1 10 - 2 + 0 7c720f3b-00e1-49dd-92f9-fdd1e9686623 @@ -445,7 +445,7 @@ 4CE6A82E-D841-4D33-BBB2-11F0743A441C -1 10 - 2 + 0 3ebd6759-521b-4ed1-a353-ee1ad7801f28 @@ -456,11 +456,11 @@ 0 D126DB23-784B-4F0C-8F88-D89A65A7549F -14774017 - 1 1460 0 16384 true + 1 984b4126-3dda-4624-a79f-0646eb0e1358 @@ -471,11 +471,11 @@ 0 10102BC3-0EAE-47FF-A8E5-8640780CAA3D -14774017 - 1 1516 0 16384 true + 1 8ebc3ab7-a02d-4b12-93b3-2563443831d7 @@ -486,11 +486,11 @@ 0 C0BCCD5C-346B-4C4A-A080-39D28E9E1A0C -14774017 - 1 1398 0 16384 true + 1 acafb268-5e97-4277-8dc8-173250a9e3f8 @@ -501,22 +501,11 @@ 0 9FBC5460-BA59-486B-8D85-BD7D8A959F98 -14774017 - 1 1273 0 100 true - - - 3ccb1485-b0e9-4d36-a931-a1b3865edeaa - 460 - 38.28761061946841 - 267 - 221.90707964601768 - 0 - 08d15ca1-d7d1-460f-8f37-42c37c287cd1 - -1 - 952.3546144121359 + 1 be4cb8d9-b516-4604-a6a5-1638cbc50251 @@ -527,11 +516,11 @@ 0 4CE6A82E-D841-4D33-BBB2-11F0743A441C -14774017 - 1 514 0 100000 true + 1 75b99507-4eba-4b11-b52e-26732d4c5479 @@ -542,11 +531,11 @@ 0 F1DF490B-0577-4FA7-ACA1-0EEF4F934E8F -14774017 - 4 1398 0 100 true + 4 a30e48de-be76-4230-92d0-d27d6f37b940 @@ -557,11 +546,11 @@ 0 5F12B974-2C9E-4DDD-9B20-733251A5D7E6 -14774017 - 4 1398 0 100 true + 4 5ac4b368-093a-4192-98d4-e9d24f229b13 @@ -572,11 +561,11 @@ 0 84CF23C9-D20D-4C08-BE1D-80201FC43C06 -14774017 - 4 1398 0 100 true + 4 9c34dc69-cfaa-48b4-9d02-8f0d9bba79dd @@ -588,6 +577,16 @@ -1 + + b083f678-c5ea-4700-bfa2-ca51ed62cf4b + 480 + 23.300884955752224 + 317 + 192.52212389380532 + 0 + -1 + 20 + @@ -814,9 +813,9 @@ 0 78482AA4-3DF6-421F-944C-64328D3C3EF2 -14774017 + 10 0 70 - 10 true @@ -850,11 +849,11 @@ 0 D023F15D-3555-48E9-A9E9-5DF99F60D791 0 - 1 10 0 100 true + 1 46bdfce3-1c69-45dd-bbe9-582d1ac1e6f2 @@ -1068,7 +1067,7 @@ 167.26548672566202 0 -1 - 40 + 20 92607e12-2dd6-41c9-8f89-f051f386b734 @@ -1170,11 +1169,11 @@ 0 D7585119-4A42-4370-8F1E-F3E62553E588 -14774017 - 2 2962 0 300 true + 2 c4e19f7c-e6e9-4f45-987e-f124456b2529 @@ -1185,11 +1184,11 @@ 0 A8DB1D27-6B25-4FB4-A3F5-46A29BA51955 -14774017 - 3 2817 0 300 true + 3 b8b24455-1c20-417d-bd78-5fe4c7e3d023 @@ -1200,11 +1199,11 @@ 0 6C0C1AB0-3EE9-40D7-8424-A79436FBC804 -14774017 - 2 2982 0 300 true + 2 2129a0cd-454f-4834-8197-3b048bf4b978 @@ -1215,11 +1214,11 @@ 0 098F7CAB-030C-46B0-B2B8-A85AF2253032 -14774017 - 2 2949 0 100 true + 2 892fabb7-01fa-4b39-a19e-a557fafae0ac @@ -1230,11 +1229,11 @@ 0 DACEBF90-E2B4-4CC9-A973-B8B429AA0089 -14774017 - 2 2628 0 300 true + 2 4859974c-7224-42d5-97ca-0e2e549372f5 @@ -1245,11 +1244,11 @@ 0 246C2551-5EFD-48E9-94F6-6313C5E5018F -14774017 - 2 3153 0 300 true + 2 81b78212-14d8-4a66-bf3a-eeea9900e0d6 @@ -1320,11 +1319,11 @@ 0 AFB7B6F7-8FFB-4A7F-B814-04F0C163CAA1 -14774017 - 2 3153 0 300 true + 2 9330a6be-17f1-4ecb-978d-719adf9fec1f @@ -1335,11 +1334,11 @@ 0 9A3877B2-9F98-4A5C-9A93-DECA2836FA8A -14774017 - 2 3153 0 300 true + 2 3228b2ba-83f3-4eb2-a6d2-7200301758a4 @@ -1373,7 +1372,7 @@ HeaterZone4 0 - 89.149999999999991 + 26.56 false false true @@ -1392,7 +1391,7 @@ HeaterZone1 0 - 77.05 + 26.299999999999997 false false true @@ -1411,7 +1410,7 @@ HeaterZone3 0 - 86.1 + 27.02 false false true @@ -1430,7 +1429,7 @@ HeaterZone5 0 - 93.05 + 26.97 false false true @@ -1449,7 +1448,7 @@ MixerHeater 0 - 49.069999999999993 + 24.419999999999998 false false true @@ -1468,7 +1467,7 @@ HeaterZone2 0 - 70.73 + 27.279999999999998 false false true @@ -1487,7 +1486,7 @@ HeaterZone6 0 - 77.28 + 26.229999999999997 false false true @@ -1506,7 +1505,7 @@ DryerAirHeater 0 - 23.74 + 23.97 false false true @@ -1538,11 +1537,11 @@ 0 098F7CAB-030C-46B0-B2B8-A85AF2253032 -14774017 - 1 10 0 100 true + 1 3bf6782d-117d-4589-a1d6-6454b67e3862 @@ -1553,11 +1552,11 @@ 0 6C0C1AB0-3EE9-40D7-8424-A79436FBC804 -14774017 - 1 10 0 300 true + 1 c7a89d21-7383-4caa-941e-b42e1109b16a @@ -1568,11 +1567,11 @@ 0 246C2551-5EFD-48E9-94F6-6313C5E5018F -14774017 - 1 10 0 300 true + 1 4c789472-cb4f-4ede-b22a-c733591117c8 @@ -1586,7 +1585,7 @@ HeaterZone3 0 - 86.1 + 27.02 false false true @@ -1605,7 +1604,7 @@ HeaterZone4 0 - 89.149999999999991 + 26.56 false false true @@ -1624,7 +1623,7 @@ HeaterZone5 0 - 93.05 + 26.97 false false true @@ -1765,9 +1764,9 @@ 0 78482AA4-3DF6-421F-944C-64328D3C3EF2 -14774017 + 10 0 70 - 10 true @@ -1784,11 +1783,11 @@ 0 A499E5E0-A812-4032-8F96-B38C6762C4BD -14774017 - 3 3600 0 100 true + 3 aae29286-81b3-476a-9f58-c0fd246cae96 @@ -1799,11 +1798,11 @@ 0 F33667BD-D9FA-4DC7-BC2C-0E89E60AE4BE -14774017 - 3 3600 0 100 true + 3 7d94c7c4-1288-4f9d-b0e6-a06794829642 @@ -1886,11 +1885,11 @@ 0 1F0F907A-EC16-4386-AFC8-B2B156F2A822 -14774017 - 3 3600 0 100 true + 3 1c254a92-c075-453f-9667-cdcc91cf8e6a @@ -1923,11 +1922,11 @@ 0 6B1DF4B0-BCC2-400C-A3B7-31C5119A55BB -14774017 - 3 3600 0 100 true + 3 0bef6e9d-6da0-4f06-9e1a-c00142bde4c1 @@ -1960,11 +1959,11 @@ 0 19645882-6587-4A50-BD85-AF06617DC654 -14774017 - 3 3600 0 100 true + 3 39f6a02c-c4d9-47d0-b92d-bdea0ed5d3ce @@ -2032,11 +2031,11 @@ 0 96B89605-F999-43FE-A1CD-2645BFB33A36 -14774017 - 1 10 0 100000 true + 1 3d0f66be-0002-403d-8d4b-0d49d85c0570 @@ -2047,11 +2046,11 @@ 0 D126DB23-784B-4F0C-8F88-D89A65A7549F -14774017 - 1 10 0 16384 true + 1 6ce9bf4a-e710-4bc6-bcc1-e8055b77530c @@ -2062,11 +2061,11 @@ 0 FC60060A-3736-4910-B41A-FF6DABDF0E9E -14774017 - 1 10 0 100000 true + 1 da0aa379-4643-40cb-b990-45574e5545df @@ -2077,11 +2076,11 @@ 0 10102BC3-0EAE-47FF-A8E5-8640780CAA3D -14774017 - 1 10 0 16384 true + 1 09b31ecb-8eaf-4c70-8057-1a11b5f10bad @@ -2092,11 +2091,11 @@ 0 89B7B89D-8050-4188-B568-35B1910CFB6F -14774017 - 1 10 0 100000 true + 1 2a970ff9-b593-4df4-977f-7d29ce25d0c6 @@ -2107,11 +2106,11 @@ 0 84CF23C9-D20D-4C08-BE1D-80201FC43C06 -14774017 - 1 10 0 100 true + 1 eebe8aa9-cff0-45ef-b1dd-d71cbe3b2947 @@ -2158,5 +2157,5 @@ - 2 + 1 \ No newline at end of file -- cgit v1.3.1 From a1be0b0db7f8284cac6a9b5c3aecd1c9968c82ce Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Sun, 17 Mar 2019 14:31:59 +0200 Subject: cancel heaters activation upon parameters push --- Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index 230df628b..8b9db2126 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -385,7 +385,7 @@ uint32_t HeaterCommandRequestMessage(int HeaterId, bool OnOff, int Temperature) PrepareHeater(HeaterId,Temperature); //prepare the heaters control info //set the power balance handler (if not set yet) // if the heater is off (?) start it. - ActivateHeater(HeaterId); + //ActivateHeater(HeaterId); //set the heater operation mode to fast heating - depended on the current temperature // timers are prepared but not started yet!!! only when the system is hot. -- cgit v1.3.1 From d6cbcb31e642adc4707c4d989bb20953de7f13fc Mon Sep 17 00:00:00 2001 From: Avi Levkovich Date: Mon, 18 Mar 2019 10:43:33 +0200 Subject: fix typo + add global index for vme file --- Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c | 4 ++-- .../Embedded/Drivers/FPGA/Full_Vme/ispvme/ispvm_ui.c | 11 ++++++++++- .../Embedded/Drivers/FPGA/Full_Vme/ispvme/ivm_core.c | 2 +- .../Embedded/Drivers/FPGA/Full_Vme/ispvme/vmopcode.h | 2 ++ .../Embedded_SW/Embedded/Drivers/FPGA/Motors_Driver/L6470.c | 4 +--- .../Embedded/Drivers/FPGA/Motors_Driver/PowerSTEP01.h | 6 +++--- Software/Embedded_SW/Embedded/Drivers/Motors/Motor.c | 4 +--- Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c | 2 +- Software/Embedded_SW/Embedded/Drivers/SPI/SPI_Comm.c | 4 ++-- .../Embedded/Modules/AlarmHandling/AlarmHandling.c | 2 +- .../Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Dancer.c | 3 +-- .../Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_L6470.c | 3 +-- .../Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Motor.c | 3 +-- .../Embedded/Modules/Stubs_Handler/Stub_SpeedSensor.c | 3 +-- .../Embedded/Modules/Stubs_Handler/Stub_TempSensor.c | 3 +-- Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c | 3 +-- 16 files changed, 30 insertions(+), 29 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c index e8b46084c..87a1515af 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c @@ -3,9 +3,9 @@ #include #include #include +#include +#include #include "FPGA_SPI_Comm.h" -#include "drivers/FPGA/Moters_Driver/L6470.h" -#include "drivers/FPGA/Moters_Driver/PowerSTEP01.h" #include "Drivers/Motors/Motor.h" #include "modules/control/millisecTask.h" #include "modules/thread/thread.h" diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/Full_Vme/ispvme/ispvm_ui.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/Full_Vme/ispvme/ispvm_ui.c index c216b9aad..a18d5bb76 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/Full_Vme/ispvme/ispvm_ui.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/Full_Vme/ispvme/ispvm_ui.c @@ -38,7 +38,7 @@ * 08/28/08 NN Added Calculate checksum support. ***************************************************************/ - +#include "Include.h" #include #include #include @@ -53,6 +53,8 @@ FILE * g_pVMEFile = NULL; +uint32_t vme_index = 0; + /*************************************************************** * * Functions declared in this ispvm_ui.c module @@ -197,6 +199,8 @@ unsigned char GetByte() ucData = s[0]; //////// + + //if ( feof( g_pVMEFile ) ) avi- if(rc == 0) //avi+ { @@ -212,6 +216,11 @@ unsigned char GetByte() } + else + { + vme_index++; + } + /*************************************************************** * * Calculate the 32-bit CRC if the expected CRC exist. diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/Full_Vme/ispvme/ivm_core.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/Full_Vme/ispvme/ivm_core.c index 62a2b3b0e..b4613b7d3 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/Full_Vme/ispvme/ivm_core.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/Full_Vme/ispvme/ivm_core.c @@ -22,7 +22,7 @@ * the ispVMLCOUNT function * ***************************************************************/ - +#include "Include.h" #include #include #include "vmopcode.h" diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/Full_Vme/ispvme/vmopcode.h b/Software/Embedded_SW/Embedded/Drivers/FPGA/Full_Vme/ispvme/vmopcode.h index cdd05fd12..a6b5af2f1 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/Full_Vme/ispvme/vmopcode.h +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/Full_Vme/ispvme/vmopcode.h @@ -206,3 +206,5 @@ typedef struct { unsigned short usNegativeIndex; unsigned char ucUpdate; } LVDSPair; + +extern uint32_t vme_index; diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/Motors_Driver/L6470.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/Motors_Driver/L6470.c index cd0b09b93..f92278657 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/Motors_Driver/L6470.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/Motors_Driver/L6470.c @@ -7,6 +7,7 @@ //#include "graphics_adapter.h" //#include "Embedded/include.h" #include +#include #include #include #include "drivers/SPI/SPI_Comm.h" @@ -18,9 +19,6 @@ ////////////// //#include "stdafx.h" -#include "L6470.h" -//#include "FPGA_Comm.h" -// To use time library of C #include //int volatile * const MOSI_Reg = (int *)MOSI_BASE; diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/Motors_Driver/PowerSTEP01.h b/Software/Embedded_SW/Embedded/Drivers/FPGA/Motors_Driver/PowerSTEP01.h index bf1fe91d5..ab99cc340 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/Motors_Driver/PowerSTEP01.h +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/Motors_Driver/PowerSTEP01.h @@ -7,8 +7,8 @@ * Author: avi */ -#ifndef DRIVERS_FPGA_MOTERS_DRIVER_POWERSTEP01_H_ -#define DRIVERS_FPGA_MOTERS_DRIVER_POWERSTEP01_H_ +#ifndef DRIVERS_FPGA_MOTORS_DRIVER_POWERSTEP01_H_ +#define DRIVERS_FPGA_MOTORS_DRIVER_POWERSTEP01_H_ //powerSTEP01 @@ -165,4 +165,4 @@ typedef enum { POWERSTEP01_TDT_4000ns = (((uint8_t)0x1F)< +#include #include "include.h" #include "motor.h" #include "Modules/thread/thread.h" @@ -25,9 +26,6 @@ #include "drivers/FPGA/FPGA_SPI_Comm.h" #include "drivers/FPGA/FPGA_Comm.h" #include "drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h" -#include "drivers/FPGA/Moters_Driver/L6470.h" - -///////////////////////// #include "driverlib/ssi.h" extern unsigned long Run_Value ; diff --git a/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c b/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c index a9cb3b01e..75870d4f7 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c +++ b/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c @@ -12,6 +12,7 @@ *************************************************************************************************/ #include +#include #include "include.h" #include "motor.h" #include "Modules/thread/thread.h" @@ -25,7 +26,6 @@ #include "drivers/FPGA/FPGA_SPI_Comm.h" #include "drivers/FPGA/FPGA_Comm.h" #include "drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h" -#include "drivers/FPGA/Moters_Driver/L6470.h" #include "drivers/SSI_Comm/Dancer/Dancer.h" ///////////////////////// diff --git a/Software/Embedded_SW/Embedded/Drivers/SPI/SPI_Comm.c b/Software/Embedded_SW/Embedded/Drivers/SPI/SPI_Comm.c index 858fc01cb..43174ec89 100644 --- a/Software/Embedded_SW/Embedded/Drivers/SPI/SPI_Comm.c +++ b/Software/Embedded_SW/Embedded/Drivers/SPI/SPI_Comm.c @@ -13,8 +13,6 @@ #include "utils/uartstdio.h" //#include "graphics_adapter.h" -#include "drivers/FPGA/Moters_Driver/L6470.h" -#include "drivers/FPGA/Moters_Driver/PowerSTEP01.h" #include "PMR/Hardware/HardwareMotor.pb-c.h" //#include "drivers/FPGA/FPGA_Comm.h" @@ -22,6 +20,8 @@ #include #include #include +#include +#include #include "drivers/Motors/Motor.h" void temp_init_spi2(); diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c index 94c7614d1..570121f73 100644 --- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c +++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c @@ -11,6 +11,7 @@ #include "AlarmHandling.h" #include +#include #include #include @@ -46,7 +47,6 @@ #include "StateMachines/Printing/PrintingSTM.h" -#include "drivers/FPGA/Moters_Driver/L6470.h" #include "drivers/Motors/Motor.h" #include "drivers/Heater/TemperatureSensor.h" #include "drivers/Flash_ram/FlashProgram.h" diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Dancer.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Dancer.c index 61c7afe74..6bfb3f322 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Dancer.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Dancer.c @@ -8,6 +8,7 @@ #include #include +#include #include #include #include @@ -30,8 +31,6 @@ #include "drivers/FPGA/FPGA.h" #include "drivers/SPI/SPI_Comm.h" -#include "drivers/FPGA/Moters_Driver/L6470.h" - #include "driverlib/ssi.h" #include "drivers/SPI/SPI_Comm.h" #include "drivers/FPGA/FPGA_SSI_Comm.h" diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_L6470.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_L6470.c index 658205327..636889127 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_L6470.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_L6470.c @@ -1,6 +1,7 @@ #include #include +#include #include #include #include @@ -19,8 +20,6 @@ //#include "drivers/FPGA/FPGA.h" #include "drivers/SPI/SPI_Comm.h" -#include "drivers/FPGA/Moters_Driver/L6470.h" - #include "driverlib/ssi.h" unsigned long Run_Value = 136902 ; diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Motor.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Motor.c index 65ede8fac..0854aba40 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Motor.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_Motor.c @@ -1,6 +1,7 @@ #include #include +#include #include #include #include @@ -37,8 +38,6 @@ #include "drivers/FPGA/FPGA.h" #include "drivers/SPI/SPI_Comm.h" -#include "drivers/FPGA/Moters_Driver/L6470.h" - #include "driverlib/ssi.h" #include "drivers/SPI/SPI_Comm.h" #include "Modules/Thread/Thread_ex.h" diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_SpeedSensor.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_SpeedSensor.c index eea594817..4e6c4cf84 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_SpeedSensor.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_SpeedSensor.c @@ -9,6 +9,7 @@ #include #include +#include #include #include #include @@ -28,8 +29,6 @@ #include "drivers/FPGA/FPGA.h" #include "drivers/SPI/SPI_Comm.h" -#include "drivers/FPGA/Moters_Driver/L6470.h" - #include "driverlib/ssi.h" #include "drivers/SPI/SPI_Comm.h" #include "drivers/FPGA/FPGA_SSI_Comm.h" diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_TempSensor.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_TempSensor.c index f25a79b15..c320cca80 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_TempSensor.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Stub_TempSensor.c @@ -7,6 +7,7 @@ #include #include +#include #include #include #include @@ -29,8 +30,6 @@ #include "drivers/FPGA/FPGA.h" #include "drivers/SPI/SPI_Comm.h" -#include "drivers/FPGA/Moters_Driver/L6470.h" - #include "driverlib/ssi.h" #include "drivers/SPI/SPI_Comm.h" #include "drivers/FPGA/FPGA_SSI_Comm.h" diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c index a1e91f6fc..c277dd5df 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c @@ -2,6 +2,7 @@ **************************************************************************************************************************/ #include +#include #include "include.h" #include "PMR/Hardware/UploadHardWareConfigurationRequest.pb-c.h" @@ -17,8 +18,6 @@ #include "drivers/Flash_Memory/fatfs/ff.h" #include "drivers/SSI_Comm/Dancer/Dancer.h" -#include "drivers/FPGA/Moters_Driver/PowerSTEP01.h" - #include "thread.h" MotorDriverConfigStruc MotorsCfg[NUM_OF_MOTORS]={0}; HardwarePidControl MotorsControl[MAX_THREAD_MOTORS_NUM] = {0}; -- cgit v1.3.1 From 270559636c37928e6221384a485901380acd6f28 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Mon, 18 Mar 2019 18:09:10 +0200 Subject: IDS cleaning basic functions --- Software/Embedded_SW/Embedded/Modules/IDS/IDS.h | 4 ++ .../Embedded/Modules/IDS/IDS_Cleaning.c | 56 ++++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h b/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h index e7e6f3ff6..3a025664b 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h @@ -32,5 +32,9 @@ void IDS_Dispenser_RefillStarted (char DispenserId); void IDS_Dispenser_RefillEnded (char DispenserId); void IDS_Dispenser_MovingDirection (char DispenserId, bool direction); +uint32_t IDS_Cleaning_Move_Rockers (int LeftRockerSpeed,int RightRockerSpeed); +uint32_t IDS_Cleaning_Center_And_Stop_Rockers (int timeout,callback_fptr callback); +uint32_t IDS_Cleaning_Spray_Cleaning_Solution (int dispenserSpeed,callback_fptr callback); +uint32_t IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback); #endif //MODULES_IDS_IDS_H_ diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c new file mode 100644 index 000000000..02f25cb59 --- /dev/null +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c @@ -0,0 +1,56 @@ +/* + * IDS_Cleaning.c + * + * Created on: 18 áîøõ 2019 + * Author: User + */ +#include "include.h" +#include "ids.h" +#include "ids_ex.h" +#include "../control/control.h" +#include "../control/pidalgo.h" +#include "../thread/thread.h" +#include "PMR/Hardware/Hardwaremotor.pb-c.h" +#include "PMR/Hardware/HardwareDispenser.pb-c.h" +#include "StateMachines/Printing/printingSTM.h" +#include "drivers/motors/motor.h" +#include "drivers/valves/valve.h" + +int SaveLeftRockerSpeed = 50, SaveRightRockerSpeed = 50; +#define CLEANING_DISPENSER_ID 6 +uint32_t IDS_Cleaning_Move_Rockers (int LeftRockerSpeed,int RightRockerSpeed) +{ + uint32_t status = OK; + SaveLeftRockerSpeed = LeftRockerSpeed; + SaveRightRockerSpeed = RightRockerSpeed; + status |= MotorSetDirection(HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANHEAD,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANHEAD].directionthreadwize); + status |= MotorSetSpeed(HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANHEAD, RightRockerSpeed); + status |= MotorSetDirection(HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANMECH,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANMECH].directionthreadwize); + status |= MotorSetSpeed(HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANMECH, LeftRockerSpeed); + + return status; +} +uint32_t IDS_Cleaning_Center_And_Stop_Rockers (int timeout,callback_fptr callback) +{ + uint32_t status = OK; + status |= MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANHEAD,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANHEAD].directionthreadwize, SaveRightRockerSpeed, Motor_Id_to_LS_IdUp[HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANHEAD], callback,timeout); + status |= MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANMECH,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANMECH].directionthreadwize, SaveLeftRockerSpeed, Motor_Id_to_LS_IdUp[HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANMECH], callback,timeout); + + return status; +} +uint32_t IDS_Cleaning_Spray_Cleaning_Solution (int dispenserSpeed,callback_fptr callback) +{ + uint32_t status = OK; + status = IDS_Dispenser_Start_Motor_and_Open_Valve(CLEANING_DISPENSER_ID, dispenserSpeed, callback); + + return status; + +} +uint32_t IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback) +{ + uint32_t status = OK; + status = IDS_Dispenser_Close_Valve_And_Stop_Motor(CLEANING_DISPENSER_ID,callback); + + return status; + +} -- cgit v1.3.1 From 7080d6422a5c20b2acd0562fa2d8b3c91ba1590d Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Tue, 19 Mar 2019 11:27:51 +0200 Subject: Version 1.3.8.0 lock --- .../Embedded_SW/Embedded/Common/SW_Info/SW_Info.c | 2 +- .../PMR/Debugging/DebugLogCategory.pb-c.h | 2 +- .../Embedded_SW/Embedded/Drivers/Motors/Motor.h | 1 - Software/Embedded_SW/Embedded/Main.c | 3 +- .../Embedded/Modules/AlarmHandling/AlarmHandling.c | 58 +++++++++++++--------- .../Embedded/Modules/Heaters/Heaters_print.c | 5 +- Software/Embedded_SW/Embedded/Modules/IDS/IDS.h | 1 + .../Embedded/Modules/IDS/IDS_dispenser.c | 10 +--- Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h | 4 -- .../Embedded_SW/Embedded/Modules/IDS/IDS_print.c | 27 +--------- .../Embedded/Modules/Thread/Thread_print.c | 4 +- .../EmbeddedParameters/AlarmSourceType.proto | 4 ++ .../ConfigurationParameters.proto | 4 ++ 13 files changed, 54 insertions(+), 71 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') 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 5efeaa71d..336cfd9aa 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,3,7,9}; +TangoVersion_t _gTangoVersion = {1,3,8,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/PMR/Debugging/DebugLogCategory.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Debugging/DebugLogCategory.pb-c.h index 1fda3ab01..d97b42d33 100644 --- a/Software/Embedded_SW/Embedded/Communication/PMR/Debugging/DebugLogCategory.pb-c.h +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Debugging/DebugLogCategory.pb-c.h @@ -24,7 +24,7 @@ typedef enum _DebugLogCategory { DEBUG_LOG_CATEGORY__Warning = 1, DEBUG_LOG_CATEGORY__Error = 2, DEBUG_LOG_CATEGORY__Critical = 3, - DEBUG_LOG_CATEGORY__Safety = 4 + DEBUG_LOG_CATEGORY__Debug = 4 PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(DEBUG_LOG_CATEGORY) } DebugLogCategory; diff --git a/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h b/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h index ecc70765b..7599c10db 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h +++ b/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h @@ -201,7 +201,6 @@ uint32_t MotorMovetoBreakSensor (TimerMotors_t _motorId,bool direction, uint32_t uint32_t MotorMovetoDancerPosition (TimerMotors_t _motorId,bool direction, uint32_t Freq,uint32_t DancerId,bool dancervaluedirection, callback_fptr callback,uint32_t timeout); uint32_t MotorAbortMovetoLimitSwitch (TimerMotors_t _motorId); uint32_t MotorMoveToStopper (TimerMotors_t _motorId,bool direction, uint32_t Speed, callback_fptr callback,uint32_t backlash,uint32_t timeout); -uint32_t MotorMovetoEncoderPosition (TimerMotors_t MotorId, callback_fptr callback,uint32_t timeout); uint32_t MotorGoTo(TimerMotors_t _motorIdn, uint32_t Steps); #endif /* DRIVERS_MOTOR_H_ */ diff --git a/Software/Embedded_SW/Embedded/Main.c b/Software/Embedded_SW/Embedded/Main.c index fc3d09402..64f4380a8 100644 --- a/Software/Embedded_SW/Embedded/Main.c +++ b/Software/Embedded_SW/Embedded/Main.c @@ -58,14 +58,13 @@ #include "Drivers/I2C_Communication/I2C.h" -#include "Drivers/I2C_Communication/Dispenser_Card/EEPROM/Dispenser_EEPROM.h" +//#include "Drivers/I2C_Communication/Dispensers_EEPROM_MUX/Disp_EEPROM_MUX.h" #include "drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h" #include "drivers/Flash_Memory/FATFS/ff.h" #include "drivers/Flash_Memory/FATFS/Control_File_System.h" - //#define WATCHDOG //***************************************************************************** // diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c index 94c7614d1..fa46a84e4 100644 --- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c +++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c @@ -270,15 +270,24 @@ const AlarmHandlingItemStruc HardCodedAlarmItem[MAX_SYSTEM_ALARMS]={ { eOneSecond, MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANMECH , HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANMECH , x_STATUS_UVLO , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_CLEANING_MECHANISM_MOTOR_UNDERVOLTAGE ," MotorDyeingHeadCleaningUnderVoltage " }, /* 5038 */ { eOneSecond, MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANHEAD , HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANHEAD , x_STATUS_UVLO , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_CLEANING_HEAD_MOTOR_UNDERVOLTAGE ," MotorDyeingHeadCleaningHeadUnderVoltage " }, /* 5042 */ -// { eOneSecond, CurrentAlarm, HEAD_ZONE_1 , HEAD_ZONE_1 , 312 , FALSE , DEBUG_LOG_CATEGORY__Warning , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_ZONE_1_CURRENT_OUT_OF_RANGE ," Head Zone 1 Heater Current Out Of Range " }, /* 5018 */ -// { eOneSecond, CurrentAlarm, HEAD_ZONE_2 , HEAD_ZONE_2 , 187 , FALSE , DEBUG_LOG_CATEGORY__Warning , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_ZONE_2_CURRENT_OUT_OF_RANGE ," Head Zone 2 Heater Current Out Of Range " }, /* 5019 */ -// { eOneSecond, CurrentAlarm, HEAD_ZONE_3 , HEAD_ZONE_3 , 187 , FALSE , DEBUG_LOG_CATEGORY__Warning , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_ZONE_3_CURRENT_OUT_OF_RANGE ," Head Zone 3 Heater Current Out Of Range " }, /* 5020 */ -// { eOneSecond, CurrentAlarm, HEAD_ZONE_4 , HEAD_ZONE_4 , 312 , FALSE , DEBUG_LOG_CATEGORY__Warning , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_ZONE_4_CURRENT_OUT_OF_RANGE ," Head Zone 4 Heater Current Out Of Range " }, /* 5021 */ -// { eOneSecond, CurrentAlarm, HEAD_ZONE_5_6 , HEAD_ZONE_5_6 , 312 , FALSE , DEBUG_LOG_CATEGORY__Warning , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_ZONE_5_6_CURRENT_OUT_OF_RANGE ," Head Zone 5-6 Heater Current Out Of Range " }, /* 5022 */ -// { eOneSecond, CurrentAlarm, MIXCHIP , MIXCHIP , 187 , FALSE , DEBUG_LOG_CATEGORY__Warning , 0xFF , 2 , EVENT_TYPE__MIXER_CURRENT_OUT_OF_RANGE ," Mixer Heater Current Out Of Range " }, /* 6004 */ -// { eOneSecond, CurrentAlarm, DRYER_CURRENT_1, DRYER_CURRENT_1, 1 , FALSE , DEBUG_LOG_CATEGORY__Warning , 0xFF , 2 , EVENT_TYPE__DRYER_HEATERS_ZONE_1_CURRENT_OUT_OF_RANGE ," Drier Heater 1 Current Out Of Range " }, /* 6004 */ -// { eOneSecond, CurrentAlarm, DRYER_CURRENT_2, DRYER_CURRENT_2, 1 , FALSE , DEBUG_LOG_CATEGORY__Warning , 0xFF , 2 , EVENT_TYPE__DRYER_HEATERS_ZONE_2_CURRENT_OUT_OF_RANGE ," Drier Heater 2 Current Out Of Range " }, /* 6004 */ -// {eOneSecond,DoNotPollAlarm,0,0,0,0,DEBUG_LOG_CATEGORY__Safety,0xFF,0,EVENT_TYPE__DYEING_HEAD_THERMAL_CUTOFF,"Dyeing head Thermal Cut-Off"}, +// { eOneSecond, CurrentAlarm, HEAD_ZONE_1 , HEAD_ZONE_1 , 125 , TRUE , DEBUG_LOG_CATEGORY__Warning , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_ZONE_1_CURRENT_OUT_OF_RANGE ," Head Zone 1 Heater Current Out Of Range " }, /* 5018 */ +// { eOneSecond, CurrentAlarm, HEAD_ZONE_2 , HEAD_ZONE_2 , 187 , TRUE , DEBUG_LOG_CATEGORY__Warning , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_ZONE_2_CURRENT_OUT_OF_RANGE ," Head Zone 2 Heater Current Out Of Range " }, /* 5019 */ +// { eOneSecond, CurrentAlarm, HEAD_ZONE_3 , HEAD_ZONE_3 , 187 , TRUE , DEBUG_LOG_CATEGORY__Warning , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_ZONE_3_CURRENT_OUT_OF_RANGE ," Head Zone 3 Heater Current Out Of Range " }, /* 5020 */ +// { eOneSecond, CurrentAlarm, HEAD_ZONE_4 , HEAD_ZONE_4 , 312 , TRUE , DEBUG_LOG_CATEGORY__Warning , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_ZONE_4_CURRENT_OUT_OF_RANGE ," Head Zone 4 Heater Current Out Of Range " }, /* 5021 */ +// { eOneSecond, CurrentAlarm, HEAD_ZONE_5_6 , HEAD_ZONE_5_6 , 500 , TRUE , DEBUG_LOG_CATEGORY__Warning , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_ZONE_5_6_CURRENT_OUT_OF_RANGE ," Head Zone 5-6 Heater Current Out Of Range " }, /* 5022 */ +// { eOneSecond, CurrentAlarm, MIXCHIP , MIXCHIP , 187 , TRUE , DEBUG_LOG_CATEGORY__Warning , 0xFF , 2 , EVENT_TYPE__MIXER_CURRENT_OUT_OF_RANGE ," Mixer Heater Current Out Of Range " }, /* 6004 */ +// { eOneSecond, CurrentAlarm, DRYER_CURRENT_1, DRYER_CURRENT_1, 800 , TRUE , DEBUG_LOG_CATEGORY__Warning , 0xFF , 2 , EVENT_TYPE__DRYER_HEATERS_ZONE_1_CURRENT_OUT_OF_RANGE ," Drier Heater 1 Current Out Of Range " }, /* 6004 */ +// { eOneSecond, CurrentAlarm, DRYER_CURRENT_2, DRYER_CURRENT_2, 400 , TRUE , DEBUG_LOG_CATEGORY__Warning , 0xFF , 2 , EVENT_TYPE__DRYER_HEATERS_ZONE_2_CURRENT_OUT_OF_RANGE ," Drier Heater 2 Current Out Of Range " }, /* 6004 */ + + // { eOneSecond, CurrentAlarm, HEAD_ZONE_1 , HEAD_ZONE_1 , 0 , FALSE , DEBUG_LOG_CATEGORY__Warning , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_ZONE_1_CURRENT_LOOP_BREAK ," Head Zone 1 Heater Current Loop Break " }, /* 5018 */ + // { eOneSecond, CurrentAlarm, HEAD_ZONE_2 , HEAD_ZONE_2 , 0 , FALSE , DEBUG_LOG_CATEGORY__Warning , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_ZONE_2_CURRENT_LOOP_BREAK ," Head Zone 2 Heater Current Loop Break " }, /* 5019 */ + // { eOneSecond, CurrentAlarm, HEAD_ZONE_3 , HEAD_ZONE_3 , 0 , FALSE , DEBUG_LOG_CATEGORY__Warning , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_ZONE_3_CURRENT_LOOP_BREAK ," Head Zone 3 Heater Current Loop Break " }, /* 5020 */ + // { eOneSecond, CurrentAlarm, HEAD_ZONE_4 , HEAD_ZONE_4 , 0 , FALSE , DEBUG_LOG_CATEGORY__Warning , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_ZONE_4_CURRENT_LOOP_BREAK ," Head Zone 4 Heater Current Loop Break " }, /* 5021 */ + // { eOneSecond, CurrentAlarm, HEAD_ZONE_5_6 , HEAD_ZONE_5_6 , 0 , FALSE , DEBUG_LOG_CATEGORY__Warning , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_ZONE_5_6_CURRENT_LOOP_BREAK ," Head Zone 5-6 Heater Current Loop Break " }, /* 5022 */ + // { eOneSecond, CurrentAlarm, MIXCHIP , MIXCHIP , 0 , FALSE , DEBUG_LOG_CATEGORY__Warning , 0xFF , 2 , EVENT_TYPE__MIXER_CURRENT_LOOP_BREAK ," Mixer Heater Current Loop Break " }, /* 6004 */ + // { eOneSecond, CurrentAlarm, DRYER_CURRENT_1, DRYER_CURRENT_1, 0 , FALSE , DEBUG_LOG_CATEGORY__Warning , 0xFF , 2 , EVENT_TYPE__DRYER_HEATERS_ZONE_1_CURRENT_LOOP_BREAK ," Drier Heater 1 Current Loop Break " }, /* 6004 */ + // { eOneSecond, CurrentAlarm, DRYER_CURRENT_2, DRYER_CURRENT_2, 0 , FALSE , DEBUG_LOG_CATEGORY__Warning , 0xFF , 2 , EVENT_TYPE__DRYER_HEATERS_ZONE_2_CURRENT_LOOP_BREAK ," Drier Heater 2 Current Loop Break " }, /* 6004 */ +// {eOneSecond,DoNotPollAlarm,0,0,0,0,DEBUG_LOG_CATEGORY__Critical,0xFF,0,EVENT_TYPE__DYEING_HEAD_THERMAL_CUTOFF,"Dyeing head Thermal Cut-Off"}, {eOneSecond,DoNotPollAlarm,0,0,0,0,DEBUG_LOG_CATEGORY__Warning,0xFF,0,EVENT_TYPE__THREAD_BREAK,"Thread Break"}, {eOneSecond,DoNotPollAlarm,0,0,0,0,DEBUG_LOG_CATEGORY__Warning,0xFF,0,EVENT_TYPE__THREAD_TENSION_CONTROL_FAILURE_FEEDER_DANCER,"Thread Feeder Tension Control Failure"}, @@ -286,18 +295,20 @@ const AlarmHandlingItemStruc HardCodedAlarmItem[MAX_SYSTEM_ALARMS]={ {eOneSecond,DoNotPollAlarm,0,0,0,0,DEBUG_LOG_CATEGORY__Warning,0xFF,0,EVENT_TYPE__THREAD_TENSION_CONTROL_FAILURE_WINDER_DANCER,"Thread Winder Tension Control Failure"}, {eOneSecond,DoNotPollAlarm,0,0,0,0,DEBUG_LOG_CATEGORY__Warning,0xFF,0,EVENT_TYPE__WINDER_CONE_DOES_NOT_EXIST,"No cone in winder"}, - {eOneSecond,DoNotPollAlarm,0,0,0,0,DEBUG_LOG_CATEGORY__Safety,0xFF,0,EVENT_TYPE__DISPENSER_1_OVERPRESSURE,"Dispenser 1 OverPressure"}, - {eOneSecond,DoNotPollAlarm,0,0,0,0,DEBUG_LOG_CATEGORY__Safety,0xFF,0,EVENT_TYPE__DISPENSER_2_OVERPRESSURE,"Dispenser 2 OverPressure"}, - {eOneSecond,DoNotPollAlarm,0,0,0,0,DEBUG_LOG_CATEGORY__Safety,0xFF,0,EVENT_TYPE__DISPENSER_3_OVERPRESSURE,"Dispenser 3 OverPressure"}, - {eOneSecond,DoNotPollAlarm,0,0,0,0,DEBUG_LOG_CATEGORY__Safety,0xFF,0,EVENT_TYPE__DISPENSER_4_OVERPRESSURE,"Dispenser 4 OverPressure"}, - {eOneSecond,DoNotPollAlarm,0,0,0,0,DEBUG_LOG_CATEGORY__Safety,0xFF,0,EVENT_TYPE__DISPENSER_5_OVERPRESSURE,"Dispenser 5 OverPressure"}, - {eOneSecond,DoNotPollAlarm,0,0,0,0,DEBUG_LOG_CATEGORY__Safety,0xFF,0,EVENT_TYPE__DISPENSER_6_OVERPRESSURE,"Dispenser 6 OverPressure"}, - {eOneSecond,DoNotPollAlarm,0,0,0,0,DEBUG_LOG_CATEGORY__Safety,0xFF,0,EVENT_TYPE__DISPENSER_7_OVERPRESSURE,"Dispenser 7 OverPressure"}, - {eOneSecond,DoNotPollAlarm,0,0,0,0,DEBUG_LOG_CATEGORY__Safety,0xFF,0,EVENT_TYPE__DISPENSER_8_OVERPRESSURE,"Dispenser 8 OverPressure"}, - - {eOneSecond,DoNotPollAlarm,0,0,0,0,DEBUG_LOG_CATEGORY__Safety,0xFF,0,EVENT_TYPE__DRYER_DOOR_OPEN,"Dryer Door is open"}, - {eOneSecond,DoNotPollAlarm,0,0,0,0,DEBUG_LOG_CATEGORY__Safety,0xFF,0,EVENT_TYPE__NO_AIR_PRESSURE,"No suction in the waste handling system"}, - {eOneSecond,DoNotPollAlarm,0,0,0,0,DEBUG_LOG_CATEGORY__Safety,0xFF,0,EVENT_TYPE__AIR_FILTER_NOT_INSTALLED,"Air filter missing"}, + {eOneSecond,DoNotPollAlarm,0,0,0,0,DEBUG_LOG_CATEGORY__Critical,0xFF,0,EVENT_TYPE__DISPENSER_1_OVERPRESSURE,"Dispenser 1 OverPressure"}, + {eOneSecond,DoNotPollAlarm,0,0,0,0,DEBUG_LOG_CATEGORY__Critical,0xFF,0,EVENT_TYPE__DISPENSER_2_OVERPRESSURE,"Dispenser 2 OverPressure"}, + {eOneSecond,DoNotPollAlarm,0,0,0,0,DEBUG_LOG_CATEGORY__Critical,0xFF,0,EVENT_TYPE__DISPENSER_3_OVERPRESSURE,"Dispenser 3 OverPressure"}, + {eOneSecond,DoNotPollAlarm,0,0,0,0,DEBUG_LOG_CATEGORY__Critical,0xFF,0,EVENT_TYPE__DISPENSER_4_OVERPRESSURE,"Dispenser 4 OverPressure"}, + {eOneSecond,DoNotPollAlarm,0,0,0,0,DEBUG_LOG_CATEGORY__Critical,0xFF,0,EVENT_TYPE__DISPENSER_5_OVERPRESSURE,"Dispenser 5 OverPressure"}, + {eOneSecond,DoNotPollAlarm,0,0,0,0,DEBUG_LOG_CATEGORY__Critical,0xFF,0,EVENT_TYPE__DISPENSER_6_OVERPRESSURE,"Dispenser 6 OverPressure"}, + {eOneSecond,DoNotPollAlarm,0,0,0,0,DEBUG_LOG_CATEGORY__Critical,0xFF,0,EVENT_TYPE__DISPENSER_7_OVERPRESSURE,"Dispenser 7 OverPressure"}, + {eOneSecond,DoNotPollAlarm,0,0,0,0,DEBUG_LOG_CATEGORY__Critical,0xFF,0,EVENT_TYPE__DISPENSER_8_OVERPRESSURE,"Dispenser 8 OverPressure"}, + + {eOneSecond,DoNotPollAlarm,0,0,0,0,DEBUG_LOG_CATEGORY__Critical,0xFF,0,EVENT_TYPE__DRYER_DOOR_OPEN,"Dryer Door is open"}, + {eOneSecond,DoNotPollAlarm,0,0,0,0,DEBUG_LOG_CATEGORY__Critical,0xFF,0,EVENT_TYPE__NO_AIR_PRESSURE,"No suction in the waste handling system"}, + {eOneSecond,DoNotPollAlarm,0,0,0,0,DEBUG_LOG_CATEGORY__Critical,0xFF,0,EVENT_TYPE__AIR_FILTER_NOT_INSTALLED,"Air filter missing"}, + {eOneSecond,DoNotPollAlarm,0,0,0,0,DEBUG_LOG_CATEGORY__Error,0xFF,0,EVENT_TYPE__WASTE_CONTAINER_EMPTYING_TIMEOUT,"Waste Container Emptying Timeout"}, + }; char AlarmStorePath[25] = "0://SysInfo//AlarmPrm.cfg"; @@ -393,7 +404,6 @@ uint32_t AlarmHandlingConsequentActions(uint32_t AlarmId, DebugLogCategory Sever //raise flag fr next job break; case DEBUG_LOG_CATEGORY__Critical: - case DEBUG_LOG_CATEGORY__Safety: // watchdogCriticalAlarm = true; LOG_ERROR(AlarmId,"Critical Alarm - Watchdog activated to reset hardware"); @@ -742,14 +752,14 @@ uint32_t AlarmHandlingLoop(uint32_t tick) value = Get_Heaters_Current_Integer(AlarmItem[Alarm_i].DeviceId); if (AlarmItem[Alarm_i].AlarmDirection == true) { - if (value >= AlarmItem[Alarm_i].AlarmValue) + if ((value >= (AlarmItem[Alarm_i].AlarmValue*1.07))||(value <= (AlarmItem[Alarm_i].AlarmValue*0.80))) { Status = true; } } else { - if (value <= AlarmItem[Alarm_i].AlarmValue) + if (value == 0) { Status = true; } diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index a6fbe3ebc..8b9db2126 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -385,7 +385,7 @@ uint32_t HeaterCommandRequestMessage(int HeaterId, bool OnOff, int Temperature) PrepareHeater(HeaterId,Temperature); //prepare the heaters control info //set the power balance handler (if not set yet) // if the heater is off (?) start it. - ActivateHeater(HeaterId); + //ActivateHeater(HeaterId); //set the heater operation mode to fast heating - depended on the current temperature // timers are prepared but not started yet!!! only when the system is hot. @@ -518,7 +518,7 @@ uint32_t PrepareHeater(int HeaterId, uint32_t SetTemperatue) return ERROR; } - //Report("PrepareHeater ", __FILE__,__LINE__,HeaterId, SetTemperatue, 0, 0); + Report("PrepareHeater ", __FILE__,__LINE__,HeaterId, SetTemperatue, 0, 0); //start thread control for all motors HeaterPIDConfig[HeaterId].m_params.MAX = HeaterControl[HeaterId].outputproportionalpowerlimit*100; @@ -699,6 +699,7 @@ uint32_t DcHeaterMaxTempCBFunction(uint32_t IfIndex, uint32_t eadValue) } } DeActivateHeater(index); + HeaterRecalculateHeaterParams(index, 0); HeaterMaxTempFlag[index] = true; //LOG_ERROR ((MinreadValue/100), "Heater Over the max temperature, turned off"); Report("Heater Over the max temperature, turned off",__FILE__,__LINE__,index,RpWarning,HeaterPreviousRead[index], HeaterControl[index].sensormaxvalue); diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h b/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h index e7e6f3ff6..d27fb7c56 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h @@ -31,6 +31,7 @@ void IDS_Dispenser_Set_Flow_Params (char DispenserId,double NanoLitterPerPulse,c void IDS_Dispenser_RefillStarted (char DispenserId); void IDS_Dispenser_RefillEnded (char DispenserId); void IDS_Dispenser_MovingDirection (char DispenserId, bool direction); +uint32_t IDS_Dispenser_Build_Pressure(int DispenserId, callback_fptr callback); #endif //MODULES_IDS_IDS_H_ diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c index abfabe17d..acaf19744 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c @@ -62,15 +62,10 @@ uint32_t IdsGetMotorSpeed(uint32_t DispenserId) uint32_t IDS_Dispenser_Build_Pressure_Callback(uint32_t DispenserId, uint32_t ReadValue) { - uint32_t status; DispenserPrepareTime[DispenserId]+=DispenserPrepareTimeLag; if ((GetDispenserPressure(DispenserId)>=DispenserPreparePressure)||(DispenserPrepareTime[DispenserId]>=DispenserPrepareTimeout)) { - if (DispenserPrepareTime[DispenserId]>=DispenserPrepareTimeout) - status = ERROR; - else - status = OK; if (SafeRemoveControlCallback(DispenserControlId[DispenserId], IDS_Dispenser_Build_Pressure_Callback )==OK) DispenserControlId[DispenserId] = 0xFF; else @@ -81,12 +76,11 @@ uint32_t IDS_Dispenser_Build_Pressure_Callback(uint32_t DispenserId, uint32_t Re if (DispenserCallback[DispenserId]) { - - DispenserCallback[DispenserId](DispenserId,status); + DispenserCallback[DispenserId](DispenserId,ReadValue); DispenserCallback[DispenserId] = 0; } } - return status; + return OK; } uint32_t IDS_Dispenser_Build_Pressure(int DispenserId, callback_fptr callback) diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h index b201e6611..bf73ed7fa 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h @@ -39,9 +39,6 @@ uint32_t IDSSegmentState(void *JobDetails, int SegmentId); uint32_t IDSDistanceToSpoolState(void); uint32_t IDSEndState(void *JobDetails); -uint32_t IDS_StartLubrication(void); -uint32_t IDS_StopLubrication(void); - uint32_t IDS_DispenserPidRequestMessage(HardwarePidControl* request); uint32_t IDS_DispenserControlInit(); @@ -52,7 +49,6 @@ uint32_t IDS_Dispenser_Alarm_On (uint8_t deviceID); uint32_t IDS_Dispenser_Alarm_Off (uint8_t deviceID); uint32_t IDS_CheckDispenserLimitSwitch (LimitSwitchAlarms LS_Id); -uint32_t IDS_Dispenser_Build_Pressure(int DispenserId, callback_fptr callback); void IDS_Dispenser_SetTimeOutValues(uint32_t CloseTimeout, uint32_t OpenTimeout); void IDS_Dispenser_SetBackLashValues(double initialdispenserpressure, uint32_t initialdispensertimeout, uint32_t initialdispensertimelag); diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c index 0a9d40a15..2be233962 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c @@ -31,12 +31,11 @@ typedef struct PID_Config_Params m_params; }DispenserControlConfig_t; HardwarePidControl *DispensersControl;// = (HardwarePidControl *)GENHWCFG_MAP_IN_FLASH + 0x4000; -#define LUBRICANT_DISPENSER 7 -#define MAX_DYE_DISPENSERS 7 + int32_t DispenserSamples[MAX_SYSTEM_DISPENSERS][MAX_CONTROL_SAMPLES] = {0}; int DispenserSamplePointer[MAX_SYSTEM_DISPENSERS] = {0}; double DispenserNormalizedErrorCoEfficient[MAX_SYSTEM_DISPENSERS] = {0}; -double lubricant_speed = 0.0; + HardwarePidControlType ThreadDispenserIdToControlId[MAX_SYSTEM_DISPENSERS] = { HARDWARE_PID_CONTROL_TYPE__Dispenser1,HARDWARE_PID_CONTROL_TYPE__Dispenser2,HARDWARE_PID_CONTROL_TYPE__Dispenser3,HARDWARE_PID_CONTROL_TYPE__Dispenser4,HARDWARE_PID_CONTROL_TYPE__Dispenser5,HARDWARE_PID_CONTROL_TYPE__Dispenser6,HARDWARE_PID_CONTROL_TYPE__Dispenser7,HARDWARE_PID_CONTROL_TYPE__Dispenser8}; bool DispenserReady[MAX_SYSTEM_DISPENSERS] = {true}; @@ -161,13 +160,6 @@ void DispenserPrepareReady(void) if (JobTicket->segments[Segment_i]->brushstops[Brush_i]->dispensers[Dispenser_i]->nanolitterpersecond>0.0) { DispenserUsedInJob[DispenserId] = true; - if(DispenserId == LUBRICANT_DISPENSER) - { - lubricant_speed = JobTicket->segments[0]->brushstops[0]->dispensers[Dispenser_i]->nanolitterpersecond/ - JobTicket->segments[0]->brushstops[0]->dispensers[Dispenser_i]->nanoliterperpulse; - REPORT_MSG (lubricant_speed*100, "LUBRICANT_SPEED*100"); - } - } }//for dispenser }//if dispensers @@ -530,18 +522,3 @@ uint32_t IDSPreSegmentState(void *JobDetails, int SegmentId) return OK; } -uint32_t IDS_StartLubrication(void) -{ - IDS_Dispenser_Start_Motor_and_Open_Valve(LUBRICANT_DISPENSER,lubricant_speed,NULL); - Lubricant_2Way_Valve (START); - return OK; -} -uint32_t IDS_StopLubrication(void) -{ - if(DispenserUsedInJob[LUBRICANT_DISPENSER]) - { - IDS_Dispenser_Close_Valve_And_Stop_Motor(LUBRICANT_DISPENSER,IDS_Valve_EndValveReady); - Lubricant_2Way_Valve (STOP); - } - return OK; -} diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index f4dc6a170..6a8474438 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -30,7 +30,6 @@ #include "drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h" #include "modules/heaters/heaters.h" #include "modules/General/process.h" -#include "modules/ids/ids_ex.h" #include "Modules/AlarmHandling/AlarmHandling.h" #include "Control/MillisecTask.h" @@ -709,7 +708,6 @@ uint32_t ThreadPreSegmentState(void *JobDetails, uint32_t SegmentId) MotorSetDirection((TimerMotors_t)HARDWARE_MOTOR_TYPE__MOTO_LLOADING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LLOADING].directionthreadwize); MotorSetSpeed(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, 1); } - IDS_StartLubrication(); } // activate control fr all motors //set speed for both rocker motors @@ -809,7 +807,7 @@ char Endstr[150]; } MotorStop(HARDWARE_MOTOR_TYPE__MOTO_RLOADING,Hard_Hiz); MotorStop(HARDWARE_MOTOR_TYPE__MOTO_LLOADING,Hard_Hiz); - IDS_StopLubrication(); + return OK; } diff --git a/Software/PMR/Messages/EmbeddedParameters/AlarmSourceType.proto b/Software/PMR/Messages/EmbeddedParameters/AlarmSourceType.proto index 85f6f3dd6..46b6cf692 100644 --- a/Software/PMR/Messages/EmbeddedParameters/AlarmSourceType.proto +++ b/Software/PMR/Messages/EmbeddedParameters/AlarmSourceType.proto @@ -13,4 +13,8 @@ enum AlarmSourceType MotorAlarm = 4; CoversAlarm = 5; DoNotPollAlarm = 6; + HardLimitAlarm = 7; + TachoAlarm = 8; + FluidLevelAlarm = 9; + } diff --git a/Software/PMR/Messages/EmbeddedParameters/ConfigurationParameters.proto b/Software/PMR/Messages/EmbeddedParameters/ConfigurationParameters.proto index 9b7a5c8d7..733651a34 100644 --- a/Software/PMR/Messages/EmbeddedParameters/ConfigurationParameters.proto +++ b/Software/PMR/Messages/EmbeddedParameters/ConfigurationParameters.proto @@ -46,6 +46,10 @@ message ConfigurationParameters bool StartHeatingOnInitSequence = 20; // general storage for parameters that do not have a specific name updated repeated double GeneralParameters = 21; + //0: CheckHardLimitAlarms + //1: CheckCurrentAlarms + //2: checkTamperAlarms + // a limit percentage for current deviation below predefined level double CurrentAlarmLowLimit = 22; // a limit percentage for current deviation predefined level -- cgit v1.3.1 From 98daf1c80688585d2a34586c30a7ac0bf67dd91b Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Tue, 19 Mar 2019 11:52:26 +0200 Subject: PreVersion 1.3.8.1 lubrication, IDS presegment improvement start. alarm handling improved, pressure buildup on init, improve centering of drier arm. NON Operative, NOT TESTED! --- Software/Embedded_SW/Embedded/.cproject | 3 +- .../Embedded_SW/Embedded/Common/SW_Info/SW_Info.c | 2 +- .../PMR/Debugging/DebugLogCategory.pb-c.c | 4 +- .../PMR/EmbeddedParameters/AlarmSourceType.pb-c.c | 16 +- .../PMR/EmbeddedParameters/AlarmSourceType.pb-c.h | 5 +- .../ConfigurationParameters.pb-c.c | 110 ++++- .../ConfigurationParameters.pb-c.h | 18 +- .../Communication/PMR/Printing/JobTicket.pb-c.c | 19 +- .../Communication/PMR/Printing/JobTicket.pb-c.h | 4 +- .../Embedded/Drivers/FPGA/FPGA_SPI_Comm.c | 2 + .../Drivers/FPGA/Full_Vme/ispvme/ispvm_ui.c | 11 +- .../Drivers/FPGA/Full_Vme/ispvme/ivm_core.c | 2 +- .../Drivers/FPGA/Full_Vme/ispvme/vmopcode.h | 2 - .../Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c | 5 + .../Drivers/I2C_Communication/ADC_MUX/ADC_MUX.h | 1 + .../Embedded_SW/Embedded/Drivers/Motors/Motor.h | 1 + .../Embedded/Drivers/Motors/MotorActions.c | 148 +++++- Software/Embedded_SW/Embedded/Embedded.cfg | 3 + Software/Embedded_SW/Embedded/Main.c | 1 - .../Embedded/Modules/AlarmHandling/AlarmHandling.c | 534 ++++++++++++--------- .../Embedded/Modules/AlarmHandling/AlarmHandling.h | 1 + .../Embedded/Modules/General/GeneralHardware.c | 6 +- .../Embedded/Modules/IDS/IDS_dispenser.c | 10 +- Software/Embedded_SW/Embedded/Modules/IDS/IDS_ex.h | 4 + .../Embedded_SW/Embedded/Modules/IDS/IDS_maint.c | 4 +- .../Embedded_SW/Embedded/Modules/IDS/IDS_print.c | 74 ++- .../Embedded/Modules/Thread/ThreadLoad.c | 1 + .../Embedded/Modules/Thread/Thread_Winder.c | 12 +- .../Embedded/Modules/Thread/Thread_print.c | 7 +- .../Embedded/Software Release Notes.txt | 2 +- .../StateMachines/Initialization/InitSequence.c | 25 +- 31 files changed, 742 insertions(+), 295 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/.cproject b/Software/Embedded_SW/Embedded/.cproject index ae0630bbb..2dfc05eca 100644 --- a/Software/Embedded_SW/Embedded/.cproject +++ b/Software/Embedded_SW/Embedded/.cproject @@ -329,7 +329,6 @@