《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 業(yè)界動(dòng)態(tài) > 基于PROFIBUS DPV1的斷路器通信單元的開發(fā)

基于PROFIBUS DPV1的斷路器通信單元的開發(fā)

2009-09-23
作者:王 石 韓 兵

  摘?? 要: 基于PROFIBUS-DPV1總線的斷路器(ACB、MCCB)通信單元的硬件和軟件設(shè)計(jì),以及斷路器的配置和診斷。重點(diǎn)論述了支持PROFIBUS-DPV1協(xié)議的SPC3智能從站通信芯片的使用及PRODAVE S7軟件開發(fā)包的使用。

  關(guān)鍵詞: PROFIBUS-DP? SPC3? PRODAVE? STEP7? 斷路器

?

  PROFIBUS協(xié)議是開放的,與制造商無關(guān),無知識產(chǎn)權(quán)保護(hù)的標(biāo)準(zhǔn)。原則上,PROFIBUS協(xié)議在任何微處理器上都可以實(shí)現(xiàn),在微處理器內(nèi)部或外部安裝異步串行通信接口(UART)即可完成。

  PROFIBUS-DP是經(jīng)過優(yōu)化的高速低成本通信,專門用于設(shè)備級控制系統(tǒng)與分散式I/O的通信。PROFIBUS-DP用于現(xiàn)場的高速數(shù)據(jù)傳送時(shí),主站周期地讀取從站的輸入信息并周期地向從站發(fā)送輸出信息。目前PROFIBUS-DP有3個(gè)功能版本,即DPV0、DPV1、DPV2。DPV0實(shí)現(xiàn)的PROFIBUS-DP基本功能和特征:即采用RS-485雙絞線、雙線電纜或光纜進(jìn)行數(shù)據(jù)傳輸,波特率為9.6K~12Mbps。設(shè)備類型有:(1)一類主站(DPM1),中央可編程控制器PLC等。(2)二類主站(DPM2),如可編程、可組態(tài)、可診斷的設(shè)備。(3)DP從站,如分散式I/O設(shè)備。各主站間令牌傳遞,總線上最大站點(diǎn)(主-從設(shè)備)數(shù)為126。主-從用戶數(shù)據(jù)傳送采用循環(huán)方式,每個(gè)DP從站的輸入和輸出數(shù)據(jù)最大為246字節(jié)。主-主數(shù)據(jù)傳送采用非循環(huán)方式;DPM1與DP從站之間的數(shù)據(jù)傳送分為3個(gè)階段:參數(shù)設(shè)定、組態(tài)配置和數(shù)據(jù)交換。

  因?yàn)镈PV0只允許主站和從站之間進(jìn)行周期性數(shù)據(jù)交換,而不允許進(jìn)行非周期性數(shù)據(jù)傳輸,這就使控制過程缺乏靈活性。而斷路器這樣的現(xiàn)場設(shè)備需要在一定的控制任務(wù)下改變原來的工作狀態(tài),所以就需要實(shí)現(xiàn)非周期性數(shù)據(jù)傳輸。DPV1可實(shí)現(xiàn)這一要求,它是DP的擴(kuò)展功能,是對DPV0基本功能的補(bǔ)充,且與DPV0兼容。其擴(kuò)展的功能有:

  DPM1與DP從站間可以進(jìn)行非循環(huán)的數(shù)據(jù)傳輸;帶DDLM讀和DDLM寫的非循環(huán)讀/寫功能,可讀寫從站任何所需要的數(shù)據(jù);允許報(bào)警響應(yīng),DP基本功能允許DP從站用診斷信息向主站自發(fā)地傳輸事件,而新增的DDLM-ALAM-ACK功能被用來直接響應(yīng)在DP從站上接收的報(bào)警數(shù)據(jù);DPM1與從站間的非循環(huán)數(shù)據(jù)傳輸。

1?硬件設(shè)計(jì)

  本系統(tǒng)最小實(shí)現(xiàn)由3個(gè)單元組成:上位機(jī)PC,DP主站的S7-300PLC和DP從站的斷路器。各單元相互連接框圖如圖1所示。

?

?

  上位機(jī)使用串行口通過PC-Adapter與S7-300PLC相連,S7-300和斷路器通過PROFIBUS總線相連。

1.1 硬件開發(fā)

  在開發(fā)DP從站通信單元中,采用了專用的西門子ASIC芯片SPC3。SPC3是一種用于PROFIBUS從站的智能通信芯片,支持PROFIBUS-DP協(xié)議。圖1中斷路器的DP從站通信單元的詳細(xì)框圖如圖2所示。

