Beispiel #1
0
        static Program()
        {
            g_inspectionInterval = ini.IniReadValue("XunJianInfo", "inspectionInterval");
            g_laterInterval      = ini.IniReadValue("XunJianInfo", "laterInterval");

            //ini.IniWriteValue("TermInfo", "checi", "T141");
            g_checi = ini.IniReadValue("TermInfo", "checi");              //读取车次号
            //ini.IniWriteValue("TermInfo", "lcNumber", "000002");
            g_lcNumber        = ini.IniReadValue("TermInfo", "lcNumber"); //读取列车号
            g_deadline        = ini.IniReadValue("TermInfo", "deadline");
            g_localListenPort = ini.IniReadValue("TermInfo", "localListenPort");

            g_serialNum = ini.IniReadValue("TermInfo", "serialNum");
            g_train     = ini.IniReadValue("TermInfo", "train");
            g_url       = ini.IniReadValue("TermInfo", "url");

            g_localVadioUsername = ini.IniReadValue("TermInfo", "localVedioUserName");
            g_localVadioPassword = ini.IniReadValue("TermInfo", "localVedioPwd");
            g_localVedioIp       = ini.IniReadValue("TermInfo", "localVedioIp");
            g_localVedioPort     = ini.IniReadValue("TermInfo", "localVedioPort");


            g_connString = ini.IniReadValue("TermInfo", "connString");

            g_comPort             = ini.IniReadValue("TermInfo", "comPort");
            g_comPortTemperature  = ini.IniReadValue("TermInfo", "comPortTemperature");
            g_stationNo           = ini.IniReadValue("TermInfo", "stationNo");
            g_readTempTime        = ini.IniReadValue("TermInfo", "readTempTime");
            g_TemperatureInterval = ini.IniReadValue("TermInfo", "TemperatureInterval");
            g_maxTemp             = ini.IniReadValue("TermInfo", "maxTemp");
            g_axDvalue            = ini.IniReadValue("TermInfo", "axDvalue");

            g_waterFormula1 = ini.IniReadValue("TermInfo", "WaterFormula1");
            g_waterFormula2 = ini.IniReadValue("TermInfo", "WaterFormula2");
            g_waterFormula3 = ini.IniReadValue("TermInfo", "WaterFormula3");
            g_oilFormula1   = ini.IniReadValue("TermInfo", "OilFormula1");
            g_oilFormula2   = ini.IniReadValue("TermInfo", "OilFormula2");
            g_oilFormula3   = ini.IniReadValue("TermInfo", "OilFormula3");

            g_waterAlarm1Value = ini.IniReadValue("TermInfo", "waterAlarm1Value");
            CriticalData cd = new CriticalData(Program.g_serialNum, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, DateTime.Now, DateTime.Now, false, "1");

            g_criticalDataList[0] = cd;
            g_criticalDataList[1] = cd;
            g_criticalDataList[2] = cd;
        }
