最新综合精品亚洲网址,制服丝袜p,区,一本色道av久久精品+网站,欧美13一14sexvideos处,中文字幕av高清人妻

用戶中心
· 企業(yè)空間 首頁 | 資訊 | 技術(shù) | 產(chǎn)品 | 企業(yè) | 直播 | 專題 | 智能制造 | 論壇| 在線研討會(huì)
北京力控元通科技有限公司
企業(yè)空間 > 案例應(yīng)用 > 正文
  • VC++開發(fā)基于LNS的LonWorks網(wǎng)絡(luò)數(shù)據(jù)監(jiān)控接口
  • 發(fā)布時(shí)間:2008/11/23 7:51:57   修改時(shí)間:2008/11/22 10:14:39 瀏覽次數(shù):3015
  •   
      The data monitor and control interface development based on LNS LonWorks network by Visual C++
      北京三維力控科技有限公司  林威漢
      摘要:本文介紹了用Visual C++ 6.0開發(fā)工具,在LNS環(huán)境下,開發(fā)LonWorks網(wǎng)絡(luò)數(shù)據(jù)監(jiān)控接口的方法,舉例闡述了軟件實(shí)現(xiàn)過程。對于相關(guān)系統(tǒng)的設(shè)計(jì)、開發(fā)具有一定的參考價(jià)值。
      關(guān)鍵詞:LNS、LonkWorks網(wǎng)絡(luò)數(shù)據(jù)監(jiān)控接口
      Abstract:The data monitor and control interface development based on LNS LonWorks network by Visual C++ 6.0 is introduced .And sample programming code is shown. This article is referenced by people who are developing LNS system.
      Key words:LNS、LonWorks network data monitor and control interface
      1  引言
      近年來,現(xiàn)場總線技術(shù)迅猛發(fā)展,取代傳統(tǒng)的集中式控制系統(tǒng)已成必然。LonWorks技術(shù)是美國ECHELON公司在1991年推出的一種控制局域網(wǎng)絡(luò),它以其優(yōu)秀的分布處理能力、開放性、互操作性、多媒介適應(yīng)能力以及多網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)等特性適應(yīng)了未來發(fā)展對測控網(wǎng)絡(luò)的要求,成為眾多總線中的佼佼者。與其它現(xiàn)場總線相比,它具有組網(wǎng)方便,通訊速率快,不局限于通訊介質(zhì)等優(yōu)點(diǎn)。目前其在國內(nèi)的應(yīng)用非常廣泛,工程實(shí)例遍及樓宇控制,智能小區(qū),工廠,礦井監(jiān)控等場合,是一種具有良好發(fā)展前景的總線。
      2  LNS開發(fā)接口與開發(fā)工具
      LNS(LonWorks Network Services)是ECHELON提供的一個(gè)專為LonWorks網(wǎng)絡(luò)服務(wù)的網(wǎng)絡(luò)操作系統(tǒng)。LNS封裝了對LonWorks網(wǎng)絡(luò)的各種操作,如:網(wǎng)絡(luò)安裝、網(wǎng)絡(luò)維護(hù)、變量連接等。在Windows環(huán)境下,LNS提供了基于ActiveX和COM組件方式的開發(fā)接口。這兩種方式在功能和性能上都沒有什么差異,而ActiveX使用起來更為簡便,一般也不需要開發(fā) 人員了解很多OLE方面的知識(shí),因而更易于被接受。本文所列舉的實(shí)例采用的就是ActiveX方式。
      采用ActiveX方式開發(fā)LonWorks網(wǎng)絡(luò)通信接口可選擇的開發(fā)工具十分豐富。Visual C++ 6.0目前仍然是開發(fā)自動(dòng)化軟件的主流工具之一。當(dāng)在VC環(huán)境下用ActiveX接口開發(fā)LonWorks網(wǎng)絡(luò)通信接口程序時(shí),在實(shí)現(xiàn)過程和方法上與其它語言差別不大。只是在一些與VC語言特性相關(guān)的環(huán)節(jié)上,如果處理不當(dāng),就會(huì)影響接口程序的健壯性、穩(wěn)定性。 
         LNS由LNS Server、LNS Object Server COM Component、Data Server和Network Interface幾個(gè)主要部分    組  成,提供了從網(wǎng)絡(luò)變量監(jiān)測到網(wǎng)絡(luò)管理和維護(hù)等完整的功能接口。在開發(fā)LonWorks網(wǎng)絡(luò)數(shù)據(jù)監(jiān)控接口程序時(shí),涉及的只  是  其  中的數(shù)據(jù)監(jiān)控部分的功能。
      3  LNS實(shí)現(xiàn)監(jiān)控的過程
      LNS提供了兩種網(wǎng)絡(luò)監(jiān)控方式,一種是監(jiān)控集(Monitor set)方式,一種是單點(diǎn)(Single point)方式。兩種方式都是以監(jiān)控點(diǎn)(Monitor points)為基本 單位。一個(gè)監(jiān)控點(diǎn)對應(yīng)一個(gè)網(wǎng)絡(luò)變量或應(yīng)用消息。
      監(jiān)控集建立后就被保存在Data Sever中,即使應(yīng)用程序關(guān)閉也仍然存在。單點(diǎn)方式每次都需要應(yīng)用程序重新創(chuàng)建,退出時(shí)釋放。監(jiān)控集方式適用于監(jiān)控任務(wù)比較繁重的場合,單點(diǎn)方式適合監(jiān)控任務(wù)較輕,點(diǎn)數(shù)較多的情況。
      無論是監(jiān)控集或是單點(diǎn)方式,都要使用監(jiān)控點(diǎn)。監(jiān)控點(diǎn)有以下幾種監(jiān)控方式:顯式讀寫、隱式綁定、查詢、顯示綁定。
      對于顯式讀寫方式,接口程序可以直接讀寫監(jiān)控點(diǎn)的數(shù)值。在隱式綁定方式下,可以將一個(gè)監(jiān)控點(diǎn)與一個(gè)節(jié)點(diǎn)的網(wǎng)絡(luò)變量綁定,當(dāng)網(wǎng)絡(luò)變量變化時(shí),會(huì)用事件NvMonitorUpdateEvent通知接口程序,接口程序根據(jù)消息參數(shù)可以取得更新的數(shù)據(jù)。當(dāng)使用查詢方式時(shí),每隔一個(gè)周期就觸發(fā)一次NvMonitorUpdateEvent事件。當(dāng)使用顯式綁定方式時(shí),對應(yīng)設(shè)備結(jié)點(diǎn)的一個(gè)或多個(gè)網(wǎng)絡(luò)變量,要在上位機(jī)上創(chuàng)建并綁定一個(gè)網(wǎng)絡(luò)變量,而這個(gè)網(wǎng)絡(luò)變量又可以用其它三種方式進(jìn)行監(jiān)控。這種方式主要為了實(shí)現(xiàn)用一個(gè)監(jiān)控點(diǎn)同時(shí)監(jiān)測多個(gè)結(jié)點(diǎn)網(wǎng)絡(luò)變量。
      這幾種方式分別適用于不同的場合。查詢方式適用于監(jiān)控任務(wù)繁重,但對數(shù)據(jù)采集的實(shí)時(shí)性要求不高的場合。隱式綁定適用于監(jiān)控任務(wù)較輕,但數(shù)據(jù)變化要求實(shí)時(shí)處理的場合。當(dāng)現(xiàn)場數(shù)據(jù)變化頻繁時(shí),用顯式讀寫或查詢方式會(huì)導(dǎo)致應(yīng)用程序的運(yùn)行速度緩慢。
      本文列舉的實(shí)例采用的是監(jiān)控集方式,監(jiān)控點(diǎn)采用的是隱式綁定方式以獲得較好的實(shí)時(shí)性和較高的效率。
      4  接口程序的設(shè)計(jì)與實(shí)現(xiàn)
      在安裝了Echelon的LNS Application Developer's Kit開發(fā)包之后,就可以使用開發(fā)包中提供的lnsobjectserver控件了。最簡單的方法是在一個(gè)對話框資源上插入這個(gè)控件,然后用這個(gè)對話框創(chuàng)建一個(gè)類,將創(chuàng)建監(jiān)測集、獲取監(jiān)控點(diǎn)數(shù)據(jù)等各種操作全都封裝在這個(gè)類里,以供接口程序的其它模塊調(diào)用。本文實(shí)例中創(chuàng)建了一個(gè)名為CObjServerDlg的類。這個(gè)類提供實(shí)現(xiàn)以下幾個(gè)最主要的接口。
      1)、對LNS對象服務(wù)器進(jìn)行初始化的接口。
      在這個(gè)接口時(shí)里,具體實(shí)現(xiàn)的內(nèi)容包括:
      設(shè)置對象服務(wù)的用戶模式(單用戶或多用戶);
      設(shè)置遠(yuǎn)程或本地方式;
      打開服務(wù)器;
      設(shè)置網(wǎng)絡(luò)接口,打開網(wǎng)絡(luò);
      設(shè)置系統(tǒng);
      設(shè)置網(wǎng)絡(luò)服務(wù)設(shè)備;
      打開系統(tǒng);
      設(shè)置通道;
      得到監(jiān)控集對象;
      設(shè)置監(jiān)控集的屬性;
      獲得包含要監(jiān)控的網(wǎng)絡(luò)變量的設(shè)備對象;
      將要監(jiān)控的網(wǎng)絡(luò)變量添加到監(jiān)控點(diǎn)中;
      打開監(jiān)控集。
      調(diào)用lnsobjectserver控件方法可以逐步實(shí)現(xiàn)上述初始化過程。需要注意的是VC對異常情況的處理,不進(jìn)行異?;蛱幚聿划?dāng)會(huì)導(dǎo)致接口程序出現(xiàn)各種莫名錯(cuò)誤。下面舉例說明:
      void CObjServerDlg::InitObjServer()
      {
      m_ObjSvr.SetRemoteFlag(FALSE);
      m_ObjSvr.SetSingleUserMode(FALSE);
      m_ObjSvr.Open();
      if (!m_ObjSvr.GetIsOpen())
      {
      ShowEvent("創(chuàng)建LNS Server失敗!");
      return;
      }
      //設(shè)置網(wǎng)絡(luò)
      LcaNetworks Networks(m_ObjSvr.GetNetworks());
      try
      {
      //在獲取網(wǎng)絡(luò)對象時(shí)要捕獲異常
      m_ActiveNetwork = Networks.GetItem(COleVariant(m_csNetworkName));
      ASSERT (m_ActiveNetwork.m_lpDispatch != NULL);
      }
      catch (COleDispatchException *pE)
      {
      //對異常的正確處理
      if (LCA_ERR_RANGE_START+LCA_OBJECT_NOT_FOUND ==
      pE->m_scError + OLE2LNS_CONVERSION)
      {
      CString csEvent;
      csEvent.Format("網(wǎng)絡(luò)%s不存在!", m_csNetworkName);
      ShowEvent(cs);
      }
      else
      ShowEvent(pE->m_strDescription);
      pE->Delete();
      return;
      }
      ......
      //其它部分代碼
      }
      2)、處理NvMonitorUpdateEvent事件消息。當(dāng)網(wǎng)絡(luò)變量變化時(shí),LNS會(huì)發(fā)送NvMonitorUpdateEvent消息通知接口程序。在這個(gè)消息函數(shù)中會(huì)將數(shù)值變化的監(jiān)控點(diǎn)、數(shù)據(jù)點(diǎn)、源地址以參數(shù)的形式傳遞過來。通過這些參數(shù)可以獲取變化數(shù)據(jù)的原始值和格式化值。這里需要注意的是如果LNS用的是VT_BSTR格式傳值,在獲取變化的數(shù)值后,必須正常釋放資源。否則接口程序就會(huì)持續(xù)不斷地占用系統(tǒng)內(nèi)存,直至內(nèi)存耗盡。下面舉例說明:
      //  將格式化的變化值賦給一個(gè)VARIANT型變量
      VARIANT NvFmtValue = UpdateDataPoint.GetFormattedValue(); 
      if (NvFmtValue.vt == VT_BSTR)
      {
      CString csNvFmtValue = NvFmtValue.bstrVal;
      ShowVaule(csNvFmtValue);
      SysFreeString(NvFmtValue.bstrVal); // 必須正確釋放內(nèi)存資源
      }
      3)、實(shí)現(xiàn)對監(jiān)控點(diǎn)進(jìn)行寫操作的接口。
      寫操作和讀操作的過程一樣,也涉及使用原始數(shù)值格式和格式化數(shù)值格式的選擇。
      按照格式化數(shù)值格式進(jìn)行寫入時(shí)過程比較簡單,示例代碼如下:
      LcaDataPoint DataPoint = NvMonitorPoint.GetDataPoint();//得到要寫入的數(shù)據(jù)點(diǎn)對象
      ASSERT(DataPoint.m_lpDispatch != NULL);
      DataPoint.SetFormattedValue(COleVariant(csWriteData));
      //csWriteData是一個(gè)CString類型的變量,代表寫入的數(shù)值
      如果按照原始格式進(jìn)行寫操作,要注意的是LNS要求使用一種"VT_ARRAY | VT_UI1"型的VARIANT變量作為寫入值,示例代碼如下:
      LcaDataPoint DataPoint = NvMonitorPoint.GetDataPoint();//得到要寫入的數(shù)據(jù)點(diǎn)對象
      ASSERT(DataPoint.m_lpDispatch != NULL);
      SAFEARRAY SafeArray;
      SafeArray.cDims = 1;
      SafeArray.fFeatures = 128;
      SafeArray.cbElements = 1;
      SafeArray.cLocks = 0;
      SafeArray.rgsabound[0].cElements = nWrtDataLen;
      SafeArray.rgsabound[0].lLbound = 1;
      SafeArray.pvData = pszWriteData;//表示寫入值的字符串指針
      VARIANT NvRawValue;
      NvRawValue.vt = VT_ARRAY | VT_UI1;
      NvRawValue.parray = &SafeArray;
      DataPoint.SetRawValue(NvRawValue);
      if(!DataPoint.GetAutoWrite())
      DataPoint.Write();
      5  結(jié)束語
      本文介紹了在LNS環(huán)境下,開發(fā)LonWorks網(wǎng)絡(luò)數(shù)據(jù)監(jiān)控接口的方法。并結(jié)合VC編程語言的特點(diǎn),著重說明在一些關(guān)鍵環(huán)節(jié)上的處理方法??蔀槠渌O(shè)計(jì)、開發(fā)相關(guān)系統(tǒng)的開發(fā)人員提供參考。
      參考文獻(xiàn)
      [1]  ECHELON公司。LNS for Windows Programmer's Guide,2000。
      [2]  雷剛,呂國強(qiáng)。基于LNS和COM的LonWorks網(wǎng)絡(luò)監(jiān)控軟件開發(fā)
  • 企業(yè)介紹