?

?

  在圖2中,RS485總線驅(qū)動(dòng)器一側(cè)與D型插座相連,另一側(cè)通過光耦與SPC3相連。SPC3不能獨(dú)立工作,需要外接微處理器。SPC3有8根數(shù)據(jù)線和11根地址線,其中低8位地址線與數(shù)據(jù)線復(fù)用,可以接80C32、80C166、80C165、HC11、HC16、HC196等單片機(jī)。SPC3本身具有地址鎖存功能,不需另加鎖存器,且自身可以產(chǎn)生片選信號。本系統(tǒng)采用了80C32微處理器作為SPC3的外接處理器。

1.2 軟件開發(fā)

  PROFIBUS-DP的狀態(tài)機(jī)構(gòu)可以保證DP站在每種情況下行為的一致性,其狀態(tài)機(jī)如圖3所示。SPC3內(nèi)部集成了狀態(tài)機(jī)構(gòu)。在POWER-ON狀態(tài)下,從站可以從主站接收Set_Slave_Add報(bào)文來改變它的地址,然后從站進(jìn)入Wait_Parameter狀態(tài),等待參數(shù)化。同時(shí),在此狀態(tài)下,從站還可以接收Slave_Diag、Get_cfg報(bào)文。參數(shù)化完成后,從站進(jìn)入Wait_Cfg狀態(tài),等待Chk_Cfg報(bào)文。完成Chk_Cfg后,從站進(jìn)入Data_Exchange狀態(tài),進(jìn)行周期性數(shù)據(jù)傳輸。若組態(tài)和數(shù)據(jù)交換狀態(tài)不成功,則返回到參數(shù)化階段。進(jìn)入Data_Exchange狀態(tài)后,從站可以接收Rd_inp、Rd_Outp、Slave_Diag、Chk_Cfg、Set_Prm、Get_Cfg、MSAC_C1_READ、MSAC_C1_WRITE、MSAC_C1_ALARM_QUIT等報(bào)文。其中,后面3個(gè)報(bào)文是PROFIBUS-DPV1才有的功能,而DPV0不存在這3個(gè)報(bào)文。

?

?

  由于SPC3集成了完整的PROFIBUS-DP協(xié)議,因此80C32不需要參與處理PROFIBUS-DP狀態(tài)機(jī)。80C32的主要任務(wù)是根據(jù)SPC3產(chǎn)生的中斷,轉(zhuǎn)存SPC3接收到的主站發(fā)出的輸出數(shù)據(jù),組織要通過SPC3發(fā)給主站的數(shù)據(jù),并根據(jù)要求組織外部診斷等。

  軟件開發(fā)采用了西門子公司提供的針對SPC3的程序開發(fā)包DPSE,而DPSE提供支持DPV1的功能。其低級版本的程序開發(fā)包DPS2主要用于開發(fā)DPV0通信。

  DPSE程序開發(fā)包使用C語言開發(fā),并提供了一系列封裝好的C接口函數(shù),使用戶可以方便地對SPC3的寄存器和內(nèi)存進(jìn)行操作,實(shí)現(xiàn)PROFIBUS-DPV1通信。

  在DPSE開發(fā)包中實(shí)現(xiàn)非周期讀服務(wù)的回調(diào)函數(shù)是DPSE_READ_REQ( )。調(diào)用這個(gè)函數(shù)需要傳遞2個(gè)參數(shù):第1個(gè)參數(shù)是SAP,即服務(wù)入口點(diǎn)(對于非周期讀服務(wù),入口點(diǎn)固定為50)。第2個(gè)參數(shù)是PDU,即協(xié)議數(shù)據(jù)單元。它是一個(gè)非周期讀服務(wù)的協(xié)議數(shù)據(jù)單元結(jié)構(gòu)類型。實(shí)現(xiàn)非周期寫服務(wù)的回調(diào)函數(shù)是DPSE_WRITE_REQ( )。調(diào)用這個(gè)函數(shù)也需要傳遞2個(gè)參數(shù):第1個(gè)參數(shù)是SAP(對非周期寫服務(wù),服務(wù)入口點(diǎn)固定為51);第2個(gè)參數(shù)是PDU。對于寫服務(wù),對應(yīng)的是寫服務(wù)的協(xié)議數(shù)據(jù)單元類型。

  PDU數(shù)據(jù)結(jié)構(gòu)如圖4所示。其中function_num表示功能號,slot_num表示從站的槽號,Index表示讀或?qū)憯?shù)據(jù)塊的索引號,length表示讀或?qū)憯?shù)據(jù)塊的長度,pdu_data表示傳輸?shù)膮f(xié)議數(shù)據(jù)。這是根據(jù)PROFIBUS_

