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

用戶中心
· 企業(yè)空間 首頁 | 資訊 | 技術(shù) | 產(chǎn)品 | 企業(yè) | 直播 | 專題 | 智能制造 | 論壇| 在線研討會
北京力控元通科技有限公司
企業(yè)空間 > 案例應(yīng)用 > 正文
  • 力控組態(tài)軟件下的設(shè)備驅(qū)動程序開發(fā)
  • 發(fā)布時間:2008/11/20 15:58:38   修改時間:2008/11/20 15:58:19 瀏覽次數(shù):2602
  •        作   者 :華中科技大學(xué) 控制科學(xué)與工程系 吳力煒 葉念渝
      關(guān)鍵詞: 組態(tài)軟件 設(shè)備驅(qū)動程序 RS-485串行通信
      1 引言
      組態(tài)軟件設(shè)備驅(qū)動程序用于提供了連接計(jì)算機(jī)硬件的軟件接口,在裝入后成為操作系統(tǒng)內(nèi)核的-部分,也就是說它成為操作系統(tǒng)的信任部分。因此,任何設(shè)備驅(qū)動程序的細(xì)小錯誤都可能引起操作系統(tǒng)的崩潰,要避免這樣的事情發(fā)生,只有反復(fù)測試所寫的代碼,遵循編寫驅(qū)動程序的規(guī)則。
      最簡單的方法是購買現(xiàn)成的驅(qū)動程序來直接處理我們的設(shè)備,但這樣的驅(qū)動程序存在連接與嵌入錯誤的風(fēng)險(xiǎn)。另外,可以通過修改各種商業(yè)通用驅(qū)動程序與許多簡單的設(shè)備打交道。如果自己編寫驅(qū)動程序的話,盡量使用某個標(biāo)準(zhǔn)的總線驅(qū)動程序或者類驅(qū)動程序,因?yàn)樗鼈兺ǔ?shí)現(xiàn)了我們所需要的大量功能。如果設(shè)備只有一個專門的用途,則為它編寫一個單一驅(qū)動程序來處理所有設(shè)備的請求可能是最簡單的解決方案。
      三維力控組態(tài)軟件提供了力控I/O驅(qū)動程序接口軟件開發(fā)工具包FIOS SDK,F(xiàn)IOS SDK提供了標(biāo)準(zhǔn)的開發(fā)接口,開發(fā)人員僅需要根據(jù)I/O設(shè)備的具體通信協(xié)議或驅(qū)動接口說明,填寫幾個掃描函數(shù)的實(shí)現(xiàn)代碼,進(jìn)行必要的調(diào)試與測試,即可完成一種FIOS的開發(fā)。
      2 課題背景
      目前筆者接手的項(xiàng)目是X機(jī)場助航燈光計(jì)算機(jī)監(jiān)控系統(tǒng)。當(dāng)機(jī)場燈光實(shí)施II類運(yùn)行時,其能見度在800m至400m之間,要求燈光設(shè)備可靠性高、故障少,但往往燈具在運(yùn)行過程中產(chǎn)生故障是隨機(jī)的,其故障率達(dá)到某一個值時,將不能滿足II類運(yùn)行要求[1][2]。為保證監(jiān)控系統(tǒng)運(yùn)行的穩(wěn)定性和可靠性,采用雙機(jī)容錯模式與力控工業(yè)控制組態(tài)軟件相結(jié)合的方法,通過硬件冗余、軟件組態(tài)的可靠設(shè)計(jì)、Visual C++與力控組態(tài)軟件的結(jié)合,并以RS-485總線作為網(wǎng)絡(luò)連接線,實(shí)現(xiàn)分布式的數(shù)據(jù)庫配置,設(shè)計(jì)了基于力控組態(tài)環(huán)境的雙機(jī)容錯系統(tǒng)。開發(fā)此系統(tǒng)的任務(wù)之一,就是自主開發(fā)驅(qū)動程序,將自定義的通信協(xié)議寫入驅(qū)動程序之中。而三維力控組態(tài)軟件提供了I/O驅(qū)動程序接口開發(fā)工具包(FIOS SDK),因此,開發(fā)驅(qū)動的主要工作就是利用組態(tài)軟件提供的接口函數(shù)和輸入輸出類庫編寫Ioapi中的代碼,以達(dá)到I/O設(shè)備的控制要求[3]。由于此項(xiàng)目的開發(fā)在Visual C++ 6.0環(huán)境中進(jìn)行,學(xué)習(xí)Windows WDM驅(qū)動程序設(shè)計(jì)對于深入理解內(nèi)核態(tài)驅(qū)動程序開發(fā)、編寫相應(yīng)的接口程序也很有幫助。
      3 開發(fā)工具--FIOS SDK簡介[5][6]
      FIOS SDK開發(fā)環(huán)境完全基于32位Windows平臺。它使用動態(tài)鏈接庫(DLL)技術(shù)將開發(fā)人員開發(fā)的代碼整合到力控組態(tài)
      軟件系統(tǒng)中。FIOS SDK提供給程序員的開發(fā)接口為API函數(shù)和C++類庫。
      FIOS SDK主要由4部分組成:設(shè)備組態(tài)接口(Iodevcfg)、數(shù)據(jù)連接組態(tài)接口(Ioitemui)、I/O監(jiān)控接口Ioapi和I/O服務(wù)器程序Ioserver。其中,Iodevcfg:負(fù)責(zé)管理設(shè)備組態(tài)過程;Ioitemui:負(fù)責(zé)管理數(shù)據(jù)連接組態(tài)過程;Ioapi:負(fù)責(zé)完成與I/O設(shè)備間的數(shù)據(jù)交換,實(shí)現(xiàn)對設(shè)備的監(jiān)控過程,包括:對通信協(xié)議的解析、數(shù)據(jù)格式的轉(zhuǎn)換等;Ioserver:由FIOS SDK提供,用于完成對Ioapi 的動態(tài)裝載,調(diào)用并執(zhí)行Ioapi實(shí)現(xiàn)的導(dǎo)出函數(shù)。它封裝了大部分開發(fā)人員不必關(guān)心的技術(shù)細(xì)節(jié),如完成與I/O設(shè)備的底層通信(串口通信、網(wǎng)絡(luò)通信等)、設(shè)備超時處理、設(shè)備故障診斷等。Ioserver還完成與實(shí)時數(shù)據(jù)庫DB之間的通信,它把從I/O設(shè)備采集到的數(shù)據(jù)經(jīng)Ioapi解析轉(zhuǎn)換后提交給DB,或者將DB下置給I/O設(shè)備的數(shù)據(jù)經(jīng)Ioapi解析轉(zhuǎn)換后寫入I/O設(shè)備。
      因此,開發(fā)人員僅需要開發(fā)Iodevcfg、Ioitemui、Ioapi三部分的代碼。下面就以這三個部分的代碼、界面開發(fā)為例,說明在力控組態(tài)軟件中進(jìn)行驅(qū)動開發(fā)的步驟。
      4 開發(fā)實(shí)例
      以C8051單片機(jī)實(shí)現(xiàn)數(shù)據(jù)采集為例,針對下層RS-485總線通信開發(fā)驅(qū)動程序。
      4.1 設(shè)備組態(tài)接口(Iodevcfg)開發(fā)
      (1) I/O描述文件
      在使用力控進(jìn)行組態(tài)時,一般都要涉及I/O設(shè)備的定義過程。I/O描述文件的文件名為Iodesc.txt。文件內(nèi)容規(guī)定的格式如下(其中,表示回車換行):
      類別;廠商或I/O程序描述;IOID
      子類型1;類型號;缺省通信方式;提供設(shè)備地址
      子類型2;類型號;缺省通信方式;提供設(shè)備地址
      ……
      因此,在本項(xiàng)目中的I/O描述文件定義為:
      "X計(jì)算機(jī)監(jiān)控系統(tǒng);華中科技大學(xué)控制系;CCMSController;0;1;0"表示類型號為0,RS-485通信,不設(shè)置設(shè)備地址。
      (2) 開發(fā)Iodevcfg.dll
      開發(fā)人員在編寫Iodevcfg接口程序時主要完成兩部分功能,一是為用戶進(jìn)行設(shè)備組態(tài)時提供一個界面;另外就是將用戶組態(tài)的設(shè)備參數(shù)信息保存起來,以便在開發(fā)編程接口Ioapi時使用。如果力控提供的標(biāo)準(zhǔn)設(shè)備組態(tài)接口能夠完整地描述設(shè)備的有關(guān)信息,就不需要再編寫Iodevcfg接口程序。標(biāo)準(zhǔn)界面如圖1所示,并對串口進(jìn)行相關(guān)設(shè)置,如圖2所示。

                                                                                                  圖1 標(biāo)準(zhǔn)設(shè)備組態(tài)界面

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

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

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

  • 企業(yè)介紹
北京力控元通科技有限公司(簡稱力控科技)是工業(yè)軟件產(chǎn)品開發(fā)商及解決方案提供商。聚焦中國工業(yè)4.0、智慧市政等領(lǐng)域的智能管控產(chǎn)品開發(fā)與行業(yè)解決方案。豐富的產(chǎn)品線融入到工業(yè)互聯(lián)網(wǎng)體系的各個環(huán)節(jié)。提供從自動化、數(shù)字化到智能化的多層次的…  更多>>
  • 聯(lián)系方式

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

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

地址:北京市海淀區(qū)天秀路10號中國農(nóng)大國際創(chuàng)業(yè)園1號樓四層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)品的價格信息,我讓貴公司產(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ì)留言:高級報(bào)警管理系統(tǒng)
  • 史勇斌 在2023/5/29 11:03:00留言
  • 留言類型:我想得到貴公司產(chǎn)品的價格信息,我讓貴公司產(chǎn)品銷售人員聯(lián)系我,
  • 詳細(xì)留言:軟件需求詢價
  • 王攀攀 在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)營許可編號:京ICP證120335號
公安機(jī)關(guān)備案號:110102002318  服務(wù)熱線:010-82053688
我要反饋