码迷,mamicode.com
首页 > Windows程序 > 详细

C# OPC操作

时间:2015-04-29 14:51:55      阅读:283      评论:0      收藏:0      [点我收藏+]

标签:

OPCAutomation.OPCServer clsOPCServer = new OPCAutomation.OPCServer();
OPCGroup clsOPCGroup;
OPCGroups clsOPCGroups;
OPCItem clsOPCItem;
OPCItem[] AllOPCItem;


Boolean bolConnect()
        {
            //return true;
            try
            {
                if (clsOPCGroup == null)
                {
                    clsOPCServer = new OPCServer();
                    t.Elapsed += new System.Timers.ElapsedEventHandler(theout);  //到达时间的时候执行事件;
                    t.AutoReset = false;  //设置是执行一次(false)还是一直执行(true);   
                    t.Enabled = true;  //是否执行System.Timers.Timer.Elapsed事件;   
                    t.Start();

                    clsOPCServer.Connect(strOPCServer, strOPCServerIP);
                    if (clsOPCServer.ServerState == (int)OPCServerState.OPCRunning)
                    {
                        t.Stop();
                        t.Dispose();
                        clsLoad.WriteLog("OPC服务连接成功");
                    }
                    clsOPCGroups = clsOPCServer.OPCGroups;
                    clsOPCGroup = clsOPCGroups.Add(strOPCGroup);
                }
                return true;
            }
            catch (Exception ex)
            {
                clsLoad.WriteLog("OPC服务连接错误" + "主机IP" + strOPCServerIP + "服务名:" + strOPCServer + "访问组名:" + strOPCGroup + "明细" + ex.ToString());
                return false;
            }
        }

        Boolean bolAddItem()
        {
            string sql;

            try
            {
                List<string> items = new List<string>();
                
                foreach (string st in station)
                {
                    sql = "select * from Land where ST=‘" + st + "";
                    List<string> columns = clsSql.GetColumnStrings(sql, "off");
                    for (int m = 3; m < columns.Count; m++)
                    {
                        items.Add(columns[m]);
                    }
                }
                AllOPCItem = new OPCItem[items.Count];
                for (int m = 0; m < items.Count; m++)
                {
                    AllOPCItem[m]=clsOPCGroup.OPCItems.AddItem(items[m], m);
                    hw.Add(items[m],m);
                }
                return true;
            }
            catch (Exception ex)
            {
                clsLoad.WriteLog("OPC服务添加错误" + ex.ToString());
                return false;
            }
        }

        object ReadOPC(string O_Adrs) //字节型变量
        {
            object objValue = "";
            object objQuality;
            object objTimeStamp;
            int ct;


            try
            {
                ct = (int)hw[O_Adrs];
                AllOPCItem[ct].Read(Convert.ToInt16(OPCAutomation.OPCDataSource.OPCDevice), out objValue, out objQuality, out objTimeStamp);
                return objValue;
            }
            catch (Exception ex)
            {
                //MessageBox.Show("读取OPC 地址 " + O_Adrs + "错误");
                clsLoad.err = "读取OPC 地址 " + O_Adrs + "错误";
                clsLoad.WriteLog("OPC读取状态" + O_Adrs + "错误" + ex.ToString());
                return 0;
            }
        }

        bool WriteOPC(object intStatus, string O_Adrs) //
        {
            int ct;
            try
            {
                ct = (int)hw[O_Adrs];
                AllOPCItem[ct].Write(intStatus);
                return true;
            }
            catch (Exception ex)
            {
                clsLoad.err = "写OPC 地址 " + O_Adrs + "错误";
                clsLoad.WriteLog("写OPC 地址状态" + O_Adrs + "错误" + ex.ToString());
                return false;
            }
        }

 

C# OPC操作

标签:

原文地址:http://www.cnblogs.com/liqiu112/p/4465895.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!