Beispiel #2
0
        /// <summary>
        /// 获取电机关键数据
        /// </summary>
        /// <param name="oilMass">油量</param>
        /// <param name="generatorId">电机号</param>
        /// <param name="alarmValue">公共报警值</param>
        /// <param name="voltage">电压</param>
        /// <returns>关键数据</returns>
        public CriticalData GetCriticalData(float oilMass, int generatorId, int alarmValue, float voltage, float voltage24V)
        {
            PartialOriginalData partialOriginalData = da.GetPartialOriginalData(generatorId, voltage);
            CriticalData        criticalData        = new CriticalData();
            AlarmInfo           alarmInfo1          = new AlarmInfo();

            alarmInfo1.AlarmValue    = alarmValue;
            criticalData.GeneratorId = generatorId;
            criticalData.Date        = DateTime.Now;
            criticalData._Current    = CurrentConvert(partialOriginalData._Current);
            criticalData.Frequency   = FrequencyConvert(partialOriginalData.Frequency);
            criticalData.OilMass     = oilMass;
            criticalData.OilPress    = OilPressConvert(partialOriginalData.GeneratorId, partialOriginalData.OilPress, voltage24V);
            criticalData.PowerFactor = PowerFactorConvert(partialOriginalData.PowerFactor);
            criticalData.Voltage     = voltageConvert(partialOriginalData.Voltage);
            criticalData.WaterTemp   = WaterTempConvert(partialOriginalData.GeneratorId, partialOriginalData.WaterTemp, voltage24V);//2 parameter
            criticalData.MotorPower  = GetMotorPower(criticalData.Voltage, criticalData._Current);
            criticalData.MotorSpeed  = GetMotorSpeed(criticalData.Frequency);
            switch (generatorId)
            {
            case 1:
                alarmInfo1.AlarmMS1 = judgeAlarmMS(criticalData.MotorSpeed);
                alarmInfo1.AlarmOP1 = judgeOilPress(criticalData.OilPress);
                alarmInfo1.AlarmWT1 = judgeAlarmWT(criticalData.WaterTemp);
                alarmInfo1.OilLeak1 = partialOriginalData.OilLeak;
                break;

            case 2:
                alarmInfo1.AlarmMS2 = judgeAlarmMS(criticalData.MotorSpeed);
                alarmInfo1.AlarmOP2 = judgeOilPress(criticalData.OilPress);
                alarmInfo1.AlarmWT2 = judgeAlarmWT(criticalData.WaterTemp);
                alarmInfo1.OilLeak2 = partialOriginalData.OilLeak;
                break;

            case 3:
                alarmInfo1.AlarmMS3 = judgeAlarmMS(criticalData.MotorSpeed);
                alarmInfo1.AlarmOP3 = judgeOilPress(criticalData.OilPress);
                alarmInfo1.AlarmWT3 = judgeAlarmWT(criticalData.WaterTemp);
                alarmInfo1.OilLeak3 = partialOriginalData.OilLeak;
                break;
            }
            criticalData.AlarmValue = alarmInfo1.AlarmValue;

            return(criticalData);
        }
