标签:
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; } }
标签:
原文地址:http://www.cnblogs.com/liqiu112/p/4465895.html