Пример #1
0
        private void btnGetTagData_Click(object sender, EventArgs e)
        {
            //Set timerange
            AFTime startTime = new AFTime(piStartTime.Text);
            AFTime endTime = new AFTime(piEndTime.Text);
            AFTimeRange timeRange = new AFTimeRange(startTime, endTime);

            //Get tagname
            string tagname = tbEnterTag.Text;

            //Get pi server
            PIServers servers = new PIServers();
            PIServer server = servers[piServerPicker1.PIServer.ToString()];

            //Get pi point
            PIPoint point = PIPoint.FindPIPoint(server, tagname);

            //extract values for tag across timerange
            AFValues values = point.RecordedValues(timeRange, AFBoundaryType.Inside, null, false, 0);

            //Get current value and timestamp
            piCurrentValue.Text = point.CurrentValue().ToString();
            piCurrentTimestamp.Text = point.CurrentValue().Timestamp.ToString();

            //Clear data chart
            piDataChart.Series["dataSeries"].Points.Clear();

            if (values != null)
            {
                foreach (AFValue value in values)
                {
                    //Write data into list box
                    string output = String.Format("{0} \t {1} {2}", value.Timestamp, value.Value, 
                                                    value.UOM != null ? value.UOM.Abbreviation : null);
                    lbPIData.Items.Add(output);

                    try
                    {
                        //chart data
                        piDataChart.Series["dataSeries"].Points.AddXY(value.Timestamp.ToString(), value.Value);
                    } catch (System.ArgumentException)
                    {
                        continue;
                    }

                    
                }
            }
        }
Пример #2
0
        public PIValueModel GetPIValue(string piPointName)
        {
            PIValueModel returnVal      = new PIValueModel();
            bool         piPointPresent = PIPointExists(piPointName);

            if (piPointPresent)
            {
                PIPoint myPoint = PIPoint.FindPIPoint(_pi, piPointName);
                AFValue piValue = myPoint.CurrentValue();
                returnVal.PointName = piPointName;
                returnVal.datetime  = piValue.Timestamp.ToString();
                returnVal.value     = piValue.Value.ToString();
            }
            return(returnVal);
        }
Пример #3
0
        // GET api/tsops/Snapshot?server={serverName}&point={pointName>}
        public IEnumerable <string> GetSnapshot([FromUri] string server, [FromUri] string point)
        {
            PIServer srv;

            if (server != null)
            {
                try
                {
                    srv = new PIServers()[server];
                    srv.Connect();
                }
                catch
                {
                    List <string> error = new List <string>();
                    error.Add("Error: Could not connect to PI Data Archive " + server); //Cannot connect to PI Data Archive
                    return(error);
                }
            }
            else
            {
                List <string> error = new List <string>();
                error.Add("Error: PI Data Archive name is null"); //Server is null
                return(error);
            }

            //Finds PI Point and gets current value
            try
            {
                PIPoint requestedPoint = PIPoint.FindPIPoint(srv, point); //Finds desired PI Point

                AFValue val = requestedPoint.CurrentValue();              //Gets current value

                IEnumerable <string> result = new string[] { "Server: " + val.PIPoint.Server, "Point Name : " + val.PIPoint.Name, "Current Value: " + val.Value, "Timestamp: " + val.Timestamp };

                return(result);
            }
            catch
            {
                List <string> error = new List <string>();
                error.Add("Error: Could not get current value for " + point);
                return(error);
            }
        }
Пример #4
0
        public override void Run()
        {
            try
            {
                PiConnectionHelper piConnectionHelper = new PiConnectionHelper(Server);
                piConnectionHelper.Connect();

                PIServer pi = piConnectionHelper.GetPiServer();

                PIPoint point = PIPoint.FindPIPoint(pi, Tag);
                AFValue value = point.CurrentValue();

                Logger.InfoFormat("The current value for PI Point {0} is : {1} - {2}", Tag, value.Timestamp, value.Value);
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }
        }
