123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491 |
- using BaseLibRWFile;
- using Sunny.UI;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- namespace HRT_Measure
- {
- public class ClsWeightHelp
- {
- public static Ini newIni;
- public static List<string> listWeight = new List<string>();
-
- public static ClsWeight clsWeight = new ClsWeight();
- public static Thread thWeight = new Thread(new ThreadStart(ThWeight));
- public static Thread thWeightStart = new Thread(new ThreadStart(ThWeightStart));
- public static Thread thDetect = new Thread(new ThreadStart(ThDetect));
- private static void ThDetect()
- {
- while(true)
- {
- if (!ProgramHelp.Instance.commPLC_M04M05.isPLCConnected)
- {
- Thread.Sleep(100);
- continue;
- }
- GetDetectionData();
- Thread.Sleep(10);
- }
- }
- public static void LoadWeight()
- {
- thWeight.IsBackground = true;
- thWeight.Start();
- thWeightStart.IsBackground = true;
- thWeightStart.Start();
- thDetect.IsBackground = true;
- thDetect.Start();
- }
- private static void ThWeight()
- {
- while (true)
- {
- if(!ProgramHelp.Instance.comm称重.isPLCConnected)
- {
- Thread.Sleep(100);
- continue;
- }
- GetWeightValue();
- Thread.Sleep(1);
- }
- }
- private static void ThWeightStart()
- {
- while (true)
- {
- if (!ProgramHelp.Instance.comm称重.isPLCConnected)
- {
- Thread.Sleep(100);
- continue;
- }
- GetWeightFullTime();
- Thread.Sleep(1);
- }
- }
- public static bool is主界面Show = false;
- public static bool is配方Show = false;
- public static bool is设备Show = false;
- public static bool is称重Show = false;
- public static void GetWeightAdd()
- {
- newIni = new Ini(Application.StartupPath + "\\Config\\PLCAddressWeight.ini");
- for (int i = 0; i < 4; i++)
- {
- string str = newIni.ReadIni("主界面", (i + 1).ToString(), "20");
- listWeight.Add(str);
- string [] arrStr = str.Split(',');
- for (int j = 0; j < 10; j++)
- {
- switch(arrStr[0])
- {
- case "净重":
- clsWeight.Add净重[j] = arrStr[j + 1];
- break;
- case "完成":
- clsWeight.Add完成[j] = arrStr[j + 1];
- break;
- case "实时":
- clsWeight.Add实时[j] = arrStr[j + 1];
- break;
- case "数量":
- clsWeight.Add数量[j] = arrStr[j + 1];
- break;
- }
- }
- }
- for (int i = 0; i < 6; i++)
- {
- string str = newIni.ReadIni("配方", (i + 1).ToString(), "20");
- listWeight.Add(str);
- string[] arrStr = str.Split(',');
- for (int j = 0; j < 10; j++)
- {
- switch (arrStr[0])
- {
- case "目标重量":
- clsWeight.Add目标重量[j] = arrStr[j + 1];
- break;
- case "正偏差":
- clsWeight.Add正偏差[j] = arrStr[j + 1];
- break;
- case "负偏差":
- clsWeight.Add负偏差[j] = arrStr[j + 1];
- break;
- case "快加提前量":
- clsWeight.Add快加提前量[j] = arrStr[j + 1];
- break;
- case "慢加提前量":
- clsWeight.Add慢加提前量[j] = arrStr[j + 1];
- break;
- case "阈值":
- clsWeight.Add阈值[j] = arrStr[j + 1];
- break;
- }
- }
- }
- for (int i = 0; i < 8; i++)
- {
- string str = newIni.ReadIni("设备", (i + 1).ToString(), "20");
- listWeight.Add(str);
- string[] arrStr = str.Split(',');
- for (int j = 0; j < 10; j++)
- {
- switch (arrStr[0])
- {
- case "快加速度":
- clsWeight.Add快加速度[j] = arrStr[j + 1];
- break;
- case "慢加速度":
- clsWeight.Add慢加速度[j] = arrStr[j + 1];
- break;
- case "补料速度":
- clsWeight.Add补料速度[j] = arrStr[j + 1];
- break;
- case "稳定检测时间":
- clsWeight.Add稳定检测时间[j] = arrStr[j + 1];
- break;
- case "快加禁止比较时间":
- clsWeight.Add快加禁止比较时间[j] = arrStr[j + 1];
- break;
- case "慢加禁止比较时间":
- clsWeight.Add慢加禁止比较时间[j] = arrStr[j + 1];
- break;
- case "补加禁止比较时间":
- clsWeight.Add补加禁止比较时间[j] = arrStr[j + 1];
- break;
- case "完成动作执行时间":
- clsWeight.Add完成动作执行时间[j] = arrStr[j + 1];
- break;
- }
- }
- }
- for (int i = 0; i < 10; i++)
- {
- string str = newIni.ReadIni("称重", (i + 1).ToString(), "20");
- listWeight.Add(str);
- string[] arrStr = str.Split(',');
- switch (arrStr[0])
- {
- case "零点跟踪范围":
- clsWeight.Add零点跟踪范围 = arrStr[1];
- break;
- case "零点跟踪速率":
- clsWeight.Add零点跟踪速率 = arrStr[1];
- break;
- case "稳定检测范围":
- clsWeight.Add稳定检测范围 = arrStr[1];
- break;
- case "稳定检测时间":
- clsWeight.Add稳定检测时间总 = arrStr[1];
- break;
- case "预处理滤波强度":
- clsWeight.Add预处理滤波强度 = arrStr[1];
- break;
- case "预处理滤波系数":
- clsWeight.Add预处理滤波系数 = arrStr[1];
- break;
- case "静态滤波防抖动":
- clsWeight.Add静态滤波防抖动 = arrStr[1];
- break;
- case "静态采样频率":
- clsWeight.Add静态采样频率 = arrStr[1];
- break;
- case "静态滤波强度":
- clsWeight.Add静态滤波强度 = arrStr[1];
- break;
- case "静态滤波收敛":
- clsWeight.Add静态滤波收敛 = arrStr[1];
- break;
- }
- }
- LoadWeight();
- }
- public static void Judge称重状态(short s加料, short s卸料)
- {
- if (s加料 != 0)
- {
- UIMessageBox.ShowError($"通道{s加料}加料超时!");
- }
- if (s卸料 != 0)
- {
- UIMessageBox.ShowError($"通道{s卸料}卸料异常!");
- }
- }
- public static short s当前配方号 = 0;
- public static void GetWeightValue()
- {
- ProgramHelp.Instance.comm称重.ReadShort("6023", out s当前配方号, out string strr);
- ProgramHelp.Instance.comm称重.ReadShort("6021", out short s加料超时, out strr);
- ProgramHelp.Instance.comm称重.ReadShort("6022", out short s卸料异常, out strr);
- Judge称重状态(s加料超时, s卸料异常);
- for (int i = 0; i < 10; i++)
- {
- ProgramHelp.Instance.comm称重.ReadInt(clsWeight.Add净重[i], out int ivalue, out string str1);
- clsWeight.f净重[i] = Convert.ToSingle(ivalue) / 100;
- clsWeight.f实时[i] = clsWeight.f净重[i];
- ProgramHelp.Instance.comm称重.ReadShort(arrWeightStartAdd[i], out short svalue, out str1);
- arr称重启动信号[i] = svalue;
- }
- if (ReadPLCHelp.EnumWindowDisplay != WindowDisplay.称重)
- {
- return;
- }
- try
- {
- for (int i = 0; i < 10; i++)
- {
- if(is主界面Show)
- {
- //ProgramHelp.Instance.comm称重.ReadFloat(clsWeight.Add净重[i], out clsWeight.f净重[i], out string str);// clsWeight.f净重[i] =
- ProgramHelp.Instance.comm称重.ReadInt(clsWeight.Add完成[i], out int ivalue1 , out string str);
- clsWeight.f完成[i] = Convert.ToSingle(ivalue1) / 100;
- //ProgramHelp.Instance.comm称重.ReadFloat(clsWeight.Add实时[i], out clsWeight.f实时[i] , out str);
- ProgramHelp.Instance.comm称重.ReadInt(clsWeight.Add数量[i], out clsWeight.i数量[i] , out str);
- }
-
- if(is配方Show)
- {
- ProgramHelp.Instance.comm称重.ReadInt(clsWeight.Add目标重量[i], out int ivalue , out string str配方);
- clsWeight.f目标重量[i] = Convert.ToSingle(ivalue) / 100;
- ProgramHelp.Instance.comm称重.ReadInt(clsWeight.Add正偏差[i], out ivalue, out str配方);
- clsWeight.f正偏差[i] = Convert.ToSingle(ivalue) / 100;
- ProgramHelp.Instance.comm称重.ReadInt(clsWeight.Add负偏差[i], out ivalue, out str配方);
- clsWeight.f负偏差[i] = Convert.ToSingle(ivalue) / 100;
- ProgramHelp.Instance.comm称重.ReadInt(clsWeight.Add快加提前量[i], out ivalue, out str配方);
- clsWeight.f快加提前量[i] = Convert.ToSingle(ivalue) / 100;
- ProgramHelp.Instance.comm称重.ReadInt(clsWeight.Add慢加提前量[i], out ivalue, out str配方);
- clsWeight.f慢加提前量[i] = Convert.ToSingle(ivalue) / 100;
- ProgramHelp.Instance.comm称重.ReadInt(clsWeight.Add阈值[i], out ivalue, out str配方);
- clsWeight.f阈值[i] = Convert.ToSingle(ivalue) / 100;
- }
- if(is设备Show)
- {
- ProgramHelp.Instance.comm称重.ReadShort(clsWeight.Add快加速度[i], out clsWeight.i快加速度[i],out string str设备);
- ProgramHelp.Instance.comm称重.ReadShort(clsWeight.Add慢加速度[i], out clsWeight.i慢加速度[i] ,out str设备);
- ProgramHelp.Instance.comm称重.ReadShort(clsWeight.Add补料速度[i], out clsWeight.i补料速度[i], out str设备);
- ProgramHelp.Instance.comm称重.ReadShort(clsWeight.Add稳定检测时间[i], out clsWeight.i稳定检测时间[i], out str设备);
- ProgramHelp.Instance.comm称重.ReadShort(clsWeight.Add快加禁止比较时间[i],out clsWeight.i快加禁止比较时间[i], out str设备);
- ProgramHelp.Instance.comm称重.ReadShort(clsWeight.Add慢加禁止比较时间[i], out clsWeight.i慢加禁止比较时间[i], out str设备);
- ProgramHelp.Instance.comm称重.ReadShort(clsWeight.Add补加禁止比较时间[i], out clsWeight.i补加禁止比较时间[i], out str设备);
- ProgramHelp.Instance.comm称重.ReadShort(clsWeight.Add完成动作执行时间[i], out clsWeight.i完成动作执行时间[i], out str设备);
- }
- }
- if(is称重Show)
- {
- ProgramHelp.Instance.comm称重1.ReadInt(clsWeight.Add静态采样频率, out clsWeight.i静态采样频率, out string str3);
- ProgramHelp.Instance.comm称重1.ReadShort(clsWeight.Add预处理滤波强度, out clsWeight.i预处理滤波强度, out str3);
- ProgramHelp.Instance.comm称重1.ReadShort(clsWeight.Add预处理滤波系数, out clsWeight.i预处理滤波系数, out str3);
- ProgramHelp.Instance.comm称重1.ReadShort(clsWeight.Add静态滤波防抖动, out clsWeight.i静态滤波防抖动, out str3);
- ProgramHelp.Instance.comm称重1.ReadShort(clsWeight.Add静态滤波强度, out clsWeight.i静态滤波强度, out str3);
- ProgramHelp.Instance.comm称重1.ReadShort(clsWeight.Add静态滤波收敛, out clsWeight.i静态滤波收敛, out str3);
- ProgramHelp.Instance.comm称重1.ReadShort(clsWeight.Add稳定检测范围, out clsWeight.i稳定检测范围, out str3);
- ProgramHelp.Instance.comm称重1.ReadShort(clsWeight.Add零点跟踪速率, out clsWeight.i零点跟踪速率, out str3);
- ProgramHelp.Instance.comm称重1.ReadShort(clsWeight.Add零点跟踪范围, out short s零点跟踪范围, out str3);
- clsWeight.f零点跟踪范围 = s零点跟踪范围 / 10;
- ProgramHelp.Instance.comm称重1.ReadShort(clsWeight.Add稳定检测时间总,out short s稳定检测时间总, out str3);
- clsWeight.f稳定检测时间总 = Convert.ToSingle(s稳定检测时间总) / 10;
- }
- }
- catch (Exception)
- {
-
- }
- }
- public static string[] arrWeightStartAdd = new string[10] { "6030", "6031", "6032", "6033", "6034", "6035", "6036", "6037", "6038", "6039" };
- public static short[] arr称重启动信号 = new short[10] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- public static bool[] arrIsWeightStart = new bool[10] { false, false, false, false, false, false, false, false, false, false };
- public static string[] arr称重结果状态地址 = new string[10] { "6060", "6061", "6062", "6063", "6064", "6065", "6066", "6067", "6068", "6069" };
- public static short[] arr称重结果状态 = new short[10] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
- public static int i称重Count = 0;
- public static void GetWeightFullTime()
- {
- //GetDetectionData();
- for (int i = 0; i < 10; i++)
- {
- arrIsWeightStart[i] = false;
- ProgramHelp.Instance.comm称重.WriteShort(arrWeightStartAdd[i], 0, out string str);
- //arr称重启动信号[i] = 0;
- }
- if (!PLCResultHelp.isM01_称重开始) return;
- for (int i = 0; i < 10; i++)
- {
- ReadPLCHelp.arrShortWeightStart[i] = ReadPLCHelp.GetM01M02Int16Value(ReadPLCHelp.arrWeightStartSignalsAdd[i], ProgramHelp.Instance.commPLC_M01M02);
- }
- Thread.Sleep(200);
- ProgramHelp.Instance.SaveMsg("称重", $"------------------称重开始------------------------", true);
- for (int i = 0; i < 10; i++)
- {
- if (ReadPLCHelp.arrShortWeightStart[i] == 1)
- {
- arrIsWeightStart[i] = true;
- ProgramHelp.Instance.comm称重.WriteShort(arrWeightStartAdd[i], 1, out string str);
- ProgramHelp.Instance.SaveMsg("称重", $"开启第{i}个穴称重", true);
- }
- }
- i称重Count = 0;
- while (true)
- {
- bool isDone = false;
- for (int i = 0; i < 10; i++)
- {
- if (arrIsWeightStart[i])
- {
- ProgramHelp.Instance.SaveMsg("称重", $"第{i}个穴结果{arr称重启动信号[i]}", true);
- if (arr称重启动信号[i] == 2)
- {
- arrIsWeightStart[i] = false;
- }
- }
- isDone = isDone || arrIsWeightStart[i];
- }
-
- if (!isDone)
- {
- break;
- }
-
- Thread.Sleep(500);
- //i称重Count++;
- //if (i称重Count > 500)
- //{
- // i称重Count = 0;
- // break;
- //}
- }
- ProgramHelp.Instance.SaveMsg("称重", $"------------------称重结束------------------------", true);
- for (int i = 0; i < 10; i++)
- {
- ProgramHelp.Instance.comm称重.ReadShort(arr称重结果状态地址[i], out arr称重结果状态[i], out string str);// 0-无 1-OK, 2-NG
- ProgramHelp.Instance.SaveMsg("称重", $"第{i}个穴称重结果状态{arr称重结果状态[i]}", true);
- ProgramHelp.Instance.commPLC_M01M02.WriteInt(ReadPLCHelp.arrWeightDoneStatus[i], (int)arr称重结果状态[i], out str);
- ProgramHelp.Instance.SaveMsg("称重", $"第{i}个穴称重结果状态写入地址{ReadPLCHelp.arrWeightDoneStatus[i]},数据{arr称重结果状态[i]}", true);
- ProgramHelp.Instance.comm称重.ReadInt(clsWeight.Add净重[i], out int ivalue, out string str4);
- clsWeight.f净重[i] = Convert.ToSingle(ivalue) / 100;
- clsWeight.f实时[i] = clsWeight.f净重[i];
- ProgramHelp.Instance.SaveMsg("称重", $"第{i}个穴称重重量{clsWeight.f净重[i]}", true);
- ProgramHelp.Instance.commPLC_M01M02.WriteInt(ReadPLCHelp.arrWeightDoneAdd[i], Convert.ToInt32(clsWeight.f净重[i] * 100), out str);
- if (ReadPLCHelp.arrShortWeightStart[i] == 1)
- {
- ProgramHelp.Instance.SaveMsg("称重", $"第{i}穴,向称重启动信号{ReadPLCHelp.arrWeightStartSignalsAdd[i]}写2", true);
- ProgramHelp.Instance.commPLC_M01M02.WriteShort(ReadPLCHelp.arrWeightStartSignalsAdd[i], 2, out str);
- }
- }
- ClsResultData.GetWeightData();
- ProgramHelp.Instance.SaveMsg("称重", $"向称重开始信号{ReadPLCHelp.strWeightStartAdd}写off", true);
- ProgramHelp.Instance.commPLC_M01M02.WriteCoin(ReadPLCHelp.strWeightStartAdd, false, out string str1);
- i称重Count = 0;
- ProgramHelp.Instance.SaveMsg("称重", $"等待称重开始信号为off", true);
- while (PLCResultHelp.isM01_称重开始)
- {
- Thread.Sleep(10);
- i称重Count++;
- if (i称重Count > 600)
- {
- ProgramHelp.Instance.SaveMsg("称重", $"等待称重开始信号为off超时", true);
- i称重Count = 0;
- break;
- }
- }
- //Thread.Sleep(2000);
- }
- public static int i检测Count = 0;
- public static void GetDetectionData()
- {
- if(PLCResultHelp.isM04_产品信息打包上传)
- {
- Thread.Sleep(500);
- foreach (var itemM04 in ReadPLCHelp.dictM04)
- {
- switch (itemM04.Key)
- {
- //case "允许下料":
- // PLCResultHelp.isM04_允许下料 = ReadPLCHelp.GetM04M05BoolValue(itemM04.Value, ProgramHelp.Instance.commPLC_M04M05);
- // break;
- //case "当前检测高度":
- // PLCResultHelp.fM04_当前检测高度 = ReadPLCHelp.GetM04M05RealValue(itemM04.Value, ProgramHelp.Instance.commPLC_M04M05);
- // break;
- //case "当前重量":
- // PLCResultHelp.fM04_当前重量 = Convert.ToSingle(ReadPLCHelp.GetM04M05IntValue(itemM04.Value, ProgramHelp.Instance.commPLC_M04M05)) / 100;
- // break;
- case "产品高度":
- PLCResultHelp.fM04_产品高度 = ReadPLCHelp.GetM04M05RealValue(itemM04.Value, ProgramHelp.Instance.commPLC_M04M05);
- break;
- case "产品重量":
- PLCResultHelp.fM04_产品重量 = ReadPLCHelp.GetM04M05IntValue(itemM04.Value, ProgramHelp.Instance.commPLC_M04M05);
- break;
- case "废料数量":
- PLCResultHelp.fM04_废料数量 = ReadPLCHelp.GetM04M05IntValue(itemM04.Value, ProgramHelp.Instance.commPLC_M04M05);
- break;
- case "合格数量":
- PLCResultHelp.fM04_合格数量 = ReadPLCHelp.GetM04M05IntValue(itemM04.Value, ProgramHelp.Instance.commPLC_M04M05);
- break;
- case "相机结果":
- ProgramHelp.Instance.commPLC_M04M05.ReadString(itemM04.Value, out PLCResultHelp.fM04_相机结果, out string str);
- break;
- case "盘数":
- PLCResultHelp.fM04_盘数 = ReadPLCHelp.GetM04M05Int16Value(itemM04.Value, ProgramHelp.Instance.commPLC_M04M05);
- break;
- case "NG数量":
- PLCResultHelp.fM04_NG数量 = ReadPLCHelp.GetM04M05IntValue(itemM04.Value, ProgramHelp.Instance.commPLC_M04M05);
- break;
- case "本次完成箱子数量":
- PLCResultHelp.fM04_本次完成箱子数量 = ReadPLCHelp.GetM04M05IntValue(itemM04.Value, ProgramHelp.Instance.commPLC_M04M05);
- break;
- //case "产品信息打包上传":
- // PLCResultHelp.isM04_产品信息打包上传 = ReadPLCHelp.GetM04M05BoolValue(itemM04.Value, ProgramHelp.Instance.commPLC_M04M05);
- // break;
- }
- }
- Thread.Sleep(100);
- ClsResultData.GetDetectionData();
- ProgramHelp.Instance.commPLC_M04M05.WriteCoin("DB80.40.0", false, out string str1);//ReadPLCHelp.dictM04["产品信息打包上传"]
- i检测Count = 0;
- while (PLCResultHelp.isM04_产品信息打包上传)
- {
- Thread.Sleep(10);
- i检测Count++;
- if(i检测Count > 600)
- {
- i检测Count = 0;
- break;
- }
- }
- }
- if(ReadPLCHelp.queuePressureSignals.Count > 0)
- {
- ReadPLCHelp.queuePressureSignals.TryDequeue(out short sresult);
- ClsResultData.GetPressureData();
- }
- }
- }
- }
|