Beispiel #3
0
        //显示关键数据
        private void showCriticalData(CriticalData cd)
        {
            Model.AlarmInfo alarmInfo = new AlarmInfo(cd.AlarmValue, cd.LcNum);

            try
            {
                this.labTopOilMass.Text     = alarmInfo.UpOilPlace ? "异常" : "正常";
                this.labWaterTankLevel.Text = alarmInfo.UpWaterPlace ? "异常" : "正常";
                this.labCellVoltage.Text    = alarmInfo.BatteryVoltage ? "异常" : "正常";
                this.labFireworks.Text      = alarmInfo.FireAlarm ? "异常" : "正常";
                this.pictureBox1.Image      = alarmInfo.UpOilPlace ? redCircle : greenCircle;
                this.pictureBox2.Image      = alarmInfo.UpWaterPlace ? redCircle : greenCircle;
                this.pictureBox3.Image      = alarmInfo.BatteryVoltage ? redCircle : greenCircle;
                this.pictureBox4.Image      = alarmInfo.FireAlarm ? redCircle : greenCircle;
                if (cd.GeneratorId == 1)
                {
                    this.label14.Text       = cd.Frequency == -1 ? "——" : cd.Frequency.ToString("0.00");
                    label16.Text            = cd.OilPress == -1 ? "——" : cd.OilPress.ToString("0.00");
                    label18.Text            = cd.PowerFactor == -1 ? "——" : cd.PowerFactor.ToString("0.00");
                    label20.Text            = cd.WaterTemp == -1 ? "——" : cd.WaterTemp.ToString("0.00");
                    label22.Text            = cd.MotorSpeed == -1 ? "——" : cd.MotorSpeed.ToString("0.00");
                    label24.Text            = cd.MotorPower == -1 ? "——" : cd.MotorPower.ToString("0.00");
                    label28.Text            = cd._Current == -1 ? "——" : cd._Current.ToString("0.00");
                    label30.Text            = cd.Frequency == -1 ? "——" : alarmInfo.OilLeak1 ? "报警" : "正常";
                    label26.Text            = cd.Voltage == -1 ? "——" : cd.Voltage.ToString();
                    this.pictureBox22.Image = cd.Run ? greenCircle : redCircle;
                    this.label48.Text       = cd.Run ? "运行" : "停机";
                    this.pictureBox5.Image  = alarmInfo.AlarmOP1 ? redCircle : greenCircle;
                    this.pictureBox6.Image  = alarmInfo.AlarmWT1 ? redCircle : greenCircle;
                    this.pictureBox7.Image  = alarmInfo.AlarmMS1 ? redCircle : greenCircle;
                    this.pictureBox8.Image  = alarmInfo.OilLeak1 ? redCircle : greenCircle;
                }

                if (cd.GeneratorId == 2)
                {
                    this.label40.Text       = cd.Frequency == -1 ? "——" : cd.Frequency.ToString("0.00");
                    label39.Text            = cd.OilPress == -1 ? "——" : cd.OilPress.ToString("0.00");
                    label38.Text            = cd.PowerFactor == -1 ? "——" : cd.PowerFactor.ToString("0.00");
                    label37.Text            = cd.WaterTemp == -1 ? "——" : cd.WaterTemp.ToString("0.00");
                    label36.Text            = cd.MotorSpeed == -1 ? "——" : cd.MotorSpeed.ToString("0.00");
                    label34.Text            = cd.MotorPower == -1 ? "——" : cd.MotorPower.ToString("0.00");
                    label12.Text            = cd._Current == -1 ? "——" : cd._Current.ToString("0.00");
                    label11.Text            = cd.Frequency == -1 ? "——" : alarmInfo.OilLeak1 ? "报警" : "正常";
                    label32.Text            = cd.Voltage == -1 ? "——" : cd.Voltage.ToString();
                    this.pictureBox23.Image = cd.Run ? greenCircle : redCircle;
                    this.label13.Text       = cd.Run ? "运行" : "停机";
                    this.pictureBox12.Image = alarmInfo.AlarmOP2 ? redCircle : greenCircle;
                    this.pictureBox9.Image  = alarmInfo.AlarmWT2 ? redCircle : greenCircle;
                    this.pictureBox10.Image = alarmInfo.AlarmMS2 ? redCircle : greenCircle;
                    this.pictureBox11.Image = alarmInfo.OilLeak2 ? redCircle : greenCircle;
                }

                if (cd.GeneratorId == 3)
                {
                    this.label60.Text       = cd.Frequency == -1 ? "——" : cd.Frequency.ToString("0.00");
                    label59.Text            = cd.OilPress == -1 ? "——" : cd.OilPress.ToString("0.00");
                    label58.Text            = cd.PowerFactor == -1 ? "——" : cd.PowerFactor.ToString("0.00");
                    label57.Text            = cd.WaterTemp == -1 ? "——" : cd.WaterTemp.ToString("0.00");
                    label56.Text            = cd.MotorSpeed == -1 ? "——" : cd.MotorSpeed.ToString("0.00");
                    label54.Text            = cd.MotorPower == -1 ? "——" : cd.MotorPower.ToString("0.00");
                    label50.Text            = cd._Current == -1 ? "——" : cd._Current.ToString("0.00");
                    label49.Text            = cd.Frequency == -1 ? "——" : alarmInfo.OilLeak1 ? "报警" : "正常";
                    label52.Text            = cd.Voltage == -1 ? "——" : cd.Voltage.ToString();
                    this.pictureBox24.Image = cd.Run ? greenCircle : redCircle;

                    this.label10.Text       = cd.Run ? "运行" : "停机";
                    this.pictureBox16.Image = alarmInfo.AlarmOP3 ? redCircle : greenCircle;
                    this.pictureBox13.Image = alarmInfo.AlarmWT3 ? redCircle : greenCircle;
                    this.pictureBox14.Image = alarmInfo.AlarmMS3 ? redCircle : greenCircle;
                    this.pictureBox15.Image = alarmInfo.OilLeak3 ? redCircle : greenCircle;
                }
            }
            catch (Exception error)
            {
                Program.WriteLog("显示关键数据异常" + error.ToString());
                return;
            }
        }
