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

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

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

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

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

?

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

  PROFIBUS-DP是經(jīng)過(guò)優(yōu)化的高速低成本通信,專(zhuān)門(mén)用于設(shè)備級(jí)控制系統(tǒng)與分散式I/O的通信。PROFIBUS-DP用于現(xiàn)場(chǎng)的高速數(shù)據(jù)傳送時(shí),主站周期地讀取從站的輸入信息并周期地向從站發(fā)送輸出信息。目前PROFIBUS-DP有3個(gè)功能版本,即DPV0、DPV1、DPV2。DPV0實(shí)現(xiàn)的PROFIBUS-DP基本功能和特征:即采用RS-485雙絞線(xiàn)、雙線(xiàn)電纜或光纜進(jìn)行數(shù)據(jù)傳輸,波特率為9.6K~12Mbps。設(shè)備類(lèi)型有:(1)一類(lèi)主站(DPM1),中央可編程控制器PLC等。(2)二類(lèi)主站(DPM2),如可編程、可組態(tài)、可診斷的設(shè)備。(3)DP從站,如分散式I/O設(shè)備。各主站間令牌傳遞,總線(xiàn)上最大站點(diǎn)(主-從設(shè)備)數(shù)為126。主-從用戶(hù)數(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ù)傳輸,這就使控制過(guò)程缺乏靈活性。而斷路器這樣的現(xiàn)場(chǎng)設(shè)備需要在一定的控制任務(wù)下改變?cè)瓉?lái)的工作狀態(tài),所以就需要實(shí)現(xiàn)非周期性數(shù)據(jù)傳輸。DPV1可實(shí)現(xiàn)這一要求,它是DP的擴(kuò)展功能,是對(duì)DPV0基本功能的補(bǔ)充,且與DPV0兼容。其擴(kuò)展的功能有:

  DPM1與DP從站間可以進(jìn)行非循環(huán)的數(shù)據(jù)傳輸;帶DDLM讀和DDLM寫(xiě)的非循環(huán)讀/寫(xiě)功能,可讀寫(xiě)從站任何所需要的數(shù)據(jù);允許報(bào)警響應(yīng),DP基本功能允許DP從站用診斷信息向主站自發(fā)地傳輸事件,而新增的DDLM-ALAM-ACK功能被用來(lái)直接響應(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ī)使用串行口通過(guò)PC-Adapter與S7-300PLC相連,S7-300和斷路器通過(guò)PROFIBUS總線(xiàn)相連。

1.1 硬件開(kāi)發(fā)

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

?

?

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

1.2 軟件開(kāi)發(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)文來(lái)改變它的地址,然后從站進(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ù),組織要通過(guò)SPC3發(fā)給主站的數(shù)據(jù),并根據(jù)要求組織外部診斷等。

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

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

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

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

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

?

?

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

  

  其中:

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

  IOID對(duì)于SFC58固定為B#16#54,對(duì)于SFC59固定為B#16#55。

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

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

  RECORD對(duì)應(yīng)需要傳輸?shù)臄?shù)據(jù)記錄。對(duì)SFC58讀,則設(shè)定從從站模塊讀上來(lái)的數(shù)據(jù)保存的地址以及數(shù)量;對(duì)SFC59寫(xiě),則設(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í),可以從總線(xiàn)觀測(cè)到04 5E C5這3個(gè)特征的16進(jìn)制數(shù)據(jù)。如圖4所示,04代表slot_num,5E代表Index索引號(hào)(對(duì)應(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í),可以從總線(xiàn)觀測(cè)到04 5E 2E這3個(gè)特征的16進(jìn)制數(shù)據(jù)。

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

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

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

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

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

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

?

?

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

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

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

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

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

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

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

  (4)對(duì)周期性數(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),不但滿(mǎn)足了在工業(yè)現(xiàn)場(chǎng)對(duì)于實(shí)時(shí)監(jiān)控?cái)嗦菲鞴ぷ鳡顟B(tài)的需求,而且可動(dòng)態(tài)地修改斷路器工作參數(shù),極大地方便了斷路器的工業(yè)控制。因此,PROFIBUS總線(xiàn)在工業(yè)自動(dòng)化中有廣泛的應(yīng)用前景。

?

參考文獻(xiàn)

1 SIEMENS.SPC3 PROFIBUS Controller User Description.1996

2 陽(yáng)憲惠.現(xiàn)場(chǎng)總線(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)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話(huà)通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話(huà):010-82306118;郵箱:aet@chinaaet.com。