時間:2009-12-28 16:12:03來源:yangliu
摘 要:根據(jù)智能閥門定位器總線化的要求,開發(fā)了基于FF協(xié)議的通信接口,闡述了雙處理器結(jié)構(gòu)的OEM開發(fā)思想,給出了實現(xiàn)FF通信的詳細步驟和開發(fā)工具。經(jīng)測試,閥門定位器實現(xiàn)了FF總線通信功能,證明了開發(fā)方案的可行性。
關(guān)鍵字:現(xiàn)場總線 基金會現(xiàn)場總線 通信接口 圓卡 閥門定位器
1 引言
基金會現(xiàn)場總線(FF)是在過程自動化領(lǐng)域得到廣泛支持和具有良好發(fā)展前景的現(xiàn)場總線技術(shù)。它分低速(FF-HI)和高速(FF-HSE)兩部分,并且均被現(xiàn)場總線國際標(biāo)準(zhǔn)IEC61158所采用。由于FF協(xié)議把通信和控制兩大部分功能結(jié)合在一起,因此協(xié)議本身的體系結(jié)構(gòu)非常復(fù)雜。從實現(xiàn)方面來說,雖然FF協(xié)議本身是公開的,但是它并不涉及協(xié)議的實現(xiàn),因此有許多有關(guān)實現(xiàn)的工作要做。
本文講述了FF-HI總線智能閥門定位器的通信接口的開發(fā),對于其它4-20mA設(shè)備或者智能設(shè)備的基金會現(xiàn)場總線通信接口的開發(fā),有一定的參考價值。
2 總體設(shè)計
2.1 開發(fā)方案
在對不同的現(xiàn)場設(shè)備開發(fā)思路進行分析、比較的基礎(chǔ)上,采用了雙處理器(CPU)結(jié)構(gòu)的原始設(shè)備制造商(OEM)開發(fā)方案,即智能閥門定位器的硬件部分主要由儀表卡和圓卡構(gòu)成。其原理結(jié)構(gòu)如圖1所示。
儀表卡采用MSP430單片機做主芯片,實現(xiàn)智能閥門定位器的初始化、閥位反饋、報警、顯示等基本功能,這部分軟硬件的開發(fā)已經(jīng)完成;通訊圓卡為數(shù)據(jù)傳輸和控制部分,需要完成現(xiàn)場總線的通信和各種控制算法,本設(shè)計使用經(jīng)認證的通訊圓上學(xué)簡化了圓卡的硬件開發(fā),只需完成儀表卡CPU與圓卡CPU之間的通信接口、圓卡和FF總線通訊和設(shè)備功能塊的調(diào)用等功能的軟件開發(fā)。
2.2 開發(fā)工具
本文采用了Fielbus Inc公司提供的現(xiàn)場設(shè)備開發(fā)工具包進行通信接口的開發(fā)。此工具包包含了設(shè)備開發(fā)和組網(wǎng)運行的必要元素,使用戶不必對低級現(xiàn)場總線協(xié)議有深入的了解,就可以方便地設(shè)計出新的總線產(chǎn)品。該套開發(fā)工具包括:圓卡、串行編程子卡、PC機接口卡、圓卡編程工具、FF-HI通信棧軟件、FI功能塊應(yīng)用軟件、電源、電纜及其它工具。
HI現(xiàn)場總線圓卡是開發(fā)FF兼容設(shè)備的硬件接口,采用總線供電,可接口到符合FF-HI協(xié)議的網(wǎng)絡(luò)中。圓卡使用MC68331嵌入處理器和可編程的128KB×16閃存運行通信棧接口庫、功能塊殼和用戶應(yīng)用程序。同時有一個128KB×16SRAM提供易失性存儲器,用來存儲總線管理信息庫參數(shù)和塊參數(shù)。圓卡與儀表卡測量部件的連接通過串行編程子卡實現(xiàn)。子卡可以執(zhí)行DIO、A/D、D/A功能,通過2×21針WI插口與圓卡連接。
3 通信方案的設(shè)計
本文采用串行通訊接口方式實現(xiàn)圓卡與儀表卡的通訊。其中,圓卡擔(dān)當(dāng)主叫方,發(fā)起通訊,儀表卡擔(dān)當(dāng)從機,響應(yīng)圓卡的通訊。圓卡通過串行函數(shù)完成呼叫、發(fā)送和接收數(shù)據(jù)的功能,儀表卡采用串行中斷方式實現(xiàn)串行通訊處理。
串行函數(shù)在圓卡和串行設(shè)備之間提供一個傳遞數(shù)據(jù)的通用方式。它和用于與串行設(shè)備進行通訊的通信棧協(xié)議及功能塊殼的調(diào)用功能相互獨立。對于使用三線串行通訊方式的通訊,串行函數(shù)提供了兩種數(shù)據(jù)格式,其中通用串行格式為通用主/從命令/響應(yīng)串行協(xié)議,需要用戶對命令及響應(yīng)數(shù)據(jù)包進行編碼和解碼。
串行函數(shù)可設(shè)置為連續(xù)發(fā)送/接收一個定義的命令序列,該序列由nihDefineSequence和nihSendCommand函數(shù)定義。nihDefineSequence定義發(fā)送給設(shè)備的序列中的命令行數(shù),nihSendCommand定義序列中的命令。一個命令是一個串行的相互動作,它包括一個發(fā)送、一個接收或兩者。當(dāng)完成對序列中最后一個命令的定義后,序列按照命令定義的順序發(fā)送所有的命令。使用nihDefineSequence或nihSendCommand函數(shù)取消序列的運行。使用函數(shù)nihDefineSequence和nihSendCommand可修改命令數(shù)據(jù)并保留命令序列中最后的響應(yīng)數(shù)據(jù)。直接調(diào)用nihPutData,設(shè)置發(fā)送緩沖器中要改變數(shù)據(jù)的當(dāng)前值,也可調(diào)用nihGetData,保留序列最后一次執(zhí)行時,從串行設(shè)備接收到的數(shù)據(jù)包。調(diào)用nihsetparam函數(shù)可設(shè)置圓卡的通訊參數(shù),如命令重發(fā)次數(shù)、前導(dǎo)碼數(shù)目、超時、串行協(xié)議類型、波特率、校驗類型、停止位。
4 圓卡應(yīng)用開發(fā)
圓卡執(zhí)行NI專門為FF設(shè)計的且通過了FF一致性測試的通訊棧軟件,可完成鏈路主設(shè)備LAS和基本設(shè)備的通訊任務(wù)。此外,圓卡執(zhí)行NI功能塊殼軟件,該軟件為開發(fā)FF所需的塊提供一個應(yīng)用程序接口。圓卡應(yīng)用的開發(fā)步驟如下。
4.1 寫設(shè)備模板,并將設(shè)備模板轉(zhuǎn)換為C代碼
設(shè)備模板是一個ASCⅡ碼文件,包括設(shè)備辯識、設(shè)備中的物理快和功能塊,以及設(shè)備的參數(shù)等內(nèi)容。模板文件包括若干部分,每一部分均由一關(guān)鍵字及其描述組成。次序如下:VFD,UDER_TYPE,BLOCKS,TRENDS,VARLISTS。根據(jù)閥門定位器的功能,本設(shè)計選用了PID功能塊和AO功能塊。
設(shè)備模板由設(shè)備代碼生成器轉(zhuǎn)換為C代碼。設(shè)備代碼生成器codegen.exe的命令行為:
codegen devicetemplate.dat outputfile.c nifb.sym其中devicetemplate.dat為設(shè)備模板文件名,outputfile.c為轉(zhuǎn)換完的輸出文件名。
4.2 寫用戶應(yīng)用文件
用戶應(yīng)用程序為實現(xiàn)定位器功能的主要部分。它利用功能快殼所提供的與FF通訊棧的高級接口,處理有關(guān)網(wǎng)絡(luò)通訊的參數(shù)讀寫,完成總線通訊功能。并通過注冊回調(diào)(callback)函數(shù)和執(zhí)行功能快具體算法實現(xiàn)FF標(biāo)準(zhǔn)功能快功能。用戶應(yīng)用程序的程序框圖如圖2所示。
(1)寫功能塊的回調(diào)函數(shù),userStart函數(shù)以及注冊回調(diào)函數(shù)。
回調(diào)函數(shù)完成以下兩種功能:執(zhí)行功能塊算法以及處理報警確認和辯識。當(dāng)功能快被調(diào)度執(zhí)行時,功能塊殼調(diào)用開發(fā)設(shè)備所定義的回調(diào)執(zhí)行函數(shù),在回調(diào)執(zhí)行(CB_EXE)函數(shù)中編寫算法以完成需要功能塊執(zhí)行的動作。CB_EXE函數(shù)的定義格式為:void(CB_EXE(HDL_BLOCK hBlock)。
userStart函數(shù)在通訊棧啟動時被自動調(diào)用,可以初始化功能塊殼并通過它注冊開發(fā)設(shè)備的Callback函數(shù)。功能快應(yīng)用進程使用注冊函數(shù)以通知功能塊殼用戶應(yīng)用的特性,包括用戶定義的數(shù)據(jù)類型、物理塊、變送塊、功能塊、塊參數(shù)等。在userStart中調(diào)回用shRegistCallback函數(shù)注冊Callback函數(shù)。
(2)指定系統(tǒng)時鐘和RAM大小,定義和安裝中斷處理器。
在圓卡應(yīng)用程序和源代碼中聲明并定義兩個全局變量: SystemCleckSpeed和Ramsize,其初始化有效值分別為: SystemCleckSpeed,選擇1代表4MHz的時鐘;Ramsize,選擇2代表256KB。
圓卡提供優(yōu)先級數(shù)為3、4、6的中斷引腳,它們可為圓卡的任何中斷源所使用,同時還能使用CPU的內(nèi)部模塊產(chǎn)生必要的中斷。如在設(shè)備應(yīng)用中使用中斷,則必須在用戶應(yīng)用程序中安裝中斷處理器,并用niInstallIntHandler作棧功能調(diào)用。本設(shè)計中未使用中斷處理器。
4.3 生成設(shè)備組態(tài)并將設(shè)備組態(tài)轉(zhuǎn)換為C代碼
設(shè)備組態(tài)文件包括數(shù)據(jù)鏈路組態(tài)和系統(tǒng)管理組態(tài),它們對設(shè)備類型(基本設(shè)備或鏈路主設(shè)備)、節(jié)點地址、設(shè)備ID號、設(shè)備位號、設(shè)備調(diào)度時間單位、調(diào)度時間表進行了定義。
運行組態(tài)生成器,將ini文件轉(zhuǎn)換成為可鏈接的.e文件。其命令行為:
efggen device.ini devicecfg.c
其中,device.ini表示設(shè)備組態(tài)文件,devicecfg為輸出的.c文件的名稱。
4.4 編輯、鏈接并下載程序
在調(diào)試環(huán)境下,下載鏈接器輸出文件到RAM進行調(diào)試,全調(diào)試后,生成二進制格式,使用biBum.exe命令,將程序代碼下載到閃存中。第一步是編輯,將設(shè)備代碼生成器生成的.c文件、組態(tài)生成器生成的.c文件(包括userStart函數(shù),callbacks函數(shù))轉(zhuǎn)化到.o格式,第二步,將它們與NI的通信棧軟件nistack.lib相鏈接。該圓卡庫文件包含通訊棧協(xié)議和功能塊殼。最后用戶應(yīng)用與庫鏈接完成后,從鏈接器的輸出文件中提出對象字節(jié),并將它們轉(zhuǎn)換為二進制的格式。這樣便可將它們下載到目標(biāo)處理器的存儲器中。
4.5 燒寫內(nèi)存
圓卡使用niBurn.exe命令通過主機上的RS-232口和串行編程子卡上的串口燒寫內(nèi)存,而無需外部PROM燒寫器。
5 結(jié)論
使用開發(fā)工具包括提供的NI-FBUS組態(tài)器和NI-FBUS監(jiān)視器,采用AT-FBUS板作為鏈路主設(shè)備對圓卡進行整機測試,測試結(jié)果表明,自主開發(fā)的閥門定位器與圓卡連接之后,在實現(xiàn)電氣智能閥門定位器功能的同時,可能與其它總線設(shè)備互操作,可以接受鏈路主設(shè)備的功能塊調(diào)度、參數(shù)讀寫、參數(shù)傳遞,這表明儀表能正常運行于FF總線之上,具備了FF總線儀表的功能,同時證明了整體設(shè)計方案和所采用的開發(fā)方法是可行的。
參考文獻
1. 陽憲慧.現(xiàn)場總線技術(shù)及其應(yīng)用[M] 北京:清華大學(xué)出版社,1999:70~186
2. National Instruments Corporation.MC68331-BasedFieldbusRoundCardUserManual[R] .USA:1998
3. 龐彥斌,王勝,程煒.基于FF協(xié)議的智能氣動閥門定位器開發(fā)[J] .儀器儀表學(xué)報,2001,22(3):34~37
標(biāo)簽:
中國傳動網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動網(wǎng)(m.u63ivq3.com)獨家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉(zhuǎn)載使用時須注明來源“中國傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負版權(quán)法律責(zé)任。
產(chǎn)品新聞
更多>以簡驅(qū)繁,精準(zhǔn)智控 | 維智S1系列新一代...
2024-11-01
2024-10-31
2024-10-31
2024-10-31
2024-10-31
2024-10-29
推薦專題
更多>