中文字幕第二一区_久久久久在线视频_精品国产自在现线看久久_亚洲精品一区二区三区电影网

產品分類

當前位置: 首頁 >

類型分類:
科普知識
數據分類:

基于LNS的LonWorks網絡數據監控接口開發

發布日期:2022-04-18 點擊率:105

  • 關鍵詞: VC++ LonWorks
  • 摘要:本文介紹了用Visual C++ 6.0開發工具,在LNS環境下,開發LonWorks網絡數據監控接口的方法,舉例闡述了軟件實現過程。對于相關系統的設計、開發具有一定的參考價值。

1  引言
    近年來,現場總線技術迅猛發展,取代傳統的集中式控制系統已成必然。LonWorks技術是美國ECHELON公司在1991年推出的一種控制局域網絡,它以其優秀的分布處理能力、開放性、互操作性、多媒介適應能力以及多網絡拓撲結構等特性適應了未來發展對測控網絡的要求,成為眾多總線中的佼佼者。與其它現場總線相比,它具有組網方便,通訊速率快,不局限于通訊介質等優點。目前其在國內的應用非常廣泛,工程實例遍及樓宇控制,智能小區,工廠,礦井監控等場合,是一種具有良好發展前景的總線。
2  LNS開發接口與開發工具
    LNS(LonWorks Network Services)是ECHELON提供的一個專為LonWorks網絡服務的網絡操作系統。LNS封裝了對LonWorks網絡的各種操作,如:網絡安裝、網絡維護、變量連接等。在Windows環境下,LNS提供了基于ActiveX和COM組件方式的開發接口。這兩種方式在功能和性能上都沒有什么差異,而ActiveX使用起來更為簡便,一般也不需要開發人員了解很多OLE方面的知識,因而更易于被接受。本文所列舉的實例采用的就是ActiveX方式。
    采用ActiveX方式開發LonWorks網絡通信接口可選擇的開發工具十分豐富。Visual C++ 6.0目前仍然是開發自動化軟件的主流工具之一。當在VC環境下用ActiveX接口開發LonWorks網絡通信接口程序時,在實現過程和方法上與其它語言差別不大。只是在一些與VC語言特性相關的環節上,如果處理不當,就會影響接口程序的健壯性、穩定性。 
    LNS由LNS Server、LNS Object Server COM Component、Data Server和Network Interface幾個主要部分組成,提供了從網絡變量監測到網絡管理和維護等完整的功能接口。在開發LonWorks網絡數據監控接口程序時,涉及的只是其中的數據監控部分的功能。
3  LNS實現監控的過程
   LNS提供了兩種網絡監控方式,一種是監控集(Monitor set)方式,一種是單點(Single point)方式。兩種方式都是以監控點(Monitor points)為基本單位。一個監控點對應一個網絡變量或應用消息。
    監控集建立后就被保存在Data Sever中,即使應用程序關閉也仍然存在。單點方式每次都需要應用程序重新創建,退出時釋放。監控集方式適用于監控任務比較繁重的場合,單點方式適合監控任務較輕,點數較多的情況。
   無論是監控集或是單點方式,都要使用監控點。監控點有以下幾種監控方式:顯式讀寫、隱式綁定、查詢、顯示綁定。
   對于顯式讀寫方式,接口程序可以直接讀寫監控點的數值。在隱式綁定方式下,可以將一個監控點與一個節點的網絡變量綁定,當網絡變量變化時,會用事件NvMonitorUpdateEvent通知接口程序,接口程序根據消息參數可以取得更新的數據。當使用查詢方式時,每隔一個周期就觸發一次NvMonitorUpdateEvent事件。當使用顯式綁定方式時,對應設備結點的一個或多個網絡變量,要在上位機上創建并綁定一個網絡變量,而這個網絡變量又可以用其它三種方式進行監控。這種方式主要為了實現用一個監控點同時監測多個結點網絡變量。
   這幾種方式分別適用于不同的場合。查詢方式適用于監控任務繁重,但對數據采集的實時性要求不高的場合。隱式綁定適用于監控任務較輕,但數據變化要求實時處理的場合。當現場數據變化頻繁時,用顯式讀寫或查詢方式會導致應用程序的運行速度緩慢。
    本文列舉的實例采用的是監控集方式,監控點采用的是隱式綁定方式以獲得較好的實時性和較高的效率。
