aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Stubs Collection
diff options
context:
space:
mode:
authorAvi Levkovich <avi@twine-s.com>2020-08-25 10:08:01 +0300
committerAvi Levkovich <avi@twine-s.com>2020-08-25 10:08:01 +0300
commit338edba081dba2a2aefb634811be1cc84ec93d64 (patch)
tree0021538796c254a8eab8527e8461a2e831e68c1c /Software/Stubs Collection
parent49ddda1cc22d6cbb72f499b37e5db32c95252dfa (diff)
downloadTango-338edba081dba2a2aefb634811be1cc84ec93d64.tar.gz
Tango-338edba081dba2a2aefb634811be1cc84ec93d64.zip
merge
Diffstat (limited to 'Software/Stubs Collection')
-rw-r--r--Software/Stubs Collection/Procedures/EmbeddedParametersBuild.pproj2
-rw-r--r--Software/Stubs Collection/Procedures/EmbeddedParametersBuild_w_file.pproj1
-rw-r--r--Software/Stubs Collection/Procedures/Loading arm calibration.pproj1
-rw-r--r--Software/Stubs Collection/Procedures/Mid tank calibration.pproj1
-rw-r--r--Software/Stubs Collection/Procedures/WHS Loop Disable.pproj2
-rw-r--r--Software/Stubs Collection/stubs/ERRFILE.TXT0
-rw-r--r--Software/Stubs Collection/stubs/Main card Watchdog test.cs24
-rw-r--r--Software/Stubs Collection/stubs/embeddedparametersbuild.cs193
-rw-r--r--Software/Stubs Collection/stubs/embeddedparametersbuild_w_cleaning.cs6
-rw-r--r--Software/Stubs Collection/stubs/embeddedparametersbuildand load.cs178
-rw-r--r--Software/Stubs Collection/stubs/technician view files/ARC head techboard.tpf2722
-rw-r--r--Software/Stubs Collection/stubs/update thread PID during run.cs57
12 files changed, 2811 insertions, 376 deletions
diff --git a/Software/Stubs Collection/Procedures/EmbeddedParametersBuild.pproj b/Software/Stubs Collection/Procedures/EmbeddedParametersBuild.pproj
index 848c78a65..cb927de17 100644
--- a/Software/Stubs Collection/Procedures/EmbeddedParametersBuild.pproj
+++ b/Software/Stubs Collection/Procedures/EmbeddedParametersBuild.pproj
@@ -1 +1 @@
-{"$id":"1","Inputs":{"$id":"2","$values":[{"$id":"3","Type":"Selection","SelectionInputs":{"$id":"4","$values":[{"$id":"5","Name":"Enable Tamper Check","Value":"1.0"},{"$id":"6","Name":"Disable Tamper Check","Value":"0.0"}]},"DisplayName":"Check Tamper / Fan alarms","Description":"Check Tamper / Fan alarms (1 -true, 0 - false)","Key":"CheckTampers","Value":"1.0"},{"$id":"7","Type":"Default","SelectionInputs":{"$id":"8","$values":[]},"DisplayName":"Set advanced parameters","Description":"Set advanced parameters","Key":"AdvancedParameters","Value":"false"},{"$id":"9","Type":"Default","SelectionInputs":{"$id":"10","$values":[]},"DisplayName":"Set Cleaning Values","Description":"Set to 1 if you want to update the cleaning values","Key":"SetCleaningValues","Value":"false"}]},"Dialogs":{"$id":"11","$values":[]},"ID":"2bd29884-5eb9-4d27-be4e-6cfa31dc9f66","Name":"EmbeddedParametersBuild","Description":"This procedure lets the FSE to define values for cleaning, tamper alarms, initial heating, WCF value and automatic dispenser filling.","ApartmentState":"MTA","ReferenceAssemblies":{"$id":"12","$values":[{"$id":"13","File":"C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\mscorlib.dll","HintType":"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"},{"$id":"14","File":"C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC_MSIL\\System.Core\\v4.0_4.0.0.0__b77a5c561934e089\\System.Core.dll","HintType":"System.Linq.Enumerable, System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"},{"$id":"15","File":"C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC_MSIL\\System.Windows.Forms\\v4.0_4.0.0.0__b77a5c561934e089\\System.Windows.Forms.dll","HintType":"System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"},{"$id":"16","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.FSE.Procedures.dll","HintType":"Tango.FSE.Procedures.ProcedureProject, Tango.FSE.Procedures, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"},{"$id":"17","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.FSE.Common.dll","HintType":"Tango.FSE.Common.Diagnostics.IDiagnosticsProvider, Tango.FSE.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"},{"$id":"18","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.BL.dll","HintType":"Tango.BL.Enumerations.TechMonitors, Tango.BL, Version=2.0.36.1608, Culture=neutral, PublicKeyToken=null"},{"$id":"19","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.PMR.dll","HintType":"Tango.PMR.Common.MessageType, Tango.PMR, Version=2.0.40.1608, Culture=neutral, PublicKeyToken=null"},{"$id":"20","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.Transport.dll","HintType":"Tango.Transport.ITransporter, Tango.Transport, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"},{"$id":"21","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.Integration.dll","HintType":"Tango.Integration.Operation.IMachineOperator, Tango.Integration, Version=2.0.31.1608, Culture=neutral, PublicKeyToken=null"},{"$id":"22","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Google.Protobuf.dll","HintType":"Google.Protobuf.IMessage, Google.Protobuf, Version=3.4.1.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604"},{"$id":"23","File":"C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC_MSIL\\System.Drawing\\v4.0_4.0.0.0__b03f5f7f11d50a3a\\System.Drawing.dll","HintType":"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"}]},"Scripts":{"$id":"24","$values":[{"$id":"25","Name":"Program.csx","IsEntryPoint":true,"Code":"using System;\r\nusing System.Collections.Generic;\r\nusing System.Collections.ObjectModel;\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Threading;\r\nusing System.Threading.Tasks;\r\nusing System.IO;\r\nusing Google.Protobuf;\r\nusing Tango.BL.Enumerations;\r\nusing Tango.PMR.Stubs;\r\nusing Tango.PMR.Diagnostics;\r\nusing Tango.FSE.Common.Diagnostics;\r\nusing Tango.PMR.EmbeddedParameters;\r\nusing Tango.PMR.IO;\r\nusing Tango.FSE.Procedures;\r\n\r\n\r\npublic class Cleaning\r\n{\r\n\t[Description(\"Actuator Going up time\")]\r\n\tpublic int Tup;\r\n\t[Description(\"Actuator Wait up time\")]\r\n\tpublic int Tdelay1;\r\n\t[Description(\"Actuator Wait Down time\")]\r\n\tpublic int Tdelay2;\r\n}\r\npublic class Advanced\r\n{\r\n\t[Description(\"Automatic heating on machine StartUp\")]\r\n\tpublic bool InitialHeating;\r\n\t[Description(\"Waste pressure buildup factor\")]\r\n\tpublic int WFCF;\r\n\t[Description(\"Auto fill mode on/off\")]\r\n\tpublic bool Autofill;\r\n}\r\n\r\npublic class Program\r\n{\r\n public void OnExecute(IProcedureContext context)\r\n {\r\n\r\n context.AddResult(ResultType.Passed, \"My Value Name\", \"Test for this value has passed.\");\r\n\t\tConfigurationParameters configurationParameters = new ConfigurationParameters();\r\n\r\n\t\tbool AdvancedParams = context.GetInput<bool>(\"AdvancedParameters\");\r\n\t\tAdvanced Advancedparam = new Advanced();\r\n\t\tAdvancedparam.InitialHeating = true;\r\n\t\tAdvancedparam.WFCF = 40;\r\n\t\tAdvancedparam.Autofill = true;\r\n\t\tif (AdvancedParams == true)\r\n \tAdvancedparam =\tcontext.RequestUserInputFor<Advanced>(Advancedparam,\"Advanced parameters input Required\",\"Please fill in the form\");\r\n\r\n\t\tconfigurationParameters.BreakSensorLimit = 10;\r\n\r\n\t\t//how many samples to collect in diagnostics before sending\r\n\t\tconfigurationParameters.DiagnosticCollectionLimit = 3;\r\n\r\n\t\t//how many consecutive readout before declaring DC over/underheat alarm\r\n\t\tconfigurationParameters.OverHeatCountLimit = 3;\r\n\t\tconfigurationParameters.UnderHeatCountLimit = 3;\r\n\r\n\t\t// time of motor activity before opening the valve or after closing the valve, in milliseconds\r\n\t\tconfigurationParameters.CloseValveTimeout = 20;\r\n\t\tconfigurationParameters.OpenValveTimeout = 20;\r\n\r\n\t\t//backlash after filling - target pressure, timoeout, time staps (speed will be added in general parameters)\r\n\t\tconfigurationParameters.InitialDispenserPressure = 0.25; \r\n\t\tconfigurationParameters.InitialDispenserTimeout = 60000; //20 seconds\r\n\t\tconfigurationParameters.InitialDispenserTimeLag = 100;\r\n\r\n\t\t//job prepare - build pressure in dispensers - target pressure, timoeout, time staps, speed\r\n\t\tconfigurationParameters.DispenserBuildPressureSpeed = 950; //no more than 1000\r\n\t\tconfigurationParameters.DispenserBuildPressureLimit = 0.85; \r\n\t\tconfigurationParameters.DispenserBuildPressureTimeout = 180000;\r\n\t\tconfigurationParameters.DispenserBuildPressureLag = 100;\r\n\r\n\t\t//temperature band 1000 = 100% - thresholds for job start around target temprature - AC\r\n\t\tconfigurationParameters.ACHeatersLowerOperationLimit = 995;\r\n\t\tconfigurationParameters.ACHeatersUpperOperationLimit = 1005;\r\n\r\n\t\t//temperature band 1000 = 100% - thresholds for job start around target temprature - DC\r\n\t\tconfigurationParameters.DCHeatersLowerOperationLimit = 978;\r\n\t\tconfigurationParameters.DCHeatersUpperOperationLimit = 1005;\r\n\r\n\t\t// mid tank reading offset to add to the readout (OBSOLETE!)\r\n\t\tconfigurationParameters.MidTankPressureCorrection = 0.0;\r\n\r\n\t\t//waste factor for intersegment pressure building\r\n\t\tconfigurationParameters.DispenserPresegmentWFCF = Advancedparam.WFCF;\r\n\r\n\t\t//how much time to start the WFCF process (pressure buildup) before segment start\r\n\t\tconfigurationParameters.IDSPreSegmentWFCFTimeBeforeSegment = 12000;\r\n\r\n\t\t//flag: start heaters according to saved process parameters upon init?\r\n\t\tconfigurationParameters.StartHeatingOnInitSequence = Advancedparam.InitialHeating;\r\n\r\n\t\t// current test for the heaters - alarm thresholds\r\n\t\tconfigurationParameters.CurrentAlarmLowLimit = 0.78;\r\n\t\tconfigurationParameters.CurrentAlarmHighLimit = 1.07;\r\n\r\n\t\t//currently not in use\r\n\t\tconfigurationParameters.IDSSegmentRefillTimeout = 5000;\r\n\t\tconfigurationParameters.IDSPreSegmentBuildupTime = 5000;\r\n\t\t//cleaning!!!!!!!!!!\r\n\t\tconfigurationParameters.IDSCleaningSpeed = 800;\r\n\t\tconfigurationParameters.IDSCleaningStopBeforeSegmentTime = 10000; //end of presegemnt\r\n\t\tconfigurationParameters.IDSCleaningStartSprayPreSegmentTime =2000; //beginning of presegment\r\n\r\n\t\tbool SetCleaning = context.GetInput<bool>(\"SetCleaningValues\");\r\n Cleaning Clean = new Cleaning();\r\n\t\tClean.Tup = 10;\r\n\t\tClean.Tdelay1 = 98;\r\n\t\tClean.Tdelay2 = 198;//300 milli up, stay 1 sec, stay down 2 sec\r\n\t\tif (SetCleaning == true)\r\n \tClean =\tcontext.RequestUserInputFor<Cleaning>(Clean,\"Cleaning Input Required\",\"Please fill in the form\");\r\n\r\n\t\t// Tup = LeftRockerSpeed/100;\r\n\t\t// Tdelay1 = LeftRockerSpeed%100;\r\n\t\t// Tdelay2 = RightRockerSpeed;\r\n\t\tint LeftRockerSpeed = Clean.Tup*100+Clean.Tdelay1;\r\n\t\tint RightRockerSpeed = Clean.Tdelay2;\r\n\r\n\t\tconfigurationParameters.IDSLeftCleaningMotorSpeed = LeftRockerSpeed;\r\n\t\tconfigurationParameters.IDSRightCleaningMotorSpeed = RightRockerSpeed;\r\n\r\n\t\tconfigurationParameters.SwitchToIdleTimeinSeconds = 3600;\r\n\t\tconfigurationParameters.IdleDrierTemperature = 80;\r\n\t\tconfigurationParameters.IdleHeadTemperature = 80;\r\n\t\tconfigurationParameters.IdleMixerTemperature = 0;\r\n\t\tconfigurationParameters.PowerOffTemperatureLimit = 60;\r\n\r\n\t\t//general parameters, ORDER MUST BE PRESERVED!!!!\r\n\t\t//check the dispensers hard limit alarms\r\n\t\t/*1*/\r\n\t\tDouble checkHardLimitAlarms = new Double();\r\n\t\tcheckHardLimitAlarms = 1.0;\r\n\t\tconfigurationParameters.GeneralParameters.Add(checkHardLimitAlarms);\r\n\r\n\t\t/*2*/\r\n\t\tDouble checkCurrentAlarms = new Double();\r\n\t\tcheckCurrentAlarms = 0.0;\r\n\t\tconfigurationParameters.GeneralParameters.Add(checkCurrentAlarms);\r\n\t\t//check the tamper alarms\r\n\r\n\t\t/*3*/\r\n\t\tDouble checkTamperAlarms = new Double();\r\n\t\tcheckTamperAlarms = context.GetInput<double>(\"CheckTampers\");\r\n\t\tconfigurationParameters.GeneralParameters.Add(checkTamperAlarms);\r\n\r\n\t\t/*4*/\r\n\t\tDouble checkMotorAlarms = new Double();\r\n\t\tcheckMotorAlarms = 1.0;\r\n\t\tconfigurationParameters.GeneralParameters.Add(checkMotorAlarms);\r\n\r\n\t\t/*5*/\r\n\t\tDouble WinderBackToBaseTime = new Double();\r\n\t\tWinderBackToBaseTime = 820.0;\r\n\t\tconfigurationParameters.GeneralParameters.Add(WinderBackToBaseTime);\r\n\t\t/*6*/\r\n\t\tDouble DispenserInitialPressureSpeed = new Double();\r\n\t\tDispenserInitialPressureSpeed = 1050.0;\r\n\t\tconfigurationParameters.GeneralParameters.Add(DispenserInitialPressureSpeed);\r\n\r\n\t\t/*7*/\r\n\t\tDouble SetDiagnosticMode = new Double();\r\n\t\tSetDiagnosticMode = 3.0;\t\t\r\n\t\tconfigurationParameters.GeneralParameters.Add(SetDiagnosticMode);\r\n\r\n\t\t/*8*/\t\t\r\n\t\tDouble SetAutoFill = new Double();\r\n\t\tSetAutoFill = 3.0;\t\t\r\n\t\tif (Advancedparam.Autofill == false)\r\n\t\t\tSetAutoFill = 0.0;\r\n\t\tconfigurationParameters.GeneralParameters.Add(SetAutoFill);\r\n\r\n\t\t//configurationParameters\t= context.RequestUserInputFor<ConfigurationParameters>(configurationParameters,\"ConfigurationParameters Input Required\",\"Please fill in the form\");\r\n\t\t\r\n\t\tFile.WriteAllBytes(\"C:/temp/EmbParam.cfg\",configurationParameters.ToBytes());\r\n\r\n\t\tbyte[] fileBytes = File.ReadAllBytes(\"C:/temp/EmbParam.cfg\");\r\n\r\n\r\n\t\tvar config = ConfigurationParameters.Parser.ParseFrom(fileBytes);\r\n\r\n\t\tcontext.Write( config);\r\n\t\tThread.Sleep(1000);\r\n\r\n\t\r\n\t\tcontext.Write(\"\\n\\n Deleting old file\");\r\n\r\n\t\tDeleteRequest deleteRequest = new DeleteRequest();\r\n\t\tdeleteRequest.Path = \"SYSINFO//EmbParam.cfg\";\r\n\t\tdeleteRequest.Attribute = Tango.PMR.IO.FileAttribute.Unspecified;\r\n\t\tDeleteResponse response5 = context.Send<DeleteResponse>(deleteRequest);\r\n\r\n\r\n\t\tThread.Sleep(1000);\r\n\t\tcontext.Write(\"\\n\\n Loading new file file\");\r\n\r\n\t\tFileUploadRequest fileUploadRequest = new FileUploadRequest();\r\n\t\tfileUploadRequest.Path = \"SYSINFO//EmbParam.cfg\";\r\n\t\tfileUploadRequest.Length = (int)fileBytes.Length;\r\n\t\tFileUploadResponse response2 = context.Send<FileUploadResponse>(fileUploadRequest);\r\n\t\tThread.Sleep(1000);\r\n\t\tlong chunk_size = response2.MaxChunkLength;\r\n\r\n\t\tFileStream fs = new FileStream(\"C:/temp/EmbParam.cfg\",FileMode.Open);\r\n\r\n\t\twhile (fs.Position < fs.Length)\r\n\t\t{\r\n\t\t\t\tcontext.Write(\"Position \"+ fs.Position+ \" Length \"+ fs.Length +\"\\n\\n\");\r\n\t\t\t\tFileChunkUploadRequest fileChunkUploadRequest = new FileChunkUploadRequest();\r\n\t\t\t\tfileChunkUploadRequest.UploadID = response2.UploadID;\r\n\t\t\t\tbyte[] chunk = new byte[Math.Min(chunk_size,fs.Length - fs.Position)];\r\n\t\t\t\tfs.Read(chunk,0,chunk.Length);\r\n\t\t\t\tfileChunkUploadRequest.Buffer = ByteString.CopyFrom(chunk);\t\r\n\t\t\t\tvar response3 = context.Send<FileChunkUploadResponse>(fileChunkUploadRequest);\r\n\t\t\t\tThread.Sleep(2000);\r\n\r\n\t\t}\r\n\r\n\t\t// activating the new file\r\n\t\tProgressRequest progressRequest = new ProgressRequest();\r\n\t\tprogressRequest.Amount = 0xCD;\r\n\t\tprogressRequest.Delay = 0xCD;\r\n\t\tvar response1 = context.Send<ProgressResponse>(progressRequest);\r\n\r\n }\r\n}"},{"$id":"26","Name":"Service.csx","IsEntryPoint":false,"Code":"using System;\r\nusing System.Collections.Generic;\r\nusing System.Collections.ObjectModel;\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Threading;\r\nusing System.Threading.Tasks;\r\nusing Google.Protobuf;\r\nusing Tango.BL.Enumerations;\r\nusing Tango.PMR.Stubs;\r\nusing Tango.PMR.Diagnostics;\r\nusing Tango.FSE.Common.Diagnostics;\r\nusing Tango.FSE.Procedures;\r\n\r\npublic class Service\r\n{\r\n public double Calc(double a, double b)\r\n {\r\n return a + b;\r\n }\r\n}"}]}} \ No newline at end of file
+{"$id":"1","Name":"EmbeddedParametersBuild1","Description":"This procedure lets the FSE to define values for cleaning, tamper alarms, initial heating, WCF value and automatic dispenser filling.","Scripts":{"$id":"2","$values":[{"$id":"3","Code":"using System;\r\nusing System.Collections.Generic;\r\nusing System.Collections.ObjectModel;\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Threading;\r\nusing System.Threading.Tasks;\r\nusing System.IO;\r\nusing Google.Protobuf;\r\nusing Tango.BL.Enumerations;\r\nusing Tango.PMR.Stubs;\r\nusing Tango.PMR.Diagnostics;\r\nusing Tango.FSE.Common.Diagnostics;\r\nusing Tango.PMR.EmbeddedParameters;\r\nusing Tango.PMR.IO;\r\nusing Tango.FSE.Procedures;\r\n\r\n\r\npublic class Cleaning\r\n{\r\n\t[Description(\"Actuator Going up time\")]\r\n\tpublic int Tup;\r\n\t[Description(\"Actuator Wait up time\")]\r\n\tpublic int Tdelay1;\r\n\t[Description(\"Actuator Wait Down time\")]\r\n\tpublic int Tdelay2;\r\n}\r\npublic class Advanced\r\n{\r\n\t[Description(\"Automatic heating on machine StartUp\")]\r\n\tpublic bool InitialHeating;\r\n\t[Description(\"Waste pressure buildup factor\")]\r\n\tpublic int WFCF;\r\n\t[Description(\"Auto fill mode on/off\")]\r\n\tpublic bool Autofill;\r\n}\r\n\r\npublic class Program\r\n{\r\n public void OnExecute(IProcedureContext context)\r\n {\r\n\r\n context.AddResult(ResultType.Passed, \"My Value Name\", \"Test for this value has passed.\");\r\n\t\tConfigurationParameters configurationParameters = new ConfigurationParameters();\r\n\r\n\t\tbool AdvancedParams = context.GetInput<bool>(\"AdvancedParameters\");\r\n\t\tAdvanced Advancedparam = new Advanced();\r\n\t\tAdvancedparam.InitialHeating = true;\r\n\t\tAdvancedparam.WFCF = 40;\r\n\t\tAdvancedparam.Autofill = true;\r\n\t\tif (AdvancedParams == true)\r\n \tAdvancedparam =\tcontext.RequestUserInputFor<Advanced>(Advancedparam,\"Advanced parameters input Required\",\"Please fill in the form\");\r\n\r\n\t\tconfigurationParameters.BreakSensorLimit = 10;\r\n\r\n\t\t//how many samples to collect in diagnostics before sending\r\n\t\tconfigurationParameters.DiagnosticCollectionLimit = 3;\r\n\r\n\t\t//how many consecutive readout before declaring DC over/underheat alarm\r\n\t\tconfigurationParameters.OverHeatCountLimit = 3;\r\n\t\tconfigurationParameters.UnderHeatCountLimit = 3;\r\n\r\n\t\t// time of motor activity before opening the valve or after closing the valve, in milliseconds\r\n\t\tconfigurationParameters.CloseValveTimeout = 20;\r\n\t\tconfigurationParameters.OpenValveTimeout = 20;\r\n\r\n\t\t//backlash after filling - target pressure, timoeout, time staps (speed will be added in general parameters)\r\n\t\tconfigurationParameters.InitialDispenserPressure = 0.25; \r\n\t\tconfigurationParameters.InitialDispenserTimeout = 60000; //20 seconds\r\n\t\tconfigurationParameters.InitialDispenserTimeLag = 100;\r\n\r\n\t\t//job prepare - build pressure in dispensers - target pressure, timoeout, time staps, speed\r\n\t\tconfigurationParameters.DispenserBuildPressureSpeed = 950; //no more than 1000\r\n\t\tconfigurationParameters.DispenserBuildPressureLimit = 0.85; \r\n\t\tconfigurationParameters.DispenserBuildPressureTimeout = 180000;\r\n\t\tconfigurationParameters.DispenserBuildPressureLag = 100;\r\n\r\n\t\t//temperature band 1000 = 100% - thresholds for job start around target temprature - AC\r\n\t\tconfigurationParameters.ACHeatersLowerOperationLimit = 995;\r\n\t\tconfigurationParameters.ACHeatersUpperOperationLimit = 1005;\r\n\r\n\t\t//temperature band 1000 = 100% - thresholds for job start around target temprature - DC\r\n\t\tconfigurationParameters.DCHeatersLowerOperationLimit = 978;\r\n\t\tconfigurationParameters.DCHeatersUpperOperationLimit = 1005;\r\n\r\n\t\t// mid tank reading offset to add to the readout (OBSOLETE!)\r\n\t\tconfigurationParameters.MidTankPressureCorrection = 0.0;\r\n\r\n\t\t//waste factor for intersegment pressure building\r\n\t\tconfigurationParameters.DispenserPresegmentWFCF = Advancedparam.WFCF;\r\n\r\n\t\t//how much time to start the WFCF process (pressure buildup) before segment start\r\n\t\tconfigurationParameters.IDSPreSegmentWFCFTimeBeforeSegment = 12000;\r\n\r\n\t\t//flag: start heaters according to saved process parameters upon init?\r\n\t\tconfigurationParameters.StartHeatingOnInitSequence = Advancedparam.InitialHeating;\r\n\r\n\t\t// current test for the heaters - alarm thresholds\r\n\t\tconfigurationParameters.CurrentAlarmLowLimit = 0.78;\r\n\t\tconfigurationParameters.CurrentAlarmHighLimit = 1.07;\r\n\r\n\t\t//currently not in use\r\n\t\tconfigurationParameters.IDSSegmentRefillTimeout = 5000;\r\n\t\tconfigurationParameters.IDSPreSegmentBuildupTime = 5000;\r\n\t\t//cleaning!!!!!!!!!!\r\n\t\tconfigurationParameters.IDSCleaningSpeed = 800;\r\n\t\tconfigurationParameters.IDSCleaningStopBeforeSegmentTime = 10000; //end of presegemnt\r\n\t\tconfigurationParameters.IDSCleaningStartSprayPreSegmentTime =2000; //beginning of presegment\r\n\r\n\t\tbool SetCleaning = context.GetInput<bool>(\"SetCleaningValues\");\r\n Cleaning Clean = new Cleaning();\r\n\t\tClean.Tup = 10;\r\n\t\tClean.Tdelay1 = 98;\r\n\t\tClean.Tdelay2 = 198;//300 milli up, stay 1 sec, stay down 2 sec\r\n\t\tif (SetCleaning == true)\r\n \tClean =\tcontext.RequestUserInputFor<Cleaning>(Clean,\"Cleaning Input Required\",\"Please fill in the form\");\r\n\r\n\t\t// Tup = LeftRockerSpeed/100;\r\n\t\t// Tdelay1 = LeftRockerSpeed%100;\r\n\t\t// Tdelay2 = RightRockerSpeed;\r\n\t\tint LeftRockerSpeed = Clean.Tup*100+Clean.Tdelay1;\r\n\t\tint RightRockerSpeed = Clean.Tdelay2;\r\n\r\n\t\tconfigurationParameters.IDSLeftCleaningMotorSpeed = LeftRockerSpeed;\r\n\t\tconfigurationParameters.IDSRightCleaningMotorSpeed = RightRockerSpeed;\r\n\r\n\t\tconfigurationParameters.SwitchToIdleTimeinSeconds = 3600;\r\n\t\tconfigurationParameters.IdleDrierTemperature = 80;\r\n\t\tconfigurationParameters.IdleHeadTemperature = 80;\r\n\t\tconfigurationParameters.IdleMixerTemperature = 0;\r\n\t\tconfigurationParameters.PowerOffTemperatureLimit = 60;\r\n\r\n\t\t//general parameters, ORDER MUST BE PRESERVED!!!!\r\n\t\t//check the dispensers hard limit alarms\r\n\t\t/*1*/\r\n\t\tDouble checkHardLimitAlarms = new Double();\r\n\t\tcheckHardLimitAlarms = 1.0;\r\n\t\tconfigurationParameters.GeneralParameters.Add(checkHardLimitAlarms);\r\n\r\n\t\t/*2*/\r\n\t\tDouble checkCurrentAlarms = new Double();\r\n\t\tcheckCurrentAlarms = 0.0;\r\n\t\tconfigurationParameters.GeneralParameters.Add(checkCurrentAlarms);\r\n\t\t//check the tamper alarms\r\n\r\n\t\t/*3*/\r\n\t\tDouble checkTamperAlarms = new Double();\r\n\t\tcheckTamperAlarms = context.GetInput<double>(\"CheckTampers\");\r\n\t\tconfigurationParameters.GeneralParameters.Add(checkTamperAlarms);\r\n\r\n\t\t/*4*/\r\n\t\tDouble checkMotorAlarms = new Double();\r\n\t\tcheckMotorAlarms = 1.0;\r\n\t\tconfigurationParameters.GeneralParameters.Add(checkMotorAlarms);\r\n\r\n\t\t/*5*/\r\n\t\tDouble WinderBackToBaseTime = new Double();\r\n\t\tWinderBackToBaseTime = 820.0;\r\n\t\tconfigurationParameters.GeneralParameters.Add(WinderBackToBaseTime);\r\n\t\t/*6*/\r\n\t\tDouble DispenserInitialPressureSpeed = new Double();\r\n\t\tDispenserInitialPressureSpeed = 1050.0;\r\n\t\tconfigurationParameters.GeneralParameters.Add(DispenserInitialPressureSpeed);\r\n\r\n\t\t/*7*/\r\n\t\tDouble SetDiagnosticMode = new Double();\r\n\t\tSetDiagnosticMode = 3.0;\t\t\r\n\t\tconfigurationParameters.GeneralParameters.Add(SetDiagnosticMode);\r\n\r\n\t\t/*8*/\t\t\r\n\t\tDouble SetAutoFill = new Double();\r\n\t\tSetAutoFill = 3.0;\t\t\r\n\t\tif (Advancedparam.Autofill == false)\r\n\t\t\tSetAutoFill = 0.0;\r\n\t\tconfigurationParameters.GeneralParameters.Add(SetAutoFill);\r\n\r\n\t\t//configurationParameters\t= context.RequestUserInputFor<ConfigurationParameters>(configurationParameters,\"ConfigurationParameters Input Required\",\"Please fill in the form\");\r\n\t\t/*Directory.CreateDirectory (\"C:/Temp\");\r\n\t\tFile.WriteAllBytes(\"C:/temp/EmbParam.cfg\",configurationParameters.ToBytes());\r\n\r\n\t\tbyte[] fileBytes1 = File.ReadAllBytes(\"C:/temp/EmbParam.cfg\");*/\r\n\t\tbyte[] fileBytes = configurationParameters.ToBytes();\r\n\r\n\r\n\t\tvar config = ConfigurationParameters.Parser.ParseFrom(fileBytes);\r\n\r\n\t\tcontext.Write( config);\r\n\t\tThread.Sleep(1000);\r\n\r\n\t\r\n\t\tcontext.Write(\"\\n\\n Deleting old file\");\r\n\r\n\t\tDeleteRequest deleteRequest = new DeleteRequest();\r\n\t\tdeleteRequest.Path = \"SYSINFO//EmbParam.cfg\";\r\n\t\tdeleteRequest.Attribute = Tango.PMR.IO.FileAttribute.Unspecified;\r\n\t\tDeleteResponse response5 = context.Send<DeleteResponse>(deleteRequest);\r\n\r\n\r\n\t\tThread.Sleep(1000);\r\n\t\tcontext.Write(\"\\n\\n Loading new file file\");\r\n\r\n\t\tFileUploadRequest fileUploadRequest = new FileUploadRequest();\r\n\t\tfileUploadRequest.Path = \"SYSINFO//EmbParam.cfg\";\r\n\t\tfileUploadRequest.Length = (int)fileBytes.Length;\r\n\t\tFileUploadResponse response2 = context.Send<FileUploadResponse>(fileUploadRequest);\r\n\t\tThread.Sleep(1000);\r\n\t\tlong chunk_size = response2.MaxChunkLength;\r\n\r\n\t\tcontext.Write(\"Chunk size \"+ chunk_size + \" file size \"+ fileBytes.Length +\"\\n\\n\");\r\n\t\tif (chunk_size < fileBytes.Length)\r\n\t\t{\r\n\t\t\tcontext.AddResult(ResultType.Failed, \"Chunk size too small\", chunk_size);\r\n\t\t}\r\n\t\telse\r\n\t\t{\r\n\t\t\tFileChunkUploadRequest fileChunkUploadRequest = new FileChunkUploadRequest();\r\n\t\t\tfileChunkUploadRequest.UploadID = response2.UploadID;\r\n\t\t\tfileChunkUploadRequest.Buffer = ByteString.CopyFrom(fileBytes);\t\r\n\t\t\tvar response3 = context.Send<FileChunkUploadResponse>(fileChunkUploadRequest);\r\n\t\t\r\n\t\t\t//if (response3.\r\n\r\n\t\t\t// activating the new file\r\n\t\t\tProgressRequest progressRequest = new ProgressRequest();\r\n\t\t\tprogressRequest.Amount = 0xCD;\r\n\t\t\tprogressRequest.Delay = 0xCD;\r\n\t\t\tvar response1 = context.Send<ProgressResponse>(progressRequest);\r\n\t\t\tcontext.AddResult(ResultType.Passed, \"parameters loaded\", chunk_size);\r\n\t\t}\r\n\r\n }\r\n}","Name":"Program.csx","IsEntryPoint":true},{"$id":"4","Code":"using System;\r\nusing System.Collections.Generic;\r\nusing System.Collections.ObjectModel;\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Threading;\r\nusing System.Threading.Tasks;\r\nusing Google.Protobuf;\r\nusing Tango.BL.Enumerations;\r\nusing Tango.PMR.Stubs;\r\nusing Tango.PMR.Diagnostics;\r\nusing Tango.FSE.Common.Diagnostics;\r\nusing Tango.FSE.Procedures;\r\n\r\npublic class Service\r\n{\r\n public double Calc(double a, double b)\r\n {\r\n return a + b;\r\n }\r\n}","Name":"Service.csx","IsEntryPoint":false}]},"Inputs":{"$id":"5","$values":[{"$id":"6","Type":"Selection","SelectionInputs":{"$id":"7","$values":[{"$id":"8","Name":"Enable Tamper Check","Value":"1.0"},{"$id":"9","Name":"Disable Tamper Check","Value":"0.0"}]},"DisplayName":"Check Tamper / Fan alarms","Description":"Check Tamper / Fan alarms (1 -true, 0 - false)","Key":"CheckTampers","Value":"1.0"},{"$id":"10","Type":"Default","SelectionInputs":{"$id":"11","$values":[]},"DisplayName":"Set advanced parameters","Description":"Set advanced parameters","Key":"AdvancedParameters","Value":"false"},{"$id":"12","Type":"Default","SelectionInputs":{"$id":"13","$values":[]},"DisplayName":"Set Cleaning Values","Description":"Set to 1 if you want to update the cleaning values","Key":"SetCleaningValues","Value":"false"}]},"Variables":{"$id":"14","$values":[]},"ReferenceAssemblies":{"$id":"15","$values":[{"$id":"16","File":"C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\mscorlib.dll","HintType":"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"},{"$id":"17","File":"C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC_MSIL\\System.Core\\v4.0_4.0.0.0__b77a5c561934e089\\System.Core.dll","HintType":"System.Linq.Enumerable, System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"},{"$id":"18","File":"C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC_MSIL\\System.Windows.Forms\\v4.0_4.0.0.0__b77a5c561934e089\\System.Windows.Forms.dll","HintType":"System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"},{"$id":"19","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.FSE.Procedures.dll","HintType":"Tango.FSE.Procedures.ProcedureProject, Tango.FSE.Procedures, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"},{"$id":"20","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.FSE.Common.dll","HintType":"Tango.FSE.Common.Diagnostics.IDiagnosticsProvider, Tango.FSE.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"},{"$id":"21","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.BL.dll","HintType":"Tango.BL.Enumerations.TechMonitors, Tango.BL, Version=2.0.36.1608, Culture=neutral, PublicKeyToken=null"},{"$id":"22","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.PMR.dll","HintType":"Tango.PMR.Common.MessageType, Tango.PMR, Version=2.0.40.1608, Culture=neutral, PublicKeyToken=null"},{"$id":"23","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.Transport.dll","HintType":"Tango.Transport.ITransporter, Tango.Transport, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"},{"$id":"24","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.Integration.dll","HintType":"Tango.Integration.Operation.IMachineOperator, Tango.Integration, Version=2.0.31.1608, Culture=neutral, PublicKeyToken=null"},{"$id":"25","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Google.Protobuf.dll","HintType":"Google.Protobuf.IMessage, Google.Protobuf, Version=3.4.1.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604"},{"$id":"26","File":"C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC_MSIL\\System.Drawing\\v4.0_4.0.0.0__b03f5f7f11d50a3a\\System.Drawing.dll","HintType":"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"}]},"Resources":{"$id":"27","$values":[]},"Dialogs":{"$id":"28","$values":[]},"ID":"2bd29884-5eb9-4d27-be4e-6cfa31dc9f66","ApartmentState":"MTA"} \ No newline at end of file
diff --git a/Software/Stubs Collection/Procedures/EmbeddedParametersBuild_w_file.pproj b/Software/Stubs Collection/Procedures/EmbeddedParametersBuild_w_file.pproj
new file mode 100644
index 000000000..643a26ce3
--- /dev/null
+++ b/Software/Stubs Collection/Procedures/EmbeddedParametersBuild_w_file.pproj
@@ -0,0 +1 @@
+{"$id":"1","Name":"EmbeddedParametersBuild","Description":"This procedure lets the FSE to define values for cleaning, tamper alarms, initial heating, WCF value and automatic dispenser filling.","Scripts":{"$id":"2","$values":[{"$id":"3","Code":"using System;\r\nusing System.Collections.Generic;\r\nusing System.Collections.ObjectModel;\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Threading;\r\nusing System.Threading.Tasks;\r\nusing System.IO;\r\nusing Google.Protobuf;\r\nusing Tango.BL.Enumerations;\r\nusing Tango.PMR.Stubs;\r\nusing Tango.PMR.Diagnostics;\r\nusing Tango.FSE.Common.Diagnostics;\r\nusing Tango.PMR.EmbeddedParameters;\r\nusing Tango.PMR.IO;\r\nusing Tango.FSE.Procedures;\r\n\r\n\r\npublic class Cleaning\r\n{\r\n\t[Description(\"Actuator Going up time\")]\r\n\tpublic int Tup;\r\n\t[Description(\"Actuator Wait up time\")]\r\n\tpublic int Tdelay1;\r\n\t[Description(\"Actuator Wait Down time\")]\r\n\tpublic int Tdelay2;\r\n}\r\npublic class Advanced\r\n{\r\n\t[Description(\"Automatic heating on machine StartUp\")]\r\n\tpublic bool InitialHeating;\r\n\t[Description(\"Waste pressure buildup factor\")]\r\n\tpublic int WFCF;\r\n\t[Description(\"Auto fill mode on/off\")]\r\n\tpublic bool Autofill;\r\n}\r\n\r\npublic class Program\r\n{\r\n public void OnExecute(IProcedureContext context)\r\n {\r\n\r\n context.AddResult(ResultType.Passed, \"My Value Name\", \"Test for this value has passed.\");\r\n\t\tConfigurationParameters configurationParameters = new ConfigurationParameters();\r\n\r\n\t\tbool AdvancedParams = context.GetInput<bool>(\"AdvancedParameters\");\r\n\t\tAdvanced Advancedparam = new Advanced();\r\n\t\tAdvancedparam.InitialHeating = true;\r\n\t\tAdvancedparam.WFCF = 40;\r\n\t\tAdvancedparam.Autofill = true;\r\n\t\tif (AdvancedParams == true)\r\n \tAdvancedparam =\tcontext.RequestUserInputFor<Advanced>(Advancedparam,\"Advanced parameters input Required\",\"Please fill in the form\");\r\n\r\n\t\tconfigurationParameters.BreakSensorLimit = 10;\r\n\r\n\t\t//how many samples to collect in diagnostics before sending\r\n\t\tconfigurationParameters.DiagnosticCollectionLimit = 3;\r\n\r\n\t\t//how many consecutive readout before declaring DC over/underheat alarm\r\n\t\tconfigurationParameters.OverHeatCountLimit = 3;\r\n\t\tconfigurationParameters.UnderHeatCountLimit = 3;\r\n\r\n\t\t// time of motor activity before opening the valve or after closing the valve, in milliseconds\r\n\t\tconfigurationParameters.CloseValveTimeout = 20;\r\n\t\tconfigurationParameters.OpenValveTimeout = 20;\r\n\r\n\t\t//backlash after filling - target pressure, timoeout, time staps (speed will be added in general parameters)\r\n\t\tconfigurationParameters.InitialDispenserPressure = 0.25; \r\n\t\tconfigurationParameters.InitialDispenserTimeout = 60000; //20 seconds\r\n\t\tconfigurationParameters.InitialDispenserTimeLag = 100;\r\n\r\n\t\t//job prepare - build pressure in dispensers - target pressure, timoeout, time staps, speed\r\n\t\tconfigurationParameters.DispenserBuildPressureSpeed = 950; //no more than 1000\r\n\t\tconfigurationParameters.DispenserBuildPressureLimit = 0.85; \r\n\t\tconfigurationParameters.DispenserBuildPressureTimeout = 180000;\r\n\t\tconfigurationParameters.DispenserBuildPressureLag = 100;\r\n\r\n\t\t//temperature band 1000 = 100% - thresholds for job start around target temprature - AC\r\n\t\tconfigurationParameters.ACHeatersLowerOperationLimit = 995;\r\n\t\tconfigurationParameters.ACHeatersUpperOperationLimit = 1005;\r\n\r\n\t\t//temperature band 1000 = 100% - thresholds for job start around target temprature - DC\r\n\t\tconfigurationParameters.DCHeatersLowerOperationLimit = 978;\r\n\t\tconfigurationParameters.DCHeatersUpperOperationLimit = 1005;\r\n\r\n\t\t// mid tank reading offset to add to the readout (OBSOLETE!)\r\n\t\tconfigurationParameters.MidTankPressureCorrection = 0.0;\r\n\r\n\t\t//waste factor for intersegment pressure building\r\n\t\tconfigurationParameters.DispenserPresegmentWFCF = Advancedparam.WFCF;\r\n\r\n\t\t//how much time to start the WFCF process (pressure buildup) before segment start\r\n\t\tconfigurationParameters.IDSPreSegmentWFCFTimeBeforeSegment = 12000;\r\n\r\n\t\t//flag: start heaters according to saved process parameters upon init?\r\n\t\tconfigurationParameters.StartHeatingOnInitSequence = Advancedparam.InitialHeating;\r\n\r\n\t\t// current test for the heaters - alarm thresholds\r\n\t\tconfigurationParameters.CurrentAlarmLowLimit = 0.78;\r\n\t\tconfigurationParameters.CurrentAlarmHighLimit = 1.07;\r\n\r\n\t\t//currently not in use\r\n\t\tconfigurationParameters.IDSSegmentRefillTimeout = 5000;\r\n\t\tconfigurationParameters.IDSPreSegmentBuildupTime = 5000;\r\n\t\t//cleaning!!!!!!!!!!\r\n\t\tconfigurationParameters.IDSCleaningSpeed = 800;\r\n\t\tconfigurationParameters.IDSCleaningStopBeforeSegmentTime = 10000; //end of presegemnt\r\n\t\tconfigurationParameters.IDSCleaningStartSprayPreSegmentTime =2000; //beginning of presegment\r\n\r\n\t\tbool SetCleaning = context.GetInput<bool>(\"SetCleaningValues\");\r\n Cleaning Clean = new Cleaning();\r\n\t\tClean.Tup = 10;\r\n\t\tClean.Tdelay1 = 98;\r\n\t\tClean.Tdelay2 = 198;//300 milli up, stay 1 sec, stay down 2 sec\r\n\t\tif (SetCleaning == true)\r\n \tClean =\tcontext.RequestUserInputFor<Cleaning>(Clean,\"Cleaning Input Required\",\"Please fill in the form\");\r\n\r\n\t\t// Tup = LeftRockerSpeed/100;\r\n\t\t// Tdelay1 = LeftRockerSpeed%100;\r\n\t\t// Tdelay2 = RightRockerSpeed;\r\n\t\tint LeftRockerSpeed = Clean.Tup*100+Clean.Tdelay1;\r\n\t\tint RightRockerSpeed = Clean.Tdelay2;\r\n\r\n\t\tconfigurationParameters.IDSLeftCleaningMotorSpeed = LeftRockerSpeed;\r\n\t\tconfigurationParameters.IDSRightCleaningMotorSpeed = RightRockerSpeed;\r\n\r\n\t\tconfigurationParameters.SwitchToIdleTimeinSeconds = 3600;\r\n\t\tconfigurationParameters.IdleDrierTemperature = 80;\r\n\t\tconfigurationParameters.IdleHeadTemperature = 80;\r\n\t\tconfigurationParameters.IdleMixerTemperature = 0;\r\n\t\tconfigurationParameters.PowerOffTemperatureLimit = 60;\r\n\r\n\t\t//general parameters, ORDER MUST BE PRESERVED!!!!\r\n\t\t//check the dispensers hard limit alarms\r\n\t\t/*1*/\r\n\t\tDouble checkHardLimitAlarms = new Double();\r\n\t\tcheckHardLimitAlarms = 1.0;\r\n\t\tconfigurationParameters.GeneralParameters.Add(checkHardLimitAlarms);\r\n\r\n\t\t/*2*/\r\n\t\tDouble checkCurrentAlarms = new Double();\r\n\t\tcheckCurrentAlarms = 0.0;\r\n\t\tconfigurationParameters.GeneralParameters.Add(checkCurrentAlarms);\r\n\t\t//check the tamper alarms\r\n\r\n\t\t/*3*/\r\n\t\tDouble checkTamperAlarms = new Double();\r\n\t\tcheckTamperAlarms = context.GetInput<double>(\"CheckTampers\");\r\n\t\tconfigurationParameters.GeneralParameters.Add(checkTamperAlarms);\r\n\r\n\t\t/*4*/\r\n\t\tDouble checkMotorAlarms = new Double();\r\n\t\tcheckMotorAlarms = 1.0;\r\n\t\tconfigurationParameters.GeneralParameters.Add(checkMotorAlarms);\r\n\r\n\t\t/*5*/\r\n\t\tDouble WinderBackToBaseTime = new Double();\r\n\t\tWinderBackToBaseTime = 820.0;\r\n\t\tconfigurationParameters.GeneralParameters.Add(WinderBackToBaseTime);\r\n\t\t/*6*/\r\n\t\tDouble DispenserInitialPressureSpeed = new Double();\r\n\t\tDispenserInitialPressureSpeed = 1050.0;\r\n\t\tconfigurationParameters.GeneralParameters.Add(DispenserInitialPressureSpeed);\r\n\r\n\t\t/*7*/\r\n\t\tDouble SetDiagnosticMode = new Double();\r\n\t\tSetDiagnosticMode = 3.0;\t\t\r\n\t\tconfigurationParameters.GeneralParameters.Add(SetDiagnosticMode);\r\n\r\n\t\t/*8*/\t\t\r\n\t\tDouble SetAutoFill = new Double();\r\n\t\tSetAutoFill = 3.0;\t\t\r\n\t\tif (Advancedparam.Autofill == false)\r\n\t\t\tSetAutoFill = 0.0;\r\n\t\tconfigurationParameters.GeneralParameters.Add(SetAutoFill);\r\n\r\n\t\t//configurationParameters\t= context.RequestUserInputFor<ConfigurationParameters>(configurationParameters,\"ConfigurationParameters Input Required\",\"Please fill in the form\");\r\n\t\tDirectory.CreateDirectory (\"C:/Temp\");\r\n\t\tFile.WriteAllBytes(\"C:/temp/EmbParam.cfg\",configurationParameters.ToBytes());\r\n\r\n\t\tbyte[] fileBytes = File.ReadAllBytes(\"C:/temp/EmbParam.cfg\");\r\n\r\n\r\n\t\tvar config = ConfigurationParameters.Parser.ParseFrom(fileBytes);\r\n\r\n\t\tcontext.Write( config);\r\n\t\tThread.Sleep(1000);\r\n\r\n\t\r\n\t\tcontext.Write(\"\\n\\n Deleting old file\");\r\n\r\n\t\tDeleteRequest deleteRequest = new DeleteRequest();\r\n\t\tdeleteRequest.Path = \"SYSINFO//EmbParam.cfg\";\r\n\t\tdeleteRequest.Attribute = Tango.PMR.IO.FileAttribute.Unspecified;\r\n\t\tDeleteResponse response5 = context.Send<DeleteResponse>(deleteRequest);\r\n\r\n\r\n\t\tThread.Sleep(1000);\r\n\t\tcontext.Write(\"\\n\\n Loading new file file\");\r\n\r\n\t\tFileUploadRequest fileUploadRequest = new FileUploadRequest();\r\n\t\tfileUploadRequest.Path = \"SYSINFO//EmbParam.cfg\";\r\n\t\tfileUploadRequest.Length = (int)fileBytes.Length;\r\n\t\tFileUploadResponse response2 = context.Send<FileUploadResponse>(fileUploadRequest);\r\n\t\tThread.Sleep(1000);\r\n\t\tlong chunk_size = response2.MaxChunkLength;\r\n\r\n\t\tFileStream fs = new FileStream(\"C:/temp/EmbParam.cfg\",FileMode.Open);\r\n\r\n\t\twhile (fs.Position < fs.Length)\r\n\t\t{\r\n\t\t\t\tcontext.Write(\"Position \"+ fs.Position+ \" Length \"+ fs.Length +\"\\n\\n\");\r\n\t\t\t\tFileChunkUploadRequest fileChunkUploadRequest = new FileChunkUploadRequest();\r\n\t\t\t\tfileChunkUploadRequest.UploadID = response2.UploadID;\r\n\t\t\t\tbyte[] chunk = new byte[Math.Min(chunk_size,fs.Length - fs.Position)];\r\n\t\t\t\tfs.Read(chunk,0,chunk.Length);\r\n\t\t\t\tfileChunkUploadRequest.Buffer = ByteString.CopyFrom(chunk);\t\r\n\t\t\t\tvar response3 = context.Send<FileChunkUploadResponse>(fileChunkUploadRequest);\r\n\t\t\t\tThread.Sleep(2000);\r\n\r\n\t\t}\r\n\r\n\t\t// activating the new file\r\n\t\tProgressRequest progressRequest = new ProgressRequest();\r\n\t\tprogressRequest.Amount = 0xCD;\r\n\t\tprogressRequest.Delay = 0xCD;\r\n\t\tvar response1 = context.Send<ProgressResponse>(progressRequest);\r\n\r\n }\r\n}","Name":"Program.csx","IsEntryPoint":true},{"$id":"4","Code":"using System;\r\nusing System.Collections.Generic;\r\nusing System.Collections.ObjectModel;\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Threading;\r\nusing System.Threading.Tasks;\r\nusing Google.Protobuf;\r\nusing Tango.BL.Enumerations;\r\nusing Tango.PMR.Stubs;\r\nusing Tango.PMR.Diagnostics;\r\nusing Tango.FSE.Common.Diagnostics;\r\nusing Tango.FSE.Procedures;\r\n\r\npublic class Service\r\n{\r\n public double Calc(double a, double b)\r\n {\r\n return a + b;\r\n }\r\n}","Name":"Service.csx","IsEntryPoint":false}]},"Inputs":{"$id":"5","$values":[{"$id":"6","Type":"Selection","SelectionInputs":{"$id":"7","$values":[{"$id":"8","Name":"Enable Tamper Check","Value":"1.0"},{"$id":"9","Name":"Disable Tamper Check","Value":"0.0"}]},"DisplayName":"Check Tamper / Fan alarms","Description":"Check Tamper / Fan alarms (1 -true, 0 - false)","Key":"CheckTampers","Value":"1.0"},{"$id":"10","Type":"Default","SelectionInputs":{"$id":"11","$values":[]},"DisplayName":"Set advanced parameters","Description":"Set advanced parameters","Key":"AdvancedParameters","Value":"false"},{"$id":"12","Type":"Default","SelectionInputs":{"$id":"13","$values":[]},"DisplayName":"Set Cleaning Values","Description":"Set to 1 if you want to update the cleaning values","Key":"SetCleaningValues","Value":"false"}]},"Variables":{"$id":"14","$values":[]},"ReferenceAssemblies":{"$id":"15","$values":[{"$id":"16","File":"C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\mscorlib.dll","HintType":"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"},{"$id":"17","File":"C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC_MSIL\\System.Core\\v4.0_4.0.0.0__b77a5c561934e089\\System.Core.dll","HintType":"System.Linq.Enumerable, System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"},{"$id":"18","File":"C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC_MSIL\\System.Windows.Forms\\v4.0_4.0.0.0__b77a5c561934e089\\System.Windows.Forms.dll","HintType":"System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"},{"$id":"19","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.FSE.Procedures.dll","HintType":"Tango.FSE.Procedures.ProcedureProject, Tango.FSE.Procedures, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"},{"$id":"20","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.FSE.Common.dll","HintType":"Tango.FSE.Common.Diagnostics.IDiagnosticsProvider, Tango.FSE.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"},{"$id":"21","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.BL.dll","HintType":"Tango.BL.Enumerations.TechMonitors, Tango.BL, Version=2.0.36.1608, Culture=neutral, PublicKeyToken=null"},{"$id":"22","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.PMR.dll","HintType":"Tango.PMR.Common.MessageType, Tango.PMR, Version=2.0.40.1608, Culture=neutral, PublicKeyToken=null"},{"$id":"23","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.Transport.dll","HintType":"Tango.Transport.ITransporter, Tango.Transport, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"},{"$id":"24","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.Integration.dll","HintType":"Tango.Integration.Operation.IMachineOperator, Tango.Integration, Version=2.0.31.1608, Culture=neutral, PublicKeyToken=null"},{"$id":"25","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Google.Protobuf.dll","HintType":"Google.Protobuf.IMessage, Google.Protobuf, Version=3.4.1.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604"},{"$id":"26","File":"C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC_MSIL\\System.Drawing\\v4.0_4.0.0.0__b03f5f7f11d50a3a\\System.Drawing.dll","HintType":"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"}]},"Resources":{"$id":"27","$values":[]},"Dialogs":{"$id":"28","$values":[]},"ID":"2bd29884-5eb9-4d27-be4e-6cfa31dc9f66","ApartmentState":"MTA"} \ No newline at end of file
diff --git a/Software/Stubs Collection/Procedures/Loading arm calibration.pproj b/Software/Stubs Collection/Procedures/Loading arm calibration.pproj
new file mode 100644
index 000000000..e1aacdf5d
--- /dev/null
+++ b/Software/Stubs Collection/Procedures/Loading arm calibration.pproj
@@ -0,0 +1 @@
+{"$id":"1","Name":"Loading arm calibration","Description":"This procedure stores the loading arm center according to the current hardware read. it also stores 0 as the number of cycles.","Scripts":{"$id":"2","$values":[{"$id":"3","Code":"using System;\r\nusing System.Collections.Generic;\r\nusing System.Collections.ObjectModel;\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Threading;\r\nusing System.Threading.Tasks;\r\nusing System.Drawing;\r\nusing Google.Protobuf;\r\nusing Tango.BL.Entities;\r\nusing Tango.BL.Enumerations;\r\nusing Tango.PMR.Stubs;\r\nusing Tango.PMR.Diagnostics;\r\nusing Tango.FSE.Common.Connection;\r\nusing Tango.FSE.Common.Diagnostics;\r\nusing Tango.FSE.Procedures;\r\n\r\npublic class Program\r\n{\r\n public void OnExecute(IProcedureContext context)\r\n {\r\n\r\n\r\n\t\tProgressRequest progressRequest = new ProgressRequest();\r\n\t\tprogressRequest.Amount = 0xB1;\r\n\t\t//progressRequest.Delay = 1;\r\n\t\r\n\t\tvar response = context.Send<ProgressResponse>(progressRequest);\r\n\t\r\n\t\tprogressRequest.Amount = 0xB2;\r\n\t\tprogressRequest.Delay = 0;\r\n\t\r\n\t\tresponse = context.Send<ProgressResponse>(progressRequest);\r\n\r\n context.AddResult(ResultType.Passed, \"Loading Arm Calibrated\", \"OK\");\r\n\r\n }\r\n}","Name":"Program.csx","IsEntryPoint":true},{"$id":"4","Code":"using System;\r\nusing System.Collections.Generic;\r\nusing System.Collections.ObjectModel;\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Threading;\r\nusing System.Threading.Tasks;\r\nusing System.Drawing;\r\nusing Google.Protobuf;\r\nusing Tango.BL.Entities;\r\nusing Tango.BL.Enumerations;\r\nusing Tango.PMR.Stubs;\r\nusing Tango.PMR.Diagnostics;\r\nusing Tango.FSE.Common.Connection;\r\nusing Tango.FSE.Common.Diagnostics;\r\nusing Tango.FSE.Procedures;\r\n\r\npublic class Service\r\n{\r\n public double Calc(double a, double b)\r\n {\r\n return a + b;\r\n }\r\n}","Name":"Service.csx","IsEntryPoint":false}]},"Inputs":{"$id":"5","$values":[]},"Variables":{"$id":"6","$values":[]},"ReferenceAssemblies":{"$id":"7","$values":[{"$id":"8","File":"C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\mscorlib.dll","HintType":"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"},{"$id":"9","File":"C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC_MSIL\\System.Core\\v4.0_4.0.0.0__b77a5c561934e089\\System.Core.dll","HintType":"System.Linq.Enumerable, System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"},{"$id":"10","File":"C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC_MSIL\\System.Windows.Forms\\v4.0_4.0.0.0__b77a5c561934e089\\System.Windows.Forms.dll","HintType":"System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"},{"$id":"11","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.FSE.Procedures.dll","HintType":"Tango.FSE.Procedures.ProcedureProject, Tango.FSE.Procedures, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"},{"$id":"12","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.FSE.Common.dll","HintType":"Tango.FSE.Common.Diagnostics.IDiagnosticsProvider, Tango.FSE.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"},{"$id":"13","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.BL.dll","HintType":"Tango.BL.Enumerations.TechMonitors, Tango.BL, Version=2.0.36.1608, Culture=neutral, PublicKeyToken=null"},{"$id":"14","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.PMR.dll","HintType":"Tango.PMR.Common.MessageType, Tango.PMR, Version=2.0.40.1608, Culture=neutral, PublicKeyToken=null"},{"$id":"15","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.Transport.dll","HintType":"Tango.Transport.ITransporter, Tango.Transport, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"},{"$id":"16","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.Integration.dll","HintType":"Tango.Integration.Operation.IMachineOperator, Tango.Integration, Version=2.0.31.1608, Culture=neutral, PublicKeyToken=null"},{"$id":"17","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Google.Protobuf.dll","HintType":"Google.Protobuf.IMessage, Google.Protobuf, Version=3.4.1.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604"},{"$id":"18","File":"C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC_MSIL\\System.Drawing\\v4.0_4.0.0.0__b03f5f7f11d50a3a\\System.Drawing.dll","HintType":"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"}]},"Resources":{"$id":"19","$values":[]},"Dialogs":{"$id":"20","$values":[]},"ID":"68fd5a49-b7ad-4d85-a305-75dc06b35f2f","ApartmentState":"STA"} \ No newline at end of file
diff --git a/Software/Stubs Collection/Procedures/Mid tank calibration.pproj b/Software/Stubs Collection/Procedures/Mid tank calibration.pproj
new file mode 100644
index 000000000..0bb05e75b
--- /dev/null
+++ b/Software/Stubs Collection/Procedures/Mid tank calibration.pproj
@@ -0,0 +1 @@
+{"$id":"1","Inputs":{"$id":"2","$values":[{"$id":"3","Type":"Default","SelectionInputs":{"$id":"4","$values":[]},"DisplayName":"Check Tamper / Fan alarms","Description":"Check Tamper / Fan alarms","Key":"CheckTampers","Value":"1.0"},{"$id":"5","Type":"Default","SelectionInputs":{"$id":"6","$values":[]},"DisplayName":"Initial Heating on startup","Description":"Initial Heating on startup","Key":"InitialHeating","Value":"true"},{"$id":"7","Type":"Default","SelectionInputs":{"$id":"8","$values":[]},"DisplayName":"WCF Value","Description":"WCF Value","Key":"WCF_Value","Value":"40"},{"$id":"9","Type":"Default","SelectionInputs":{"$id":"10","$values":[]},"DisplayName":"AutoFill Mode","Description":"Controls the AutoFill Mode","Key":"AutoFillMode","Value":"3.0"}]},"Variables":{"$id":"11","$values":[]},"Resources":{"$id":"12","$values":[]},"Dialogs":{"$id":"13","$values":[]},"ID":"2bd29884-5eb9-4d27-be4e-6cfa31dc9f66","Name":"Mid tank calibration","Description":"This procedure lets the FSE to define values for cleaning, tamper alarms, initial heating, WCF value and automatic dispenser filling.","ApartmentState":"MTA","ReferenceAssemblies":{"$id":"14","$values":[{"$id":"15","File":"C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\mscorlib.dll","HintType":"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"},{"$id":"16","File":"C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC_MSIL\\System.Core\\v4.0_4.0.0.0__b77a5c561934e089\\System.Core.dll","HintType":"System.Linq.Enumerable, System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"},{"$id":"17","File":"C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC_MSIL\\System.Windows.Forms\\v4.0_4.0.0.0__b77a5c561934e089\\System.Windows.Forms.dll","HintType":"System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"},{"$id":"18","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.FSE.Procedures.dll","HintType":"Tango.FSE.Procedures.ProcedureProject, Tango.FSE.Procedures, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"},{"$id":"19","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.FSE.Common.dll","HintType":"Tango.FSE.Common.Diagnostics.IDiagnosticsProvider, Tango.FSE.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"},{"$id":"20","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.BL.dll","HintType":"Tango.BL.Enumerations.TechMonitors, Tango.BL, Version=2.0.36.1608, Culture=neutral, PublicKeyToken=null"},{"$id":"21","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.PMR.dll","HintType":"Tango.PMR.Common.MessageType, Tango.PMR, Version=2.0.40.1608, Culture=neutral, PublicKeyToken=null"},{"$id":"22","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.Transport.dll","HintType":"Tango.Transport.ITransporter, Tango.Transport, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"},{"$id":"23","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.Integration.dll","HintType":"Tango.Integration.Operation.IMachineOperator, Tango.Integration, Version=2.0.31.1608, Culture=neutral, PublicKeyToken=null"},{"$id":"24","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Google.Protobuf.dll","HintType":"Google.Protobuf.IMessage, Google.Protobuf, Version=3.4.1.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604"},{"$id":"25","File":"C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC_MSIL\\System.Drawing\\v4.0_4.0.0.0__b03f5f7f11d50a3a\\System.Drawing.dll","HintType":"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"}]},"Scripts":{"$id":"26","$values":[{"$id":"27","Name":"Program.csx","IsEntryPoint":true,"Code":"using System;\r\nusing System.Collections.Generic;\r\nusing System.Collections.ObjectModel;\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\nusing System.IO;\r\nusing System.Text;\r\nusing System.Threading;\r\nusing System.Threading.Tasks;\r\nusing System.Drawing;\r\nusing Google.Protobuf;\r\nusing Tango.BL.Entities;\r\nusing Tango.BL.Enumerations;\r\nusing Tango.PMR.Stubs;\r\nusing Tango.PMR.Diagnostics;\r\nusing Tango.PMR.EmbeddedParameters;\r\nusing Tango.FSE.Common.Connection;\r\nusing Tango.FSE.Common.Diagnostics;\r\nusing Tango.FSE.Procedures;\r\n\r\n\r\npublic class Program\r\n{\r\n\r\nprivate IProcedureContext context;\r\n\r\n\t//----------------------\r\n\tconst double \tSlop=0.92;\r\n\tconst double\tMIN_SLOP=0.7;\r\n\tconst double\tMAX_SLOP=1.4;\r\n\tconst double\tERROR_SLOP=-1;\r\n\tconst double\tMIN_50cc_on_volt=2.3;\r\n\tconst double\tMAX_50cc_on_volt=3.2;\r\n\tconst double\tERROR_50cc_on_volt=-1;\r\n\tdouble CartSizeLiter = 1.0;\r\n\t\r\n\tint [] Convert_Midtank_No = new Int32 [8] {1,3,5,7,2,4,6,8};\r\n\tuint [,] ADC_Add_Chnl = new uint [8,2]\t{\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{0x44,0x20},\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{0x44,0x08},\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{0x46,0x80},\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{0x46,0x20},\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{0x44,0x10},\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{0x44,0x04},\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{0x46,0x40},\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t{0x46,0x10},\r\n\t\t\t\t\t\t\t\t\t\t\t};\r\n\t\r\n\t\r\n\tconst Int32\tF3_VALVE_OUT\t=\t0x600008E2\t;\r\n\tstring Machine_SN\t;\r\n\tprivate const string FILE_PATH = @\"C:\\MidTankLog\\\";\r\n\tstring File_name;\r\n\tdouble [,] voltage_array = new double[9,9];\r\n\tstring [] Parameter = new string[5] {\"\\t\",\"Empty [V]\",\"100cc [V]\",\"800cc [V]\",\" b [L/V] \"};\r\n\t\tdouble Full_Cartridge=1;\t// 1 litter less 100 cc\r\n\t\r\n\t//----------------------\r\n\tconst Int32 I2C_ID = 2;\r\n\t//const Int32 I2C_Slave_Add = 0x46; //must be 0x40, 0x44 or 0x46\r\n\t//----------------------\r\n\t\r\n public void OnExecute(IProcedureContext context)\r\n {\r\n\tthis.context = context;\r\n\t\r\n\tInt32 midtankno = 0;\r\n\tdouble Full_Point=0;\t\t\t//on Voltage\r\n\tdouble resualt;\r\n\tdouble Sum=0 ;\r\n\tdouble Old_Sum=0 ;\r\n\t\r\n\r\n\tif (!Directory.Exists(FILE_PATH))\r\n\t\t{\r\n\t\t\tDirectory.CreateDirectory(FILE_PATH);\r\n\t\t}\t\t\t\r\n\r\n\r\n \t//Machine_SN = context.GetInput<string>(\"Midtank_SN\");\r\n var response = context.RequestUserInputFor<String>(\"Mid Tank Serial Number\", \"Enter Midtank S/N:\");\r\n\tcontext.Write(\"\\n\");\r\n\tMachine_SN = response;\r\n\tcontext.WriteLine(Machine_SN);\r\n\tFile_name= FILE_PATH +Machine_SN + DateTime.Now.ToString(\"MM_dd_yyyy_HH_mm_ss\")+\".csv\";\r\n\tcontext.Write(File_name);\r\n \tcontext.WriteToFile(File_name,\"MidTank S/N:,\" + Machine_SN); \r\n\t\r\n\t\r\n\r\n\t//midtankno = context.GetInput<int>(\"MidTankId\");\r\n\tvar response1 = context.RequestUserInputFor<String>(\"Mid Tank Number\", \"Enter Midtank number to calibrate (1-8):\");\r\n\tcontext.WriteLine(response1);\r\n\tmidtankno = Int32.Parse(response1);\r\n \tcontext.AppendToFile(File_name,\"MidTank Number:\\t\" + response1);\r\n\r\n\r\n\tvar response2 = context.RequestUserInputFor<int>(\"Cartridge size\", \"Enter enter cartridge size in ml (1000/700/500):\");\r\n\tcontext.WriteLine(response2);\r\n\tint Cart_size = response2;\r\n \tcontext.AppendToFile(File_name,\"Cartrideg size:\\t\" + response2);\r\n\r\n\r\n string box_msg = \"Please Insert cartridge with\" +Cart_size+\"cc (Lubbricant add 500cc only) \";\r\n// string box_title = \"Midatnk empty\";\r\n// context.ShowInfo(box_msg, box_title);\r\n\tcontext.ShowInfo(box_msg);\r\n\r\n\t//int CartInserted = 0;\r\n\t//while (CartInserted == 0)\r\n\t//\tCartInserted = context.GetInput<int>(\"insertCartridge\");\r\n\t\r\n\tCartSizeLiter = Cart_size/1000;\r\n\t\r\n\topen_valve(midtankno,1,1)\t\t;\t//open Air valve\r\n\topen_valve(midtankno,0,1)\t\t;\t//open Ink valve\r\n\tInt32 i=0; \r\n\twhile (i<60*15)\t\t\t\t\t//check for 15 minitus \r\n\t{\r\n\t\tSum=0;\r\n\t\tfor (Int32 j=0;j<30;j++)\r\n\t\t{\r\n\t\t\tresualt=read_pressure_sensor(midtankno);\r\n\t\t\tcontext.AppendToFile(File_name,resualt+\",mV\");\r\n\t\t\tSum=Sum+resualt;\r\n\t\t\tThread.Sleep(1000);\r\n\t\t}\r\n\t\ti=i+1;\r\n\t\tif (Sum>Old_Sum)\r\n\t\t\tOld_Sum=Sum-Old_Sum;\r\n\t\telse\r\n\t\t\tOld_Sum=Old_Sum-Sum;\r\n\t\t\t\r\n\t\tif ( Old_Sum <0.02)\t\r\n\t\t\ti=60*15;\t\t//end \r\n\t\tOld_Sum=Sum;\r\n\t}\r\n\tFull_Point=Sum/30;\r\n\t\r\n\tbox_msg = \"Send file\" + File_name +\"to Mati\"; \r\n\tcontext.ShowInfo(box_msg);\r\n\t\r\n\t\r\n\t//\tcontext.Send<StubFpgaWriteRegResponse>(\"StubFpgaWriteRegRequest\" ,F3_VALVE_OUT, 0x000f);\t\t// open all valve air of midtank and close all ink of midtank\r\n\t//\tThread.Sleep(500);\r\n\t//\tcontext.Send<StubFpgaWriteRegResponse>(\"StubFpgaWriteRegRequest\" ,F3_VALVE_OUT, 0x00ff);\t\t// open all valve air of midtank and close all ink of midtank\r\n\t//\tThread.Sleep(500);\r\n\t//\tcontext.Send<StubFpgaWriteRegResponse>(\"StubFpgaWriteRegRequest\" ,F3_VALVE_OUT, 0x0fff);\t\t// open all valve air of midtank and close all ink of midtank\r\n\t//\tThread.Sleep(500);\r\n\t//\tcontext.Send<StubFpgaWriteRegResponse>(\"stubFpgaWriteRegRequest\" ,F3_VALVE_OUT, 0xffff);\t\t// open all valve air and ink of midtank\r\n\t//\r\n\t//\tThread.Sleep(2500);\r\n\r\n\t//\tThread.Sleep(1000);\t\r\n\t\t\r\n\t//\tread_pressure_sensor(1);\r\n \t\t\r\n\t//\tbox_msg =\"Insert 100cc of appropriate ink/lube to each midtank\\n\\t1.black ink\\n\\t2. Magenta ink\\n\\t3. Transparent ink\\n\\t4. Cleaner\\n\\t5. Cyan ink\\n\\t6. Yellow ink\\n\\t7. Spot color\\n\\t8. Lubricant/n\";\r\n // context.ShowInfo(box_msg);\r\n//\r\n\t//\tread_pressure_sensor(2);\r\n\r\n\t\t\t\t\t//\tvoltage_array[3,2]=2.5;\r\n\t\t\r\n//\t\tbox_msg = \"Add another 700cc for ink and TI \\nFor Lubbricant add 500cc only.\"; \r\n//\t\tcontext.ShowInfo(box_msg);\r\n//\t\tread_pressure_sensor(3);\r\n//\t\t\t\tcontext.Send<StubFpgaWriteRegResponse>(\"stubFpgaWriteRegRequest\" ,F3_VALVE_OUT, 0x0000);\t\t// close all valve air and ink of midtank\r\n\t\t\t\t\t\t\t\t\t//\t\t\tvoltage_array[3,3]=4.5;\r\n\tclose_valve(midtankno,1,1)\t\t;\t//close Air valve\r\n\tclose_valve(midtankno,0,1)\t\t;\t//close Ink valve\r\n\r\n//\t\tcalc_slop();\r\n//\t\tprint_table();\r\n\t\t\r\n//\t\tinsert_slop_t_eeprom(Full_Point, midtankno);\r\n\t\tinsert_slop_t_eeprom(Full_Point, midtankno);\r\n\t\tbox_msg =\"Turn Power Off and On to finish the calibration.\";\r\n context.ShowInfo(box_msg);\r\n\t\r\n\t}\r\n\r\nint calc_slop()\r\n\t{\r\n\tcontext.Write(\"\\n \");\r\n\t\t\r\n\tdouble delta;\r\n\tfor (uint i=1;i<9;i++)\r\n\t\t{\r\n\t\t\tdelta=voltage_array[i,3]-voltage_array[i,2];\r\n\t\t\r\n\t\t\tcontext.Write(\"\\nMidtank No:\"+i +\"=\"+delta);\r\n//\t\t\tif (i==8)\r\n\t\t\t\tdelta=CartSizeLiter/delta;\t\t\t\t\t\t\t\t\t\t\t\t//0.5 litter on lubricant\t\t\t\r\n//\t\t\telse \r\n//\t\t\t\tdelta=CartSizeLiter/delta;\t\t\t\t\t\t\t\t\t\t\t\t//0.7 litter\r\n\t\t\t\t\r\n\t\t\tif ((delta<MIN_SLOP) || (delta >MAX_SLOP)) \r\n\t\t\t{\r\n\t\t\t\tvoltage_array[i,4]=ERROR_SLOP;\r\n\t\t//\t\tcontext.Write(\"123\");\r\n\t\t\t}\r\n\t\telse if\t((voltage_array[i,2]<MIN_50cc_on_volt) || (voltage_array[i,2]>MAX_50cc_on_volt ))\r\n\t\t\t\t\tvoltage_array[i,4]=ERROR_SLOP;\r\n\t\telse\r\n\t\tvoltage_array[i,4]=delta;\r\n\t\t}\r\n\treturn 1;\r\n\t}\r\n\r\n\r\n\tint\tinsert_slop_t_eeprom( double FullPoint,Int32 midtankno)\r\n{\r\n//\tcontext.Write(\"\\n \");\r\n\r\n\tMidTankDataSetupRequest midTankDataSetupRequest = new MidTankDataSetupRequest();\r\n\r\n\r\n//\tfor (uint i=1;i<9;i++)\r\n//\t{\r\n//\t\tif (voltage_array[i,4]!= ERROR_SLOP)\r\n//\t\t{\r\n\t\tMidTankData midTankData = new MidTankData();\r\n\t\tmidTankData.MidTankId = Convert.ToUInt32 (midtankno-1);\r\n\t\tmidTankData.InitialOffsetA =FullPoint - (Full_Cartridge-0.1)/Slop;\r\n\t\tmidTankData.SlopeB = Slop;\r\n\t\t\r\n\t\tcontext.Write(\"\\nMidtank No:\" + midtankno + \"=\\tVoltage Zero is =\"+(FullPoint - (Full_Cartridge-0.1)/Slop)+\"\\tSlop=\"+ Slop);\r\n\t\tcontext.AppendToFile(File_name,\"\\nMidtank No:\" + midtankno + \"=\\tVoltage Zero is =\"+(FullPoint - (Full_Cartridge-0.1)/Slop)+\"\\tSlop=\"+ Slop);\r\n\r\n\t\t\r\n\t\tmidTankDataSetupRequest.MidTankInfo.Add(midTankData);\r\n\t\r\n\t//\t}\r\nvar response = context.Send<MidTankDataSetupResponse>(midTankDataSetupRequest);\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t//}\r\n\r\n\r\nreturn\t1;\r\n}\r\n\r\n//\r\n//\r\n//int\t\tprint_table()\r\n//\t\t{\r\n//\r\n//\t\tfor (uint i=0;i<5;i++)\r\n//\t\t\t{\r\n//\t\t\t\tcontext.AppendToFile(File_name,Parameter[i]+\"\\t\"+voltage_array[1,i]+\"\\t\"+voltage_array[2,i]+\"\\t\"+voltage_array[3,i]+\"\\t\"+voltage_array[4,i]+\"\\t\"+voltage_array[5,i]+\"\\t\"+voltage_array[6,i]+\"\\t\"+voltage_array[7,i]+\"\\t\"+voltage_array[8,i]) ;\r\n// } \r\n// \r\n//\t\r\n//\t\t\treturn 1;\r\n//\r\n//\t\t}\r\n\r\n//start mat\r\n\r\nint adc_configuration(uint I2C_Slave_Add,uint channel ) \r\n\t{\r\n\tStubI2CWriteBytesRequest stubI2CWriteBytesRequest = new StubI2CWriteBytesRequest();\r\n\tstubI2CWriteBytesRequest.I2CId = I2C_ID;\r\n\tstubI2CWriteBytesRequest.SlaveAddress = I2C_Slave_Add;\r\n\t\r\n\tUInt32 uInt32 = new UInt32();\r\n\tstubI2CWriteBytesRequest.BytesTWrite.Add(0x00);//Byte 0 to write\r\n\tstubI2CWriteBytesRequest.BytesTWrite.Add(channel);//Byte 1 to Write, must be 0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02 or 0x01 for different channels\r\n\tstubI2CWriteBytesRequest.BytesTWrite.Add(0x80);//Byte 2 to Write\r\n\t\r\n\tvar response = context.Send<StubI2CWriteBytesResponse>(stubI2CWriteBytesRequest);\r\n\t\r\n\treturn 1;\r\n\t}\r\n\r\n\r\nint adc_set_for_read_ch(uint I2C_Slave_Add) \r\n\t{\r\n\tStubI2CWriteBytesRequest stubI2CWriteBytesRequest = new StubI2CWriteBytesRequest();\r\n\tstubI2CWriteBytesRequest.I2CId = I2C_ID;\r\n\tstubI2CWriteBytesRequest.SlaveAddress = I2C_Slave_Add;\r\n\t\r\n\tUInt32 uInt32 = new UInt32();\r\n\tstubI2CWriteBytesRequest.BytesTWrite.Add(0x01);//Byte 0 to write\r\n\r\n\tvar response = context.Send<StubI2CWriteBytesResponse>(stubI2CWriteBytesRequest);\r\n\t\r\n\treturn 1;\r\n\t}\r\n\r\n\r\n\r\n\r\ndouble adc_read_ch(uint I2C_Slave_Add) \r\n\t{\r\n\tStubI2CReadBytesRequest stubI2CReadBytesRequest = new StubI2CReadBytesRequest();\r\n\tstubI2CReadBytesRequest.I2CId = I2C_ID;\r\n\tstubI2CReadBytesRequest.SlaveAddress = I2C_Slave_Add;\r\n\tstubI2CReadBytesRequest.NumberOfBytesToRead = 2; // Number of bytes to read\r\n\r\n\tvar response1 = context.Send<StubI2CReadBytesResponse>(stubI2CReadBytesRequest);\r\n\tuint temph=0;\r\n\tuint templ=0;\r\n\tuint temp;\r\n\tdouble calc;\r\n\tdouble calc1;\r\n\tdouble calc2;\r\n\t\t\ttemph=response1.ReadBytes[0];\r\n\t\t\ttempl=response1.ReadBytes[1];\r\n\t\t\ttemp = (temph << 8) | templ;\r\n\t\t\ttemp=temp & 0x0fff;\r\n\t\t\t\t\r\n\t\t\tcalc = (double)temp *2.5 / 4096.0;\r\n//\t\t\tcontext.Write(\"ADC [volts]:\\t\");\r\n//\t\t\tcontext.Write(calc+\"\\t\");\r\n\t\t\r\n\t\t\tcalc1 = (1.96- calc) * 4.64 + 1.96;\r\n\t\t\tcontext.Write(\"Vsensor [volts]:\\t\");\r\n\t\t\tcontext.Write(calc1 + \"\\n\");\r\n\r\n\t//\t\tvoltage_array[table_index_x,table_index_y]=calc1;\r\n\t\r\n\treturn calc1;\r\n\t}\r\n\r\ndouble\t\tread_pressure_sensor(Int32 i )\r\n\t{\r\ndouble resualt =0 ;\r\n\t\t switch (i)\r\n {\r\n case 1:\r\n\t\t\tadc_configuration(0x44,0x20);\t\t//a2d_address 0x44 channel channel 2\r\n\t\t\tadc_set_for_read_ch(0x44);\r\n\t\t\tresualt=adc_read_ch(0x44);\r\n\t\tbreak;\r\n\t\t\r\n\t\tcase 2:\r\n\t\t\tadc_configuration(0x44,0x08);\t\t//a2d_address 0x44 channel channel 4\r\n\t\t\tadc_set_for_read_ch(0x44);\r\n\t\t\tresualt=adc_read_ch(0x44);\r\n\t\tbreak;\r\n\t\t\r\n\t\tcase 3:\r\n\t\t\tadc_configuration(0x46,0x80);\t\t//a2d_address 0x46 channel channel 0\r\n\t\t\tadc_set_for_read_ch(0x46);\r\n\t\t\tresualt=adc_read_ch(0x46);\r\n\t\tbreak;\r\n\t\t\r\n\t\tcase 4:\r\n\t\t\tadc_configuration(0x46,0x20);\t\t//a2d_address 0x46 channel channel 2\r\n\t\t\tadc_set_for_read_ch(0x46);\r\n\t\t\tresualt=adc_read_ch(0x46);\r\n\t\tbreak;\r\n\t\t\r\n\t\tcase 5:\r\n\t\t\tadc_configuration(0x44,0x10);\t\t//a2d_address 0x44 channel channel 3\r\n\t\t\tadc_set_for_read_ch(0x44);\r\n\t\t\tresualt=adc_read_ch(0x44);\r\n\t\tbreak;\r\n\t\t\r\n\t\tcase 6:\r\n\t\t\tadc_configuration(0x44,0x04);\t\t//a2d_address 0x44 channel channel 5\r\n\t\t\tadc_set_for_read_ch(0x44);\r\n\t\t\tresualt=adc_read_ch(0x44);\r\n\t\tbreak;\r\n\t\t\r\n\t\tcase 7:\r\n\t\t\tadc_configuration(0x46,0x40);\t\t//a2d_address 0x46 channel channel 1\r\n\t\t\tadc_set_for_read_ch(0x46);\r\n\t\t\tresualt=adc_read_ch(0x46);\r\n\t\tbreak;\r\n\t\t\r\n\t\tcase 8:\r\n\t\t\tadc_configuration(0x46,0x10);\t\t//a2d_address 0x46 channel channel 3\r\n\t\t\tadc_set_for_read_ch(0x46);\r\n\t\t\tresualt=adc_read_ch(0x46);\r\n\t\tbreak;\r\n\t\t\r\n default:\r\n context.Write(\"Error\");\r\n\r\n break;\r\n\t }\t\r\n\t\t\r\n\t\treturn resualt;\r\n\t}\t\r\n\r\n\r\n//--------------------------------\r\nint open_valve (int valve_nm,int valve_type,int check_valve)\t\t//valve_type=0 is Air ,1 is Ink ; check_valve=1 send feedbak\r\n{\r\n\tint temp1=Convert_Midtank_No[valve_nm-1]\t;\r\n\r\n\tstring temp;\r\n\tSetBit (F3_VALVE_OUT,(((valve_type+1)*8)- temp1), 1);\t\r\n\t\r\n\t\tif (check_valve!=0)\r\n\t\t{\r\n\t\t\ttemp=\"Air\";\r\n\t\t\tif (valve_type==1)\r\n\t\t\ttemp=\"Ink\";\r\n\t\t\t\t\r\n\t\t\tif(!context.ShowWarningQuestion(\"Did \" + temp + \"Valve of Midtank \" + valve_nm +\" open?\"))\r\n\t\t\t\t{\r\n//\t\t\t\t\tUnits_status[(valve_nm-1)*3+valve_type,1]=\"Fail\";\r\n\t\t\t\t\tcontext.Write(temp +\"Valve\\tFail\\n\");\t\r\n\t\t\t\t\treturn 0;\r\n\t\t\t\t}\r\n\t\t\telse \r\n\t\t\t\t{\r\n//\t\t\t\t\tUnits_status[(valve_nm-1)*3+valve_type,1]=\"Pass\";\r\n\t\t\t\t\tcontext.Write(temp +\"Valve\\tOpen\\n\");\t\r\n\t\t\t\t\treturn 1;\r\n\t\t\t\t}\r\n\t\t\t\r\n\t\t}\r\n\t\treturn 1;\r\n\r\n}\r\n//--------------------------------\t\r\nint close_valve (int valve_nm,int valve_type,int check_valve)\r\n{\r\n\tint temp1=Convert_Midtank_No[valve_nm-1];\t\r\n\r\n\tstring temp;\r\n\tSetBit (F3_VALVE_OUT,(((valve_type+1)*8)- temp1), 0);\r\n\tif (check_valve!=0)\r\n\t\t{\r\n\t\t\ttemp=\"Air\";\r\n\t\t\tif (valve_type==1)\r\n\t\t\ttemp=\"Ink\";\r\n\t\t\t\t\r\n\t\t\tif(!context.ShowWarningQuestion(\"Did \" + temp +\" Valve of Midtank \" + valve_nm +\" close?\"))\r\n\t\t\t\t{\r\n//\t\t\t\t\tUnits_status[(valve_nm-1)*3+valve_type,1]=\"Fail\";\r\n\t\t\t\t\tcontext.Write(temp +\"Valve\\tFail\\n\");\t\r\n\t\t\t\t\treturn 0;\r\n\t\t\t\t}\r\n\t\t\telse \r\n\t\t\t\t{\r\n//\t\t\t\t\tUnits_status[(valve_nm-1)*3+valve_type,1]=\"Pass\";\r\n\t\t\t\t\tcontext.Write(temp +\"Valve\\tclose\\n\");\t\r\n\t\t\t\t\treturn 1;\r\n\t\t\t\t}\t\t\t\r\n\t\t}\r\n\treturn 1;\r\n\r\n}\r\n\r\npublic Int32 SetBit(Int32 Adr, Int32 BitNo, Int32 Bit)\r\n{\r\n\tInt32 BitMask;\r\n\tvar RetVal = Fpga_Read_Reg(Adr);\r\n\tInt32 RV = (Int32) RetVal.Value;\r\n\t\r\n\tif (Bit == 0x1) \r\n\t{\r\n\t\tBitMask = 0x1 << BitNo;\r\n\t\tRV = RV | BitMask;\r\n\t\tFpga_Write_Reg( Adr, RV );\r\n\t}\r\n\telse if (Bit == 0x0)\r\n\t{\r\n\t\tBitMask = ~(0x1 << BitNo);\r\n\t\tRV = RV & BitMask;\r\n\t\tFpga_Write_Reg(Adr, RV );\t\r\n\t}\r\n\treturn 1;\r\n}\r\n\r\nint Fpga_Write_Reg(Int32 Addr, Int32 Data)\r\n{\r\n\tvar response = context.Send<StubFpgaWriteRegResponse>(\"StubFpgaWriteRegRequest\" ,Addr, Data);\r\n\t\r\n\treturn 1;\r\n}\r\n\r\n\r\n\r\nStubFpgaReadRegResponse Fpga_Read_Reg(Int32 Addr)\r\n{\r\n var response = context.Send<StubFpgaReadRegResponse>(\"StubFpgaReadRegRequest\" ,Addr);\r\n\tresponse.Value = response.Value & 0xffff;\r\n\t\r\n\treturn response;\r\n}\r\n}"},{"$id":"28","Name":"Service.csx","IsEntryPoint":false,"Code":"using System;\r\nusing System.Collections.Generic;\r\nusing System.Collections.ObjectModel;\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Threading;\r\nusing System.Threading.Tasks;\r\nusing Google.Protobuf;\r\nusing Tango.BL.Enumerations;\r\nusing Tango.PMR.Stubs;\r\nusing Tango.PMR.Diagnostics;\r\nusing Tango.FSE.Common.Diagnostics;\r\nusing Tango.FSE.Procedures;\r\n\r\npublic class Service\r\n{\r\n public double Calc(double a, double b)\r\n {\r\n return a + b;\r\n }\r\n}"}]}} \ No newline at end of file
diff --git a/Software/Stubs Collection/Procedures/WHS Loop Disable.pproj b/Software/Stubs Collection/Procedures/WHS Loop Disable.pproj
index 767f1f3cc..8632288f2 100644
--- a/Software/Stubs Collection/Procedures/WHS Loop Disable.pproj
+++ b/Software/Stubs Collection/Procedures/WHS Loop Disable.pproj
@@ -1 +1 @@
-{"$id":"1","Name":"WHS Loop Disable","Description":null,"Scripts":{"$id":"2","$values":[{"$id":"3","Code":"using System;\r\nusing System.Collections.Generic;\r\nusing System.Collections.ObjectModel;\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Threading;\r\nusing System.Threading.Tasks;\r\nusing Google.Protobuf;\r\nusing Tango.BL.Enumerations;\r\nusing Tango.PMR.Stubs;\r\nusing Tango.PMR.Diagnostics;\r\nusing Tango.FSE.Common.Diagnostics;\r\nusing Tango.FSE.Procedures;\r\n\r\npublic class Program\r\n{\r\n public void OnExecute(IProcedureContext context)\r\n {\r\n\r\n\t\tint ControlLoopEnable = context.GetInput<int>(\"WasteControlLoop\");\r\n\t\t\r\n\t\tProgressRequest progressRequest = new ProgressRequest();\r\n\t\tprogressRequest.Amount = 0x3e8;\r\n\t\tprogressRequest.Delay = ControlLoopEnable*0x1000+2700;\r\n\r\n\t\tvar response = context.Send<ProgressResponse>(progressRequest);\r\n context.AddResult(ResultType.Passed, \"Success\", response.Progress);\r\n context.AddResult(ResultType.Failed, \"Failed\", response.Progress);\r\n\r\n\r\n }\r\n}","Name":"Program.csx","IsEntryPoint":true},{"$id":"4","Code":"using System;\r\nusing System.Collections.Generic;\r\nusing System.Collections.ObjectModel;\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Threading;\r\nusing System.Threading.Tasks;\r\nusing Google.Protobuf;\r\nusing Tango.BL.Enumerations;\r\nusing Tango.PMR.Stubs;\r\nusing Tango.PMR.Diagnostics;\r\nusing Tango.FSE.Common.Diagnostics;\r\nusing Tango.FSE.Procedures;\r\n\r\npublic class Service\r\n{\r\n public double Calc(double a, double b)\r\n {\r\n return a + b;\r\n }\r\n}","Name":"Service.csx","IsEntryPoint":false}]},"Inputs":{"$id":"5","$values":[{"$id":"6","Type":"Default","SelectionInputs":{"$id":"7","$values":[]},"DisplayName":"Waste Control Loop Enabled","Description":"Waste Control Loop Enabled","Key":"WasteControlLoop","Value":"1"}]},"ReferenceAssemblies":{"$id":"8","$values":[{"$id":"9","File":"C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\mscorlib.dll","HintType":"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"},{"$id":"10","File":"C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC_MSIL\\System.Core\\v4.0_4.0.0.0__b77a5c561934e089\\System.Core.dll","HintType":"System.Linq.Enumerable, System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"},{"$id":"11","File":"C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC_MSIL\\System.Windows.Forms\\v4.0_4.0.0.0__b77a5c561934e089\\System.Windows.Forms.dll","HintType":"System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"},{"$id":"12","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.FSE.Procedures.dll","HintType":"Tango.FSE.Procedures.ProcedureProject, Tango.FSE.Procedures, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"},{"$id":"13","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.FSE.Common.dll","HintType":"Tango.FSE.Common.Diagnostics.IDiagnosticsProvider, Tango.FSE.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"},{"$id":"14","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.BL.dll","HintType":"Tango.BL.Enumerations.TechMonitors, Tango.BL, Version=2.0.36.1608, Culture=neutral, PublicKeyToken=null"},{"$id":"15","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.PMR.dll","HintType":"Tango.PMR.Common.MessageType, Tango.PMR, Version=2.0.40.1608, Culture=neutral, PublicKeyToken=null"},{"$id":"16","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.Transport.dll","HintType":"Tango.Transport.ITransporter, Tango.Transport, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"},{"$id":"17","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.Integration.dll","HintType":"Tango.Integration.Operation.IMachineOperator, Tango.Integration, Version=2.0.31.1608, Culture=neutral, PublicKeyToken=null"},{"$id":"18","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Google.Protobuf.dll","HintType":"Google.Protobuf.IMessage, Google.Protobuf, Version=3.4.1.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604"},{"$id":"19","File":"C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC_MSIL\\System.Drawing\\v4.0_4.0.0.0__b03f5f7f11d50a3a\\System.Drawing.dll","HintType":"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"}]},"Dialogs":{"$id":"20","$values":[]},"ID":"eb9234b2-2aa0-4bf2-bfe4-dcc8de49bda6","ApartmentState":"MTA"} \ No newline at end of file
+{"$id":"1","Name":"WHS Loop Disable","Description":"This procedure controls the waste head flow control loop. Set the loop parameter to false to disable, to true to enable.","Scripts":{"$id":"2","$values":[{"$id":"3","Code":"using System;\r\nusing System.Collections.Generic;\r\nusing System.Collections.ObjectModel;\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Threading;\r\nusing System.Threading.Tasks;\r\nusing Google.Protobuf;\r\nusing Tango.BL.Enumerations;\r\nusing Tango.PMR.Stubs;\r\nusing Tango.PMR.Diagnostics;\r\nusing Tango.FSE.Common.Diagnostics;\r\nusing Tango.FSE.Procedures;\r\n\r\npublic class Program\r\n{\r\n public void OnExecute(IProcedureContext context)\r\n {\r\n\r\n\t\tint ControlLoopEnable = context.GetInput<int>(\"WasteControlLoop\");\r\n\t\t\r\n\t\tProgressRequest progressRequest = new ProgressRequest();\r\n\t\tprogressRequest.Amount = 0x3e8;\r\n\t\tprogressRequest.Delay = ControlLoopEnable*0x1000+2700;\r\n\r\n\t\tvar response = context.Send<ProgressResponse>(progressRequest);\r\n context.AddResult(ResultType.Passed, \"Success\", response.Progress);\r\n\r\n }\r\n}","Name":"Program.csx","IsEntryPoint":true},{"$id":"4","Code":"using System;\r\nusing System.Collections.Generic;\r\nusing System.Collections.ObjectModel;\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Threading;\r\nusing System.Threading.Tasks;\r\nusing Google.Protobuf;\r\nusing Tango.BL.Enumerations;\r\nusing Tango.PMR.Stubs;\r\nusing Tango.PMR.Diagnostics;\r\nusing Tango.FSE.Common.Diagnostics;\r\nusing Tango.FSE.Procedures;\r\n\r\npublic class Service\r\n{\r\n public double Calc(double a, double b)\r\n {\r\n return a + b;\r\n }\r\n}","Name":"Service.csx","IsEntryPoint":false}]},"Inputs":{"$id":"5","$values":[{"$id":"6","Type":"Selection","SelectionInputs":{"$id":"7","$values":[{"$id":"8","Name":"Enable WHS Control","Value":"1"},{"$id":"9","Name":"Disable WHS Control","Value":"0"}]},"DisplayName":"Waste Control Loop Enable","Description":"Waste Control Loop Enable/Disable","Key":"WasteControlLoop","Value":"0"}]},"Variables":{"$id":"10","$values":[]},"ReferenceAssemblies":{"$id":"11","$values":[{"$id":"12","File":"C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\mscorlib.dll","HintType":"System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"},{"$id":"13","File":"C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC_MSIL\\System.Core\\v4.0_4.0.0.0__b77a5c561934e089\\System.Core.dll","HintType":"System.Linq.Enumerable, System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"},{"$id":"14","File":"C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC_MSIL\\System.Windows.Forms\\v4.0_4.0.0.0__b77a5c561934e089\\System.Windows.Forms.dll","HintType":"System.Windows.Forms.Form, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"},{"$id":"15","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.FSE.Procedures.dll","HintType":"Tango.FSE.Procedures.ProcedureProject, Tango.FSE.Procedures, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"},{"$id":"16","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.FSE.Common.dll","HintType":"Tango.FSE.Common.Diagnostics.IDiagnosticsProvider, Tango.FSE.Common, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"},{"$id":"17","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.BL.dll","HintType":"Tango.BL.Enumerations.TechMonitors, Tango.BL, Version=2.0.36.1608, Culture=neutral, PublicKeyToken=null"},{"$id":"18","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.PMR.dll","HintType":"Tango.PMR.Common.MessageType, Tango.PMR, Version=2.0.40.1608, Culture=neutral, PublicKeyToken=null"},{"$id":"19","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.Transport.dll","HintType":"Tango.Transport.ITransporter, Tango.Transport, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"},{"$id":"20","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Tango.Integration.dll","HintType":"Tango.Integration.Operation.IMachineOperator, Tango.Integration, Version=2.0.31.1608, Culture=neutral, PublicKeyToken=null"},{"$id":"21","File":"C:\\Program Files (x86)\\Twine Solutions LTD\\Tango FSE\\Google.Protobuf.dll","HintType":"Google.Protobuf.IMessage, Google.Protobuf, Version=3.4.1.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604"},{"$id":"22","File":"C:\\WINDOWS\\Microsoft.Net\\assembly\\GAC_MSIL\\System.Drawing\\v4.0_4.0.0.0__b03f5f7f11d50a3a\\System.Drawing.dll","HintType":"System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"}]},"Resources":{"$id":"23","$values":[]},"Dialogs":{"$id":"24","$values":[]},"ID":"eb9234b2-2aa0-4bf2-bfe4-dcc8de49bda6","ApartmentState":"MTA"} \ No newline at end of file
diff --git a/Software/Stubs Collection/stubs/ERRFILE.TXT b/Software/Stubs Collection/stubs/ERRFILE.TXT
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/Software/Stubs Collection/stubs/ERRFILE.TXT
diff --git a/Software/Stubs Collection/stubs/Main card Watchdog test.cs b/Software/Stubs Collection/stubs/Main card Watchdog test.cs
new file mode 100644
index 000000000..3db075678
--- /dev/null
+++ b/Software/Stubs Collection/stubs/Main card Watchdog test.cs
@@ -0,0 +1,24 @@
+using System;
+using System.Text;
+using System.Linq;
+using System.Drawing;
+using System.Diagnostics;
+using System.Windows.Forms;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Collections.Generic;
+using Tango.PMR.Stubs;
+using Tango.Stubs;
+
+public void OnExecute(StubManager stubManager)
+{
+
+//"Set WFCF Value
+ProgressRequest progressRequest = new ProgressRequest();
+progressRequest.Amount = 0xAD9;
+progressRequest.Delay = 0;
+
+var response = stubManager.Run<ProgressResponse>(progressRequest);
+
+
+} \ No newline at end of file
diff --git a/Software/Stubs Collection/stubs/embeddedparametersbuild.cs b/Software/Stubs Collection/stubs/embeddedparametersbuild.cs
deleted file mode 100644
index 6d2b6298e..000000000
--- a/Software/Stubs Collection/stubs/embeddedparametersbuild.cs
+++ /dev/null
@@ -1,193 +0,0 @@
-using System;
-using System.Text;
-using System.Linq;
-using System.Drawing;
-using System.Diagnostics;
-using System.Windows.Forms;
-using System.Threading;
-using System.Threading.Tasks;
-using System.Collections.Generic;
-using Tango.PMR.Stubs;
-using Tango.Stubs;
-using Google.Protobuf;
-using Tango.PMR.EmbeddedParameters;
-using System.IO;
-using Tango.PMR.IO;
-
-
-public void OnExecute(StubManager stubManager)
-{
-
-
-ConfigurationParameters configurationParameters = new ConfigurationParameters();
-
-configurationParameters.BreakSensorLimit = 10;
-
-//how many samples to collect in diagnostics before sending
-configurationParameters.DiagnosticCollectionLimit = 3;
-
-//how many consecutive readout before declaring DC over/underheat alarm
-configurationParameters.OverHeatCountLimit = 3;
-configurationParameters.UnderHeatCountLimit = 3;
-
-// time of motor activity before opening the valve or after closing the valve, in milliseconds
-configurationParameters.CloseValveTimeout = 22;
-configurationParameters.OpenValveTimeout = 22;
-
-//backlash after filling - target pressure, timoeout, time staps (speed will be added in general parameters)
-configurationParameters.InitialDispenserPressure = 0.25;
-configurationParameters.InitialDispenserTimeout = 60000; //20 seconds
-configurationParameters.InitialDispenserTimeLag = 100;
-
-//job prepare - build pressure in dispensers - target pressure, timoeout, time staps, speed
-configurationParameters.DispenserBuildPressureSpeed = 960; //no more than 1000
-configurationParameters.DispenserBuildPressureLimit = 1.0;
-configurationParameters.DispenserBuildPressureTimeout = 180000;
-configurationParameters.DispenserBuildPressureLag = 100;
-
-//temperature band 1000 = 100% - thresholds for job start around target temprature - AC
-configurationParameters.ACHeatersLowerOperationLimit = 995;
-configurationParameters.ACHeatersUpperOperationLimit = 1005;
-
-//temperature band 1000 = 100% - thresholds for job start around target temprature - DC
-configurationParameters.DCHeatersLowerOperationLimit = 978;
-configurationParameters.DCHeatersUpperOperationLimit = 1005;
-
-// mid tank reading offset to add to the readout (OBSOLETE!)
-configurationParameters.MidTankPressureCorrection = 0.0;
-
-//waste factor for intersegment pressure building
-configurationParameters.DispenserPresegmentWFCF = 40;
-//how much time to start the WFCF process (pressure buildup) before segment start
-configurationParameters.IDSPreSegmentWFCFTimeBeforeSegment = 30000;
-
-//flag: start heaters according to saved process parameters upon init?
-configurationParameters.StartHeatingOnInitSequence = true;
-
-// current test for the heaters - alarm thresholds
-configurationParameters.CurrentAlarmLowLimit = 0.78;
-configurationParameters.CurrentAlarmHighLimit = 1.09;
-
-//currently not in use
-configurationParameters.IDSSegmentRefillTimeout = 5000;
-configurationParameters.IDSPreSegmentBuildupTime = 5000;
-//cleaning!!!!!!!!!!
-configurationParameters.IDSCleaningSpeed = 800;
-configurationParameters.IDSCleaningStopBeforeSegmentTime = 10000; //end of presegemnt
-configurationParameters.IDSCleaningStartSprayPreSegmentTime =2000; //beginning of presegment
-
-int Tup=3,Tdelay1=5,Tdelay2=20;
-/* Tup = LeftRockerSpeed/100;
- Tdelay1 = LeftRockerSpeed%100;
- Tdelay2 = RightRockerSpeed;
-*/
-configurationParameters.IDSLeftCleaningMotorSpeed = Tup*100+Tdelay1;
-configurationParameters.IDSRightCleaningMotorSpeed = Tdelay2;
-
-configurationParameters.SwitchToIdleTimeinSeconds = 3600;
-configurationParameters.IdleDrierTemperature = 80;
-configurationParameters.IdleHeadTemperature = 80;
-configurationParameters.IdleMixerTemperature = 0;
-configurationParameters.PowerOffTemperatureLimit = 60;
-
-//general parameters, ORDER MUST BE PRESERVED!!!!
-//check the dispensers hard limit alarms
-/*1*/
-Double checkHardLimitAlarms = new Double();
-
-checkHardLimitAlarms = 1.0;
-configurationParameters.GeneralParameters.Add(checkHardLimitAlarms);
-
-/*2*/
-Double checkCurrentAlarms = new Double();
-checkCurrentAlarms = 1.0;
-configurationParameters.GeneralParameters.Add(checkCurrentAlarms);
-//check the tamper alarms
-
-/*3*/
-Double checkTamperAlarms = new Double();
-checkTamperAlarms = 0.0;
-configurationParameters.GeneralParameters.Add(checkTamperAlarms);
-
-/*4*/
-Double checkMotorAlarms = new Double();
-checkMotorAlarms = 1.0;
-configurationParameters.GeneralParameters.Add(checkMotorAlarms);
-
-/*5*/
-Double WinderBackToBaseTime = new Double();
-WinderBackToBaseTime = 820.0;
-configurationParameters.GeneralParameters.Add(WinderBackToBaseTime);
-
-/*6*/
-Double DispenserInitialPressureSpeed = new Double();
-DispenserInitialPressureSpeed = 1050.0;
-configurationParameters.GeneralParameters.Add(DispenserInitialPressureSpeed);
-
-/*7*/
-Double SetDiagnosticMode = new Double();
-SetDiagnosticMode = 3.0;
-configurationParameters.GeneralParameters.Add(SetDiagnosticMode);
-
-/*8*/
-Double SetAutoFill = new Double();
-SetAutoFill = 3.0;
-configurationParameters.GeneralParameters.Add(SetAutoFill);
-
-File.WriteAllBytes("C:/temp/EmbParam.cfg",configurationParameters.ToBytes());
-
-byte[] fileBytes = File.ReadAllBytes("C:/temp/EmbParam.cfg");
-
-
-var config = ConfigurationParameters.Parser.ParseFrom(fileBytes);
-
-stubManager.Write( config);
-Thread.Sleep(1000);
-
-
-stubManager.Write("\n\n Deleting old file");
-
-DeleteRequest deleteRequest = new DeleteRequest();
-deleteRequest.Path = "SYSINFO//EmbParam.cfg";
-deleteRequest.Attribute = Tango.PMR.IO.FileAttribute.Unspecified;
-DeleteResponse response5 = stubManager.Run<DeleteResponse>(deleteRequest);
-
-
-Thread.Sleep(1000);
-stubManager.Write("\n\n Loading new file file");
-
-FileUploadRequest fileUploadRequest = new FileUploadRequest();
-fileUploadRequest.Path = "SYSINFO//EmbParam.cfg";
-fileUploadRequest.Length = (int)fileBytes.Length;
-FileUploadResponse response2 = stubManager.Run<FileUploadResponse>(fileUploadRequest);
-Thread.Sleep(1000);
-long chunk_size = response2.MaxChunkLength;
-
-FileStream fs = new FileStream("C:/temp/EmbParam.cfg",FileMode.Open);
-
-while (fs.Position < fs.Length)
-{
- stubManager.Write("Position "+ fs.Position+ " Length "+ fs.Length +"\n\n");
- FileChunkUploadRequest fileChunkUploadRequest = new FileChunkUploadRequest();
- fileChunkUploadRequest.UploadID = response2.UploadID;
- byte[] chunk = new byte[Math.Min(chunk_size,fs.Length - fs.Position)];
- fs.Read(chunk,0,chunk.Length);
- fileChunkUploadRequest.Buffer = ByteString.CopyFrom(chunk);
- var response3 = stubManager.Run<FileChunkUploadResponse>(fileChunkUploadRequest);
- Thread.Sleep(2000);
-
-}
-
-// activating the new file
-ProgressRequest progressRequest = new ProgressRequest();
-progressRequest.Amount = 0xCD;
-progressRequest.Delay = 0xCD;
-var response1 = stubManager.Run<ProgressResponse>(progressRequest);
-
-
-/*
-13:46:42.38: Executing script 'embeddedparametersbuild.cs'...
-{ "BreakSensorLimit": 10, "DiagnosticCollectionLimit": 1, "OverHeatCountLimit": 3, "UnderHeatCountLimit": 3, "CloseValveTimeout": 255, "OpenValveTimeout": 255, "InitialDispenserPressure": 1.5, "InitialDispenserTimeout": 60000, "InitialDispenserTimeLag": 100, "DispenserBuildPressureSpeed": 800, "DispenserBuildPressureLimit": 0.9, "DispenserBuildPressureTimeout": 80000, "DispenserBuildPressureLag": 50, "ACHeatersLowerOperationLimit": 995, "ACHeatersUpperOperationLimit": 1005, "DCHeatersLowerOperationLimit": 978, "DCHeatersUpperOperationLimit": 1005, "DispenserPresegmentWFCF": 80, "StartHeatingOnInitSequence": true, "GeneralParameters": [ 1, 1, 1, 1, 800, 1000 ], "CurrentAlarmLowLimit": 0.8, "CurrentAlarmHighLimit": 1.07, "IDSSegmentRefillTimeout": 5000, "IDSPreSegmentBuildupTime": 5000, "IDSCleaningSpeed": 50, "IDSCleaningStopBeforeSegmentTime": 3000, "IDSCleaningStartSprayPreSegmentTime": 1000, "IDSLeftCleaningMotorSpeed": 30, "IDSRightCleaningMotorSpeed": 23, "SwitchToIdleTimeinSeconds": 3600, "IdleDrierTemperature": 80, "IdleHeadTemperature": 80, "PowerOffTemperatureLimit": 50, "IDSPreSegmentWFCFTimeBeforeSegment": 1500 } */
-
-
-} \ No newline at end of file
diff --git a/Software/Stubs Collection/stubs/embeddedparametersbuild_w_cleaning.cs b/Software/Stubs Collection/stubs/embeddedparametersbuild_w_cleaning.cs
index 3b3768310..ee610b445 100644
--- a/Software/Stubs Collection/stubs/embeddedparametersbuild_w_cleaning.cs
+++ b/Software/Stubs Collection/stubs/embeddedparametersbuild_w_cleaning.cs
@@ -42,7 +42,7 @@ configurationParameters.InitialDispenserTimeLag = 100;
//job prepare - build pressure in dispensers - target pressure, timoeout, time staps, speed
configurationParameters.DispenserBuildPressureSpeed = 950; //no more than 1000
configurationParameters.DispenserBuildPressureLimit = 0.85;
-configurationParameters.DispenserBuildPressureTimeout = 180000;
+configurationParameters.DispenserBuildPressureTimeout = 420000; // 7 minutes - long prepare for 5 cycles build
configurationParameters.DispenserBuildPressureLag = 100;
//temperature band 1000 = 100% - thresholds for job start around target temprature - AC
@@ -76,7 +76,7 @@ configurationParameters.IDSCleaningSpeed = 800;
configurationParameters.IDSCleaningStopBeforeSegmentTime = 10000; //end of presegemnt
configurationParameters.IDSCleaningStartSprayPreSegmentTime =2000; //beginning of presegment
-int Tup = 8,Tdelay1 = 98,Tdelay2 = 198; //350nsec up, 1 second delay, 2 seconds before up again
+int Tup = 10,Tdelay1 = 98,Tdelay2 = 198; //350nsec up, 1 second delay, 2 seconds before up again
// Tup = LeftRockerSpeed/100;
// Tdelay1 = LeftRockerSpeed%100;
// Tdelay2 = RightRockerSpeed;
@@ -108,7 +108,7 @@ configurationParameters.GeneralParameters.Add(checkCurrentAlarms);
/*3*/
Double checkTamperAlarms = new Double();
-checkTamperAlarms = 1.0;
+checkTamperAlarms = 0.0;
configurationParameters.GeneralParameters.Add(checkTamperAlarms);
/*4*/
diff --git a/Software/Stubs Collection/stubs/embeddedparametersbuildand load.cs b/Software/Stubs Collection/stubs/embeddedparametersbuildand load.cs
deleted file mode 100644
index ed3e3f8d9..000000000
--- a/Software/Stubs Collection/stubs/embeddedparametersbuildand load.cs
+++ /dev/null
@@ -1,178 +0,0 @@
-using System;
-using System.Text;
-using System.Linq;
-using System.Drawing;
-using System.Diagnostics;
-using System.Windows.Forms;
-using System.Threading;
-using System.Threading.Tasks;
-using System.Collections.Generic;
-using Tango.PMR.Stubs;
-using Tango.Stubs;
-using Google.Protobuf;
-using Tango.PMR.EmbeddedParameters;
-using System.IO;
-using Tango.PMR.IO;
-
-
-public void OnExecute(StubManager stubManager)
-{
-
-
-ConfigurationParameters configurationParameters = new ConfigurationParameters();
-
-configurationParameters.BreakSensorLimit = 10;
-
-//how many samples to collect in diagnostics before sending
-configurationParameters.DiagnosticCollectionLimit = 3;
-
-//how many consecutive readout before declaring DC over/underheat alarm
-configurationParameters.OverHeatCountLimit = 3;
-configurationParameters.UnderHeatCountLimit = 3;
-
-// time of motor activity before opening the valve or after closing the valve, in milliseconds
-configurationParameters.CloseValveTimeout = 49;
-configurationParameters.OpenValveTimeout = 49;
-
-//backlash after filling - target pressure, timoeout, time staps (speed will be added in general parameters)
-configurationParameters.InitialDispenserPressure = 0.25;
-configurationParameters.InitialDispenserTimeout = 60000; //20 seconds
-configurationParameters.InitialDispenserTimeLag = 100;
-
-//job prepare - build pressure in dispensers - target pressure, timoeout, time staps, speed
-configurationParameters.DispenserBuildPressureSpeed = 950; //no more than 1000
-configurationParameters.DispenserBuildPressureLimit = 1.0;
-configurationParameters.DispenserBuildPressureTimeout = 180000;
-configurationParameters.DispenserBuildPressureLag = 50;
-
-//temperature band 1000 = 100% - thresholds for job start around target temprature - AC
-configurationParameters.ACHeatersLowerOperationLimit = 995;
-configurationParameters.ACHeatersUpperOperationLimit = 1005;
-
-//temperature band 1000 = 100% - thresholds for job start around target temprature - DC
-configurationParameters.DCHeatersLowerOperationLimit = 978;
-configurationParameters.DCHeatersUpperOperationLimit = 1005;
-
-// mid tank reading offset to add to the readout (OBSOLETE!)
-configurationParameters.MidTankPressureCorrection = 0.0;
-
-//waste factor for intersegment pressure building
-configurationParameters.DispenserPresegmentWFCF = 40;
-//how much time to start the WFCF process (pressure buildup) before segment start
-configurationParameters.IDSPreSegmentWFCFTimeBeforeSegment = 30000;
-
-//flag: start heaters according to saved process parameters upon init?
-configurationParameters.StartHeatingOnInitSequence = true;
-
-// current test for the heaters - alarm thresholds
-configurationParameters.CurrentAlarmLowLimit = 0.78;
-configurationParameters.CurrentAlarmHighLimit = 1.07;
-
-//currently not in use
-configurationParameters.IDSSegmentRefillTimeout = 5000;
-configurationParameters.IDSPreSegmentBuildupTime = 5000;
-//cleaning!!!!!!!!!!
-configurationParameters.IDSCleaningSpeed = 800;
-configurationParameters.IDSCleaningStopBeforeSegmentTime = 10000; //end of presegemnt
-configurationParameters.IDSCleaningStartSprayPreSegmentTime =2000; //beginning of presegment
-
-configurationParameters.IDSLeftCleaningMotorSpeed = 49;
-configurationParameters.IDSRightCleaningMotorSpeed = 49;
-
-configurationParameters.SwitchToIdleTimeinSeconds = 3600;
-configurationParameters.IdleDrierTemperature = 80;
-configurationParameters.IdleHeadTemperature = 80;
-configurationParameters.IdleMixerTemperature = 0;
-configurationParameters.PowerOffTemperatureLimit = 100;
-
-//general parameters, ORDER MUST BE PRESERVED!!!!
-//check the dispensers hard limit alarms
-/*1*/
-Double checkHardLimitAlarms = new Double();
-
-checkHardLimitAlarms = 1.0;
-configurationParameters.GeneralParameters.Add(checkHardLimitAlarms);
-
-/*2*/
-Double checkCurrentAlarms = new Double();
-checkCurrentAlarms = 1.0;
-configurationParameters.GeneralParameters.Add(checkCurrentAlarms);
-//check the tamper alarms
-
-/*3*/
-Double checkTamperAlarms = new Double();
-checkTamperAlarms = 0.0;
-configurationParameters.GeneralParameters.Add(checkTamperAlarms);
-
-/*4*/
-Double checkMotorAlarms = new Double();
-checkMotorAlarms = 1.0;
-configurationParameters.GeneralParameters.Add(checkMotorAlarms);
-
-/*5*/
-Double WinderBackToBaseTime = new Double();
-WinderBackToBaseTime = 820.0;
-configurationParameters.GeneralParameters.Add(WinderBackToBaseTime);
-
-/*6*/
-Double DispenserInitialPressureSpeed = new Double();
-DispenserInitialPressureSpeed = 1050.0;
-configurationParameters.GeneralParameters.Add(DispenserInitialPressureSpeed);
-
-/*7*/
-Double SetDiagnosticMode = new Double();
-SetDiagnosticMode = 3.0;
-configurationParameters.GeneralParameters.Add(SetDiagnosticMode);
-
-/*8*/
-Double SetAutoFill = new Double();
-SetAutoFill = 3.0;
-configurationParameters.GeneralParameters.Add(SetAutoFill);
-
-File.WriteAllBytes("C:/temp/EmbParam.cfg",configurationParameters.ToBytes());
-
-byte[] fileBytes = File.ReadAllBytes("C:/temp/EmbParam.cfg");
-
-
-var config = ConfigurationParameters.Parser.ParseFrom(fileBytes);
-
- stubManager.Write( config);
- Thread.Sleep(1000);
-stubManager.Write("\n\n Deleting old file");
-
-DeleteRequest deleteRequest = new DeleteRequest();
-deleteRequest.Path = "SYSINFO//EmbParam.cfg";
-deleteRequest.Attribute = Tango.PMR.IO.FileAttribute.Unspecified;
-DeleteResponse response5 = stubManager.Run<DeleteResponse>(deleteRequest);
-
- Thread.Sleep(1000);
-stubManager.Write("\n\n Loading new file file");
-
- FileUploadRequest fileUploadRequest = new FileUploadRequest();
-fileUploadRequest.Path = "SYSINFO//EmbParam.cfg";
-fileUploadRequest.Length = (int)fileBytes.Length;
-FileUploadResponse response2 = stubManager.Run<FileUploadResponse>(fileUploadRequest);
- Thread.Sleep(1000);
-long chunk_size = response2.MaxChunkLength;
-
-FileStream fs = new FileStream("C:/temp/EmbParam.cfg",FileMode.Open);
-
-while (fs.Position < fs.Length)
-{
- stubManager.Write("Position "+ fs.Position+ " Length "+ fs.Length +"\n\n");
- FileChunkUploadRequest fileChunkUploadRequest = new FileChunkUploadRequest();
- fileChunkUploadRequest.UploadID = response2.UploadID;
- byte[] chunk = new byte[Math.Min(chunk_size,fs.Length - fs.Position)];
- fs.Read(chunk,0,chunk.Length);
- fileChunkUploadRequest.Buffer = ByteString.CopyFrom(chunk);
- var response3 = stubManager.Run<FileChunkUploadResponse>(fileChunkUploadRequest);
- Thread.Sleep(2000);
-
-}
-
-/*
-13:46:42.38: Executing script 'embeddedparametersbuild.cs'...
-{ "BreakSensorLimit": 10, "DiagnosticCollectionLimit": 1, "OverHeatCountLimit": 3, "UnderHeatCountLimit": 3, "CloseValveTimeout": 255, "OpenValveTimeout": 255, "InitialDispenserPressure": 1.5, "InitialDispenserTimeout": 60000, "InitialDispenserTimeLag": 100, "DispenserBuildPressureSpeed": 800, "DispenserBuildPressureLimit": 0.9, "DispenserBuildPressureTimeout": 80000, "DispenserBuildPressureLag": 50, "ACHeatersLowerOperationLimit": 995, "ACHeatersUpperOperationLimit": 1005, "DCHeatersLowerOperationLimit": 978, "DCHeatersUpperOperationLimit": 1005, "DispenserPresegmentWFCF": 80, "StartHeatingOnInitSequence": true, "GeneralParameters": [ 1, 1, 1, 1, 800, 1000 ], "CurrentAlarmLowLimit": 0.8, "CurrentAlarmHighLimit": 1.07, "IDSSegmentRefillTimeout": 5000, "IDSPreSegmentBuildupTime": 5000, "IDSCleaningSpeed": 50, "IDSCleaningStopBeforeSegmentTime": 3000, "IDSCleaningStartSprayPreSegmentTime": 1000, "IDSLeftCleaningMotorSpeed": 30, "IDSRightCleaningMotorSpeed": 23, "SwitchToIdleTimeinSeconds": 3600, "IdleDrierTemperature": 80, "IdleHeadTemperature": 80, "PowerOffTemperatureLimit": 50, "IDSPreSegmentWFCFTimeBeforeSegment": 1500 } */
-
-
-} \ No newline at end of file
diff --git a/Software/Stubs Collection/stubs/technician view files/ARC head techboard.tpf b/Software/Stubs Collection/stubs/technician view files/ARC head techboard.tpf
new file mode 100644
index 000000000..902c1d414
--- /dev/null
+++ b/Software/Stubs Collection/stubs/technician view files/ARC head techboard.tpf
@@ -0,0 +1,2722 @@
+<?xml version="1.0"?>
+<MachineTechViewProject xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <Items />
+ <Tabs>
+ <MachineTechViewProjectTab>
+ <Name>Temperatures</Name>
+ <Items>
+ <TechItem xsi:type="DigitalOutItem">
+ <ID>e4892498-fa1a-413c-9dd8-633efaade51c</ID>
+ <Left>461</Left>
+ <Top>703.30530973452176</Top>
+ <Width>160</Width>
+ <Height>102.34070796460173</Height>
+ <Angle>0</Angle>
+ <ItemGuid>6b9cba1d-4acf-4992-97ad-e422bca6ada2</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ </TechItem>
+ <TechItem xsi:type="HeaterItem">
+ <ID>a15665e3-af39-42d8-8c06-97d770632e10</ID>
+ <Left>1015</Left>
+ <Top>597.31415929203365</Top>
+ <Width>207</Width>
+ <Height>184.4159292035398</Height>
+ <Angle>0</Angle>
+ <ItemGuid>6D6CFA18-5922-4AFE-84B3-2721CE128681</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <HeaterState>
+ <HeaterType>DryerAirHeater</HeaterType>
+ <SetPoint>180</SetPoint>
+ <CurrentValue>180.04999999999998</CurrentValue>
+ <IsActive>false</IsActive>
+ <IsRampingUp>false</IsRampingUp>
+ <IsInSetPoint>true</IsInSetPoint>
+ </HeaterState>
+ <SetPoint>180</SetPoint>
+ </TechItem>
+ <TechItem xsi:type="HeaterItem">
+ <ID>0ac64716-d30c-489b-939e-a26d06445866</ID>
+ <Left>909</Left>
+ <Top>676.91592920354287</Top>
+ <Width>130</Width>
+ <Height>100.31415929203541</Height>
+ <Angle>0</Angle>
+ <ItemGuid>A5DFC2DB-3B36-4377-96A0-D492CE785C00</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <HeaterState>
+ <HeaterType>DryerMainHeater</HeaterType>
+ <SetPoint>36</SetPoint>
+ <CurrentValue>195.07</CurrentValue>
+ <IsActive>false</IsActive>
+ <IsRampingUp>false</IsRampingUp>
+ <IsInSetPoint>true</IsInSetPoint>
+ </HeaterState>
+ <SetPoint>36</SetPoint>
+ </TechItem>
+ <TechItem xsi:type="HeaterItem">
+ <ID>181796d8-64f6-420a-8f37-9af9df67d6a9</ID>
+ <Left>776</Left>
+ <Top>676.15044247787159</Top>
+ <Width>127</Width>
+ <Height>101.3274336283186</Height>
+ <Angle>0</Angle>
+ <ItemGuid>86808B48-B7F9-43AD-840E-2A6A5987C305</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <HeaterState>
+ <HeaterType>DryerSecondaryHeater</HeaterType>
+ <SetPoint>0</SetPoint>
+ <CurrentValue>196.38</CurrentValue>
+ <IsActive>false</IsActive>
+ <IsRampingUp>false</IsRampingUp>
+ <IsInSetPoint>true</IsInSetPoint>
+ </HeaterState>
+ <SetPoint>0</SetPoint>
+ </TechItem>
+ <TechItem xsi:type="HeaterItem">
+ <ID>fd2bb3a3-a411-470d-bde7-0beaf84da059</ID>
+ <Left>848</Left>
+ <Top>115.38495575221202</Top>
+ <Width>186</Width>
+ <Height>195.56194690265494</Height>
+ <Angle>0</Angle>
+ <ItemGuid>8E764A14-0F84-4FEC-928B-32A2509CAD57</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <HeaterState>
+ <HeaterType>HeaterZone3</HeaterType>
+ <SetPoint>85</SetPoint>
+ <CurrentValue>85.02</CurrentValue>
+ <IsActive>false</IsActive>
+ <IsRampingUp>false</IsRampingUp>
+ <IsInSetPoint>true</IsInSetPoint>
+ </HeaterState>
+ <SetPoint>85</SetPoint>
+ </TechItem>
+ <TechItem xsi:type="HeaterItem">
+ <ID>7e8dd386-cca6-4d07-8a3e-af5403756002</ID>
+ <Left>1024</Left>
+ <Top>116.35840707964502</Top>
+ <Width>200</Width>
+ <Height>194.90707964601751</Height>
+ <Angle>0</Angle>
+ <ItemGuid>B4EE8CC0-EE2B-4ABE-BF09-9226860E756B</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <HeaterState>
+ <HeaterType>HeaterZone2</HeaterType>
+ <SetPoint>80</SetPoint>
+ <CurrentValue>80.52</CurrentValue>
+ <IsActive>false</IsActive>
+ <IsRampingUp>false</IsRampingUp>
+ <IsInSetPoint>true</IsInSetPoint>
+ </HeaterState>
+ <SetPoint>80</SetPoint>
+ </TechItem>
+ <TechItem xsi:type="HeaterItem">
+ <ID>32a91e5f-27c8-490d-b187-8e39b6626a13</ID>
+ <Left>1221</Left>
+ <Top>116.60619469026824</Top>
+ <Width>170</Width>
+ <Height>192.69026548672593</Height>
+ <Angle>0</Angle>
+ <ItemGuid>27E7BB74-81C3-4EF2-80AE-962F111C441F</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <HeaterState>
+ <HeaterType>HeaterZone1</HeaterType>
+ <SetPoint>80</SetPoint>
+ <CurrentValue>80.19</CurrentValue>
+ <IsActive>false</IsActive>
+ <IsRampingUp>false</IsRampingUp>
+ <IsInSetPoint>true</IsInSetPoint>
+ </HeaterState>
+ <SetPoint>80</SetPoint>
+ </TechItem>
+ <TechItem xsi:type="HeaterItem">
+ <ID>c844235a-8a29-4c2e-a964-e8f546d2ced7</ID>
+ <Left>1212</Left>
+ <Top>599.55752212389427</Top>
+ <Width>173</Width>
+ <Height>183.40265486725662</Height>
+ <Angle>0</Angle>
+ <ItemGuid>42A62A48-F1D5-4BB6-AFEA-6A7DF6DCF626</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <HeaterState>
+ <HeaterType>MixerHeater</HeaterType>
+ <SetPoint>80</SetPoint>
+ <CurrentValue>79.08</CurrentValue>
+ <IsActive>false</IsActive>
+ <IsRampingUp>false</IsRampingUp>
+ <IsInSetPoint>true</IsInSetPoint>
+ </HeaterState>
+ <SetPoint>80</SetPoint>
+ </TechItem>
+ <TechItem xsi:type="HeaterItem">
+ <ID>e6b3eb18-482b-450e-b8a8-d2ac6bba4fd4</ID>
+ <Left>1033</Left>
+ <Top>341.74778761061987</Top>
+ <Width>186</Width>
+ <Height>195.56194690265494</Height>
+ <Angle>0</Angle>
+ <ItemGuid>D6771DF4-771E-4D62-B6BA-BDE361C0A0F3</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <HeaterState>
+ <HeaterType>HeaterZone5</HeaterType>
+ <SetPoint>0</SetPoint>
+ <CurrentValue>1.22</CurrentValue>
+ <IsActive>false</IsActive>
+ <IsRampingUp>false</IsRampingUp>
+ <IsInSetPoint>true</IsInSetPoint>
+ </HeaterState>
+ <SetPoint>0</SetPoint>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>f9936dba-cef8-41e3-a715-eb629dca1870</ID>
+ <Left>327</Left>
+ <Top>682.06637168140855</Top>
+ <Width>131</Width>
+ <Height>109.43362831858394</Height>
+ <Angle>0</Angle>
+ <ItemGuid>1778C1A7-AFB5-42F9-9E00-E80D30D9FC0A</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>0</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="TextItem">
+ <ID>5f2610dc-3b9d-4302-b8f5-77a5e1c73b8c</ID>
+ <Left>1027.9999999999973</Left>
+ <Top>291.07079646017547</Top>
+ <Width>44</Width>
+ <Height>42.557522123893705</Height>
+ <Angle>0</Angle>
+ <ColorNumber>-14774017</ColorNumber>
+ <Text />
+ </TechItem>
+ <TechItem xsi:type="TextItem">
+ <ID>eadb5257-47a2-4336-a72a-f2d157fe70cb</ID>
+ <Left>907.99999999999909</Left>
+ <Top>295.35840707964616</Top>
+ <Width>44</Width>
+ <Height>42.557522123893705</Height>
+ <Angle>0</Angle>
+ <ColorNumber>-14774017</ColorNumber>
+ <Text />
+ </TechItem>
+ <TechItem xsi:type="TextItem">
+ <ID>6c59af66-169a-46e0-89ae-a81e3e619043</ID>
+ <Left>785.00000000000159</Left>
+ <Top>288.5000000000004</Top>
+ <Width>44</Width>
+ <Height>42.557522123893705</Height>
+ <Angle>0</Angle>
+ <ColorNumber>-14774017</ColorNumber>
+ <Text />
+ </TechItem>
+ <TechItem xsi:type="TextItem">
+ <ID>3b32b9a8-f300-443f-950e-c49f81678bac</ID>
+ <Left>624.99999999999966</Left>
+ <Top>285.86725663716874</Top>
+ <Width>44</Width>
+ <Height>42.557522123893705</Height>
+ <Angle>0</Angle>
+ <ColorNumber>-14774017</ColorNumber>
+ <Text />
+ </TechItem>
+ <TechItem xsi:type="PidItem">
+ <ID>f6d44793-ed44-46ed-8854-eacbc11af10c</ID>
+ <Left>624</Left>
+ <Top>697.74778761062794</Top>
+ <Width>155</Width>
+ <Height>96.261061946902714</Height>
+ <Angle>0</Angle>
+ <ItemGuid>df38139e-0026-46bc-b72f-df5f9eec80f7</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ </TechItem>
+ <TechItem xsi:type="MonitorRecorderItem">
+ <ID>43793f93-da64-4409-b583-bca498f641e6</ID>
+ <Left>345.00000000002086</Left>
+ <Top>136.75221238937925</Top>
+ <Width>203</Width>
+ <Height>107.40707964601774</Height>
+ <Angle>0</Angle>
+ <ColorNumber>-1</ColorNumber>
+ <SelectedMonitorsGuids>
+ <string>D023F15D-3555-48E9-A9E9-5DF99F60D791</string>
+ <string>94F3E5A1-413E-4EA0-BDE1-F0625BFF7910</string>
+ <string>AFB7B6F7-8FFB-4A7F-B814-04F0C163CAA1</string>
+ <string>C8AB34C4-F921-4329-817A-7698DDAD01C6</string>
+ <string>48E8DD1B-46EC-4576-B513-7E734503B6DA</string>
+ <string>A8DB1D27-6B25-4FB4-A3F5-46A29BA51955</string>
+ <string>D7585119-4A42-4370-8F1E-F3E62553E588</string>
+ <string>098F7CAB-030C-46B0-B2B8-A85AF2253032</string>
+ </SelectedMonitorsGuids>
+ </TechItem>
+ <TechItem xsi:type="HeaterItem">
+ <ID>be9db1fd-d408-4f1c-a15a-d6ffe58fafb6</ID>
+ <Left>1225</Left>
+ <Top>341.14159292034878</Top>
+ <Width>175</Width>
+ <Height>193.42920353982305</Height>
+ <Angle>0</Angle>
+ <ItemGuid>188285E5-1493-4BED-8269-91743770A631</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <HeaterState>
+ <HeaterType>HeaterZone7</HeaterType>
+ <SetPoint>0</SetPoint>
+ <CurrentValue>1.17</CurrentValue>
+ <IsActive>false</IsActive>
+ <IsRampingUp>false</IsRampingUp>
+ <IsInSetPoint>true</IsInSetPoint>
+ </HeaterState>
+ <SetPoint>0</SetPoint>
+ </TechItem>
+ <TechItem xsi:type="TextItem">
+ <ID>f129ea0d-9abb-437f-928e-1cd1f569db2a</ID>
+ <Left>1190.0000000000025</Left>
+ <Top>294.69026548672929</Top>
+ <Width>39</Width>
+ <Height>38.504424778760836</Height>
+ <Angle>0</Angle>
+ <ColorNumber>-14774017</ColorNumber>
+ <Text />
+ </TechItem>
+ <TechItem xsi:type="TextItem">
+ <ID>217c677a-3e11-4a7c-959b-616dae1259dd</ID>
+ <Left>1369</Left>
+ <Top>295.87168141592934</Top>
+ <Width>44</Width>
+ <Height>42.557522123893705</Height>
+ <Angle>0</Angle>
+ <ColorNumber>-14774017</ColorNumber>
+ <Text />
+ </TechItem>
+ <TechItem xsi:type="ProcessParametersItem">
+ <ID>21aa11c9-3d35-4902-901a-b9ed45117e09</ID>
+ <Left>653</Left>
+ <Top>860.82743362831877</Top>
+ <Width>382</Width>
+ <Height>223.93362831858394</Height>
+ <Angle>0</Angle>
+ <ColorNumber>-14774017</ColorNumber>
+ <ProcessParameters>
+ <ID>0</ID>
+ <Guid>811430c0-2afc-4e9b-8077-a74e1fd2f825</Guid>
+ <LastUpdated>2020-01-14T11:41:02.8729031Z</LastUpdated>
+ <Name>Process parameters 3</Name>
+ <DyeingSpeed>0</DyeingSpeed>
+ <MinInkUptake>0</MinInkUptake>
+ <MaxInkUptake>0</MaxInkUptake>
+ <FeederTension>0</FeederTension>
+ <PullerTension>0</PullerTension>
+ <WinderTension>0</WinderTension>
+ <MixerTemp>0</MixerTemp>
+ <HeadZone1Temp>0</HeadZone1Temp>
+ <HeadZone2Temp>100</HeadZone2Temp>
+ <HeadZone3Temp>0</HeadZone3Temp>
+ <HeadZone4Temp>0</HeadZone4Temp>
+ <HeadZone5Temp>0</HeadZone5Temp>
+ <HeadZone6Temp>0</HeadZone6Temp>
+ <DryerAirFlow>0</DryerAirFlow>
+ <DryerZone1Temp>0</DryerZone1Temp>
+ <DryerZone2Temp>0</DryerZone2Temp>
+ <DryerZone3Temp>0</DryerZone3Temp>
+ <DryerBufferLength>0</DryerBufferLength>
+ <HeadAirFlow>0</HeadAirFlow>
+ <TableIndex>0</TableIndex>
+ <HeadZone7Temp>0</HeadZone7Temp>
+ <HeadZone8Temp>0</HeadZone8Temp>
+ <HeadZone9Temp>0</HeadZone9Temp>
+ <HeadZone10Temp>0</HeadZone10Temp>
+ <HeadZone11Temp>0</HeadZone11Temp>
+ <HeadZone12Temp>0</HeadZone12Temp>
+ <RBlowerFlow>0</RBlowerFlow>
+ <RBlowerTemp>0</RBlowerTemp>
+ <LBlowerFlow>0</LBlowerFlow>
+ <LBlowerTemp>0</LBlowerTemp>
+ <PressureBuildUp>0</PressureBuildUp>
+ </ProcessParameters>
+ <ParametersIndices>
+ <ParameterIndex>
+ <Name>Name</Name>
+ <Index>0</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Dyeing Speed</Name>
+ <Index>1</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Min Ink Uptake</Name>
+ <Index>2</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Max Ink Uptake</Name>
+ <Index>3</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Feeder Tension</Name>
+ <Index>4</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Puller Tension</Name>
+ <Index>5</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Winder Tension</Name>
+ <Index>6</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Mixer Temp</Name>
+ <Index>7</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Head Zone 1 Temp</Name>
+ <Index>8</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Head Zone 2 Temp</Name>
+ <Index>9</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Head Zone 3 Temp</Name>
+ <Index>10</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Head Zone 4 Temp</Name>
+ <Index>11</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Head Zone 5 Temp</Name>
+ <Index>12</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Head Zone 6 Temp</Name>
+ <Index>13</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Dryer Air Flow</Name>
+ <Index>14</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Dryer Zone 1 Temp</Name>
+ <Index>15</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Dryer Zone 2 Temp</Name>
+ <Index>16</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Dryer Zone 3 Temp</Name>
+ <Index>17</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Dryer Buffer Length</Name>
+ <Index>18</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Head Air Flow</Name>
+ <Index>19</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Process Parameters Tables Group Guid</Name>
+ <Index>20</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Table Index</Name>
+ <Index>21</Index>
+ </ParameterIndex>
+ </ParametersIndices>
+ </TechItem>
+ <TechItem xsi:type="DancerItem">
+ <ID>d3f502ea-76dd-48c3-b401-7f5fb7925a72</ID>
+ <Left>283</Left>
+ <Top>565.19469026548632</Top>
+ <Width>93</Width>
+ <Height>82.774336283185448</Height>
+ <Angle>0</Angle>
+ <ItemGuid>3EEE3B24-55DD-49F2-9339-F83F883BB908</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ </TechItem>
+ <TechItem xsi:type="HeaterItem">
+ <ID>e502555c-95b0-4688-b5e3-8becb30fc62c</ID>
+ <Left>1382.875</Left>
+ <Top>116.79102777534303</Top>
+ <Width>212</Width>
+ <Height>190.06194690265767</Height>
+ <Angle>0</Angle>
+ <ItemGuid>F8C1BA7F-F6DF-414D-BAF5-D4CB292F91F6</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <HeaterState>
+ <HeaterType>HeadCoverHeater1</HeaterType>
+ <SetPoint>250</SetPoint>
+ <CurrentValue>250</CurrentValue>
+ <IsActive>true</IsActive>
+ <IsRampingUp>false</IsRampingUp>
+ <IsInSetPoint>true</IsInSetPoint>
+ </HeaterState>
+ <SetPoint>250</SetPoint>
+ </TechItem>
+ <TechItem xsi:type="HeaterItem">
+ <ID>0f7a35fc-e363-45b2-948d-ba66f91e4f0d</ID>
+ <Left>1401.8333333333333</Left>
+ <Top>342.54486112328044</Top>
+ <Width>187</Width>
+ <Height>189.87168141593145</Height>
+ <Angle>0</Angle>
+ <ItemGuid>F39B952A-6194-4055-A5CB-A3421BFE0F9B</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <HeaterState>
+ <HeaterType>HeadCoverHeater2</HeaterType>
+ <SetPoint>250</SetPoint>
+ <CurrentValue>250.04999999999998</CurrentValue>
+ <IsActive>true</IsActive>
+ <IsRampingUp>false</IsRampingUp>
+ <IsInSetPoint>true</IsInSetPoint>
+ </HeaterState>
+ <SetPoint>250</SetPoint>
+ </TechItem>
+ <TechItem xsi:type="ProcessParametersItem">
+ <ID>379cc480-084f-4349-bb87-2c18b3c839e4</ID>
+ <Left>17</Left>
+ <Top>26.340707964601791</Top>
+ <Width>255</Width>
+ <Height>317.65929203539906</Height>
+ <Angle>0</Angle>
+ <ColorNumber>-14774017</ColorNumber>
+ <ProcessParameters>
+ <ID>0</ID>
+ <Guid>77e783e1-c5bb-4eac-8768-c9a28fc69c97</Guid>
+ <LastUpdated>2020-03-04T15:02:12.3146789Z</LastUpdated>
+ <Name>Process parameters 4</Name>
+ <DyeingSpeed>50</DyeingSpeed>
+ <MinInkUptake>0</MinInkUptake>
+ <MaxInkUptake>0</MaxInkUptake>
+ <FeederTension>9</FeederTension>
+ <PullerTension>0</PullerTension>
+ <WinderTension>0</WinderTension>
+ <MixerTemp>80</MixerTemp>
+ <HeadZone1Temp>80</HeadZone1Temp>
+ <HeadZone2Temp>80</HeadZone2Temp>
+ <HeadZone3Temp>90</HeadZone3Temp>
+ <HeadZone4Temp>100</HeadZone4Temp>
+ <HeadZone5Temp>110</HeadZone5Temp>
+ <HeadZone6Temp>120</HeadZone6Temp>
+ <DryerAirFlow>6</DryerAirFlow>
+ <DryerZone1Temp>180</DryerZone1Temp>
+ <DryerZone2Temp>0</DryerZone2Temp>
+ <DryerZone3Temp>0</DryerZone3Temp>
+ <DryerBufferLength>30</DryerBufferLength>
+ <HeadAirFlow>6</HeadAirFlow>
+ <TableIndex>0</TableIndex>
+ <HeadZone7Temp>135</HeadZone7Temp>
+ <HeadZone8Temp>135</HeadZone8Temp>
+ <HeadZone9Temp>135</HeadZone9Temp>
+ <HeadZone10Temp>135</HeadZone10Temp>
+ <HeadZone11Temp>140</HeadZone11Temp>
+ <HeadZone12Temp>140</HeadZone12Temp>
+ <RBlowerFlow>120</RBlowerFlow>
+ <RBlowerTemp>169</RBlowerTemp>
+ <LBlowerFlow>110</LBlowerFlow>
+ <LBlowerTemp>169</LBlowerTemp>
+ <PressureBuildUp>0</PressureBuildUp>
+ </ProcessParameters>
+ <ParametersIndices>
+ <ParameterIndex>
+ <Name>Process Parameters Tables Group Guid</Name>
+ <Index>0</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Name</Name>
+ <Index>1</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Table Index</Name>
+ <Index>2</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Dyeing Speed</Name>
+ <Index>3</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Min Ink Uptake</Name>
+ <Index>4</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Max Ink Uptake</Name>
+ <Index>5</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Feeder Tension</Name>
+ <Index>6</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Puller Tension</Name>
+ <Index>7</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Winder Tension</Name>
+ <Index>8</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Mixer Temp</Name>
+ <Index>9</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Head Zone 1 Temp</Name>
+ <Index>10</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Head Zone 2 Temp</Name>
+ <Index>11</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Head Zone 3 Temp</Name>
+ <Index>12</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Head Zone 4 Temp</Name>
+ <Index>13</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Head Zone 5 Temp</Name>
+ <Index>14</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Head Zone 6 Temp</Name>
+ <Index>15</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Head Zone 7 Temp</Name>
+ <Index>16</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Head Zone 8 Temp</Name>
+ <Index>17</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Head Zone 9 Temp</Name>
+ <Index>18</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Head Zone 10 Temp</Name>
+ <Index>19</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Head Zone 11 Temp</Name>
+ <Index>20</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Head Zone 12 Temp</Name>
+ <Index>21</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>R Blower Flow</Name>
+ <Index>22</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>R Blower Temp</Name>
+ <Index>23</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>L Blower Flow</Name>
+ <Index>24</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>L Blower Temp</Name>
+ <Index>25</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Dryer Zone 1 Temp</Name>
+ <Index>26</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Dryer Zone 2 Temp</Name>
+ <Index>27</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Dryer Zone 3 Temp</Name>
+ <Index>28</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Dryer Air Flow</Name>
+ <Index>29</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Head Air Flow</Name>
+ <Index>30</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Dryer Buffer Length</Name>
+ <Index>31</Index>
+ </ParameterIndex>
+ </ParametersIndices>
+ </TechItem>
+ <TechItem xsi:type="ProcessParametersItem">
+ <ID>9b9fde94-ce8c-4401-8961-9d1d44ae2bcf</ID>
+ <Left>24</Left>
+ <Top>364.40265486725747</Top>
+ <Width>250</Width>
+ <Height>310.15486725663669</Height>
+ <Angle>0</Angle>
+ <ColorNumber>-14774017</ColorNumber>
+ <ProcessParameters>
+ <ID>0</ID>
+ <Guid>e7434743-ec18-4ae3-91a9-e25db760963d</Guid>
+ <LastUpdated>2020-03-04T15:03:44.3914568Z</LastUpdated>
+ <Name>Process parameters 5</Name>
+ <DyeingSpeed>0</DyeingSpeed>
+ <MinInkUptake>0</MinInkUptake>
+ <MaxInkUptake>0</MaxInkUptake>
+ <FeederTension>0</FeederTension>
+ <PullerTension>0</PullerTension>
+ <WinderTension>0</WinderTension>
+ <MixerTemp>0</MixerTemp>
+ <HeadZone1Temp>0</HeadZone1Temp>
+ <HeadZone2Temp>0</HeadZone2Temp>
+ <HeadZone3Temp>0</HeadZone3Temp>
+ <HeadZone4Temp>0</HeadZone4Temp>
+ <HeadZone5Temp>0</HeadZone5Temp>
+ <HeadZone6Temp>0</HeadZone6Temp>
+ <DryerAirFlow>5</DryerAirFlow>
+ <DryerZone1Temp>180</DryerZone1Temp>
+ <DryerZone2Temp>0</DryerZone2Temp>
+ <DryerZone3Temp>0</DryerZone3Temp>
+ <DryerBufferLength>0</DryerBufferLength>
+ <HeadAirFlow>5</HeadAirFlow>
+ <TableIndex>0</TableIndex>
+ <HeadZone7Temp>0</HeadZone7Temp>
+ <HeadZone8Temp>0</HeadZone8Temp>
+ <HeadZone9Temp>0</HeadZone9Temp>
+ <HeadZone10Temp>0</HeadZone10Temp>
+ <HeadZone11Temp>0</HeadZone11Temp>
+ <HeadZone12Temp>0</HeadZone12Temp>
+ <RBlowerFlow>120</RBlowerFlow>
+ <RBlowerTemp>0</RBlowerTemp>
+ <LBlowerFlow>120</LBlowerFlow>
+ <LBlowerTemp>0</LBlowerTemp>
+ <PressureBuildUp>0</PressureBuildUp>
+ </ProcessParameters>
+ <ParametersIndices>
+ <ParameterIndex>
+ <Name>Process Parameters Tables Group Guid</Name>
+ <Index>0</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Name</Name>
+ <Index>1</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Table Index</Name>
+ <Index>2</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Dyeing Speed</Name>
+ <Index>3</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Min Ink Uptake</Name>
+ <Index>4</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Max Ink Uptake</Name>
+ <Index>5</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Feeder Tension</Name>
+ <Index>6</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Puller Tension</Name>
+ <Index>7</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Winder Tension</Name>
+ <Index>8</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Mixer Temp</Name>
+ <Index>9</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Head Zone 1 Temp</Name>
+ <Index>10</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Head Zone 2 Temp</Name>
+ <Index>11</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Head Zone 3 Temp</Name>
+ <Index>12</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Head Zone 4 Temp</Name>
+ <Index>13</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Head Zone 5 Temp</Name>
+ <Index>14</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Head Zone 6 Temp</Name>
+ <Index>15</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Head Zone 7 Temp</Name>
+ <Index>16</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Head Zone 8 Temp</Name>
+ <Index>17</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Head Zone 9 Temp</Name>
+ <Index>18</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Head Zone 10 Temp</Name>
+ <Index>19</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Head Zone 11 Temp</Name>
+ <Index>20</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Head Zone 12 Temp</Name>
+ <Index>21</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>R Blower Flow</Name>
+ <Index>22</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>R Blower Temp</Name>
+ <Index>23</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>L Blower Flow</Name>
+ <Index>24</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>L Blower Temp</Name>
+ <Index>25</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Dryer Zone 1 Temp</Name>
+ <Index>26</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Dryer Zone 2 Temp</Name>
+ <Index>27</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Dryer Zone 3 Temp</Name>
+ <Index>28</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Dryer Air Flow</Name>
+ <Index>29</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Head Air Flow</Name>
+ <Index>30</Index>
+ </ParameterIndex>
+ <ParameterIndex>
+ <Name>Dryer Buffer Length</Name>
+ <Index>31</Index>
+ </ParameterIndex>
+ </ParametersIndices>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>82576c3f-1790-4074-97a3-65a12bd812c1</ID>
+ <Left>448</Left>
+ <Top>562.51327433628489</Top>
+ <Width>131</Width>
+ <Height>109.43362831858394</Height>
+ <Angle>0</Angle>
+ <ItemGuid>94F3E5A1-413E-4EA0-BDE1-F0625BFF7910</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>2</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>8a68cdf4-136b-4db4-bc4e-b3157790be6a</ID>
+ <Left>596</Left>
+ <Top>565.796460176992</Top>
+ <Width>131</Width>
+ <Height>109.43362831858394</Height>
+ <Angle>0</Angle>
+ <ItemGuid>FE0D0A56-5795-4C5A-8E09-939FBB35C441</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>2</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>a842a172-2661-4190-961d-af98e9eb63e5</ID>
+ <Left>554</Left>
+ <Top>9.1150442477876368</Top>
+ <Width>167</Width>
+ <Height>69.9159292035398</Height>
+ <Angle>0</Angle>
+ <ItemGuid>D59EFB38-79D9-446C-BCB5-92D8FDA900E4</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>2</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>8979f624-9190-4eaf-9157-0a74be19c198</ID>
+ <Left>750</Left>
+ <Top>8.1017699115044479</Top>
+ <Width>161</Width>
+ <Height>62.823008849557539</Height>
+ <Angle>0</Angle>
+ <ItemGuid>9F98B9D3-F989-4D03-90E8-721671835E0B</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>2</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>c2e5796d-c2cb-495c-becb-a52993a5729f</ID>
+ <Left>346</Left>
+ <Top>6.07522123893807</Top>
+ <Width>181</Width>
+ <Height>68.902654867256615</Height>
+ <Angle>0</Angle>
+ <ItemGuid>1778C1A7-AFB5-42F9-9E00-E80D30D9FC02</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>2</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>65283da8-5813-4769-a803-43c97cacab10</ID>
+ <Left>953</Left>
+ <Top>19.769911504424272</Top>
+ <Width>161</Width>
+ <Height>62.823008849557539</Height>
+ <Angle>0</Angle>
+ <ItemGuid>055D0A38-09BD-490D-9852-12B06A4B22F2</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>2</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="BlowerItem">
+ <ID>c667e35c-8a9d-4f6f-bd45-37bf90f05e2a</ID>
+ <Left>77</Left>
+ <Top>710.30088495575228</Top>
+ <Width>227</Width>
+ <Height>69.915929203539918</Height>
+ <Angle>0</Angle>
+ <ItemGuid>B6FE07F8-2435-495D-ABFE-358C76812413</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>b5524d9f-9c3a-4ef1-b9da-410335621cbb</ID>
+ <Left>780</Left>
+ <Top>346.53539823008856</Top>
+ <Width>188</Width>
+ <Height>74.982300884955748</Height>
+ <Angle>0</Angle>
+ <ItemGuid>0E3AB840-8B2C-4930-9208-E1EBB1F0134B</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>2</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>7ae4982d-57a1-4aef-a12e-bfd9507bee5f</ID>
+ <Left>798</Left>
+ <Top>446.84955752212392</Top>
+ <Width>194</Width>
+ <Height>81.061946902654824</Height>
+ <Angle>0</Angle>
+ <ItemGuid>A7064ADF-D57C-4F3C-ADBB-EE7606E2BD12</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>2</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>872b0d70-353a-4358-b47a-fa6a816cb3d7</ID>
+ <Left>585</Left>
+ <Top>344.50884955752218</Top>
+ <Width>172</Width>
+ <Height>86.128318584070826</Height>
+ <Angle>0</Angle>
+ <ItemGuid>A405F987-73B5-4B3C-93D5-C9F968BD1FF5</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>2</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>104fcafe-6135-4784-88ee-8cd3ca8732a2</ID>
+ <Left>596</Left>
+ <Top>450.90265486725667</Top>
+ <Width>172</Width>
+ <Height>72.955752212389314</Height>
+ <Angle>0</Angle>
+ <ItemGuid>20768F26-8D03-4660-8355-B29C595DFCB2</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>2</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="BlowerItem">
+ <ID>1ef4079e-925c-41b6-a5b0-5710a7258526</ID>
+ <Left>318</Left>
+ <Top>344.50884955752218</Top>
+ <Width>227</Width>
+ <Height>69.915929203539918</Height>
+ <Angle>0</Angle>
+ <ItemGuid>998B5E61-3119-443D-ABAA-EFBC283B1021</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ </TechItem>
+ <TechItem xsi:type="BlowerItem">
+ <ID>d0bc8dfb-339b-477f-93cd-53d23f50930e</ID>
+ <Left>331</Left>
+ <Top>457.99557522123888</Top>
+ <Width>227</Width>
+ <Height>69.915929203539918</Height>
+ <Angle>0</Angle>
+ <ItemGuid>080EB945-8E52-4876-9704-F9908FD26967</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ </TechItem>
+ </Items>
+ </MachineTechViewProjectTab>
+ <MachineTechViewProjectTab>
+ <Name>Thread</Name>
+ <Items>
+ <TechItem xsi:type="MonitorItem">
+ <ID>50bae43f-8b1a-4279-9238-b976a0c72af3</ID>
+ <Left>1530</Left>
+ <Top>193.19911504424795</Top>
+ <Width>169</Width>
+ <Height>181.37610619469029</Height>
+ <Angle>0</Angle>
+ <ItemGuid>A8DB1D27-6B25-4FB4-A3F5-46A29BA51955</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>2</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>68eef943-2151-4df5-be61-044c3865606e</ID>
+ <Left>1172</Left>
+ <Top>145.78318584070678</Top>
+ <Width>175</Width>
+ <Height>167.827433628319</Height>
+ <Angle>0</Angle>
+ <ItemGuid>96B89605-F999-43FE-A1CD-2645BFB33A36</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>2</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>6be024c6-3d1b-4267-9b77-44473aba56b7</ID>
+ <Left>988</Left>
+ <Top>143.32300884955998</Top>
+ <Width>190</Width>
+ <Height>167.09734513274049</Height>
+ <Angle>0</Angle>
+ <ItemGuid>FC60060A-3736-4910-B41A-FF6DABDF0E9E</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>2</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>7c720f3b-00e1-49dd-92f9-fdd1e9686623</ID>
+ <Left>817</Left>
+ <Top>142.42035398230098</Top>
+ <Width>169</Width>
+ <Height>168.31858407079625</Height>
+ <Angle>0</Angle>
+ <ItemGuid>4CE6A82E-D841-4D33-BBB2-11F0743A441C</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>2</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="SingleGraphItem">
+ <ID>3ebd6759-521b-4ed1-a353-ee1ad7801f28</ID>
+ <Left>922</Left>
+ <Top>516.43362831858417</Top>
+ <Width>439</Width>
+ <Height>304.995575221239</Height>
+ <Angle>0</Angle>
+ <ItemGuid>D126DB23-784B-4F0C-8F88-D89A65A7549F</ItemGuid>
+ <ColorNumber>-14774017</ColorNumber>
+ <DecimalPlaces>1</DecimalPlaces>
+ <Duration>1460</Duration>
+ <Min>0</Min>
+ <Max>16384</Max>
+ <UseAutoRange>true</UseAutoRange>
+ </TechItem>
+ <TechItem xsi:type="SingleGraphItem">
+ <ID>984b4126-3dda-4624-a79f-0646eb0e1358</ID>
+ <Left>465</Left>
+ <Top>515.420353982301</Top>
+ <Width>439</Width>
+ <Height>304.995575221239</Height>
+ <Angle>0</Angle>
+ <ItemGuid>10102BC3-0EAE-47FF-A8E5-8640780CAA3D</ItemGuid>
+ <ColorNumber>-14774017</ColorNumber>
+ <DecimalPlaces>1</DecimalPlaces>
+ <Duration>1516</Duration>
+ <Min>0</Min>
+ <Max>16384</Max>
+ <UseAutoRange>true</UseAutoRange>
+ </TechItem>
+ <TechItem xsi:type="SingleGraphItem">
+ <ID>8ebc3ab7-a02d-4b12-93b3-2563443831d7</ID>
+ <Left>15</Left>
+ <Top>518.46017699115032</Top>
+ <Width>439</Width>
+ <Height>304.995575221239</Height>
+ <Angle>0</Angle>
+ <ItemGuid>C0BCCD5C-346B-4C4A-A080-39D28E9E1A0C</ItemGuid>
+ <ColorNumber>-14774017</ColorNumber>
+ <DecimalPlaces>1</DecimalPlaces>
+ <Duration>1398</Duration>
+ <Min>0</Min>
+ <Max>16384</Max>
+ <UseAutoRange>true</UseAutoRange>
+ </TechItem>
+ <TechItem xsi:type="SingleGraphItem">
+ <ID>acafb268-5e97-4277-8dc8-173250a9e3f8</ID>
+ <Left>12</Left>
+ <Top>13.849557522123973</Top>
+ <Width>439</Width>
+ <Height>304.995575221239</Height>
+ <Angle>0</Angle>
+ <ItemGuid>9FBC5460-BA59-486B-8D85-BD7D8A959F98</ItemGuid>
+ <ColorNumber>-14774017</ColorNumber>
+ <DecimalPlaces>1</DecimalPlaces>
+ <Duration>1273</Duration>
+ <Min>0</Min>
+ <Max>100</Max>
+ <UseAutoRange>true</UseAutoRange>
+ </TechItem>
+ <TechItem xsi:type="SingleGraphItem">
+ <ID>be4cb8d9-b516-4604-a6a5-1638cbc50251</ID>
+ <Left>860</Left>
+ <Top>-24.18584070796669</Top>
+ <Width>345</Width>
+ <Height>169.21681415929209</Height>
+ <Angle>0</Angle>
+ <ItemGuid>4CE6A82E-D841-4D33-BBB2-11F0743A441C</ItemGuid>
+ <ColorNumber>-14774017</ColorNumber>
+ <DecimalPlaces>1</DecimalPlaces>
+ <Duration>514</Duration>
+ <Min>0</Min>
+ <Max>100000</Max>
+ <UseAutoRange>true</UseAutoRange>
+ </TechItem>
+ <TechItem xsi:type="SingleGraphItem">
+ <ID>75b99507-4eba-4b11-b52e-26732d4c5479</ID>
+ <Left>19</Left>
+ <Top>324.14159292035305</Top>
+ <Width>429</Width>
+ <Height>193.26548672566258</Height>
+ <Angle>0</Angle>
+ <ItemGuid>F1DF490B-0577-4FA7-ACA1-0EEF4F934E8F</ItemGuid>
+ <ColorNumber>-14774017</ColorNumber>
+ <DecimalPlaces>4</DecimalPlaces>
+ <Duration>1398</Duration>
+ <Min>0</Min>
+ <Max>100</Max>
+ <UseAutoRange>true</UseAutoRange>
+ </TechItem>
+ <TechItem xsi:type="SingleGraphItem">
+ <ID>a30e48de-be76-4230-92d0-d27d6f37b940</ID>
+ <Left>474</Left>
+ <Top>320.03097345132551</Top>
+ <Width>429</Width>
+ <Height>193.26548672566258</Height>
+ <Angle>0</Angle>
+ <ItemGuid>5F12B974-2C9E-4DDD-9B20-733251A5D7E6</ItemGuid>
+ <ColorNumber>-14774017</ColorNumber>
+ <DecimalPlaces>4</DecimalPlaces>
+ <Duration>1398</Duration>
+ <Min>0</Min>
+ <Max>100</Max>
+ <UseAutoRange>true</UseAutoRange>
+ </TechItem>
+ <TechItem xsi:type="SingleGraphItem">
+ <ID>5ac4b368-093a-4192-98d4-e9d24f229b13</ID>
+ <Left>928</Left>
+ <Top>321.64601769912122</Top>
+ <Width>429</Width>
+ <Height>193.26548672566258</Height>
+ <Angle>0</Angle>
+ <ItemGuid>84CF23C9-D20D-4C08-BE1D-80201FC43C06</ItemGuid>
+ <ColorNumber>-14774017</ColorNumber>
+ <DecimalPlaces>4</DecimalPlaces>
+ <Duration>1398</Duration>
+ <Min>0</Min>
+ <Max>100</Max>
+ <UseAutoRange>true</UseAutoRange>
+ </TechItem>
+ <TechItem xsi:type="MonitorRecorderItem">
+ <ID>9c34dc69-cfaa-48b4-9d02-8f0d9bba79dd</ID>
+ <Left>1303</Left>
+ <Top>34.380530973454768</Top>
+ <Width>176</Width>
+ <Height>83.05309734512457</Height>
+ <Angle>0</Angle>
+ <ColorNumber>-1</ColorNumber>
+ <SelectedMonitorsGuids>
+ <string>89B7B89D-8050-4188-B568-35B1910CFB6F</string>
+ <string>96B89605-F999-43FE-A1CD-2645BFB33A36</string>
+ <string>84CF23C9-D20D-4C08-BE1D-80201FC43C06</string>
+ <string>FC60060A-3736-4910-B41A-FF6DABDF0E9E</string>
+ <string>5F12B974-2C9E-4DDD-9B20-733251A5D7E6</string>
+ <string>9ADF7823-B293-4275-9999-F62474D246AA</string>
+ <string>4CE6A82E-D841-4D33-BBB2-11F0743A441C</string>
+ <string>F1DF490B-0577-4FA7-ACA1-0EEF4F934E8F</string>
+ </SelectedMonitorsGuids>
+ </TechItem>
+ <TechItem xsi:type="ThreadMotionItem">
+ <ID>51e66b20-f2a9-4f32-9e4e-ba06a0adccfc</ID>
+ <Left>453</Left>
+ <Top>19.247787610619469</Top>
+ <Width>346</Width>
+ <Height>195.56194690265488</Height>
+ <Angle>0</Angle>
+ <ColorNumber>-1</ColorNumber>
+ <Speed>40</Speed>
+ </TechItem>
+ </Items>
+ </MachineTechViewProjectTab>
+ <MachineTechViewProjectTab>
+ <Name>Dispensers</Name>
+ <Items>
+ <TechItem xsi:type="DispenserItem">
+ <ID>dce78f33-c966-4848-8c6e-a4a01dbc7577</ID>
+ <Left>1322.1428571428571</Left>
+ <Top>214.15929203538531</Top>
+ <Width>159</Width>
+ <Height>215.8274336283186</Height>
+ <Angle>0</Angle>
+ <ItemGuid>2CC8E461-E91F-4D4C-A402-922477F06C87</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <Speed>20</Speed>
+ <DisplayName>Dispenser 1</DisplayName>
+ </TechItem>
+ <TechItem xsi:type="DispenserItem">
+ <ID>2d03fc19-0502-43e1-a3ff-4012a612112b</ID>
+ <Left>1149</Left>
+ <Top>218.48230088495342</Top>
+ <Width>159</Width>
+ <Height>215.8274336283186</Height>
+ <Angle>0</Angle>
+ <ItemGuid>C8D8FE90-0375-44A2-A6D1-E997789E065C</ItemGuid>
+ <ColorNumber>-16724737</ColorNumber>
+ <Speed>20</Speed>
+ <DisplayName>Dispenser 2</DisplayName>
+ </TechItem>
+ <TechItem xsi:type="DispenserItem">
+ <ID>81958374-3fa3-48b3-a554-5653fe1934b1</ID>
+ <Left>959</Left>
+ <Top>210.32743362830422</Top>
+ <Width>156</Width>
+ <Height>215.8274336283186</Height>
+ <Angle>0</Angle>
+ <ItemGuid>08ED9044-CAD6-4492-94B2-C07206E0164B</ItemGuid>
+ <ColorNumber>-65325</ColorNumber>
+ <Speed>20</Speed>
+ <DisplayName>Dispenser 3</DisplayName>
+ </TechItem>
+ <TechItem xsi:type="DispenserItem">
+ <ID>8fead411-7198-4428-a364-e32f3035ed94</ID>
+ <Left>775</Left>
+ <Top>206.42920353980952</Top>
+ <Width>159</Width>
+ <Height>215.8274336283186</Height>
+ <Angle>0</Angle>
+ <ItemGuid>179F34BB-3252-4D3A-965C-E6EB43D6FE7C</ItemGuid>
+ <ColorNumber>-524544</ColorNumber>
+ <Speed>20</Speed>
+ <DisplayName>Dispenser 4</DisplayName>
+ </TechItem>
+ <TechItem xsi:type="DispenserItem">
+ <ID>31bfa89f-e64d-4a3b-8585-c4a1b2e5a139</ID>
+ <Left>585</Left>
+ <Top>208.47345132741418</Top>
+ <Width>159</Width>
+ <Height>215.8274336283186</Height>
+ <Angle>0</Angle>
+ <ItemGuid>716B35CF-46E0-47D5-AF85-5233D212568F</ItemGuid>
+ <ColorNumber>-2108246</ColorNumber>
+ <Speed>1000</Speed>
+ <DisplayName>Dispenser 5</DisplayName>
+ </TechItem>
+ <TechItem xsi:type="DispenserItem">
+ <ID>c2bff5f3-6dc9-4b07-87ba-9e3a5814804e</ID>
+ <Left>372</Left>
+ <Top>216.75221238937439</Top>
+ <Width>159</Width>
+ <Height>215.8274336283186</Height>
+ <Angle>0</Angle>
+ <ItemGuid>99528449-4D76-4874-AB95-522951560E01</ItemGuid>
+ <ColorNumber>-263685</ColorNumber>
+ <Speed>20</Speed>
+ <DisplayName>Dispenser 6</DisplayName>
+ </TechItem>
+ <TechItem xsi:type="DispenserItem">
+ <ID>071281a5-3569-4a62-8b68-7bea850a3c07</ID>
+ <Left>217</Left>
+ <Top>211.63716814158107</Top>
+ <Width>159</Width>
+ <Height>215.8274336283186</Height>
+ <Angle>0</Angle>
+ <ItemGuid>E8ED07E2-7C36-459C-B9E5-6A23A1E24F03</ItemGuid>
+ <ColorNumber>-723724</ColorNumber>
+ <Speed>20</Speed>
+ <DisplayName>Dispenser 7</DisplayName>
+ </TechItem>
+ <TechItem xsi:type="DispenserItem">
+ <ID>7b703b9a-a626-4ae5-8e31-fa1cfe5718f4</ID>
+ <Left>45</Left>
+ <Top>216.04867256635521</Top>
+ <Width>159</Width>
+ <Height>215.8274336283186</Height>
+ <Angle>0</Angle>
+ <ItemGuid>8A957565-4165-49F7-854D-D21F95FFBE1B</ItemGuid>
+ <ColorNumber>-724238</ColorNumber>
+ <Speed>13</Speed>
+ <DisplayName>Dispenser 8</DisplayName>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>caca40a2-310c-452e-adcf-c28ee38f6bdc</ID>
+ <Left>1305</Left>
+ <Top>31.606194690259713</Top>
+ <Width>150</Width>
+ <Height>156.04424778761069</Height>
+ <Angle>0</Angle>
+ <ItemGuid>1F0F907A-EC16-4386-AFC8-B2B156F2A822</ItemGuid>
+ <ColorNumber>-15856114</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>2</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>af52d36f-27a2-4a31-8ceb-9c43fedbed22</ID>
+ <Left>1127</Left>
+ <Top>32.535398230081626</Top>
+ <Width>150</Width>
+ <Height>156.04424778761069</Height>
+ <Angle>0</Angle>
+ <ItemGuid>A499E5E0-A812-4032-8F96-B38C6762C4BD</ItemGuid>
+ <ColorNumber>-15293470</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>2</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>d40eada8-d22a-4521-bd2a-d998ed93106f</ID>
+ <Left>955</Left>
+ <Top>32.61946902653176</Top>
+ <Width>150</Width>
+ <Height>156.04424778761069</Height>
+ <Angle>0</Angle>
+ <ItemGuid>6B1DF4B0-BCC2-400C-A3B7-31C5119A55BB</ItemGuid>
+ <ColorNumber>-1570857</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>2</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>b2d6364d-8b5c-43d2-8838-927c85b017b1</ID>
+ <Left>774</Left>
+ <Top>31.960176991142362</Top>
+ <Width>150</Width>
+ <Height>156.04424778761069</Height>
+ <Angle>0</Angle>
+ <ItemGuid>F33667BD-D9FA-4DC7-BC2C-0E89E60AE4BE</ItemGuid>
+ <ColorNumber>-1379575</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>2</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>3980e685-73b3-4af1-9593-9235be147322</ID>
+ <Left>596</Left>
+ <Top>32.889380530964274</Top>
+ <Width>150</Width>
+ <Height>156.04424778761069</Height>
+ <Angle>0</Angle>
+ <ItemGuid>19645882-6587-4A50-BD85-AF06617DC654</ItemGuid>
+ <ColorNumber>-7763381</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>2</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>51465293-58d5-40a4-8302-81856f8b4f47</ID>
+ <Left>424</Left>
+ <Top>32.973451327414409</Top>
+ <Width>150</Width>
+ <Height>156.04424778761069</Height>
+ <Angle>0</Angle>
+ <ItemGuid>AF3FD56C-95BF-4DE1-8EDC-8426B0DB2A26</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>2</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>c2a8c5b2-891b-4f9f-862c-c1c294366c78</ID>
+ <Left>252</Left>
+ <Top>31.703539823006281</Top>
+ <Width>150</Width>
+ <Height>156.04424778761069</Height>
+ <Angle>0</Angle>
+ <ItemGuid>60DA9EA3-C8A6-4D41-8AD8-3EB1BAA79CC9</ItemGuid>
+ <ColorNumber>-8391822</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>2</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>9618e441-8973-4e16-a90b-06ce5798bd29</ID>
+ <Left>80</Left>
+ <Top>31.787610619456416</Top>
+ <Width>150</Width>
+ <Height>156.04424778761069</Height>
+ <Angle>0</Angle>
+ <ItemGuid>EF66F95A-E166-4FA2-B1AF-D6F55621817A</ItemGuid>
+ <ColorNumber>-2186185</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>2</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="DigitalOutItem">
+ <ID>bce8c8e8-a317-4991-9aa7-cd99a45d1509</ID>
+ <Left>28.22352941176473</Left>
+ <Top>682.03174474303751</Top>
+ <Width>247</Width>
+ <Height>122.24778761061873</Height>
+ <Angle>0</Angle>
+ <ItemGuid>66cc8510-db9c-4e13-9151-01e705ec04de</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ </TechItem>
+ <TechItem xsi:type="DigitalOutItem">
+ <ID>72a23702-31bb-4ab8-aee5-2a02bcb1270b</ID>
+ <Left>235.16470588235291</Left>
+ <Top>699.99460095802579</Top>
+ <Width>200</Width>
+ <Height>94.15929203539747</Height>
+ <Angle>0</Angle>
+ <ItemGuid>36ba0ba4-e41d-45ff-8f68-1699e00c7107</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ </TechItem>
+ <TechItem xsi:type="ControllerItem">
+ <ID>2dd6ff17-e515-4d8f-814f-a9683f404a8e</ID>
+ <Left>140</Left>
+ <Top>867.73893805310092</Top>
+ <Width>160</Width>
+ <Height>85.49115044247776</Height>
+ <Angle>0</Angle>
+ <ItemGuid>78482AA4-3DF6-421F-944C-64328D3C3EF2</ItemGuid>
+ <ColorNumber>-14774017</ColorNumber>
+ <OptimalRangeMinimum>0</OptimalRangeMinimum>
+ <OptimalRangeMaximum>70</OptimalRangeMaximum>
+ <UpdateInterval>10</UpdateInterval>
+ <IsSetToDefault>true</IsSetToDefault>
+ </TechItem>
+ <TechItem xsi:type="DigitalOutItem">
+ <ID>06843009-1da0-4811-8e77-50576d0edcb1</ID>
+ <Left>507</Left>
+ <Top>792.77433628318749</Top>
+ <Width>219</Width>
+ <Height>125.75221238938025</Height>
+ <Angle>0</Angle>
+ <ItemGuid>0c5dc1e9-da17-4ff8-86aa-6b39fd796ba9</ItemGuid>
+ <ColorNumber>-16777216</ColorNumber>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>935dddd0-0c6f-4766-8173-f9118006a12b</ID>
+ <Left>1303</Left>
+ <Top>475.87168141593065</Top>
+ <Width>160</Width>
+ <Height>124.6504424778754</Height>
+ <Angle>0</Angle>
+ <ItemGuid>B2164815-FBF3-4CF8-81D8-20F719626664</ItemGuid>
+ <ColorNumber>-15856114</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>2</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="MultiGraphItem">
+ <ID>97e39a59-dba8-4e42-a124-b37de9453baf</ID>
+ <Left>370</Left>
+ <Top>781.46902654866153</Top>
+ <Width>710</Width>
+ <Height>401.24778761063465</Height>
+ <Angle>0</Angle>
+ <ItemGuid>D023F15D-3555-48E9-A9E9-5DF99F60D791</ItemGuid>
+ <ColorNumber>0</ColorNumber>
+ <DecimalPlaces>2</DecimalPlaces>
+ <Duration>1956</Duration>
+ <Min>0</Min>
+ <Max>100</Max>
+ <UseAutoRange>true</UseAutoRange>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>46bdfce3-1c69-45dd-bbe9-582d1ac1e6f2</ID>
+ <Left>1128</Left>
+ <Top>482.80530973451141</Top>
+ <Width>140</Width>
+ <Height>117.32300884955743</Height>
+ <Angle>0</Angle>
+ <ItemGuid>0FE216B2-A097-4F2C-B465-08593F2532B3</ItemGuid>
+ <ColorNumber>-15293470</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>2</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>429154a5-9a16-4423-85ca-ee4bae9aec3c</ID>
+ <Left>968</Left>
+ <Top>481.35398230088504</Top>
+ <Width>140</Width>
+ <Height>117.32300884955743</Height>
+ <Angle>0</Angle>
+ <ItemGuid>3271FD82-46D3-4789-B612-564967826C75</ItemGuid>
+ <ColorNumber>-1570857</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>2</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>0f6ab8e8-99a7-4468-bde8-690a63467688</ID>
+ <Left>766</Left>
+ <Top>476.07964601769811</Top>
+ <Width>140</Width>
+ <Height>117.32300884955743</Height>
+ <Angle>0</Angle>
+ <ItemGuid>FBB806E7-42FA-4BAA-BDA1-3B8B07913AAD</ItemGuid>
+ <ColorNumber>-1379575</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>2</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>bc0ac903-9c1f-4580-8b9e-670a76350473</ID>
+ <Left>586</Left>
+ <Top>474.38938053097161</Top>
+ <Width>140</Width>
+ <Height>117.32300884955743</Height>
+ <Angle>0</Angle>
+ <ItemGuid>436A22BB-AF79-4CB2-8A7D-DD4D9E54A81E</ItemGuid>
+ <ColorNumber>-7763381</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>2</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>f9c960b2-b93e-46d5-b892-30337c0b55af</ID>
+ <Left>391</Left>
+ <Top>474.87168141592781</Top>
+ <Width>140</Width>
+ <Height>117.32300884955743</Height>
+ <Angle>0</Angle>
+ <ItemGuid>89EA6CC8-5363-4BEC-A370-D906611087A7</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>2</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>5ac157ab-2d53-4307-bf0b-b069854701ac</ID>
+ <Left>226</Left>
+ <Top>471.66814159292005</Top>
+ <Width>140</Width>
+ <Height>117.32300884955743</Height>
+ <Angle>0</Angle>
+ <ItemGuid>D5EBE52B-E2DF-4C97-80B1-F111F6B15854</ItemGuid>
+ <ColorNumber>-8391822</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>2</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>65a19d7e-c524-48a0-bd70-28b99b113dd1</ID>
+ <Left>69</Left>
+ <Top>473.97787610619389</Top>
+ <Width>140</Width>
+ <Height>117.32300884955743</Height>
+ <Angle>0</Angle>
+ <ItemGuid>FE521D1B-A0EA-4FEA-AE64-33998A6CE138</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>2</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>5bf7a681-ee47-477e-8b47-ba7a2eb6e115</ID>
+ <Left>1130</Left>
+ <Top>624.9557522123913</Top>
+ <Width>144</Width>
+ <Height>80.495575221237516</Height>
+ <Angle>0</Angle>
+ <ItemGuid>3174ADCF-5793-4B5A-A3C6-B96E146A903D</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>0</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>29b17a4b-fd4e-49cc-a3cd-418730176bf7</ID>
+ <Left>969</Left>
+ <Top>625.95575221239</Top>
+ <Width>144</Width>
+ <Height>80.495575221237516</Height>
+ <Angle>0</Angle>
+ <ItemGuid>AD50C358-5BAF-4A2F-8593-51A22C85B3D1</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>0</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>21a5429f-c3a2-4e3b-ae77-c5538f30130d</ID>
+ <Left>775</Left>
+ <Top>623.66814159292062</Top>
+ <Width>144</Width>
+ <Height>82.535398230087083</Height>
+ <Angle>0</Angle>
+ <ItemGuid>E2F0FC31-CE7E-416B-ACEA-8EB6CA9B850B</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>0</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>96a46b0c-37b1-4457-93fb-b3dc301c5743</ID>
+ <Left>588</Left>
+ <Top>625.06637168141322</Top>
+ <Width>144</Width>
+ <Height>80.495575221237516</Height>
+ <Angle>0</Angle>
+ <ItemGuid>37872FE8-D68A-45BC-A441-372B7805C09F</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>0</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>d4ad8603-9929-415f-9990-1869fcff36e4</ID>
+ <Left>1310</Left>
+ <Top>628.69469026548632</Top>
+ <Width>144</Width>
+ <Height>80.495575221237516</Height>
+ <Angle>0</Angle>
+ <ItemGuid>84682E90-6926-42AA-BF8C-2CCCF5C26C97</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>0</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="ValveItem">
+ <ID>25249d78-ee37-42a8-b5aa-96f60e97c3ea</ID>
+ <Left>20.870588235294122</Left>
+ <Top>784.26605504587133</Top>
+ <Width>327</Width>
+ <Height>108.53097345133028</Height>
+ <Angle>0</Angle>
+ <ItemGuid>8B1FCBC3-FEEA-4F87-B56F-CE5D28B7ACA4</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ </TechItem>
+ <TechItem xsi:type="SingleGraphItem">
+ <ID>fc1d62f7-d13b-4a7b-8f9f-c687c987c7a9</ID>
+ <Left>1065</Left>
+ <Top>788.41592920352355</Top>
+ <Width>370</Width>
+ <Height>362.10619469026585</Height>
+ <Angle>0</Angle>
+ <ItemGuid>1F0F907A-EC16-4386-AFC8-B2B156F2A822</ItemGuid>
+ <ColorNumber>-14774017</ColorNumber>
+ <DecimalPlaces>3</DecimalPlaces>
+ <Duration>1426</Duration>
+ <Min>0</Min>
+ <Max>100</Max>
+ <UseAutoRange>true</UseAutoRange>
+ </TechItem>
+ <TechItem xsi:type="SingleGraphItem">
+ <ID>cc99a514-1498-4b93-a4eb-4e0a2a2e9de6</ID>
+ <Left>628</Left>
+ <Top>765.4469026548752</Top>
+ <Width>394</Width>
+ <Height>372.88495575221242</Height>
+ <Angle>0</Angle>
+ <ItemGuid>A499E5E0-A812-4032-8F96-B38C6762C4BD</ItemGuid>
+ <ColorNumber>-14774017</ColorNumber>
+ <DecimalPlaces>1</DecimalPlaces>
+ <Duration>1282</Duration>
+ <Min>0</Min>
+ <Max>100</Max>
+ <UseAutoRange>true</UseAutoRange>
+ </TechItem>
+ <TechItem xsi:type="ValveItem">
+ <ID>cdddd48e-422d-48f4-8397-5032c3705fdb</ID>
+ <Left>1069</Left>
+ <Top>698.04867256637226</Top>
+ <Width>382</Width>
+ <Height>136.79203539823016</Height>
+ <Angle>0</Angle>
+ <ItemGuid>7F9C5DE0-9E24-494D-841F-976DB440DBFD</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>ee6d4c5a-ca5b-4557-8012-dacf700cdc08</ID>
+ <Left>231</Left>
+ <Top>624.06637168142413</Top>
+ <Width>144</Width>
+ <Height>80.495575221237516</Height>
+ <Angle>0</Angle>
+ <ItemGuid>37872FE8-D68A-45BC-A441-372B7805C010</ItemGuid>
+ <ColorNumber>-8391822</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>0</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>20576bb2-202f-4170-9af5-f3c18b410112</ID>
+ <Left>77</Left>
+ <Top>624.46460176991513</Top>
+ <Width>144</Width>
+ <Height>80.495575221237516</Height>
+ <Angle>0</Angle>
+ <ItemGuid>37872FE8-D68A-45BC-A441-372B7805C011</ItemGuid>
+ <ColorNumber>-2186185</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>0</DecimalPoints>
+ </TechItem>
+ </Items>
+ </MachineTechViewProjectTab>
+ <MachineTechViewProjectTab>
+ <Name>Thread insertion</Name>
+ <Items>
+ <TechItem xsi:type="MotorItem">
+ <ID>443a977c-8e89-4a56-82e4-684bac7945c9</ID>
+ <Left>25</Left>
+ <Top>22.761061946902203</Top>
+ <Width>247</Width>
+ <Height>172.25663716814159</Height>
+ <Angle>0</Angle>
+ <ItemGuid>08d15ca1-d7d1-460f-8f37-42c37c287cd1</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <Speed>500</Speed>
+ </TechItem>
+ <TechItem xsi:type="MotorItem">
+ <ID>a821b716-cb7d-4951-84ee-e56955431099</ID>
+ <Left>355</Left>
+ <Top>20.592920353981697</Top>
+ <Width>260</Width>
+ <Height>153.00442477876106</Height>
+ <Angle>0</Angle>
+ <ItemGuid>b90a4e78-ebbf-44db-829b-949517d6400b</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <Speed>500</Speed>
+ </TechItem>
+ <TechItem xsi:type="MotorItem">
+ <ID>e36e321b-d48d-4199-a1ee-75ac18e9de1e</ID>
+ <Left>694</Left>
+ <Top>19.367256637167998</Top>
+ <Width>217</Width>
+ <Height>155.26106194690203</Height>
+ <Angle>0</Angle>
+ <ItemGuid>b7c1aea4-32c1-41cb-bca3-4aa665529b49</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <Speed>500</Speed>
+ </TechItem>
+ <TechItem xsi:type="MotorItem">
+ <ID>8790db03-4dfd-4d49-aec0-706babb55af9</ID>
+ <Left>364</Left>
+ <Top>222.16814159291846</Top>
+ <Width>240</Width>
+ <Height>172.30973451327589</Height>
+ <Angle>0</Angle>
+ <ItemGuid>2d3eaca5-4dfd-40d9-9d1f-aa4ae794eddc</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <Speed>500</Speed>
+ </TechItem>
+ <TechItem xsi:type="MotorItem">
+ <ID>69ebcb28-13d9-41b3-a9ef-b2be51584141</ID>
+ <Left>29</Left>
+ <Top>241.34955752210982</Top>
+ <Width>263</Width>
+ <Height>174.296460176989</Height>
+ <Angle>0</Angle>
+ <ItemGuid>c6099065-a735-4cc5-b575-c31a45bb9262</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <Speed>400</Speed>
+ </TechItem>
+ <TechItem xsi:type="ThreadMotionItem">
+ <ID>4d562029-3fdf-40a4-a5a7-9a322253c912</ID>
+ <Left>1168</Left>
+ <Top>47.305309734517039</Top>
+ <Width>304</Width>
+ <Height>167.26548672566202</Height>
+ <Angle>0</Angle>
+ <ColorNumber>-1</ColorNumber>
+ <Speed>50</Speed>
+ </TechItem>
+ <TechItem xsi:type="BreakSensorItem">
+ <ID>92607e12-2dd6-41c9-8f89-f051f386b734</ID>
+ <Left>1258</Left>
+ <Top>277.55752212389069</Top>
+ <Width>240</Width>
+ <Height>156.04424778761069</Height>
+ <Angle>0</Angle>
+ <ItemGuid>DCE08A06-6711-43AE-AB7C-EADD5AB70EE0</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ </TechItem>
+ <TechItem xsi:type="MotorItem">
+ <ID>7b5b6896-f626-4e59-a5cf-2600e603c0f6</ID>
+ <Left>695</Left>
+ <Top>223.44247787610908</Top>
+ <Width>228</Width>
+ <Height>175.0353982300901</Height>
+ <Angle>0</Angle>
+ <ItemGuid>7b6d0a93-5a91-4e1f-af47-353afd8b5ea6</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <Speed>83.833754740833143</Speed>
+ </TechItem>
+ <TechItem xsi:type="MotorItem">
+ <ID>2052a2d3-843c-4a1c-87fd-acd0832fd1b9</ID>
+ <Left>29</Left>
+ <Top>572.89380530973028</Top>
+ <Width>221</Width>
+ <Height>176.93805309734751</Height>
+ <Angle>0</Angle>
+ <ItemGuid>7c03f12f-ab2a-4421-8575-aefd6dec0001</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <Speed>1000</Speed>
+ </TechItem>
+ <TechItem xsi:type="MotorItem">
+ <ID>339b7d00-d688-41cf-926a-8171d5e62740</ID>
+ <Left>599</Left>
+ <Top>578.80973451326713</Top>
+ <Width>240</Width>
+ <Height>157.80088495575205</Height>
+ <Angle>0</Angle>
+ <ItemGuid>f3b5076e-cba3-4ad2-b3cc-0c4e907bd9ef</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <Speed>5</Speed>
+ </TechItem>
+ <TechItem xsi:type="MotorItem">
+ <ID>7644a8f9-00a2-4e37-8f48-0667b1541114</ID>
+ <Left>1037</Left>
+ <Top>247.03097345133062</Top>
+ <Width>240</Width>
+ <Height>172.30973451327589</Height>
+ <Angle>0</Angle>
+ <ItemGuid>92237d83-9f85-48db-aa6f-2fc5c9e0d8cd</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <Speed>500</Speed>
+ </TechItem>
+ <TechItem xsi:type="DigitalOutItem">
+ <ID>c706d31b-48b0-44cc-a9c4-11d3acdcf667</ID>
+ <Left>548</Left>
+ <Top>418.71652683599893</Top>
+ <Width>269</Width>
+ <Height>127.67256637168134</Height>
+ <Angle>0</Angle>
+ <ItemGuid>2a454081-bd5e-41de-ae5d-97aefe1d76de</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ </TechItem>
+ <TechItem xsi:type="MotorItem">
+ <ID>7ccff69d-50f9-4e9b-a997-72a67917df5e</ID>
+ <Left>900</Left>
+ <Top>580.00442477876311</Top>
+ <Width>227</Width>
+ <Height>145.08849557522183</Height>
+ <Angle>0</Angle>
+ <ItemGuid>9c02effb-7deb-40a1-90c3-df1fb48e6431</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <Speed>30</Speed>
+ </TechItem>
+ <TechItem xsi:type="MotorItem">
+ <ID>a88a74cb-418b-4ed0-89ec-c42ff560528e</ID>
+ <Left>1182</Left>
+ <Top>572.30088495575171</Top>
+ <Width>227</Width>
+ <Height>145.08849557522183</Height>
+ <Angle>0</Angle>
+ <ItemGuid>a359e9d0-adcc-40a5-b3d9-b9cb26eca092</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <Speed>30</Speed>
+ </TechItem>
+ <TechItem xsi:type="DigitalOutItem">
+ <ID>bba24461-e18d-497a-b85d-808668d0c750</ID>
+ <Left>892</Left>
+ <Top>457.57079646017365</Top>
+ <Width>170</Width>
+ <Height>87.999999999997613</Height>
+ <Angle>0</Angle>
+ <ItemGuid>6f48e18c-d472-425a-ba7e-633630605e11</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ </TechItem>
+ <TechItem xsi:type="DigitalOutItem">
+ <ID>9ccdbff6-031d-4364-8732-daade6b88551</ID>
+ <Left>1062</Left>
+ <Top>452.95575221238948</Top>
+ <Width>170</Width>
+ <Height>87.999999999997613</Height>
+ <Angle>0</Angle>
+ <ItemGuid>8a65badb-3d7d-4b7b-8dcd-783e443b0689</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ </TechItem>
+ <TechItem xsi:type="MotorItem">
+ <ID>22bb90e5-f05c-4a47-925e-516a252de2ac</ID>
+ <Left>324</Left>
+ <Top>546.82743362833332</Top>
+ <Width>213</Width>
+ <Height>211.8141592920241</Height>
+ <Angle>0</Angle>
+ <ItemGuid>c9482395-35e6-4340-8dab-83d5dfe907a7</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <Speed>5</Speed>
+ </TechItem>
+ </Items>
+ </MachineTechViewProjectTab>
+ <MachineTechViewProjectTab>
+ <Name>Head graphs</Name>
+ <Items>
+ <TechItem xsi:type="SingleGraphItem">
+ <ID>ffe980da-dbbe-4bac-9595-46f587e9df00</ID>
+ <Left>683</Left>
+ <Top>6.8230088495575387</Top>
+ <Width>585</Width>
+ <Height>254.03097345132755</Height>
+ <Angle>0</Angle>
+ <ItemGuid>A8DB1D27-6B25-4FB4-A3F5-46A29BA51955</ItemGuid>
+ <ColorNumber>-14774017</ColorNumber>
+ <DecimalPlaces>2</DecimalPlaces>
+ <Duration>2962</Duration>
+ <Min>0</Min>
+ <Max>300</Max>
+ <UseAutoRange>true</UseAutoRange>
+ </TechItem>
+ <TechItem xsi:type="PidItem">
+ <ID>81b78212-14d8-4a66-bf3a-eeea9900e0d6</ID>
+ <Left>536</Left>
+ <Top>184.21238938053108</Top>
+ <Width>128</Width>
+ <Height>91.469026548670342</Height>
+ <Angle>0</Angle>
+ <ItemGuid>7FCA67CB-785B-49F7-B9F2-191E3ACC6CB7</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ </TechItem>
+ <TechItem xsi:type="HeaterItem">
+ <ID>3941a557-05e6-4c1b-bb98-4f2a59892431</ID>
+ <Left>533</Left>
+ <Top>22.663716814159159</Top>
+ <Width>141</Width>
+ <Height>109.433628318584</Height>
+ <Angle>0</Angle>
+ <ItemGuid>F8C1BA7F-F6DF-414D-BAF5-D4CB292F91F6</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <HeaterState>
+ <HeaterType>HeadCoverHeater1</HeaterType>
+ <SetPoint>250</SetPoint>
+ <CurrentValue>249.95</CurrentValue>
+ <IsActive>true</IsActive>
+ <IsRampingUp>false</IsRampingUp>
+ <IsInSetPoint>true</IsInSetPoint>
+ </HeaterState>
+ <SetPoint>250</SetPoint>
+ </TechItem>
+ <TechItem xsi:type="SingleGraphItem">
+ <ID>85b25b0b-cd3d-4a8a-88f5-f832623d7ec2</ID>
+ <Left>5.75</Left>
+ <Top>316.7892753877166</Top>
+ <Width>516</Width>
+ <Height>326.98672566371658</Height>
+ <Angle>0</Angle>
+ <ItemGuid>0E4783A1-B8DE-451E-B357-322C39E448DD</ItemGuid>
+ <ColorNumber>-14774017</ColorNumber>
+ <DecimalPlaces>2</DecimalPlaces>
+ <Duration>2962</Duration>
+ <Min>0</Min>
+ <Max>300</Max>
+ <UseAutoRange>true</UseAutoRange>
+ </TechItem>
+ <TechItem xsi:type="PidItem">
+ <ID>85e9ecc2-3bce-4055-89a9-1712752898a9</ID>
+ <Left>375.66666666666663</Left>
+ <Top>902.19714360816624</Top>
+ <Width>128</Width>
+ <Height>91.469026548670342</Height>
+ <Angle>0</Angle>
+ <ItemGuid>500698E0-5623-4A47-9537-FCAAF5D0B725</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ </TechItem>
+ <TechItem xsi:type="HeaterItem">
+ <ID>8d9b0d4b-ac5e-4c17-b7eb-4d59825064c7</ID>
+ <Left>523.04166666666652</Left>
+ <Top>895.90015771488663</Top>
+ <Width>103</Width>
+ <Height>121.59292035398221</Height>
+ <Angle>0</Angle>
+ <ItemGuid>F39B952A-6194-4055-A5CB-A3421BFE0F9B</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <HeaterState>
+ <HeaterType>HeadCoverHeater2</HeaterType>
+ <SetPoint>250</SetPoint>
+ <CurrentValue>249.98999999999998</CurrentValue>
+ <IsActive>true</IsActive>
+ <IsRampingUp>false</IsRampingUp>
+ <IsInSetPoint>true</IsInSetPoint>
+ </HeaterState>
+ <SetPoint>250</SetPoint>
+ </TechItem>
+ <TechItem xsi:type="SingleGraphItem">
+ <ID>63ccee8d-ce38-4c69-b8d1-141f320d11f9</ID>
+ <Left>5</Left>
+ <Top>5.0619469026551087</Top>
+ <Width>518</Width>
+ <Height>295.5752212389379</Height>
+ <Angle>0</Angle>
+ <ItemGuid>0E4783A1-B8DE-451E-B357-322C39E448CC</ItemGuid>
+ <ColorNumber>-14774017</ColorNumber>
+ <DecimalPlaces>2</DecimalPlaces>
+ <Duration>2962</Duration>
+ <Min>0</Min>
+ <Max>300</Max>
+ <UseAutoRange>true</UseAutoRange>
+ </TechItem>
+ <TechItem xsi:type="HeaterItem">
+ <ID>b339a7c0-7555-4e54-9834-6193ed7c2b7a</ID>
+ <Left>536</Left>
+ <Top>334.00442477876118</Top>
+ <Width>137</Width>
+ <Height>105.3805309734513</Height>
+ <Angle>0</Angle>
+ <ItemGuid>F39B952A-6194-4055-A5CB-A3421BFE0F9B</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <HeaterState>
+ <HeaterType>HeadCoverHeater2</HeaterType>
+ <SetPoint>250</SetPoint>
+ <CurrentValue>249.98999999999998</CurrentValue>
+ <IsActive>true</IsActive>
+ <IsRampingUp>false</IsRampingUp>
+ <IsInSetPoint>true</IsInSetPoint>
+ </HeaterState>
+ <SetPoint>250</SetPoint>
+ </TechItem>
+ <TechItem xsi:type="SingleGraphItem">
+ <ID>40d16753-8448-4af9-8fbd-98c1ed301de5</ID>
+ <Left>684</Left>
+ <Top>264.46017699115009</Top>
+ <Width>584</Width>
+ <Height>252.004424778761</Height>
+ <Angle>0</Angle>
+ <ItemGuid>D7585119-4A42-4370-8F1E-F3E62553E588</ItemGuid>
+ <ColorNumber>-14774017</ColorNumber>
+ <DecimalPlaces>2</DecimalPlaces>
+ <Duration>2962</Duration>
+ <Min>0</Min>
+ <Max>300</Max>
+ <UseAutoRange>true</UseAutoRange>
+ </TechItem>
+ <TechItem xsi:type="PidItem">
+ <ID>b3826c8e-1d82-4f4f-ad9f-d88f257dffb2</ID>
+ <Left>1279</Left>
+ <Top>61.871681415929345</Top>
+ <Width>128</Width>
+ <Height>99.57522123893591</Height>
+ <Angle>0</Angle>
+ <ItemGuid>d59b64f7-a8cf-4a2b-935a-943ae35fb78c</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ </TechItem>
+ <TechItem xsi:type="HeaterItem">
+ <ID>d3631074-68c4-4377-b0c5-9213a6b1b2c0</ID>
+ <Left>1415</Left>
+ <Top>526.52654867256626</Top>
+ <Width>103</Width>
+ <Height>113.4867256637167</Height>
+ <Angle>0</Angle>
+ <ItemGuid>8E764A14-0F84-4FEC-928B-32A2509CAD57</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <HeaterState>
+ <HeaterType>HeaterZone3</HeaterType>
+ <SetPoint>85</SetPoint>
+ <CurrentValue>84.94</CurrentValue>
+ <IsActive>false</IsActive>
+ <IsRampingUp>false</IsRampingUp>
+ <IsInSetPoint>true</IsInSetPoint>
+ </HeaterState>
+ <SetPoint>85</SetPoint>
+ </TechItem>
+ <TechItem xsi:type="PidItem">
+ <ID>233f0076-7595-4ecb-8496-41eeb7b457ea</ID>
+ <Left>1283</Left>
+ <Top>538.11061946902646</Top>
+ <Width>128</Width>
+ <Height>91.469026548670342</Height>
+ <Angle>0</Angle>
+ <ItemGuid>9de55ec4-201f-4f62-9003-f63ebea06f8f</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ </TechItem>
+ <TechItem xsi:type="HeaterItem">
+ <ID>f815ebb5-61af-45ff-8109-5f5e717a5c4d</ID>
+ <Left>1411</Left>
+ <Top>25.969026548672616</Top>
+ <Width>107</Width>
+ <Height>165.16371681415916</Height>
+ <Angle>0</Angle>
+ <ItemGuid>27E7BB74-81C3-4EF2-80AE-962F111C441F</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <HeaterState>
+ <HeaterType>HeaterZone1</HeaterType>
+ <SetPoint>80</SetPoint>
+ <CurrentValue>80.02</CurrentValue>
+ <IsActive>false</IsActive>
+ <IsRampingUp>false</IsRampingUp>
+ <IsInSetPoint>true</IsInSetPoint>
+ </HeaterState>
+ <SetPoint>80</SetPoint>
+ </TechItem>
+ <TechItem xsi:type="PidItem">
+ <ID>72d7192b-dd27-4064-9f5f-90062388a81c</ID>
+ <Left>1284</Left>
+ <Top>298.97787610619486</Top>
+ <Width>128</Width>
+ <Height>91.469026548670342</Height>
+ <Angle>0</Angle>
+ <ItemGuid>df38139e-0026-46bc-b72f-df5f9eec80f7</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ </TechItem>
+ <TechItem xsi:type="HeaterItem">
+ <ID>915f8dfc-5407-43ca-a0c7-d774867dfb5f</ID>
+ <Left>1415</Left>
+ <Top>286.38053097345141</Top>
+ <Width>103</Width>
+ <Height>113.4867256637167</Height>
+ <Angle>0</Angle>
+ <ItemGuid>B4EE8CC0-EE2B-4ABE-BF09-9226860E756B</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <HeaterState>
+ <HeaterType>HeaterZone2</HeaterType>
+ <SetPoint>80</SetPoint>
+ <CurrentValue>79</CurrentValue>
+ <IsActive>false</IsActive>
+ <IsRampingUp>false</IsRampingUp>
+ <IsInSetPoint>true</IsInSetPoint>
+ </HeaterState>
+ <SetPoint>80</SetPoint>
+ </TechItem>
+ <TechItem xsi:type="SingleGraphItem">
+ <ID>4f3b4ecd-759a-4ba5-80f3-74cc485d7085</ID>
+ <Left>684</Left>
+ <Top>518.79203539822981</Top>
+ <Width>586</Width>
+ <Height>276.32300884955743</Height>
+ <Angle>0</Angle>
+ <ItemGuid>098F7CAB-030C-46B0-B2B8-A85AF2253032</ItemGuid>
+ <ColorNumber>-14774017</ColorNumber>
+ <DecimalPlaces>2</DecimalPlaces>
+ <Duration>2962</Duration>
+ <Min>0</Min>
+ <Max>100</Max>
+ <UseAutoRange>true</UseAutoRange>
+ </TechItem>
+ <TechItem xsi:type="PidItem">
+ <ID>b53a74f3-8e91-40ce-b980-c5b237baeee9</ID>
+ <Left>536</Left>
+ <Top>482.38053097345153</Top>
+ <Width>143</Width>
+ <Height>92.482300884953418</Height>
+ <Angle>0</Angle>
+ <ItemGuid>500698E0-5623-4A47-9537-FCAAF5D0B725</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ </TechItem>
+ <TechItem xsi:type="SingleGraphItem">
+ <ID>f786b4da-3291-4ccb-a280-196fd8697ac1</ID>
+ <Left>5.7499999999999858</Left>
+ <Top>866.06435643564362</Top>
+ <Width>350</Width>
+ <Height>152.70353982300856</Height>
+ <Angle>0</Angle>
+ <ItemGuid>0E4783A1-B8DE-451E-B357-322C39E448DD</ItemGuid>
+ <ColorNumber>-14774017</ColorNumber>
+ <DecimalPlaces>2</DecimalPlaces>
+ <Duration>2962</Duration>
+ <Min>0</Min>
+ <Max>300</Max>
+ <UseAutoRange>true</UseAutoRange>
+ </TechItem>
+ <TechItem xsi:type="SingleGraphItem">
+ <ID>05eab3d7-3af6-4d3f-b3b3-468eeb77a503</ID>
+ <Left>644.29166666666674</Left>
+ <Top>874.00000000000011</Top>
+ <Width>350</Width>
+ <Height>152.70353982300856</Height>
+ <Angle>0</Angle>
+ <ItemGuid>0E4783A1-B8DE-451E-B357-322C39E448CC</ItemGuid>
+ <ColorNumber>-14774017</ColorNumber>
+ <DecimalPlaces>2</DecimalPlaces>
+ <Duration>2962</Duration>
+ <Min>0</Min>
+ <Max>300</Max>
+ <UseAutoRange>true</UseAutoRange>
+ </TechItem>
+ <TechItem xsi:type="PidItem">
+ <ID>c1f48bf1-9cb3-475a-b152-e8b9a211b694</ID>
+ <Left>1010.1666666666667</Left>
+ <Top>895.60597564181194</Top>
+ <Width>128</Width>
+ <Height>91.469026548670342</Height>
+ <Angle>0</Angle>
+ <ItemGuid>7FCA67CB-785B-49F7-B9F2-191E3ACC6CB7</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ </TechItem>
+ <TechItem xsi:type="HeaterItem">
+ <ID>c5fbeda2-230d-40e4-9d52-5b3236e0c561</ID>
+ <Left>1161.708333333333</Left>
+ <Top>885.907999649522</Top>
+ <Width>103</Width>
+ <Height>121.59292035398221</Height>
+ <Angle>0</Angle>
+ <ItemGuid>F8C1BA7F-F6DF-414D-BAF5-D4CB292F91F6</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <HeaterState>
+ <HeaterType>HeadCoverHeater1</HeaterType>
+ <SetPoint>250</SetPoint>
+ <CurrentValue>249.95</CurrentValue>
+ <IsActive>true</IsActive>
+ <IsRampingUp>false</IsRampingUp>
+ <IsInSetPoint>true</IsInSetPoint>
+ </HeaterState>
+ <SetPoint>250</SetPoint>
+ </TechItem>
+ </Items>
+ </MachineTechViewProjectTab>
+ <MachineTechViewProjectTab>
+ <Name>waste</Name>
+ <Items>
+ <TechItem xsi:type="DigitalOutItem">
+ <ID>bb9bf273-0a3d-4202-98ce-37a5f206ed75</ID>
+ <Left>118</Left>
+ <Top>74.380530973451243</Top>
+ <Width>339</Width>
+ <Height>184.4159292035398</Height>
+ <Angle>0</Angle>
+ <ItemGuid>7e1f53ec-8176-4efa-ac3d-c8f2436e60d1</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ </TechItem>
+ <TechItem xsi:type="DigitalOutItem">
+ <ID>59678a51-f995-4952-b250-e449f1fcbeac</ID>
+ <Left>468</Left>
+ <Top>80.336283185839477</Top>
+ <Width>280</Width>
+ <Height>166.17699115044252</Height>
+ <Angle>0</Angle>
+ <ItemGuid>78db28d0-0407-4942-bb62-c44da81c4f9e</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ </TechItem>
+ <TechItem xsi:type="DigitalInItem">
+ <ID>8f9ff579-0e9d-4f48-8ed0-6fa563f2aba7</ID>
+ <Left>873</Left>
+ <Top>63.831858407079665</Top>
+ <Width>174</Width>
+ <Height>133.75221238938059</Height>
+ <Angle>0</Angle>
+ <ItemGuid>06bd7c0b-5aef-445a-86c0-853becf8594b</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ </TechItem>
+ <TechItem xsi:type="DigitalInItem">
+ <ID>70d1bd1e-acdb-436a-b205-6eeb9d137120</ID>
+ <Left>1070</Left>
+ <Top>70.106194690265909</Top>
+ <Width>221</Width>
+ <Height>123.61946902654864</Height>
+ <Angle>0</Angle>
+ <ItemGuid>4048bf02-27dc-4049-9284-fe913a7e0ebe</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ </TechItem>
+ <TechItem xsi:type="DigitalInItem">
+ <ID>dcc7ce16-5b89-4ff8-acd5-7fb0b9ebb6d1</ID>
+ <Left>877</Left>
+ <Top>248.24778761061947</Top>
+ <Width>186</Width>
+ <Height>126.65929203539827</Height>
+ <Angle>0</Angle>
+ <ItemGuid>00ea1771-efee-4f3e-a0d2-8b2a4214e9fd</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ </TechItem>
+ <TechItem xsi:type="TextItem">
+ <ID>2b99bbf7-94da-4bb2-acc9-91b35e543c5d</ID>
+ <Left>897</Left>
+ <Top>358.69469026548683</Top>
+ <Width>147</Width>
+ <Height>69.9159292035398</Height>
+ <Angle>0</Angle>
+ <ColorNumber>-14774017</ColorNumber>
+ <Text>Waste lower presence</Text>
+ </TechItem>
+ <TechItem xsi:type="DigitalInItem">
+ <ID>c150533c-abe4-4edf-b6ad-fa475b133142</ID>
+ <Left>1112</Left>
+ <Top>253.66814159291806</Top>
+ <Width>186</Width>
+ <Height>126.65929203539827</Height>
+ <Angle>0</Angle>
+ <ItemGuid>d2f266e3-779b-4dfe-b513-26ce61c529a4</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ </TechItem>
+ <TechItem xsi:type="TextItem">
+ <ID>d96f2a6d-0ccb-401e-8931-09086ca81fae</ID>
+ <Left>1143</Left>
+ <Top>366.78318584070507</Top>
+ <Width>147</Width>
+ <Height>69.9159292035398</Height>
+ <Angle>0</Angle>
+ <ColorNumber>-14774017</ColorNumber>
+ <Text>Waste middle presence</Text>
+ </TechItem>
+ <TechItem xsi:type="TextItem">
+ <ID>bb9847ba-9671-4613-bf23-a0c637ebc79d</ID>
+ <Left>151</Left>
+ <Top>271.55309734513281</Top>
+ <Width>200</Width>
+ <Height>63.836283185840671</Height>
+ <Angle>0</Angle>
+ <ColorNumber>-14774017</ColorNumber>
+ <Text>pump</Text>
+ </TechItem>
+ <TechItem xsi:type="TextItem">
+ <ID>d13a2df4-3f54-4c31-8f9a-ee7810fb6af5</ID>
+ <Left>504</Left>
+ <Top>283.71238938053096</Top>
+ <Width>192</Width>
+ <Height>67.88938053097354</Height>
+ <Angle>0</Angle>
+ <ColorNumber>-14774017</ColorNumber>
+ <Text>valve</Text>
+ </TechItem>
+ <TechItem xsi:type="DigitalOutItem">
+ <ID>fbe2670f-6d9b-4361-9332-1ceb1692c91a</ID>
+ <Left>76</Left>
+ <Top>313.99115044248094</Top>
+ <Width>356</Width>
+ <Height>208.10619469026472</Height>
+ <Angle>0</Angle>
+ <ItemGuid>78db28d0-0407-4942-bb62-c44da81c4f9e</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ </TechItem>
+ <TechItem xsi:type="PidItem">
+ <ID>6cbf28b4-4e53-4aae-9c6e-a506f8538f51</ID>
+ <Left>414</Left>
+ <Top>342.61504424777644</Top>
+ <Width>187</Width>
+ <Height>142.7477876106214</Height>
+ <Angle>0</Angle>
+ <ItemGuid>31000237-0c0e-40f0-a400-1d8055fa230e</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>e45af3fe-dda1-49a8-ba8e-183c98de3952</ID>
+ <Left>642</Left>
+ <Top>437.73008849557533</Top>
+ <Width>181</Width>
+ <Height>95.247787610619469</Height>
+ <Angle>0</Angle>
+ <ItemGuid>1778C1A7-AFB5-42F9-9E00-E80D30D9FC0A</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>2</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="SingleGraphItem">
+ <ID>c29a04b8-eeec-4a16-91b4-d1c63dddb868</ID>
+ <Left>853</Left>
+ <Top>443.80973451327435</Top>
+ <Width>467</Width>
+ <Height>286.75663716814171</Height>
+ <Angle>0</Angle>
+ <ItemGuid>1778C1A7-AFB5-42F9-9E00-E80D30D9FC0A</ItemGuid>
+ <ColorNumber>-14774017</ColorNumber>
+ <DecimalPlaces>1</DecimalPlaces>
+ <Duration>10</Duration>
+ <Min>0</Min>
+ <Max>100</Max>
+ <UseAutoRange>true</UseAutoRange>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>f93bb87b-d029-42af-99bd-57db41ed1329</ID>
+ <Left>55</Left>
+ <Top>576.54867256637181</Top>
+ <Width>190</Width>
+ <Height>106.53982300885139</Height>
+ <Angle>0</Angle>
+ <ItemGuid>FE0D0A56-5795-4C5A-8E09-939FBB35C441</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>2</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="SingleGraphItem">
+ <ID>5dff5069-ad45-4ed2-a2d2-e58121c4de56</ID>
+ <Left>263</Left>
+ <Top>529.49557522123735</Top>
+ <Width>467</Width>
+ <Height>286.75663716814171</Height>
+ <Angle>0</Angle>
+ <ItemGuid>FE0D0A56-5795-4C5A-8E09-939FBB35C441</ItemGuid>
+ <ColorNumber>-14774017</ColorNumber>
+ <DecimalPlaces>1</DecimalPlaces>
+ <Duration>10</Duration>
+ <Min>0</Min>
+ <Max>100</Max>
+ <UseAutoRange>true</UseAutoRange>
+ </TechItem>
+ </Items>
+ </MachineTechViewProjectTab>
+ <MachineTechViewProjectTab>
+ <Name>disp</Name>
+ <Items>
+ <TechItem xsi:type="SingleGraphItem">
+ <ID>f9531a72-3742-47a7-86bb-b589f8b3eb55</ID>
+ <Left>123</Left>
+ <Top>128.33628318584061</Top>
+ <Width>390</Width>
+ <Height>249.67699115047321</Height>
+ <Angle>0</Angle>
+ <ItemGuid>A499E5E0-A812-4032-8F96-B38C6762C4BD</ItemGuid>
+ <ColorNumber>-14774017</ColorNumber>
+ <DecimalPlaces>3</DecimalPlaces>
+ <Duration>3600</Duration>
+ <Min>0</Min>
+ <Max>100</Max>
+ <UseAutoRange>true</UseAutoRange>
+ </TechItem>
+ <TechItem xsi:type="SingleGraphItem">
+ <ID>aae29286-81b3-476a-9f58-c0fd246cae96</ID>
+ <Left>880</Left>
+ <Top>158.81415929204155</Top>
+ <Width>442</Width>
+ <Height>241.88495575221771</Height>
+ <Angle>0</Angle>
+ <ItemGuid>F33667BD-D9FA-4DC7-BC2C-0E89E60AE4BE</ItemGuid>
+ <ColorNumber>-14774017</ColorNumber>
+ <DecimalPlaces>3</DecimalPlaces>
+ <Duration>3600</Duration>
+ <Min>0</Min>
+ <Max>100</Max>
+ <UseAutoRange>true</UseAutoRange>
+ </TechItem>
+ <TechItem xsi:type="TextItem">
+ <ID>7d94c7c4-1288-4f9d-b0e6-a06794829642</ID>
+ <Left>1055</Left>
+ <Top>14.181415929203524</Top>
+ <Width>161</Width>
+ <Height>111.46017699115049</Height>
+ <Angle>0</Angle>
+ <ColorNumber>-14774017</ColorNumber>
+ <Text>Y</Text>
+ </TechItem>
+ <TechItem xsi:type="TextItem">
+ <ID>c95f9ad1-b607-4606-8217-400bea76f3d6</ID>
+ <Left>384</Left>
+ <Top>23.991150442480944</Top>
+ <Width>161</Width>
+ <Height>111.46017699115049</Height>
+ <Angle>0</Angle>
+ <ColorNumber>-14774017</ColorNumber>
+ <Text>C</Text>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>8f141fa5-fb24-4557-adcf-a6aa55a28fb4</ID>
+ <Left>121</Left>
+ <Top>-8.8495575221214722</Top>
+ <Width>169</Width>
+ <Height>132.73893805309734</Height>
+ <Angle>0</Angle>
+ <ItemGuid>A499E5E0-A812-4032-8F96-B38C6762C4BD</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>3</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>7eab018a-ef43-4bca-a6cf-857d69767bba</ID>
+ <Left>839</Left>
+ <Top>-4.7079646017762684</Top>
+ <Width>169</Width>
+ <Height>132.73893805309734</Height>
+ <Angle>0</Angle>
+ <ItemGuid>F33667BD-D9FA-4DC7-BC2C-0E89E60AE4BE</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>3</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="MonitorRecorderItem">
+ <ID>2a9e89d4-5d60-4a83-9527-cb77fdf35c14</ID>
+ <Left>1276</Left>
+ <Top>22.287610619469035</Top>
+ <Width>187</Width>
+ <Height>102.34070796460179</Height>
+ <Angle>0</Angle>
+ <ColorNumber>-1</ColorNumber>
+ <SelectedMonitorsGuids>
+ <string>D023F15D-3555-48E9-A9E9-5DF99F60D791</string>
+ <string>94F3E5A1-413E-4EA0-BDE1-F0625BFF7910</string>
+ <string>AFB7B6F7-8FFB-4A7F-B814-04F0C163CAA1</string>
+ <string>FE0D0A56-5795-4C5A-8E09-939FBB35C441</string>
+ <string>A8DB1D27-6B25-4FB4-A3F5-46A29BA51955</string>
+ <string>D7585119-4A42-4370-8F1E-F3E62553E588</string>
+ <string>098F7CAB-030C-46B0-B2B8-A85AF2253032</string>
+ <string>1778C1A7-AFB5-42F9-9E00-E80D30D9FC02</string>
+ </SelectedMonitorsGuids>
+ </TechItem>
+ <TechItem xsi:type="DispenserItem">
+ <ID>6d2e7962-b3ae-4682-b20e-9654f48dcffe</ID>
+ <Left>587</Left>
+ <Top>5.0619469026548813</Top>
+ <Width>155</Width>
+ <Height>131.72566371681415</Height>
+ <Angle>0</Angle>
+ <ItemGuid>2CC8E461-E91F-4D4C-A402-922477F06C87</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <Speed>500</Speed>
+ <DisplayName>Dispenser 1</DisplayName>
+ </TechItem>
+ <TechItem xsi:type="SingleGraphItem">
+ <ID>5ee2718f-f068-427b-a31e-d586c7d7682c</ID>
+ <Left>131</Left>
+ <Top>552.94690265486338</Top>
+ <Width>390</Width>
+ <Height>249.67699115047321</Height>
+ <Angle>0</Angle>
+ <ItemGuid>1F0F907A-EC16-4386-AFC8-B2B156F2A822</ItemGuid>
+ <ColorNumber>-14774017</ColorNumber>
+ <DecimalPlaces>3</DecimalPlaces>
+ <Duration>3600</Duration>
+ <Min>0</Min>
+ <Max>100</Max>
+ <UseAutoRange>true</UseAutoRange>
+ </TechItem>
+ <TechItem xsi:type="TextItem">
+ <ID>1c254a92-c075-453f-9667-cdcc91cf8e6a</ID>
+ <Left>399</Left>
+ <Top>455.67256637168265</Top>
+ <Width>161</Width>
+ <Height>111.46017699115049</Height>
+ <Angle>0</Angle>
+ <ColorNumber>-14774017</ColorNumber>
+ <Text>K</Text>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>d1087b1a-c36b-4242-96f5-07c2bb602cc4</ID>
+ <Left>145</Left>
+ <Top>409.52212389380446</Top>
+ <Width>169</Width>
+ <Height>132.73893805309734</Height>
+ <Angle>0</Angle>
+ <ItemGuid>1F0F907A-EC16-4386-AFC8-B2B156F2A822</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>3</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="SingleGraphItem">
+ <ID>53fe93a2-88a5-4d4d-9cd5-eb4d8a8fefae</ID>
+ <Left>604</Left>
+ <Top>561.16371681414739</Top>
+ <Width>390</Width>
+ <Height>249.67699115047321</Height>
+ <Angle>0</Angle>
+ <ItemGuid>6B1DF4B0-BCC2-400C-A3B7-31C5119A55BB</ItemGuid>
+ <ColorNumber>-14774017</ColorNumber>
+ <DecimalPlaces>3</DecimalPlaces>
+ <Duration>3600</Duration>
+ <Min>0</Min>
+ <Max>100</Max>
+ <UseAutoRange>true</UseAutoRange>
+ </TechItem>
+ <TechItem xsi:type="TextItem">
+ <ID>0bef6e9d-6da0-4f06-9e1a-c00142bde4c1</ID>
+ <Left>832</Left>
+ <Top>440.91150442477635</Top>
+ <Width>161</Width>
+ <Height>111.46017699115049</Height>
+ <Angle>0</Angle>
+ <ColorNumber>-14774017</ColorNumber>
+ <Text>M</Text>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>762c5a97-a3bc-45b4-aa9f-0b50afa9cb9b</ID>
+ <Left>633</Left>
+ <Top>434.0132743362783</Top>
+ <Width>169</Width>
+ <Height>132.73893805309734</Height>
+ <Angle>0</Angle>
+ <ItemGuid>6B1DF4B0-BCC2-400C-A3B7-31C5119A55BB</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>3</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="SingleGraphItem">
+ <ID>be584f80-3250-494c-87fc-250d6deae051</ID>
+ <Left>1045</Left>
+ <Top>559.4070796459921</Top>
+ <Width>390</Width>
+ <Height>249.67699115047321</Height>
+ <Angle>0</Angle>
+ <ItemGuid>19645882-6587-4A50-BD85-AF06617DC654</ItemGuid>
+ <ColorNumber>-14774017</ColorNumber>
+ <DecimalPlaces>3</DecimalPlaces>
+ <Duration>3600</Duration>
+ <Min>0</Min>
+ <Max>100</Max>
+ <UseAutoRange>true</UseAutoRange>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>39f6a02c-c4d9-47d0-b92d-bdea0ed5d3ce</ID>
+ <Left>1056</Left>
+ <Top>435.43805309733875</Top>
+ <Width>169</Width>
+ <Height>132.73893805309734</Height>
+ <Angle>0</Angle>
+ <ItemGuid>19645882-6587-4A50-BD85-AF06617DC654</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>3</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="TextItem">
+ <ID>5b924929-9b16-4598-94cc-b2f4bca26798</ID>
+ <Left>1304</Left>
+ <Top>448.0884955752224</Top>
+ <Width>161</Width>
+ <Height>111.46017699115049</Height>
+ <Angle>0</Angle>
+ <ColorNumber>-14774017</ColorNumber>
+ <Text>TI</Text>
+ </TechItem>
+ <TechItem xsi:type="ValveItem">
+ <ID>89ae1fa5-1ad1-469e-ae76-0a29c35805cd</ID>
+ <Left>588</Left>
+ <Top>317.1504424778762</Top>
+ <Width>283</Width>
+ <Height>74.982300884955748</Height>
+ <Angle>0</Angle>
+ <ItemGuid>E144A221-4859-4DC3-9A7E-4A2969FB0826</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ </TechItem>
+ <TechItem xsi:type="ValveItem">
+ <ID>c218cf34-74c2-41bb-8c3b-3030abce451a</ID>
+ <Left>1363</Left>
+ <Top>384.02654867256643</Top>
+ <Width>156</Width>
+ <Height>94.234513274336337</Height>
+ <Angle>0</Angle>
+ <ItemGuid>E144A221-4859-4DC3-9A7E-4A2969FB0826</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ </TechItem>
+ <TechItem xsi:type="ValveItem">
+ <ID>75af30c6-d7f8-4745-bfb5-d6dc5d50479a</ID>
+ <Left>767</Left>
+ <Top>362.74778761061958</Top>
+ <Width>283</Width>
+ <Height>74.982300884955748</Height>
+ <Angle>0</Angle>
+ <ItemGuid>E144A221-4859-4DC3-9A7E-4A2969FB0826</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>df1fd958-fd8a-4b00-98e1-679455494d60</ID>
+ <Left>309</Left>
+ <Top>13.168141592920392</Top>
+ <Width>112</Width>
+ <Height>107.40707964601768</Height>
+ <Angle>0</Angle>
+ <ItemGuid>3174ADCF-5793-4B5A-A3C6-B96E146A903D</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>0</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>f07225b3-1522-4cb6-9ba8-5b9697f05467</ID>
+ <Left>1180</Left>
+ <Top>60.7920353982301</Top>
+ <Width>102</Width>
+ <Height>88.1548672566372</Height>
+ <Angle>0</Angle>
+ <ItemGuid>E2F0FC31-CE7E-416B-ACEA-8EB6CA9B850B</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>0</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>45b87322-e1f5-42eb-88c6-71c2eeb2899a</ID>
+ <Left>1258</Left>
+ <Top>463.06194690265494</Top>
+ <Width>88</Width>
+ <Height>75.995575221239</Height>
+ <Angle>0</Angle>
+ <ItemGuid>37872FE8-D68A-45BC-A441-372B7805C09F</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>0</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>0c1c25e8-3ce3-4994-bbb9-bd6b2367a413</ID>
+ <Left>810</Left>
+ <Top>462.04867256637175</Top>
+ <Width>77</Width>
+ <Height>80.048672566371636</Height>
+ <Angle>0</Angle>
+ <ItemGuid>AD50C358-5BAF-4A2F-8593-51A22C85B3D1</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>0</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="MonitorItem">
+ <ID>fa2f697e-b229-418a-bae6-78b92bf0458b</ID>
+ <Left>336</Left>
+ <Top>428.61061946902663</Top>
+ <Width>95</Width>
+ <Height>96.261061946902657</Height>
+ <Angle>0</Angle>
+ <ItemGuid>84682E90-6926-42AA-BF8C-2CCCF5C26C97</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>0</DecimalPoints>
+ </TechItem>
+ </Items>
+ </MachineTechViewProjectTab>
+ <MachineTechViewProjectTab>
+ <Name>Priming</Name>
+ <Items>
+ <TechItem xsi:type="MonitorItem">
+ <ID>ea45a516-9dac-4c9a-9261-0c44e22aa065</ID>
+ <Left>808</Left>
+ <Top>155.02654867256638</Top>
+ <Width>219</Width>
+ <Height>200.62831858407088</Height>
+ <Angle>0</Angle>
+ <ItemGuid>A499E5E0-A812-4032-8F96-B38C6762C4BD</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <UpdateInterval>10</UpdateInterval>
+ <DecimalPoints>2</DecimalPoints>
+ </TechItem>
+ <TechItem xsi:type="DispenserItem">
+ <ID>3e2cb7dc-a5f3-4ba6-a520-2bae8ff0e4a8</ID>
+ <Left>832</Left>
+ <Top>451.91592920353986</Top>
+ <Width>332</Width>
+ <Height>326.27433628318596</Height>
+ <Angle>0</Angle>
+ <ItemGuid>C8D8FE90-0375-44A2-A6D1-E997789E065C</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ <Speed>1200</Speed>
+ <DisplayName>Dispenser 2</DisplayName>
+ </TechItem>
+ <TechItem xsi:type="SingleGraphItem">
+ <ID>6f8dfd8d-ed50-4923-b908-e0b5bc5d6ae5</ID>
+ <Left>154</Left>
+ <Top>131.72123893805315</Top>
+ <Width>474</Width>
+ <Height>410.37610619469024</Height>
+ <Angle>0</Angle>
+ <ItemGuid>A499E5E0-A812-4032-8F96-B38C6762C4BD</ItemGuid>
+ <ColorNumber>-14774017</ColorNumber>
+ <DecimalPlaces>1</DecimalPlaces>
+ <Duration>1942</Duration>
+ <Min>0</Min>
+ <Max>100</Max>
+ <UseAutoRange>true</UseAutoRange>
+ </TechItem>
+ <TechItem xsi:type="ValveItem">
+ <ID>604e031b-89c3-4c9d-90ef-7b861a77e5e0</ID>
+ <Left>243</Left>
+ <Top>595.80088495575228</Top>
+ <Width>497</Width>
+ <Height>189.48230088495575</Height>
+ <Angle>0</Angle>
+ <ItemGuid>8B1FCBC3-FEEA-4F87-B56F-CE5D28B7ACA4</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ </TechItem>
+ <TechItem xsi:type="DigitalOutItem">
+ <ID>c414ae0e-323a-48c1-9165-2c05cc4234c6</ID>
+ <Left>1291</Left>
+ <Top>584.65486725663732</Top>
+ <Width>200</Width>
+ <Height>171.24336283185835</Height>
+ <Angle>0</Angle>
+ <ItemGuid>0bd10306-2944-4cda-bc59-0264da2883d2</ItemGuid>
+ <ColorNumber>-1</ColorNumber>
+ </TechItem>
+ </Items>
+ </MachineTechViewProjectTab>
+ </Tabs>
+ <SelectedTabIndex>0</SelectedTabIndex>
+</MachineTechViewProject> \ No newline at end of file
diff --git a/Software/Stubs Collection/stubs/update thread PID during run.cs b/Software/Stubs Collection/stubs/update thread PID during run.cs
new file mode 100644
index 000000000..b312440e5
--- /dev/null
+++ b/Software/Stubs Collection/stubs/update thread PID during run.cs
@@ -0,0 +1,57 @@
+using System;
+using System.Text;
+using System.Linq;
+using System.Drawing;
+using System.Diagnostics;
+using System.Windows.Forms;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Collections.Generic;
+using Tango.PMR.Hardware;
+using Tango.PMR.Stubs;
+using Tango.Stubs;
+
+public void OnExecute(StubManager stubManager)
+{
+
+StubHeatingTestRequest stubHeatingTestRequest = new StubHeatingTestRequest();
+/*FEEDER*/
+HardwarePidControl hardwarePidControl = new HardwarePidControl();
+hardwarePidControl.HardwarePidControlType = Tango.PMR.Hardware.HardwarePidControlType.MotorFeeder;
+//hardwarePidControl.HardwarePidControlType = Tango.PMR.Hardware.HardwarePidControlType.MotorPooler;
+//hardwarePidControl.HardwarePidControlType = Tango.PMR.Hardware.HardwarePidControlType.MotorWinder;
+hardwarePidControl.IntegralTime = 0;
+hardwarePidControl.DerivativeTime = 0;
+hardwarePidControl.ProportionalGain = 0;
+hardwarePidControl.Epsilon = 0;
+// hardwarePidControl.ControlOutputType = 0; //Dt - can change to 20/25
+stubHeatingTestRequest.HardwarePidControl1 = hardwarePidControl;
+var response = stubManager.Run<StubHeatingTestResponse>(stubHeatingTestRequest);
+
+/*Puller*/
+/*
+//hardwarePidControl.HardwarePidControlType = Tango.PMR.Hardware.HardwarePidControlType.MotorFeeder;
+hardwarePidControl.HardwarePidControlType = Tango.PMR.Hardware.HardwarePidControlType.MotorPooler;
+//hardwarePidControl.HardwarePidControlType = Tango.PMR.Hardware.HardwarePidControlType.MotorWinder;
+hardwarePidControl.IntegralTime = 0;
+hardwarePidControl.DerivativeTime = 0;
+hardwarePidControl.ProportionalGain = 0;
+hardwarePidControl.Epsilon = 0;
+// hardwarePidControl.ControlOutputType = 0; //Dt - can change to 20/25
+stubHeatingTestRequest.HardwarePidControl1 = hardwarePidControl;
+response = stubManager.Run<StubHeatingTestResponse>(stubHeatingTestRequest);
+*/
+/*WINDER*/
+/*
+//hardwarePidControl.HardwarePidControlType = Tango.PMR.Hardware.HardwarePidControlType.MotorFeeder;
+//hardwarePidControl.HardwarePidControlType = Tango.PMR.Hardware.HardwarePidControlType.MotorPooler;
+hardwarePidControl.HardwarePidControlType = Tango.PMR.Hardware.HardwarePidControlType.MotorWinder;
+hardwarePidControl.IntegralTime = 0;
+hardwarePidControl.DerivativeTime = 0;
+hardwarePidControl.ProportionalGain = 0;
+hardwarePidControl.Epsilon = 0;
+// hardwarePidControl.ControlOutputType = 0; //Dt - can change to 20/25
+stubHeatingTestRequest.HardwarePidControl1 = hardwarePidControl;
+response = stubManager.Run<StubHeatingTestResponse>(stubHeatingTestRequest);
+*/
+} \ No newline at end of file