北京力控元通科技有限公司(簡稱力控科技)是工業(yè)軟件產(chǎn)品開發(fā)商及解決方案提供商。聚焦中國工業(yè)4.0、智慧市政等領(lǐng)域的智能管控產(chǎn)品開發(fā)與行業(yè)解決方案。豐富的產(chǎn)品線融入到工業(yè)互聯(lián)網(wǎng)體系的各個(gè)環(huán)節(jié)。提供從自動(dòng)化、數(shù)字化到智能化的多層次的…  更多>>
  • 聯(lián)系方式

北京力控元通科技有限公司

聯(lián)系人:力控科技

地址:北京市海淀區(qū)天秀路10號(hào)中國農(nóng)大國際創(chuàng)業(yè)園1號(hào)樓四層436室。

郵編:100193

電話:13371688021

傳真:010-62828877

公司網(wǎng)址:http://www.sunwayland.com/

  • 該空間手機(jī)版

掃描此二維碼即可訪問該空間手機(jī)版

  • 在線反饋
1.我有以下需求:



2.詳細(xì)的需求:
姓名:
單位:
電話:
郵件:
您還沒有登錄,請登陸,
如果您還沒有注冊,點(diǎn)擊這里注冊.
  • 網(wǎng)友反饋
  • 在2024/11/15 13:54:00留言
  • 留言類型:我想得到貴公司產(chǎn)品的價(jià)格信息,我讓貴公司產(chǎn)品銷售人員聯(lián)系我,
  • 詳細(xì)留言:組態(tài)軟件
  • 金滔 在2024/10/24 10:04:00留言
  • 留言類型:我讓貴公司產(chǎn)品銷售人員聯(lián)系我,
  • 詳細(xì)留言:庫建設(shè)項(xiàng)目
  • 王剛 在2023/12/11 15:46:00留言
  • 留言類型:我讓貴公司產(chǎn)品銷售人員聯(lián)系我,
  • 詳細(xì)留言:高級(jí)報(bào)警管理系統(tǒng)
  • 史勇斌 在2023/5/29 11:03:00留言
  • 留言類型:我想得到貴公司產(chǎn)品的價(jià)格信息,我讓貴公司產(chǎn)品銷售人員聯(lián)系我,
  • 詳細(xì)留言:軟件需求詢價(jià)
  • 王攀攀 在2023/4/18 9:28:00留言
  • 留言類型:貴公司產(chǎn)品銷售人員聯(lián)系我,
  • 詳細(xì)留言:部分省中石化油庫項(xiàng)目數(shù)字化擴(kuò)展
更多請進(jìn)入空間管理中心查看
關(guān)于我們 | 網(wǎng)站地圖 | 聯(lián)系我們
© 2003-2018    經(jīng)營許可編號(hào):京ICP證120335號(hào)
公安機(jī)關(guān)備案號(hào):110102002318  服務(wù)熱線:010-82053688
我要反饋