diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2020-08-30 08:48:14 +0300 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2020-08-30 08:48:14 +0300 |
| commit | ac6d62249d43b4e6a3c227af7b8281b9e3ce2635 (patch) | |
| tree | b1f251d6290261222c70f09b8147dd3cada7978f /Software/Stubs Collection/Procedures/EmbeddedParametersBuild.txt | |
| parent | 0c038093d83f8e266f09f489cd93dda3dbc6ab3f (diff) | |
| parent | daaeac95e6b16bbb390da940b32bae88688e55dc (diff) | |
| download | Tango-ac6d62249d43b4e6a3c227af7b8281b9e3ce2635.tar.gz Tango-ac6d62249d43b4e6a3c227af7b8281b9e3ce2635.zip | |
merge
Diffstat (limited to 'Software/Stubs Collection/Procedures/EmbeddedParametersBuild.txt')
| -rw-r--r-- | Software/Stubs Collection/Procedures/EmbeddedParametersBuild.txt | 233 |
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 |