DP協(xié)議封裝好的數(shù)據(jù)格式。

?

?

  西門子S7-300PLC作為主站,集成了上述非周期讀和非周期寫服務(wù)。對于DS_READ服務(wù),可以通過S7-300特殊功能調(diào)用SFC 59激活。對于DS_WRITE服務(wù),可以通過特殊功能調(diào)用SFC 58激活。

  

  其中:

  REQ是調(diào)用請求位。當(dāng)此位為1時(shí),調(diào)用執(zhí)行。

  IOID對于SFC58固定為B#16#54,對于SFC59固定為B#16#55。

  LADDR為模塊I/O起始地址(該地址對應(yīng)于使用STEP7軟件進(jìn)行硬件組態(tài)時(shí)模塊的地址)。

????RECNUM為S7-300數(shù)據(jù)記錄號,數(shù)值范圍為2~241。

  RECORD對應(yīng)需要傳輸?shù)臄?shù)據(jù)記錄。對SFC58讀,則設(shè)定從從站模塊讀上來的數(shù)據(jù)保存的地址以及數(shù)量;對SFC59寫,則設(shè)定將要傳輸給從站模塊的數(shù)據(jù)的地址及數(shù)量,保存或傳輸方式都以字節(jié)為單位。

  RET_VAL表示調(diào)用返回值。根據(jù)這個(gè)值可以判斷調(diào)用是否成功執(zhí)行。如果失敗,可以得到失敗的原因。

BUSY表示調(diào)用忙位。當(dāng)調(diào)用執(zhí)行時(shí),此值為1;調(diào)用結(jié)束時(shí),此值為零。因此可以根據(jù)這個(gè)位的值,判斷調(diào)用是否結(jié)束。

  根據(jù)PROFIBUS DPV1協(xié)議,當(dāng)執(zhí)行SFC58示例時(shí),可以從總線觀測到04 5E C5這3個(gè)特征的16進(jìn)制數(shù)據(jù)。如圖4所示,04代表slot_num,5E代表Index索引號(對應(yīng)于RECNUM),C5代表length傳輸?shù)臄?shù)據(jù)量(C5十進(jìn)制為197,即192個(gè)字節(jié)再加上協(xié)議數(shù)據(jù)幀標(biāo)志)。同理,當(dāng)執(zhí)行SFC59示例時(shí),可以從總線觀測到04 5E 2E這3個(gè)特征的16進(jìn)制數(shù)據(jù)。

2?上位機(jī)軟件開發(fā)

  上位機(jī)軟件主要功能:

  (1)監(jiān)測PROFIBUS總線上各DP從站的工作狀態(tài)。

  (2)如果DP從站具有DPV1功能,則通過此軟件可以在需要的時(shí)候調(diào)整該DP從站的工作參數(shù)。

  上述功能的實(shí)現(xiàn)主要基于PRODAVE S7軟件開發(fā)包,用戶可以通過PRODAVE S7使用VB、VC等高級語言進(jìn)行相關(guān)的軟件開發(fā)。對于使用VC開發(fā)的用戶,PRODAVE S7提供了2個(gè)封裝好的DLL,而在這2個(gè)DLL中提供了訪問PLC的相關(guān)函數(shù),并且提供了鏈接這2個(gè)DLL的相應(yīng)的靜態(tài)LIB文件。本上位機(jī)軟件就是采用了VC開發(fā)。

  要使用PRODAVE S7,必須正確設(shè)置好西門子系列PLC和PC機(jī)的連接。本系統(tǒng)S7-300通過一個(gè)PC-Adapter連接到PC機(jī)的串口上,如圖5所示。

?

