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