using System; using System.Collections.Generic; using System.Linq; using DataBlockHelper; using Mesnac.Action.ChemicalWeighing.LjMixManager; namespace Mesnac.Action.ChemicalWeighing.LjPlanning { public class LjPlanningPlcHelp { public static DryerView GetDryerD1 => GetDryerView(58); public static DryerView GetDryerD2 => GetDryerView(298); public static DryerView GetDryerD3 => GetDryerView(538); public static DryerView GetDryerD4 => GetDryerView(778); public static DryerView GetGelatG1 => GetGelatView(1018); public static DryerView GetGelatG2 => GetGelatView(1158); public static DryerView GetGelatG3 => GetGelatView(1298); public static DryerView GetGelatG4 => GetGelatView(1438); public static DryerView GetGelatG5 => GetGelatView(1578); public static DryerView GetGelatG6 => GetGelatView(1718); public static DryerView GetGelatG7 => GetGelatView(1858); public static DryerView GetGelatG8 => GetGelatView(1998); public static List GetWeterM1 => GetWeterView(2138); public static List GetWeterM2 => GetWeterView(2338); public static List GetWeterM3 => GetWeterView(2538); public static List GetWeterM4 => GetWeterView(2738); public static List GetWeterM5 => GetWeterView(2938); public static List GetWeterM6 => GetWeterView(3138); public static List GetWeterM7 => GetWeterView(3338); public static List GetWeterM8 => GetWeterView(3538); /// /// 干混机1 /// /// /// public static void DownD1Recipe(List recipePlcViews, List recipeSteps) { recipePlcViews = recipePlcViews.Where(x => x.Bin != -1).ToList(); int begin = 58; DownCleanD1Recipe(begin); for (int i = 0; i < recipePlcViews.Count(); i++) { var view = recipePlcViews[i]; Dowd(begin, view); begin += 10; } begin += 178; for (int i = 0; i < recipeSteps.Count(); i++) { var view = recipeSteps[i]; DowSteps(begin, view); begin += 12; } PlcConnect.Instance.Write($"DB2104.53.6", true); } public static void DownD2Recipe(List recipePlcViews, List recipeSteps) { recipePlcViews = recipePlcViews.Where(x => x.Bin != -1).ToList(); int begin = 298; DownCleanD1Recipe(begin); for (int i = 0; i < recipePlcViews.Count(); i++) { var view = recipePlcViews[i]; Dowd(begin, view); begin += 10; } begin = 418; for (int i = 0; i < recipeSteps.Count(); i++) { var view = recipeSteps[i]; DowSteps(begin, view); begin += 12; } PlcConnect.Instance.Write($"DB2104.53.7", true); } public static void DownD3Recipe(List recipePlcViews, List recipeSteps) { recipePlcViews = recipePlcViews.Where(x => x.Bin != -1).ToList(); int begin = 538; DownCleanD1Recipe(begin); for (int i = 0; i < recipePlcViews.Count(); i++) { var view = recipePlcViews[i]; Dowd(begin, view); begin += 10; } begin = 658; for (int i = 0; i < recipeSteps.Count(); i++) { var view = recipeSteps[i]; DowSteps(begin, view); begin += 12; } PlcConnect.Instance.Write($"DB2104.54.0", true); } public static void DownD4Recipe(List recipePlcViews, List recipeSteps) { recipePlcViews = recipePlcViews.Where(x => x.Bin != -1).ToList(); int begin = 778; DownCleanD1Recipe(begin); for (int i = 0; i < recipePlcViews.Count(); i++) { var view = recipePlcViews[i]; Dowd(begin, view); begin += 10; } begin = 898; for (int i = 0; i < recipeSteps.Count(); i++) { var view = recipeSteps[i]; DowSteps(begin, view); begin += 12; } PlcConnect.Instance.Write($"DB2104.54.1", true); } public static void DownG1Recipe(List recipePlcViews, List recipeSteps) { recipePlcViews = recipePlcViews.Where(x => x.Bin != -1).ToList(); int begin = 1018; DownCleanG1Recipe(begin); for (int i = 0; i < recipePlcViews.Count(); i++) { var view = recipePlcViews[i]; Dowd(begin, view); begin += 10; } begin = 1038; for (int i = 0; i < recipeSteps.Count(); i++) { var view = recipeSteps[i]; DowSteps(begin, view); begin += 12; } PlcConnect.Instance.Write($"DB2104.53.6", true); } public static void DownG2Recipe(List recipePlcViews, List recipeSteps) { recipePlcViews = recipePlcViews.Where(x => x.Bin != -1).ToList(); int begin = 1158; DownCleanG1Recipe(begin); for (int i = 0; i < recipePlcViews.Count(); i++) { var view = recipePlcViews[i]; Dowd(begin, view); begin += 10; } begin = 1178; for (int i = 0; i < recipeSteps.Count(); i++) { var view = recipeSteps[i]; DowSteps(begin, view); begin += 12; } PlcConnect.Instance.Write($"DB2104.54.2", true); } public static void DownG3Recipe(List recipePlcViews, List recipeSteps) { recipePlcViews = recipePlcViews.Where(x => x.Bin != -1).ToList(); int begin = 1298; DownCleanG1Recipe(begin); for (int i = 0; i < recipePlcViews.Count(); i++) { var view = recipePlcViews[i]; Dowd(begin, view); begin += 10; } begin = 1318; for (int i = 0; i < recipeSteps.Count(); i++) { var view = recipeSteps[i]; DowSteps(begin, view); begin += 12; } PlcConnect.Instance.Write($"DB2104.53.7", true); } public static void DownG4Recipe(List recipePlcViews, List recipeSteps) { recipePlcViews = recipePlcViews.Where(x => x.Bin != -1).ToList(); int begin = 1438; DownCleanG1Recipe(begin); for (int i = 0; i < recipePlcViews.Count(); i++) { var view = recipePlcViews[i]; Dowd(begin, view); begin += 10; } begin = 1458; for (int i = 0; i < recipeSteps.Count(); i++) { var view = recipeSteps[i]; DowSteps(begin, view); begin += 12; } PlcConnect.Instance.Write($"DB2104.54.4", true); } public static void DownG5Recipe(List recipePlcViews, List recipeSteps) { recipePlcViews = recipePlcViews.Where(x => x.Bin != -1).ToList(); int begin = 1578; DownCleanG1Recipe(begin); for (int i = 0; i < recipePlcViews.Count(); i++) { var view = recipePlcViews[i]; Dowd(begin, view); begin += 10; } begin = 1598; for (int i = 0; i < recipeSteps.Count(); i++) { var view = recipeSteps[i]; DowSteps(begin, view); begin += 12; } PlcConnect.Instance.Write($"DB2104.54.6", true); } public static void DownG6Recipe(List recipePlcViews, List recipeSteps) { recipePlcViews = recipePlcViews.Where(x => x.Bin != -1).ToList(); int begin = 1718; DownCleanG1Recipe(begin); for (int i = 0; i < recipePlcViews.Count(); i++) { var view = recipePlcViews[i]; Dowd(begin, view); begin += 10; } begin = 1738; for (int i = 0; i < recipeSteps.Count(); i++) { var view = recipeSteps[i]; DowSteps(begin, view); begin += 12; } PlcConnect.Instance.Write($"DB2104.54.7", true); } public static void DownG7Recipe(List recipePlcViews, List recipeSteps) { recipePlcViews = recipePlcViews.Where(x => x.Bin != -1).ToList(); int begin = 1858; DownCleanG1Recipe(begin); for (int i = 0; i < recipePlcViews.Count(); i++) { var view = recipePlcViews[i]; Dowd(begin, view); begin += 10; } begin = 1878; for (int i = 0; i < recipeSteps.Count(); i++) { var view = recipeSteps[i]; DowSteps(begin, view); begin += 12; } PlcConnect.Instance.Write($"DB2104.55.0", true); } public static void DownG8Recipe(List recipePlcViews, List recipeSteps) { recipePlcViews = recipePlcViews.Where(x => x.Bin != -1).ToList(); int begin = 1998; DownCleanG1Recipe(begin); for (int i = 0; i < recipePlcViews.Count(); i++) { var view = recipePlcViews[i]; Dowd(begin, view); begin += 10; } begin = 2018; for (int i = 0; i < recipeSteps.Count(); i++) { var view = recipeSteps[i]; DowSteps(begin, view); begin += 12; } PlcConnect.Instance.Write($"DB2104.55.1", true); } public static void DownM1Recipe(List recipeSteps) { int begin = 2138; DownM1CleanRecipe(begin); for (int i = 0; i < recipeSteps.Count(); i++) { var view = recipeSteps[i]; DowMSteps(begin, view); begin += 20; } PlcConnect.Instance.Write($"DB2104.55.2", true); } public static void DownM2Recipe(List recipeSteps) { int begin = 2338; DownM1CleanRecipe(begin); for (int i = 0; i < recipeSteps.Count(); i++) { var view = recipeSteps[i]; DowMSteps(begin, view); begin += 20; } PlcConnect.Instance.Write($"DB2104.55.3", true); } public static void DownM3Recipe(List recipeSteps) { int begin = 2538; DownM1CleanRecipe(begin); for (int i = 0; i < recipeSteps.Count(); i++) { var view = recipeSteps[i]; DowMSteps(begin, view); begin += 20; } PlcConnect.Instance.Write($"DB2104.55.4", true); } public static void DownM4Recipe(List recipeSteps) { int begin = 2738; DownM1CleanRecipe(begin); for (int i = 0; i < recipeSteps.Count(); i++) { var view = recipeSteps[i]; DowMSteps(begin, view); begin += 20; } PlcConnect.Instance.Write($"DB2104.55.5", true); } public static void DownM5Recipe(List recipeSteps) { int begin = 2938; DownM1CleanRecipe(begin); for (int i = 0; i < recipeSteps.Count(); i++) { var view = recipeSteps[i]; DowMSteps(begin, view); begin += 20; } PlcConnect.Instance.Write($"DB2104.55.6", true); } public static void DownM6Recipe(List recipeSteps) { int begin = 3138; DownM1CleanRecipe(begin); for (int i = 0; i < recipeSteps.Count(); i++) { var view = recipeSteps[i]; DowMSteps(begin, view); begin += 20; } PlcConnect.Instance.Write($"DB2104.55.7", true); } public static void DownM7Recipe(List recipeSteps) { int begin = 3338; DownM1CleanRecipe(begin); for (int i = 0; i < recipeSteps.Count(); i++) { var view = recipeSteps[i]; DowMSteps(begin, view); begin += 20; } PlcConnect.Instance.Write($"DB2104.56.0", true); } public static void DownM8Recipe(List recipeSteps) { int begin = 3538; DownM1CleanRecipe(begin); for (int i = 0; i < recipeSteps.Count(); i++) { var view = recipeSteps[i]; DowMSteps(begin, view); begin += 20; } PlcConnect.Instance.Write($"DB2104.56.1", true); } private static DryerView GetDryerView(int start) { var byteTransform = PlcConnect.Instance.ByteTransform; DryerView view = new DryerView(); var operateResult = PlcConnect.Instance.Read($"DB2104.{start}.0", 240); if (operateResult.IsSuccess) { List ls = new List(); var convert = operateResult.Content; var data = convert.Skip(0).Take(120); for (int i = 0; i < 12; i++) { var bytes = data.Skip(i * 10).Take(10).ToArray(); RecipePlcView plcView = new RecipePlcView { Bin = byteTransform.TransInt16(bytes, 0), Set = byteTransform.TransSingle(bytes, 2), Tolerance = byteTransform.TransSingle(bytes, 6) }; ls.Add(plcView); } view.RecipePlcViews = ls; data = convert.Skip(120).Take(120); List lsSteps = new List(); for (int i = 0; i < 10; i++) { var bytes = data.Skip(i * 12).Take(12).ToArray(); Step step = new Step() { MixCode = byteTransform.TransInt16(bytes, 0), MixTime = byteTransform.TransInt16(bytes, 2), MixTemp = byteTransform.TransSingle(bytes, 4), MixSpeed = byteTransform.TransSingle(bytes, 8) }; lsSteps.Add(step); } view.RecipeSteps = lsSteps; } return view; } private static DryerView GetGelatView(int start) { var byteTransform = PlcConnect.Instance.ByteTransform; DryerView view = new DryerView(); var operateResult = PlcConnect.Instance.Read($"DB2104.{start}.0", 140); if (operateResult.IsSuccess) { List ls = new List(); var convert = operateResult.Content; var data = convert.Skip(0).Take(20); for (int i = 0; i < 2; i++) { var bytes = data.Skip(i * 10).Take(10).ToArray(); RecipePlcView plcView = new RecipePlcView { Bin = byteTransform.TransInt16(bytes, 0), Set = byteTransform.TransSingle(bytes, 2), Tolerance = byteTransform.TransSingle(bytes, 6) }; ls.Add(plcView); } view.RecipePlcViews = ls; data = convert.Skip(20).Take(120); List lsSteps = new List(); for (int i = 0; i < 10; i++) { var bytes = data.Skip(i * 12).Take(12).ToArray(); Step step = new Step() { MixCode = byteTransform.TransInt16(bytes, 0), MixTime = byteTransform.TransInt16(bytes, 2), MixTemp = byteTransform.TransSingle(bytes, 4), MixSpeed = byteTransform.TransSingle(bytes, 8) }; lsSteps.Add(step); } view.RecipeSteps = lsSteps; } return view; } private static List GetWeterView(int start) { var byteTransform = PlcConnect.Instance.ByteTransform; var operateResult = PlcConnect.Instance.Read($"DB2104.{start}.0", 200); List lsSteps = new List(); if (operateResult.IsSuccess) { var data = operateResult.Content; for (int i = 0; i < 10; i++) { var bytes = data.Skip(i * 20).Take(20).ToArray(); MixStep step = new MixStep() { MixCode = byteTransform.TransInt16(bytes, 0), MixTime = byteTransform.TransInt16(bytes, 2), MixTemp = byteTransform.TransSingle(bytes, 4), MixSpeed = byteTransform.TransSingle(bytes, 8), SetValue = byteTransform.TransSingle(bytes, 12), SetTolerance = byteTransform.TransSingle(bytes, 16) }; lsSteps.Add(step); } } return lsSteps; } private static void DownCleanD1Recipe(int begin) { List recipePlcViews = GetClean(12); List recipeSteps = GetCleanStep(10); for (int i = 0; i < recipePlcViews.Count(); i++) { var view = recipePlcViews[i]; Dowd(begin, view); begin += 10; } //begin += 120; for (int i = 0; i < recipeSteps.Count(); i++) { var view = recipeSteps[i]; DowSteps(begin, view); begin += 12; } } private static void DownCleanG1Recipe(int begin) { List recipePlcViews = GetClean(2); List recipeSteps = GetCleanStep(10); for (int i = 0; i < recipePlcViews.Count(); i++) { var view = recipePlcViews[i]; Dowd(begin, view); begin += 10; } //begin += 20; for (int i = 0; i < recipeSteps.Count(); i++) { var view = recipeSteps[i]; DowSteps(begin, view); begin += 12; } } private static void DownM1CleanRecipe(int begin) { List recipeSteps = GetCleanMixStep(10); for (int i = 0; i < recipeSteps.Count(); i++) { var view = recipeSteps[i]; DowMSteps(begin, view); begin += 20; } } private static void Dowd(int start, RecipePlcView view) { int bin = start; PlcConnect.Instance.Write($"DB2104.{bin}.0", view.Bin); int set = start + 2; PlcConnect.Instance.Write($"DB2104.{set}.0", view.Set); int tolerance = start + 6; PlcConnect.Instance.Write($"DB2104.{tolerance}.0", view.Tolerance); } private static void DowSteps(int start, Step step) { int mixCode = start; PlcConnect.Instance.Write($"DB2104.{mixCode}.0", step.MixCode); int mixTime = start + 2; PlcConnect.Instance.Write($"DB2104.{mixTime}.0", step.MixTime); int mixTemp = start + 4; PlcConnect.Instance.Write($"DB2104.{mixTemp}.0", step.MixTemp); int mixSpeed = start + 8; PlcConnect.Instance.Write($"DB2104.{mixSpeed}.0", step.MixSpeed); } private static void DowMSteps(int start, MixStep step) { int mixCode = start; var s = PlcConnect.Instance.Write($"DB2104.{mixCode}.0", step.MixCode); int mixTime = start + 2; PlcConnect.Instance.Write($"DB2104.{mixTime}.0", step.MixTime); int mixTemp = start + 4; PlcConnect.Instance.Write($"DB2104.{mixTemp}.0", step.MixTemp); int mixSpeed = start + 8; PlcConnect.Instance.Write($"DB2104.{mixSpeed}.0", step.MixSpeed); int setValue = start + 12; PlcConnect.Instance.Write($"DB2104.{setValue}.0", step.SetValue); int tolerance = start + 16; PlcConnect.Instance.Write($"DB2104.{tolerance}.0", step.SetTolerance); } private static List GetClean(int num) { List ls = new List(num); for (int i = 0; i < num; i++) { ls.Add(new RecipePlcView() { Bin = 0, Tolerance = 0, Set = 0 }); } return ls; } private static List GetCleanStep(int num) { List ls = new List(num); for (int i = 0; i < num; i++) { ls.Add(new Step() { MixCode = 0, MixSpeed = 0, MixTemp = 0, MixTime = 0 }); } return ls; } private static List GetCleanMixStep(int num) { List ls = new List(num); for (int i = 0; i < num; i++) { ls.Add(new MixStep() { MixCode = 0, MixSpeed = 0, MixTemp = 0, MixTime = 0, SetTolerance = 0, SetValue = 0 }); } return ls; } } }