4  接口程序的設計與實現
    在安裝了Echelon的LNS Application Developers Kit開發包之后,就可以使用開發包中提供的lnsobjectserver控件了。最簡單的方法是在一個對話框資源上插入這個控件,然后用這個對話框創建一個類,將創建監測集、獲取監控點數據等各種操作全都封裝在這個類里,以供接口程序的其它模塊調用。本文實例中創建了一個名為CObjServerDlg的類。這個類提供實現以下幾個最主要的接口。
1)、對LNS對象服務器進行初始化的接口。
在這個接口時里,具體實現的內容包括:
設置對象服務的用戶模式(單用戶或多用戶);
設置遠程或本地方式;
打開服務器;
設置網絡接口,打開網絡;
設置系統;
設置網絡服務設備;
打開系統;
設置通道;
得到監控集對象;
設置監控集的屬性;
獲得包含要監控的網絡變量的設備對象;
將要監控的網絡變量添加到監控點中;
打開監控集。
    調用lnsobjectserver控件方法可以逐步實現上述初始化過程。需要注意的是VC對異常情況的處理,不進行異常或處理不當會導致接口程序出現各種莫名錯誤。下面舉例說明:
void CObjServerDlg::InitObjServer()
{
        m_ObjSvr.SetRemoteFlag(FALSE);
        m_ObjSvr.SetSingleUserMode(FALSE);
        m_ObjSvr.Open();
        if (!m_ObjSvr.GetIsOpen())
        {
                ShowEvent("創建LNS Server失敗!");
                return;
        }
        //設置網絡
        LcaNetworks Networks(m_ObjSvr.GetNetworks());
    try
        {
                //在獲取網絡對象時要捕獲異常
                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("網絡%s不存在!", m_csNetworkName);
                        ShowEvent(cs);
                }
                else
                        ShowEvent(pE->m_strDescription);
                pE->Delete();
                return;
        }
        ......
        //其它部分代碼
}
2)、處理NvMonitorUpdateEvent事件消息。當網絡變量變化時,LNS會發送NvMonitorUpdateEvent消息通知接口程序。在這個消息函數中會將數值變化的監控點、數據點、源地址以參數的形式傳遞過來。通過這些參數可以獲取變化數據的原始值和格式化值。這里需要注意的是如果LNS用的是VT_BSTR格式傳值,在獲取變化的數值后,必須正常釋放資源。否則接口程序就會持續不斷地占用系統內存,直至內存耗盡。下面舉例說明:
//  將格式化的變化值賦給一個VARIANT型變量
VARIANT NvFmtValue = UpdateDataPoint.GetFormattedValue();       
if (NvFmtValue.vt == VT_BSTR)
{
                CString csNvFmtValue = NvFmtValue.bstrVal;
                ShowVaule(csNvFmtValue);
                SysFreeString(NvFmtValue.bstrVal);        // 必須正確釋放內存資源
}
3)、實現對監控點進行寫操作的接口。
    寫操作和讀操作的過程一樣,也涉及使用原始數值格式和格式化數值格式的選擇。
按照格式化數值格式進行寫入時過程比較簡單,示例代碼如下:
LcaDataPoint DataPoint = NvMonitorPoint.GetDataPoint();//得到要寫入的數據點對象
ASSERT(DataPoint.m_lpDispatch != NULL);
DataPoint.SetFormattedValue(COleVariant(csWriteData));
                //csWriteData是一個CString類型的變量,代表寫入的數值
    如果按照原始格式進行寫操作,要注意的是LNS要求使用一種“VT_ARRAY | VT_UI1”型的VARIANT變量作為寫入值,示例代碼如下:
