예제 #1
0
        /// <summary>
        /// 电量换算时间返回时间为(分钟)
        /// </summary>
        /// <param name="Clfs">测量方式</param>
        /// <param name="Yj">元件</param>
        /// <param name="I">电流</param>
        /// <param name="U">电压</param>
        /// <param name="Glys">功率因素</param>
        /// <param name="DianLiang">需要转换的电量</param>
        /// <returns></returns>
        public static float DLtoTime(CLDC_Comm.Enum.Cus_Clfs Clfs, CLDC_Comm.Enum.Cus_PowerYuanJian Yj, float I, float U, string Glys, float DianLiang)
        {
            float _GlysValue = Function.Number.getGlysValue(Glys);
            float _CS1       = 1F;

            switch ((int)Clfs)
            {
            case 0:         //三相四线
            {
                _CS1 = 3F;
                break;
            }

            case 5:         //单相
            {
                _CS1 = 1F;
                break;
            }

            default:
            {
                _CS1 = 1.732F;
                break;
            }
            }
            _CS1 = (int)Yj > 1 ? 1F : _CS1;     //如果是合元则保留原值,不是合元参数1就=1
            return(DianLiang * 60000 / (_CS1 * U * I * _GlysValue));
        }
예제 #2
0
        private void CreateFaInfo()
        {
            int _FirstYaoJian = CLDC_MeterUI.UI_Detection_New.Main.GetFirstYaoJianMeterIndex(_DnbGroup);

            CLDC_DataCore.Model.DnbModel.DnbInfo.MeterBasicInfo _DnbInfo = _DnbGroup.MeterGroup[_FirstYaoJian];

            _Ub = float.Parse(_DnbInfo.Mb_chrUb);                 //电压

            _Ib = _DnbInfo.Mb_chrIb;                              //电流字符串

            _Dj = _DnbInfo.Mb_chrBdj;                             //等级 有功(无功)

            _GuiCheng = _DnbInfo.GuiChengName;                    //使用的规程名称

            _Const = _DnbInfo.Mb_chrBcs;                          //常数

            _Znq = _DnbInfo.Mb_BlnZnq;                            //止逆器

            _Hgq = _DnbInfo.Mb_BlnHgq;                            //互感器

            _Clfs = (CLDC_Comm.Enum.Cus_Clfs)_DnbInfo.Mb_intClfs; //测量方式

            for (int i = 0; i < _DnbGroup.CheckPlan.Count; i++)
            {
                if (!(_DnbGroup.CheckPlan[i] is StPlan_QianDong))
                {
                    continue;
                }

                StPlan_QianDong _Item = (StPlan_QianDong)_DnbGroup.CheckPlan[i];

                int _RowIndex = Dgv_QianDong.Rows.Add();

                Dgv_QianDong.Rows[_RowIndex].HeaderCell.Value = _Item.ToString();

                Dgv_QianDong.Rows[_RowIndex].Tag = i;

                Dgv_QianDong.Rows[_RowIndex].Cells[0].Value = _Item.PowerFangXiang.ToString();

                Dgv_QianDong.Rows[_RowIndex].Cells[1].Value = _Item.FloatxU * 100F;                      //电压倍数

                Dgv_QianDong.Rows[_RowIndex].Cells[1].Tag = Dgv_QianDong.Rows[_RowIndex].Cells[1].Value; //电压倍数副本

                Dgv_QianDong.Rows[_RowIndex].Cells[2].Value = _Item.FloatxIb;                            //潜动电流+多少倍起动电流

                Dgv_QianDong.Rows[_RowIndex].Cells[2].Tag = Dgv_QianDong.Rows[_RowIndex].Cells[2].Value;

                _Item.CheckTimeAndIb(_GuiCheng, _Clfs, _Ub, _Ib, _Dj, _Const, _Znq, _Hgq);               //计算潜动电流和潜动时间

                Dgv_QianDong.Rows[_RowIndex].Cells[3].Value = _Item.FloatIb;                             //潜动电流

                Dgv_QianDong.Rows[_RowIndex].Cells[4].Value = Math.Round(_Item.CheckTime, 1);            //潜动时间

                Dgv_QianDong.Rows[_RowIndex].Cells[4].Tag = Dgv_QianDong.Rows[_RowIndex].Cells[4].Value; //潜动时间副本

                Dgv_QianDong.Rows[_RowIndex].Cells[5].Value = _Item.DefaultValue == 1 ? true : false;    //是否默认合格

                Dgv_QianDong.Rows[_RowIndex].Cells[5].Tag = Dgv_QianDong.Rows[_RowIndex].Cells[5].Value; //是否默认合格副本
            }
        }
        /// <summary>
        /// 海南获取起动时间
        /// </summary>
        /// <param name="U">标定电压</param>
        /// <param name="qIb">起动电流值</param>
        /// <param name="MeterConst">表常数</param>
        /// <param name="_Clfs">测量方式</param>
        /// <returns></returns>
        public static float getQiDongTime(float U, float qIb, int MeterConst, CLDC_Comm.Enum.Cus_Clfs _Clfs)
        {
            float _m = 0;

            switch (_Clfs)
            {
            case CLDC_Comm.Enum.Cus_Clfs.单相:
            {
                _m = 1F;
                break;
            }

            case CLDC_Comm.Enum.Cus_Clfs.相四线:
            {
                _m = 3F;
                break;
            }

            case CLDC_Comm.Enum.Cus_Clfs.二元件跨相60:
            case CLDC_Comm.Enum.Cus_Clfs.二元件跨相90:
            case CLDC_Comm.Enum.Cus_Clfs.元件跨相90:
            case CLDC_Comm.Enum.Cus_Clfs.相三线:
            {
                _m = (float)Math.Sqrt(3D);
                break;
            }
            }


            return(1.2F * 60F * 1000F / ((float)MeterConst * _m * U * qIb));
        }
 private CLDC_Comm.Enum.Cus_Clfs getCLFS()
 {
     CLDC_Comm.Enum.Cus_Clfs Rc = CLDC_Comm.Enum.Cus_Clfs.单相;
     if ("三相三线" == txt_JXFS.Text)
     {
         Rc = CLDC_Comm.Enum.Cus_Clfs.相三线;
     }
     else if ("三相四线" == txt_JXFS.Text)
     {
         Rc = CLDC_Comm.Enum.Cus_Clfs.相四线;
     }
     return(Rc);
 }