?

  PRODAVE S7提供的訪問PLC的函數(shù)主要可以用來訪問PLC的各種內(nèi)存區(qū)域。對于S7-300,主要有:可以讀寫輸入/輸出映像區(qū)、讀寫計(jì)時(shí)器(timer)數(shù)據(jù)、讀寫計(jì)數(shù)器(counter)數(shù)據(jù)、讀寫DB數(shù)據(jù)(塊)、讀寫內(nèi)存字節(jié)數(shù)據(jù)、讀寫內(nèi)存的位數(shù)據(jù)。對于S7-200和S7-400,讀者可以查閱PRODAVE幫助文檔。

  在使用這套開發(fā)軟件包時(shí),需要注意:

  (1)初始化連接。若函數(shù)是load_tool,調(diào)用此函數(shù)時(shí)必須正確設(shè)置adr_table參數(shù)。如果只訪問1個(gè)PLC,一般情況下采用默認(rèn)設(shè)置即可;如果要訪問多個(gè)通過1個(gè)PC-Adapter連接起來的PLC,則需要正確設(shè)置adr_table參數(shù),才能使初始化連接成功。只有當(dāng)初始化連接成功了,才能訪問PLC,這一點(diǎn)很重要。

  (2)初始化連接以后,如果系統(tǒng)中只有1個(gè)PLC,則此PLC即為當(dāng)前活動(dòng)的PLC;如果系統(tǒng)中有多個(gè)PLC,則必須調(diào)用new_ss函數(shù)來激活想要訪問的PLC。

  (3)不能在初始化成功以后再繼續(xù)初始化,否則會出錯(cuò)。如果要重新初始化,必需先使用unload_tool函數(shù)斷開連接。

????(4)使用相關(guān)函數(shù)從PLC內(nèi)存區(qū)域中讀出的數(shù)據(jù)字的結(jié)構(gòu)和常用的PC機(jī)數(shù)據(jù)字的結(jié)構(gòu)位置正好相反。常用的PC機(jī)中內(nèi)存字的結(jié)構(gòu)使用的是intel標(biāo)記,即先低位字節(jié),再高位字節(jié)。而使用PRODAVE讀出的PLC內(nèi)存字使用的是STEP5標(biāo)記,即先高位字節(jié),再低位字節(jié)。所以在編程的時(shí)候需要做一些處理,才能得到相應(yīng)的數(shù)據(jù)。該軟件的主要功能如下:

  (1)設(shè)置從站地址。

  (2)對應(yīng)STEP7軟件的硬件組態(tài),配置該從站各個(gè)I/O模塊的輸入/輸出地址。配置好這些地址后,就可以使用PRODAVE軟件開發(fā)包關(guān)于訪問PLC輸入、輸出映像區(qū)函數(shù)(e_field_read、e_field_write、a_field_read、a_field_write)訪問作為主站的PLC和作為從站的I/O模塊的周期性數(shù)據(jù)。

  (3)根據(jù)用戶在PLC中關(guān)于SFC 58和SFC 59的功能調(diào)用編程,進(jìn)行相應(yīng)的DPV1配置,例如指定非周期讀或?qū)慏B的數(shù)據(jù)塊地址、讀請求位、寫請求位和BUSY位等一系列相關(guān)設(shè)置。通過這些設(shè)置,就可以通過PRODAVE軟件開發(fā)包提供的函數(shù)mb_setbit設(shè)置請求位為1來激活非周期服務(wù)。通過testbit函數(shù)測試BUSY位是否為零來判斷服務(wù)是否結(jié)束;通過db_read、db_write 函數(shù)可以讀或者寫相應(yīng)的數(shù)據(jù)塊數(shù)據(jù)。因此,采用此方法,可以在上位機(jī)上實(shí)現(xiàn)控制主站和從站的非周期數(shù)據(jù)交換。

  (4)對周期性數(shù)據(jù)和非周期性數(shù)據(jù)進(jìn)行相應(yīng)的處理,可實(shí)現(xiàn)實(shí)時(shí)監(jiān)控和動(dòng)態(tài)修改從站參數(shù)。

軟件框架原理圖如圖6所示。

?

?

????基于PROFIBUS DPV1斷路器通信單元的實(shí)現(xiàn),不但滿足了在工業(yè)現(xiàn)場對于實(shí)時(shí)監(jiān)控?cái)嗦菲鞴ぷ鳡顟B(tài)的需求,而且可動(dòng)態(tài)地修改斷路器工作參數(shù),極大地方便了斷路器的工業(yè)控制。因此,PROFIBUS總線在工業(yè)自動(dòng)化中有廣泛的應(yīng)用前景。

?

參考文獻(xiàn)

1 SIEMENS.SPC3 PROFIBUS Controller User Description.1996

2 陽憲惠.現(xiàn)場總線技術(shù)及其應(yīng)用.北京:清華大學(xué)出版社,1999

3 郭宗仁,吳亦鋒,郭永.可編程序控制器應(yīng)用系統(tǒng)設(shè)計(jì)及通信網(wǎng)絡(luò)技術(shù).北京:人民郵電出版社,2002

4?SIEMENS.Profibus Specification.1997

5?SIEMENS.PRODAVE S7 Mannual.1999

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。