From 1b92f30f6dfa27392ffd8460ebeb17c17550db7b Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Wed, 18 Dec 2019 09:00:24 +0200 Subject: version 1.4.6.1 PMR: thread load and power down reporting. fix USB driver large files bug. ids pressure relief. some looking into the thread load sequence --- Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.h') diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.h b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.h index 0f6fd9d5d..d32788c8b 100644 --- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.h +++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.h @@ -22,6 +22,8 @@ uint32_t GetFilesRequestFunc(MessageContainer* requestContainer); uint32_t FileDownloadRequestFunc(MessageContainer* requestContainer); uint32_t FileChunkDownloadRequestFunc(MessageContainer* requestContainer); +void FileChunkUploadError(void); + FRESULT FileWrite(void * buffer, uint16_t size,char *path, uint32_t timeout); FRESULT FileRead(char *path, uint32_t *Size, void **Buffer); FRESULT FileOpen(char *path, uint32_t *Size, FIL *FileHandle); -- cgit v1.3.1 From 4c9319b4aa25287ab8660b1f667a06ff31fb7dc8 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Tue, 14 Jan 2020 18:52:44 +0200 Subject: Version 1.4.6.4: fix diagnostics, alarm handling data loading, fix heaters - new head is working. new TPF files for new head --- .../Embedded/Common/SWUpdate/FileSystem.c | 7 +- .../Embedded/Common/SWUpdate/FileSystem.h | 2 + .../Embedded_SW/Embedded/Common/SW_Info/SW_Info.c | 2 +- .../Embedded/Communication/Connection.c | 1 + .../PMR/Diagnostics/InterfaceIOs.pb-c.c | 38 +- .../PMR/Diagnostics/InterfaceIOs.pb-c.h | 3 + .../Embedded_SW/Embedded/Drivers/Heater/Heater.c | 2 +- .../Embedded/Drivers/USB_Communication/USBCDCD.c | 20 +- .../Embedded_SW/Embedded/Drivers/Valves/Valve.c | 55 +- .../Embedded/Drivers/flash_ram/FlashProgram.c | 2 +- .../Embedded/Drivers/flash_ram/FlashProgram.h | 4 +- Software/Embedded_SW/Embedded/Embedded.cfg | 4 +- .../Embedded/Modules/AlarmHandling/AlarmHandling.c | 110 +- .../Embedded/Modules/Control/MillisecTask.c | 19 +- .../Embedded_SW/Embedded/Modules/Control/control.c | 8 +- .../Modules/Diagnostics/DiagnosticActions.c | 6 + .../Embedded/Modules/Diagnostics/Diagnostics.c | 23 +- .../Embedded/Modules/General/GeneralHardware.c | 5 - .../Embedded/Modules/IDS/IDS_dispenser.c | 2 +- Software/Embedded_SW/Embedded/Modules/IFS/ifs.c | 7 + Software/Embedded_SW/Embedded/Modules/IFS/ifs.h | 1 + .../Embedded/Modules/Thread/Thread_print.c | 9 +- .../Initialization/PowerOffSequence.c | 10 +- .../stubs/technician view files/alpha.tpf | 2107 +++++++++++++++ .../stubs/technician view files/new head.tpf | 2689 ++++++++++++++++++++ 25 files changed, 5030 insertions(+), 106 deletions(-) create mode 100644 Software/Stubs Collection/stubs/technician view files/alpha.tpf create mode 100644 Software/Stubs Collection/stubs/technician view files/new head.tpf (limited to 'Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.h') diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c index d7592ccba..35f336627 100644 --- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c +++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c @@ -70,8 +70,11 @@ bool isDirectory(FileAttribute FileAtt) return true; return false; } -bool FileDone = false; - +bool FileDone = true; +bool FileUploadGetState(void) +{ + return FileDone; +} uint32_t FileUploadRequestFunc(MessageContainer* requestContainer) { //uint32_t status = OK; diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.h b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.h index d32788c8b..8c0133411 100644 --- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.h +++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.h @@ -28,4 +28,6 @@ FRESULT FileWrite(void * buffer, uint16_t size,char *path, uint32_t timeout); FRESULT FileRead(char *path, uint32_t *Size, void **Buffer); FRESULT FileOpen(char *path, uint32_t *Size, FIL *FileHandle); +bool FileUploadGetState(void); + #endif /* COMMON_SWUPDATE_FILESYSTEM_H_ */ 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 fcb2620b7..379975093 100644 --- a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c +++ b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c @@ -20,7 +20,7 @@ typedef struct } TangoVersion_t; -TangoVersion_t _gTangoVersion = {1,4,6,3}; +TangoVersion_t _gTangoVersion = {1,4,6,4}; #define BUILD_DATE __DATE__ char Dat[50] = BUILD_DATE; char _gTangoName [MAX_STRING_LEN] = "Tango01 ";//d diff --git a/Software/Embedded_SW/Embedded/Communication/Connection.c b/Software/Embedded_SW/Embedded/Communication/Connection.c index 473aa05ee..f4b973288 100644 --- a/Software/Embedded_SW/Embedded/Communication/Connection.c +++ b/Software/Embedded_SW/Embedded/Communication/Connection.c @@ -17,6 +17,7 @@ #include #include +#include "Common/SWUpdate/FileSystem.h" #include "Common/SW_Info/SW_Info.h" #include "Common/report/report.h" #include diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/InterfaceIOs.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/InterfaceIOs.pb-c.c index e51a7693c..451462fa3 100644 --- a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/InterfaceIOs.pb-c.c +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/InterfaceIOs.pb-c.c @@ -7,7 +7,7 @@ #endif #include "InterfaceIOs.pb-c.h" -static const ProtobufCEnumValue interface_ios__enum_values_by_number[42] = +static const ProtobufCEnumValue interface_ios__enum_values_by_number[45] = { { "ANALOG_MIXCHIP_TEMP", "INTERFACE_IOS__ANALOG_MIXCHIP_TEMP", 0 }, { "GPO_MIXCHIP_SSR4_CTRL", "INTERFACE_IOS__GPO_MIXCHIP_SSR4_CTRL", 19 }, @@ -41,6 +41,9 @@ static const ProtobufCEnumValue interface_ios__enum_values_by_number[42] = { "Midtank8Cartridge", "INTERFACE_IOS__Midtank8Cartridge", 180 }, { "SW_SPARE", "INTERFACE_IOS__SW_SPARE", 224 }, { "GPO_BUZZER", "INTERFACE_IOS__GPO_BUZZER", 270 }, + { "GPO_LED1", "INTERFACE_IOS__GPO_LED1", 271 }, + { "GPO_LED2", "INTERFACE_IOS__GPO_LED2", 272 }, + { "GPO_LED3", "INTERFACE_IOS__GPO_LED3", 273 }, { "GPO_LED4", "INTERFACE_IOS__GPO_LED4", 274 }, { "GPO_TFEED_BREAK_1", "INTERFACE_IOS__GPO_TFEED_BREAK_1", 296 }, { "GPO_SPARE1_1", "INTERFACE_IOS__GPO_SPARE1_1", 318 }, @@ -53,16 +56,16 @@ static const ProtobufCEnumValue interface_ios__enum_values_by_number[42] = { "VALVE_WASTE_TANK", "INTERFACE_IOS__VALVE_WASTE_TANK", 346 }, }; static const ProtobufCIntRange interface_ios__value_ranges[] = { -{0, 0},{19, 1},{43, 6},{54, 9},{64, 11},{163, 12},{224, 30},{270, 31},{274, 32},{296, 33},{318, 34},{341, 36},{0, 42} +{0, 0},{19, 1},{43, 6},{54, 9},{64, 11},{163, 12},{224, 30},{270, 31},{296, 36},{318, 37},{341, 39},{0, 45} }; -static const ProtobufCEnumValueIndex interface_ios__enum_values_by_name[42] = +static const ProtobufCEnumValueIndex interface_ios__enum_values_by_name[45] = { { "ANALOG_MIXCHIP_TEMP", 0 }, - { "GPI_WCONTAINER_FULL", 36 }, - { "GPI_WCONTAINER_WARN", 37 }, - { "GPO_BLOWER_PWM", 38 }, + { "GPI_WCONTAINER_FULL", 39 }, + { "GPI_WCONTAINER_WARN", 40 }, + { "GPO_BLOWER_PWM", 41 }, { "GPO_BUZZER", 31 }, - { "GPO_CHILLER_SSR9_CTRL", 39 }, + { "GPO_CHILLER_SSR9_CTRL", 42 }, { "GPO_DILUTORPUMP_SSR10_CTRL", 12 }, { "GPO_DRYER_SSR1_CTRL", 6 }, { "GPO_DRYER_SSR2_CTRL", 7 }, @@ -72,15 +75,18 @@ static const ProtobufCEnumValueIndex interface_ios__enum_values_by_name[42] = { "GPO_DYEINGH_SSR7_CTRL", 4 }, { "GPO_DYEINGH_SSR8_CTRL", 5 }, { "GPO_EXTWINDER_SSR11_CTRL", 11 }, - { "GPO_LED4", 32 }, + { "GPO_LED1", 32 }, + { "GPO_LED2", 33 }, + { "GPO_LED3", 34 }, + { "GPO_LED4", 35 }, { "GPO_MIXCHIP_SSR4_CTRL", 1 }, - { "GPO_SPARE1_1", 34 }, - { "GPO_SPARE1_2", 35 }, + { "GPO_SPARE1_1", 37 }, + { "GPO_SPARE1_2", 38 }, { "GPO_SPARE_SSR12_CTRL", 9 }, { "GPO_SPARE_SSR13_CTRL", 10 }, - { "GPO_TFEED_BREAK_1", 33 }, + { "GPO_TFEED_BREAK_1", 36 }, { "GPO_WASTECH_PUMP2", 13 }, - { "GPO_WHS_WTANKPUMP2", 40 }, + { "GPO_WHS_WTANKPUMP2", 43 }, { "Midtank1Air", 14 }, { "Midtank1Cartridge", 22 }, { "Midtank2Air", 15 }, @@ -98,7 +104,7 @@ static const ProtobufCEnumValueIndex interface_ios__enum_values_by_name[42] = { "Midtank8Air", 21 }, { "Midtank8Cartridge", 29 }, { "SW_SPARE", 30 }, - { "VALVE_WASTE_TANK", 41 }, + { "VALVE_WASTE_TANK", 44 }, }; const ProtobufCEnumDescriptor interface_ios__descriptor = { @@ -107,11 +113,11 @@ const ProtobufCEnumDescriptor interface_ios__descriptor = "InterfaceIOs", "InterfaceIOs", "", - 42, + 45, interface_ios__enum_values_by_number, - 42, + 45, interface_ios__enum_values_by_name, - 12, + 11, interface_ios__value_ranges, NULL,NULL,NULL,NULL /* reserved[1234] */ }; diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/InterfaceIOs.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/InterfaceIOs.pb-c.h index 31e40ba6e..4f0545389 100644 --- a/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/InterfaceIOs.pb-c.h +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Diagnostics/InterfaceIOs.pb-c.h @@ -52,6 +52,9 @@ typedef enum _InterfaceIOs { INTERFACE_IOS__Midtank8Cartridge = 180, INTERFACE_IOS__SW_SPARE = 224, INTERFACE_IOS__GPO_BUZZER = 270, + INTERFACE_IOS__GPO_LED1 = 271, + INTERFACE_IOS__GPO_LED2 = 272, + INTERFACE_IOS__GPO_LED3 = 273, INTERFACE_IOS__GPO_LED4 = 274, INTERFACE_IOS__GPO_TFEED_BREAK_1 = 296, INTERFACE_IOS__GPO_SPARE1_1 = 318, diff --git a/Software/Embedded_SW/Embedded/Drivers/Heater/Heater.c b/Software/Embedded_SW/Embedded/Drivers/Heater/Heater.c index 12aee6465..5630e8b5f 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Heater/Heater.c +++ b/Software/Embedded_SW/Embedded/Drivers/Heater/Heater.c @@ -67,7 +67,7 @@ HardwarePidControlType HeaterIdtoHeaterpid[HEATER_TYPE_MAX_HEATERS ]= HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ7, HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ8, HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ9, HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ10, HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ11, HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ12}; HeaterType HeaterTypetoHeadHeater[HEATER_TYPE_MAX_HEATERS] = {HEATER_TYPE_MAX_HEATERS,HEATER_TYPE_MAX_HEATERS,HEATER_TYPE_MAX_HEATERS,HEADCARD_HIT_ZN1,HEADCARD_HIT_ZN2,HEADCARD_HIT_ZN3,HEADCARD_HIT_ZN4,HEADCARD_HIT_ZN5,HEADCARD_HIT_ZN6, - HEADCARD_HIT_MIXER,HEADCARD_HIT_ZN8,HEADCARD_HIT_ZN9,HEADCARD_HIT_ZN10,HEADCARD_HIT_ZN11,HEADCARD_HIT_ZN12,HEADCARD_UPPER_HIT_IN1,HEADCARD_UPPER_HIT_OUT1}; + HEADCARD_HIT_MIXER,HEADCARD_HIT_ZN7,HEADCARD_HIT_ZN8,HEADCARD_HIT_ZN9,HEADCARD_HIT_ZN10,HEADCARD_HIT_ZN11,HEADCARD_HIT_ZN12,HEADCARD_UPPER_HIT_IN1,HEADCARD_UPPER_HIT_OUT1}; HEADCARD_HEATERS_ENUM HeadHeatertoHeaterType[HEADCARD_HIT_MIXER+1] = {HEATER_TYPE__HeaterZone1,HEATER_TYPE__HeaterZone2,HEATER_TYPE__HeaterZone3,HEATER_TYPE__HeaterZone4,HEATER_TYPE__HeaterZone5,HEATER_TYPE__HeaterZone6, HEATER_TYPE__HeaterZone7,HEATER_TYPE__HeaterZone8,HEATER_TYPE__HeaterZone9,HEATER_TYPE__HeaterZone10,HEATER_TYPE__HeaterZone11,HEATER_TYPE__HeaterZone12, HEATER_TYPE__HeadCoverHeater1,HEATER_TYPE_MAX_HEATERS,HEATER_TYPE_MAX_HEATERS,HEATER_TYPE_MAX_HEATERS, diff --git a/Software/Embedded_SW/Embedded/Drivers/USB_Communication/USBCDCD.c b/Software/Embedded_SW/Embedded/Drivers/USB_Communication/USBCDCD.c index d6756934b..81858a574 100644 --- a/Software/Embedded_SW/Embedded/Drivers/USB_Communication/USBCDCD.c +++ b/Software/Embedded_SW/Embedded/Drivers/USB_Communication/USBCDCD.c @@ -466,9 +466,9 @@ DFUDetachCallback(void *pvCBData, uint32_t ui32Event, uint32_t ui32MsgData, return(0); } #define MAX_USB_LOG 100 -//uint16_t UsbEventId[MAX_USB_LOG+1] = {0}; -//uint32_t UsbTime[MAX_USB_LOG+1] = {0}; -//uint16_t Usbindex = 0; +uint16_t UsbEventId[MAX_USB_LOG+1] = {0}; +uint32_t UsbTime[MAX_USB_LOG+1] = {0}; +uint16_t Usbindex = 0; //***************************************************************************** // @@ -491,11 +491,11 @@ uint32_t USBConn = 0, USBDisc = 0; uint32_t ControlHandler(void *pvCBData, uint32_t ui32Event, uint32_t ui32MsgValue, void *pvMsgData) { - /*UsbEventId[Usbindex] = ui32Event; + UsbEventId[Usbindex] = ui32Event; UsbTime[Usbindex] = msec_millisecondCounter; if (Usbindex++ >= MAX_USB_LOG) - Usbindex = 0;*/ - // + Usbindex = 0; + // // Which event are we being asked to process? // switch(ui32Event) @@ -911,6 +911,14 @@ void USBCDCD_Reinit(void) /* Set the USB stack mode to Device mode with VBUS monitoring */ //USBStackModeSet(0, eUSBModeForceDevice, 0); + HWREGBITW(&g_ui32Flags, FLAG_USB_CONFIGURED) = 0; + + //TODO: Notify disconnection! + USBDisc++; + // + // Set the command status update flag. + // + HWREGBITW(&g_ui32Flags, FLAG_STATUS_UPDATE) = 1; USBBufferFlush(&txBuffer); USBBufferFlush(&rxBuffer); diff --git a/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c b/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c index 9f96b4deb..a8a8cd2b9 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c +++ b/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c @@ -18,7 +18,7 @@ #include "drivers/FPGA/FPGA_Comm.h" #include #include "Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.h" - +#include "Modules/IFS/ifs.h" #include "Modules/Control/Control.h" VALVE_GPO_REG Valve_GPO_Reg; @@ -63,10 +63,61 @@ typedef enum #define Number_Of_Disopensers 8 callback_fptr Valve3WayModuleCallback[Number_Of_Disopensers] = {0, 0, 0, 0, 0, 0, 0, 0,}; uint32_t Valve3WayControlId[Number_Of_Disopensers] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; +bool Validate_Valve(Valves_t Valve_Id) +{ + int MidTankId; + if (ValveRequest[Valve_Id].Direction == 1) //opening always allowed + return true; + if (Valve_Id > VALVE_2W_MID_AIR_1)//dispenser valves + return true; + if (Valve_Id < VALVE_2W_MID_AIR_8)//cartridge valves + return true; + if (IFS_MidTankFilling() == false) //no ongoing filling process + return true; + switch (Valve_Id) + { + case VALVE_2W_MID_AIR_1: + MidTankId = 0; + break; + case VALVE_2W_MID_AIR_2: + MidTankId = 1; + break; + case VALVE_2W_MID_AIR_3: + MidTankId = 2; + break; + case VALVE_2W_MID_AIR_4: + MidTankId = 3; + break; + case VALVE_2W_MID_AIR_5: + MidTankId = 4; + break; + case VALVE_2W_MID_AIR_6: + MidTankId = 5; + break; + case VALVE_2W_MID_AIR_7: + MidTankId = 6; + break; + case VALVE_2W_MID_AIR_8: + MidTankId = 7; + break; + default: + return true; + } + if (MidTankId == IFS_MidTankIsActive()) + { + Report("Valve shutdown while ink filling is active - cancelled",__FILE__,__LINE__,(int)Valve_Id,RpWarning,(int)MidTankId,0); + return false; + } + return true; +} void Valve_Command(Valves_t Valve_Id) //1 - OPEN, 0 - CLOSE { - + if (Validate_Valve(Valve_Id) == false) + { + Report("Valve shutdown while ink filling is active - cancelled",__FILE__,__LINE__,(int)Valve_Id,RpWarning,(int)ValveRequest[Valve_Id].Direction,0); + return; + } switch(Valve_Id) { //Dry air Valves diff --git a/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.c b/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.c index b0b835342..43a038996 100644 --- a/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.c +++ b/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.c @@ -14,7 +14,7 @@ //#define FLASH_DEBUG #ifdef FLASH_DEBUG -#define MAX_CONT_LOG 20 +#define MAX_CONT_LOG 100 #define READ 1 #define DELETE 2 diff --git a/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.h b/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.h index 68b6dc2c5..f2329a7d4 100644 --- a/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.h +++ b/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.h @@ -8,7 +8,7 @@ #ifndef DRIVERS_FLASH_RAM_FLASHPROGRAM_H_ #define DRIVERS_FLASH_RAM_FLASHPROGRAM_H_ -#define FLASH_RAM_BASE 0x000D0000 +#define FLASH_RAM_BASE 0x000E0000 #define EMBEDDED_PARAMETERS_MAP_IN_FLASH (FLASH_RAM_BASE + 0X0000 ) #define PROCESS_PARAMETERS_MAP_IN_FLASH (FLASH_RAM_BASE + 0X0400 ) @@ -18,7 +18,7 @@ #define GENHWCFG_MAP_IN_FLASH (FLASH_RAM_BASE + 0X10000) #define OTHER_MAP_IN_FLASH (FLASH_RAM_BASE + 0X12000) -#define FLASH_SIZE 0X30000 +#define FLASH_SIZE 0X20000 //***************************************************************************** // diff --git a/Software/Embedded_SW/Embedded/Embedded.cfg b/Software/Embedded_SW/Embedded/Embedded.cfg index 75f32f24a..fca3623c6 100644 --- a/Software/Embedded_SW/Embedded/Embedded.cfg +++ b/Software/Embedded_SW/Embedded/Embedded.cfg @@ -18,7 +18,7 @@ var Task = xdc.useModule('ti.sysbios.knl.Task'); var HeapTrack = xdc.useModule('ti.sysbios.heaps.HeapTrack'); //var Memory = xdc.useModule('xdc.runtime.Memory'); -BIOS.heapSize = 40000; // bios heapmem +BIOS.heapSize = 60000; // bios heapmem //Memory.defaultHeapSize = 20000; //Program.heap = 40000; //Program.stack = 4096; @@ -122,7 +122,7 @@ Program.global.control = Task.create("&controlTask", ControlTaskParams); var AlarmHandlingTaskParams = new Task.Params(); AlarmHandlingTaskParams.instance.name = "AlarmHandling"; -AlarmHandlingTaskParams.stackSize = 2048; +AlarmHandlingTaskParams.stackSize = 4096; AlarmHandlingTaskParams.priority = 9; Program.global.AlarmHandling = Task.create("&AlarmHandlingTask", AlarmHandlingTaskParams); diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c index 5c16bda14..7d1cc5798 100644 --- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c +++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c @@ -168,8 +168,9 @@ AlarmStatusItem AlarmState[MAX_SYSTEM_ALARMS]; */ uint32_t * pAlarmItemSize = (uint32_t *)(ALARM_MAP_IN_FLASH); uint32_t AlarmItemSize ; -AlarmHandlingItemStruc *AlarmItem = (AlarmHandlingItemStruc *)(ALARM_MAP_IN_FLASH+4); -AlarmHandlingItemStruc HardCodedAlarmItem[MAX_SYSTEM_ALARMS]={ +AlarmHandlingItemStruc *AlarmItem = NULL;//(AlarmHandlingItemStruc *)(ALARM_MAP_IN_FLASH+4); +AlarmHandlingItemStruc *HardCodedAlarmItem=NULL; +//AlarmHandlingItemStruc HardCodedAlarmItem[MAX_SYSTEM_ALARMS]={ //* 7016 */ {eHundredMillisecond,ALARM_SOURCE_TYPE__LimitSwitchAlarm,LimitSwitchAlarmEmpty_1,0,false,true,DEBUG_LOG_CATEGORY__Error,0xFF,0,EVENT_TYPE__DISPENSER_1_EMPTY}, //* 7017 */ {eHundredMillisecond,ALARM_SOURCE_TYPE__LimitSwitchAlarm,LimitSwitchAlarmEmpty_2,1,false,true,DEBUG_LOG_CATEGORY__Error,0xFF,0,EVENT_TYPE__DISPENSER_2_EMPTY}, //* 7018 */ {eHundredMillisecond,ALARM_SOURCE_TYPE__LimitSwitchAlarm,LimitSwitchAlarmEmpty_3,2,false,true,DEBUG_LOG_CATEGORY__Error,0xFF,0,EVENT_TYPE__DISPENSER_3_EMPTY}, @@ -430,7 +431,7 @@ AlarmHandlingItemStruc HardCodedAlarmItem[MAX_SYSTEM_ALARMS]={ //* 10002 */ {eOneSecond,ALARM_SOURCE_TYPE__DoNotPollAlarm,0,0,0,0,DEBUG_LOG_CATEGORY__Error,0xFF,0,EVENT_TYPE__NO_WASTE_CARTRIDGE_AVAILABLE}, //* 10003 */ {eOneSecond,ALARM_SOURCE_TYPE__DoNotPollAlarm,0,0,0,0,DEBUG_LOG_CATEGORY__Error,0xFF,0,EVENT_TYPE__ALL_WASTE_CARTRIDGES_FULL} -}; +//}; char AlarmStorePath[30] ="0://SysInfo//Alarm.cfg"; uint16_t FluidLevelWarning = 20,FluidLevelError = 50; @@ -446,25 +447,15 @@ bool EventsNotificationRequestAccepted = false; //valve OCD //Motor Status //machine cover open -uint32_t AlarmHandlingFlashLoad(void) -{ - AlarmItemSize = sizeof(AlarmHandlingItemStruc)*MAX_SYSTEM_ALARMS; - - - EraseFlashSection(pAlarmItemSize,sizeof(AlarmHandlingItemStruc)*MAX_SYSTEM_ALARMS+4); - ReadAppAndProgram(pAlarmItemSize, 4,&AlarmItemSize); - ReadAppAndProgram(AlarmItem, sizeof(AlarmHandlingItemStruc)*MAX_SYSTEM_ALARMS, HardCodedAlarmItem); - LOG_ERROR(AlarmItem[110].EventType,"Flash Test"); - - return AlarmItemSize; -} +AlarmParameters * AlarmParametersTable = NULL; uint32_t AlarmHandlingLoadFile(void) { FRESULT Fresult = FR_OK; uint8_t* buffer = NULL; - uint32_t Bytes = 0,i,p_size = 0; - AlarmParameters * AlarmParametersTable = NULL; + uint32_t Bytes = 0,i,p_size = 0,F_count = 0,AlarmPtr; Fresult = FileRead(AlarmStorePath, &Bytes, &buffer); + AlarmHandlingItemStruc FileAlarmItem[4]; + if (Fresult == FR_OK) { AlarmParametersTable = alarm_parameters__unpack(NULL, Bytes, buffer); @@ -472,30 +463,63 @@ uint32_t AlarmHandlingLoadFile(void) { if (AlarmParametersTable->n_alarmitem) { + p_size = AlarmParametersTable->n_alarmitem*sizeof(AlarmHandlingItemStruc); + ReportWithPackageFilter(AlarmFilter,"Writing alarm size", __FILE__,pAlarmItemSize,AlarmParametersTable->n_alarmitem, RpMessage, p_size, 0); + EraseFlashSection(pAlarmItemSize,p_size+4); + ReadAppAndProgram(pAlarmItemSize, 4,&p_size); + AlarmPtr = (int)pAlarmItemSize+4; + p_size = 0; + F_count = 0; for (i = 0; i < AlarmParametersTable->n_alarmitem ;i++) { - HardCodedAlarmItem[i].AlarmDirection = AlarmParametersTable->alarmitem[i]->alarmdirection; - HardCodedAlarmItem[i].AlarmDirection = AlarmParametersTable->alarmitem[i]->alarmdirection; - HardCodedAlarmItem[i].Frequency = AlarmParametersTable->alarmitem[i]->frequency; //1/10/100/1000 - HardCodedAlarmItem[i].AlarmSource = AlarmParametersTable->alarmitem[i]->alarmsource; - HardCodedAlarmItem[i].DeviceId = AlarmParametersTable->alarmitem[i]->deviceid; - HardCodedAlarmItem[i].ModuleDeviceId = AlarmParametersTable->alarmitem[i]->moduledeviceid; - HardCodedAlarmItem[i].AlarmValue = AlarmParametersTable->alarmitem[i]->alarmvalue; - HardCodedAlarmItem[i].AlarmDirection = AlarmParametersTable->alarmitem[i]->alarmdirection; - HardCodedAlarmItem[i].Severity = AlarmParametersTable->alarmitem[i]->severity; - HardCodedAlarmItem[i].Predecessor = AlarmParametersTable->alarmitem[i]->predecessor; - HardCodedAlarmItem[i].DebounceValue = AlarmParametersTable->alarmitem[i]->debouncevalue; - HardCodedAlarmItem[i].EventType = AlarmParametersTable->alarmitem[i]->eventtype; + FileAlarmItem[F_count].AlarmDirection = AlarmParametersTable->alarmitem[i]->alarmdirection; + FileAlarmItem[F_count].AlarmDirection = AlarmParametersTable->alarmitem[i]->alarmdirection; + FileAlarmItem[F_count].Frequency = AlarmParametersTable->alarmitem[i]->frequency; //1/10/100/1000 + FileAlarmItem[F_count].AlarmSource = AlarmParametersTable->alarmitem[i]->alarmsource; + FileAlarmItem[F_count].DeviceId = AlarmParametersTable->alarmitem[i]->deviceid; + FileAlarmItem[F_count].ModuleDeviceId = AlarmParametersTable->alarmitem[i]->moduledeviceid; + FileAlarmItem[F_count].AlarmValue = AlarmParametersTable->alarmitem[i]->alarmvalue; + FileAlarmItem[F_count].AlarmDirection = AlarmParametersTable->alarmitem[i]->alarmdirection; + FileAlarmItem[F_count].Severity = AlarmParametersTable->alarmitem[i]->severity; + FileAlarmItem[F_count].Predecessor = AlarmParametersTable->alarmitem[i]->predecessor; + FileAlarmItem[F_count].DebounceValue = AlarmParametersTable->alarmitem[i]->debouncevalue; + FileAlarmItem[F_count].EventType = AlarmParametersTable->alarmitem[i]->eventtype; p_size+= sizeof(AlarmHandlingItemStruc); + F_count++; + + if (F_count == 4) + { + ReportWithPackageFilter(AlarmFilter,"Writing four alarms", __FILE__,AlarmPtr,F_count, RpMessage, p_size, 0); + F_count = 0; + ReadAppAndProgram(AlarmPtr, p_size,FileAlarmItem); + AlarmPtr+=p_size; + p_size = 0; + } + } + if (F_count)// finish the reminder of the file + { + ReportWithPackageFilter(AlarmFilter,"Writing additional alarms", __FILE__,AlarmPtr,F_count, RpMessage, p_size, 0); + //F_count = p_size%4; + //p_size += (4-F_count); + ReadAppAndProgram(AlarmPtr, p_size,FileAlarmItem); } - EraseFlashSection(pAlarmItemSize,p_size+4); - ReadAppAndProgram(pAlarmItemSize, 4,&p_size); - ReadAppAndProgram(AlarmItem, p_size,HardCodedAlarmItem); free (buffer); ReportWithPackageFilter(AlarmFilter,"AlarmHandlingLoadFile", __FILE__,__LINE__,p_size, RpMessage, AlarmParametersTable->n_alarmitem, 0); } alarm_parameters__free_unpacked(AlarmParametersTable,NULL); } + else + { + ReportWithPackageFilter(AlarmFilter,"no alarms alarm size", __FILE__,pAlarmItemSize,AlarmParametersTable->n_alarmitem, RpMessage, p_size, 0); + ReadAppAndProgram(pAlarmItemSize, 4,0); + return 0; + } + } + else + { + ReportWithPackageFilter(AlarmFilter,"no alarms file", __FILE__,pAlarmItemSize,AlarmParametersTable->n_alarmitem, RpMessage, p_size, 0); + ReadAppAndProgram(pAlarmItemSize, 4,0); + return 0; } return Bytes; } @@ -520,18 +544,22 @@ void AlarmHandlingInit(void) memcpy(&Bytes,(void *)pAlarmItemSize,sizeof(Bytes)); REPORT_MSG(Bytes,"Bytes read from flash"); - if ((Bytes)&&(Bytes < 10000)) + if ((Bytes)&&(Bytes < 12000)) { - AlarmItem = (AlarmHandlingItemStruc *)ALARM_MAP_IN_FLASH+4; + AlarmItem = (AlarmHandlingItemStruc *)((int)(ALARM_MAP_IN_FLASH+4)); } else { Bytes = AlarmHandlingLoadFile(); - Bytes = AlarmHandlingFlashLoad(); - REPORT_MSG(Bytes,"Bytes read hard coded"); + //Bytes = AlarmHandlingFlashLoad(); + REPORT_MSG(Bytes,"Bytes read from file"); + if ((Bytes)&&(Bytes < 12000)) + { + AlarmItem = (AlarmHandlingItemStruc *)((int)(ALARM_MAP_IN_FLASH+4)); + } } - AlarmItem = HardCodedAlarmItem; //back to hard coded until flash problem are solved + //AlarmItem = HardCodedAlarmItem; //back to hard coded until flash problem are solved return; @@ -595,6 +623,8 @@ JobEndReasonEnum getEndReason(uint32_t AlarmId) } uint32_t AlarmHandlingConsequentActions(uint32_t AlarmId, DebugLogCategory Severity) { + if (AlarmItem == NULL) + return ERROR; //DebugLogCategory reprocessedSeverity = Severity; //ProcessParameters ProcessParameterZero; switch (AlarmItem[AlarmId].AlarmSource) @@ -751,6 +781,8 @@ JobEndReasonEnum AlarmHandlingPrepareJob(void *CurrentJob) IDS_MapDispenserUsedinJob(CurrentJob); if (n_segments == 0) return JOB_OK; + if (AlarmItem == NULL) + return JOB_UNSPECIFIED_ERROR; /*for (Segment_i=0;Segment_in_segments;Segment_i++) { @@ -918,6 +950,8 @@ void AlarmHandlingSetAlarm(uint32_t AlarmId, bool value) void AlarmHandlingInternalSetAlarm(uint32_t AlarmId, bool value) { int Alarm_i; + if (AlarmItem == NULL) + return ERROR; for (Alarm_i = 0;Alarm_i < MAX_SYSTEM_ALARMS;Alarm_i++) { if (AlarmItem[Alarm_i].EventType == AlarmId) @@ -1013,6 +1047,8 @@ uint32_t AlarmHandlingLoop(uint32_t tick) //int32_t ivalue; bool Status = false; + if (AlarmItem == NULL) + return ERROR; int AlarmCounter=0; for (Alarm_i = 0;Alarm_i < MAX_SYSTEM_ALARMS;Alarm_i++) { diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index cd40afd9c..49930d8a9 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -580,7 +580,7 @@ uint32_t MillisecLowLoop(uint32_t tick) //call all modules Millisec functions //test dancers and speed encoders //check all callback units (state machine waiting for completion of a change) - bool Ten_msTick, Fifty_msTick, Hundred_msTick , m20msecTick,m70msecTick,m90msecTick, Onesecond_Tick,OneMinute_Tick,OneHourTick; + bool Ten_msTick, Fifty_msTick, Hundred_msTick , m20msecTick,m70msecTick,m90msecTick, Onesecond_Tick,OneMinute_Tick,OneHourTick,Gradient_Tick; bool O100Millisecond_Tick,O200Millisecond_Tick,O400Millisecond_Tick,O500Millisecond_Tick,O600Millisecond_Tick; //bool O100Millisecond_Tick,O200Millisecond_Tick,O400Millisecond_Tick,O500Millisecond_Tick,O600Millisecond_Tick,O800Millisecond_Tick,O900Millisecond_Tick; Ten_msTick = (tick%eTenMillisecond == 0) ?true:false; @@ -596,6 +596,7 @@ uint32_t MillisecLowLoop(uint32_t tick) O600Millisecond_Tick = (tick%eOneSecond == 600) ?true:false; //O800Millisecond_Tick = (tick%eOneSecond == 800) ?true:false; //O900Millisecond_Tick = (tick%eOneSecond == 900) ?true:false; + Gradient_Tick = (tick%400 == 0) ?true:false; Onesecond_Tick = (tick%eOneSecond == 0) ?true:false; OneMinute_Tick = (tick%eOneMinute == 0) ?true:false; OneHourTick = (tick%eOneHour == 0) ?true:false; @@ -648,7 +649,7 @@ uint32_t MillisecLowLoop(uint32_t tick) for (Sensor_i = 0;Sensor_i < MAX_MAIN_CARD_TEMP_SENS_ID;Sensor_i++) #endif { - // MillisecReadFromTempSensor(Sensor_i, NULL); + MillisecReadFromTempSensor(Sensor_i, NULL); } } if (Hundred_msTick) @@ -657,12 +658,7 @@ uint32_t MillisecLowLoop(uint32_t tick) Read_Buttons_Reg(); //Ink_Cart_Led(); /////////////////////////////////////////////////////////////////// - char Lenstr[160]; - static int Counter = 0; - TemperatureListString(Lenstr); - ReportWithPackageFilter(ThreadFilter,Lenstr,__FILE__,__LINE__,(int)Counter++,RpWarning,(int) msec_millisecondCounter,0); - /////////////////////////////////////////////////////////////////////////// #ifdef Use_Head_Card for (Sensor_i = TEMP_SENSE_ANALOG_DRYER_TEMP1;Sensor_i < MAX_HEAD_CARD_TEMP_SENS_ID;Sensor_i++) @@ -688,13 +684,14 @@ uint32_t MillisecLowLoop(uint32_t tick) } ADC_TriggerCollection(); } - DispensersCollectionCall(); #ifdef Use_Head_Card //Head_Read_IO_Reg(0x46, HIGH);//READ HEAD CARD LS #endif } + if (Gradient_Tick) + DispensersCollectionCall(); if (O100Millisecond_Tick) { Trigger_Heater_Current_Read(); @@ -732,8 +729,12 @@ uint32_t MillisecLowLoop(uint32_t tick) } if (Onesecond_Tick) { + char Lenstr[160]; + static int Counter = 0; MachineUpdateResponseFunc(); - //KeepAliveOneSecondCall(); + KeepAliveOneSecondCall(); + TemperatureListString(Lenstr); + ReportWithPackageFilter(ThreadFilter,Lenstr,__FILE__,__LINE__,(int)Counter++,RpWarning,(int) msec_millisecondCounter,0); #ifdef Use_Head_Card for (Sensor_i = TEMP_SENSE_ANALOG_DRYER_TEMP1;Sensor_i < MAX_HEAD_CARD_TEMP_SENS_ID;Sensor_i++) #else diff --git a/Software/Embedded_SW/Embedded/Modules/Control/control.c b/Software/Embedded_SW/Embedded/Modules/Control/control.c index 0d73c9c93..e093815a9 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/control.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/control.c @@ -406,11 +406,11 @@ int SafeRemoveHighControlCallback(uint32_t deviceId , ControlCBFunction Callback Report("Fixing Remove control ",__FILE__,__LINE__,(int)GetControlDevice_i(),RpWarning,(int)deviceId,0); if (RemoveControlCallback(GetControlDevice_i(),Callback)==OK) { - Report("Remove control callback fixed",__FILE__,__LINE__,(int)GetControlDevice_i(),RpWarning,(int)deviceId,0); + Report("Remove control callback fixed",ControlArray[GetControlDevice_i()].Name,__LINE__,(int)GetControlDevice_i(),RpWarning,(int)deviceId,0); } else { - Report("Remove control callback failed",__FILE__,__LINE__,(int)GetControlDevice_i(),RpWarning,(int)deviceId,0); + Report("Remove control callback failed",ControlArray[GetControlDevice_i()].Name,__LINE__,(int)GetControlDevice_i(),RpWarning,(int)deviceId,0); return ERROR; } } @@ -424,11 +424,11 @@ int SafeRemoveControlCallback(uint32_t deviceId , ControlCBFunction Callback) Report("Fixing Remove control ",__FILE__,__LINE__,(int)GetControlLowDevice_i(),RpWarning,(int)deviceId,0); if (RemoveControlCallback(GetControlLowDevice_i(),Callback)==OK) { - Report("Remove control callback fixed",__FILE__,__LINE__,(int)GetControlLowDevice_i(),RpWarning,(int)deviceId,0); + Report("Remove control callback fixed",ControlArray[GetControlDevice_i()].Name,__LINE__,(int)GetControlLowDevice_i(),RpWarning,(int)deviceId,0); } else { - Report("Remove control callback failed",__FILE__,__LINE__,(int)GetControlLowDevice_i(),RpWarning,(int)deviceId,0); + Report("Remove control callback failed",ControlArray[GetControlDevice_i()].Name,__LINE__,(int)GetControlLowDevice_i(),RpWarning,(int)deviceId,0); return ERROR; } } diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c index 2911c369a..e01cd5508 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c @@ -217,6 +217,12 @@ uint32_t SetDigitalOutRequestRequestFunc(MessageContainer* requestContainer) case INTERFACE_IOS__GPO_TFEED_BREAK_1: Pumps_Control(WASTECH_PUMP2, request->value); break; + case INTERFACE_IOS__GPO_LED3: + HeadCard_Actuators_Control(ACTIN, LOW,request->value); + break; + case INTERFACE_IOS__GPO_LED4: + HeadCard_Actuators_Control(ACTOT, LOW,request->value); + break; case INTERFACE_IOS__GPO_BUZZER: if (request->value == true) Buzzer(MODE_ON);//use START or STOP, 0 - 100%(); diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c index 61767c2d6..e49477b88 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c @@ -121,7 +121,7 @@ DoubleArray DiagnosticsMidTankInkLevel[MAX_SYSTEM_DISPENSERS]; HeaterState **heatersstates; HeaterState HeaterInfo[HEATER_TYPE_MAX_HEATERS]; -#define NUM_OF_INTERFACE_IOS 21 +#define NUM_OF_INTERFACE_IOS 23 DigitalInterfaceState **digitalinterfacestates; DigitalInterfaceState DigitalOutputState[NUM_OF_INTERFACE_IOS]; /*double dispenser1motorfrequency[DIAGNOSTICS_LIMIT+1]; @@ -192,7 +192,7 @@ void DiagnosticsInit(void) heater_state__init(&HeaterInfo[i]); heatersstates[i] = &HeaterInfo[i]; } - digitalinterfacestates = (DigitalInterfaceState**)my_malloc(sizeof(DigitalInterfaceState *)*(MAX_HEATERS_NUM+8)); + digitalinterfacestates = (DigitalInterfaceState**)my_malloc(sizeof(DigitalInterfaceState *)*(NUM_OF_INTERFACE_IOS)); for (i = 0;i=DIAGNOSTICS_LIMIT ) - MotorCounterIndex[MotorId] = 0; + if (MotorCounterIndex[MotorId]=DIAGNOSTICS_LIMIT ) - HeaterCounterIndex[HeaterId] = 0; + if (HeaterCounterIndex[HeaterId]= DIAGNOSTICS_LIMIT) DiagnosticsIndex = DIAGNOSTICS_LIMIT; + if (DiagnosticsIndex < DIAGNOSTICS_LIMIT) + DiagnosticsIndex++; if (DiagnosticsIndex >= DiagnosticCollectionLimit) SendDiagnostics(); diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c index ea27835ad..aaeb4ec48 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c +++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c @@ -738,11 +738,6 @@ void FlashInitAndLoad(void) { Report("Alarm Initialized from file", __FILE__,__LINE__,Bytes, RpMessage, ALARM_MAP_IN_FLASH, 0); } - else - { - Bytes = AlarmHandlingFlashLoad(); - Report("Alarm Initialized hard coded", __FILE__,__LINE__,Bytes, RpMessage, ALARM_MAP_IN_FLASH, 0); - } Fresult = FileRead(EmbeddedParametersPath, &Bytes, &buffer); if (Fresult == FR_OK) diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c index e2c2b3b1c..84d36d971 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c @@ -345,7 +345,7 @@ void IDS_Dispenser_Content_Calculation (char DispenserId) } if (DispenserId == 0) { - if ((seconds_counter++>=36000)&&(DispenserDataUpdated == true))//36000)// - one hour) + if ((seconds_counter++>=90000)&&(DispenserDataUpdated == true))//90000)// - one hour) { seconds_counter = 0; if (IDS_Dispenser_Data[DispenserId].consumedinnanolitter) diff --git a/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c b/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c index 78ae257ac..a358bd724 100644 --- a/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c +++ b/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c @@ -36,6 +36,10 @@ bool IFS_MidTankFilling(void) { return (IFS_info.Ink.time_out > 0); } +MidTank_t IFS_MidTankIsActive(void) +{ + return (IFS_info.Ink.cart_color); +} //RfidTagContent TagContent[MAX_CARTRIDGES]; NFC_Tag NFCTag[MAX_CARTRIDGES]; @@ -178,7 +182,9 @@ WHS_sensor CartridgeInkTimeOutCallBackFunction() // start timeout // close and open the correct valves + IFS_info.Ink.time_out = 0; MidTankValvesAction(Cartridge_MidTank_OFF); + IFS_info.Ink.time_out = CARTRIDGE_INK_TIMEOUT; } if (IFS_info.Ink.time_out == (CARTRIDGE_INK_TIMEOUT + 1)) //need to open the valve for second chance @@ -191,6 +197,7 @@ WHS_sensor CartridgeInkTimeOutCallBackFunction() { REPORT_MSG(WHS_full," ------------ IFS_Timeout_Second_Time ----------------- "); IFS_info.Ink.time_out = 0; + MidTankValvesAction(Cartridge_MidTank_OFF); WHS_info.event = IFS_Timeout_Second; return IFS_Timeout_Second; } diff --git a/Software/Embedded_SW/Embedded/Modules/IFS/ifs.h b/Software/Embedded_SW/Embedded/Modules/IFS/ifs.h index 36542a1a9..5304edd93 100644 --- a/Software/Embedded_SW/Embedded/Modules/IFS/ifs.h +++ b/Software/Embedded_SW/Embedded/Modules/IFS/ifs.h @@ -53,6 +53,7 @@ bool ColorMatch(); bool IFS_TimeOutAlarm(bool status); void ResponseDemo(int MidtankId); bool IFS_MidTankFilling(void); +MidTank_t IFS_MidTankIsActive(void); bool CartridgeValidationResponseFunc(MessageContainer* requestContainer); diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index 26616c141..1c3326336 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -500,7 +500,7 @@ uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue) { TranslatedReadValue = 0x3FFF- TranslatedReadValue; //overcome zero environment } - if (index == POOLER_MOTOR) + if ((index == POOLER_MOTOR)||((index == FEEDER_MOTOR)&&(DancersCfg[DancerId].assemblydirectionright == true))) { //pooler dancer is right sided: data is opposite TranslatedReadValue = (-1*TranslatedReadValue); @@ -909,8 +909,13 @@ uint32_t ThreadDryerRampUp(uint32_t IfIndex, uint32_t BusyFlag) InitialDryerSpeed = OriginalMotorSpd_2PPS[DRYER_MOTOR]; SafeRemoveControlCallback(ControlIdtoMotorId[DRYER_MOTOR], ThreadDryerRampUp ); ControlIdtoMotorId[DRYER_MOTOR] = 0xFF; + //ReportWithPackageFilter(ThreadFilter,"ThreadDryerRampUp end",__FILE__,ControlIdtoMotorId[DRYER_MOTOR],(int)InitialDryerSpeed,RpWarning,(int)OriginalMotorSpd_2PPS[DRYER_MOTOR],0); + } + if (InitialDryerSpeed == 0) + { + //ReportWithPackageFilter(ThreadFilter,"ThreadDryerRampUp Stopped",__FILE__,ControlIdtoMotorId[DRYER_MOTOR],(int)InitialDryerSpeed,RpWarning,(int)OriginalMotorSpd_2PPS[DRYER_MOTOR],0); + return OK; } - MotorSetSpeed(ThreadMotorIdToMotorId[DRYER_MOTOR],InitialDryerSpeed ); //ReportWithPackageFilter(ThreadFilter,"ThreadDryerRampUp",__FILE__,ControlIdtoMotorId[DRYER_MOTOR],(int)InitialDryerSpeed,RpWarning,(int)OriginalMotorSpd_2PPS[DRYER_MOTOR],0); diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c index aa8583a4d..7eaabe346 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c @@ -519,7 +519,7 @@ uint32_t PowerDownUpdate(POWER_OFF_STAGES_ENUM stage) { uint32_t status = NOT_SUPPORTED; - double calulate; + double calculate; int result; MessageContainer responseContainer; @@ -551,7 +551,9 @@ uint32_t PowerDownUpdate(POWER_OFF_STAGES_ENUM stage) response.message = "Head Cleaning heating up"; response.progresspercentage = 10.0; } - response.progresspercentage += ((PoolerTotalProcessedLength/job_length)*10); + calculate = (double)((PoolerTotalProcessedLength/job_length)*10); + result = (int)calculate; + response.progresspercentage += result; Report("Job calculation",__FILE__,(int)response.progresspercentage,(int)PoolerTotalProcessedLength,RpWarning,(int)job_length,0); if (response.progresspercentage > 20.0) response.progresspercentage = 20.0; @@ -583,8 +585,8 @@ uint32_t PowerDownUpdate(POWER_OFF_STAGES_ENUM stage) break; case POWER_OFF_WAIT_FOR_TEMPERATURE: response.state = stage +1; - calulate = (double)((StoreMax-MaxTemp)/(StoreMax-PowerOffTemperatureThreshold))*64.0; - result = (int)calulate; + calculate = (double)((StoreMax-MaxTemp)/(StoreMax-PowerOffTemperatureThreshold))*64.0; + result = (int)calculate; response.progresspercentage = 33.0 + result; Report("Wait calculation",__FILE__,MaxTemp,(int)response.progresspercentage,RpWarning,(int)result,0); response.message = "Wait for cooling down"; diff --git a/Software/Stubs Collection/stubs/technician view files/alpha.tpf b/Software/Stubs Collection/stubs/technician view files/alpha.tpf new file mode 100644 index 000000000..ed887f811 --- /dev/null +++ b/Software/Stubs Collection/stubs/technician view files/alpha.tpf @@ -0,0 +1,2107 @@ + + + + + + Temperatures + + + 50bae43f-8b1a-4279-9238-b976a0c72af3 + 1530 + 193.19911504424795 + 169 + 181.37610619469029 + 0 + A8DB1D27-6B25-4FB4-A3F5-46A29BA51955 + -1 + 10 + 2 + + + 88d1ed8f-752b-4eb0-9dad-b47aee34d5db + 677 + 64.513274336283189 + 575 + 201.64159292035407 + 0 + 48E8DD1B-46EC-4576-B513-7E734503B6DA + -14774017 + 1 + 701 + true + 0 + 300 + + + ba743caa-95f2-4b20-8c32-8e5943ada3fc + 144 + 589.78318584070769 + 380 + 194.54867256637203 + 0 + 78482AA4-3DF6-421F-944C-64328D3C3EF2 + -14774017 + 0 + 70 + 10 + true + + + e4892498-fa1a-413c-9dd8-633efaade51c + 561 + 638.02654867256649 + 203 + 160.09734513274339 + 0 + 6b9cba1d-4acf-4992-97ad-e422bca6ada2 + -1 + + + 1a243586-f54c-4208-bc29-458c45acd578 + 776 + 641.06637168141606 + 215 + 159.08407079646031 + 0 + b05b8324-022b-4d61-ae4a-33c97cd1f51b + -1 + + + c399ec1f-152e-4517-b6a3-c17bb445fc79 + 57 + 853.73451327433634 + 251 + 184.41592920353969 + 0 + 6f851979-d69c-4243-9383-1517a8bdc656 + -1 + 500 + + + 211ad3c8-3c39-47a1-88c0-089fb13678a0 + 361 + 858.80088495575251 + 245 + 204.68141592920335 + 0 + C8D8FE90-0375-44A2-A6D1-E997789E065C + -1 + 1700 + Dispenser 2 + + + 07ad9c30-c4cf-461a-904e-f6661d464c26 + 665 + 870.96017699115055 + 216 + 147.93805309734523 + 0 + 3bed8c31-bcd6-479b-8a5d-92ce8a5e4d41 + -1 + 500 + + + de829cd4-0493-48d3-ac3a-4b9db77f2f42 + 969 + 866.90707964601779 + 190 + 145.91150442477886 + 0 + 08ED9044-CAD6-4492-94B2-C07206E0164B + -1 + 1700 + Dispenser 3 + + + a15665e3-af39-42d8-8c06-97d770632e10 + 1289 + 72.951327433628364 + 207 + 184.4159292035398 + 0 + 6D6CFA18-5922-4AFE-84B3-2721CE128681 + -1 + + DryerAirHeater + 190 + 190.13 + false + false + true + + 190 + + + 0ac64716-d30c-489b-939e-a26d06445866 + 450 + 54.65044247787489 + 212 + 177.32300884955754 + 0 + A5DFC2DB-3B36-4377-96A0-D492CE785C00 + -1 + + DryerMainHeater + 30 + 206.95999999999998 + true + false + true + + 30 + + + 181796d8-64f6-420a-8f37-9af9df67d6a9 + 245 + 50.159292035398948 + 199 + 180.36283185840711 + 0 + 86808B48-B7F9-43AD-840E-2A6A5987C305 + -1 + + DryerSecondaryHeater + 0 + 200.32 + true + false + true + + 0 + + + fd2bb3a3-a411-470d-bde7-0beaf84da059 + 667 + 320.19026548672576 + 186 + 195.56194690265494 + 0 + 8E764A14-0F84-4FEC-928B-32A2509CAD57 + -1 + + HeaterZone3 + 150 + 149.94 + true + false + true + + 150 + + + 7e8dd386-cca6-4d07-8a3e-af5403756002 + 894 + 321.20353982300895 + 200 + 187.45575221238937 + 0 + B4EE8CC0-EE2B-4ABE-BF09-9226860E756B + -1 + + HeaterZone2 + 120 + 119.97 + true + false + true + + 120 + + + 32a91e5f-27c8-490d-b187-8e39b6626a13 + 1128 + 326.26991150442478 + 157 + 194.54867256637175 + 0 + 27E7BB74-81C3-4EF2-80AE-962F111C441F + -1 + + HeaterZone1 + 80 + 80.02 + true + false + true + + 80 + + + c844235a-8a29-4c2e-a964-e8f546d2ced7 + 1281 + 587.69469026548677 + 173 + 183.40265486725662 + 0 + 42A62A48-F1D5-4BB6-AFEA-6A7DF6DCF626 + -1 + + MixerHeater + 80 + 80 + true + false + true + + 80 + + + 45b121b5-cf7c-41f7-8089-6d4d6b1ed2c8 + 469 + 324.61946902655012 + 178 + 207.41150442477846 + 0 + 94574D69-46E1-4144-A8B5-D4BF0DA96D18 + -1 + + HeaterZone4 + 150 + 150 + true + false + true + + 150 + + + e6b3eb18-482b-450e-b8a8-d2ac6bba4fd4 + 257 + 328.66814159291738 + 186 + 195.56194690265494 + 0 + D6771DF4-771E-4D62-B6BA-BDE361C0A0F3 + -1 + + HeaterZone5 + 150 + 150 + true + false + true + + 150 + + + efff2e67-e3a3-4667-9208-4704707d7cda + 65 + 331.91150442477812 + 186 + 195.56194690265494 + 0 + D2B6CAA0-055E-4871-8D91-A5370F1ACB22 + -1 + + HeaterZone6 + 160 + 159.97 + true + false + true + + 160 + + + f9936dba-cef8-41e3-a715-eb629dca1870 + 1311 + 346.53539823008856 + 199 + 114.5 + 0 + 1778C1A7-AFB5-42F9-9E00-E80D30D9FC0A + -1 + 10 + 0 + + + 217c677a-3e11-4a7c-959b-616dae1259dd + 1167 + 280.67256637168151 + 44 + 42.557522123893705 + 0 + -14774017 + A + + + f129ea0d-9abb-437f-928e-1cd1f569db2a + 980.0000000000025 + 272.39823008849913 + 44 + 42.557522123893705 + 0 + -14774017 + C + + + 5f2610dc-3b9d-4302-b8f5-77a5e1c73b8c + 739.99999999999727 + 269.79203539822839 + 44 + 42.557522123893705 + 0 + -14774017 + D + + + eadb5257-47a2-4336-a72a-f2d157fe70cb + 552.99999999999909 + 277.11946902654887 + 44 + 42.557522123893705 + 0 + -14774017 + F + + + 6c59af66-169a-46e0-89ae-a81e3e619043 + 334.00000000000153 + 280.39380530973477 + 44 + 42.557522123893705 + 0 + -14774017 + I + + + 3b32b9a8-f300-443f-950e-c49f81678bac + 133.99999999999966 + 283.84070796460247 + 44 + 42.557522123893705 + 0 + -14774017 + L + + + f6d44793-ed44-46ed-8854-eacbc11af10c + 909 + 544.12389380530976 + 219 + 97.2743362831859 + 0 + df38139e-0026-46bc-b72f-df5f9eec80f7 + -1 + + + dd8f8a58-c09f-43dc-af6f-13fe83471be4 + 1005 + 624.17256637168157 + 237 + 170.23008849557505 + 0 + cac03991-b332-4dfa-b491-c0e381b74fb9 + -1 + + + 43793f93-da64-4409-b583-bca498f641e6 + 18 + 25.3274336283186 + 203 + 107.40707964601774 + 0 + -1 + + + + + + Thread + + + 50bae43f-8b1a-4279-9238-b976a0c72af3 + 1530 + 193.19911504424795 + 169 + 181.37610619469029 + 0 + A8DB1D27-6B25-4FB4-A3F5-46A29BA51955 + -1 + 10 + 2 + + + 68eef943-2151-4df5-be61-044c3865606e + 1172 + 145.78318584070678 + 175 + 167.827433628319 + 0 + 96B89605-F999-43FE-A1CD-2645BFB33A36 + -1 + 10 + 2 + + + 6be024c6-3d1b-4267-9b77-44473aba56b7 + 988 + 143.32300884955998 + 190 + 167.09734513274049 + 0 + FC60060A-3736-4910-B41A-FF6DABDF0E9E + -1 + 10 + 2 + + + 7c720f3b-00e1-49dd-92f9-fdd1e9686623 + 817 + 142.42035398230098 + 169 + 168.31858407079625 + 0 + 4CE6A82E-D841-4D33-BBB2-11F0743A441C + -1 + 10 + 2 + + + 3ebd6759-521b-4ed1-a353-ee1ad7801f28 + 922 + 516.43362831858417 + 439 + 304.995575221239 + 0 + D126DB23-784B-4F0C-8F88-D89A65A7549F + -14774017 + 1 + 1460 + true + 0 + 16384 + + + 984b4126-3dda-4624-a79f-0646eb0e1358 + 465 + 515.420353982301 + 439 + 304.995575221239 + 0 + 10102BC3-0EAE-47FF-A8E5-8640780CAA3D + -14774017 + 1 + 1516 + true + 0 + 16384 + + + 8ebc3ab7-a02d-4b12-93b3-2563443831d7 + 15 + 518.46017699115032 + 439 + 304.995575221239 + 0 + C0BCCD5C-346B-4C4A-A080-39D28E9E1A0C + -14774017 + 1 + 1398 + true + 0 + 16384 + + + acafb268-5e97-4277-8dc8-173250a9e3f8 + 12 + 13.849557522123973 + 439 + 304.995575221239 + 0 + 9FBC5460-BA59-486B-8D85-BD7D8A959F98 + -14774017 + 1 + 1273 + true + 0 + 100 + + + 3ccb1485-b0e9-4d36-a931-a1b3865edeaa + 460 + 38.28761061946841 + 267 + 221.90707964601768 + 0 + 08d15ca1-d7d1-460f-8f37-42c37c287cd1 + -1 + 952.3546144121359 + + + be4cb8d9-b516-4604-a6a5-1638cbc50251 + 860 + -24.18584070796669 + 345 + 169.21681415929209 + 0 + 4CE6A82E-D841-4D33-BBB2-11F0743A441C + -14774017 + 1 + 514 + true + 0 + 100000 + + + 75b99507-4eba-4b11-b52e-26732d4c5479 + 19 + 324.14159292035305 + 429 + 193.26548672566258 + 0 + F1DF490B-0577-4FA7-ACA1-0EEF4F934E8F + -14774017 + 4 + 1398 + true + 0 + 100 + + + a30e48de-be76-4230-92d0-d27d6f37b940 + 474 + 320.03097345132551 + 429 + 193.26548672566258 + 0 + 5F12B974-2C9E-4DDD-9B20-733251A5D7E6 + -14774017 + 4 + 1398 + true + 0 + 100 + + + 5ac4b368-093a-4192-98d4-e9d24f229b13 + 928 + 321.64601769912122 + 429 + 193.26548672566258 + 0 + 84CF23C9-D20D-4C08-BE1D-80201FC43C06 + -14774017 + 4 + 1398 + true + 0 + 100 + + + 9c34dc69-cfaa-48b4-9d02-8f0d9bba79dd + 1303 + 34.380530973454768 + 176 + 83.05309734512457 + 0 + -1 + + 89B7B89D-8050-4188-B568-35B1910CFB6F + 96B89605-F999-43FE-A1CD-2645BFB33A36 + 84CF23C9-D20D-4C08-BE1D-80201FC43C06 + FC60060A-3736-4910-B41A-FF6DABDF0E9E + 5F12B974-2C9E-4DDD-9B20-733251A5D7E6 + 9ADF7823-B293-4275-9999-F62474D246AA + 4CE6A82E-D841-4D33-BBB2-11F0743A441C + F1DF490B-0577-4FA7-ACA1-0EEF4F934E8F + + + + + + Dispensers + + + dce78f33-c966-4848-8c6e-a4a01dbc7577 + 1322.1428571428571 + 214.15929203538531 + 159 + 215.8274336283186 + 0 + 2CC8E461-E91F-4D4C-A402-922477F06C87 + -1 + 1200 + Dispenser 1 + + + 2d03fc19-0502-43e1-a3ff-4012a612112b + 1149 + 218.48230088495342 + 159 + 215.8274336283186 + 0 + C8D8FE90-0375-44A2-A6D1-E997789E065C + -16724737 + 1200 + Dispenser 2 + + + 81958374-3fa3-48b3-a554-5653fe1934b1 + 959 + 210.32743362830422 + 156 + 215.8274336283186 + 0 + 08ED9044-CAD6-4492-94B2-C07206E0164B + -65325 + 1200 + Dispenser 3 + + + 8fead411-7198-4428-a364-e32f3035ed94 + 775 + 206.42920353980952 + 159 + 215.8274336283186 + 0 + 179F34BB-3252-4D3A-965C-E6EB43D6FE7C + -524544 + 1200 + Dispenser 4 + + + 31bfa89f-e64d-4a3b-8585-c4a1b2e5a139 + 585 + 208.47345132741418 + 159 + 215.8274336283186 + 0 + 716B35CF-46E0-47D5-AF85-5233D212568F + -2108246 + 1200 + Dispenser 5 + + + c2bff5f3-6dc9-4b07-87ba-9e3a5814804e + 372 + 216.75221238937439 + 159 + 215.8274336283186 + 0 + 99528449-4D76-4874-AB95-522951560E01 + -263685 + 1200 + Dispenser 6 + + + 071281a5-3569-4a62-8b68-7bea850a3c07 + 217 + 211.63716814158107 + 159 + 215.8274336283186 + 0 + E8ED07E2-7C36-459C-B9E5-6A23A1E24F03 + -723724 + 1200 + Dispenser 7 + + + 7b703b9a-a626-4ae5-8e31-fa1cfe5718f4 + 45 + 216.04867256635521 + 159 + 215.8274336283186 + 0 + 8A957565-4165-49F7-854D-D21F95FFBE1B + -724238 + 1200 + Dispenser 8 + + + caca40a2-310c-452e-adcf-c28ee38f6bdc + 1305 + 31.606194690259713 + 150 + 156.04424778761069 + 0 + 1F0F907A-EC16-4386-AFC8-B2B156F2A822 + -15856114 + 10 + 2 + + + af52d36f-27a2-4a31-8ceb-9c43fedbed22 + 1127 + 32.535398230081626 + 150 + 156.04424778761069 + 0 + A499E5E0-A812-4032-8F96-B38C6762C4BD + -15293470 + 10 + 2 + + + d40eada8-d22a-4521-bd2a-d998ed93106f + 955 + 32.61946902653176 + 150 + 156.04424778761069 + 0 + 6B1DF4B0-BCC2-400C-A3B7-31C5119A55BB + -1570857 + 10 + 2 + + + b2d6364d-8b5c-43d2-8838-927c85b017b1 + 774 + 31.960176991142362 + 150 + 156.04424778761069 + 0 + F33667BD-D9FA-4DC7-BC2C-0E89E60AE4BE + -1379575 + 10 + 2 + + + 3980e685-73b3-4af1-9593-9235be147322 + 596 + 32.889380530964274 + 150 + 156.04424778761069 + 0 + 19645882-6587-4A50-BD85-AF06617DC654 + -7763381 + 10 + 2 + + + 51465293-58d5-40a4-8302-81856f8b4f47 + 424 + 32.973451327414409 + 150 + 156.04424778761069 + 0 + AF3FD56C-95BF-4DE1-8EDC-8426B0DB2A26 + -1 + 10 + 2 + + + c2a8c5b2-891b-4f9f-862c-c1c294366c78 + 252 + 31.703539823006281 + 150 + 156.04424778761069 + 0 + 60DA9EA3-C8A6-4D41-8AD8-3EB1BAA79CC9 + -8391822 + 10 + 2 + + + 9618e441-8973-4e16-a90b-06ce5798bd29 + 80 + 31.787610619456416 + 150 + 156.04424778761069 + 0 + EF66F95A-E166-4FA2-B1AF-D6F55621817A + -2186185 + 10 + 2 + + + bce8c8e8-a317-4991-9aa7-cd99a45d1509 + 28.22352941176473 + 682.03174474303751 + 247 + 122.24778761061873 + 0 + 66cc8510-db9c-4e13-9151-01e705ec04de + -1 + + + 72a23702-31bb-4ab8-aee5-2a02bcb1270b + 235.16470588235291 + 699.99460095802579 + 200 + 94.15929203539747 + 0 + 36ba0ba4-e41d-45ff-8f68-1699e00c7107 + -1 + + + 2dd6ff17-e515-4d8f-814f-a9683f404a8e + 140 + 867.73893805310092 + 160 + 85.49115044247776 + 0 + 78482AA4-3DF6-421F-944C-64328D3C3EF2 + -14774017 + 0 + 70 + 10 + true + + + 06843009-1da0-4811-8e77-50576d0edcb1 + 507 + 792.77433628318749 + 219 + 125.75221238938025 + 0 + 0c5dc1e9-da17-4ff8-86aa-6b39fd796ba9 + -16777216 + + + 935dddd0-0c6f-4766-8173-f9118006a12b + 1303 + 475.87168141593065 + 160 + 124.6504424778754 + 0 + B2164815-FBF3-4CF8-81D8-20F719626664 + -15856114 + 10 + 2 + + + 97e39a59-dba8-4e42-a124-b37de9453baf + 370 + 781.46902654866153 + 710 + 401.24778761063465 + 0 + D023F15D-3555-48E9-A9E9-5DF99F60D791 + 0 + 2 + 1956 + 0 + 100 + true + + + 46bdfce3-1c69-45dd-bbe9-582d1ac1e6f2 + 1128 + 482.80530973451141 + 140 + 117.32300884955743 + 0 + 0FE216B2-A097-4F2C-B465-08593F2532B3 + -15293470 + 10 + 2 + + + 429154a5-9a16-4423-85ca-ee4bae9aec3c + 968 + 481.35398230088504 + 140 + 117.32300884955743 + 0 + 3271FD82-46D3-4789-B612-564967826C75 + -1570857 + 10 + 2 + + + 0f6ab8e8-99a7-4468-bde8-690a63467688 + 766 + 476.07964601769811 + 140 + 117.32300884955743 + 0 + FBB806E7-42FA-4BAA-BDA1-3B8B07913AAD + -1379575 + 10 + 2 + + + bc0ac903-9c1f-4580-8b9e-670a76350473 + 586 + 474.38938053097161 + 140 + 117.32300884955743 + 0 + 436A22BB-AF79-4CB2-8A7D-DD4D9E54A81E + -7763381 + 10 + 2 + + + f9c960b2-b93e-46d5-b892-30337c0b55af + 391 + 474.87168141592781 + 140 + 117.32300884955743 + 0 + 89EA6CC8-5363-4BEC-A370-D906611087A7 + -1 + 10 + 2 + + + 5ac157ab-2d53-4307-bf0b-b069854701ac + 226 + 471.66814159292005 + 140 + 117.32300884955743 + 0 + D5EBE52B-E2DF-4C97-80B1-F111F6B15854 + -8391822 + 10 + 2 + + + 65a19d7e-c524-48a0-bd70-28b99b113dd1 + 69 + 473.97787610619389 + 140 + 117.32300884955743 + 0 + FE521D1B-A0EA-4FEA-AE64-33998A6CE138 + -1 + 10 + 2 + + + 5bf7a681-ee47-477e-8b47-ba7a2eb6e115 + 1130 + 624.9557522123913 + 144 + 80.495575221237516 + 0 + 3174ADCF-5793-4B5A-A3C6-B96E146A903D + -1 + 10 + 0 + + + 29b17a4b-fd4e-49cc-a3cd-418730176bf7 + 969 + 625.95575221239 + 144 + 80.495575221237516 + 0 + AD50C358-5BAF-4A2F-8593-51A22C85B3D1 + -1 + 10 + 0 + + + 21a5429f-c3a2-4e3b-ae77-c5538f30130d + 775 + 623.66814159292062 + 144 + 82.535398230087083 + 0 + E2F0FC31-CE7E-416B-ACEA-8EB6CA9B850B + -1 + 10 + 0 + + + 96a46b0c-37b1-4457-93fb-b3dc301c5743 + 588 + 625.06637168141322 + 144 + 80.495575221237516 + 0 + 37872FE8-D68A-45BC-A441-372B7805C09F + -1 + 10 + 0 + + + d4ad8603-9929-415f-9990-1869fcff36e4 + 1310 + 628.69469026548632 + 144 + 80.495575221237516 + 0 + 84682E90-6926-42AA-BF8C-2CCCF5C26C97 + -1 + 10 + 0 + + + 25249d78-ee37-42a8-b5aa-96f60e97c3ea + 20.870588235294122 + 784.26605504587133 + 327 + 108.53097345133028 + 0 + 8B1FCBC3-FEEA-4F87-B56F-CE5D28B7ACA4 + -1 + + + fc1d62f7-d13b-4a7b-8f9f-c687c987c7a9 + 1065 + 788.41592920352355 + 370 + 362.10619469026585 + 0 + 1F0F907A-EC16-4386-AFC8-B2B156F2A822 + -14774017 + 3 + 1426 + true + 0 + 100 + + + cc99a514-1498-4b93-a4eb-4e0a2a2e9de6 + 628 + 765.4469026548752 + 394 + 372.88495575221242 + 0 + A499E5E0-A812-4032-8F96-B38C6762C4BD + -14774017 + 1 + 1282 + true + 0 + 100 + + + cdddd48e-422d-48f4-8397-5032c3705fdb + 1069 + 698.04867256637226 + 382 + 136.79203539823016 + 0 + 16C0F85C-0479-42F4-A67E-3E0CD3B23C2D + -1 + + + ee6d4c5a-ca5b-4557-8012-dacf700cdc08 + 231 + 624.06637168142413 + 144 + 80.495575221237516 + 0 + 37872FE8-D68A-45BC-A441-372B7805C010 + -8391822 + 10 + 0 + + + 20576bb2-202f-4170-9af5-f3c18b410112 + 77 + 624.46460176991513 + 144 + 80.495575221237516 + 0 + 37872FE8-D68A-45BC-A441-372B7805C011 + -2186185 + 10 + 0 + + + + + Thread insertion + + + 443a977c-8e89-4a56-82e4-684bac7945c9 + 25 + 22.761061946902203 + 247 + 172.25663716814159 + 0 + 08d15ca1-d7d1-460f-8f37-42c37c287cd1 + -1 + 500 + + + a821b716-cb7d-4951-84ee-e56955431099 + 355 + 20.592920353981697 + 260 + 153.00442477876106 + 0 + b90a4e78-ebbf-44db-829b-949517d6400b + -1 + 50 + + + e36e321b-d48d-4199-a1ee-75ac18e9de1e + 694 + 19.367256637167998 + 217 + 155.26106194690203 + 0 + b7c1aea4-32c1-41cb-bca3-4aa665529b49 + -1 + 50 + + + 8790db03-4dfd-4d49-aec0-706babb55af9 + 364 + 222.16814159291846 + 240 + 172.30973451327589 + 0 + 2d3eaca5-4dfd-40d9-9d1f-aa4ae794eddc + -1 + 500 + + + 69ebcb28-13d9-41b3-a9ef-b2be51584141 + 29 + 241.34955752210982 + 263 + 174.296460176989 + 0 + c6099065-a735-4cc5-b575-c31a45bb9262 + -1 + 400 + + + 4d562029-3fdf-40a4-a5a7-9a322253c912 + 1168 + 47.305309734517039 + 304 + 167.26548672566202 + 0 + -1 + 40 + + + 92607e12-2dd6-41c9-8f89-f051f386b734 + 1258 + 277.55752212389069 + 240 + 156.04424778761069 + 0 + DCE08A06-6711-43AE-AB7C-EADD5AB70EE0 + -1 + + + 7b5b6896-f626-4e59-a5cf-2600e603c0f6 + 695 + 223.44247787610908 + 228 + 175.0353982300901 + 0 + 7b6d0a93-5a91-4e1f-af47-353afd8b5ea6 + -1 + 83.833754740833143 + + + 2052a2d3-843c-4a1c-87fd-acd0832fd1b9 + 81 + 542.88495575220634 + 220 + 168.473451327436 + 0 + 7c03f12f-ab2a-4421-8575-aefd6dec0001 + -1 + 1000 + + + 339b7d00-d688-41cf-926a-8171d5e62740 + 376 + 553.11061946903 + 240 + 159.84070796460173 + 0 + f3b5076e-cba3-4ad2-b3cc-0c4e907bd9ef + -1 + 98.094184576485333 + + + 7644a8f9-00a2-4e37-8f48-0667b1541114 + 1014 + 290.60619469026437 + 240 + 172.30973451327589 + 0 + 92237d83-9f85-48db-aa6f-2fc5c9e0d8cd + -1 + 500 + + + c706d31b-48b0-44cc-a9c4-11d3acdcf667 + 548 + 418.71652683599893 + 269 + 127.67256637168134 + 0 + 2a454081-bd5e-41de-ae5d-97aefe1d76de + -1 + + + 7ccff69d-50f9-4e9b-a997-72a67917df5e + 803 + 569.80530973451619 + 227 + 145.08849557522183 + 0 + 9c02effb-7deb-40a1-90c3-df1fb48e6431 + -1 + 30 + + + a88a74cb-418b-4ed0-89ec-c42ff560528e + 1107 + 573.87168141592883 + 227 + 145.08849557522183 + 0 + a359e9d0-adcc-40a5-b3d9-b9cb26eca092 + -1 + 30 + + + + + Head graphs + + + ffe980da-dbbe-4bac-9595-46f587e9df00 + 1 + 57.486725663716754 + 430 + 187.15486725663709 + 0 + D7585119-4A42-4370-8F1E-F3E62553E588 + -14774017 + 2 + 2962 + true + 0 + 300 + + + c4e19f7c-e6e9-4f45-987e-f124456b2529 + 784 + 57.265486725668495 + 412 + 195.38938053097343 + 0 + A8DB1D27-6B25-4FB4-A3F5-46A29BA51955 + -14774017 + 3 + 2817 + true + 0 + 300 + + + b8b24455-1c20-417d-bd78-5fe4c7e3d023 + 0 + 240.77433628319324 + 430 + 224.47345132743214 + 0 + 6C0C1AB0-3EE9-40D7-8424-A79436FBC804 + -14774017 + 2 + 2982 + true + 0 + 300 + + + 2129a0cd-454f-4834-8197-3b048bf4b978 + 779 + 253.09292035398954 + 414 + 208.6194690265487 + 0 + 098F7CAB-030C-46B0-B2B8-A85AF2253032 + -14774017 + 2 + 2949 + true + 0 + 100 + + + 892fabb7-01fa-4b39-a19e-a557fafae0ac + 3 + 465.50884955753315 + 423 + 226.97345132743362 + 0 + DACEBF90-E2B4-4CC9-A973-B8B429AA0089 + -14774017 + 2 + 2628 + true + 0 + 300 + + + 4859974c-7224-42d5-97ca-0e2e549372f5 + 788 + 469.56194690266409 + 409 + 220.55752212389314 + 0 + 246C2551-5EFD-48E9-94F6-6313C5E5018F + -14774017 + 2 + 3153 + true + 0 + 300 + + + 81b78212-14d8-4a66-bf3a-eeea9900e0d6 + 423 + 69.712389380530908 + 179 + 131.99999999999773 + 0 + df38139e-0026-46bc-b72f-df5f9eec80f7 + -1 + + + 34c56855-114d-4c94-b8b7-16881430d626 + 1198 + 60.787610619475856 + 144 + 147.96017699114969 + 0 + d59b64f7-a8cf-4a2b-935a-943ae35fb78c + -1 + + + 0d35c220-41f5-49e8-99ba-72d5134e4c81 + 1200 + 269.79646017698923 + 148 + 154.90265486725662 + 0 + 9de55ec4-201f-4f62-9003-f63ebea06f8f + -1 + + + e72a263a-41c2-408c-ac98-7345c787a3b0 + 1204 + 471.31858407080483 + 148 + 160.278761061948 + 0 + d28bfa3c-edce-4f19-a296-3da251fcc0e2 + -1 + + + 62fd293e-9461-4c91-a5b3-26ef7893f780 + 420 + 250.1769911504424 + 189 + 145.75221238937741 + 0 + 81a3ae80-f4ea-4857-bc4e-2055d3b5fbc7 + -1 + + + 10c62974-d2f9-4849-b88f-f223e04bacc6 + 435 + 474.43362831858008 + 178 + 153.6504424778766 + 0 + 16D0DEF7-A2E0-4163-9F4B-FBEC2573BCC7 + -1 + + + 37657a24-40d2-4c10-be0b-0587406d77bf + 10 + 691.58849557522046 + 415 + 203.57522123893648 + 0 + AFB7B6F7-8FFB-4A7F-B814-04F0C163CAA1 + -14774017 + 2 + 3153 + true + 0 + 300 + + + 9330a6be-17f1-4ecb-978d-719adf9fec1f + 781 + 692.69911504425033 + 409 + 220.55752212389314 + 0 + 9A3877B2-9F98-4A5C-9A93-DECA2836FA8A + -14774017 + 2 + 3153 + true + 0 + 300 + + + 3228b2ba-83f3-4eb2-a6d2-7200301758a4 + 1191 + 723.03539823007986 + 186 + 110.3451327433603 + 0 + 105ac1be-e6db-4a57-9f4a-bb9c780afd33 + -1 + + + 6fd0eeb3-6a2a-435f-a877-0c17c26c6692 + 411 + 727.73008849557368 + 204 + 114.92035398229848 + 0 + 9d403aad-157a-4128-874c-704da4ed9ac1 + -1 + + + f9b4095c-4e87-41f2-955c-3b572ebee370 + 611 + 269.90265486725662 + 142 + 151.99115044247787 + 0 + 94574D69-46E1-4144-A8B5-D4BF0DA96D18 + -1 + + HeaterZone4 + 150 + 150 + true + false + true + + 150 + + + 4fa7a50d-5155-4785-95a0-508cd40fad4d + 1360 + 77.818584070796476 + 140 + 168.77876106194691 + 0 + 27E7BB74-81C3-4EF2-80AE-962F111C441F + -1 + + HeaterZone1 + 80 + 80.02 + true + false + true + + 80 + + + 9da56601-7b5b-4f0f-afbf-2b31970b104f + 1352 + 292.19469026548552 + 166 + 148.95132743362956 + 0 + 8E764A14-0F84-4FEC-928B-32A2509CAD57 + -1 + + HeaterZone3 + 150 + 149.94 + true + false + true + + 150 + + + b700e59d-f923-4f13-9dcc-942050548c22 + 1359 + 501.84513274336314 + 160 + 139.92920353982277 + 0 + D6771DF4-771E-4D62-B6BA-BDE361C0A0F3 + -1 + + HeaterZone5 + 150 + 150 + true + false + true + + 150 + + + 97bf8fa2-b07f-4f0e-87ac-820ea52d236e + 1358 + 716.707964601771 + 160 + 128.73451327433531 + 0 + 42A62A48-F1D5-4BB6-AFEA-6A7DF6DCF626 + -1 + + MixerHeater + 80 + 80 + true + false + true + + 80 + + + 3941a557-05e6-4c1b-bb98-4f2a59892431 + 606 + 66.234513274336223 + 155 + 157.05752212389382 + 0 + B4EE8CC0-EE2B-4ABE-BF09-9226860E756B + -1 + + HeaterZone2 + 120 + 119.97 + true + false + true + + 120 + + + 3020fbc5-305e-4adf-9f1e-d7a48168e2e7 + 628 + 488.76991150442484 + 133 + 155.03097345132744 + 0 + D2B6CAA0-055E-4871-8D91-A5370F1ACB22 + -1 + + HeaterZone6 + 160 + 159.97 + true + false + true + + 160 + + + a4049a51-7417-4eab-8bc1-837574307e93 + 599 + 716.27876106194685 + 161 + 143.34955752212409 + 0 + 6D6CFA18-5922-4AFE-84B3-2721CE128681 + -1 + + DryerAirHeater + 190 + 190.13 + false + false + true + + 190 + + + + + waste + + + bb9bf273-0a3d-4202-98ce-37a5f206ed75 + 119 + 68.898230088495609 + 339 + 184.4159292035398 + 0 + 7e1f53ec-8176-4efa-ac3d-c8f2436e60d1 + -1 + + + 59678a51-f995-4952-b250-e449f1fcbeac + 468 + 80.336283185839477 + 280 + 166.17699115044252 + 0 + 78db28d0-0407-4942-bb62-c44da81c4f9e + -1 + + + 8f9ff579-0e9d-4f48-8ed0-6fa563f2aba7 + 873 + 63.831858407079665 + 174 + 133.75221238938059 + 0 + 06bd7c0b-5aef-445a-86c0-853becf8594b + -1 + + + 70d1bd1e-acdb-436a-b205-6eeb9d137120 + 1070 + 70.106194690265909 + 221 + 123.61946902654864 + 0 + 4048bf02-27dc-4049-9284-fe913a7e0ebe + -1 + + + dcc7ce16-5b89-4ff8-acd5-7fb0b9ebb6d1 + 877 + 248.24778761061947 + 186 + 126.65929203539827 + 0 + 00ea1771-efee-4f3e-a0d2-8b2a4214e9fd + -1 + + + 2b99bbf7-94da-4bb2-acc9-91b35e543c5d + 897 + 358.69469026548683 + 147 + 69.9159292035398 + 0 + -14774017 + Waste lower presence + + + c150533c-abe4-4edf-b6ad-fa475b133142 + 1112 + 253.66814159291806 + 186 + 126.65929203539827 + 0 + d2f266e3-779b-4dfe-b513-26ce61c529a4 + -1 + + + d96f2a6d-0ccb-401e-8931-09086ca81fae + 1143 + 366.78318584070507 + 147 + 69.9159292035398 + 0 + -14774017 + Waste middle presence + + + bb9847ba-9671-4613-bf23-a0c637ebc79d + 151 + 271.55309734513281 + 200 + 63.836283185840671 + 0 + -14774017 + pump + + + d13a2df4-3f54-4c31-8f9a-ee7810fb6af5 + 504 + 283.71238938053096 + 192 + 67.88938053097354 + 0 + -14774017 + valve + + + fbe2670f-6d9b-4361-9332-1ceb1692c91a + 108 + 484.61946902655154 + 356 + 208.10619469026472 + 0 + 78db28d0-0407-4942-bb62-c44da81c4f9e + -1 + + + + + disp + + + f9531a72-3742-47a7-86bb-b589f8b3eb55 + 123 + 128.33628318584061 + 390 + 249.67699115047321 + 0 + A499E5E0-A812-4032-8F96-B38C6762C4BD + -14774017 + 3 + 3600 + true + 0 + 100 + + + aae29286-81b3-476a-9f58-c0fd246cae96 + 880 + 158.81415929204155 + 442 + 241.88495575221771 + 0 + F33667BD-D9FA-4DC7-BC2C-0E89E60AE4BE + -14774017 + 3 + 3600 + true + 0 + 100 + + + 7d94c7c4-1288-4f9d-b0e6-a06794829642 + 1055 + 14.181415929203524 + 161 + 111.46017699115049 + 0 + -14774017 + Y + + + c95f9ad1-b607-4606-8217-400bea76f3d6 + 384 + 23.991150442480944 + 161 + 111.46017699115049 + 0 + -14774017 + C + + + 8f141fa5-fb24-4557-adcf-a6aa55a28fb4 + 121 + -8.8495575221214722 + 169 + 132.73893805309734 + 0 + A499E5E0-A812-4032-8F96-B38C6762C4BD + -1 + 10 + 3 + + + 7eab018a-ef43-4bca-a6cf-857d69767bba + 839 + -4.7079646017762684 + 169 + 132.73893805309734 + 0 + F33667BD-D9FA-4DC7-BC2C-0E89E60AE4BE + -1 + 10 + 3 + + + 2a9e89d4-5d60-4a83-9527-cb77fdf35c14 + 1276 + 22.287610619469035 + 187 + 102.34070796460179 + 0 + -1 + + 1F0F907A-EC16-4386-AFC8-B2B156F2A822 + A499E5E0-A812-4032-8F96-B38C6762C4BD + 6B1DF4B0-BCC2-400C-A3B7-31C5119A55BB + F33667BD-D9FA-4DC7-BC2C-0E89E60AE4BE + 19645882-6587-4A50-BD85-AF06617DC654 + 96B89605-F999-43FE-A1CD-2645BFB33A36 + 84CF23C9-D20D-4C08-BE1D-80201FC43C06 + C0BCCD5C-346B-4C4A-A080-39D28E9E1A0C + 10102BC3-0EAE-47FF-A8E5-8640780CAA3D + FC60060A-3736-4910-B41A-FF6DABDF0E9E + 5F12B974-2C9E-4DDD-9B20-733251A5D7E6 + D126DB23-784B-4F0C-8F88-D89A65A7549F + + + + 6d2e7962-b3ae-4682-b20e-9654f48dcffe + 587 + 5.0619469026548813 + 155 + 131.72566371681415 + 0 + 2CC8E461-E91F-4D4C-A402-922477F06C87 + -1 + 500 + Dispenser 1 + + + 5ee2718f-f068-427b-a31e-d586c7d7682c + 131 + 552.94690265486338 + 390 + 249.67699115047321 + 0 + 1F0F907A-EC16-4386-AFC8-B2B156F2A822 + -14774017 + 3 + 3600 + true + 0 + 100 + + + 1c254a92-c075-453f-9667-cdcc91cf8e6a + 399 + 455.67256637168265 + 161 + 111.46017699115049 + 0 + -14774017 + K + + + d1087b1a-c36b-4242-96f5-07c2bb602cc4 + 145 + 409.52212389380446 + 169 + 132.73893805309734 + 0 + 1F0F907A-EC16-4386-AFC8-B2B156F2A822 + -1 + 10 + 3 + + + 53fe93a2-88a5-4d4d-9cd5-eb4d8a8fefae + 604 + 561.16371681414739 + 390 + 249.67699115047321 + 0 + 6B1DF4B0-BCC2-400C-A3B7-31C5119A55BB + -14774017 + 3 + 3600 + true + 0 + 100 + + + 0bef6e9d-6da0-4f06-9e1a-c00142bde4c1 + 832 + 440.91150442477635 + 161 + 111.46017699115049 + 0 + -14774017 + M + + + 762c5a97-a3bc-45b4-aa9f-0b50afa9cb9b + 633 + 434.0132743362783 + 169 + 132.73893805309734 + 0 + 6B1DF4B0-BCC2-400C-A3B7-31C5119A55BB + -1 + 10 + 3 + + + be584f80-3250-494c-87fc-250d6deae051 + 1045 + 559.4070796459921 + 390 + 249.67699115047321 + 0 + 19645882-6587-4A50-BD85-AF06617DC654 + -14774017 + 3 + 3600 + true + 0 + 100 + + + 39f6a02c-c4d9-47d0-b92d-bdea0ed5d3ce + 1056 + 435.43805309733875 + 169 + 132.73893805309734 + 0 + 19645882-6587-4A50-BD85-AF06617DC654 + -1 + 10 + 3 + + + 5b924929-9b16-4598-94cc-b2f4bca26798 + 1304 + 448.0884955752224 + 161 + 111.46017699115049 + 0 + -14774017 + TI + + + 89ae1fa5-1ad1-469e-ae76-0a29c35805cd + 588 + 317.1504424778762 + 283 + 74.982300884955748 + 0 + E144A221-4859-4DC3-9A7E-4A2969FB0826 + -1 + + + c218cf34-74c2-41bb-8c3b-3030abce451a + 1363 + 384.02654867256643 + 156 + 94.234513274336337 + 0 + E144A221-4859-4DC3-9A7E-4A2969FB0826 + -1 + + + 75af30c6-d7f8-4745-bfb5-d6dc5d50479a + 767 + 362.74778761061958 + 283 + 74.982300884955748 + 0 + E144A221-4859-4DC3-9A7E-4A2969FB0826 + -1 + + + df1fd958-fd8a-4b00-98e1-679455494d60 + 309 + 13.168141592920392 + 112 + 107.40707964601768 + 0 + 3174ADCF-5793-4B5A-A3C6-B96E146A903D + -1 + 10 + 0 + + + f07225b3-1522-4cb6-9ba8-5b9697f05467 + 1180 + 60.7920353982301 + 102 + 88.1548672566372 + 0 + E2F0FC31-CE7E-416B-ACEA-8EB6CA9B850B + -1 + 10 + 0 + + + 45b87322-e1f5-42eb-88c6-71c2eeb2899a + 1258 + 463.06194690265494 + 88 + 75.995575221239 + 0 + 37872FE8-D68A-45BC-A441-372B7805C09F + -1 + 10 + 0 + + + 0c1c25e8-3ce3-4994-bbb9-bd6b2367a413 + 810 + 462.04867256637175 + 77 + 80.048672566371636 + 0 + AD50C358-5BAF-4A2F-8593-51A22C85B3D1 + -1 + 10 + 0 + + + fa2f697e-b229-418a-bae6-78b92bf0458b + 336 + 428.61061946902663 + 95 + 96.261061946902657 + 0 + 84682E90-6926-42AA-BF8C-2CCCF5C26C97 + -1 + 10 + 0 + + + + + Priming + + + ea45a516-9dac-4c9a-9261-0c44e22aa065 + 808 + 155.02654867256638 + 219 + 200.62831858407088 + 0 + A499E5E0-A812-4032-8F96-B38C6762C4BD + -1 + 10 + 2 + + + 3e2cb7dc-a5f3-4ba6-a520-2bae8ff0e4a8 + 832 + 451.91592920353986 + 332 + 326.27433628318596 + 0 + C8D8FE90-0375-44A2-A6D1-E997789E065C + -1 + 1200 + Dispenser 2 + + + 6f8dfd8d-ed50-4923-b908-e0b5bc5d6ae5 + 154 + 131.72123893805315 + 474 + 410.37610619469024 + 0 + A499E5E0-A812-4032-8F96-B38C6762C4BD + -14774017 + 1 + 1942 + true + 0 + 100 + + + 604e031b-89c3-4c9d-90ef-7b861a77e5e0 + 243 + 595.80088495575228 + 497 + 189.48230088495575 + 0 + 8B1FCBC3-FEEA-4F87-B56F-CE5D28B7ACA4 + -1 + + + c414ae0e-323a-48c1-9165-2c05cc4234c6 + 1291 + 584.65486725663732 + 200 + 171.24336283185835 + 0 + 0bd10306-2944-4cda-bc59-0264da2883d2 + -1 + + + + + 2 + \ No newline at end of file diff --git a/Software/Stubs Collection/stubs/technician view files/new head.tpf b/Software/Stubs Collection/stubs/technician view files/new head.tpf new file mode 100644 index 000000000..1dfde4520 --- /dev/null +++ b/Software/Stubs Collection/stubs/technician view files/new head.tpf @@ -0,0 +1,2689 @@ + + + + + + Temperatures + + + ba743caa-95f2-4b20-8c32-8e5943ada3fc + 28 + 678.95132743362808 + 238 + 119.56637168141629 + 0 + 78482AA4-3DF6-421F-944C-64328D3C3EF2 + -14774017 + 0 + 70 + 10 + true + + + e4892498-fa1a-413c-9dd8-633efaade51c + 415 + 692.74336283185824 + 160 + 102.34070796460173 + 0 + 6b9cba1d-4acf-4992-97ad-e422bca6ada2 + -1 + + + a15665e3-af39-42d8-8c06-97d770632e10 + 928 + 593.77433628318579 + 207 + 184.4159292035398 + 0 + 6D6CFA18-5922-4AFE-84B3-2721CE128681 + -1 + + DryerAirHeater + 0 + -137.64 + false + false + true + + 0 + + + 0ac64716-d30c-489b-939e-a26d06445866 + 828 + 682.88053097345 + 130 + 100.31415929203541 + 0 + A5DFC2DB-3B36-4377-96A0-D492CE785C00 + -1 + + DryerMainHeater + 0 + 8.5 + false + false + true + + 0 + + + 181796d8-64f6-420a-8f37-9af9df67d6a9 + 717 + 684.46902654867324 + 127 + 101.3274336283186 + 0 + 86808B48-B7F9-43AD-840E-2A6A5987C305 + -1 + + DryerSecondaryHeater + 0 + 233.14999999999998 + false + false + true + + 0 + + + fd2bb3a3-a411-470d-bde7-0beaf84da059 + 931 + 83.08407079646031 + 186 + 195.56194690265494 + 0 + 8E764A14-0F84-4FEC-928B-32A2509CAD57 + -1 + + HeaterZone3 + 0 + 283.75 + false + false + true + + 0 + + + 7e8dd386-cca6-4d07-8a3e-af5403756002 + 1106 + 88.1504424778762 + 200 + 187.45575221238937 + 0 + B4EE8CC0-EE2B-4ABE-BF09-9226860E756B + -1 + + HeaterZone2 + 100 + 99.94 + false + false + true + + 100 + + + 32a91e5f-27c8-490d-b187-8e39b6626a13 + 1311 + 89.163716814159329 + 157 + 194.54867256637175 + 0 + 27E7BB74-81C3-4EF2-80AE-962F111C441F + -1 + + HeaterZone1 + 100 + 99.97 + false + false + true + + 100 + + + c844235a-8a29-4c2e-a964-e8f546d2ced7 + 1140 + 588.70796460177 + 173 + 183.40265486725662 + 0 + 42A62A48-F1D5-4BB6-AFEA-6A7DF6DCF626 + -1 + + MixerHeater + 0 + 283.75 + false + false + true + + 0 + + + 45b121b5-cf7c-41f7-8089-6d4d6b1ed2c8 + 751 + 80.420353982302458 + 169 + 197.27876106194645 + 0 + 94574D69-46E1-4144-A8B5-D4BF0DA96D18 + -1 + + HeaterZone4 + 100 + 99.97 + false + false + true + + 100 + + + e6b3eb18-482b-450e-b8a8-d2ac6bba4fd4 + 547 + 85.482300884952679 + 186 + 195.56194690265494 + 0 + D6771DF4-771E-4D62-B6BA-BDE361C0A0F3 + -1 + + HeaterZone5 + 100 + 99.97 + false + false + true + + 100 + + + efff2e67-e3a3-4667-9208-4704707d7cda + 353 + 86.69911504424698 + 186 + 195.56194690265494 + 0 + D2B6CAA0-055E-4871-8D91-A5370F1ACB22 + -1 + + HeaterZone6 + 99 + 98.97 + false + false + true + + 99 + + + f9936dba-cef8-41e3-a715-eb629dca1870 + 265 + 683.95575221238948 + 131 + 109.43362831858394 + 0 + 1778C1A7-AFB5-42F9-9E00-E80D30D9FC0A + -1 + 10 + 0 + + + 5f2610dc-3b9d-4302-b8f5-77a5e1c73b8c + 1027.9999999999973 + 291.07079646017547 + 44 + 42.557522123893705 + 0 + -14774017 + D + + + eadb5257-47a2-4336-a72a-f2d157fe70cb + 907.99999999999909 + 295.35840707964616 + 44 + 42.557522123893705 + 0 + -14774017 + F + + + 6c59af66-169a-46e0-89ae-a81e3e619043 + 785.00000000000159 + 288.5000000000004 + 44 + 42.557522123893705 + 0 + -14774017 + I + + + 3b32b9a8-f300-443f-950e-c49f81678bac + 624.99999999999966 + 285.86725663716874 + 44 + 42.557522123893705 + 0 + -14774017 + L + + + f6d44793-ed44-46ed-8854-eacbc11af10c + 569 + 688.00884955752213 + 155 + 96.261061946902714 + 0 + df38139e-0026-46bc-b72f-df5f9eec80f7 + -1 + + + 43793f93-da64-4409-b583-bca498f641e6 + 1308 + 656.59734513274338 + 203 + 107.40707964601774 + 0 + -1 + + + + be9db1fd-d408-4f1c-a15a-d6ffe58fafb6 + 1292 + 343.56637168141606 + 186 + 195.56194690265494 + 0 + 188285E5-1493-4BED-8269-91743770A631 + -1 + + HeaterZone7 + 100 + 100.02 + false + false + true + + 100 + + + f129ea0d-9abb-437f-928e-1cd1f569db2a + 1190.0000000000025 + 294.69026548672929 + 39 + 38.504424778760836 + 0 + -14774017 + C + + + 217c677a-3e11-4a7c-959b-616dae1259dd + 1369 + 295.87168141592934 + 44 + 42.557522123893705 + 0 + -14774017 + A + + + 381f67cf-b7c6-4f6d-b089-37130798a5d8 + 1107 + 342.55309734513293 + 186 + 195.56194690265494 + 0 + 461FA2D7-1918-4958-AAA7-37A1A329FA12 + -1 + + HeaterZone8 + 100 + 99.97 + false + false + true + + 100 + + + 3c923a93-4d15-4bbc-b1b3-be1876a77cfc + 924 + 343.56637168141606 + 186 + 195.56194690265494 + 0 + 63E2AFE0-0746-4AAB-AA74-C26EC1F282AE + -1 + + HeaterZone9 + 95 + 95.05 + false + false + true + + 95 + + + 26e078e6-df8c-4fbf-b10e-4b3f7c7e9500 + 359 + 342.55309734513304 + 186 + 195.56194690265494 + 0 + 2D578A37-D808-40D0-ACE4-4A868EDD6BDC + -1 + + HeaterZone12 + 99 + 99 + false + false + true + + 99 + + + 7a8c3948-bb3d-4eb1-9276-315d34038f91 + 550 + 343.56637168141611 + 186 + 195.56194690265494 + 0 + D41BBB23-6EB5-4743-89DB-9191000B475F + -1 + + HeaterZone11 + 100 + 100.02 + false + false + true + + 100 + + + f7d4c8ac-28cb-4779-83ef-3ede5e5a612c + 738 + 344.57964601769908 + 186 + 195.56194690265494 + 0 + B4D0A1C8-711C-49A9-82A3-B5B9F35FC131 + -1 + + HeaterZone10 + 100 + 100.02 + false + false + true + + 100 + + + 63aa661e-4bad-43fc-aed3-c8f570254246 + 6 + 111.52654867256638 + 308 + 419.49557522123905 + 0 + -14774017 + + 0 + 0f2eecbd-2a88-4510-b37c-7b4fc90de7f9 + 2020-01-14T07:43:22.6203867Z + Process parameters 1 + 0 + 0 + 0 + 0 + 0 + 0 + 12 + 100 + 100 + 95 + 100 + 100 + 99 + 0 + 100 + 0 + 0 + 0 + 0 + 0 + + + + Name + 0 + + + Dyeing Speed + 1 + + + Min Ink Uptake + 2 + + + Max Ink Uptake + 3 + + + Feeder Tension + 4 + + + Puller Tension + 5 + + + Winder Tension + 6 + + + Mixer Temp + 7 + + + Head Zone 1 Temp + 8 + + + Head Zone 2 Temp + 9 + + + Head Zone 3 Temp + 10 + + + Head Zone 4 Temp + 11 + + + Head Zone 5 Temp + 12 + + + Head Zone 6 Temp + 13 + + + Dryer Air Flow + 14 + + + Dryer Zone 1 Temp + 15 + + + Dryer Zone 2 Temp + 16 + + + Dryer Zone 3 Temp + 17 + + + Dryer Buffer Length + 18 + + + Head Air Flow + 19 + + + Process Parameters Tables Group Guid + 20 + + + Table Index + 21 + + + + + 120a9bea-5b5a-4ba4-92f5-40135f49a344 + 6 + 543.18141592920369 + 338 + 129.69911504424772 + 0 + -14774017 + + 0 + 674d92c5-e6f8-4a62-bc62-b8e2fe0882a0 + 2020-01-14T07:44:15.1425366Z + Process parameters 2 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + Name + 0 + + + Dyeing Speed + 1 + + + Min Ink Uptake + 2 + + + Max Ink Uptake + 3 + + + Feeder Tension + 4 + + + Puller Tension + 5 + + + Winder Tension + 6 + + + Mixer Temp + 7 + + + Head Zone 1 Temp + 8 + + + Head Zone 2 Temp + 9 + + + Head Zone 3 Temp + 10 + + + Head Zone 4 Temp + 11 + + + Head Zone 5 Temp + 12 + + + Head Zone 6 Temp + 13 + + + Dryer Air Flow + 14 + + + Dryer Zone 1 Temp + 15 + + + Dryer Zone 2 Temp + 16 + + + Dryer Zone 3 Temp + 17 + + + Dryer Buffer Length + 18 + + + Head Air Flow + 19 + + + Process Parameters Tables Group Guid + 20 + + + Table Index + 21 + + + + + 21aa11c9-3d35-4902-901a-b9ed45117e09 + 653 + 860.82743362831877 + 382 + 223.93362831858394 + 0 + -14774017 + + 0 + 811430c0-2afc-4e9b-8077-a74e1fd2f825 + 2020-01-14T11:41:02.8729031Z + Process parameters 3 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 100 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + + + + Name + 0 + + + Dyeing Speed + 1 + + + Min Ink Uptake + 2 + + + Max Ink Uptake + 3 + + + Feeder Tension + 4 + + + Puller Tension + 5 + + + Winder Tension + 6 + + + Mixer Temp + 7 + + + Head Zone 1 Temp + 8 + + + Head Zone 2 Temp + 9 + + + Head Zone 3 Temp + 10 + + + Head Zone 4 Temp + 11 + + + Head Zone 5 Temp + 12 + + + Head Zone 6 Temp + 13 + + + Dryer Air Flow + 14 + + + Dryer Zone 1 Temp + 15 + + + Dryer Zone 2 Temp + 16 + + + Dryer Zone 3 Temp + 17 + + + Dryer Buffer Length + 18 + + + Head Air Flow + 19 + + + Process Parameters Tables Group Guid + 20 + + + Table Index + 21 + + + + + d3f502ea-76dd-48c3-b401-7f5fb7925a72 + 409 + 589.79203539823015 + 148 + 96.2610619469026 + 0 + 3EEE3B24-55DD-49F2-9339-F83F883BB908 + -1 + + + + + Thread + + + 50bae43f-8b1a-4279-9238-b976a0c72af3 + 1530 + 193.19911504424795 + 169 + 181.37610619469029 + 0 + A8DB1D27-6B25-4FB4-A3F5-46A29BA51955 + -1 + 10 + 2 + + + 68eef943-2151-4df5-be61-044c3865606e + 1172 + 145.78318584070678 + 175 + 167.827433628319 + 0 + 96B89605-F999-43FE-A1CD-2645BFB33A36 + -1 + 10 + 2 + + + 6be024c6-3d1b-4267-9b77-44473aba56b7 + 988 + 143.32300884955998 + 190 + 167.09734513274049 + 0 + FC60060A-3736-4910-B41A-FF6DABDF0E9E + -1 + 10 + 2 + + + 7c720f3b-00e1-49dd-92f9-fdd1e9686623 + 817 + 142.42035398230098 + 169 + 168.31858407079625 + 0 + 4CE6A82E-D841-4D33-BBB2-11F0743A441C + -1 + 10 + 2 + + + 3ebd6759-521b-4ed1-a353-ee1ad7801f28 + 922 + 516.43362831858417 + 439 + 304.995575221239 + 0 + D126DB23-784B-4F0C-8F88-D89A65A7549F + -14774017 + 1 + 1460 + 0 + 16384 + true + + + 984b4126-3dda-4624-a79f-0646eb0e1358 + 465 + 515.420353982301 + 439 + 304.995575221239 + 0 + 10102BC3-0EAE-47FF-A8E5-8640780CAA3D + -14774017 + 1 + 1516 + 0 + 16384 + true + + + 8ebc3ab7-a02d-4b12-93b3-2563443831d7 + 15 + 518.46017699115032 + 439 + 304.995575221239 + 0 + C0BCCD5C-346B-4C4A-A080-39D28E9E1A0C + -14774017 + 1 + 1398 + 0 + 16384 + true + + + acafb268-5e97-4277-8dc8-173250a9e3f8 + 12 + 13.849557522123973 + 439 + 304.995575221239 + 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 + + + be4cb8d9-b516-4604-a6a5-1638cbc50251 + 860 + -24.18584070796669 + 345 + 169.21681415929209 + 0 + 4CE6A82E-D841-4D33-BBB2-11F0743A441C + -14774017 + 1 + 514 + 0 + 100000 + true + + + 75b99507-4eba-4b11-b52e-26732d4c5479 + 19 + 324.14159292035305 + 429 + 193.26548672566258 + 0 + F1DF490B-0577-4FA7-ACA1-0EEF4F934E8F + -14774017 + 4 + 1398 + 0 + 100 + true + + + a30e48de-be76-4230-92d0-d27d6f37b940 + 474 + 320.03097345132551 + 429 + 193.26548672566258 + 0 + 5F12B974-2C9E-4DDD-9B20-733251A5D7E6 + -14774017 + 4 + 1398 + 0 + 100 + true + + + 5ac4b368-093a-4192-98d4-e9d24f229b13 + 928 + 321.64601769912122 + 429 + 193.26548672566258 + 0 + 84CF23C9-D20D-4C08-BE1D-80201FC43C06 + -14774017 + 4 + 1398 + 0 + 100 + true + + + 9c34dc69-cfaa-48b4-9d02-8f0d9bba79dd + 1303 + 34.380530973454768 + 176 + 83.05309734512457 + 0 + -1 + + 89B7B89D-8050-4188-B568-35B1910CFB6F + 96B89605-F999-43FE-A1CD-2645BFB33A36 + 84CF23C9-D20D-4C08-BE1D-80201FC43C06 + FC60060A-3736-4910-B41A-FF6DABDF0E9E + 5F12B974-2C9E-4DDD-9B20-733251A5D7E6 + 9ADF7823-B293-4275-9999-F62474D246AA + 4CE6A82E-D841-4D33-BBB2-11F0743A441C + F1DF490B-0577-4FA7-ACA1-0EEF4F934E8F + + + + + + Dispensers + + + dce78f33-c966-4848-8c6e-a4a01dbc7577 + 1322.1428571428571 + 214.15929203538531 + 159 + 215.8274336283186 + 0 + 2CC8E461-E91F-4D4C-A402-922477F06C87 + -1 + 1200 + Dispenser 1 + + + 2d03fc19-0502-43e1-a3ff-4012a612112b + 1149 + 218.48230088495342 + 159 + 215.8274336283186 + 0 + C8D8FE90-0375-44A2-A6D1-E997789E065C + -16724737 + 1200 + Dispenser 2 + + + 81958374-3fa3-48b3-a554-5653fe1934b1 + 959 + 210.32743362830422 + 156 + 215.8274336283186 + 0 + 08ED9044-CAD6-4492-94B2-C07206E0164B + -65325 + 1200 + Dispenser 3 + + + 8fead411-7198-4428-a364-e32f3035ed94 + 775 + 206.42920353980952 + 159 + 215.8274336283186 + 0 + 179F34BB-3252-4D3A-965C-E6EB43D6FE7C + -524544 + 1200 + Dispenser 4 + + + 31bfa89f-e64d-4a3b-8585-c4a1b2e5a139 + 585 + 208.47345132741418 + 159 + 215.8274336283186 + 0 + 716B35CF-46E0-47D5-AF85-5233D212568F + -2108246 + 1200 + Dispenser 5 + + + c2bff5f3-6dc9-4b07-87ba-9e3a5814804e + 372 + 216.75221238937439 + 159 + 215.8274336283186 + 0 + 99528449-4D76-4874-AB95-522951560E01 + -263685 + 1200 + Dispenser 6 + + + 071281a5-3569-4a62-8b68-7bea850a3c07 + 217 + 211.63716814158107 + 159 + 215.8274336283186 + 0 + E8ED07E2-7C36-459C-B9E5-6A23A1E24F03 + -723724 + 1200 + Dispenser 7 + + + 7b703b9a-a626-4ae5-8e31-fa1cfe5718f4 + 45 + 216.04867256635521 + 159 + 215.8274336283186 + 0 + 8A957565-4165-49F7-854D-D21F95FFBE1B + -724238 + 1200 + Dispenser 8 + + + caca40a2-310c-452e-adcf-c28ee38f6bdc + 1305 + 31.606194690259713 + 150 + 156.04424778761069 + 0 + 1F0F907A-EC16-4386-AFC8-B2B156F2A822 + -15856114 + 10 + 2 + + + af52d36f-27a2-4a31-8ceb-9c43fedbed22 + 1127 + 32.535398230081626 + 150 + 156.04424778761069 + 0 + A499E5E0-A812-4032-8F96-B38C6762C4BD + -15293470 + 10 + 2 + + + d40eada8-d22a-4521-bd2a-d998ed93106f + 955 + 32.61946902653176 + 150 + 156.04424778761069 + 0 + 6B1DF4B0-BCC2-400C-A3B7-31C5119A55BB + -1570857 + 10 + 2 + + + b2d6364d-8b5c-43d2-8838-927c85b017b1 + 774 + 31.960176991142362 + 150 + 156.04424778761069 + 0 + F33667BD-D9FA-4DC7-BC2C-0E89E60AE4BE + -1379575 + 10 + 2 + + + 3980e685-73b3-4af1-9593-9235be147322 + 596 + 32.889380530964274 + 150 + 156.04424778761069 + 0 + 19645882-6587-4A50-BD85-AF06617DC654 + -7763381 + 10 + 2 + + + 51465293-58d5-40a4-8302-81856f8b4f47 + 424 + 32.973451327414409 + 150 + 156.04424778761069 + 0 + AF3FD56C-95BF-4DE1-8EDC-8426B0DB2A26 + -1 + 10 + 2 + + + c2a8c5b2-891b-4f9f-862c-c1c294366c78 + 252 + 31.703539823006281 + 150 + 156.04424778761069 + 0 + 60DA9EA3-C8A6-4D41-8AD8-3EB1BAA79CC9 + -8391822 + 10 + 2 + + + 9618e441-8973-4e16-a90b-06ce5798bd29 + 80 + 31.787610619456416 + 150 + 156.04424778761069 + 0 + EF66F95A-E166-4FA2-B1AF-D6F55621817A + -2186185 + 10 + 2 + + + bce8c8e8-a317-4991-9aa7-cd99a45d1509 + 28.22352941176473 + 682.03174474303751 + 247 + 122.24778761061873 + 0 + 66cc8510-db9c-4e13-9151-01e705ec04de + -1 + + + 72a23702-31bb-4ab8-aee5-2a02bcb1270b + 235.16470588235291 + 699.99460095802579 + 200 + 94.15929203539747 + 0 + 36ba0ba4-e41d-45ff-8f68-1699e00c7107 + -1 + + + 2dd6ff17-e515-4d8f-814f-a9683f404a8e + 140 + 867.73893805310092 + 160 + 85.49115044247776 + 0 + 78482AA4-3DF6-421F-944C-64328D3C3EF2 + -14774017 + 0 + 70 + 10 + true + + + 06843009-1da0-4811-8e77-50576d0edcb1 + 507 + 792.77433628318749 + 219 + 125.75221238938025 + 0 + 0c5dc1e9-da17-4ff8-86aa-6b39fd796ba9 + -16777216 + + + 935dddd0-0c6f-4766-8173-f9118006a12b + 1303 + 475.87168141593065 + 160 + 124.6504424778754 + 0 + B2164815-FBF3-4CF8-81D8-20F719626664 + -15856114 + 10 + 2 + + + 97e39a59-dba8-4e42-a124-b37de9453baf + 370 + 781.46902654866153 + 710 + 401.24778761063465 + 0 + D023F15D-3555-48E9-A9E9-5DF99F60D791 + 0 + 2 + 1956 + 0 + 100 + true + + + 46bdfce3-1c69-45dd-bbe9-582d1ac1e6f2 + 1128 + 482.80530973451141 + 140 + 117.32300884955743 + 0 + 0FE216B2-A097-4F2C-B465-08593F2532B3 + -15293470 + 10 + 2 + + + 429154a5-9a16-4423-85ca-ee4bae9aec3c + 968 + 481.35398230088504 + 140 + 117.32300884955743 + 0 + 3271FD82-46D3-4789-B612-564967826C75 + -1570857 + 10 + 2 + + + 0f6ab8e8-99a7-4468-bde8-690a63467688 + 766 + 476.07964601769811 + 140 + 117.32300884955743 + 0 + FBB806E7-42FA-4BAA-BDA1-3B8B07913AAD + -1379575 + 10 + 2 + + + bc0ac903-9c1f-4580-8b9e-670a76350473 + 586 + 474.38938053097161 + 140 + 117.32300884955743 + 0 + 436A22BB-AF79-4CB2-8A7D-DD4D9E54A81E + -7763381 + 10 + 2 + + + f9c960b2-b93e-46d5-b892-30337c0b55af + 391 + 474.87168141592781 + 140 + 117.32300884955743 + 0 + 89EA6CC8-5363-4BEC-A370-D906611087A7 + -1 + 10 + 2 + + + 5ac157ab-2d53-4307-bf0b-b069854701ac + 226 + 471.66814159292005 + 140 + 117.32300884955743 + 0 + D5EBE52B-E2DF-4C97-80B1-F111F6B15854 + -8391822 + 10 + 2 + + + 65a19d7e-c524-48a0-bd70-28b99b113dd1 + 69 + 473.97787610619389 + 140 + 117.32300884955743 + 0 + FE521D1B-A0EA-4FEA-AE64-33998A6CE138 + -1 + 10 + 2 + + + 5bf7a681-ee47-477e-8b47-ba7a2eb6e115 + 1130 + 624.9557522123913 + 144 + 80.495575221237516 + 0 + 3174ADCF-5793-4B5A-A3C6-B96E146A903D + -1 + 10 + 0 + + + 29b17a4b-fd4e-49cc-a3cd-418730176bf7 + 969 + 625.95575221239 + 144 + 80.495575221237516 + 0 + AD50C358-5BAF-4A2F-8593-51A22C85B3D1 + -1 + 10 + 0 + + + 21a5429f-c3a2-4e3b-ae77-c5538f30130d + 775 + 623.66814159292062 + 144 + 82.535398230087083 + 0 + E2F0FC31-CE7E-416B-ACEA-8EB6CA9B850B + -1 + 10 + 0 + + + 96a46b0c-37b1-4457-93fb-b3dc301c5743 + 588 + 625.06637168141322 + 144 + 80.495575221237516 + 0 + 37872FE8-D68A-45BC-A441-372B7805C09F + -1 + 10 + 0 + + + d4ad8603-9929-415f-9990-1869fcff36e4 + 1310 + 628.69469026548632 + 144 + 80.495575221237516 + 0 + 84682E90-6926-42AA-BF8C-2CCCF5C26C97 + -1 + 10 + 0 + + + 25249d78-ee37-42a8-b5aa-96f60e97c3ea + 20.870588235294122 + 784.26605504587133 + 327 + 108.53097345133028 + 0 + 8B1FCBC3-FEEA-4F87-B56F-CE5D28B7ACA4 + -1 + + + fc1d62f7-d13b-4a7b-8f9f-c687c987c7a9 + 1065 + 788.41592920352355 + 370 + 362.10619469026585 + 0 + 1F0F907A-EC16-4386-AFC8-B2B156F2A822 + -14774017 + 3 + 1426 + 0 + 100 + true + + + cc99a514-1498-4b93-a4eb-4e0a2a2e9de6 + 628 + 765.4469026548752 + 394 + 372.88495575221242 + 0 + A499E5E0-A812-4032-8F96-B38C6762C4BD + -14774017 + 1 + 1282 + 0 + 100 + true + + + cdddd48e-422d-48f4-8397-5032c3705fdb + 1069 + 698.04867256637226 + 382 + 136.79203539823016 + 0 + 16C0F85C-0479-42F4-A67E-3E0CD3B23C2D + -1 + + + ee6d4c5a-ca5b-4557-8012-dacf700cdc08 + 231 + 624.06637168142413 + 144 + 80.495575221237516 + 0 + 37872FE8-D68A-45BC-A441-372B7805C010 + -8391822 + 10 + 0 + + + 20576bb2-202f-4170-9af5-f3c18b410112 + 77 + 624.46460176991513 + 144 + 80.495575221237516 + 0 + 37872FE8-D68A-45BC-A441-372B7805C011 + -2186185 + 10 + 0 + + + + + Thread insertion + + + 443a977c-8e89-4a56-82e4-684bac7945c9 + 25 + 22.761061946902203 + 247 + 172.25663716814159 + 0 + 08d15ca1-d7d1-460f-8f37-42c37c287cd1 + -1 + 500 + + + a821b716-cb7d-4951-84ee-e56955431099 + 355 + 20.592920353981697 + 260 + 153.00442477876106 + 0 + b90a4e78-ebbf-44db-829b-949517d6400b + -1 + 50 + + + e36e321b-d48d-4199-a1ee-75ac18e9de1e + 694 + 19.367256637167998 + 217 + 155.26106194690203 + 0 + b7c1aea4-32c1-41cb-bca3-4aa665529b49 + -1 + 50 + + + 8790db03-4dfd-4d49-aec0-706babb55af9 + 364 + 222.16814159291846 + 240 + 172.30973451327589 + 0 + 2d3eaca5-4dfd-40d9-9d1f-aa4ae794eddc + -1 + 500 + + + 69ebcb28-13d9-41b3-a9ef-b2be51584141 + 29 + 241.34955752210982 + 263 + 174.296460176989 + 0 + c6099065-a735-4cc5-b575-c31a45bb9262 + -1 + 400 + + + 4d562029-3fdf-40a4-a5a7-9a322253c912 + 1168 + 47.305309734517039 + 304 + 167.26548672566202 + 0 + -1 + 40 + + + 92607e12-2dd6-41c9-8f89-f051f386b734 + 1258 + 277.55752212389069 + 240 + 156.04424778761069 + 0 + DCE08A06-6711-43AE-AB7C-EADD5AB70EE0 + -1 + + + 7b5b6896-f626-4e59-a5cf-2600e603c0f6 + 695 + 223.44247787610908 + 228 + 175.0353982300901 + 0 + 7b6d0a93-5a91-4e1f-af47-353afd8b5ea6 + -1 + 83.833754740833143 + + + 2052a2d3-843c-4a1c-87fd-acd0832fd1b9 + 81 + 542.88495575220634 + 220 + 168.473451327436 + 0 + 7c03f12f-ab2a-4421-8575-aefd6dec0001 + -1 + 1000 + + + 339b7d00-d688-41cf-926a-8171d5e62740 + 376 + 553.11061946903 + 240 + 159.84070796460173 + 0 + f3b5076e-cba3-4ad2-b3cc-0c4e907bd9ef + -1 + 98.094184576485333 + + + 7644a8f9-00a2-4e37-8f48-0667b1541114 + 1014 + 290.60619469026437 + 240 + 172.30973451327589 + 0 + 92237d83-9f85-48db-aa6f-2fc5c9e0d8cd + -1 + 500 + + + c706d31b-48b0-44cc-a9c4-11d3acdcf667 + 548 + 418.71652683599893 + 269 + 127.67256637168134 + 0 + 2a454081-bd5e-41de-ae5d-97aefe1d76de + -1 + + + 7ccff69d-50f9-4e9b-a997-72a67917df5e + 803 + 569.80530973451619 + 227 + 145.08849557522183 + 0 + 9c02effb-7deb-40a1-90c3-df1fb48e6431 + -1 + 30 + + + a88a74cb-418b-4ed0-89ec-c42ff560528e + 1107 + 573.87168141592883 + 227 + 145.08849557522183 + 0 + a359e9d0-adcc-40a5-b3d9-b9cb26eca092 + -1 + 30 + + + + + Head graphs + + + ffe980da-dbbe-4bac-9595-46f587e9df00 + 3 + 5.8097345132742362 + 363 + 157.76991150442467 + 0 + 0E4783A1-B8DE-451E-B357-322C39E448FB + -14774017 + 2 + 2962 + 0 + 300 + true + + + 81b78212-14d8-4a66-bf3a-eeea9900e0d6 + 371 + 21.075221238938013 + 128 + 91.469026548670342 + 0 + AA1CF164-76FE-49C6-AA73-0EBA29816E92 + -1 + + + 3941a557-05e6-4c1b-bb98-4f2a59892431 + 517 + 11.517699115044195 + 103 + 113.4867256637167 + 0 + 188285E5-1493-4BED-8269-91743770A631 + -1 + + HeaterZone7 + 100 + 100.02 + false + false + true + + 100 + + + 7e0942e7-a87a-402a-b580-5091ed6b29ee + 8 + 276.6194690265491 + 357 + 143.58407079645986 + 0 + 0E4783A1-B8DE-451E-B357-322C39E44809 + -14774017 + 2 + 2962 + 0 + 300 + true + + + 064bd571-4250-4ea3-8ed5-96f1ddc8fe6b + 374 + 280.73893805309746 + 128 + 91.469026548670342 + 0 + 8FEB7F10-E1FB-465A-A987-6E8659C2186A + -1 + + + 4845ec5b-067b-43c2-aaf1-314dcb358a7c + 519 + 283.3407079646019 + 103 + 121.59292035398221 + 0 + 63E2AFE0-0746-4AAB-AA74-C26EC1F282AE + -1 + + HeaterZone9 + 95 + 95.05 + false + false + true + + 95 + + + 85b25b0b-cd3d-4a8a-88f5-f832623d7ec2 + 15 + 708.27433628318636 + 350 + 152.70353982300856 + 0 + 0E4783A1-B8DE-451E-B357-322C39E44812 + -14774017 + 2 + 2962 + 0 + 300 + true + + + 85e9ecc2-3bce-4055-89a9-1712752898a9 + 384 + 708.34070796460185 + 128 + 91.469026548670342 + 0 + 96A8AF31-B489-4FA2-BF99-C66D7DEC94C8 + -1 + + + 8d9b0d4b-ac5e-4c17-b7eb-4d59825064c7 + 522 + 719.04867256637192 + 103 + 121.59292035398221 + 0 + 2D578A37-D808-40D0-ACE4-4A868EDD6BDC + -1 + + HeaterZone12 + 99 + 99 + false + false + true + + 99 + + + 63ccee8d-ce38-4c69-b8d1-141f320d11f9 + 6 + 563.37610619469046 + 358 + 141.55752212389359 + 0 + 0E4783A1-B8DE-451E-B357-322C39E44811 + -14774017 + 2 + 2962 + 0 + 300 + true + + + 5ed86083-bdd6-4648-b7ca-f17fa97f034a + 379 + 573.57522123893818 + 128 + 91.469026548670342 + 0 + C113AA1D-25F5-4095-A1F3-18BEDFC0EEEE + -1 + + + 8269194e-5348-4367-8ae9-e6c0647febaf + 523 + 571.1106194690268 + 103 + 116.52654867256626 + 0 + D41BBB23-6EB5-4743-89DB-9191000B475F + -1 + + HeaterZone11 + 100 + 100.02 + false + false + true + + 100 + + + 182492d7-b240-4162-b8ec-39996eec3cc7 + 9 + 418.47787610619497 + 353 + 145.61061946902635 + 0 + 0E4783A1-B8DE-451E-B357-322C39E44810 + -14774017 + 2 + 2962 + 0 + 300 + true + + + e8130372-e0ee-4c1c-a43d-4ab15ff57bd8 + 378 + 430.703539823009 + 128 + 91.469026548670342 + 0 + DCCCCF68-5895-40BE-9E90-1FA35E44D2E4 + -1 + + + af0d953f-45de-4c0d-9eeb-d7a5c17681e4 + 519 + 428.23893805309746 + 103 + 121.59292035398221 + 0 + B4D0A1C8-711C-49A9-82A3-B5B9F35FC131 + -1 + + HeaterZone10 + 100 + 100.02 + false + false + true + + 100 + + + 00dda04e-1853-422f-ac47-29bdbab642d7 + 7 + 142.86725663716828 + 357 + 152.70353982300867 + 0 + 0E4783A1-B8DE-451E-B357-322C39E44808 + -14774017 + 2 + 2962 + 0 + 300 + true + + + e7935033-56c6-42a4-a2b3-f5eedb0a11e7 + 382 + 151.03982300884968 + 128 + 91.469026548670342 + 0 + E772ECA1-24EB-446A-AB28-F5E3D853B9F6 + -1 + + + b339a7c0-7555-4e54-9834-6193ed7c2b7a + 519 + 147.561946902655 + 104 + 109.43362831858406 + 0 + 461FA2D7-1918-4958-AAA7-37A1A329FA12 + -1 + + HeaterZone8 + 100 + 99.97 + false + false + true + + 100 + + + 40d16753-8448-4af9-8fbd-98c1ed301de5 + 623 + 117.5353982300885 + 363 + 157.76991150442467 + 0 + D7585119-4A42-4370-8F1E-F3E62553E588 + -14774017 + 2 + 2962 + 0 + 300 + true + + + b3826c8e-1d82-4f4f-ad9f-d88f257dffb2 + 1005 + 12.221238938053205 + 128 + 91.469026548670342 + 0 + d59b64f7-a8cf-4a2b-935a-943ae35fb78c + -1 + + + d3631074-68c4-4377-b0c5-9213a6b1b2c0 + 1148 + 293.47345132743362 + 103 + 113.4867256637167 + 0 + 8E764A14-0F84-4FEC-928B-32A2509CAD57 + -1 + + HeaterZone3 + 0 + 283.75 + false + false + true + + 0 + + + 99af8946-4971-4913-9382-705c4e05b7ce + 621 + 275.60619469026591 + 363 + 157.76991150442467 + 0 + 098F7CAB-030C-46B0-B2B8-A85AF2253032 + -14774017 + 2 + 2962 + 0 + 100 + true + + + 233f0076-7595-4ecb-8496-41eeb7b457ea + 993 + 279.72566371681404 + 128 + 91.469026548670342 + 0 + 9de55ec4-201f-4f62-9003-f63ebea06f8f + -1 + + + f815ebb5-61af-45ff-8109-5f5e717a5c4d + 1146 + 14.823008849557596 + 103 + 113.4867256637167 + 0 + 27E7BB74-81C3-4EF2-80AE-962F111C441F + -1 + + HeaterZone1 + 100 + 99.97 + false + false + true + + 100 + + + 7b7d9bea-29df-4f94-8ab6-2a6d7105bccf + 627 + 6.07522123893807 + 363 + 157.76991150442467 + 0 + A8DB1D27-6B25-4FB4-A3F5-46A29BA51955 + -14774017 + 2 + 2962 + 0 + 300 + true + + + 72d7192b-dd27-4064-9f5f-90062388a81c + 1003 + 151.03982300884974 + 128 + 91.469026548670342 + 0 + df38139e-0026-46bc-b72f-df5f9eec80f7 + -1 + + + 915f8dfc-5407-43ca-a0c7-d774867dfb5f + 1145 + 153.64159292035396 + 103 + 113.4867256637167 + 0 + B4EE8CC0-EE2B-4ABE-BF09-9226860E756B + -1 + + HeaterZone2 + 100 + 99.94 + false + false + true + + 100 + + + 64fba32f-3c03-42b3-b1ed-e2bdbe454bd6 + 630 + 535.00442477876129 + 363 + 157.76991150442467 + 0 + 246C2551-5EFD-48E9-94F6-6313C5E5018F + -14774017 + 2 + 2962 + 0 + 300 + true + + + 5f451443-fab2-4bf6-8f21-5e038ca2c726 + 1008 + 707.327433628319 + 128 + 91.469026548670342 + 0 + 16D0DEF7-A2E0-4163-9F4B-FBEC2573BCC7 + -1 + + + e5c1becb-1402-45fa-b252-60a03d4401cc + 1150 + 716.00884955752235 + 103 + 113.4867256637167 + 0 + D2B6CAA0-055E-4871-8D91-A5370F1ACB22 + -1 + + HeaterZone6 + 99 + 98.97 + false + false + true + + 100 + + + 4f3b4ecd-759a-4ba5-80f3-74cc485d7085 + 629 + 387.066371681416 + 363 + 157.76991150442467 + 0 + 6C0C1AB0-3EE9-40D7-8424-A79436FBC804 + -14774017 + 2 + 2962 + 0 + 300 + true + + + 665593d6-e689-459e-94f9-2cdcce6150ac + 1004 + 562.42920353982311 + 128 + 91.469026548670342 + 0 + d28bfa3c-edce-4f19-a296-3da251fcc0e2 + -1 + + + 42b4b029-e8bc-4156-b6c1-bb64aae83f9e + 1149 + 571.1106194690268 + 103 + 113.4867256637167 + 0 + D6771DF4-771E-4D62-B6BA-BDE361C0A0F3 + -1 + + HeaterZone5 + 100 + 99.97 + false + false + true + + 100 + + + 60dff2b2-7ddc-47a9-90b1-3f45968c1790 + 630 + 692.06194690265511 + 363 + 157.76991150442467 + 0 + DACEBF90-E2B4-4CC9-A973-B8B429AA0089 + -14774017 + 2 + 2962 + 0 + 300 + true + + + b53a74f3-8e91-40ce-b980-c5b237baeee9 + 1002 + 413.47787610619491 + 128 + 91.469026548670342 + 0 + 81a3ae80-f4ea-4857-bc4e-2055d3b5fbc7 + -1 + + + 8c438e59-d87c-46d2-8050-acc8a0c455d7 + 1148 + 434.31858407079636 + 103 + 113.4867256637167 + 0 + 94574D69-46E1-4144-A8B5-D4BF0DA96D18 + -1 + + HeaterZone4 + 100 + 99.97 + false + false + true + + 100 + + + + + waste + + + bb9bf273-0a3d-4202-98ce-37a5f206ed75 + 119 + 68.898230088495609 + 339 + 184.4159292035398 + 0 + 7e1f53ec-8176-4efa-ac3d-c8f2436e60d1 + -1 + + + 59678a51-f995-4952-b250-e449f1fcbeac + 468 + 80.336283185839477 + 280 + 166.17699115044252 + 0 + 78db28d0-0407-4942-bb62-c44da81c4f9e + -1 + + + 8f9ff579-0e9d-4f48-8ed0-6fa563f2aba7 + 873 + 63.831858407079665 + 174 + 133.75221238938059 + 0 + 06bd7c0b-5aef-445a-86c0-853becf8594b + -1 + + + 70d1bd1e-acdb-436a-b205-6eeb9d137120 + 1070 + 70.106194690265909 + 221 + 123.61946902654864 + 0 + 4048bf02-27dc-4049-9284-fe913a7e0ebe + -1 + + + dcc7ce16-5b89-4ff8-acd5-7fb0b9ebb6d1 + 877 + 248.24778761061947 + 186 + 126.65929203539827 + 0 + 00ea1771-efee-4f3e-a0d2-8b2a4214e9fd + -1 + + + 2b99bbf7-94da-4bb2-acc9-91b35e543c5d + 897 + 358.69469026548683 + 147 + 69.9159292035398 + 0 + -14774017 + Waste lower presence + + + c150533c-abe4-4edf-b6ad-fa475b133142 + 1112 + 253.66814159291806 + 186 + 126.65929203539827 + 0 + d2f266e3-779b-4dfe-b513-26ce61c529a4 + -1 + + + d96f2a6d-0ccb-401e-8931-09086ca81fae + 1143 + 366.78318584070507 + 147 + 69.9159292035398 + 0 + -14774017 + Waste middle presence + + + bb9847ba-9671-4613-bf23-a0c637ebc79d + 151 + 271.55309734513281 + 200 + 63.836283185840671 + 0 + -14774017 + pump + + + d13a2df4-3f54-4c31-8f9a-ee7810fb6af5 + 504 + 283.71238938053096 + 192 + 67.88938053097354 + 0 + -14774017 + valve + + + fbe2670f-6d9b-4361-9332-1ceb1692c91a + 108 + 484.61946902655154 + 356 + 208.10619469026472 + 0 + 78db28d0-0407-4942-bb62-c44da81c4f9e + -1 + + + + + disp + + + f9531a72-3742-47a7-86bb-b589f8b3eb55 + 123 + 128.33628318584061 + 390 + 249.67699115047321 + 0 + A499E5E0-A812-4032-8F96-B38C6762C4BD + -14774017 + 3 + 3600 + 0 + 100 + true + + + aae29286-81b3-476a-9f58-c0fd246cae96 + 880 + 158.81415929204155 + 442 + 241.88495575221771 + 0 + F33667BD-D9FA-4DC7-BC2C-0E89E60AE4BE + -14774017 + 3 + 3600 + 0 + 100 + true + + + 7d94c7c4-1288-4f9d-b0e6-a06794829642 + 1055 + 14.181415929203524 + 161 + 111.46017699115049 + 0 + -14774017 + Y + + + c95f9ad1-b607-4606-8217-400bea76f3d6 + 384 + 23.991150442480944 + 161 + 111.46017699115049 + 0 + -14774017 + C + + + 8f141fa5-fb24-4557-adcf-a6aa55a28fb4 + 121 + -8.8495575221214722 + 169 + 132.73893805309734 + 0 + A499E5E0-A812-4032-8F96-B38C6762C4BD + -1 + 10 + 3 + + + 7eab018a-ef43-4bca-a6cf-857d69767bba + 839 + -4.7079646017762684 + 169 + 132.73893805309734 + 0 + F33667BD-D9FA-4DC7-BC2C-0E89E60AE4BE + -1 + 10 + 3 + + + 2a9e89d4-5d60-4a83-9527-cb77fdf35c14 + 1276 + 22.287610619469035 + 187 + 102.34070796460179 + 0 + -1 + + 1F0F907A-EC16-4386-AFC8-B2B156F2A822 + A499E5E0-A812-4032-8F96-B38C6762C4BD + 6B1DF4B0-BCC2-400C-A3B7-31C5119A55BB + F33667BD-D9FA-4DC7-BC2C-0E89E60AE4BE + 19645882-6587-4A50-BD85-AF06617DC654 + 96B89605-F999-43FE-A1CD-2645BFB33A36 + 84CF23C9-D20D-4C08-BE1D-80201FC43C06 + C0BCCD5C-346B-4C4A-A080-39D28E9E1A0C + 10102BC3-0EAE-47FF-A8E5-8640780CAA3D + FC60060A-3736-4910-B41A-FF6DABDF0E9E + 5F12B974-2C9E-4DDD-9B20-733251A5D7E6 + D126DB23-784B-4F0C-8F88-D89A65A7549F + + + + 6d2e7962-b3ae-4682-b20e-9654f48dcffe + 587 + 5.0619469026548813 + 155 + 131.72566371681415 + 0 + 2CC8E461-E91F-4D4C-A402-922477F06C87 + -1 + 500 + Dispenser 1 + + + 5ee2718f-f068-427b-a31e-d586c7d7682c + 131 + 552.94690265486338 + 390 + 249.67699115047321 + 0 + 1F0F907A-EC16-4386-AFC8-B2B156F2A822 + -14774017 + 3 + 3600 + 0 + 100 + true + + + 1c254a92-c075-453f-9667-cdcc91cf8e6a + 399 + 455.67256637168265 + 161 + 111.46017699115049 + 0 + -14774017 + K + + + d1087b1a-c36b-4242-96f5-07c2bb602cc4 + 145 + 409.52212389380446 + 169 + 132.73893805309734 + 0 + 1F0F907A-EC16-4386-AFC8-B2B156F2A822 + -1 + 10 + 3 + + + 53fe93a2-88a5-4d4d-9cd5-eb4d8a8fefae + 604 + 561.16371681414739 + 390 + 249.67699115047321 + 0 + 6B1DF4B0-BCC2-400C-A3B7-31C5119A55BB + -14774017 + 3 + 3600 + 0 + 100 + true + + + 0bef6e9d-6da0-4f06-9e1a-c00142bde4c1 + 832 + 440.91150442477635 + 161 + 111.46017699115049 + 0 + -14774017 + M + + + 762c5a97-a3bc-45b4-aa9f-0b50afa9cb9b + 633 + 434.0132743362783 + 169 + 132.73893805309734 + 0 + 6B1DF4B0-BCC2-400C-A3B7-31C5119A55BB + -1 + 10 + 3 + + + be584f80-3250-494c-87fc-250d6deae051 + 1045 + 559.4070796459921 + 390 + 249.67699115047321 + 0 + 19645882-6587-4A50-BD85-AF06617DC654 + -14774017 + 3 + 3600 + 0 + 100 + true + + + 39f6a02c-c4d9-47d0-b92d-bdea0ed5d3ce + 1056 + 435.43805309733875 + 169 + 132.73893805309734 + 0 + 19645882-6587-4A50-BD85-AF06617DC654 + -1 + 10 + 3 + + + 5b924929-9b16-4598-94cc-b2f4bca26798 + 1304 + 448.0884955752224 + 161 + 111.46017699115049 + 0 + -14774017 + TI + + + 89ae1fa5-1ad1-469e-ae76-0a29c35805cd + 588 + 317.1504424778762 + 283 + 74.982300884955748 + 0 + E144A221-4859-4DC3-9A7E-4A2969FB0826 + -1 + + + c218cf34-74c2-41bb-8c3b-3030abce451a + 1363 + 384.02654867256643 + 156 + 94.234513274336337 + 0 + E144A221-4859-4DC3-9A7E-4A2969FB0826 + -1 + + + 75af30c6-d7f8-4745-bfb5-d6dc5d50479a + 767 + 362.74778761061958 + 283 + 74.982300884955748 + 0 + E144A221-4859-4DC3-9A7E-4A2969FB0826 + -1 + + + df1fd958-fd8a-4b00-98e1-679455494d60 + 309 + 13.168141592920392 + 112 + 107.40707964601768 + 0 + 3174ADCF-5793-4B5A-A3C6-B96E146A903D + -1 + 10 + 0 + + + f07225b3-1522-4cb6-9ba8-5b9697f05467 + 1180 + 60.7920353982301 + 102 + 88.1548672566372 + 0 + E2F0FC31-CE7E-416B-ACEA-8EB6CA9B850B + -1 + 10 + 0 + + + 45b87322-e1f5-42eb-88c6-71c2eeb2899a + 1258 + 463.06194690265494 + 88 + 75.995575221239 + 0 + 37872FE8-D68A-45BC-A441-372B7805C09F + -1 + 10 + 0 + + + 0c1c25e8-3ce3-4994-bbb9-bd6b2367a413 + 810 + 462.04867256637175 + 77 + 80.048672566371636 + 0 + AD50C358-5BAF-4A2F-8593-51A22C85B3D1 + -1 + 10 + 0 + + + fa2f697e-b229-418a-bae6-78b92bf0458b + 336 + 428.61061946902663 + 95 + 96.261061946902657 + 0 + 84682E90-6926-42AA-BF8C-2CCCF5C26C97 + -1 + 10 + 0 + + + + + Priming + + + ea45a516-9dac-4c9a-9261-0c44e22aa065 + 808 + 155.02654867256638 + 219 + 200.62831858407088 + 0 + A499E5E0-A812-4032-8F96-B38C6762C4BD + -1 + 10 + 2 + + + 3e2cb7dc-a5f3-4ba6-a520-2bae8ff0e4a8 + 832 + 451.91592920353986 + 332 + 326.27433628318596 + 0 + C8D8FE90-0375-44A2-A6D1-E997789E065C + -1 + 1200 + Dispenser 2 + + + 6f8dfd8d-ed50-4923-b908-e0b5bc5d6ae5 + 154 + 131.72123893805315 + 474 + 410.37610619469024 + 0 + A499E5E0-A812-4032-8F96-B38C6762C4BD + -14774017 + 1 + 1942 + 0 + 100 + true + + + 604e031b-89c3-4c9d-90ef-7b861a77e5e0 + 243 + 595.80088495575228 + 497 + 189.48230088495575 + 0 + 8B1FCBC3-FEEA-4F87-B56F-CE5D28B7ACA4 + -1 + + + c414ae0e-323a-48c1-9165-2c05cc4234c6 + 1291 + 584.65486725663732 + 200 + 171.24336283185835 + 0 + 0bd10306-2944-4cda-bc59-0264da2883d2 + -1 + + + + + 4 + \ No newline at end of file -- cgit v1.3.1