环球电气之家-午夜精彩视频-中国专业电气电子产品行业服务网站!

產品分類

當前位置: 首頁 >

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

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

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

  • 關鍵詞: 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

推薦產品

更多
主站蜘蛛池模板: 赛默飞Thermo veritiproPCR仪|ProFlex3 x 32PCR系统|Countess3细胞计数仪|371|3111二氧化碳培养箱|Mirco17R|Mirco21R离心机|仟诺生物 | 化工ERP软件_化工新材料ERP系统_化工新材料MES软件_MES系统-广东顺景软件科技有限公司 | 培训中心-海南香蕉蛋糕加盟店技术翰香原中心官网总部 | uv固化机-丝印uv机-工业烤箱-五金蚀刻机-分拣输送机 - 保定市丰辉机械设备制造有限公司 | 派财经_聚焦数字经济内容服务平台| 全国国际化学校_国际高中招生_一站式升学择校服务-国际学校网 | 硫化罐_蒸汽硫化罐_大型硫化罐-山东鑫泰鑫智能装备有限公司 | 二手光谱仪维修-德国OBLF光谱仪|进口斯派克光谱仪-热电ARL光谱仪-意大利GNR光谱仪-永晖检测 | 武汉天安盾电子设备有限公司 - 安盾安检,武汉安检门,武汉安检机,武汉金属探测器,武汉测温安检门,武汉X光行李安检机,武汉防爆罐,武汉车底安全检查,武汉液体探测仪,武汉安检防爆设备 | 深圳市万色印象美业有限公司| 组织研磨机-高通量组织研磨仪-实验室多样品组织研磨机-东方天净 传递窗_超净|洁净工作台_高效过滤器-传递窗厂家广州梓净公司 | 扬子叉车厂家_升降平台_电动搬运车|堆高车-扬子仓储叉车官网 | 定硫仪,量热仪,工业分析仪,马弗炉,煤炭化验设备厂家,煤质化验仪器,焦炭化验设备鹤壁大德煤质工业分析仪,氟氯测定仪 | 欧盟ce检测认证_reach检测报告_第三方检测中心-深圳市威腾检验技术有限公司 | 橡胶粉碎机_橡胶磨粉机_轮胎粉碎机_轮胎磨粉机-河南鼎聚重工机械制造有限公司 | 紫外线老化试验箱_uv紫外线老化试验箱价格|型号|厂家-正航仪器设备 | 环球电气之家-中国专业电气电子产品行业服务网站! | 首页_中夏易经起名网| 尊享蟹太太美味,大闸蟹礼卡|礼券|礼盒在线预订-蟹太太官网 | 钢格板|镀锌钢格板|热镀锌钢格板|格栅板|钢格板|钢格栅板|热浸锌钢格板|平台钢格板|镀锌钢格栅板|热镀锌钢格栅板|平台钢格栅板|不锈钢钢格栅板 - 专业钢格板厂家 | 贵州水玻璃_-贵阳花溪闽兴水玻璃厂 | 化工ERP软件_化工新材料ERP系统_化工新材料MES软件_MES系统-广东顺景软件科技有限公司 | 胶水,胶粘剂,AB胶,环氧胶,UV胶水,高温胶,快干胶,密封胶,结构胶,电子胶,厌氧胶,高温胶水,电子胶水-东莞聚力-聚厉胶粘 | 头条搜索极速版下载安装免费新版,头条搜索极速版邀请码怎么填写? - 欧远全 | 北京租车公司_汽车/客车/班车/大巴车租赁_商务会议/展会用车/旅游大巴出租_北京桐顺创业租车公司 | 外贸资讯网 - 洞悉全球贸易,把握市场先机| STRO|DTRO-STRO反渗透膜(科普)_碟滤 | 安徽控制器-合肥船用空调控制器-合肥家电控制器-合肥迅驰电子厂 安徽净化板_合肥岩棉板厂家_玻镁板厂家_安徽科艺美洁净科技有限公司 | 集装箱箱号识别_自重载重图像识别_铁路车号自动识别_OCR图像识别 | 样品瓶(色谱样品瓶)百科-浙江哈迈科技有限公司| 高压无油空压机_无油水润滑空压机_水润滑无油螺杆空压机_无油空压机厂家-科普柯超滤(广东)节能科技有限公司 | 大功率金属激光焊接机价格_不锈钢汽车配件|光纤自动激光焊接机设备-东莞市正信激光科技有限公司 定制奶茶纸杯_定制豆浆杯_广东纸杯厂_[绿保佳]一家专业生产纸杯碗的厂家 | 播音主持培训-中影人教育播音主持学苑「官网」-中国艺考界的贵族学校 | 除湿机|工业除湿机|抽湿器|大型地下室车间仓库吊顶防爆除湿机|抽湿烘干房|新风除湿机|调温/降温除湿机|恒温恒湿机|加湿机-杭州川田电器有限公司 | 德国EA可编程直流电源_电子负载,中国台湾固纬直流电源_交流电源-苏州展文电子科技有限公司 | 走心机厂家,数控走心机-台州博城智能科技有限公司 | 报警器_家用防盗报警器_烟雾报警器_燃气报警器_防盗报警系统厂家-深圳市刻锐智能科技有限公司 | 刚性-柔性防水套管-橡胶伸缩接头-波纹管补偿器-启腾供水材料有限公司 | 英国公司注册-新加坡公司注册-香港公司开户-离岸公司账户-杭州商标注册-杭州优创企业 | 广东燎了网络科技有限公司官网-网站建设-珠海网络推广-高端营销型外贸网站建设-珠海专业h5建站公司「了了网」 | 日本SMC气缸接头-速度控制阀-日本三菱伺服电机-苏州禾力自动化科技有限公司 |