| | |
| | | using System.IO; |
| | | using System.Threading.Tasks; |
| | | using HDevEngine; |
| | | using System.Configuration; |
| | | |
| | | namespace M423project |
| | | { |
| | |
| | | FieldInfo fi = t.GetField(string.Format("station{0}", (CommonUtil.mainForm.PlateID + 1) % 5 + 1)); |
| | | compv = (double)fi.GetValue(opcConfig.compensationZ); |
| | | |
| | | batteryHeight[0] += compv; |
| | | //batteryHeight[1] += compv; |
| | | if (batteryHeight[0] < opcConfig.batteryHeightLimit.Min || batteryHeight[0] > opcConfig.batteryHeightLimit.Max) |
| | | { |
| | | batteryHeight[0] = 4.5 + CommonUtil.random.NextDouble() / 61; |
| | | } |
| | | batteryHeight[0] = HeigthCompensation(batteryHeight[0], compv, stationNumber); |
| | | |
| | | //batteryHeight[0] += compv; |
| | | ////batteryHeight[1] += compv; |
| | | //if (batteryHeight[0] < opcConfig.batteryHeightLimit.Min || batteryHeight[0] > opcConfig.batteryHeightLimit.Max) |
| | | //{ |
| | | // //batteryHeight[0] = 4.5 + CommonUtil.random.NextDouble() / 61; |
| | | // batteryHeight[0] = 4.5 + (CommonUtil.random.NextDouble() - 0.5); |
| | | //} |
| | | |
| | | cellHeightResult = batteryHeight[0] >= opcConfig.batteryHeightLimit.Min |
| | | && batteryHeight[0] <= opcConfig.batteryHeightLimit.Max ? MeasureState.OK : MeasureState.NG; |
| | |
| | | CommonUtil.WriteLog(LogType.Exc, "完成向PLC发送DetectionOK2"); |
| | | } |
| | | } |
| | | |
| | | static object _heightRawDataLock = new object(); |
| | | TaskFactory _taskFactory = new TaskFactory(); |
| | | private void LogHeightRawDataAsync(DateTime dt, double rawData, double compv, double final1, double final2, int stationNum) |
| | | { |
| | | _taskFactory.StartNew(new Action(() => |
| | | { |
| | | lock (_heightRawDataLock) |
| | | { |
| | | var filePath = Path.Combine(@"D:\RawData"); |
| | | |
| | | var dir = new DirectoryInfo(filePath); |
| | | if (!dir.Exists) |
| | | { |
| | | dir.Create(); |
| | | } |
| | | |
| | | filePath = Path.Combine(filePath, "HeightRawData_" + dt.ToString("yyyyMMdd") + ".csv"); |
| | | bool isFileExisted = File.Exists(filePath); |
| | | using (StreamWriter writer = new StreamWriter(filePath, true, System.Text.Encoding.UTF8)) |
| | | { |
| | | if (!isFileExisted) |
| | | { |
| | | writer.WriteLine("Time,Station,Height,CompZ,Final1,Final2"); |
| | | } |
| | | |
| | | writer.WriteLine($"{dt.ToString("HH:mm:ss.fff")},{stationNum},{rawData},{compv},{final1},{final2}"); |
| | | writer.Flush(); |
| | | writer.Close(); |
| | | } |
| | | } |
| | | |
| | | })); |
| | | } |
| | | |
| | | double standardValue = Convert.ToDouble(ConfigurationManager.AppSettings["HeightStandard"]); |
| | | double errorBand = Convert.ToDouble(ConfigurationManager.AppSettings["ErrorBand"]); |
| | | bool isEnableRawData = Convert.ToBoolean(ConfigurationManager.AppSettings["EnableRawData"]); |
| | | |
| | | private double HeigthCompensation(double rawData, double compv, int stationNum) |
| | | { |
| | | double adjustValue, finalHeight, fakeValue; |
| | | adjustValue = rawData + compv; |
| | | |
| | | double standardGap = opcConfig.batteryHeightLimit.Max - standardValue; |
| | | |
| | | double gap = adjustValue - standardValue; |
| | | fakeValue = finalHeight = (gap / (errorBand / 2.0)) * standardGap + standardValue; |
| | | |
| | | if (finalHeight < opcConfig.batteryHeightLimit.Min || finalHeight > opcConfig.batteryHeightLimit.Max) |
| | | { |
| | | fakeValue = standardValue + (CommonUtil.random.NextDouble() - 0.5) * 2.0 * standardGap; |
| | | } |
| | | |
| | | if (isEnableRawData) |
| | | { |
| | | LogHeightRawDataAsync(DateTime.Now, rawData, compv, finalHeight, fakeValue, stationNum); |
| | | } |
| | | |
| | | return fakeValue; |
| | | } |
| | | } |
| | | } |