예제 #5
0
        public ViewPulseOutPut()
        {
            InitializeComponent();

            CLDC_Comm.Enum.Cus_Clfs _clfs = CLDC_Comm.Enum.Cus_Clfs.单相;
            CLDC_DataCore.Model.DnbModel.DnbInfo.MeterBasicInfo MeterFirstInfo = null;
            MeterFirstInfo = CLDC_DataCore.Const.GlobalUnit.g_CUS.DnbData.MeterGroup[CLDC_DataCore.Const.GlobalUnit.FirstYaoJianMeter];
            _clfs          = (CLDC_Comm.Enum.Cus_Clfs)MeterFirstInfo.Mb_intClfs;
            if (_clfs == CLDC_Comm.Enum.Cus_Clfs.单相)
            {
                bShowXl = false;
            }
            else
            {
                bShowXl = true;
            }

            int _ColIndex = Data_View.Columns.Add("Data_Z", "表号");

            Data_View.Columns[_ColIndex].Tag          = 0;
            Data_View.Columns[_ColIndex].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
            Data_View.Columns[_ColIndex].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            Data_View.Columns[_ColIndex].SortMode = DataGridViewColumnSortMode.Automatic;

            _ColIndex = Data_View.Columns.Add("Data_Z", "电能脉冲输出");
            Data_View.Columns[_ColIndex].Tag          = 0;
            Data_View.Columns[_ColIndex].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
            Data_View.Columns[_ColIndex].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            Data_View.Columns[_ColIndex].SortMode = DataGridViewColumnSortMode.Automatic;

            _ColIndex = Data_View.Columns.Add("Data_Z", "秒脉冲输出");
            Data_View.Columns[_ColIndex].Tag          = 0;
            Data_View.Columns[_ColIndex].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
            Data_View.Columns[_ColIndex].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            Data_View.Columns[_ColIndex].SortMode = DataGridViewColumnSortMode.Automatic;

            _ColIndex = Data_View.Columns.Add("Data_Z", "投切脉冲输出");
            Data_View.Columns[_ColIndex].Tag          = 0;
            Data_View.Columns[_ColIndex].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
            Data_View.Columns[_ColIndex].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
            Data_View.Columns[_ColIndex].SortMode = DataGridViewColumnSortMode.Automatic;

            if (bShowXl)
            {
                _ColIndex = Data_View.Columns.Add("Data_Z", "需量脉冲输出");
                Data_View.Columns[_ColIndex].Tag          = 0;
                Data_View.Columns[_ColIndex].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells;
                Data_View.Columns[_ColIndex].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter;
                Data_View.Columns[_ColIndex].SortMode = DataGridViewColumnSortMode.NotSortable;
            }
        }
        public UI_AutoPowerControl()
        {
            InitializeComponent();
            this.TopMost = true;
            InitDicPram();
            RegeditEvent();

            dbi_IA.Value  = 0;
            dbi_IB.Value  = 0;
            dbi_IC.Value  = 0;
            dbi_CUA.Value = 0;
            dbi_CIA.Value = 0;

            clfsTmp = CLDC_DataCore.Const.GlobalUnit.Clfs;
        }
        /// <summary>
        /// 根据规程计算起动时间和起动电流
        /// </summary>
        /// <param name="GuiChengName">规程名称</param>
        /// <param name="clfs">测量方式</param>
        /// <param name="U">电压</param>
        /// <param name="Ib">电流字符串Ib(Imax)</param>
        /// <param name="Dj">等级1.0(2.0)</param>
        /// <param name="MeterConst">常数 有功(无功)</param>
        /// <param name="znq">止逆器</param>
        /// <param name="hgq">互感器</param>
        public void CheckTimeAndIb(string GuiChengName, CLDC_Comm.Enum.Cus_Clfs clfs, float U, string Ib, string Dj, string MeterConst, bool znq, bool hgq)
        {
            CLDC_Comm.Enum.Cus_Ywg _Ywg = new CLDC_Comm.Enum.Cus_Ywg();
            if (this.PowerFangXiang == CLDC_Comm.Enum.Cus_PowerFangXiang.正向有功 || this.PowerFangXiang == CLDC_Comm.Enum.Cus_PowerFangXiang.反向有功)
            {
                _Ywg = CLDC_Comm.Enum.Cus_Ywg.P;
            }
            else
            {
                _Ywg = CLDC_Comm.Enum.Cus_Ywg.Q;
            }

            float _ib = 0F;

            try
            {
                _ib = CLDC_DataCore.Function.Number.GetCurrentByIb("Ib", Ib);
            }
            catch
            {
            }

            if (_ib == 0F)
            {
                _ib = float.Parse(Ib.Substring(0, Ib.IndexOf("(")));
            }
            if (this.FloatxIb == 0)         //如果方案电流倍数为0,则使用规程起动电流
            {
                this.FloatIb = CLDC_DataCore.Function.QiDQianDFunction.getQiDongCurrent(GuiChengName, _ib, Dj, znq, hgq, _Ywg);
            }
            else   //反之则直接使用方案电流倍数乘以标定电流
            {
                this.FloatIb = this.FloatxIb * _ib;
            }

            if (this.xTime == 0F)           //如果方案起动时间为0,则使用规程起动时间
            {
                this.CheckTime = CLDC_DataCore.Function.QiDQianDFunction.getQiDongTime(GuiChengName, U, this.FloatIb, CLDC_DataCore.Function.Number.GetBcs(MeterConst, _Ywg == CLDC_Comm.Enum.Cus_Ywg.P?true:false), clfs);
            }
            else
            {
                this.CheckTime = this.xTime;
            }
        }
        /// <summary>
        /// 计算潜动时间
        /// </summary>
        /// <param name="GuiChengName">规程名称</param>
        /// <param name="U">标定电压</param>
        /// <param name="xU">电压倍数</param>
        /// <param name="qIb">起动电流</param>
        /// <param name="MeterLevel">电能表常数</param>
        /// <param name="MeterConst">测量方式</param>
        /// <param name="_Clfs">测量方式</param>
        /// <param name="_Ywg">测量方式</param>
        /// <returns></returns>
        public static float getQianDongTime(string GuiChengName, float U, float xU, float qIb, string MeterLevel, int MeterConst, CLDC_Comm.Enum.Cus_Clfs _Clfs, CLDC_Comm.Enum.Cus_Ywg _Ywg)
        {
            float _m = 0;

            switch (_Clfs)
            {
            case CLDC_Comm.Enum.Cus_Clfs.单相:
            {
                _m = 1F;
                break;
            }

            case CLDC_Comm.Enum.Cus_Clfs.相四线:
            {
                _m = 3F;
                break;
            }

            case CLDC_Comm.Enum.Cus_Clfs.二元件跨相60:
            case CLDC_Comm.Enum.Cus_Clfs.二元件跨相90:
            case CLDC_Comm.Enum.Cus_Clfs.元件跨相90:
            case CLDC_Comm.Enum.Cus_Clfs.相三线:
            {
                _m = (float)Math.Sqrt(3D);
                break;
            }
            }
            string[] _Dj = CLDC_DataCore.Function.Number.getDj(MeterLevel);

            if (_Ywg == CLDC_Comm.Enum.Cus_Ywg.P)
            {
                MeterLevel = _Dj[0].Trim();
            }
            else
            {
                MeterLevel = _Dj[1].Trim();
            }
            float fbase = 900;

            switch (MeterLevel)
            {
            case "0.2S":
            {
                fbase = 900F;
                break;
            }

            case "0.5S":
            case "1.0":
            case "1":
            {
                fbase = 600F;
                break;
            }

            case "2.0":
            case "2":
            {
                fbase = 480F;
                break;
            }

            default:
                break;
            }
            switch (GuiChengName.ToUpper())
            {
            case "JJG307-1988":
            {
                return(10F * (getQiDongTime(GuiChengName, U * xU, qIb, MeterConst, _Clfs)));
            }

            case "JJG307-2006":
            {
                return(20F * 1000F / ((float)MeterConst * _m * U * xU * qIb * 0.25F));
            }

            case "JJG596-1999":
            {
                return(10F * (getQiDongTime(GuiChengName, U * xU, qIb, MeterConst, _Clfs)));
            }

            case "JJG596-2012":
            {
                return(fbase * 1000000F / ((float)MeterConst * _m * U * qIb));
            }

            default:
            {
                return(10F * (getQiDongTime(GuiChengName, U * xU, qIb, MeterConst, _Clfs)));
            }
            }
        }
        /// <summary>
        /// 获取起动时间
        /// </summary>
        /// <param name="GuiChengName">规程名称(JJG307-1988)</param>
        /// <param name="U">标定电压</param>
        /// <param name="qIb">起动电流值</param>
        /// <param name="MeterConst">表常数</param>
        /// <param name="_Clfs">测量方式</param>
        /// <returns></returns>
        public static float getQiDongTime(string GuiChengName, float U, float qIb, int MeterConst, CLDC_Comm.Enum.Cus_Clfs _Clfs)
        {
            float _m = 0;

            switch (_Clfs)
            {
            case CLDC_Comm.Enum.Cus_Clfs.单相:
            {
                _m = 1F;
                break;
            }

            case CLDC_Comm.Enum.Cus_Clfs.相四线:
            {
                _m = 3F;
                break;
            }

            case CLDC_Comm.Enum.Cus_Clfs.二元件跨相60:
            case CLDC_Comm.Enum.Cus_Clfs.二元件跨相90:
            case CLDC_Comm.Enum.Cus_Clfs.元件跨相90:
            case CLDC_Comm.Enum.Cus_Clfs.相三线:
            {
                _m = (float)Math.Sqrt(3D);
                break;
            }
            }

            switch (GuiChengName.ToUpper())
            {
            case "JJG307-1988":
            {
                return(1.4F * 60F * 1000F / ((float)MeterConst * _m * U * qIb));
            }

            case "JJG307-2006":
            {
                return(80F * 1000F / ((float)MeterConst * _m * U * qIb));
            }

            case "JJG596-1999":
            {
                return(1.4F * 60F * 1000F / ((float)MeterConst * _m * U * qIb));
            }

            case "JJG596-2012":
            {
                return(1.2F * 60F * 1000F / ((float)MeterConst * _m * U * qIb));
            }

            default:
            {
                return(1.2F * 60F * 1000F / ((float)MeterConst * _m * U * qIb));
            }
            }
        }
        /// <summary>
        /// 海南获取潜动时间
        /// </summary>
        /// <param name="U"></param>
        /// <param name="xU"></param>
        /// <param name="qIb"></param>
        /// <param name="imax"></param>
        /// <param name="meterLevel"></param>
        /// <param name="MeterConst"></param>
        /// <param name="_Clfs"></param>
        /// <param name="hgq"></param>
        /// <param name="_Ywg"></param>
        /// <returns></returns>
        public static float getQianDongTime(float U, float xU, float qIb, float imax, string meterLevel, int MeterConst, CLDC_Comm.Enum.Cus_Clfs _Clfs, bool hgq, CLDC_Comm.Enum.Cus_Ywg _Ywg)
        {
            xU = 1.15f;
            if (hgq)
            {
                return(5 * getQiDongTime(xU * U, qIb, MeterConst, _Clfs));
            }

            float _m = 0;

            switch (_Clfs)
            {
            case CLDC_Comm.Enum.Cus_Clfs.单相:
            {
                _m = 1F;
                break;
            }

            case CLDC_Comm.Enum.Cus_Clfs.相四线:
            {
                _m = 3F;
                break;
            }

            case CLDC_Comm.Enum.Cus_Clfs.二元件跨相60:
            case CLDC_Comm.Enum.Cus_Clfs.二元件跨相90:
            case CLDC_Comm.Enum.Cus_Clfs.元件跨相90:
            case CLDC_Comm.Enum.Cus_Clfs.相三线:
            {
                _m = (float)Math.Sqrt(3D);
                break;
            }
            }

            string[] _Dj = CLDC_DataCore.Function.Number.getDj(meterLevel);

            if (_Ywg == CLDC_Comm.Enum.Cus_Ywg.P)
            {
                meterLevel = float.Parse(_Dj[0]).ToString("F1");
            }
            else
            {
                meterLevel = float.Parse(_Dj[1]).ToString("F1");
            }
            int cs = meterLevel == "1.0" ? 600 : 480;

            return(cs * (float)Math.Pow(10, 6) / (MeterConst * _m * U * xU * imax));
        }
예제 #11
0
 /// <summary>
 /// 获取XID的值
 /// </summary>
 /// <param name="clfs">测量方式</param>
 /// <param name="Ywg">有无功</param>
 /// <param name="Yj">元件</param>
 /// <returns></returns>
 public static string XID(CLDC_Comm.Enum.Cus_Clfs clfs, CLDC_Comm.Enum.Cus_Ywg Ywg, CLDC_Comm.Enum.Cus_PowerYuanJian Yj)
 {
     return(((int)clfs).ToString() + ((int)Ywg).ToString() + ((int)Yj).ToString());
 }