<style id="7i3y3"></style>

      <sub id="7i3y3"><i id="7i3y3"></i></sub>

        午夜精品一区二区三区成人,中文字幕av一区二区,亚洲AVAV天堂AV在线网阿V,肥臀浪妇太爽了快点再快点,国产网友愉拍精品视频手机,国产精品无码a∨麻豆,久久中文字幕一区二区,a级国产乱理伦片在线观看al
        首頁 新聞 工控搜 論壇 廠商論壇 產品 方案 廠商 人才 文摘 下載 展覽
        中華工控網首頁
          P L C | 變頻器與傳動 | 傳感器 | 現場檢測儀表 | 工控軟件 | 人機界面 | 運動控制
          D C S | 工業以太網 | 現場總線 | 顯示調節儀表 | 數據采集 | 數傳測控 | 工業安全
          電 源 | 嵌入式系統 | PC based | 機柜箱體殼體 | 低壓電器 | 機器視覺
        力控組態軟件下的設備驅動程序開發
        收藏本文     查看收藏
        作 者 :華中科技大學 控制科學與工程系 吳力煒 葉念渝
          
          關鍵詞: 組態軟件 設備驅動程序 RS-485串行通信
          
          1 引言
          組態軟件設備驅動程序用于提供了連接計算機硬件的軟件接口,在裝入后成為操作系統內核的—部分,也就是說它成為操作系統的信任部分。因此,任何設備驅動程序的細小錯誤都可能引起操作系統的崩潰,要避免這樣的事情發生,只有反復測試所寫的代碼,遵循編寫驅動程序的規則。
          最簡單的方法是購買現成的驅動程序來直接處理我們的設備,但這樣的驅動程序存在連接與嵌入錯誤的風險。另外,可以通過修改各種商業通用驅動程序與許多簡單的設備打交道。如果自己編寫驅動程序的話,盡量使用某個標準的總線驅動程序或者類驅動程序,因為它們通常實現了我們所需要的大量功能。如果設備只有一個專門的用途,則為它編寫一個單一驅動程序來處理所有設備的請求可能是最簡單的解決方案。
          三維力控組態軟件提供了力控I/O驅動程序接口軟件開發工具包FIOS SDK,FIOS SDK提供了標準的開發接口,開發人員僅需要根據I/O設備的具體通信協議或驅動接口說明,填寫幾個掃描函數的實現代碼,進行必要的調試與測試,即可完成一種FIOS的開發。
          
          2 課題背景
          目前筆者接手的項目是X機場助航燈光計算機監控系統。當機場燈光實施II類運行時,其能見度在800m至400m之間,要求燈光設備可靠性高、故障少,但往往燈具在運行過程中產生故障是隨機的,其故障率達到某一個值時,將不能滿足II類運行要求[1][2]。為保證監控系統運行的穩定性和可靠性,采用雙機容錯模式與力控工業控制組態軟件相結合的方法,通過硬件冗余、軟件組態的可靠設計、Visual C++與力控組態軟件的結合,并以RS-485總線作為網絡連接線,實現分布式的數據庫配置,設計了基于力控組態環境的雙機容錯系統。開發此系統的任務之一,就是自主開發驅動程序,將自定義的通信協議寫入驅動程序之中。而三維力控組態軟件提供了I/O驅動程序接口開發工具包(FIOS SDK),因此,開發驅動的主要工作就是利用組態軟件提供的接口函數和輸入輸出類庫編寫Ioapi中的代碼,以達到I/O設備的控制要求[3]。由于此項目的開發在Visual C++ 6.0環境中進行,學習Windows WDM驅動程序設計對于深入理解內核態驅動程序開發、編寫相應的接口程序也很有幫助。
          
          3 開發工具——FIOS SDK簡介[5][6]
          FIOS SDK開發環境完全基于32位Windows平臺。它使用動態鏈接庫(DLL)技術將開發人員開發的代碼整合到力控組態
          軟件系統中。FIOS SDK提供給程序員的開發接口為API函數和C++類庫。
          FIOS SDK主要由4部分組成:設備組態接口(Iodevcfg)、數據連接組態接口(Ioitemui)、I/O監控接口Ioapi和I/O服務器程序Ioserver。其中,Iodevcfg:負責管理設備組態過程;Ioitemui:負責管理數據連接組態過程;Ioapi:負責完成與I/O設備間的數據交換,實現對設備的監控過程,包括:對通信協議的解析、數據格式的轉換等;Ioserver:由FIOS SDK提供,用于完成對Ioapi 的動態裝載,調用并執行Ioapi實現的導出函數。它封裝了大部分開發人員不必關心的技術細節,如完成與I/O設備的底層通信(串口通信、網絡通信等)、設備超時處理、設備故障診斷等。Ioserver還完成與實時數據庫DB之間的通信,它把從I/O設備采集到的數據經Ioapi解析轉換后提交給DB,或者將DB下置給I/O設備的數據經Ioapi解析轉換后寫入I/O設備。
          因此,開發人員僅需要開發Iodevcfg、Ioitemui、Ioapi三部分的代碼。下面就以這三個部分的代碼、界面開發為例,說明在力控組態軟件中進行驅動開發的步驟。
          
          4 開發實例
          以C8051單片機實現數據采集為例,針對下層RS-485總線通信開發驅動程序。
          4.1 設備組態接口(Iodevcfg)開發
          (1) I/O描述文件
          在使用力控進行組態時,一般都要涉及I/O設備的定義過程。I/O描述文件的文件名為Iodesc.txt。文件內容規定的格式如下(其中,表示回車換行):
          類別;廠商或I/O程序描述;IOID
          子類型1;類型號;缺省通信方式;提供設備地址
          子類型2;類型號;缺省通信方式;提供設備地址
          ……
          因此,在本項目中的I/O描述文件定義為:
          “X計算機監控系統;華中科技大學控制系;CCMSController;0;1;0”表示類型號為0,RS-485通信,不設置設備地址。
          (2) 開發Iodevcfg.dll
          開發人員在編寫Iodevcfg接口程序時主要完成兩部分功能,一是為用戶進行設備組態時提供一個界面;另外就是將用戶組態的設備參數信息保存起來,以便在開發編程接口Ioapi時使用。如果力控提供的標準設備組態接口能夠完整地描述設備的有關信息,就不需要再編寫Iodevcfg接口程序。標準界面如圖1所示,并對串口進行相關設置,如圖2所示。
          
        按此在新窗口瀏覽圖片

        圖1 標準設備組態界面

        按此在新窗口瀏覽圖片  
        圖2 串口設置界面

          4.2 數據連接組態接口(Ioitemui)開發
          在用力控進行組態時,把實時數據庫DB中的點參數與某種設備的具體信道建立連接的過程被為數據連接過程。Ioitemui要以DLL形式提供,該DLL必須是MFC擴展DLL,其缺省文件名稱為Ioitemui.dll。
          數據連接過程對于不同的I/O設備,其形式和內容可能完全不同。因此,必須針對不同的I/O設備設計相應的數據連接形式以保存各種參數信息。
          開發人員在編寫Ioitemui接口程序時也是主要完成兩部分功能,一是為用戶進行數據連接組態時提供一個界面;二是將用戶組態的設備參數信息保存在數據連接項結構(以下簡稱連接項結構)IOITEMDEF中,以便在開發I/O監控接口Ioapi時使用。這個連接項結構是一個通用結構,由開發人員自己賦值,自己解釋。界面如圖3所示:
          
        按此在新窗口瀏覽圖片
        圖3 數據連接組態界面

          4.3 I/O監控接口Ioapi開發
          Ioapi是FIOS提供的最重要的一個編程接口,開發人員的主要工作就是開發Ioapi部分的程序代碼。Ioapi提供了一組API函數(掃描函數)和一些C++類庫(IOC, Input Output Class)。這些IOC類庫全部以純虛類的形式提供,并且只有成員函數,沒有成員變量,主要包括5個類:CItem(數據項類)、CPacket(數據包類)、CDevice(設備類)、CChannel(信道類)和CManager(管理器類)。以層級的結構來管理點、包、設備、信道,實現對設備組態、數據組態、參數信息的獲取和與實時數據庫DB之間的數據交換。
          Ioapi.dll程序中主要完成如下的導出函數(對于不需要的函數,一定要刪除,這樣可以使程序的運行效率提高):
          OnCreate-載入Ioapi.dll后立即調用,這時信道、設備、包、點都不存在,一般用于設置程序的標題,使用戶比較清楚程序的用途;
          OnSortItem-所有點導入完畢后調用,這時候沒有任何包建立;
          OnItemToPacket-循環多次添加所有的點到各個包中,基本原則是能一次處理的點打成一個包,使打包合理化;
          OnBeforeScan-打包完成,正式調度之前調用一次,遍歷管理器,信道,設備,包,點;
          OnCreateDeviceLink-設備的初始化工作;
          OnCreatePacketLink-包的初始化工作;
          OnReadData-IOSCAN程序循環掃描調度,形成數據采集命令串;
          OnWriteData-發生數據下送時調用,形成數據下置命令串;
          OnIsResponseComplete-異步方式下判斷是否完成數據的接收,是否將數據設置到DB中;
          OnAfterSend-發送數據后調用一次,調試時可以查看發送的命令串是否正確;
          OnTimeout-發生超時的時候調用;
          OnUnloadPacket-包析構時調用;
          OnClose-CManager析構時調用一次。
          開發人員可根據項目中自定義的通信協議,將通信協議寫入函數OnReadData()、OnWriteData()中,實現數據的采集和下置。下面給出OnReadData函數的部分代碼:
          INT OnReadData( CPacket* pPacket, LPTSTR lpszSendString, INT& nSendStringLen )
          {
          pPacket->SetReady(TRUE);
          //生成采集命令字符串
          CDevice* pDevice = pPacket->GetDevice();
          //得到設備指針
          CChannel * pChannel = pDevice->GetChannel();
          //得到通道指針
          pChannel->ClearAcceptBuffer();
          //清空接收緩沖區
          CString csDeviceAddr = pDevice->GetAddr();
          //得到實際設備的地址
          IOITEMDEF * pItemStru = pPacket->GetItem(0)->GetItemStru();
          //得到包的數據
          BYTE ucIoType = pItemStru->n[IO_TYPE];
          //得到發送命令的I/O類型
          BYTE ucDeviceAddr = pItemStru->n[DEVICE_ADDR];//得到用戶輸入的設備地址
          ……
          //需要根據實際的通信協議書寫有關的程序
          CString csCommand = "";
          csCommand = BYTE(FRAME_HEAD);
          //寫入幀信息頭
          ……
          csCommand += BYTE(QUERY);
          //定義幀信息類型
          csCommand += BYTE(0x01);
          //有效信息長度為 1 字節
          csCommand += BYTE(ucDeviceAddr);
          //寫入設備的地址
          csCommand += LRCCheck(temp_que, 2);
          //寫入幀尾LRC校驗碼
          nSendStringLen = csCommand.GetLength();
          CString csPmessage;
          csPmessage.Format("讀取數據:設備地址%X", ucDeviceAddr);
          pDevice->ShowProcessMessage(csPmessage);
          pDevice->ShowEventMessage(csPmessage, FALSE);
          //調試用,用以顯示觸發事件
          for ( int i = 0; i < nSendStringLen; i++ )
          lpszSendString[i] = csCommand[i];
          return SEND;
          }
          4.4 驅動程序的調試
          通過Visual C++ 6.0編寫的程序,如:Iodevcfg.dll、Ioitemui.dll、Ioapi.dll,必須生成Release版本,否則調試時,I/O Server調用時將會出錯,并立即跳出程序的執行。調試顯示過程如附表所示。
          
          附表 設備驅動程序調試過程信息
          
        按此在新窗口瀏覽圖片
        附表 設備驅動程序調試過程信息

          調試結果表明該驅動程序可以實現與C8051單片機的異步通信,完成數據的采集,進而實現對助航燈光的控制。
          
          5 結束語
          組態軟件作為現場生產數據采集和過程控制的專用軟件,在許多行業領域都有應用。但任何組態軟件的驅動程序不可能囊括所有設備的驅動程序,特別是對通信協議有特定要求的設備,因此,就需要開發人員根據自己的通信協議編寫相應的驅動程序代碼,并結合實際的設備進行調試。一個好的驅動程序設計應該是可配置的、可移植的、可搶占式的、可中斷的和多處理器安全的[4]。若想能夠很好地掌握驅動程序的開發,最根本的是閱讀驅動文檔并自己動手編寫驅動程序。

         

        狀 態: 離線

        公司簡介
        產品目錄
        供應信息

        公司名稱: 力控科技
        聯 系 人: 張平
        電  話: 010-59835588
        傳  真: 010-59835566
        地  址: 北京市海淀區農大南路33號興天海園二層
        郵  編: 100193
        主  頁:
         
        該廠商相關解決方案:
        力控®實時數據庫在企業信息化的應用
        力控在大慶石化化工二廠中的應用
        污染源在線監控(監測)系統解決方案
        解析力控“數字化”煤礦解決方案
        力控流程行業生產調度系統解決方案
        解析力控“數字化”油田解決方案
        力控在嵌入HMI系統中的應用
        力控forcecontrol6.0在輪胎裂解方面的應用
        力控forcecontrol6.0+S7200構建垃圾焚燒監控系統
        力控軟件在煤礦安全生產綜合自動化系統的應用
        力控在化工行業的典型應用 (廣東省某助劑生產監控系統)
        力控軟件在高速公路隧道監控系統中的應用
        更多方案...
        立即發送詢問信息在線聯系該解決方案廠商:
        用戶名: 密碼: 免費注冊為中華工控網會員
        請留下您的有效聯系方式,以方便我們及時與您聯絡

        關于我們 | 聯系我們 | 廣告服務 | 本站動態 | 友情鏈接 | 法律聲明 | 不良信息舉報
        工控網客服熱線:0755-86369299
        版權所有 中華工控網 Copyright©2022 Gkong.com, All Rights Reserved

        主站蜘蛛池模板: 国产精品久久大屁股白浆黑人| 久久精品国产午夜福利伦理| 无码人妻丰满熟妇啪啪网站| 秋霞电影院午夜无码免费视频| 国产sm重味一区二区三区| 亚洲精品日本久久久中文字幕| 亚洲国产精品久久久天堂麻豆宅男 | 日韩中文字幕亚洲精品| 四虎成人高清永久免费看| 久久96热在精品国产高清| 内射少妇viedo| 91亚洲国产成人精品福利| 国产精品一二三区蜜臀av| 久久婷婷综合色丁香五月| 干中文字幕| 三级全黄的全黄三级三级播放| 亚洲无人区码一二三区别| 六十路老熟妇乱子伦视频| 亚洲综合精品一区二区三区| 国产乱人激情H在线观看| 亚洲av无码第一区二区三区| 国产综合一区二区三区麻豆| 中文国产日韩欧美二视频| 日韩欧美中文字幕在线精品| 亚洲精品一区二区三区在| 欧洲成人在线观看| 日本污视频在线观看| 国产小视频一区二区三区| 小嫩批日出水无码视频免费| 在线中文字幕亚洲日韩2020| 精品国产AV色欲果冻传媒| 亚洲顶级裸体av片| 亚洲中文字幕日产无码成人片| 四虎在线中文字幕一区| 成人无码视频97免费| 狠狠躁天天躁中文字幕| 国产在线线精品宅男网址| 日本精品中文字幕在线不卡| 人妻有码中文字幕在线| 亚洲最大成人网色| 无码中文字幕动漫精品|