Beispiel #4
0
        //采集关键数据
        private void gatherCriticalData()
        {
            //初始化报警值
            int oldAlarmValue = 0;
            int alarm         = 0;
            //初始化电机状态
            string oldGeneratorStatus = "";//其实int或者byte最好

            try
            {
                //DataAcquisitionManager dataAcquisitionMana = new DataAcquisitionManager();
                //DataAcquisition da = new DataAcquisition();
                //获取公共数据
                CommonOriginalData commonData = da.GetOriginalCommonData();
                //获取油量值
                float oilMass = (float)((commonData.OilMass - 5.03) * 1525 / 0.726);

                //采集三个电机的电压值,判断是否处于开机状态
                float[] voltageArray = da.GetGeneratorVoltage();

                if (PowerShutDownEvent != null)
                {
                    bool off = false;
                    if (voltageArray[4] > 0.5)
                    {
                        off = true;
                    }
                    PowerShutDownEvent(off);
                }

                bool started1 = voltageArray[0] >= 6.0;
                bool started2 = voltageArray[1] >= 6.0;
                bool started3 = voltageArray[2] >= 6.0;
                //如果电机处于打开状态进行数据采集
                //获取三个电机的关键数据

                if (started1 || started2 || started3)
                {
                    string gsStr = "";
                    gsStr += started1 ? "1" : "0";
                    gsStr += started2 ? "1" : "0";
                    gsStr += started3 ? "1" : "0";

                    if (gsStr != oldGeneratorStatus)
                    {
                        oldGeneratorStatus = gsStr;
                    }

                    AlarmInfo alarmInfo = new AlarmInfo();
                    //设置相关报警值
                    alarmInfo.FireAlarm      = dataAcquisitionMana.judgeFireAlarm(commonData.FireAlarmValue);
                    alarmInfo.BatteryVoltage = commonData.BattaryVoltage;
                    alarmInfo.UpOilPlace     = commonData.UpOilPlace;
                    alarmInfo.UpWaterPlace   = commonData.UpWaterPlace;

                    int      alarmValue1 = 0;
                    int      alarmValue2 = 0;
                    int      alarmValue3 = 0;
                    DateTime saveNowTime = DateTime.Now;
                    //一号电机数据采集
                    if (started1)
                    {
                        CriticalData cd = dataAcquisitionMana.GetCriticalData(oilMass, 1, alarmInfo.AlarmValue, voltageArray[0], voltageArray[3]);
                        cd.LcNum         = Program.g_serialNum;//列车编号
                        cd.Run           = true;
                        cd.SaveNowTime   = saveNowTime;
                        cd.Isuploadstate = "1";
                        Program.g_criticalDataList[0] = cd;
                        a1++;
                        if (a1 > timesCount)
                        {
                            Program.WriteLog("保存一号电机关键数据");
                            //Type t = typeof(CriticalData);
                            //System.Reflection.PropertyInfo[] properties = t.GetProperties();

                            //foreach (System.Reflection.PropertyInfo info in properties)
                            //{
                            //    Program.WriteLog("name=" + info.Name + ";" + "type=" + info.PropertyType.Name + ";value=" + Program.ini.GetObjectPropertyValue<CriticalData>(cd, info.Name) + "<br />");
                            //}
                            bll.GetCricialDataToDataBase(cd);  //保存数据
                            a1 = 0;
                        }
                        //showCriticalData(cd);

                        //如果具有报警,且报警灯处于停止状态,通知UI报警灯闪烁

                        alarmValue1 = cd.AlarmValue;
                        if (cd.AlarmValue > 0 && !Program.g_isflashed)
                        {
                            Program.WriteLog("报警值为:" + cd.AlarmValue);
                            Program.g_isflashed = true; //标示报警灯已经处于闪烁状态
                            da.StartAlarm();            //开始报警
                        }
                    }
                    else
                    {
                        Program.WriteLog("一号电机未开机");
                        CriticalData criticalData = new CriticalData(Program.g_serialNum, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, DateTime.Now, saveNowTime, false, "1");
                        Program.g_criticalDataList[0] = criticalData;

                        //showCriticalData(criticalData);
                    }
                    //二号电机数据采集
                    if (started2)
                    {
                        CriticalData cd = dataAcquisitionMana.GetCriticalData(oilMass, 2, alarmInfo.AlarmValue, voltageArray[1], voltageArray[3]);
                        cd.LcNum         = Program.g_serialNum;//列车编号
                        cd.Run           = true;
                        cd.SaveNowTime   = saveNowTime;
                        cd.Isuploadstate = "1";
                        Program.g_criticalDataList[1] = cd;
                        a2++;
                        if (a2 > timesCount)
                        {
                            Program.WriteLog("保存二号电机关键数据");
                            bll.GetCricialDataToDataBase(cd);  //保存数据
                            a2 = 0;
                        }
                        //showCriticalData(cd);
                        //如果具有报警,且报警灯处于停止状态,通知UI报警灯闪烁
                        alarmValue2 = cd.AlarmValue;
                        if (cd.AlarmValue > 0 && !Program.g_isflashed)
                        {
                            Program.WriteLog("报警值为:" + cd.AlarmValue);
                            Program.g_isflashed = true; //标示报警灯已经处于闪烁状态
                            da.StartAlarm();            //开始报警
                        }
                    }
                    else
                    {
                        Program.WriteLog("二号电机未开机");
                        Program.g_criticalDataList[1] = new CriticalData(Program.g_serialNum, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, DateTime.Now, saveNowTime, false, "1");
                        //showCriticalData(criticalData);
                    }
                    //三号电机数据采集
                    if (started3)
                    {
                        CriticalData cd = dataAcquisitionMana.GetCriticalData(oilMass, 3, alarmInfo.AlarmValue, voltageArray[2], voltageArray[3]);
                        cd.LcNum         = Program.g_serialNum;//列车编号
                        cd.Run           = true;
                        cd.SaveNowTime   = saveNowTime;
                        cd.Isuploadstate = "1";

                        Program.g_criticalDataList[2] = cd;
                        a3++;
                        if (a3 > timesCount)
                        {
                            Program.WriteLog("保存三号电机关键数据");
                            bll.GetCricialDataToDataBase(cd);  //保存数据
                            a3 = 0;
                        }
                        //showCriticalData(cd);
                        //如果具有报警,且报警灯处于停止状态,通知UI报警灯闪烁
                        alarmValue2 = cd.AlarmValue;
                        if (cd.AlarmValue > 0 && !Program.g_isflashed)
                        {
                            Program.WriteLog("报警值为:" + cd.AlarmValue);
                            Program.g_isflashed = true; //标示报警灯已经处于闪烁状态
                            da.StartAlarm();            //开始报警
                        }
                    }
                    else
                    {
                        Program.WriteLog("三号电机未开机");
                        Program.g_criticalDataList[2] = new CriticalData(Program.g_serialNum, 1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, DateTime.Now, saveNowTime, false, "1");
                        //showCriticalData(criticalData);
                    }


                    //将三个电机报警值合并
                    int newAlarmValue = alarmValue1 | alarmValue2 | alarmValue3;
                    //报警值只有15个,确保前16位为0
                    newAlarmValue = (newAlarmValue << 16) >> 16;

                    //CriticalDataHandle(cdList);
                    //如果报警值发生变化发送到服务器
                    if (newAlarmValue != oldAlarmValue)
                    {
                        oldAlarmValue = newAlarmValue;
                        alarm         = oldAlarmValue;
                        //comManger.AsyncSendAlarm(newAlarmValue);//mark
                    }

                    ///如果报警清除,关闭报警灯
                    if (newAlarmValue == 0 && Program.g_isflashed)
                    {
                        Program.WriteLog("清除报警值");
                        Program.g_isflashed = false;
                        da.StopAlarm();
                    }
                }
                else
                {
                    for (int i = 1; i < 4; i++)
                    {
                        CriticalData criticalData = new CriticalData(Program.g_serialNum, i, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, DateTime.Now, DateTime.Now, false, "1");
                        //界面显示
                        //bll.GetCricialDataToDataBase(criticalData);  //保存数据
                    }

                    if (oldGeneratorStatus != "000")
                    {
                        oldGeneratorStatus = "000";
                    }
                    alarm = oldAlarmValue;
                }

                a4++;
                if (a4 > 15)
                {
                    a4 = 0;
                    //comManger.AsyncSendGs(oldGeneratorStatus, alarm); //向服务器发送数据
                }
            }
            catch (Exception error)
            {
                Program.WriteLog("采集关键数据出错" + error.ToString());
            }
        }