Exemple #1
0
 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);
     }
 }
Exemple #2
0
        /// <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);
        }
Exemple #3
0
        /// <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);
        }
Exemple #4
0
        /// <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);
            }
        }