Example #1
0
        public bool TagSummaryData(string tagname, DateTime stime, DateTime etime, string filter, out TagAllValue pdata)
        {
            //double ReturnValue = double.MinValue;
            pdata = new TagAllValue();

            try {
                PISDK.PIPoint piPoint = piServer.PIPoints[tagname];

                pdata.TagName = tagname;
                pdata.TagSnapshot = Convert.ToDouble(piPoint.Data.Snapshot.Value.ToString());
                pdata.TagDesc = piPoint.PointAttributes["Descriptor"].Value.ToString();
                pdata.TagEngunit = piPoint.PointAttributes["Engunits"].Value.ToString();

                //if (filter.Trim() != "")
                //{
                /////////////////////////////////////////////////////////////////////////////////
                PISDK.IPIData2 ipda = (PISDK.IPIData2)piPoint.Data;

                //ReturnValue = Convert.ToDouble(ipda.Snapshot.Value);

                PISDKCommon.NamedValues nvsSum;
                PIValues valsum;

                //////////////////////////////////////////////////////////////////////
                PISDK.IPICalculation ipicalc = (IPICalculation)piServer;

                if (filter != "") {
                    double dpercent = 0.0;
                    valsum = ipicalc.PercentTrue(stime, etime, "", filter);

                    if (valsum.Count == 1) {
                        dpercent = (double)valsum[1].Value;
                    }

                    //wugh,add at 2013.4.8
                    if (dpercent < 0.00001) {
                        return false;
                    }

                }
                /////////////////////////////////////////////////

                nvsSum = ipda.FilteredSummaries(stime, etime, "", filter, ArchiveSummariesTypeConstants.asAll);

                //
                valsum = (PIValues)nvsSum["Total"].Value;

                if (valsum.Count == 1) {
                    pdata.TagTotal = (double)valsum[1].Value;
                }

                valsum = (PIValues)nvsSum["Average"].Value;

                if (valsum.Count == 1) {
                    pdata.TagAverage = (double)valsum[1].Value;
                }

                valsum = (PIValues)nvsSum["Maximum"].Value;

                if (valsum.Count == 1) {
                    pdata.TagMaximum = (double)valsum[1].Value;
                }

                valsum = (PIValues)nvsSum["Minimum"].Value;

                if (valsum.Count == 1) {
                    pdata.TagMinimum = (double)valsum[1].Value;
                }

                valsum = (PIValues)nvsSum["Range"].Value;

                if (valsum.Count == 1) {
                    pdata.TagRange = (double)valsum[1].Value;
                }

                valsum = (PIValues)nvsSum["StdDev"].Value;

                if (valsum.Count == 1) {
                    pdata.TagStdDev = (double)valsum[1].Value;
                }

                valsum = (PIValues)nvsSum["PStdDev"].Value;

                if (valsum.Count == 1) {
                    pdata.TagPStdDev = (double)valsum[1].Value;
                }

                //}
                //else
                //{
                //    ////////////////////////////////////////////////////////////////////////////////////////////////////////
                //    //No Filter
                //    PISDK.PIValue rv = null;
                //    rv = piPoint.Data.Summary(stime, etime, PISDK.ArchiveSummaryTypeConstants.);

                //    ReturnValue = Convert.ToDouble(rv.Value);
                //}

            }
            catch (Exception ex) {
                LogUtil.LogMessage(ex.Message);
                //_ErrorInfo = ex.Message;
            }

            return true;
        }
Example #2
0
        public bool TagSummaryData(string tagname, DateTime stime, DateTime etime, string filter, out TagAllValue pdata)
        {
            pdata = null;

            return true;
        }
