Ejemplo n.º 1
0
 public void SetReadSeries(ReceiveItem data, ReceiveItem alarm, ReceiveItem alarmtatus)
 {
     try
     {
         int index = this.chart1.Series["Series" + data.Name].Points.AddXY(ScadaHexByteOperator.GetDateTime(data.DateTime).Value.ToString("mm:ss"), data.Value);
         if (data.Value == "-9999")
         {
             this.chart1.Series["Series" + data.Name].Points[index].IsEmpty = true;
         }
         if (this.chart1.Series["Series" + data.Name].Points.Count > 400)
         {
             this.chart1.Series["Series" + data.Name].Points.RemoveAt(0);
         }
         if (this.chart1.Series["Series" + data.Name].Points.Count > 0)
         {
             if (this.chart1.Series["Series" + data.Name].YAxisType == System.Windows.Forms.DataVisualization.Charting.AxisType.Primary)
             {
                 this.chart1.ChartAreas[this.chart1.Series["Series" + data.Name].ChartArea].AxisY.Maximum = this.chart1.Series["Series" + data.Name].Points.FindMaxByValue().YValues[0] + this.chart1.Series["Series" + data.Name].Points.FindMaxByValue().YValues[0] / 10.0d;
             }
             else
             {
                 this.chart1.ChartAreas[this.chart1.Series["Series" + data.Name].ChartArea].AxisY2.Maximum = this.chart1.Series["Series" + data.Name].Points.FindMaxByValue().YValues[0] + this.chart1.Series["Series" + data.Name].Points.FindMaxByValue().YValues[0] / 10.0d;
             }
         }
     }
     catch
     {
     }
 }
Ejemplo n.º 2
0
 public void SetReadSeries(ReceiveItem data, ReceiveItem alarm, ReceiveItem alarmtatus)
 {
     ///设置值
     for (int i = 0; i < this.flowLayoutPanel.Controls.Count; i++)
     {
         if (this.flowLayoutPanel.Controls[i].GetType() == typeof(ChanelSeries))
         {
             ChanelSeries channelReal = (ChanelSeries)this.flowLayoutPanel.Controls[i];
             if (!string.IsNullOrEmpty(channelReal.Channel.BindingArress) && channelReal.Channel.BindingArress == data.Address)
             {
                 channelReal.SetReadSeries(data, alarm, alarmtatus);
             }
         }
     }
 }
Ejemplo n.º 3
0
 public void PushItem(ReceiveItem item)
 {
     lock (thisLock)
     {
         //总是将最新的数据放到最前头
         ReceiveItems.Insert(0, item);
         if (ReceiveItems.Count > MaxNumber)
         {
             int rnum = ReceiveItems.Count - MaxNumber;
             if (rnum > 0)
             {
                 ReceiveItems.RemoveRange(ReceiveItems.Count - 1, rnum);
             }
         }
         if (OnPushed != null)
         {
             OnPushed(item);
         }
     }
 }
