using System; using System.Drawing; using System.Windows.Forms; using ZedGraph; using CRVM.SIDExcuter; using CRVM.Entity; using CRVM.Utility; namespace CRVM { public partial class PlottingReview : WeifenLuo.WinFormsUI.Docking.DockContent { private int oneStepPoints; private double timeSpan; private int displayPoints; private int indexPos = 0; private int orient = 1;//正为正向,负为反向 private int coeff = 1;//步数放大比例 private MasterPane master; private GraphPane gpt; IViewHelper fileHelper; private Machine macReview = null; Color[] rollLineColor = { Color.FromArgb(20, 25, 244), Color.FromArgb(11, 147, 47), Color.FromArgb(209, 184, 37) }; public PlottingReview(IViewHelper fileHelper, Machine mac) { this.fileHelper = fileHelper; this.macReview = mac; timeSpan = Convert.ToDouble(SysParam.Instance.reTimeSpan); displayPoints = Convert.ToInt32(timeSpan * SysParam.Instance.reSampleFre); oneStepPoints = SysParam.Instance.reSamplePoint; InitializeComponent(); } private void Plot_Load(object sender, EventArgs e) { LoadIni(); } private void LoadIni() { indexPos = 0; btLeft.Enabled = false; btRight.Enabled = false; btPause.Enabled = false; btStart.Enabled = true; btStop.Enabled = false; stepBar.Maximum = fileHelper.signalLengthOrigin - Convert.ToInt32(SysParam.Instance.reTimeSpan) * SysParam.Instance.reSampleFre; stepBar.Minimum = 0; stepBar.LargeChange = 5 * oneStepPoints; stepBar.SmallChange = oneStepPoints; GraRefresh(); } public void GraRefresh() { SubExcute(); } private void SubExcute() { if (fileHelper != null) { //zedGraphControl1.IsShowPointValues = false; master = new MasterPane(); master.PaneList.Clear(); if (SysParam.Instance.orderByOther) { if (SysParam.Instance.orderByChannel) { //for (int i = 0; i < SysParam.Instance.channelCount; i++) for (int i = SysParam.Instance.channelCount - 1; i >= 0; i--) { if (SysParam.Instance.channel[i].ChChecked) { if (SysParam.Instance.checkBoxTime) OrderByChannel_Time(macReview.Stand[i], i); if (SysParam.Instance.checkBoxEnergy) OrderByChannel_Energy(i); } } } else { if (SysParam.Instance.checkBoxTime) OrderByKind_Time(); if (SysParam.Instance.checkBoxEnergy) OrderByKind_Energy(); } } else if (SysParam.Instance.orderByStandnoR2L) { if (SysParam.Instance.checkBoxTime) OrderByKind_Time(); if (SysParam.Instance.checkBoxEnergy) OrderByKind_Energy(); } else if (SysParam.Instance.orderByStandnoL2R) { if (SysParam.Instance.checkBoxTime) OrderByKind_Time2(); if (SysParam.Instance.checkBoxEnergy) OrderByKind_Energy2(); } master.Border.IsVisible = false; master.Margin.All = 3f; master.InnerPaneGap = 3f; master.Fill = new Fill(SysParam.Instance.colorBackgroud); master.AxisChange(); zedGraphControl1.MasterPane = master; if (SysParam.Instance.orderByStandnoR2L || SysParam.Instance.orderByStandnoL2R) { int colNumTemp = 0;//显示的列数,按机架排列 for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) { if (SysParam.Instance.channel[i].ChChecked) { colNumTemp++; } } int picNumber = 0; if (SysParam.Instance.checkBoxTime) { if (SysParam.Instance.checkBoxTimeAll) { picNumber++; } if (SysParam.Instance.checkBoxTimeL) { picNumber++; } if (SysParam.Instance.checkBoxTimeM) { picNumber++; } if (SysParam.Instance.checkBoxTimeH) { picNumber++; } if (SysParam.Instance.checkBoxTimeFre) { picNumber++; } if (SysParam.Instance.checkBoxTimeFilt) { picNumber++; } } if (SysParam.Instance.checkBoxEnergy) { if (SysParam.Instance.checkBoxEnergyAll) { picNumber++; } if (SysParam.Instance.checkBoxEnergyL) { picNumber++; } if (SysParam.Instance.checkBoxEnergyM) { picNumber++; } if (SysParam.Instance.checkBoxEnergyH) { picNumber++; } if (SysParam.Instance.checkBoxEnergySpeed) { picNumber++; } } if (picNumber == 0) { picNumber = 1; } zedGraphControl1.MasterPane.RowNum = picNumber; if (colNumTemp == 0 || colNumTemp > SysParam.Instance.SpeedChannelCount) { } else { zedGraphControl1.MasterPane.ColNum = colNumTemp; } zedGraphControl1.MasterPane.SetLayout(zedGraphControl1.CreateGraphics(), PaneLayout.UserFormat); } else if (SysParam.Instance.orderByOther) { if (SysParam.Instance.orderBySingleColumn) { zedGraphControl1.MasterPane.SetLayout(zedGraphControl1.CreateGraphics(), PaneLayout.SingleColumn); } else { zedGraphControl1.MasterPane.SetLayout(zedGraphControl1.CreateGraphics(), PaneLayout.SquareRowPreferred); } } zedGraphControl1.Height = ClientRectangle.Height; zedGraphControl1.Refresh(); //Console.WriteLine(DateTime.Now.ToString("mmss.fff")+"结束"); } } private void OrderByChannel_Time(Stand stand, int standNo) { if (standNo >= SysParam.Instance.SpeedChannelCount) { return; } double[] tvib = getData(standNo, indexPos, displayPoints); double x_min = indexPos * Convert.ToDouble(SysParam.Instance.reSamplePoint) / SysParam.Instance.reSampleFre; double x_max = x_min + timeSpan; double[] tx = new double[displayPoints]; GetAlarmParam(fileHelper.originSpeedList[standNo][indexPos], stand); for (int i = 0; i < displayPoints; i++) { tx[i] = x_min + Convert.ToDouble(i) / SysParam.Instance.reSampleFre; } if (SysParam.Instance.checkBoxTimeAll) { SetTimeGra_All(tx, tvib, x_min, x_max, SysParam.Instance.comboBoxTimeAll, (standNo + 1) + "号机架时域波形", standNo); } if (SysParam.Instance.checkBoxTimeL) { SetTimeGra_LMH(tx, tvib, x_min, x_max, stand.band_Fre_L1, stand.band_Fre_L2, SysParam.Instance.comboBoxTimeL, (standNo + 1) + "号机架低频时域", 5); } if (SysParam.Instance.checkBoxTimeM) { SetTimeGra_LMH(tx, tvib, x_min, x_max, stand.band_Fre_M1, stand.band_Fre_M2, SysParam.Instance.comboBoxTimeM, (standNo + 1) + "号机架中频时域", 5); } if (SysParam.Instance.checkBoxTimeH) { SetTimeGra_LMH(tx, tvib, x_min, x_max, stand.band_Fre_H1, stand.band_Fre_H2, SysParam.Instance.comboBoxTimeH, (standNo + 1) + "号机架高频时域", 5); } if (SysParam.Instance.checkBoxTimeFre) { SetTimeGra_Fre(tvib, SysParam.Instance.comboBoxTimeFre, (standNo + 1) + "号机架频谱"); } if (SysParam.Instance.checkBoxTimeFilt) { SetTimeGra_LMH(tx, tvib, x_min, x_max, Convert.ToInt32(SysParam.Instance.textBoxf1), Convert.ToInt32(SysParam.Instance.textBoxf2), SysParam.Instance.ComboBoxTimeFilt, (standNo + 1) + "号机架带通滤波", standNo); } } /// /// 倒叙 SysParam.Instance.SpeedChannelCount ~ 1 /// private void OrderByKind_Time() { if (SysParam.Instance.checkBoxTimeAll) { //for (int i = 0; i < SysParam.Instance.channelCount; i++) for (int i = SysParam.Instance.SpeedChannelCount-1; i >= 0; i--) { double[] tvib = getData(i, indexPos, displayPoints); double x_min = indexPos * Convert.ToDouble(SysParam.Instance.reSamplePoint) / SysParam.Instance.reSampleFre; double x_max = x_min + timeSpan; double[] tx = new double[displayPoints]; for (int j = 0; j < displayPoints; j++) { tx[j] = x_min + Convert.ToDouble(j) / SysParam.Instance.reSampleFre; } if (SysParam.Instance.channel[i].ChChecked) { SetTimeGra_All(tx, tvib, x_min, x_max, SysParam.Instance.comboBoxTimeAll, (i + 1) + "号机架时域波形", i); } } } if (SysParam.Instance.checkBoxTimeL) { //for (int i = 0; i < SysParam.Instance.channelCount; i++) for (int i = SysParam.Instance.SpeedChannelCount-1; i >= 0; i--) { if (SysParam.Instance.channel[i].ChChecked) { double[] tvib = getData(i, indexPos, displayPoints); double x_min = indexPos * Convert.ToDouble(SysParam.Instance.reSamplePoint) / SysParam.Instance.reSampleFre; double x_max = x_min + timeSpan; double[] tx = new double[displayPoints]; for (int j = 0; j < displayPoints; j++) { tx[j] = x_min + Convert.ToDouble(j) / SysParam.Instance.reSampleFre; } GetAlarmParam(fileHelper.originSpeedList[i][indexPos], macReview.Stand[i]); SetTimeGra_LMH(tx, tvib, x_min, x_max, macReview.Stand[i].band_Fre_L1, macReview.Stand[i].band_Fre_L2, SysParam.Instance.comboBoxTimeL, (i + 1) + "号机架低频时域", 5); } } } if (SysParam.Instance.checkBoxTimeM) { //for (int i = 0; i < SysParam.Instance.channelCount; i++) for (int i = SysParam.Instance.SpeedChannelCount-1; i >= 0; i--) { if (SysParam.Instance.channel[i].ChChecked) { double[] tvib = getData(i, indexPos, displayPoints); double x_min = indexPos * Convert.ToDouble(SysParam.Instance.reSamplePoint) / SysParam.Instance.reSampleFre; double x_max = x_min + timeSpan; double[] tx = new double[displayPoints]; for (int j = 0; j < displayPoints; j++) { tx[j] = x_min + Convert.ToDouble(j) / SysParam.Instance.reSampleFre; } GetAlarmParam(fileHelper.originSpeedList[i][indexPos], macReview.Stand[i]); SetTimeGra_LMH(tx, tvib, x_min, x_max, macReview.Stand[i].band_Fre_M1, macReview.Stand[i].band_Fre_M2, SysParam.Instance.comboBoxTimeM, (i + 1) + "号机架中频时域", 5); } } } if (SysParam.Instance.checkBoxTimeH) { //for (int i = 0; i < SysParam.Instance.channelCount; i++) for (int i = SysParam.Instance.SpeedChannelCount-1; i >= 0; i--) { if (SysParam.Instance.channel[i].ChChecked) { double[] tvib = getData(i, indexPos, displayPoints); double x_min = indexPos * Convert.ToDouble(SysParam.Instance.reSamplePoint) / SysParam.Instance.reSampleFre; double x_max = x_min + timeSpan; double[] tx = new double[displayPoints]; for (int j = 0; j < displayPoints; j++) { tx[j] = x_min + Convert.ToDouble(j) / SysParam.Instance.reSampleFre; } GetAlarmParam(fileHelper.originSpeedList[i][indexPos], macReview.Stand[i]); SetTimeGra_LMH(tx, tvib, x_min, x_max, macReview.Stand[i].band_Fre_H1, macReview.Stand[i].band_Fre_H2, SysParam.Instance.comboBoxTimeH, (i + 1) + "号机架高频时域", 5); } } } if (SysParam.Instance.checkBoxTimeFre) { //for (int i = 0; i < SysParam.Instance.channelCount; i++) for (int i = SysParam.Instance.SpeedChannelCount-1; i >= 0; i--) { if (SysParam.Instance.channel[i].ChChecked) { double[] tvib = getData(i, indexPos, displayPoints); SetTimeGra_Fre(tvib, SysParam.Instance.comboBoxTimeFre, (i + 1) + "号机架频谱"); } } } if (SysParam.Instance.checkBoxTimeFilt) { //for (int i = 0; i < SysParam.Instance.channelCount; i++) for (int i = SysParam.Instance.SpeedChannelCount-1; i >= 0; i--) { if (SysParam.Instance.channel[i].ChChecked) { double[] tvib = getData(i, indexPos, displayPoints); double x_min = indexPos * Convert.ToDouble(SysParam.Instance.reSamplePoint) / SysParam.Instance.reSampleFre; double x_max = x_min + timeSpan; double[] tx = new double[displayPoints]; for (int j = 0; j < displayPoints; j++) { tx[j] = x_min + Convert.ToDouble(j) / SysParam.Instance.reSampleFre; } SetTimeGra_LMH(tx, tvib, x_min, x_max, Convert.ToInt32(SysParam.Instance.textBoxf1), Convert.ToInt32(SysParam.Instance.textBoxf2), SysParam.Instance.ComboBoxTimeFilt, (i + 1) + "号机架带通滤波", i); } } } } /// /// 顺序 1 ~ SysParam.Instance.SpeedChannelCount /// private void OrderByKind_Time2() { if (SysParam.Instance.checkBoxTimeAll) { for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) //for (int i = 4; i >= 0; i--) { double[] tvib = getData(i, indexPos, displayPoints); double x_min = indexPos * Convert.ToDouble(SysParam.Instance.reSamplePoint) / SysParam.Instance.reSampleFre; double x_max = x_min + timeSpan; double[] tx = new double[displayPoints]; for (int j = 0; j < displayPoints; j++) { tx[j] = x_min + Convert.ToDouble(j) / SysParam.Instance.reSampleFre; } if (SysParam.Instance.channel[i].ChChecked) { SetTimeGra_All(tx, tvib, x_min, x_max, SysParam.Instance.comboBoxTimeAll, (i + 1) + "号机架时域波形", i); } } } if (SysParam.Instance.checkBoxTimeL) { for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) //for (int i = 4; i >= 0; i--) { if (SysParam.Instance.channel[i].ChChecked) { double[] tvib = getData(i, indexPos, displayPoints); double x_min = indexPos * Convert.ToDouble(SysParam.Instance.reSamplePoint) / SysParam.Instance.reSampleFre; double x_max = x_min + timeSpan; double[] tx = new double[displayPoints]; for (int j = 0; j < displayPoints; j++) { tx[j] = x_min + Convert.ToDouble(j) / SysParam.Instance.reSampleFre; } GetAlarmParam(fileHelper.originSpeedList[i][indexPos], macReview.Stand[i]); SetTimeGra_LMH(tx, tvib, x_min, x_max, macReview.Stand[i].band_Fre_L1, macReview.Stand[i].band_Fre_L2, SysParam.Instance.comboBoxTimeL, (i + 1) + "号机架低频时域", 5); } } } if (SysParam.Instance.checkBoxTimeM) { for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) //for (int i = 4; i >= 0; i--) { if (SysParam.Instance.channel[i].ChChecked) { double[] tvib = getData(i, indexPos, displayPoints); double x_min = indexPos * Convert.ToDouble(SysParam.Instance.reSamplePoint) / SysParam.Instance.reSampleFre; double x_max = x_min + timeSpan; double[] tx = new double[displayPoints]; for (int j = 0; j < displayPoints; j++) { tx[j] = x_min + Convert.ToDouble(j) / SysParam.Instance.reSampleFre; } GetAlarmParam(fileHelper.originSpeedList[i][indexPos], macReview.Stand[i]); SetTimeGra_LMH(tx, tvib, x_min, x_max, macReview.Stand[i].band_Fre_M1, macReview.Stand[i].band_Fre_M2, SysParam.Instance.comboBoxTimeM, (i + 1) + "号机架中频时域", 5); } } } if (SysParam.Instance.checkBoxTimeH) { for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) //for (int i = 4; i >= 0; i--) { if (SysParam.Instance.channel[i].ChChecked) { double[] tvib = getData(i, indexPos, displayPoints); double x_min = indexPos * Convert.ToDouble(SysParam.Instance.reSamplePoint) / SysParam.Instance.reSampleFre; double x_max = x_min + timeSpan; double[] tx = new double[displayPoints]; for (int j = 0; j < displayPoints; j++) { tx[j] = x_min + Convert.ToDouble(j) / SysParam.Instance.reSampleFre; } GetAlarmParam(fileHelper.originSpeedList[i][indexPos], macReview.Stand[i]); SetTimeGra_LMH(tx, tvib, x_min, x_max, macReview.Stand[i].band_Fre_H1, macReview.Stand[i].band_Fre_H2, SysParam.Instance.comboBoxTimeH, (i + 1) + "号机架高频时域", 5); } } } if (SysParam.Instance.checkBoxTimeFre) { for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) //for (int i = 4; i >= 0; i--) { if (SysParam.Instance.channel[i].ChChecked) { double[] tvib = getData(i, indexPos, displayPoints); SetTimeGra_Fre(tvib, SysParam.Instance.comboBoxTimeFre, (i + 1) + "号机架频谱"); } } } if (SysParam.Instance.checkBoxTimeFilt) { for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) //for (int i = 4; i >= 0; i--) { if (SysParam.Instance.channel[i].ChChecked) { double[] tvib = getData(i, indexPos, displayPoints); double x_min = indexPos * Convert.ToDouble(SysParam.Instance.reSamplePoint) / SysParam.Instance.reSampleFre; double x_max = x_min + timeSpan; double[] tx = new double[displayPoints]; for (int j = 0; j < displayPoints; j++) { tx[j] = x_min + Convert.ToDouble(j) / SysParam.Instance.reSampleFre; } SetTimeGra_LMH(tx, tvib, x_min, x_max, Convert.ToInt32(SysParam.Instance.textBoxf1), Convert.ToInt32(SysParam.Instance.textBoxf2), SysParam.Instance.ComboBoxTimeFilt, (i + 1) + "号机架带通滤波", i); } } } } private void OrderByChannel_Energy(int standNo) { if (standNo >= SysParam.Instance.SpeedChannelCount) { return; } if (SysParam.Instance.checkBoxEnergyAll) { energy_All(fileHelper.energyData, SysParam.Instance.comboBoxEnergyAll, standNo); } if (SysParam.Instance.checkBoxEnergyL) { energy_LMH(fileHelper.energyData, SysParam.Instance.comboBoxEnergyL, standNo, 0, "低频"); } if (SysParam.Instance.checkBoxEnergyM) { energy_LMH(fileHelper.energyData, SysParam.Instance.comboBoxEnergyM, standNo, 1, "中频"); } if (SysParam.Instance.checkBoxEnergyH) { energy_LMH(fileHelper.energyData, SysParam.Instance.comboBoxEnergyH, standNo, 2, "高频"); } if (SysParam.Instance.checkBoxEnergySpeed && (standNo < SysParam.Instance.SpeedChannelCount)) { energy_Speed(fileHelper.energyData, SysParam.Instance.comboBoxEnergySpeed, standNo); } } private void OrderByKind_Energy() { if (SysParam.Instance.checkBoxEnergyAll) { //for (int i = 0; i < SysParam.Instance.channelCount; i++) for (int i = SysParam.Instance.SpeedChannelCount-1; i >= 0; i--) { if (SysParam.Instance.channel[i].ChChecked) { energy_All(fileHelper.energyData, SysParam.Instance.comboBoxEnergyAll, i); } } } if (SysParam.Instance.checkBoxEnergyL) { //for (int i = 0; i < SysParam.Instance.channelCount; i++) for (int i = SysParam.Instance.SpeedChannelCount-1; i >= 0; i--) { if (SysParam.Instance.channel[i].ChChecked) { energy_LMH(fileHelper.energyData, SysParam.Instance.comboBoxEnergyL, i, 0, "低频"); } } } if (SysParam.Instance.checkBoxEnergyM) { //for (int i = 0; i < SysParam.Instance.channelCount; i++) for (int i = SysParam.Instance.SpeedChannelCount-1; i >= 0; i--) { if (SysParam.Instance.channel[i].ChChecked) { energy_LMH(fileHelper.energyData, SysParam.Instance.comboBoxEnergyM, i, 1, "中频"); } } } if (SysParam.Instance.checkBoxEnergyH) { //for (int i = 0; i < SysParam.Instance.channelCount; i++) for (int i = SysParam.Instance.SpeedChannelCount-1; i >= 0; i--) { if (SysParam.Instance.channel[i].ChChecked) { energy_LMH(fileHelper.energyData, SysParam.Instance.comboBoxEnergyH, i, 2, "高频"); } } } if (SysParam.Instance.checkBoxEnergySpeed) { //for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) for (int i = SysParam.Instance.SpeedChannelCount-1; i >= 0; i--) { if (SysParam.Instance.channel[i].ChChecked) { energy_Speed(fileHelper.energyData, SysParam.Instance.comboBoxEnergySpeed, i); } } } } private void OrderByKind_Energy2() { if (SysParam.Instance.checkBoxEnergyAll) { for (int i = 0; i < SysParam.Instance.channelCount; i++) //for (int i = 4; i >= 0; i--) { if (SysParam.Instance.channel[i].ChChecked) { energy_All(fileHelper.energyData, SysParam.Instance.comboBoxEnergyAll, i); } } } if (SysParam.Instance.checkBoxEnergyL) { for (int i = 0; i < SysParam.Instance.channelCount; i++) //for (int i = 4; i >= 0; i--) { if (SysParam.Instance.channel[i].ChChecked) { energy_LMH(fileHelper.energyData, SysParam.Instance.comboBoxEnergyL, i, 0, "低频"); } } } if (SysParam.Instance.checkBoxEnergyM) { for (int i = 0; i < SysParam.Instance.channelCount; i++) //for (int i = 4; i >= 0; i--) { if (SysParam.Instance.channel[i].ChChecked) { energy_LMH(fileHelper.energyData, SysParam.Instance.comboBoxEnergyM, i, 1, "中频"); } } } if (SysParam.Instance.checkBoxEnergyH) { for (int i = 0; i < SysParam.Instance.channelCount; i++) //for (int i = 4; i >= 0; i--) { if (SysParam.Instance.channel[i].ChChecked) { energy_LMH(fileHelper.energyData, SysParam.Instance.comboBoxEnergyH, i, 2, "高频"); } } } if (SysParam.Instance.checkBoxEnergySpeed) { for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++) //for (int i = 4; i >= 0; i--) { if (SysParam.Instance.channel[i].ChChecked) { energy_Speed(fileHelper.energyData, SysParam.Instance.comboBoxEnergySpeed, i); } } } } private void SetTimeGra_All(double[] tx, double[] lineList, double xmin, double xmax, string yAxisVal, string title, int standno) { if (standno >= SysParam.Instance.SpeedChannelCount) { return; } DevelopLog.DeBug.WriteLogFile("review", "XXXXXXXXXX"); gpt = new GraphPane(); gpt.CurveList.Clear(); if (standno < SysParam.Instance.SpeedChannelCount) { //辊系故障判别线 if (SysParam.Instance.rollLineVisible && fileHelper.originSpeedList[standno][indexPos] > 5) { double rotatetimeB, rotatetimeM, rotatetimeW; rotatetimeB = (Math.PI * (macReview.Stand[standno].rollDiameterBL + macReview.Stand[standno].rollDiameterBU) / 2.0) / (fileHelper.originSpeedList[standno][indexPos] / 60 * 1000);//支撑辊的旋转周期 rotatetimeM = (Math.PI * (macReview.Stand[standno].rollDiameterML + macReview.Stand[standno].rollDiameterMU) / 2.0) / (fileHelper.originSpeedList[standno][indexPos] / 60 * 1000);//中间辊的旋转周期 rotatetimeW = (Math.PI * (macReview.Stand[standno].rollDiameterWL + macReview.Stand[standno].rollDiameterWU) / 2.0) / (fileHelper.originSpeedList[standno][indexPos] / 60 * 1000);//工作辊的旋转周期 if (rotatetimeB < timeSpan) { double[] x = { rotatetimeB + xmin, rotatetimeB + xmin }; double[] y = { Convert.ToDouble(yAxisVal), -Convert.ToDouble(yAxisVal) }; gpt.AddStick("支撑辊(" + rotatetimeB.ToString("0.000") + "s)", x, y, SysParam.Instance.colorBackupRoll).Line.Width = 2f; } if (rotatetimeM < timeSpan) { double[] x = { rotatetimeM + xmin, rotatetimeM + xmin }; double[] y = { Convert.ToDouble(yAxisVal), -Convert.ToDouble(yAxisVal) }; gpt.AddStick("中间辊(" + rotatetimeM.ToString("0.000") + "s)", x, y, SysParam.Instance.colorMidRoll).Line.Width = 2f; } if (rotatetimeW < timeSpan) { double[] x = { rotatetimeW + xmin, rotatetimeW + xmin }; double[] y = { Convert.ToDouble(yAxisVal), -Convert.ToDouble(yAxisVal) }; gpt.AddStick("工作辊(" + rotatetimeW.ToString("0.000") + "s)", x, y, SysParam.Instance.colorWorkRoll).Line.Width = 2f; } } } gpt.AddCurve("", tx, lineList, SysParam.Instance.colorTime, SymbolType.None); gpt.XAxis.Scale.Min = xmin; gpt.XAxis.Scale.Max = xmax; gpt.YAxis.Scale.Min = -Convert.ToSingle(yAxisVal); gpt.YAxis.Scale.Max = Convert.ToSingle(yAxisVal); gpt.Title.Text = title; GraPaneSetting(gpt); master.Add(gpt); } private void SetTimeGra_LMH(double[] tx, double[] lineList, double xmin, double xmax, int fre_1, int fre_2, string yAxisVal, string title, int standno) { if (standno >= SysParam.Instance.SpeedChannelCount) { return; } gpt = new GraphPane(); gpt.CurveList.Clear(); if (standno < SysParam.Instance.SpeedChannelCount) { //辊系故障判别线 if (SysParam.Instance.rollLineVisible && fileHelper.originSpeedList[standno][indexPos] > 5) { double rotatetimeB, rotatetimeM, rotatetimeW; rotatetimeB = (Math.PI * (macReview.Stand[standno].rollDiameterBL + macReview.Stand[standno].rollDiameterBU) / 2.0) / (fileHelper.originSpeedList[standno][indexPos] / 60 * 1000);//支撑辊的旋转周期 rotatetimeM = (Math.PI * (macReview.Stand[standno].rollDiameterML + macReview.Stand[standno].rollDiameterMU) / 2.0) / (fileHelper.originSpeedList[standno][indexPos] / 60 * 1000);//中间辊的旋转周期 rotatetimeW = (Math.PI * (macReview.Stand[standno].rollDiameterWL + macReview.Stand[standno].rollDiameterWU) / 2.0) / (fileHelper.originSpeedList[standno][indexPos] / 60 * 1000);//工作辊的旋转周期 if (rotatetimeB < timeSpan) { double[] x = { rotatetimeB + xmin, rotatetimeB + xmin }; double[] y = { Convert.ToDouble(yAxisVal), -Convert.ToDouble(yAxisVal) }; gpt.AddStick("支撑辊", x, y, SysParam.Instance.colorBackupRoll).Line.Width = 2f; } if (rotatetimeM < timeSpan) { double[] x = { rotatetimeM + xmin, rotatetimeM + xmin }; double[] y = { Convert.ToDouble(yAxisVal), -Convert.ToDouble(yAxisVal) }; gpt.AddStick("中间辊", x, y, SysParam.Instance.colorBackupRoll).Line.Width = 2f; } if (rotatetimeW < timeSpan) { double[] x = { rotatetimeW + xmin, rotatetimeW + xmin }; double[] y = { Convert.ToDouble(yAxisVal), -Convert.ToDouble(yAxisVal) }; gpt.AddStick("工作辊", x, y, SysParam.Instance.colorBackupRoll).Line.Width = 2f; } } } int length = lineList.Length; //double[] tXAxis = new double[length]; double[] llf; llf = SysParam.Instance.filterAlgor(lineList, fre_1, fre_2, length, 100, Convert.ToInt32(SysParam.Instance.reSampleFre)); //for (int i = 0; i < length; i++) //{ // tXAxis[i] = Convert.ToDouble(i) / SysParam.Instance.sampleFre; //} gpt.AddCurve("", tx, llf, SysParam.Instance.colorTime, SymbolType.None); gpt.XAxis.Scale.Min = xmin; gpt.XAxis.Scale.Max = xmax; gpt.YAxis.Scale.Min = -Convert.ToSingle(yAxisVal); gpt.YAxis.Scale.Max = Convert.ToSingle(yAxisVal); gpt.YAxis.Scale.Format = "90.99g"; gpt.Title.Text = title; GraPaneSetting(gpt); master.Add(gpt); } private void SetTimeGra_Fre(double[] lineList, string yAxisVal, string title) { gpt = new GraphPane(); gpt.CurveList.Clear(); PointPairList list_f = new PointPairList(); list_f.Clear(); int orgLength = lineList.Length; int length = Convert.ToInt32(Math.Pow(2, SysParam.Instance.N2M(orgLength))); double[] f = new double[length]; double[] tt = new double[length]; for (int i = 0; i < length; i++) { tt[i] = lineList[orgLength - length + i]; } SysParam.Instance.FFT(tt, f, length, 1); for (int i = 0; i < length / 2; i++) { f[i] = 2 * Math.Sqrt(tt[i] * tt[i] + f[i] * f[i]) / length; list_f.Add(Convert.ToDouble(i) * SysParam.Instance.reSampleFre / length, f[i]); } gpt.AddCurve("", list_f, SysParam.Instance.colorFre, SymbolType.None); gpt.XAxis.Scale.Max = 1000; gpt.XAxis.Scale.Min = 0; gpt.YAxis.Scale.Max = Convert.ToSingle(yAxisVal); gpt.YAxis.Scale.Min = 0; gpt.Title.Text = title; GraPaneSetting(gpt); master.Add(gpt); } private void energy_All(double[,] lineList, string yAxisVal, int stdNo) { gpt = new GraphPane(); gpt.CurveList.Clear(); int length = fileHelper.signalLengthEnergy; double[] tx = new double[length]; double[] ty = new double[length]; for (int i = 0; i < length; i++) { tx[i] = i * SysParam.Instance.reSamplePoint / Convert.ToDouble(SysParam.Instance.reSampleFre); ty[i] = lineList[stdNo * 8 + 1, i]; } gpt.AddCurve("", tx, ty, SysParam.Instance.colorEnergy, SymbolType.None); gpt.XAxis.Scale.Min = 0.0; gpt.XAxis.Scale.Max = tx[length - 1]; gpt.YAxis.Scale.Min = 0.0; gpt.YAxis.Scale.Max = Convert.ToDouble(yAxisVal); gpt.Title.Text = (stdNo + 1) + "号机架全局能量"; GraPaneSetting(gpt); this.master.Add(gpt); } private void energy_LMH(double[,] lineList, string yAxisVal, int stdNo, int typeNo, string type) { gpt = new GraphPane(); gpt.CurveList.Clear(); int length = fileHelper.signalLengthEnergy; double[] tx = new double[length]; double[] ty = new double[length]; double[] tyalarm = new double[length]; for (int i = 0; i < length; i++) { tx[i] = i * SysParam.Instance.reSamplePoint / Convert.ToDouble(SysParam.Instance.reSampleFre); ty[i] = lineList[stdNo * 8 + 2 + typeNo, i]; tyalarm[i] = lineList[stdNo * 8 + 5 + typeNo, i]; } gpt.AddCurve("能量线", tx, ty, SysParam.Instance.colorEnergy, SymbolType.None); gpt.AddCurve("报警线", tx, tyalarm, SysParam.Instance.colorAlarm, SymbolType.None).Line.Width = 2f; gpt.XAxis.Scale.Min = 0.0; gpt.XAxis.Scale.Max = tx[length - 1]; gpt.YAxis.Scale.Min = 0.0; gpt.YAxis.Scale.Max = Convert.ToDouble(yAxisVal); gpt.Title.Text = (stdNo + 1) + "号机架" + type + "能量"; GraPaneSetting(gpt); this.master.Add(gpt); } private void energy_Speed(double[,] lineList, string yAxisVal, int stdNo) { gpt = new GraphPane(); gpt.CurveList.Clear(); int length = fileHelper.signalLengthEnergy; double[] tx = new double[length]; double[] ty = new double[length]; for (int i = 0; i < length; i++) { tx[i] = i * SysParam.Instance.reSamplePoint / Convert.ToDouble(SysParam.Instance.reSampleFre); ty[i] = lineList[stdNo * 8, i]; } gpt.AddCurve("", tx, ty, SysParam.Instance.colorSpeed, SymbolType.None).Line.IsSmooth = true; gpt.XAxis.Scale.Min = 0.0; gpt.XAxis.Scale.Max = tx[length - 1]; gpt.YAxis.Scale.Min = 0.0; gpt.YAxis.Scale.Max = Convert.ToDouble(yAxisVal); gpt.Title.Text = (stdNo + 1) + "号机架速度"; GraPaneSetting(gpt); this.master.Add(gpt); } private static void GraPaneSetting(GraphPane tempGraph) { float fontsize = SysParam.Instance.fontSize; Color myFontColor = SysParam.Instance.colorFont; //tempGraph.Margin.All = 2f; tempGraph.Fill.IsVisible = false; tempGraph.IsFontsScaled = false; tempGraph.TitleGap = 0f; tempGraph.Margin.All = 3f; tempGraph.Border.Color = Color.FromArgb(127, myFontColor); tempGraph.Chart.Border.Color = myFontColor; tempGraph.Chart.Fill.IsVisible = false; tempGraph.Title.FontSpec.FontColor = myFontColor; tempGraph.Title.FontSpec.Family = "微软雅黑"; tempGraph.Title.FontSpec.IsBold = false; tempGraph.Title.FontSpec.Size = 1.2f * fontsize; tempGraph.Legend.Border.IsVisible = false; tempGraph.Legend.Position = LegendPos.InsideTopLeft; tempGraph.Legend.IsHStack = false; tempGraph.Legend.IsShowLegendSymbols = false; tempGraph.Legend.FontSpec.Size = 0.8f * fontsize; tempGraph.Legend.Fill.IsVisible = false; tempGraph.Legend.FontSpec.FontColor = myFontColor; tempGraph.Legend.FontSpec.Family = "微软雅黑"; tempGraph.XAxis.Title.FontSpec.Family = "微软雅黑"; tempGraph.XAxis.Title.FontSpec.IsBold = false; tempGraph.XAxis.Scale.FontSpec.FontColor = myFontColor; tempGraph.XAxis.Scale.FontSpec.Size = fontsize; tempGraph.XAxis.Title.IsVisible = false; tempGraph.XAxis.MajorTic.IsOutside = false; tempGraph.XAxis.MajorTic.Color = Color.FromArgb(127, myFontColor); tempGraph.XAxis.MinorTic.IsAllTics = false; tempGraph.YAxis.Title.FontSpec.Family = "微软雅黑"; tempGraph.YAxis.Title.FontSpec.IsBold = false; tempGraph.YAxis.Scale.FontSpec.FontColor = myFontColor; tempGraph.YAxis.Scale.FontSpec.Size = fontsize; tempGraph.XAxis.Title.IsVisible = false; tempGraph.YAxis.MajorTic.IsOutside = false; tempGraph.YAxis.MajorTic.Color = Color.FromArgb(127, myFontColor); tempGraph.YAxis.MinorTic.IsAllTics = false; tempGraph.YAxis.MajorGrid.IsZeroLine = false; if (SysParam.Instance.BackgroundGridOn) { tempGraph.XAxis.MajorGrid.IsVisible = true; tempGraph.XAxis.MajorGrid.Color = Color.FromArgb(127, myFontColor); tempGraph.YAxis.MajorGrid.IsVisible = true; tempGraph.YAxis.MajorGrid.Color = Color.FromArgb(127, myFontColor); } else { tempGraph.XAxis.MajorGrid.IsVisible = false; tempGraph.YAxis.MajorGrid.IsVisible = false; } } private double[] getData(int standNo, int index, int length) { double[] originData = new double[length]; index = index * SysParam.Instance.reSamplePoint; try { for (int i = 0; i < length; i++) { originData[i] = fileHelper.originDataList[standNo][index + i]; } } catch (Exception) { originData = new double[length]; for (int i = 0; i < length; i++) { originData[i] = fileHelper.originDataList[standNo][fileHelper.signalLengthOrigin - length + i]; } } return originData; } private void timer1_Tick(object sender, EventArgs e) { if (fileHelper.signalLengthOrigin >= SysParam.Instance.reSampleFre) { stepBar.Maximum = fileHelper.signalLengthOrigin - Convert.ToInt32(SysParam.Instance.reTimeSpan) * SysParam.Instance.reSampleFre; int ecchstep = orient * coeff; timeSpan = Convert.ToDouble(SysParam.Instance.reTimeSpan); displayPoints = Convert.ToInt32(timeSpan * SysParam.Instance.reSampleFre); indexPos = indexPos + ecchstep; if (indexPos < 0) { indexPos = 0; } if (indexPos * SysParam.Instance.reSamplePoint + displayPoints <= fileHelper.signalLengthOrigin) { stepBar.Value = indexPos * SysParam.Instance.reSamplePoint; GraRefresh(); } else { timer1.Enabled = false; btRight.Enabled = false; btLeft.Enabled = true; } } else { timer1.Enabled = false; MessageBox.Show("记录长度短于1秒,不可回放!", "警告"); btRight.Enabled = false; btPause.Enabled = false; btStart.Enabled = false; master.PaneList.Clear(); } } private void btStart_Click(object sender, EventArgs e) { //indexPos = 0; orient = 1; timer1.Enabled = true; btStop.Enabled = true; btPause.Enabled = true; btStart.Enabled = false; btRight.Enabled = false; btLeft.Enabled = true; } private void btStop_Click(object sender, EventArgs e) { indexPos = 0; timer1.Enabled = false; btStart.Enabled = true; btStop.Enabled = false; btPause.Enabled = false; btRight.Enabled = false; btLeft.Enabled = false; stepBar.Value = 0; LoadIni(); } private void btPaues_Click(object sender, EventArgs e) { stepBar.Enabled = true; timer1.Enabled = false; btStart.Enabled = false; btStop.Enabled = false; btPause.Enabled = false; btRight.Enabled = true; btLeft.Enabled = true; } private void btRight_Click(object sender, EventArgs e) { orient = 1; timer1.Enabled = true; btStart.Enabled = false; btStop.Enabled = true; btPause.Enabled = true; btRight.Enabled = false; btLeft.Enabled = true; } private void stepBar_Scroll(object sender, ScrollEventArgs e) { stepBar.Maximum = fileHelper.signalLengthOrigin - Convert.ToInt32(SysParam.Instance.reTimeSpan) * SysParam.Instance.reSampleFre; //int eachstep = orient * coeff; timeSpan = Convert.ToDouble(SysParam.Instance.reTimeSpan); displayPoints = Convert.ToInt32(timeSpan * SysParam.Instance.reSampleFre); indexPos = Convert.ToInt32(stepBar.Value / SysParam.Instance.reSamplePoint); if (indexPos * SysParam.Instance.reSamplePoint + displayPoints <= fileHelper.signalLengthOrigin) { stepBar.Value = indexPos * SysParam.Instance.reSamplePoint; } else { btRight.Enabled = false; btLeft.Enabled = true; } GraRefresh(); } private void trackBar1_Scroll(object sender, EventArgs e) { int itmp = trackBar1.Value; if (itmp < 0) { timer1.Interval = -itmp * 200; } else if (itmp == 0) { timer1.Interval = 200; } else { timer1.Interval = 200 / itmp; } if (itmp > 1) { coeff = itmp / 2; } else { coeff = 1; } } private void btLeft_Click(object sender, EventArgs e) { orient = -1; timer1.Enabled = true; btStart.Enabled = false; btStop.Enabled = true; btPause.Enabled = true; btRight.Enabled = true; btLeft.Enabled = false; } private void GetAlarmParam(double speed, Stand std) { int ias = std.alarm_spd.Length; int i_fre = std.fre_l_S1.Length - 1; int iIndex = std.alarm_spd[0].alarmSpeed; if (speed <= std.alarm_spd[0].alarmSpeed) { std.band_Fre_L1 = std.fre_l_S1[0];//.fre_l_A1; std.band_Fre_L2 = std.fre_l_S2[0]; std.band_Fre_M1 = std.fre_m_S1[0]; std.band_Fre_M2 = std.fre_m_S2[0]; std.band_Fre_H1 = std.fre_h_S1[0]; std.band_Fre_H2 = std.fre_h_S2[0]; std.alarm_L_Value_ck = std.fre_l_V[0]; std.alarm_M_Value_ck = std.fre_m_V[0]; std.alarm_H_Value_ck = std.fre_h_V[0]; std.defect_L_Value_ck = std.fre_l_D[0]; std.defect_M_Value_ck = std.fre_m_D[0]; std.defect_H_Value_ck = std.fre_h_D[0]; } else if (speed >= std.alarm_spd[ias - 1].alarmSpeed) { std.band_Fre_L1 = std.fre_l_S1[i_fre]; std.band_Fre_L2 = std.fre_l_S2[i_fre]; std.band_Fre_M1 = std.fre_m_S1[i_fre]; std.band_Fre_M2 = std.fre_m_S2[i_fre]; std.band_Fre_H1 = std.fre_h_S1[i_fre]; std.band_Fre_H2 = std.fre_h_S2[i_fre]; std.alarm_L_Value_ck = std.fre_l_V[i_fre]; std.alarm_M_Value_ck = std.fre_m_V[i_fre]; std.alarm_H_Value_ck = std.fre_h_V[i_fre]; std.defect_L_Value_ck = std.fre_l_D[i_fre]; std.defect_M_Value_ck = std.fre_m_D[i_fre]; std.defect_H_Value_ck = std.fre_h_D[i_fre]; } else { std.band_Fre_L1 = std.fre_l_S1[Convert.ToInt32(speed - iIndex)]; std.band_Fre_L2 = std.fre_l_S2[Convert.ToInt32(speed - iIndex)]; std.band_Fre_M1 = std.fre_m_S1[Convert.ToInt32(speed - iIndex)]; std.band_Fre_M2 = std.fre_m_S2[Convert.ToInt32(speed - iIndex)]; std.band_Fre_H1 = std.fre_h_S1[Convert.ToInt32(speed - iIndex)]; std.band_Fre_H2 = std.fre_h_S2[Convert.ToInt32(speed - iIndex)]; std.alarm_L_Value_ck = std.fre_l_V[Convert.ToInt32(speed - iIndex)]; std.alarm_M_Value_ck = std.fre_m_V[Convert.ToInt32(speed - iIndex)]; std.alarm_H_Value_ck = std.fre_h_V[Convert.ToInt32(speed - iIndex)]; std.defect_L_Value_ck = std.fre_l_D[Convert.ToInt32(speed - iIndex)]; std.defect_M_Value_ck = std.fre_m_D[Convert.ToInt32(speed - iIndex)]; std.defect_H_Value_ck = std.fre_h_D[Convert.ToInt32(speed - iIndex)]; } } private string zedGraphControl1_PointValueEvent(ZedGraphControl sender, GraphPane pane, CurveItem curve, int iPt) { if (pane.Title.Text.Contains("能量")) { if (iPt < curve.Points.Count) { PointPair pt = curve[iPt]; return (pt.X.ToString("0.0") + "s " + pt.Y.ToString("0.00000") + "g " + fileHelper.originDistanceList[iPt].ToString("0.0") + "m"); } else { return ""; } } else if (pane.Title.Text.Contains("速度")) { if (iPt < curve.Points.Count) { PointPair pt = curve[iPt]; return (pt.X.ToString("0.0") + "s " + pt.Y.ToString("0.0") + "m/min " + fileHelper.originDistanceList[iPt].ToString("0.0") + "m"); } else { return ""; } } else if (pane.Title.Text.Contains("频谱")) { if (iPt < curve.Points.Count) { PointPair pt = curve[iPt]; return (pt.X.ToString("0.0") + "Hz " + pt.Y.ToString("0.00000") + "g"); } else { return ""; } } else { if (iPt < curve.Points.Count) { PointPair pt = curve[iPt]; return (pt.X.ToString("0.000") + "s " + pt.Y.ToString("0.00000") + "g"); } else { return ""; } } } private void zedGraphControl1_ContextMenuBuilder(ZedGraphControl sender, ContextMenuStrip menuStrip, Point mousePt, ZedGraphControl.ContextMenuObjectState objState) { for (int i = 0; i < menuStrip.Items.Count; i++) { switch (menuStrip.Items[i].Tag.ToString().Trim()) { case "copy": menuStrip.Items[i].Text = "复制图片"; break; case "show_val": menuStrip.Items[i].Text = "查看坐标"; break; case "save_as": menuStrip.Items[i].Text = "图片保存至..."; break; case "page_setup": menuStrip.Items[i].Text = "页面设置"; break; case "print": menuStrip.Items[i].Text = "打印"; break; case "unzoom": menuStrip.Items[i].Text = "还原缩放"; break; case "undo_all": menuStrip.Items[i].Text = @"还原缩放\移动"; break; case "set_default": menuStrip.Items[i].Text = "恢复默认设置"; break; } } } } }