Example #3
0
        /// <summary>
        /// 指定开始结束时间
        /// 统计时间内的Total\Snapshot\Max\Min\StdDev\Range\Average\PStdDev, 返回数据组
        /// </summary>
        public bool TagSummaryData(string tagname, DateTime stime, DateTime etime, string filter, out TagAllValue pdata)
        {
            try {
                pdata = null;
                if (String.IsNullOrEmpty(tagname)) {
                    return false;
                }
                TagVector tagVector = GetPointListByTagName(tagname);
                if (null == tagVector || 0 >= tagVector.Count) {
                    return false;
                }
                pdata = new TagAllValue();
                pdata.TagName = tagname;
                pdata.TagSnapshot = GetSnapshotValue(tagname);
                pdata.TagDesc = tagVector[0].Properties["Desc"].ToString();
                pdata.TagEngunit = tagVector[0].Properties["ENGINEERINGUNIT"].ToString();

                pdata.TagTotal = TagCalculatedData(tagname, stime, etime, filter, SummaryType.asTotal);
                pdata.TagMinimum = TagCalculatedData(tagname, stime, etime, filter, SummaryType.asMinimum);
                pdata.TagMaximum = TagCalculatedData(tagname, stime, etime, filter, SummaryType.asMaximum);
                pdata.TagStdDev = TagCalculatedData(tagname, stime, etime, filter, SummaryType.asStdDev);
                pdata.TagRange = TagCalculatedData(tagname, stime, etime, filter, SummaryType.asRange);
                pdata.TagAverage = TagCalculatedData(tagname, stime, etime, filter, SummaryType.asAverage);
                pdata.TagPStdDev = TagCalculatedData(tagname, stime, etime, filter, SummaryType.asPStdDev);
                pdata.TagAverage = TagCalculatedData(tagname, stime, etime, filter, SummaryType.asAverage);

                return true;
            }
            catch (Exception ex) {
                _ErrorInfo = ex.Message;
                pdata = null;
                return false;
            }
        }