Ejemplo n.º 4
0
        public static void InitMonitorManager(MainForm mainForm)
        {
            try
            {
                MainForm = mainForm;
                //实时数据缓存池
                ReceiveCachec           = new ReceiveCachec();
                ReceiveCachec.OnGeted  += ReceiveCachec_OnGeted;
                ReceiveCachec.OnPushed += ReceiveCachec_OnPushed;
                ReceiveCachec.MaxNumber = 1000;
                //报警缓存池
                ReceiveAlarmCachec           = new ReceiveCachec();
                ReceiveAlarmCachec.OnGeted  += ReceiveAlarmCachec_OnGeted;
                ReceiveAlarmCachec.OnPushed += ReceiveAlarmCachec_OnPushed;
                ReceiveAlarmCachec.MaxNumber = 1000;

                ///报警状态
                ReceiveAlarmStatusCachec           = new ReceiveCachec();
                ReceiveAlarmStatusCachec.OnGeted  += ReceiveAlarmStatusCachec_OnGeted;
                ReceiveAlarmStatusCachec.OnPushed += ReceiveAlarmStatusCachec_OnPushed;
                ReceiveAlarmStatusCachec.MaxNumber = 1000;


                Config = new GasMonitorConfig();
                GasMonitorManager.Chanels = Config.Channels;
                //加载系统配置表单信息

                systenSetFrm.InitForms();
                realDataFrm.InitForms();
                realSeriesFrm.InitForms();
                alarmSetFrm.InitForms();
                //初始化主界面左边树结构
                MainForm.InitForms();
                SerialConfig serialConfig = new SerialConfig()
                {
                    BaudRate = int.Parse(Config.SerialPort.BaudRate),
                    CollectFaultsInternal = int.Parse(Config.SerialPort.CollectFaultsInternal),
                    CollectFaultsNumber   = int.Parse(Config.SerialPort.CollectFaultsNumber),
                    ContinueCollect       = string.IsNullOrEmpty(Config.SerialPort.ContinueCollect) || Config.SerialPort.ContinueCollect.Trim() == "0" ? false : true,
                    DataBits             = int.Parse(Config.SerialPort.DataBits),
                    ModbusType           = "RTU",
                    OffsetInterval       = int.Parse(Config.SerialPort.OffsetInterval),
                    PackMaxSize          = int.Parse(Config.SerialPort.PackMaxSize),
                    ReadTimeout          = int.Parse(Config.SerialPort.ReadTimeout),
                    WriteTimeout         = int.Parse(Config.SerialPort.WriteTimeout),
                    SerialCheck          = (Parity)Enum.Parse(typeof(Parity), Config.SerialPort.CheckBit),
                    SerialPort           = Config.SerialPort.Port,
                    UpdateCycle          = Config.SerialPort.UpdateCycle,
                    RTSEnable            = string.IsNullOrEmpty(Config.SerialPort.RTSEnable) || Config.SerialPort.RTSEnable.Trim() == "0" ? false : true,
                    RSTSendPreKeeyTime   = int.Parse(Config.SerialPort.RSTSendPreKeeyTime),
                    RTSSendAfterKeeyTime = int.Parse(Config.SerialPort.RSTSendPreKeeyTime),
                    Chanels     = Chanels,
                    StopBits    = StopBits.One,
                    ModbusParas = Config.ModbusPara
                };
                switch (Config.SerialPort.StopBit.Trim())
                {
                case "0":
                    serialConfig.StopBits = StopBits.None;
                    break;

                case "1":
                    serialConfig.StopBits = StopBits.One;
                    break;

                case "2":
                    serialConfig.StopBits = StopBits.Two;
                    break;

                case "1.5":
                    serialConfig.StopBits = StopBits.OnePointFive;
                    break;

                default:
                    serialConfig.StopBits = StopBits.One;
                    break;
                }
                ModbusSlave           = new Modbus_Serial(serialConfig);
                ModbusSlave.LogOutput = new Action <string>((s) =>
                {
                    if (logFrm != null && !logFrm.IsDisposed)
                    {
                        logFrm.AddLog(s);
                    }
                });
                //接收到数据,在此处进行解析
                ModbusSlave.ReadDataSuccessed = new Action <List <RealData> >((s) =>
                {
                    try
                    {
                        if (s == null || s.Count <= 0)
                        {
                            return;
                        }
                        string datetime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "," + DateTime.Now.Millisecond.ToString();
                        string str      = "";
                        foreach (RealData d in s)
                        {
                            if (d.ReadSendByte == null || d.ReadSendByte.Length <= 0)
                            {
                                continue;
                            }
                            str += ModbusConvert.ByteToHexStr(d.ReadSendByte) + " ,";
                            try
                            {
                                ReceiveItem realData    = new ReceiveItem();
                                ReceiveItem alarmData   = new ReceiveItem();
                                ReceiveItem alarmstatus = new ReceiveItem();
                                realData.Id             = d.SlaveId;
                                realData.Name           = d.ParaName;
                                realData.Address        = d.Address;
                                realData.DateTime       = datetime;
                                realData.Value          = "-9999";
                                alarmData.Id            = d.SlaveId;
                                alarmData.Name          = d.ParaName;
                                alarmData.Address       = d.Address;
                                alarmData.DateTime      = datetime;
                                alarmData.Value         = "0.00";
                                alarmstatus.Id          = d.SlaveId;
                                alarmstatus.Name        = d.ParaName;
                                alarmstatus.Address     = d.Address;
                                alarmstatus.DateTime    = datetime;
                                alarmstatus.Value       = "0.00";
                                //获取放大倍数
                                byte[] blxs = new byte[2];
                                Array.Copy(d.ReadSendByte, 12, blxs, 0, 2);
                                float blxsvalue = ModbusConvert.GetUShort(ModbusConvert.Bytes2Ushorts(blxs), 0);
                                blxsvalue       = Convert.ToSingle(Math.Pow(10, blxsvalue));

                                //获取单位
                                byte[] unitb = new byte[2];
                                Array.Copy(d.ReadSendByte, 14, unitb, 0, 2);
                                realData.Unit = (new GasUnit(ModbusConvert.GetUShort(ModbusConvert.Bytes2Ushorts(unitb), 0))).Unit;

                                //获取气体值
                                realData.Address  = d.Address;
                                realData.DateTime = datetime;
                                byte[] vub        = new byte[4];
                                Array.Copy(d.ReadSendByte, 0, vub, 0, 4);
                                realData.Value = (ModbusConvert.GetUInt(ModbusConvert.Bytes2Ushorts(vub), 0) / blxsvalue).ToString("0.00");



                                //获取报警状态
                                alarmstatus.Address  = d.Address;
                                alarmstatus.DateTime = datetime;
                                byte[] alarmstatusb  = new byte[2];
                                Array.Copy(d.ReadSendByte, 4, alarmstatusb, 0, 2);
                                alarmstatus.Value = ModbusConvert.GetUShort(ModbusConvert.Bytes2Ushorts(alarmstatusb), 0).ToString();
                                //获取报警值

                                if (alarmstatus.Value == "0")//无报警
                                {
                                    alarmData.Address  = d.Address;
                                    alarmData.DateTime = datetime;
                                    alarmData.Value    = "0";
                                }
                                else if (alarmstatus.Value == "1")//低报警
                                {
                                    alarmData.Address  = d.Address;
                                    alarmData.DateTime = datetime;
                                    byte[] alarmb      = new byte[4];
                                    Array.Copy(d.ReadSendByte, 16, alarmb, 0, 4);
                                    alarmData.Value = (ModbusConvert.GetUInt(ModbusConvert.Bytes2Ushorts(alarmb), 0) / blxsvalue).ToString("0.00");
                                }
                                else if (alarmstatus.Value == "2")//高报警
                                {
                                    alarmData.Address  = d.Address;
                                    alarmData.DateTime = datetime;
                                    byte[] alarmb      = new byte[4];
                                    Array.Copy(d.ReadSendByte, 20, alarmb, 0, 4);
                                    alarmData.Value = (ModbusConvert.GetUInt(ModbusConvert.Bytes2Ushorts(alarmb), 0) / blxsvalue).ToString("0.00");
                                }
                                alarmData.Id       = realData.Id;
                                alarmData.Unit     = realData.Unit;
                                alarmData.Name     = d.ParaName;
                                alarmData.Address  = d.Address;
                                alarmData.DateTime = datetime;

                                if (realData != null && realData.Value != "-9999")
                                {
                                    realDataFrm.SetChannelStatus();
                                    realDataFrm.SetReadData(realData, alarmData, alarmstatus);
                                    realSeriesFrm.SetReadSeries(realData, alarmData, alarmstatus);
                                    GasMonitorManager.ReceiveCachec.PushItem(realData);
                                    GasMonitorManager.ReceiveAlarmCachec.PushItem(alarmData);
                                    GasMonitorManager.ReceiveAlarmStatusCachec.PushItem(alarmstatus);
                                }
                            }
                            catch
                            {
                                continue;
                            }
                        }
                        logFrm.AddLog(str);
                    }
                    catch (Exception emx)
                    {
                        logFrm.AddLog(emx.Message);
                    }
                });

                GasMonitorManager.Start();
            }
            catch (Exception emx)
            {
                logFrm.AddLog(emx.Message + " ERROR=01");
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 发布实时数据
        /// </summary>
        private async static void PublicRealDataJson(string clientid)
        {
            logFrm.AddLog("客户端发布数据 " + clientid);
            if (clientid == null || clientid == "")
            {
                return;
            }
            if (Config.MQTT.ClientID.Trim().ToLower() != clientid.Trim().ToLower())
            {
                return;
            }
            try
            {
                if (MqttClient != null && MqttClient.IsConnected)
                {
                    //构造一个对象

                    PublicMqttJsonObject publicJsonObject = new PublicMqttJsonObject();
                    publicJsonObject.device = new PublicMqttJsonDevice()
                    {
                        uid = "1"
                    };
                    publicJsonObject.paras = new List <PublicMqttJsonPara>();
                    for (int i = 0; i < Config.Channels.Count; i++)
                    {
                        if (Config.Channels[i].BindingArress.Trim() != "")
                        {
                            foreach (ModbusPara para in Config.ModbusPara)
                            {       //获取当前缓存的数据
                                List <ReceiveItem> channelDatas            = ReceiveCachec.GetItems(MqttUpdateCycle, Config.Channels[i].Id.Trim(), para.Name);
                                List <ReceiveItem> channelAlarmDatas       = ReceiveAlarmCachec.GetItems(MqttUpdateCycle, Config.Channels[i].Id.Trim(), para.Name);
                                List <ReceiveItem> channelAlarmStatusDatas = ReceiveAlarmStatusCachec.GetItems(MqttUpdateCycle, Config.Channels[i].Id.Trim(), para.Name);

                                //当前缓存最新的数据
                                ReceiveItem receiveItem = channelDatas.Find(x => int.Parse(x.Address) == int.Parse(Config.Channels[i].BindingArress.Trim()));
                                if (receiveItem != null)
                                {
                                    PublicMqttJsonPara paraData = new PublicMqttJsonPara()
                                    {
                                        name = receiveItem.Name + "_" + int.Parse(Config.Channels[i].Id).ToString() + "_" + int.Parse(receiveItem.Address).ToString(),
                                        data = new List <object>()
                                        {
                                            receiveItem.DateTime, receiveItem.Value, receiveItem.Unit
                                        },
                                    };
                                    publicJsonObject.paras.Add(paraData);
                                }
                                //报警值
                                ReceiveItem receiveAlarmItem = channelAlarmDatas.Find(x => int.Parse(x.Address) == int.Parse(Config.Channels[i].BindingArress.Trim()));
                                if (receiveAlarmItem != null)
                                {
                                    PublicMqttJsonPara paraData = new PublicMqttJsonPara()
                                    {
                                        name = receiveAlarmItem.Name + "_" + int.Parse(Config.Channels[i].Id).ToString() + "_" + int.Parse(receiveAlarmItem.Address).ToString() + "_alarm",
                                        data = new List <object>()
                                        {
                                            receiveAlarmItem.DateTime, receiveAlarmItem.Value, receiveAlarmItem.Unit
                                        }
                                    };
                                    publicJsonObject.paras.Add(paraData);
                                }
                                ;
                                //报警值
                                ReceiveItem receiveAlarmStatusItem = channelAlarmStatusDatas.Find(x => int.Parse(x.Address) == int.Parse(Config.Channels[i].BindingArress.Trim()));
                                if (receiveAlarmStatusItem != null)
                                {
                                    PublicMqttJsonPara paraData = new PublicMqttJsonPara()
                                    {
                                        name = receiveAlarmStatusItem.Name + "_" + int.Parse(Config.Channels[i].Id).ToString() + "_" + int.Parse(receiveAlarmItem.Address).ToString() + "_status",
                                        data = new List <object>()
                                        {
                                            receiveAlarmStatusItem.DateTime, receiveAlarmStatusItem.Value, receiveAlarmStatusItem.Unit
                                        }
                                    };
                                    publicJsonObject.paras.Add(paraData);
                                }
                                ;
                            }
                        }
                    }
                    string json = ScadaHexByteOperator.ObjectToJson(publicJsonObject);

                    //发布订阅的数据
                    await MqttClient.PublishAsync(new MqttApplicationMessage()
                    {
                        Payload = Encoding.UTF8.GetBytes(json),
                        QualityOfServiceLevel = MqttQualityOfServiceLevel.AtMostOnce,
                        Retain = false,
                        Topic  = Config.MQTT.DataPublicTopic
                    });
                }
            }
            catch (Exception emx)
            { logFrm.AddLog(emx.Message);
              return; }
        }
Ejemplo n.º 6
0
 private static void ReceiveCachec_OnPushed(ReceiveItem item)
 {
 }
Ejemplo n.º 7
0
 private static void ReceiveAlarmStatusCachec_OnPushed(ReceiveItem item)
 {
 }
Ejemplo n.º 8
0
        /// <summary>
        /// 传入读取的数据,data, 报警 alarm,报警状态 ,alarmstatus
        /// </summary>
        /// <param name="data"></param>
        /// <param name="alarm"></param>
        /// <param name="alarmStatu"></param>
        public void SetReadData(ReceiveItem data, ReceiveItem alarm, ReceiveItem alarmtatus)
        {
            ChannelAlarm channelAlarm = GasMonitorManager.Config.ChannelAlarms.Find(x => int.Parse(x.ChanelID) == int.Parse(this.Channel.Id));

            uledTime.Text = ScadaHexByteOperator.GetDateTime(data.DateTime).Value.ToString("HH:mm:ss");
            ///设置值
            switch (data.Name)
            {
            case "CO":
                uledCO.Text  = data.Value.ToString();
                uslabCO.Text = data.Name + "/" + data.Unit;

                //系统报警优先
                if (alarmtatus.Value.ToString() == "0")    //无报警
                {
                    uledbubCO.Color   = Color.Green;
                    uiLedAlarmCO.Text = "";
                }
                else if (alarmtatus.Value.ToString() == "1")    //低报警
                {
                    uledbubCO.Color   = Color.Yellow;
                    uiLedAlarmCO.Text = alarm.Value.ToString();
                }
                else if (alarmtatus.Value.ToString() == "2")    //高报警
                {
                    uledbubCO.Color   = Color.Red;
                    uiLedAlarmCO.Text = alarm.Value.ToString();
                }
                //设置曲线
                if (channelAlarm != null)
                {
                    ParaAlarm paraAlarm = channelAlarm.ParaAlarms.Find(x => x.Name.Trim().ToUpper() == "CO" && x.Enable == "1");
                    //表示系统报警开启
                    if (paraAlarm != null)
                    {
                        float high = Convert.ToSingle(paraAlarm.High);
                        float low  = Convert.ToSingle(paraAlarm.Low);
                        float v    = Convert.ToSingle(data.Value);
                        if (v <= low)
                        {
                            uledbubCO.Color   = Color.Yellow;
                            uiLedAlarmCO.Text = alarm.Value.ToString();
                        }
                        else if (v >= high)
                        {
                            uledbubCO.Color   = Color.Red;
                            uiLedAlarmCO.Text = alarm.Value.ToString();
                        }
                    }
                }
                break;

            case "EX":
                uledEX.Text  = data.Value.ToString();
                uslabEX.Text = data.Name + "/" + data.Unit;
                if (alarmtatus.Value.ToString() == "0")    //无报警
                {
                    uledbubEX.Color   = Color.Green;
                    uiLedAlarmEX.Text = "";
                }
                else if (alarmtatus.Value.ToString() == "1")    //低报警
                {
                    uledbubEX.Color   = Color.Yellow;
                    uiLedAlarmEX.Text = alarm.Value.ToString();
                }
                else if (alarmtatus.Value.ToString() == "2")    //高报警
                {
                    uledbubEX.Color   = Color.Red;
                    uiLedAlarmEX.Text = alarm.Value.ToString();
                }
                if (channelAlarm != null)
                {
                    ParaAlarm paraAlarm = channelAlarm.ParaAlarms.Find(x => x.Name.Trim().ToUpper() == "EX" && x.Enable == "1");
                    if (paraAlarm != null)
                    {
                        //表示系统报警开启
                        float high = Convert.ToSingle(paraAlarm.High);
                        float low  = Convert.ToSingle(paraAlarm.Low);
                        float v    = Convert.ToSingle(data.Value);
                        if (v <= low)
                        {
                            uledbubEX.Color   = Color.Yellow;
                            uiLedAlarmEX.Text = alarm.Value.ToString();
                        }
                        else if (v >= high)
                        {
                            uledbubEX.Color   = Color.Red;
                            uiLedAlarmEX.Text = alarm.Value.ToString();
                        }
                    }
                }

                break;

            case "H2S":
                uledH2S.Text  = data.Value.ToString();
                uslabH2S.Text = data.Name + "/" + data.Unit;
                if (alarmtatus.Value.ToString() == "0")    //无报警
                {
                    uledbubH2S.Color   = Color.Green;
                    uiLedAlarmH2S.Text = "";
                }
                else if (alarmtatus.Value.ToString() == "1")    //低报警
                {
                    uledbubH2S.Color   = Color.Yellow;
                    uiLedAlarmH2S.Text = alarm.Value.ToString();
                }
                else if (alarmtatus.Value.ToString() == "2")    //高报警
                {
                    uledbubH2S.Color   = Color.Red;
                    uiLedAlarmH2S.Text = alarm.Value.ToString();
                }
                if (channelAlarm != null)
                {
                    ParaAlarm paraAlarm = channelAlarm.ParaAlarms.Find(x => x.Name.Trim().ToUpper() == "H2S" && x.Enable == "1");
                    //表示系统报警开启
                    if (paraAlarm != null)
                    {
                        float high = Convert.ToSingle(paraAlarm.High);
                        float low  = Convert.ToSingle(paraAlarm.Low);
                        float v    = Convert.ToSingle(data.Value);
                        if (v <= low)
                        {
                            uledbubH2S.Color   = Color.Yellow;
                            uiLedAlarmH2S.Text = alarm.Value.ToString();
                        }
                        else if (v >= high)
                        {
                            uledbubH2S.Color   = Color.Red;
                            uiLedAlarmH2S.Text = alarm.Value.ToString();
                        }
                    }
                }
                break;

            case "O2":
                uledO2.Text  = data.Value.ToString();
                uslabO2.Text = data.Name + "/" + data.Unit;
                if (alarmtatus.Value.ToString() == "0")    //无报警
                {
                    uledbubO2.Color   = Color.Green;
                    uiLedAlarmO2.Text = "";
                }
                else if (alarmtatus.Value.ToString() == "1")    //低报警
                {
                    uledbubO2.Color   = Color.Yellow;
                    uiLedAlarmO2.Text = alarm.Value.ToString();
                }
                else if (alarmtatus.Value.ToString() == "2")    //高报警
                {
                    uledbubO2.Color   = Color.Red;
                    uiLedAlarmO2.Text = alarm.Value.ToString();
                }

                if (channelAlarm != null)
                {
                    ParaAlarm paraAlarm = channelAlarm.ParaAlarms.Find(x => x.Name.Trim().ToUpper() == "H2S" && x.Enable == "1");
                    //表示系统报警开启
                    if (paraAlarm != null)
                    {
                        float high = Convert.ToSingle(paraAlarm.High);
                        float low  = Convert.ToSingle(paraAlarm.Low);
                        float v    = Convert.ToSingle(data.Value);
                        if (v <= low)
                        {
                            uledbubO2.Color   = Color.Yellow;
                            uiLedAlarmO2.Text = alarm.Value.ToString();
                        }
                        else if (v >= high)
                        {
                            uledbubO2.Color   = Color.Red;
                            uiLedAlarmO2.Text = alarm.Value.ToString();
                        }
                    }
                }
                break;
            }
            if (!string.IsNullOrEmpty(data.Value) && data.Value != "-9999")
            {
                uiLedDeviceStatus.Color = Color.Green;
            }

            int index = this.chart1.Series["Series" + data.Name].Points.AddXY(ScadaHexByteOperator.GetDateTime(data.DateTime).Value.ToString("mm:ss"), data.Value);

            if (data.Value == "-9999")
            {
                this.chart1.Series["Series" + data.Name].Points[index].IsEmpty = true;
            }
            if (this.chart1.Series["Series" + data.Name].Points.Count > 200)
            {
                this.chart1.Series["Series" + data.Name].Points.RemoveAt(0);
            }
            if (this.chart1.Series["Series" + data.Name].Points.Count > 0)
            {
                if (this.chart1.Series["Series" + data.Name].YAxisType == System.Windows.Forms.DataVisualization.Charting.AxisType.Primary)
                {
                    this.chart1.ChartAreas[this.chart1.Series["Series" + data.Name].ChartArea].AxisY.Maximum = this.chart1.Series["Series" + data.Name].Points.FindMaxByValue().YValues[0] + this.chart1.Series["Series" + data.Name].Points.FindMaxByValue().YValues[0] / 10.0d;
                }
                else
                {
                    this.chart1.ChartAreas[this.chart1.Series["Series" + data.Name].ChartArea].AxisY2.Maximum = this.chart1.Series["Series" + data.Name].Points.FindMaxByValue().YValues[0] + this.chart1.Series["Series" + data.Name].Points.FindMaxByValue().YValues[0] / 10.0d;
                }
            }
        }