PROFIBUS-DP接口開(kāi)發(fā)技術(shù)研究和應(yīng)用
1 引言
現(xiàn)場(chǎng)總線(xiàn)被譽(yù)為自動(dòng)化領(lǐng)域的計(jì)算機(jī)局域網(wǎng),是自動(dòng)化領(lǐng)域的研究熱點(diǎn)[1]。PROFIBUS-DP是應(yīng)用在現(xiàn)場(chǎng)自動(dòng)化儀表和設(shè)備領(lǐng)域的一種主要的現(xiàn)場(chǎng)總線(xiàn)并且已經(jīng)成為國(guó)際電工委員會(huì)制定的國(guó)際標(biāo)準(zhǔn)之一(IEC61158 TYPE3)和中國(guó)國(guó)家標(biāo)準(zhǔn)(GB/T 20540-2006)?,F(xiàn)場(chǎng)總線(xiàn)技術(shù)是電子技術(shù),通信技術(shù),智能儀表技術(shù)和自動(dòng)控制技術(shù)相互結(jié)合的產(chǎn)物[2]。
PROFIBUS-DP接口的開(kāi)發(fā)包括硬件部分、軟件部分和電子設(shè)備數(shù)據(jù) GSD文件部分。
2 基于 PROFIBUS-DP的自動(dòng)化系統(tǒng)的構(gòu)建
因?yàn)槭情_(kāi)發(fā) PROFIBUS-DP接口,所以總體結(jié)構(gòu)較為簡(jiǎn)單和實(shí)用??傮w體系結(jié)構(gòu)如圖 1所示。主站和從站通過(guò) PROFIBUS專(zhuān)用網(wǎng)線(xiàn)組成一個(gè)單主站 PROFIBUS系統(tǒng)。主站由計(jì)算機(jī)和SST公司的總線(xiàn)卡 5136-PFB-PCI組成;現(xiàn)場(chǎng)設(shè)備(圖中是智能控制器)和本文開(kāi)發(fā)的從站總線(xiàn)接口卡組成 PROFIBUS-DP現(xiàn)場(chǎng)智能設(shè)備,作為 PROFIBUS-DP從站。圖中的智能控制器、變頻器和泵共同構(gòu)成閉環(huán)系統(tǒng)。本文重點(diǎn)介紹總線(xiàn)接口卡的開(kāi)發(fā)。
500)this.style.width=500;" border="0" />
3 PROFIBUS-DP接口開(kāi)發(fā)重點(diǎn)和難點(diǎn)在于:實(shí)現(xiàn)狀態(tài)機(jī)和服務(wù)訪(fǎng)問(wèn)點(diǎn)。
3.1開(kāi)發(fā)方案分析、比較和和選擇 利用單片機(jī)的方案需要理解協(xié)議的大部分細(xì)節(jié),實(shí)現(xiàn)的 PROFIBUS-DP站的傳輸速率受單片機(jī)晶振的限制,根本無(wú)法達(dá)到最大傳輸速率12Mbit/s。
通信專(zhuān)用芯片集成了 PROFIBUS-DP協(xié)議和狀態(tài)機(jī),并且給出了具體的服務(wù)訪(fǎng)問(wèn)點(diǎn);使用專(zhuān)用芯片開(kāi)發(fā) PROFIBUS-DP總線(xiàn)接口卡,不再需要考慮的協(xié)議大部分細(xì)節(jié),重點(diǎn)是熟練使用專(zhuān)用芯片。
與利用單片機(jī)的實(shí)現(xiàn)方案比較,使用專(zhuān)用芯片可大量地節(jié)約開(kāi)發(fā)時(shí)間和成本,傳輸速率可以達(dá)到12Mbit/s。因此,本文使用專(zhuān)用芯片 SPC3進(jìn)行總線(xiàn)接口卡的開(kāi)發(fā)。
3.2 SPC3功能介紹 [4]SPC3基本上集成了完整的 PROFIBUS-DP協(xié)議。 SPC3集成有 1.5K字節(jié)的RAM,方式寄存器,狀態(tài)寄存器,中斷控制器,看門(mén)狗定時(shí)器(保護(hù)監(jiān)控定時(shí)器)和各種緩沖區(qū);能夠自動(dòng)地識(shí)別 9.6K到 12M的波特率。微順序控制器控制著 SPC3整個(gè)處理過(guò)程。總線(xiàn)定時(shí)器直接控制串行總線(xiàn)上的總線(xiàn)時(shí)間。
SPC3包括如下的服務(wù)訪(fǎng)問(wèn)點(diǎn)(服務(wù)):缺省SAP(讀寫(xiě)數(shù)據(jù)交換),SAP55(改變站地址),SAP56(讀輸入),SAP57(讀輸出),SAP58(向 DP從站發(fā)控制命令),SAP59(讀組態(tài)數(shù)據(jù)),SAP60(讀從站診斷信息),SAP61(發(fā)送參數(shù)設(shè)置數(shù)據(jù)),SAP62(校驗(yàn)組態(tài)數(shù)據(jù))。
3.3硬件設(shè)計(jì)主要是選用 RS485芯片和光耦芯片,如果從站對(duì)傳輸速率的要求可以低于 12M波特率,那么有性能指標(biāo)稍低的 RS485芯片和光耦芯片。另外本文開(kāi)發(fā)的總線(xiàn)接口卡設(shè)計(jì)為可以選擇雙口 RAM或者 RS232接口將總線(xiàn)接口卡與現(xiàn)場(chǎng)設(shè)備連接。
3.4軟件設(shè)計(jì)
3.4.1 PROFIBUS-DP狀態(tài)機(jī)的實(shí)現(xiàn)
軟件設(shè)計(jì)依據(jù)是 SPC3中集成的 PROFIBUS-DP狀態(tài)機(jī) [4],狀態(tài)機(jī)用來(lái)描述 PROFIBUS-DP站在每種情況下的行為;如圖 2所示。
500)this.style.width=500;" border="0" />
整個(gè)程序采用了結(jié)構(gòu)化、模塊化的方法,依據(jù) PROFIBUS-DP狀態(tài)機(jī)提供的流程進(jìn)行編寫(xiě)。按照對(duì)實(shí)時(shí)性的不同要求,各個(gè)服務(wù)訪(fǎng)問(wèn)點(diǎn)分別采用查詢(xún)或者中斷方式來(lái)實(shí)現(xiàn)。主函數(shù)主要是完成必要的初始化工作和用查詢(xún)方式實(shí)現(xiàn)服務(wù)訪(fǎng)問(wèn)點(diǎn)。中斷函數(shù),主要是用中斷方式實(shí)現(xiàn)服務(wù)訪(fǎng)問(wèn)點(diǎn)。
3.4.2 PROFIBUS-DP系統(tǒng)主-從通訊中的實(shí)時(shí)性和時(shí)間確定性
令牌是在主站之間傳遞總線(xiàn)控制權(quán)的一種特殊報(bào)文。當(dāng)某個(gè)主站得到令牌時(shí),它將在一個(gè)規(guī)定的時(shí)間段內(nèi)獲得總線(xiàn)控制權(quán),在這段時(shí)間內(nèi)該主站可依照與主站或從站的關(guān)系表和所有的主站或從站發(fā)送所需要發(fā)送的幀,當(dāng)該主站的控制時(shí)間結(jié)束時(shí),它就將令牌傳遞給下一個(gè)主站[3]。
在 PROFIBUS-DP主-從通訊中,如果在從站中有新的診斷信息,則在數(shù)據(jù)交換模式下,DP從站將以高優(yōu)先級(jí)的報(bào)文對(duì)主站響應(yīng),以此來(lái)通知主站;在其他情況下,從站都是以低優(yōu)先級(jí)的報(bào)文回答主站的??梢?jiàn),從站用診斷報(bào)文的方式發(fā)送數(shù)據(jù)相比其他情況,實(shí)時(shí)性要更好。
如果主站的令牌持有時(shí)間為零或負(fù)(即主站沒(méi)有時(shí)間處理從站的信息),則 DP從站在主-從通訊中仍然可以用診斷報(bào)文的方式發(fā)送一個(gè)高優(yōu)先級(jí)信息;這樣,在任何情況下都可以保證來(lái)自 DP從站的數(shù)據(jù)至少可以以一個(gè)診斷報(bào)文的方式得以發(fā)送。這種機(jī)制保證了PROFIBUS-DP主-從通訊有很好的時(shí)間確定性。
3.4.3 服務(wù)訪(fǎng)問(wèn)點(diǎn)以及對(duì)應(yīng)的 PROFIBUS-DP服務(wù)的實(shí)現(xiàn)舉例
服務(wù)訪(fǎng)問(wèn)點(diǎn)實(shí)現(xiàn)也就是對(duì)應(yīng)的 PROFIBUS-DP服務(wù)的實(shí)現(xiàn)。只要是熟練使用專(zhuān)用芯片并熟練掌握 PROFIBUS-DP的一些必要的知識(shí),就可以實(shí)現(xiàn)所有的服務(wù)訪(fǎng)問(wèn)點(diǎn)。鑒于“讀從站診斷信息”這項(xiàng)服務(wù)對(duì)于實(shí)時(shí)性和時(shí)間確定性的重要性,下面以服務(wù)訪(fǎng)問(wèn)點(diǎn) 60即服務(wù)“讀從站診斷信息”的實(shí)現(xiàn)來(lái)舉例說(shuō)明。
在使用專(zhuān)用芯片 SPC3實(shí)現(xiàn)服務(wù)訪(fǎng)問(wèn)點(diǎn) 60的時(shí)候,以下問(wèn)題需要重點(diǎn)考慮:
(1) 診斷緩沖區(qū)的結(jié)構(gòu) [3]
程序開(kāi)發(fā)者向 SPC3傳遞診斷緩沖區(qū)的數(shù)據(jù)。在診斷緩沖區(qū)中,由程序開(kāi)發(fā)者在第 1個(gè)字節(jié)(字節(jié)0)中的位0、位 1和位 2這三個(gè)位的位置分別儲(chǔ)存 “外部診斷”位、“靜態(tài)診斷”位和“外部診斷溢出”位。診斷緩沖區(qū)的前 6個(gè)字節(jié)中除了上述 3個(gè)位,其它都是固定空間;當(dāng)發(fā)送診斷緩沖區(qū)的數(shù)據(jù)時(shí),SPC3按照 PROFIBUS-DP標(biāo)準(zhǔn)預(yù)處理前 6個(gè)字節(jié)。字節(jié)6-243是程序開(kāi)發(fā)者輸入的外部診斷數(shù)據(jù)。
(2) 診斷處理流程 [3]
當(dāng)兩個(gè)緩沖區(qū)被交換時(shí),內(nèi)部 04H單元的“診斷標(biāo)志”被置位,這時(shí)稱(chēng)“診斷標(biāo)志”被激活。對(duì)于一個(gè)激活的“診斷標(biāo)志”,SPC3在下一個(gè)“讀寫(xiě)數(shù)據(jù)報(bào)文”期間,用高優(yōu)先級(jí)響應(yīng)數(shù)據(jù)來(lái)響應(yīng),通知相關(guān)的主站現(xiàn)在從站有新的診斷數(shù)據(jù)。在主站用“讀從站診斷信息”報(bào)文取得新的診斷數(shù)據(jù)以后,“診斷標(biāo)志” 被復(fù)位。接著程序可以查詢(xún)狀態(tài)寄存器中的“診斷標(biāo)志”,以便發(fā)現(xiàn)在原有的診斷數(shù)據(jù)被交換為新的診斷數(shù)據(jù)以前,主站是否已經(jīng)取得原有的診斷數(shù)據(jù)。
(3) 本文中針對(duì)現(xiàn)場(chǎng)智能設(shè)備通信軟件中相應(yīng)的程序設(shè)計(jì)
將“外部診斷”位設(shè)置為“0”,從系統(tǒng)的觀(guān)點(diǎn)看,就可以將數(shù)據(jù)理解為狀態(tài)信息。當(dāng)現(xiàn)場(chǎng)智能設(shè)備中的測(cè)量參數(shù)達(dá)到某值時(shí),將此值作為一個(gè)狀態(tài)信息送往診斷緩沖區(qū)中的字節(jié)6-243,當(dāng)上升一個(gè)百分比時(shí),再送出狀態(tài)信息,供系統(tǒng)遠(yuǎn)程監(jiān)控。所以,現(xiàn)場(chǎng)智能設(shè)備通信軟件設(shè)計(jì)為測(cè)量參數(shù)的狀態(tài)信息可遠(yuǎn)程監(jiān)控。相應(yīng)的外部診斷處理程序程序框圖見(jiàn)圖3。500)this.style.width=500;" border="0" />
即使主站沒(méi)有時(shí)間處理從站的信息,程序仍然可以在重要的參數(shù)超過(guò)某個(gè)值時(shí),用診斷報(bào)文的方式發(fā)送一個(gè)高優(yōu)先級(jí)信息給主站。
3.5 GSD文件編制以及與軟件開(kāi)發(fā)的關(guān)系
GSD文件的精確定義保證所有標(biāo)準(zhǔn)從站和所有標(biāo)準(zhǔn)主站通信 [5]。GSD文件由設(shè)備的開(kāi)發(fā)者準(zhǔn)備,并以電子數(shù)據(jù)單形式向最終用戶(hù)提供。
在 GSD文件的編制過(guò)程中的重點(diǎn)和難點(diǎn)在于:除了精確地理解了 GSD文件的規(guī)格說(shuō)明,最重要的是將 GSD文件和 PROFIBUS-DP通信軟件中的有關(guān)參數(shù)對(duì)應(yīng)起來(lái),否則程序運(yùn)行將出錯(cuò),甚至 PROFIBUS-DP系統(tǒng)不能識(shí)別通信軟件對(duì)應(yīng)的從站。
通信軟件的開(kāi)發(fā)和 GSD文件的編制必須相互配合,有些參數(shù)必須完全一致,這樣才能保證 PROFIBUS通信單元的開(kāi)發(fā)成功。這些參數(shù)包括:是否支持凍結(jié)模式,是否支持同步模式,是否支持傳輸速率的自動(dòng)識(shí)別,是否支持改變從站地址,在 CLEAR模式是否接收數(shù)據(jù)消息,診斷數(shù)據(jù)的最大長(zhǎng)度,參數(shù)數(shù)據(jù)的最大長(zhǎng)度,用戶(hù)參數(shù)數(shù)據(jù)的長(zhǎng)度,用戶(hù)參數(shù)數(shù)據(jù)。
4 總結(jié)
在深入剖析 PROFIBUS-DP狀態(tài)機(jī)和 PROFIBUS-DP服務(wù)流程的基礎(chǔ)上,開(kāi)發(fā)了應(yīng)用于現(xiàn)場(chǎng)智能設(shè)備的包括硬件、通信軟件和電子設(shè)備數(shù)據(jù)文件的總線(xiàn)接口卡。
創(chuàng)新點(diǎn)在于:在滿(mǎn)足 PROFIBUS-DP主-從通訊有很好的時(shí)間確定性的基礎(chǔ)上,實(shí)現(xiàn)了能滿(mǎn)足 PROFIBUS-DP主-從通訊有很好的時(shí)間確定性的服務(wù)訪(fǎng)問(wèn)點(diǎn)SAP60,并且實(shí)現(xiàn)了 SPC3其它的服務(wù)訪(fǎng)問(wèn)點(diǎn),編制了與 PROFIBUS-DP通信軟件完全匹配的電子設(shè)備數(shù)據(jù)文件。
本文中開(kāi)發(fā)的接口已經(jīng)應(yīng)用于多個(gè)現(xiàn)場(chǎng)智能設(shè)備。
參考文獻(xiàn)
[1]陽(yáng)憲惠.現(xiàn)場(chǎng)總線(xiàn)技術(shù)及其應(yīng)用.北京:清華大學(xué)出版社,1999
[2]柴郁,李斌.現(xiàn)場(chǎng)總線(xiàn)技術(shù)的發(fā)展及應(yīng)用展望.儀表技術(shù), 2001年第 2期:43-45
[3]安憲軍,黃爾烈.基于PROFIBUS-DP總線(xiàn)的數(shù)據(jù)通信.微計(jì)算機(jī)信息, 2008,6-1:49-51。
[4] SIMATIC-NET SPC3 and DPS2 User Description (Siemens PROFIBUS Controller according to EN 50 170 Vol 2) .西門(mén)子公司, 2000.2
[5]SIEMENS EN 50 170 Vol 2 working with PROFIBUS-DP Device Description Data Files GSD.西門(mén)子公司,December 20,98