Example #4
0
        static void Main(string[] args)
        {
            /////////////////////////////////////////////////////////////////////////////
            #region Read INI Config
            //运行状态
            RTest = int.Parse(System.Configuration.ConfigurationManager.AppSettings["RTest"]);
            RAuto = int.Parse(System.Configuration.ConfigurationManager.AppSettings["RAuto"]);

            //Excel
            strExcelName = System.Configuration.ConfigurationManager.AppSettings["RExcel"];

            RRun = int.Parse(System.Configuration.ConfigurationManager.AppSettings["RRun"]);
            RPeriod = int.Parse(System.Configuration.ConfigurationManager.AppSettings["RPeriod"]);
            ROffset = int.Parse(System.Configuration.ConfigurationManager.AppSettings["ROffset"]);
            RSecond = int.Parse(System.Configuration.ConfigurationManager.AppSettings["RSecond"]);

            //////////////////////////////////////////////////////////////////////////
            //判断
            if (RPeriod <= 0)
            {
                RPeriod = 1;
            }

            if (ROffset < 0 || ROffset > RPeriod)
            {
                ROffset = 0;
            }

            if (RSecond < 0)
            {
                RSecond = 0;
            }

            #endregion

            ////////////////////////////////////////////////////////////////////////////

            /////////////////////////////////////////////////////////////////////////////
            #region 用户交互对话执行

            if (args.Length == 0)
            {
                do
                {
                    System.Console.WriteLine("-------------------");
                    System.Console.WriteLine("请输入运行类型:");
                    System.Console.WriteLine("[0] - 退出, 默认;!");
                    System.Console.WriteLine("[1] - 数据库读数测试;");
                    //
                    //
                    //System.Console.WriteLine("[9] - 报表补算;");
                    System.Console.WriteLine("-------------------");

                    string strinput = System.Console.ReadLine();

                    if (strinput == "")
                    {
                        strinput = "0";
                    }

                    if (strinput.ToLower() == "0")
                    {
                        return;

                    }
                    else if (strinput.ToLower() == "1")
                    {
                        #region 数据库读数测试

                        System.Console.WriteLine("[0] - Tag实时,默认;");
                        System.Console.WriteLine("[1] - Tag计算测试;");
                        System.Console.WriteLine("[2] - Tag All计算测试;");
                        System.Console.WriteLine("[3] - EXP计算测试;");

                        strinput = System.Console.ReadLine();

                        if (strinput == "")
                        {
                            strinput = "0";
                        }

                        if (strinput == "0")
                        {
                            System.Console.WriteLine("请输入标签点, 默认sinusoid:");

                            string strtag = System.Console.ReadLine();

                            if (strtag == "")
                            {
                                strtag = "sinusoid";
                            }

                            double dValue = DBAccess.GetRealTime().GetSnapshotValue(strtag);
                            //string dValue = DBAccess.GetRealTime().GetDigitalSnapshotValueName(strtag);

                            if (dValue == double.MinValue)
                            {
                                System.Console.WriteLine("计算结果出现错误!");
                            }
                            else
                            {
                                System.Console.WriteLine(strtag + "实时值:  " + dValue.ToString("0.000"));
                            }

                        }else if (strinput == "1")
                        {
                            System.Console.WriteLine("请输入'条件表达式',表达式中的点需用''引用,默认,空");

                            string strfilter = System.Console.ReadLine();

                            System.Console.WriteLine("请选择统计方式:");
                            System.Console.WriteLine("[0] - 最近8小时平均值,默认;");
                            System.Console.WriteLine("[1] - 最近8小时最大值;");
                            System.Console.WriteLine("[2] - 最近8小时最小值;");

                            string strtype = System.Console.ReadLine();
                            string strinfor = "平均值";
                            SummaryType st = SummaryType.asAverage;

                            if (strtype != "")
                            {
                                switch (strtype.Trim().ToLower())
                                {
                                    case "0":
                                        st = SummaryType.asAverage;
                                        strinfor = "平均值";
                                        break;
                                    case "1":
                                        st = SummaryType.asMaximum;
                                        strinfor = "最大值";
                                        break;
                                    case "2":
                                        st = SummaryType.asMinimum;
                                        strinfor = "最小值";
                                        break;
                                    default:
                                        st = SummaryType.asAverage;
                                        strinfor = "平均值";
                                        break;
                                }
                            }

                            DateTime stime = DateTime.Now.AddHours(-8);
                            DateTime etime = DateTime.Now;

                            double dValue = DBAccess.GetRealTime().TagCalculatedData(strfilter, stime, etime, strfilter, st);

                            if (dValue == double.MinValue)
                            {
                                System.Console.WriteLine("计算结果出现错误!");
                            }
                            else
                            {
                                System.Console.WriteLine(strfilter + strinfor + ":  " + dValue.ToString("0.000"));
                            }

                        }else if (strinput == "2")
                        {
                            System.Console.WriteLine("请输入'条件表达式',表达式中的点需用''引用,默认,空");

                            string strfilter = System.Console.ReadLine();

                            DateTime stime = DateTime.Now.AddHours(-8);
                            DateTime etime = DateTime.Now;

                            TagAllValue tav = new TagAllValue();
                            bool bSuccessed = DBAccess.GetRealTime().TagSummaryData(strfilter, stime, etime, strfilter, out tav);

                            if (bSuccessed && tav != null)
                            {
                                System.Console.WriteLine("标签点名:" + tav.TagName);
                                System.Console.WriteLine("标签描述:" + tav.TagDesc);
                                System.Console.WriteLine("标签单位:" + tav.TagEngunit);
                                System.Console.WriteLine("标签实时值:" + tav.TagSnapshot.ToString("0.000"));
                                System.Console.WriteLine("标签最大值:" + tav.TagMaximum.ToString("0.000"));
                                System.Console.WriteLine("标签最小值:" + tav.TagMinimum.ToString("0.000"));
                                System.Console.WriteLine("标签平均值:" + tav.TagAverage.ToString("0.000"));
                                System.Console.WriteLine("标签幅值:" + tav.TagRange.ToString("0.000"));
                                System.Console.WriteLine("标签标准偏差值:" + tav.TagStdDev.ToString("0.000"));
                                System.Console.WriteLine("标签总体标准差值:" + tav.TagPStdDev.ToString("0.000"));
                                System.Console.WriteLine("标签累计值:" + tav.TagTotal.ToString("0.000"));

                            }
                            else
                            {
                                System.Console.WriteLine("计算结果出现错误!");
                            }
                        }
                        else if (strinput == "3")
                        {
                            System.Console.WriteLine("请输入'条件表达式',表达式中的点需用''引用,默认,空");

                            string strfilter = System.Console.ReadLine();

                            System.Console.WriteLine("请选择统计方式:");
                            System.Console.WriteLine("[0] - 最近8小时平均值, 默认;");
                            System.Console.WriteLine("[1] - 最近8小时最大值;");
                            System.Console.WriteLine("[2] - 最近8小时最小值;");

                            string strtype = System.Console.ReadLine();
                            string strinfor = "平均值";
                            SummaryType st = SummaryType.asAverage;

                            if (strtype != "")
                            {
                                switch (strtype.Trim().ToLower())
                                {
                                    case "0":
                                        st = SummaryType.asAverage;
                                        strinfor = "平均值";
                                        break;
                                    case "1":
                                        st = SummaryType.asMaximum;
                                        strinfor = "最大值";
                                        break;
                                    case "2":
                                        st = SummaryType.asMinimum;
                                        strinfor = "最小值";
                                        break;
                                    default:
                                        st = SummaryType.asAverage;
                                        strinfor = "平均值";
                                        break;
                                }
                            }

                            DateTime stime = DateTime.Now.AddHours(-8);
                            DateTime etime = DateTime.Now;

                            double dValue = DBAccess.GetRealTime().ExpCalculatedData(strfilter, stime, etime, strfilter, st);

                            if (dValue == double.MinValue)
                            {
                                System.Console.WriteLine("计算结果出现错误!");
                            }
                            else
                            {
                                System.Console.WriteLine(strfilter + strinfor + ":  " + dValue.ToString("0.000"));
                            }

                        }

                        #endregion
                    }

                    //else if (strinput.ToLower() == "9")
                    //{
                    //    //历史计算
                    //    System.Console.WriteLine("正在进行历史补算.......");

                    //    string strWeb = System.Configuration.ConfigurationManager.AppSettings["HWeb"];
                    //    string strHistory = System.Configuration.ConfigurationManager.AppSettings["HHistory"];
                    //    string[] strTime = strHistory.Split(new string[] { ";", "," }, StringSplitOptions.RemoveEmptyEntries);

                    //    //历史计算
                    //    if (strTime.Length == 2)
                    //    {
                    //        if (DateTime.Parse(strTime[0]) > DateTime.Parse(strTime[1]))
                    //        {
                    //            System.Console.WriteLine("开始时间必须小于结束时间!");

                    //        }
                    //        else if (DateTime.Parse(strTime[1]) > DateTime.Now)
                    //        {
                    //            System.Console.WriteLine("结束时间必须小于当前时间!");

                    //        }
                    //        else
                    //        {
                    //            if (!WS_RDLCMainMethod.RDLCArchiveRun(strWeb, strTime[0], strTime[1]))
                    //            {
                    //                System.Console.WriteLine("历史计算失败!");
                    //            }
                    //            else
                    //            {
                    //                System.Console.WriteLine("历史计算完成!");
                    //            }

                    //        }

                    //    }
                    //    else
                    //    {
                    //        System.Console.WriteLine("时间配置错误!");
                    //    }

                    //}
                    //else
                    //{
                    //    System.Console.WriteLine("请输入有效选项!");
                    //}

               } while (true);

            }

            #endregion

            /////////////////////////////////////////////////////////////////////////////
            #region 带参数运行

            if (args.Length==0)
            {
                return;
            }else
            {
                #region 竞赛计算服务

                string strgcontents = args[0].Trim();

                if (strgcontents != "")
                {
                    //Excel
                    if (!GetExcel())
                    {
                        return;
                    }

                    //实时计算
                    DateTime dtCurrentTime = DateTime.Now;
                    int nCS = dtCurrentTime.Second;
                    int nCM = dtCurrentTime.Minute;
                    int nCMmod = nCM % RPeriod;

                    DateTime dtET = dtCurrentTime.AddSeconds(-1 * nCS);
                    dtET = dtET.AddMinutes(-1 * nCMmod);

                    System.Console.WriteLine("正在进行实时计算.......");
                    System.Console.WriteLine("计算时间为:" + dtCurrentTime.ToString());

                    Stopwatch timer = new Stopwatch();
                    timer.Start();

                    WS_ExcelMainMethod.ExcelSnapRun(strExcel, strSheet, dtET, RPeriod, RSecond);

                    timer.Stop();

                    LogUtil.LogMessage("本次统计完成!耗时: " + timer.ElapsedMilliseconds + "毫秒");

                    //if (!)
                    //{
                    //    System.Console.WriteLine("实时计算失败!");
                    //}
                    //else
                    //{
                    //    System.Console.WriteLine("实时计算完成!");
                    //}

                }

                #endregion

                return ;
            }

            #endregion

            //string strfiletypea = strgcontents.Substring(strgcontents.Length-4, 4).ToLower();
            //string strfiletypeb = strgcontents.Substring(strgcontents.Length-5, 5).ToLower();

            //if (args.Length == 1 && (strfiletypea == ".xls" || strfiletypeb == ".xlsx"))
            //{
            //    #region Excel Driver Calc

            //    ExcelMacroHelper.RunExcelMacro(strgcontents, "MainCalc");

            //    #endregion

            //    return;
            //}
        }
Example #5
0
        public bool TagSummaryData(string tagname, DateTime stime, DateTime etime, string filter, out TagAllValue pdata)
        {
            pdata = null;

            return(true);
        }