CRVM-redis-6/Host/PlottingReview.cs
2025-11-07 02:02:31 +08:00

1202 lines
53 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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);
}
}
/// <summary>
/// 倒叙 SysParam.Instance.SpeedChannelCount ~ 1
/// </summary>
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);
}
}
}
}
/// <summary>
/// 顺序 1 ~ SysParam.Instance.SpeedChannelCount
/// </summary>
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;
}
}
}
}
}