public bool Start() { try { bool bRet = InitOPCService(); if (!bRet) { return(false); } if (null == opcSerNodes || null == allOPCItemNodes) { NLogHelper.DefalutError("OPCBUSService.Start error,未配置opc服务"); return(false); } opcSer.Connect(host, guid); syncIOGroup = new SyncIOGroup(opcSer); refreshEventHandler = new RefreshEventHandler(RefreshEvent); refreshGroup = new RefreshGroup(opcSer, 10, refreshEventHandler); foreach (DriveNodeEntity item in allOPCItemNodes) { int iRet = refreshGroup.Add(item.nodeName); if (HRESULTS.Succeeded(iRet)) { Console.WriteLine(" true " + iRet); } } return(true); } catch (Exception ex) { NLogHelper.ExceptionInfo(ex, "Start StartOPCService exception: {0}", ex.Message); return(false); } }
/// <summary> /// 启动函数 /// </summary> /// <returns></returns> public IResult init() { OPCItemState rslt; OPCDATASOURCE dsrc = OPCDATASOURCE.OPC_DS_DEVICE; ILE.LEResult res = new LEResult(); ///将所有数据点放进RefreshGroup容器 foreach (ILE.IDataPoint po in this.ItemPoints) { if (po.business_code == "01" | po.business_code == "02") //如果是采集完成数与异常数,要把初始值拿到用于扣减 { int j = mySyncIOGroup.Read(dsrc, po.Item_name, out rslt); po.InitVal = rslt.DataValue.ToString(); } int i = myRefreshGroup.Add(po.Item_name); if (!HRESULTS.Succeeded(i)) { res.Result = false; res.ExtMessage = "新增监测点失败"; this.server.Disconnect(); this.server = null; return(res); } } //Action action = new Action(Monitor); //action.BeginInvoke(null, null); thread.Start(); res.Result = true; return(res); }
/// <summary> /// 添加状态点到ItemPoints /// </summary> /// <param name="point"></param> public IResult AddItem(ILE.IDataPoint point) { //此处把配置文件中的数据点名拆出来,放进模型 string[] pms = point.parameter.Split(','); point.Item_name = pms[2]; ILE.LEResult res = new LEResult(); try { HaiGrang.Package.OpcNetApiChs.DaNet.RefreshEventHandler reh = new HaiGrang.Package.OpcNetApiChs.DaNet.RefreshEventHandler(this.DataChangeHandler); myRefreshGroup = new RefreshGroup(server, 500, reh); mySyncIOGroup = new SyncIOGroup(this.server); int i = myRefreshGroup.Add(point.Item_name); if (!HRESULTS.Succeeded(i)) { res.Result = false; res.ExtMessage = "新增监测点[" + point.dataPoint_name + "]失败"; this.server.Disconnect(); this.server = null; return(res); } myRefreshGroup.Remove(point.Item_name); //如果成功添加了,说明数据点可用,此时要拿出来,不能直接启动数据点。 this.ItemPoints.Add(point); res.Result = true; } catch (Exception exc) { res.Result = false; res.ExtMessage = "新增监测点失败"; } return(res); }
/// <summary> /// Add given item to OPC items group /// </summary> /// <param name="itemName"></param> private void AddItemToGroup(string itemName) { try { int rtc; rtc = AsyncRefrGroup.Add(itemName); if (HRESULTS.Failed(rtc)) { DBLogging.InsertLogs("Exception: AddItemToGroup", false, "ReadWriteGroup.GetErrorString(rtc) " + itemName, _connStr); } } catch (Exception ex) { DBLogging.InsertLogs("Exception: AddItemToGroup", false, "ReadWriteGroup.GetErrorString(rtc) " + ex.Message, _connStr); } }