Пример #5
0
        public void PiInsert(string Product, DataTable dt)
        {
            //**********************Insert records into pi********************************************

            try
            {
                LabEntities       db          = new LabEntities();
                PIServers         myPIServers = new PIServers();
                PIServer          myPIServer  = myPIServers.DefaultPIServer;
                NetworkCredential credential  = new NetworkCredential("labserver", "labserver1");
                myPIServer.Connect(credential);

                Dictionary <string, decimal?> piTagValues = new Dictionary <string, decimal?>();
                var PiTaglist = (from v in db.Lab_TagTable
                                 orderby v.Id
                                 select v).Skip(39).Take(44);

                var date = Convert.ToDateTime(Session["alumina_date"].ToString());

                int utc = DateTime.UtcNow.Hour;
                int dt_ = DateTime.Now.Hour;

                bool dst = DSTcheck();
                if (dst)
                {
                    dt_ = dt_ - 1;
                }
                int diff;
                if (utc > dt_)
                {
                    diff = utc - dt_;
                }
                else
                {
                    diff = utc + 24 - dt_;
                }

                //type is not feed moisture
                if (Product == "ALUMINA")
                {
                    //string s = type.Substring(0, type.Length - 4);
                    //string input = type.Substring(type.Length - 4);
                    //int time = Convert.ToInt16(input.TrimEnd('0'));
                    //DateTime datetime;
                    //TimeSpan ts;
                    //if (time == 24)
                    //{
                    //    ts = new TimeSpan(23, 59, 59);
                    //}
                    //else ts = new TimeSpan(time, 0, 0);


                    //datetime = date + ts;

                    //decimal? s = (decimal?)null;
                    //bool nulloremtpy = string.IsNullOrWhiteSpace(dt.Rows[0]["value"].ToString());

                    piTagValues.Add("LABALUMINA_LOI", string.IsNullOrWhiteSpace(dt.Rows[0]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[0]["value"].ToString()));
                    piTagValues.Add("LABALUMINA_P100", string.IsNullOrWhiteSpace(dt.Rows[1]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[1]["value"].ToString()));
                    piTagValues.Add("LABALUMINA_P200", string.IsNullOrWhiteSpace(dt.Rows[2]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[2]["value"].ToString()));
                    piTagValues.Add("LABALUMINA_P325", string.IsNullOrWhiteSpace(dt.Rows[3]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[3]["value"].ToString()));
                    piTagValues.Add("LABALUMINA_BULKDENS", string.IsNullOrWhiteSpace(dt.Rows[4]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[4]["value"].ToString()));
                    piTagValues.Add("LABALUMINA_SI", string.IsNullOrWhiteSpace(dt.Rows[5]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[5]["value"].ToString()));
                    piTagValues.Add("LABALUMINA_FE", string.IsNullOrWhiteSpace(dt.Rows[6]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[6]["value"].ToString()));
                    piTagValues.Add("LABALUMINA_NA", string.IsNullOrWhiteSpace(dt.Rows[7]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[7]["value"].ToString()));
                    piTagValues.Add("LABALUMINA_ZN", string.IsNullOrWhiteSpace(dt.Rows[8]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[8]["value"].ToString()));
                    piTagValues.Add("LABALUMINA_MN", string.IsNullOrWhiteSpace(dt.Rows[9]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[9]["value"].ToString()));
                    piTagValues.Add("LABALUMINA_CA", string.IsNullOrWhiteSpace(dt.Rows[10]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[10]["value"].ToString()));
                    piTagValues.Add("LABALUMINA_TI", string.IsNullOrWhiteSpace(dt.Rows[11]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[11]["value"].ToString()));
                    piTagValues.Add("LABALUMINA_AI", string.IsNullOrWhiteSpace(dt.Rows[12]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[12]["value"].ToString()));
                    piTagValues.Add("LABALUMINA_M20", string.IsNullOrWhiteSpace(dt.Rows[13]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[13]["value"].ToString()));


                    foreach (KeyValuePair <string, decimal?> entry in piTagValues)
                    {
                        foreach (var item in PiTaglist)
                        {
                            string TagName      = item.Pi_Tags_Test.Substring(0, item.Pi_Tags_Test.Length - 5);
                            string TagName_test = item.Pi_Tags_Test;
                            if (TagName == entry.Key)
                            {
                                //PIPoint myPIPoint = PIPoint.FindPIPoint(myPIServer, TagName_test);
                                PIPoint myPIPoint  = PIPoint.FindPIPoint(myPIServer, TagName); //use this when go to production
                                AFValue currentTag = myPIPoint.CurrentValue();
                                currentTag.Value = Convert.ToString(entry.Value);

                                //string ctv = currentTag.Value.ToString();
                                //DateTime cttimestamp = currentTag.Timestamp;
                                //DateTime d = cttimestamp.Date;
                                currentTag.Timestamp = date.AddHours(diff);



                                if (!string.IsNullOrEmpty(currentTag.Value.ToString()))
                                {
                                    //if (ctv != null && d != date)
                                    //{

                                    myPIPoint.UpdateValue(currentTag, AFUpdateOption.Insert);
                                    //}
                                    //else
                                    //{
                                    //    currentTag.Timestamp = date.AddHours(diff);
                                    //    myPIPoint.UpdateValue(currentTag, AFUpdateOption.Replace);
                                    //}
                                }
                            }
                        }
                    }
                }
                else if (Product == "HYDRATE")
                {
                    piTagValues.Add("LABHYDRATE_P100", string.IsNullOrWhiteSpace(dt.Rows[0]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[0]["value"].ToString()));
                    piTagValues.Add("LABHYDRATE_P200", string.IsNullOrWhiteSpace(dt.Rows[1]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[1]["value"].ToString()));
                    piTagValues.Add("LABHYDRATE_P325", string.IsNullOrWhiteSpace(dt.Rows[2]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[2]["value"].ToString()));
                    piTagValues.Add("LABHYDRATE_SI", string.IsNullOrWhiteSpace(dt.Rows[3]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[3]["value"].ToString()));
                    piTagValues.Add("LABHYDRATE_FE", string.IsNullOrWhiteSpace(dt.Rows[4]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[4]["value"].ToString()));
                    piTagValues.Add("LABHYDRATE_NA", string.IsNullOrWhiteSpace(dt.Rows[5]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[5]["value"].ToString()));
                    piTagValues.Add("LABHYDRATE_ZN", string.IsNullOrWhiteSpace(dt.Rows[6]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[6]["value"].ToString()));
                    piTagValues.Add("LABHYDRATE_MN", string.IsNullOrWhiteSpace(dt.Rows[7]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[7]["value"].ToString()));
                    piTagValues.Add("LABHYDRATE_CA", string.IsNullOrWhiteSpace(dt.Rows[8]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[8]["value"].ToString()));
                    piTagValues.Add("LABHYDRATE_TI", string.IsNullOrWhiteSpace(dt.Rows[9]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[9]["value"].ToString()));
                    piTagValues.Add("LABHYDRATE_AI", string.IsNullOrWhiteSpace(dt.Rows[10]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[10]["value"].ToString()));
                    piTagValues.Add("LABHYDRATE_FREEMOIST", string.IsNullOrWhiteSpace(dt.Rows[11]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[11]["value"].ToString()));
                    piTagValues.Add("LABHYDRATE_CSEDS", string.IsNullOrWhiteSpace(dt.Rows[12]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[12]["value"].ToString()));
                    piTagValues.Add("LABHYDRATE_INSOLS", string.IsNullOrWhiteSpace(dt.Rows[13]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[13]["value"].ToString()));
                    piTagValues.Add("LABHYDRATE_BULKDENS", string.IsNullOrWhiteSpace(dt.Rows[14]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[14]["value"].ToString()));
                    piTagValues.Add("LABHYDRATE_HUNTERL", string.IsNullOrWhiteSpace(dt.Rows[15]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[15]["value"].ToString()));
                    piTagValues.Add("LABHYDRATE_HUNTERA", string.IsNullOrWhiteSpace(dt.Rows[16]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[16]["value"].ToString()));
                    piTagValues.Add("LABHYDRATE_HUNTERB", string.IsNullOrWhiteSpace(dt.Rows[17]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[17]["value"].ToString()));

                    foreach (KeyValuePair <string, decimal?> entry in piTagValues)
                    {
                        foreach (var item in PiTaglist)
                        {
                            string TagName      = item.Pi_Tags_Test.Substring(0, item.Pi_Tags_Test.Length - 5);
                            string TagName_test = item.Pi_Tags_Test;
                            if (TagName == entry.Key)
                            {
                                //PIPoint myPIPoint = PIPoint.FindPIPoint(myPIServer, TagName_test);
                                PIPoint myPIPoint  = PIPoint.FindPIPoint(myPIServer, TagName); // use this when go to production
                                AFValue currentTag = myPIPoint.CurrentValue();
                                currentTag.Value = Convert.ToString(entry.Value);

                                //string ctv = currentTag.Value.ToString();
                                //DateTime cttimestamp = currentTag.Timestamp;
                                //DateTime d = cttimestamp.Date;

                                currentTag.Timestamp = date.AddHours(diff);


                                if (!string.IsNullOrEmpty(currentTag.Value.ToString()))
                                {
                                    //if (ctv != null && d != date)
                                    //{

                                    //    currentTag.Timestamp = date.AddHours(diff);
                                    myPIPoint.UpdateValue(currentTag, AFUpdateOption.Insert);
                                    //    }
                                    //    else
                                    //    {

                                    //        currentTag.Timestamp = date.AddHours(diff);
                                    //        myPIPoint.UpdateValue(currentTag, AFUpdateOption.Replace);
                                    //    }
                                }
                            }
                        }
                    }
                }
                else
                {
                    piTagValues.Add("LABWETHYDRATE_P100", string.IsNullOrWhiteSpace(dt.Rows[0]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[0]["value"].ToString()));
                    piTagValues.Add("LABWETHYDRATE_P200", string.IsNullOrWhiteSpace(dt.Rows[1]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[1]["value"].ToString()));
                    piTagValues.Add("LABWETHYDRATE_P325", string.IsNullOrWhiteSpace(dt.Rows[2]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[2]["value"].ToString()));
                    piTagValues.Add("LABWETHYDRATE_SI", string.IsNullOrWhiteSpace(dt.Rows[3]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[3]["value"].ToString()));
                    piTagValues.Add("LABWETHYDRATE_FE", string.IsNullOrWhiteSpace(dt.Rows[4]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[4]["value"].ToString()));
                    piTagValues.Add("LABWETHYDRATE_NA", string.IsNullOrWhiteSpace(dt.Rows[5]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[5]["value"].ToString()));
                    piTagValues.Add("LABWETHYDRATE_ZN", string.IsNullOrWhiteSpace(dt.Rows[6]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[6]["value"].ToString()));
                    piTagValues.Add("LABWETHYDRATE_MN", string.IsNullOrWhiteSpace(dt.Rows[7]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[7]["value"].ToString()));
                    piTagValues.Add("LABWETHYDRATE_CA", string.IsNullOrWhiteSpace(dt.Rows[8]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[8]["value"].ToString()));
                    piTagValues.Add("LABWETHYDRATE_TI", string.IsNullOrWhiteSpace(dt.Rows[9]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[9]["value"].ToString()));
                    piTagValues.Add("LABWETHYDRATE_CSEDS", string.IsNullOrWhiteSpace(dt.Rows[10]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[10]["value"].ToString()));
                    piTagValues.Add("LABWETHYDRATE_INSOLS", string.IsNullOrWhiteSpace(dt.Rows[11]["value"].ToString()) ? (decimal?)null : Convert.ToDecimal(dt.Rows[11]["value"].ToString()));


                    foreach (KeyValuePair <string, decimal?> entry in piTagValues)
                    {
                        foreach (var item in PiTaglist)
                        {
                            string TagName      = item.Pi_Tags_Test.Substring(0, item.Pi_Tags_Test.Length - 5);
                            string TagName_test = item.Pi_Tags_Test;
                            if (TagName == entry.Key)
                            {
                                // PIPoint myPIPoint = PIPoint.FindPIPoint(myPIServer, TagName_test);
                                PIPoint myPIPoint  = PIPoint.FindPIPoint(myPIServer, TagName); // use this when go to production
                                AFValue currentTag = myPIPoint.CurrentValue();
                                currentTag.Value = Convert.ToString(entry.Value);

                                //string ctv = currentTag.Value.ToString();
                                //DateTime cttimestamp = currentTag.Timestamp;
                                //DateTime d = cttimestamp.Date;


                                currentTag.Timestamp = date.AddHours(diff);

                                if (!string.IsNullOrEmpty(currentTag.Value.ToString()))
                                {
                                    //if (ctv != null && d != date)
                                    //{

                                    myPIPoint.UpdateValue(currentTag, AFUpdateOption.Insert);
                                    //}
                                    //else
                                    //{
                                    //    currentTag.Timestamp = date.AddHours(diff);
                                    //    myPIPoint.UpdateValue(currentTag, AFUpdateOption.Replace);
                                    //}
                                }
                            }
                        }
                    }
                }

                myPIServer.Disconnect();
            }
            catch (Exception ex)
            {
            }

            //*************************End*******************************
        }
