基于PROFIBUS-DP協(xié)議模塊的智能執(zhí)行器
引言
在眾多的工業(yè)現(xiàn)場總線中,Profibus總線由于有眾多廠商的支持,且產(chǎn)品比較豐富,在制造業(yè)自動化、流程工業(yè)自動化和樓宇、交通、電力自動化等領(lǐng)域有著廣泛的應(yīng)用。而對于很多不具備Profibus接口的傳統(tǒng)設(shè)備,要使其接入總線網(wǎng)絡(luò)、達(dá)到自動控制的目的,就必須在該設(shè)備和Profibus總線之間做一個協(xié)議接口模塊。
本文結(jié)合對傳統(tǒng)電動執(zhí)行器升級改造的工程實踐,介紹了一種基于Profibus-DP的接口模塊的具體設(shè)計。Profibus-DP作為Profibus現(xiàn)場總線標(biāo)準(zhǔn)的子集,主要用于設(shè)備級控制系統(tǒng)與分散式I/0的通信。它具有傳輸介質(zhì)簡單、安裝維護(hù)方便、安全性高等優(yōu)點。RS485傳輸是最常用的一種傳輸技術(shù),本設(shè)計也采用這種傳輸方式。整個系統(tǒng)的傳輸介質(zhì)為屏蔽雙絞線。本文主要討論采用專用協(xié)議芯片VPC3開發(fā)從站接口的方案。該方案需要在深入了解VPC3的工作原理及DP狀態(tài)機原理的基礎(chǔ)上進(jìn)行開發(fā)。
1 硬件設(shè)計
系統(tǒng)主要包括指令處理部分和接口部分,如圖1所示。指令處理部分完成協(xié)議轉(zhuǎn)換以及通信處理;接口部分完成模擬到數(shù)字的轉(zhuǎn)換、PROFIBUS-DP接口等。下面簡單介紹主要模塊的功能。
調(diào)試(JTAG):M16C/62P通用通信模塊的設(shè)計提供一個JATG仿真器,它可以用來進(jìn)行配置或者是編程。
SRAM模塊:當(dāng)編寫比較大的程序(如操作系統(tǒng))時,M16C的內(nèi)部RAM可能不夠用,此時就可以用外接的SRAM(128K×16位)。
撥碼開關(guān):撥碼開關(guān)用于通信地址方案的實施。PROFIBUS-DP支持的站地址為0~126(共127個),同時為了防止尋址過程發(fā)生地址的沖突,所以采用一個8位的撥碼開關(guān),用后7位進(jìn)行128位的尋址。閥門控制器作為PROFIBUS-DP通信的從站,必須有不與其他站沖突的地址。PR-OFIBUS-DP從站通信地址的設(shè)計方案有兩種:一種是由遠(yuǎn)程的PROFIBUS-DP主站通過特定的數(shù)據(jù)通信設(shè)定或修改從站地址;另一種是禁止PROF-IBUS-DP主站設(shè)定和修改從站地址,從站的地址由從站本地設(shè)定。本設(shè)計采用的是后一種設(shè)計方案,通過一個8位的撥碼開關(guān)手動設(shè)定閥門控制器的地址,然后由中央處理器讀入并寫入VPC3特定的存儲位置。
A/D、D/A等模塊:PROFIUBS-DP智能從站通信卡采用4~20 mA/1~5 V模擬信號傳輸方式,對4~20mA的輸入信號(閥位反饋信號)進(jìn)行校準(zhǔn)和量程變換后,將其轉(zhuǎn)換為DP總線輸入數(shù)據(jù),DP總線輸出數(shù)據(jù)經(jīng)過校準(zhǔn)和量程變換后轉(zhuǎn)換為1~5 V的輸出信號(控制輸出信號)。由于PROFIUBS-DP通信卡在工作過程中共有兩個數(shù)據(jù)需要在DP總線上傳輸,因此需要兩個數(shù)據(jù)通道,一個用于16位模擬量輸入(A/D),另一個用于16位模擬量輸出(D/A)。其中模擬與數(shù)字電路之間采用PC417進(jìn)行光耦隔離。
本設(shè)計一共有兩個時鐘:一個是M16的時鐘,M16本身有兩個時鐘(分別為主時鐘和副時鐘),但是由于VPC3的特殊性使得M16的時鐘必須由VPC3提供;另一個是VPC3的時鐘,直接由48 MHz的有源晶振提供。其中,M16的時鐘是由VPC3對48 MHz的時鐘進(jìn)行1/4分頻得到的12 MHz。
總線接口引腳如表1所列,VPC3的數(shù)據(jù)傳輸是在RS485模式下進(jìn)行的。VPC3通過表1中的信號與光耦隔離驅(qū)動相連接。
按鍵復(fù)位:其作用是對M16和VPC3進(jìn)行復(fù)位。該電路用于監(jiān)視M16的核電壓,當(dāng)核電壓低于3.3 V時,該電路產(chǎn)生一個低脈沖信號傳送到M16的RESE(10)引腳。除了監(jiān)視的功能以外,還可以通過按鍵的閉合來產(chǎn)生一個低脈沖的復(fù)位信號。
2 軟件設(shè)計
對VPC3的軟件操作主要包括兩個部分:VPC3的初始化、主程序和VPC3的中斷處理。主程序和中斷處理流程分別如圖2和圖3所示。
VPC3的初始化程序應(yīng)放在主程序的前面,而中斷處理程序完成CPU對VPC3中斷輸出的響應(yīng)。VPC3上電復(fù)位之后,在正常工作之前必須進(jìn)行初始化,以配置各個寄存器。中斷處理程序用于處理VPC3發(fā)生的各種事件,這些事件包括新的參數(shù)報文事件、全局控制命令報文事件、進(jìn)入或退出數(shù)據(jù)交換狀態(tài)事件、新的配置報文事件、新的地址設(shè)置報文事件、監(jiān)測到波特率事件和看門狗溢出事件。
數(shù)據(jù)輸入和輸出處理(輸入、輸出相對于主站而言)及用戶診斷數(shù)據(jù)輸入可以放在應(yīng)用程序主循環(huán)中。在一個應(yīng)用循環(huán)申,由應(yīng)用來刷新輸入BUF中的數(shù)據(jù),保障所有輸入數(shù)據(jù)是最新的更新數(shù)據(jù)。而VPC3在接收到由PROFI-BUS-DP主站傳送的不同輸出數(shù)據(jù)時,會產(chǎn)生輸出標(biāo)志位(同樣位于中斷請求字單元中),CPU通過在應(yīng)用循環(huán)中輪詢該標(biāo)志位來進(jìn)行接收主站數(shù)據(jù)。對于特定應(yīng)用的診斷信息,需要實時地傳遞到主站。主應(yīng)用程序在應(yīng)用循環(huán)中判斷是否有可用的診斷BUF存在,當(dāng)有空閑BUF時應(yīng)用程序輸入診斷信息,并請求更新。對于實時性要求嚴(yán)格的系統(tǒng),應(yīng)采用中斷方式進(jìn)行輸出數(shù)據(jù)和診斷數(shù)據(jù)處理。
結(jié)語
VPC3芯片的使用方法簡單(與SPC3相似),功能比較完善,可以滿足本通信接口設(shè)計的要求。使用VPC3進(jìn)行PROFIBUS-DP從站接口的開發(fā),能夠降低開發(fā)難度和開發(fā)成本;使用現(xiàn)場設(shè)備/儀表上配置PROFIBUS-DP接口,可以滿足相關(guān)行業(yè)的需要。