aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Stubs Collection/Procedures/EmbeddedParametersBuild.txt
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2020-08-28 14:00:06 +0300
committerShlomo Hecht <shlomo@twine-s.com>2020-08-28 14:00:06 +0300
commitdaaeac95e6b16bbb390da940b32bae88688e55dc (patch)
tree0683e21137218777c29c5ce65c38643d697d8075 /Software/Stubs Collection/Procedures/EmbeddedParametersBuild.txt
parentd06662b0f8ae1457a59b1b3391c448408ecff49d (diff)
downloadTango-daaeac95e6b16bbb390da940b32bae88688e55dc.tar.gz
Tango-daaeac95e6b16bbb390da940b32bae88688e55dc.zip
updated procedures in FSE testing and PROD
Diffstat (limited to 'Software/Stubs Collection/Procedures/EmbeddedParametersBuild.txt')
-rw-r--r--Software/Stubs Collection/Procedures/EmbeddedParametersBuild.txt233
1 files changed, 233 insertions, 0 deletions
diff --git a/Software/Stubs Collection/Procedures/EmbeddedParametersBuild.txt b/Software/Stubs Collection/Procedures/EmbeddedParametersBuild.txt
new file mode 100644
index 000000000..403f8710f
--- /dev/null
+++ b/Software/Stubs Collection/Procedures/EmbeddedParametersBuild.txt
@@ -0,0 +1,233 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.ComponentModel;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using System.IO;
+using Google.Protobuf;
+using Tango.BL.Enumerations;
+using Tango.PMR.Stubs;
+using Tango.PMR.Diagnostics;
+using Tango.FSE.Common.Diagnostics;
+using Tango.PMR.EmbeddedParameters;
+using Tango.PMR.IO;
+using Tango.FSE.Procedures;
+
+
+public class Cleaning
+{
+ [Description("Actuator Going up time")]
+ public int Tup;
+ [Description("Actuator Wait up time")]
+ public int Tdelay1;
+ [Description("Actuator Wait Down time")]
+ public int Tdelay2;
+}
+public class Advanced
+{
+ [Description("Automatic heating on machine StartUp")]
+ public bool InitialHeating;
+ [Description("Waste pressure buildup factor")]
+ public int WFCF;
+ [Description("Auto fill mode on/off")]
+ public bool Autofill;
+}
+
+public class Program
+{
+ public void OnExecute(IProcedureContext context)
+ {
+
+ context.AddResult(ResultType.Passed, "My Value Name", "Test for this value has passed.");
+ ConfigurationParameters configurationParameters = new ConfigurationParameters();
+
+ bool AdvancedParams = context.GetInput<bool>("AdvancedParameters");
+ Advanced Advancedparam = new Advanced();
+ Advancedparam.InitialHeating = true;
+ Advancedparam.WFCF = 40;
+ Advancedparam.Autofill = true;
+ if (AdvancedParams == true)
+ Advancedparam = context.RequestUserInputFor<Advanced>(Advancedparam,"Advanced parameters input Required","Please fill in the form");
+
+ 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 = 20;
+ configurationParameters.OpenValveTimeout = 20;
+
+ //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 = 0.85;
+ 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 = Advancedparam.WFCF;
+
+ //how much time to start the WFCF process (pressure buildup) before segment start
+ configurationParameters.IDSPreSegmentWFCFTimeBeforeSegment = 12000;
+
+ //flag: start heaters according to saved process parameters upon init?
+ configurationParameters.StartHeatingOnInitSequence = Advancedparam.InitialHeating;
+
+ // 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
+
+ bool SetCleaning = context.GetInput<bool>("SetCleaningValues");
+ Cleaning Clean = new Cleaning();
+ Clean.Tup = 10;
+ Clean.Tdelay1 = 98;
+ Clean.Tdelay2 = 198;//300 milli up, stay 1 sec, stay down 2 sec
+ if (SetCleaning == true)
+ Clean = context.RequestUserInputFor<Cleaning>(Clean,"Cleaning Input Required","Please fill in the form");
+
+ // Tup = LeftRockerSpeed/100;
+ // Tdelay1 = LeftRockerSpeed%100;
+ // Tdelay2 = RightRockerSpeed;
+ int LeftRockerSpeed = Clean.Tup*100+Clean.Tdelay1;
+ int RightRockerSpeed = Clean.Tdelay2;
+
+ configurationParameters.IDSLeftCleaningMotorSpeed = LeftRockerSpeed;
+ configurationParameters.IDSRightCleaningMotorSpeed = RightRockerSpeed;
+
+ 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 = 0.0;
+ configurationParameters.GeneralParameters.Add(checkCurrentAlarms);
+ //check the tamper alarms
+
+ /*3*/
+ Double checkTamperAlarms = new Double();
+ checkTamperAlarms = context.GetInput<double>("CheckTampers");
+ 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;
+ if (Advancedparam.Autofill == false)
+ SetAutoFill = 0.0;
+ configurationParameters.GeneralParameters.Add(SetAutoFill);
+
+ //configurationParameters = context.RequestUserInputFor<ConfigurationParameters>(configurationParameters,"ConfigurationParameters Input Required","Please fill in the form");
+ /*Directory.CreateDirectory ("C:/Temp");
+ File.WriteAllBytes("C:/temp/EmbParam.cfg",configurationParameters.ToBytes());
+
+ byte[] fileBytes1 = File.ReadAllBytes("C:/temp/EmbParam.cfg");*/
+ byte[] fileBytes = configurationParameters.ToBytes();
+
+
+ var config = ConfigurationParameters.Parser.ParseFrom(fileBytes);
+
+ context.Write( config);
+ Thread.Sleep(1000);
+
+
+ context.Write("\n\n Deleting old file");
+
+ DeleteRequest deleteRequest = new DeleteRequest();
+ deleteRequest.Path = "SYSINFO//EmbParam.cfg";
+ deleteRequest.Attribute = Tango.PMR.IO.FileAttribute.Unspecified;
+ DeleteResponse response5 = context.Send<DeleteResponse>(deleteRequest);
+
+
+ Thread.Sleep(1000);
+ context.Write("\n\n Loading new file file");
+
+ FileUploadRequest fileUploadRequest = new FileUploadRequest();
+ fileUploadRequest.Path = "SYSINFO//EmbParam.cfg";
+ fileUploadRequest.Length = (int)fileBytes.Length;
+ FileUploadResponse response2 = context.Send<FileUploadResponse>(fileUploadRequest);
+ Thread.Sleep(1000);
+ long chunk_size = response2.MaxChunkLength;
+
+ context.Write("Chunk size "+ chunk_size + " file size "+ fileBytes.Length +"\n\n");
+ if (chunk_size < fileBytes.Length)
+ {
+ context.AddResult(ResultType.Failed, "Chunk size too small", chunk_size);
+ }
+ else
+ {
+ FileChunkUploadRequest fileChunkUploadRequest = new FileChunkUploadRequest();
+ fileChunkUploadRequest.UploadID = response2.UploadID;
+ fileChunkUploadRequest.Buffer = ByteString.CopyFrom(fileBytes);
+ var response3 = context.Send<FileChunkUploadResponse>(fileChunkUploadRequest);
+
+ //if (response3.
+
+ // activating the new file
+ ProgressRequest progressRequest = new ProgressRequest();
+ progressRequest.Amount = 0xCD;
+ progressRequest.Delay = 0xCD;
+ var response1 = context.Send<ProgressResponse>(progressRequest);
+ context.AddResult(ResultType.Passed, "parameters loaded", chunk_size);
+ }
+
+ }
+} \ No newline at end of file