Пример #6
0
        public void PiInsert(string area, DataTable dt)
        {
            //**********************Insert records into pi********************************************
            try
            {
                LabEntities       db          = new LabEntities();
                PIServers         myPIServers = new PIServers();
                PIServer          myPIServer  = myPIServers.DefaultPIServer;
                NetworkCredential credential  = new NetworkCredential("labserver", "labserver1");
                myPIServer.Connect(credential);

                var date = Convert.ToDateTime(Session["sec3_date"].ToString());
                int utc  = DateTime.UtcNow.Hour;
                int dt_  = DateTime.Now.Hour;

                bool dst = DSTcheck();
                if (dst)
                {
                    dt_ = dt_ - 1;
                }
                int diff;
                if (utc > dt_)
                {
                    diff = utc - dt_;
                }
                else
                {
                    diff = utc + 24 - dt_;
                }
                if (area == "caustic_clean")
                {
                    var PiTagList = (from v in db.Lab_TagTable
                                     where v.Tag_Name == area
                                     orderby v.Max, v.Min
                                     select v).ToList();
                    DataTable dt_copy = new DataTable();
                    dt_copy = dt.Copy();
                    dt_copy.Columns.RemoveAt(0);
                    dt_copy.Columns.RemoveAt(3);

                    for (int i = 0; i < dt_copy.Rows.Count; i++)
                    {
                        for (int j = 0; j < dt_copy.Columns.Count; j++)
                        {
                            string TagName      = PiTagList[j].Pi_Tags;
                            string TagName_test = PiTagList[j].Pi_Tags_Test;;
                            {
                                //PIPoint myPIPoint = PIPoint.FindPIPoint(myPIServer, TagName_test);
                                PIPoint myPIPoint  = PIPoint.FindPIPoint(myPIServer, TagName); //-- use this when go to production
                                AFValue currentTag = myPIPoint.CurrentValue();
                                currentTag.Timestamp = date;
                                currentTag.Value     = Convert.ToString(dt_copy.Rows[i][j]);



                                string   ctv         = currentTag.Value.ToString();
                                DateTime cttimestamp = currentTag.Timestamp;
                                DateTime d           = cttimestamp.Date;

                                if (!string.IsNullOrEmpty(currentTag.Value.ToString()))
                                {
                                    currentTag.Value     = Convert.ToString(dt_copy.Rows[i][j]);
                                    currentTag.Timestamp = date.AddHours(diff + i);
                                    myPIPoint.UpdateValue(currentTag, AFUpdateOption.Insert);
                                }
                            }
                        }
                    }
                }

                else
                {
                    var PiTagList = (from v in db.Lab_TagTable
                                     where v.Tag_Name == area
                                     orderby v.Max, v.Min
                                     select v).ToList();
                    DataTable dt_copy = new DataTable();
                    dt_copy = dt.Copy();
                    dt_copy.Columns.RemoveAt(0);
                    dt_copy.Columns.RemoveAt(0);
                    {
                        for (int i = 0; i < dt_copy.Rows.Count; i++)
                        {
                            for (int j = 0; j < dt_copy.Columns.Count; j++)
                            {
                                //string TagName = item.Pi_Tags_Test.Substring(0, item.Pi_Tags_Test.Length - 5);
                                //string TagName_test = item.Pi_Tags_Test;
                                //int g;
                                //if (i != 0)
                                //{
                                //    g = (8 * i) + j;
                                //}
                                //else
                                //    g = j;

                                if (area == "st_topsamples" || area == "tt_topsamples")
                                {
                                    TagName      = PiTagList[j].Pi_Tags;
                                    TagName_test = PiTagList[j].Pi_Tags_Test;;
                                }
                                else
                                {
                                    int g;
                                    if (i != 0)
                                    {
                                        g            = (8 * i) + j;
                                        TagName      = PiTagList[g].Pi_Tags;
                                        TagName_test = PiTagList[g].Pi_Tags_Test;
                                    }
                                    else
                                    {
                                        TagName      = PiTagList[j].Pi_Tags;
                                        TagName_test = PiTagList[j].Pi_Tags_Test;
                                    }
                                }
                                {
                                    //PIPoint myPIPoint = PIPoint.FindPIPoint(myPIServer, TagName_test);
                                    PIPoint myPIPoint  = PIPoint.FindPIPoint(myPIServer, TagName); //-- use this when go to production
                                    AFValue currentTag = myPIPoint.CurrentValue();

                                    string s = Convert.ToString(dt_copy.Rows[i][j]);
                                    currentTag.Value     = Convert.ToString(dt_copy.Rows[i][j]);
                                    currentTag.Timestamp = date.AddHours(diff);
                                    if (!string.IsNullOrEmpty(currentTag.Value.ToString()))
                                    {
                                        myPIPoint.UpdateValue(currentTag, AFUpdateOption.Insert);
                                    }
                                }
                            }
                        }
                    }


                    myPIServer.Disconnect();
                }
            }
            catch (Exception exs)
            {
                string filePath = @"C:\Error.txt";

                using (StreamWriter writer = new StreamWriter(filePath, true))
                {
                    writer.WriteLine("Message :" + exs.Message + "<br/>" + Environment.NewLine + "StackTrace :" + exs.StackTrace +
                                     "" + Environment.NewLine + "Date :" + DateTime.Now.ToString());
                    writer.WriteLine(Environment.NewLine + "-----------------------------------------------------------------------------" + Environment.NewLine);
                }
            }
            //*************************End*******************************
        }