LcaDataPoint DataPoint = NvMonitorPoint.GetDataPoint();//得到要寫入的數據點對象
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  結束語
    本文介紹了在LNS環境下,開發LonWorks網絡數據監控接口的方法。并結合VC編程語言的特點,著重說明在一些關鍵環節上的處理方法。可為其他設計、開發相關系統的開發人員提供參考。
  
參考文獻
[1]  ECHELON公司。LNS for Windows Programmers Guide,2000。
[2]  雷剛,呂國強。基于LNS和COM的LonWorks網絡監控軟件開發
  



下一篇: PLC、DCS、FCS三大控

上一篇: 索爾維全系列Solef?PV

推薦產品

更多
中文字幕第二一区_久久久久在线视频_精品国产自在现线看久久_亚洲精品一区二区三区电影网

      9000px;">

          欧美一区二区三区视频在线观看 | 亚洲福利视频一区| 久久久久久久久久美女| 7777精品伊人久久久大香线蕉完整版 | 国产精品理论在线观看| 亚洲老司机在线| 一区二区三区在线观看动漫| 国产精品免费观看视频| 中文字幕一区二区不卡| 亚洲色图在线播放| 综合色天天鬼久久鬼色| 亚洲五月六月丁香激情| 日韩中文字幕1| 国产成人午夜视频| 色老汉av一区二区三区| 欧美日韩精品二区第二页| 在线精品亚洲一区二区不卡| 日韩一区二区在线观看| 精品久久久久久无| 亚洲在线中文字幕| 国产精品一区久久久久| 成人av片在线观看| 日韩欧美在线观看一区二区三区| 久久伊人蜜桃av一区二区| 亚洲人成网站影音先锋播放| 日韩精品国产精品| 成人免费看的视频| 欧美精品一二三四| 亚洲欧美日韩国产另类专区| 日日夜夜免费精品| 日本韩国欧美在线| 一区二区三区不卡在线观看| 精品一区二区久久| 日韩一区二区影院| 国产一区二区三区四| 日韩欧美的一区二区| 一区二区在线观看免费| 成人黄色av网站在线| 欧美一级欧美三级在线观看| 亚洲色图一区二区| 国产成人日日夜夜| 日韩欧美国产综合| 裸体歌舞表演一区二区| 欧美老人xxxx18| 青青草国产精品亚洲专区无| 久久99精品国产麻豆婷婷 | 国产精品白丝jk黑袜喷水| 欧美日韩成人一区二区| 日韩电影免费在线看| 欧美tickling网站挠脚心| 久久狠狠亚洲综合| 欧美一区三区二区| 久久66热re国产| 日本一二三四高清不卡| 91视频xxxx| 激情久久久久久久久久久久久久久久| 91亚洲精品久久久蜜桃| 亚洲免费毛片网站| 日韩视频在线你懂得| 成人亚洲一区二区一| 亚洲国产精品久久一线不卡| 久久久精品免费网站| www.欧美色图| 一级女性全黄久久生活片免费| 粉嫩在线一区二区三区视频| 亚洲一卡二卡三卡四卡| 精品国产一区二区精华| 色婷婷久久99综合精品jk白丝| 蜜臀精品久久久久久蜜臀| 亚洲一区二区三区美女| 国产偷国产偷亚洲高清人白洁| 欧洲一区在线电影| 国产露脸91国语对白| 免费观看日韩av| 麻豆精品视频在线观看视频| 亚洲一级在线观看| 精品国产免费人成电影在线观看四季 | 色网站国产精品| 国产成人午夜精品5599| 亚洲成人资源在线| 亚洲另类中文字| 亚洲成av人片在www色猫咪| 国产精品嫩草影院com| 中文字幕 久热精品 视频在线 | 久久精品国产在热久久| 欧美另类变人与禽xxxxx| 成人av在线资源| 狠狠色狠狠色合久久伊人| 免费久久99精品国产| 久久er精品视频| 久久99热这里只有精品| 亚洲一区二区三区四区不卡| 亚洲国产精品久久人人爱| 亚洲美女偷拍久久| 久久精品视频在线免费观看 | 国产成人综合自拍| 国产精品一区二区在线观看网站| 福利一区在线观看| av日韩在线网站| 成人黄页在线观看| eeuss影院一区二区三区| 播五月开心婷婷综合| www.欧美日韩| 欧美在线观看禁18| 欧美成人高清电影在线| 精品成人一区二区| 久久精品视频一区| 日韩在线卡一卡二| 国产风韵犹存在线视精品| 99国产精品久久| 久久久久久综合| 亚洲视频狠狠干| 国产很黄免费观看久久| 91精品免费在线| 国产精品久久久久久久久晋中 | 成人永久免费视频| 欧美一区二区三区免费视频| 亚洲蜜臀av乱码久久精品蜜桃| 日韩电影在线一区二区| 91同城在线观看| 日韩毛片视频在线看| 盗摄精品av一区二区三区| 国产日产精品1区| 韩国精品主播一区二区在线观看| 精品日韩在线观看| 久久99国产精品尤物| 久久久久国产免费免费| 国产精品一区2区| 7777女厕盗摄久久久| 美女精品一区二区| 久久精品男人的天堂| 国产精品影视天天线| 国产精品电影院| 色婷婷国产精品综合在线观看| 日本伊人精品一区二区三区观看方式| 欧美va在线播放| 欧美图区在线视频| 91精品一区二区三区久久久久久 | 不卡视频在线看| 国产98色在线|日韩| 国产九九视频一区二区三区| 国内精品久久久久影院一蜜桃| 国产欧美日韩另类一区| 欧美日韩精品电影| 国产精品123区| 亚洲自拍偷拍欧美| 正在播放一区二区| 91激情在线视频| 日本成人在线视频网站| 91麻豆精品国产自产在线| 国产一区在线视频| 天堂一区二区在线| 亚洲国产精品黑人久久久| 在线播放中文字幕一区| 欧美亚洲一区二区三区四区| 国产一二三精品| 日韩和欧美一区二区| 亚洲欧美一区二区在线观看| 久久男人中文字幕资源站| 免费看欧美女人艹b| 337p粉嫩大胆噜噜噜噜噜91av| 日韩一区二区三区观看| 欧美午夜精品理论片a级按摩| 欧美在线观看一区二区| 欧美日韩一区二区三区四区五区| 精品视频一区二区三区免费| 欧美性极品少妇| 欧美影院一区二区三区| 91传媒视频在线播放| 精品一区二区三区的国产在线播放| 一区二区在线免费| 亚洲电影一区二区三区| 亚洲午夜羞羞片| 日韩国产欧美在线视频| 中文字幕制服丝袜成人av| 国产午夜精品在线观看| 久久久精品免费网站| 中文字幕亚洲成人| 亚洲国产另类精品专区| 看片网站欧美日韩| 久久av资源网| caoporm超碰国产精品| 久久先锋影音av| 婷婷一区二区三区| 色噜噜偷拍精品综合在线| 日本一区二区三区在线不卡| 麻豆久久久久久| 欧美精品亚洲一区二区在线播放| 91精品国产美女浴室洗澡无遮挡| 色猫猫国产区一区二在线视频| 一区二区三区资源| 337p粉嫩大胆噜噜噜噜噜91av| 图片区小说区国产精品视频| 国产伦精品一区二区三区在线观看| 色嗨嗨av一区二区三区| 国产成人午夜视频| 亚洲精品在线观| 国产精品一卡二卡| 国产精品成人一区二区三区夜夜夜| 成人精品视频.|