CRVM-redis-6/Host/Plotting.cs

856 lines
38 KiB
C#
Raw Normal View History

2025-11-07 02:02:31 +08:00
using System;
using System.Drawing;
using System.Windows.Forms;
using WeifenLuo.WinFormsUI.Docking;
using ZedGraph;
using CRVM.SIDExcuter;
using CRVM.Entity;
using CRVM.Utility;
namespace CRVM
{
public partial class Plotting : DockContent
{
private MasterPane master;
private Machine mac = null;
GraphPane gpt;
private double[] xAxisEnergy;
public Plotting(Machine mac)
{
this.mac = mac;
InitializeComponent();
}
private void Plotting_Load(object sender, EventArgs e)
{
GraRefresh();
}
public void GraRefresh()
{
if (mac != null)
{
zedGraphControl1.IsShowPointValues = false;
master = new MasterPane();
master.PaneList.Clear();
xAxisEnergy = mac.xAxisEnergy.ToArray();
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(mac.Stand[i], i);
if (SysParam.Instance.checkBoxEnergy)
OrderByChannel_Energy(mac.Stand[i], 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 = 5f;
master.InnerPaneGap = 5f;
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 = DockPanel.Height;
zedGraphControl1.Invalidate();
}
}
private void OrderByChannel_Time(Stand stand, int standNo)
{
if (standNo >= SysParam.Instance.SpeedChannelCount)
{
return;
}
if (SysParam.Instance.checkBoxTimeAll)
{
SetTimeGra_All(stand.tVib, SysParam.Instance.comboBoxTimeAll, (standNo + 1) + "号机架时域波形", standNo);
}
if (SysParam.Instance.checkBoxTimeL)
{
SetTimeGra_LMH(stand.tVib, stand.band_Fre_L1, stand.band_Fre_L2, SysParam.Instance.comboBoxTimeL, (standNo + 1) + "号机架低频时域", standNo);
}
if (SysParam.Instance.checkBoxTimeM)
{
SetTimeGra_LMH(stand.tVib, stand.band_Fre_M1, stand.band_Fre_M2, SysParam.Instance.comboBoxTimeM, (standNo + 1) + "号机架中频时域", standNo);
}
if (SysParam.Instance.checkBoxTimeH)
{
SetTimeGra_LMH(stand.tVib, stand.band_Fre_H1, stand.band_Fre_H2, SysParam.Instance.comboBoxTimeH, (standNo + 1) + "号机架高频时域", standNo);
}
if (SysParam.Instance.checkBoxTimeFre)
{
SetTimeGra_Fre(stand.tVib, SysParam.Instance.comboBoxTimeFre, (standNo + 1) + "号机架频谱");
}
if (SysParam.Instance.checkBoxTimeFilt)
{
SetTimeGra_LMH(stand.tVib, Convert.ToInt32(SysParam.Instance.textBoxf1), Convert.ToInt32(SysParam.Instance.textBoxf2), SysParam.Instance.ComboBoxTimeFilt, (standNo + 1) + "号机架带通滤波", standNo);
}
}
private void OrderByChannel_Energy(Stand stand, int standNo)
{
if (standNo >= SysParam.Instance.SpeedChannelCount)
{
return;
}
if (SysParam.Instance.checkBoxEnergyAll)
{
energy_All(stand.list_Energy_All.ToArray(), SysParam.Instance.comboBoxEnergyAll, (standNo + 1) + "号机架全局能量");
}
if (SysParam.Instance.checkBoxEnergyL)
{
energy_LMH(stand.list_Energy_L.ToArray(), stand.list_Alarm_L.ToArray(), stand.list_Defect_L.ToArray(), SysParam.Instance.comboBoxEnergyL, (standNo + 1) + "号机架低频能量");
}
if (SysParam.Instance.checkBoxEnergyM)
{
energy_LMH(stand.list_Energy_M.ToArray(), stand.list_Alarm_M.ToArray(), stand.list_Defect_M.ToArray(), SysParam.Instance.comboBoxEnergyM, (standNo + 1) + "号机架中频能量");
}
if (SysParam.Instance.checkBoxEnergyH)
{
energy_LMH(stand.list_Energy_H.ToArray(), stand.list_Alarm_H.ToArray(), stand.list_Defect_H.ToArray(), SysParam.Instance.comboBoxEnergyH, (standNo + 1) + "号机架高频能量");
}
if (SysParam.Instance.checkBoxEnergySpeed && (standNo < SysParam.Instance.SpeedChannelCount))
{
energy_Speed(stand.list_Energy_Speed.ToArray(), SysParam.Instance.comboBoxEnergySpeed, (standNo + 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--)
{
if (SysParam.Instance.channel[i].ChChecked)
{
SetTimeGra_All(mac.Stand[i].tVib, 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)
{
SetTimeGra_LMH(mac.Stand[i].tVib, mac.Stand[i].band_Fre_L1, mac.Stand[i].band_Fre_L2, SysParam.Instance.comboBoxTimeL, (i + 1) + "号机架低频时域", i);
}
}
}
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)
{
SetTimeGra_LMH(mac.Stand[i].tVib, mac.Stand[i].band_Fre_M1, mac.Stand[i].band_Fre_M2, SysParam.Instance.comboBoxTimeM, (i + 1) + "号机架中频时域", i);
}
}
}
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)
{
SetTimeGra_LMH(mac.Stand[i].tVib, mac.Stand[i].band_Fre_H1, mac.Stand[i].band_Fre_H2, SysParam.Instance.comboBoxTimeH, (i + 1) + "号机架高频时域", i);
}
}
}
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)
{
SetTimeGra_Fre(mac.Stand[i].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)
{
SetTimeGra_LMH(mac.Stand[i].tVib, Convert.ToInt32(SysParam.Instance.textBoxf1), Convert.ToInt32(SysParam.Instance.textBoxf2), SysParam.Instance.ComboBoxTimeFilt, (i + 1) + "号机架带通滤波", i);
}
}
}
}
private void OrderByKind_Time2()
{
if (SysParam.Instance.checkBoxTimeAll)
{
for (int i = 0; i <SysParam.Instance.SpeedChannelCount; i++)
//for (int i = 4; i >= 0; i--)
{
if (SysParam.Instance.channel[i].ChChecked)
{
SetTimeGra_All(mac.Stand[i].tVib, 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)
{
SetTimeGra_LMH(mac.Stand[i].tVib, mac.Stand[i].band_Fre_L1, mac.Stand[i].band_Fre_L2, SysParam.Instance.comboBoxTimeL, (i + 1) + "号机架低频时域", i);
}
}
}
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)
{
SetTimeGra_LMH(mac.Stand[i].tVib, mac.Stand[i].band_Fre_M1, mac.Stand[i].band_Fre_M2, SysParam.Instance.comboBoxTimeM, (i + 1) + "号机架中频时域", i);
}
}
}
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)
{
SetTimeGra_LMH(mac.Stand[i].tVib, mac.Stand[i].band_Fre_H1, mac.Stand[i].band_Fre_H2, SysParam.Instance.comboBoxTimeH, (i + 1) + "号机架高频时域", i);
}
}
}
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)
{
SetTimeGra_Fre(mac.Stand[i].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)
{
SetTimeGra_LMH(mac.Stand[i].tVib, Convert.ToInt32(SysParam.Instance.textBoxf1), Convert.ToInt32(SysParam.Instance.textBoxf2), SysParam.Instance.ComboBoxTimeFilt, (i + 1) + "号机架带通滤波", i);
}
}
}
}
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(mac.Stand[i].list_Energy_All.ToArray(), SysParam.Instance.comboBoxEnergyAll, (i + 1) + "号机架全局能量");
}
}
}
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(mac.Stand[i].list_Energy_L.ToArray(), mac.Stand[i].list_Alarm_L.ToArray(), mac.Stand[i].list_Defect_L.ToArray(), SysParam.Instance.comboBoxEnergyL, (i + 1) + "号机架低频能量");
}
}
}
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(mac.Stand[i].list_Energy_M.ToArray(), mac.Stand[i].list_Alarm_M.ToArray(), mac.Stand[i].list_Defect_M.ToArray(), 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(mac.Stand[i].list_Energy_H.ToArray(), mac.Stand[i].list_Alarm_H.ToArray(), mac.Stand[i].list_Defect_H.ToArray(), SysParam.Instance.comboBoxEnergyH, (i + 1) + "号机架高频能量");
}
}
}
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(mac.Stand[i].list_Energy_Speed.ToArray(), SysParam.Instance.comboBoxEnergySpeed, (i + 1) + "号机架速度");
}
}
}
}
private void OrderByKind_Energy2()
{
if (SysParam.Instance.checkBoxEnergyAll)
{
for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++)
//for (int i = 4; i >= 0; i--)
{
if (SysParam.Instance.channel[i].ChChecked)
{
energy_All(mac.Stand[i].list_Energy_All.ToArray(), SysParam.Instance.comboBoxEnergyAll, (i + 1) + "号机架全局能量");
}
}
}
if (SysParam.Instance.checkBoxEnergyL)
{
for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++)
//for (int i = 4; i >= 0; i--)
{
if (SysParam.Instance.channel[i].ChChecked)
{
energy_LMH(mac.Stand[i].list_Energy_L.ToArray(), mac.Stand[i].list_Alarm_L.ToArray(), mac.Stand[i].list_Defect_L.ToArray(), SysParam.Instance.comboBoxEnergyL, (i + 1) + "号机架低频能量");
}
}
}
if (SysParam.Instance.checkBoxEnergyM)
{
for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++)
//for (int i = 4; i >= 0; i--)
{
if (SysParam.Instance.channel[i].ChChecked)
{
energy_LMH(mac.Stand[i].list_Energy_M.ToArray(), mac.Stand[i].list_Alarm_M.ToArray(), mac.Stand[i].list_Defect_M.ToArray(), SysParam.Instance.comboBoxEnergyM, (i + 1) + "号机架中频能量");
}
}
}
if (SysParam.Instance.checkBoxEnergyH)
{
for (int i = 0; i < SysParam.Instance.SpeedChannelCount; i++)
//for (int i = 4; i >= 0; i--)
{
if (SysParam.Instance.channel[i].ChChecked)
{
energy_LMH(mac.Stand[i].list_Energy_H.ToArray(), mac.Stand[i].list_Alarm_H.ToArray(), mac.Stand[i].list_Defect_H.ToArray(), SysParam.Instance.comboBoxEnergyH, (i + 1) + "号机架高频能量");
}
}
}
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(mac.Stand[i].list_Energy_Speed.ToArray(), SysParam.Instance.comboBoxEnergySpeed, (i + 1) + "号机架速度");
}
}
}
}
private void SetTimeGra_All(double[] tx, string yAxisVal, string title, int standno)
{
//DevelopLog.DeBug.WriteLogFile("onlineview", "###############");
gpt = new GraphPane();
gpt.CurveList.Clear();
//辊系故障判别线
if (SysParam.Instance.rollLineVisible && mac.Stand[standno].speed > 5)
{
double rotatetimeB, rotatetimeM, rotatetimeW;
rotatetimeB = (Math.PI * (mac.Stand[standno].rollDiameterBL + mac.Stand[standno].rollDiameterBU) / 2.0) / (mac.Stand[standno].speed / 60 * 1000);//支撑辊的旋转周期
rotatetimeM = (Math.PI * (mac.Stand[standno].rollDiameterML + mac.Stand[standno].rollDiameterMU) / 2.0) / (mac.Stand[standno].speed / 60 * 1000);//中间辊的旋转周期
rotatetimeW = (Math.PI * (mac.Stand[standno].rollDiameterWL + mac.Stand[standno].rollDiameterWU) / 2.0) / (mac.Stand[standno].speed / 60 * 1000);//工作辊的旋转周期
//DevelopLog.DeBug.WriteLogFile("onlineview", rotatetimeB.ToString());
//DevelopLog.DeBug.WriteLogFile("onlineview", rotatetimeM.ToString());
//DevelopLog.DeBug.WriteLogFile("onlineview", rotatetimeW.ToString());
if (rotatetimeB < mac.xAxisTime[mac.xAxisTime.Length - 1])
{
double[] x = { rotatetimeB, rotatetimeB };
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 < mac.xAxisTime[mac.xAxisTime.Length - 1])
{
double[] x = { rotatetimeM, rotatetimeM };
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 < mac.xAxisTime[mac.xAxisTime.Length - 1])
{
double[] x = { rotatetimeW, rotatetimeW };
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("", mac.xAxisTime, tx, SysParam.Instance.colorTime, SymbolType.None);
gpt.XAxis.Scale.Min = 0;
gpt.XAxis.Scale.Max = mac.xAxisTime[mac.xAxisTime.Length - 1];
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, int fre_1, int fre_2, string yAxisVal, string title, int standno)
{
gpt = new GraphPane();
int length = tx.Length;
double[] llf = new double[length];
llf = SysParam.Instance.filterAlgor(tx, fre_1, fre_2, length, 100, Convert.ToInt32(SysParam.Instance.sampleFre));
gpt.CurveList.Clear();
//辊系故障判别线
if (SysParam.Instance.rollLineVisible && mac.Stand[standno].speed > 5)
{
double rotatetimeB, rotatetimeM, rotatetimeW;
rotatetimeB = (Math.PI * (mac.Stand[standno].rollDiameterBL + mac.Stand[standno].rollDiameterBU) / 2.0) / (mac.Stand[standno].speed / 60 * 1000);//支撑辊的旋转周期
rotatetimeM = (Math.PI * (mac.Stand[standno].rollDiameterML + mac.Stand[standno].rollDiameterMU) / 2.0) / (mac.Stand[standno].speed / 60 * 1000);//中间辊的旋转周期
rotatetimeW = (Math.PI * (mac.Stand[standno].rollDiameterWL + mac.Stand[standno].rollDiameterWU) / 2.0) / (mac.Stand[standno].speed / 60 * 1000);//工作辊的旋转周期
if (rotatetimeB < mac.xAxisTime[mac.xAxisTime.Length - 1])
{
double[] x = { rotatetimeB, rotatetimeB };
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 < mac.xAxisTime[mac.xAxisTime.Length - 1])
{
double[] x = { rotatetimeM, rotatetimeM };
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 < mac.xAxisTime[mac.xAxisTime.Length - 1])
{
double[] x = { rotatetimeW, rotatetimeW };
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("", mac.xAxisTime, llf, SysParam.Instance.colorTime, SymbolType.None);
gpt.XAxis.Scale.Min = 0;
gpt.XAxis.Scale.Max = mac.xAxisTime[mac.xAxisTime.Length - 1]; ;
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_Fre(double[] tx, string yAxisVal, string title)
{
gpt = new GraphPane();
gpt.CurveList.Clear();
PointPairList list_f = new PointPairList();
list_f.Clear();
int myLength = tx.Length;
int length = Convert.ToInt32(Math.Pow(2, SysParam.Instance.N2M(myLength)));
double[] f = new double[length];
double[] tt = new double[length];
for (int i = 0; i < length; i++)
{
tt[i] = tx[myLength - 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.sampleFre / length, f[i]);
}
gpt.AddCurve("", list_f, SysParam.Instance.colorFre, SymbolType.None);
gpt.XAxis.Scale.Max = SysParam.Instance.sampleFre / 2;
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[] energyList, string yAxisVal, string title)
{
gpt = new GraphPane();
gpt.CurveList.Clear();
if (mac.list_CutTime.Count > 0)
{
PointPairList templist = new PointPairList();
for (int i = 0; i < mac.list_CutTime.Count; i++)
{
templist.Add(mac.list_CutTime[i], Convert.ToDouble(yAxisVal));
}
gpt.AddStick("剪切线", templist, SysParam.Instance.colorCut).Line.Width = 2f;
}
gpt.AddCurve("", xAxisEnergy, energyList, SysParam.Instance.colorEnergy, SymbolType.None);
gpt.XAxis.Scale.Min = xAxisEnergy[0];
gpt.XAxis.Scale.Max = xAxisEnergy[xAxisEnergy.Length - 1];
gpt.XAxis.Type = AxisType.Date;
gpt.XAxis.Scale.Format = "HH:mm:ss";
gpt.YAxis.Scale.Min = 0.0;
gpt.YAxis.Scale.Max = Convert.ToDouble(yAxisVal);
gpt.Title.Text = title;
GraPaneSetting(gpt);
this.master.Add(gpt);
}
private void energy_LMH(double[] lineList, double[] alarmList, double[] defectList, string yAxisVal, string title)
{
gpt = new GraphPane();
gpt.CurveList.Clear();
if (mac.list_CutTime.Count > 0)
{
PointPairList templist = new PointPairList();
for (int i = 0; i < mac.list_CutTime.Count; i++)
{
templist.Add(mac.list_CutTime[i], Convert.ToDouble(yAxisVal));
}
gpt.AddStick("剪切线", templist, SysParam.Instance.colorCut).Line.Width = 2f;
}
gpt.AddCurve("缺陷线", xAxisEnergy, defectList, SysParam.Instance.colorDefect, SymbolType.None).Line.Width = 2f;
gpt.AddCurve("报警线", xAxisEnergy, alarmList, SysParam.Instance.colorAlarm, SymbolType.None).Line.Width = 2f;
gpt.AddCurve("", xAxisEnergy, lineList, SysParam.Instance.colorEnergy, SymbolType.None);
gpt.XAxis.Scale.Min = xAxisEnergy[0];
gpt.XAxis.Scale.Max = xAxisEnergy[xAxisEnergy.Length - 1];
gpt.XAxis.Type = AxisType.Date;
gpt.XAxis.Scale.Format = "HH:mm:ss";
gpt.YAxis.Scale.Min = 0.0;
gpt.YAxis.Scale.Max = Convert.ToDouble(yAxisVal);
gpt.Title.Text = title;
GraPaneSetting(gpt);
this.master.Add(gpt);
}
private void energy_Speed(double[] speedList, string yAxisVal, string title)
{
gpt = new GraphPane();
gpt.CurveList.Clear();
if (mac.list_CutTime.Count > 0)
{
PointPairList templist = new PointPairList();
for (int i = 0; i < mac.list_CutTime.Count; i++)
{
templist.Add(mac.list_CutTime[i], Convert.ToDouble(yAxisVal));
}
gpt.AddStick("剪切线", templist, SysParam.Instance.colorCut).Line.Width = 2f;
}
gpt.AddCurve("速度", xAxisEnergy, speedList, SysParam.Instance.colorSpeed, SymbolType.None).Line.Width = 2f;
gpt.XAxis.Scale.Min = xAxisEnergy[0];
gpt.XAxis.Scale.Max = xAxisEnergy[xAxisEnergy.Length - 1];
gpt.XAxis.Type = AxisType.Date;
gpt.XAxis.Scale.Format = "HH:mm:ss";
gpt.YAxis.Scale.Min = 0.0;
gpt.YAxis.Scale.Max = Convert.ToSingle(yAxisVal);
gpt.Title.Text = title;
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.5f * 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.YAxis.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 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 (DateTime.FromOADate(pt.X).ToString("HH:mm:ss.ff") + " " + pt.Y.ToString("0.00000") + "g " + mac.distance_Pause[iPt].ToString("0.0") + "m");
}
else
{
return "";
}
}
else if (pane.Title.Text.Contains("速度"))
{
if (iPt < curve.Points.Count)
{
PointPair pt = curve[iPt];
return (DateTime.FromOADate(pt.X).ToString("HH:mm:ss.ff") + " " + pt.Y.ToString("0.0") + "m/min " + mac.distance_Pause[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;
}
}
}
public void IsShowMenuStrip(bool IsShow)
{
zedGraphControl1.IsShowContextMenu = IsShow;
}
}
}