Пример #7
0
        private void btnGetTagInfo_Click(object sender, EventArgs e)
        {
            //Enable time-range picker
            btnGetTagData.Enabled = true;
            piStartTime.Enabled = true;
            piEndTime.Enabled = true;

            //Prefill time-range
            piStartTime.Text = "*-12h";
            piEndTime.Text = "*";

            //Clear chart
            piDataChart.Series["dataSeries"].Points.Clear();

            //Clear list of data
            lbPIData.Items.Clear();

            //Connect to server
            PIServers servers = new PIServers();
            PIServer server = servers[piServerPicker1.PIServer.ToString()];

            try
            {
                //Connect to server
                server.Connect();

                //Extract tag name
                string tagname = tbEnterTag.Text;

                //Search for tag
                IList<PIPoint> points = PIPoint.FindPIPoints(server, new List<string>() { tagname });

                if (points.Count == 1)
                {
                    lbTagFound.Text = "PI tag found!";

                    //Obtain pi point.
                    PIPoint point = PIPoint.FindPIPoint(server, tagname);

                    //Extract point attributes
                    IDictionary<string, object> pointAttribs = point.GetAttributes();

                    //Extract tag attributes
                    string tag = pointAttribs["tag"].ToString();
                    string descriptor = pointAttribs["descriptor"].ToString();
                    string engunits = pointAttribs["engunits"].ToString();
                    string pointtype = pointAttribs["pointtype"].ToString();
                    string pointsource = pointAttribs["pointsource"].ToString();
                    string creationdate = pointAttribs["creationdate"].ToString();
                    string creator = pointAttribs["creator"].ToString();
                    string location1 = pointAttribs["location1"].ToString();
                    string location2 = pointAttribs["location2"].ToString();
                    string location3 = pointAttribs["location3"].ToString();
                    string location4 = pointAttribs["location4"].ToString();
                    string location5 = pointAttribs["location5"].ToString();
                    string instrumenttag = pointAttribs["instrumenttag"].ToString();

                    //Set tag attributes in relevant text fields
                    piTag.Text = tag;
                    piDescriptor.Text = descriptor;
                    piEngUnits.Text = engunits;
                    piPointType.Text = pointtype;
                    piPointSource.Text = pointsource;
                    piCreationDate.Text = creationdate;
                    piCreator.Text = creator;
                    piLocation1.Text = location1;
                    piLocation2.Text = location2;
                    piLocation3.Text = location3;
                    piLocation4.Text = location4;
                    piLocation5.Text = location5;
                    piInstrumentTag.Text = instrumenttag;

                    piCurrentValue.Text = point.CurrentValue().ToString();
                    piCurrentTimestamp.Text = point.CurrentValue().Timestamp.ToString();

                    //Get data for the tag
                    btnGetTagData.PerformClick();

                } else if (points.Count > 1)
                {
                    //If more than one tag is found matching that name, skip.
                    //Application is designed to handle only one tag at a time.
                    lbTagFound.Text = "Single tag use only.";
                }
                else
                {
                    //If tag cannot be found display message
                    lbTagFound.Text = "PI tag not found.";
                }
            } catch (OSIsoft.AF.PI.PIAuthenticationException)
            {
                //If there is an authentication error trying to connect to the server, display message
                lbTagFound.Text = "Permissions Error!";
            }

            
            
        }