咨詢電話
ENGLISH0755-88840386發(fā)布時(shí)間:2021-05-31 15:08:15 |來(lái)源:網(wǎng)絡(luò)轉(zhuǎn)載
電子皮帶秤控制儀表是針對(duì)生產(chǎn)過(guò)程控制的實(shí)際需要而開(kāi)發(fā)的一種低成本專用儀表[1]。該儀表采用dsPIC30F作為CPU;24位的模數(shù)轉(zhuǎn)換器AD7730采集壓力傳感器的模擬信號(hào),并通過(guò)SPI口與dsPIC30F相連;皮帶的速度信號(hào)通過(guò)光電編碼器測(cè)量,并經(jīng)QEI口輸入dsPIC30F;控制信號(hào)經(jīng)電流型數(shù)模轉(zhuǎn)換器AD420輸出,控制變頻器,調(diào)節(jié)電機(jī)轉(zhuǎn)速。儀表中設(shè)有兩個(gè)獨(dú)立的通信接口,一個(gè)配置成RS232,用于與系統(tǒng)機(jī)相連,作為電子皮帶秤系統(tǒng)調(diào)試、參數(shù)設(shè)置和代碼下載的通道;另一個(gè)則配置成RS485。
在電子皮帶秤安裝到現(xiàn)場(chǎng)使用后,由于生產(chǎn)線是采用SIEMENS的S7-300PLC控制的,希望皮帶秤能夠接受生產(chǎn)線控制主機(jī)發(fā)來(lái)的命令,同時(shí)也能將物料流量等數(shù)據(jù)發(fā)送到主機(jī),因此要求電子皮帶秤控制儀表具備有PROFIBUS-DP的通信接口,成為PROFIBUS-DP從站。
雖然PROFIBUS是一個(gè)開(kāi)放的現(xiàn)場(chǎng)總線通信協(xié)議,任何人都可以獲得這個(gè)標(biāo)準(zhǔn)并設(shè)計(jì)各自的軟、硬件解決方案[2]。但該協(xié)議較為復(fù)雜,而且通信過(guò)程中對(duì)時(shí)間響應(yīng)的要求較為嚴(yán)格,目前開(kāi)發(fā)DP從站的解決方案大多采用專用的協(xié)議芯片,如SPC3等[3]來(lái)實(shí)現(xiàn)的。采用專用的協(xié)議芯片的解決方案是一種省時(shí)省力的解決方案,但要求在硬件上進(jìn)行設(shè)計(jì),將協(xié)議芯片直接與儀表控制CPU總線相連,需要占用較多的硬件資源。在所設(shè)計(jì)的電子皮帶秤控制儀表中,控制芯片的硬件資源基本被用完,除非重新設(shè)計(jì),已不可能實(shí)現(xiàn)與專用的協(xié)議芯片的直接相連,采用專門的串口/PROFIBUS-DP轉(zhuǎn)換器又要增加成本。為此只能探索一種軟件解決方案,讓現(xiàn)有的電子皮帶秤控制儀表能成為PROFIBUS-DP從站,滿足生產(chǎn)線的控制需要。
在許多文獻(xiàn)里都提到過(guò)利用單片機(jī)的UART口可以通過(guò)軟件來(lái)實(shí)現(xiàn)PROFIBUS-DP的數(shù)據(jù)鏈路層協(xié)議[2],但尚未見(jiàn)過(guò)實(shí)用的成功實(shí)例報(bào)告。筆者將在對(duì)PROFIBUS-DP進(jìn)行協(xié)議分析的基礎(chǔ)上,充分利用dsPIC30F的UART功能,實(shí)現(xiàn)一種純軟件的PROFIBUS-DP從站解決方案,并成功地運(yùn)用于電子皮帶秤控制儀表中。
1PROFIBUS-DP協(xié)議分析①
為了保證數(shù)據(jù)的高速傳輸,PROFIBUS只采用了物理層、數(shù)據(jù)鏈路層和用戶接口,并通過(guò)數(shù)據(jù)鏈路層FDL(FieldbusDataLink)來(lái)實(shí)現(xiàn)大部分的總線協(xié)議。這種精簡(jiǎn)結(jié)構(gòu)使得數(shù)據(jù)能高速、高效地傳輸,特別適應(yīng)于PLC與現(xiàn)場(chǎng)I/O設(shè)備間的通信。PROFIBUS的物理層采用RS485雙絞線電纜或光纜,其中RS-485傳輸是PRIFIBUS總線中最常用的一種傳輸技術(shù),它既適應(yīng)于需高速傳輸?shù)南到y(tǒng),又適應(yīng)于簡(jiǎn)單、廉價(jià),需快速鋪設(shè)的場(chǎng)合。通信波特率為9.6kbps~12.0Mbps。
PRIFIBUS通常采用基于總線的主從結(jié)構(gòu),可以有多個(gè)主站。主站之間采用令牌環(huán)網(wǎng),確保每個(gè)主站在一個(gè)確定的時(shí)間內(nèi)得到總線存取權(quán)(令牌)。主站與從站之間采用主-從輪詢方式完成信息傳送。主站可以對(duì)從站進(jìn)行賦值、配置、初始化和診斷。而從站一般是被動(dòng)地等待主站的請(qǐng)求,并對(duì)主站的請(qǐng)求進(jìn)行必要的響應(yīng)。
PROFIBUS的數(shù)據(jù)鏈路層幀協(xié)議是很復(fù)雜的,要采用軟件方式實(shí)現(xiàn)一個(gè)可以滿足各種配置需要、能通過(guò)PROFIBUS認(rèn)證的通用站點(diǎn)是很困難的。而本項(xiàng)設(shè)計(jì)的目的是在自行設(shè)計(jì)的專用儀表上增設(shè)一個(gè)可以作為DP從站的PROFIBUS總線接口,讓專用儀表能和總線上的確定主站交換信息,實(shí)現(xiàn)生產(chǎn)線的聯(lián)動(dòng)控制和數(shù)據(jù)采集。為此可以裁剪掉一些不必要的功能,保證專用儀表可以順利地接入PROFIBUS-DP總線,并可靠地與主站實(shí)現(xiàn)數(shù)據(jù)交換。為此根據(jù)專用儀表功能和所需要交換的數(shù)據(jù),編輯一個(gè)該儀表的GSD文件,其中關(guān)鍵是設(shè)置好該設(shè)備的ID、適應(yīng)波特率、從站響應(yīng)時(shí)間和數(shù)據(jù)交換模塊。然后將該GSD文件安裝到PLC的主站中,讓主站可以正確識(shí)別該設(shè)備。
在所設(shè)計(jì)的系統(tǒng)中,選用SIEMENS的S7-300PLC作為主站。在安裝了皮帶秤控制儀表的GSD文件后,通過(guò)實(shí)際測(cè)試和協(xié)議分析后,得到該系統(tǒng)的主-從通信過(guò)程大致可以分為:主站對(duì)從站的第1次診斷、參數(shù)化從站、組態(tài)配置從站、主站對(duì)從站的第2次診斷以及主站與從站之間的循環(huán)數(shù)據(jù)交換。
為了便于以下說(shuō)明,現(xiàn)將報(bào)文幀中的符號(hào)作簡(jiǎn)要說(shuō)明:SD為報(bào)文起始符,SD=0x68表示數(shù)據(jù)域長(zhǎng)度可變的報(bào)文幀;LE為所有數(shù)據(jù)的長(zhǎng)度;LEr為L(zhǎng)E的重復(fù);SDr為SD的重復(fù);DA為傳輸?shù)哪康牡刂?SA為傳輸?shù)脑吹刂?FC為功能碼域;DSAP為目標(biāo)服務(wù)點(diǎn);SSAP為源服務(wù)點(diǎn);DU為用戶數(shù)據(jù)域,最長(zhǎng)為246字節(jié);FCS為所有數(shù)據(jù)的代數(shù)和;ED為報(bào)文幀的結(jié)束標(biāo)志,固定為0x16。
當(dāng)控制儀表的GSD文件輸入到S7-300主站后,主站首先會(huì)定期發(fā)出診斷幀來(lái)判斷控制儀表從站是否在總線上,當(dāng)主站地址為2,從站地址為11時(shí)。
如果控制儀表從站已接到總線上,從站必須在確定時(shí)間內(nèi)響應(yīng)主站請(qǐng)求,即從站應(yīng)發(fā)出一個(gè)診斷響應(yīng)幀,其DU域應(yīng)包含診斷信息數(shù)據(jù)。由于此時(shí)只是主站發(fā)出的第一個(gè)診斷,其目的是判斷從站是否在總線上,因此數(shù)據(jù)域只需包含6個(gè)字節(jié)的基本標(biāo)準(zhǔn)診斷信息,其中數(shù)據(jù)域的第1字節(jié)0x02表示該從站未準(zhǔn)備好交換數(shù)據(jù);第2字節(jié)0x05表示該從站必須重新設(shè)置參數(shù);第4字節(jié)0xFF表示該從站未被任何主站控制或參數(shù)設(shè)置;第5、第6字節(jié)表示該從站的ID號(hào)為0x000B。
在接到第一個(gè)診斷響應(yīng)后,主站將發(fā)出一個(gè)參數(shù)賦值幀給從站,用于指定主站與從站的關(guān)系和從站的操作方式,主要包括從站被主站鎖定,參數(shù)可以被接收;Watchdog啟用;設(shè)定Watchdog時(shí)間;定義從站延遲響應(yīng)時(shí)間和確認(rèn)設(shè)備ID號(hào)等。
從站收到參數(shù)賦值幀后,響應(yīng)報(bào)文非常簡(jiǎn)單,只需用一個(gè)字節(jié)來(lái)對(duì)主站的請(qǐng)求進(jìn)行確認(rèn),即發(fā)一個(gè)確認(rèn)報(bào)文SC=0xE5。
參數(shù)賦值完成后,主站將發(fā)出一個(gè)組態(tài)請(qǐng)求報(bào)文給從站,其作用是對(duì)I/O的類型及性質(zhì)進(jìn)行設(shè)定。本例DU域中的0x11和0x21表示從站應(yīng)該有兩個(gè)字節(jié)的輸入模塊和兩個(gè)字節(jié)的輸出模塊。
從站收到組態(tài)請(qǐng)求幀后,也只需要發(fā)一個(gè)確認(rèn)報(bào)文SC=0xE5即可。
組態(tài)配置完成后,主站將再次發(fā)出診斷幀來(lái)判斷從站的初始化是否正確。
收到第2次診斷幀后,從站應(yīng)發(fā)出一個(gè)響應(yīng)幀,報(bào)告自身的初始化狀態(tài)。此時(shí)數(shù)據(jù)域也只需包含6個(gè)字節(jié)的基本信息,第1字節(jié)0x00表示該從站已準(zhǔn)備好交換數(shù)據(jù);第2字節(jié)0x0C表示W(wǎng)atchdog啟用;第4字節(jié)0x02表示該從站的屬主主站地址為2。
當(dāng)各項(xiàng)初始化過(guò)程結(jié)束,且參數(shù)都正確,就可以啟動(dòng)數(shù)據(jù)交換,主站與從站開(kāi)始正常的周期性數(shù)據(jù)交換。首先主站向從站發(fā)出輸出數(shù)據(jù)。
在收到主站數(shù)據(jù)后,從站需及時(shí)向主站發(fā)出輸入數(shù)據(jù)。
至此將一直處于數(shù)據(jù)交換狀態(tài),實(shí)現(xiàn)了主站與從站之間的通信。
2UART的通信實(shí)現(xiàn)與波特率自適應(yīng)
微芯公司的dsPIC30F是一款16位的數(shù)字信號(hào)控制器,具有單片機(jī)的控制功能和數(shù)字信號(hào)處理器的計(jì)算能力和數(shù)據(jù)吞吐量。dsPIC30F有兩個(gè)獨(dú)立的UART口,在電子皮帶秤控制儀表中,UART2被配置為RS232,用于與系統(tǒng)機(jī)相連,而UART1則配置成RS485。PROFIBUS-DP從站就是采用這個(gè)口RS485來(lái)實(shí)現(xiàn)的。
UART由波特率發(fā)生器(BRG)、異步發(fā)送器和異步接收器組成。UxBRG寄存器控制一個(gè)自由運(yùn)行的16位定時(shí)器的周期。其計(jì)算波特率的公式為:
式中:FCY---系統(tǒng)時(shí)鐘。當(dāng)UxBRG=0時(shí),UART可以獲得最高的波特率為FCY/16。
由于dsPIC30F容許的最高系統(tǒng)時(shí)鐘為30MHz,為了使其UART產(chǎn)生的波特率與PROFI-BUS-DP對(duì)應(yīng),控制儀表的系統(tǒng)時(shí)鐘選擇為24MHz。這樣,UART可產(chǎn)生的最高波特率為1.5Mbps,也就是說(shuō)可能實(shí)現(xiàn)的PROFIBUS-DP的最高波特率僅能達(dá)到1.5Mbps。這個(gè)波特率雖然低了一些,但足以滿足PLC控制生產(chǎn)線的PROFIBUS總線組網(wǎng)要求。
PROFIBUS-DP總線系統(tǒng)中,總線的傳輸速率是根據(jù)實(shí)際應(yīng)用的需要,由主站來(lái)設(shè)定的。為了實(shí)現(xiàn)設(shè)備的復(fù)位和重組,要求從站能主動(dòng)匹配事先定義的總線的傳輸速率,一旦通信速率發(fā)生變化,還能主動(dòng)調(diào)整到新的傳輸速率,也就是說(shuō)從站應(yīng)具有波特率自適應(yīng)能力。
在dsPIC30F芯片上擁有一個(gè)具備自動(dòng)波特率檢測(cè)能力的UART外設(shè),UART接收引腳(RX引腳)上的信號(hào)能在內(nèi)部傳送至一個(gè)輸入捕捉模塊,從而獲得輸入信號(hào)邊沿的時(shí)序,應(yīng)用程序可根據(jù)此時(shí)序計(jì)算出UxBRG寄存器的值,實(shí)現(xiàn)波特率自適應(yīng)。但這種自動(dòng)檢測(cè)的方法取決于接收到的數(shù)據(jù),通常要求主站首先發(fā)送一個(gè)同步字符,如0x55。然而本系統(tǒng)的主站是確定的PLC,主站只能按現(xiàn)場(chǎng)總線傳輸協(xié)議傳送相關(guān)報(bào)文幀,不可能加入所要求的同步字符,很難保證波特率計(jì)算的精度,經(jīng)測(cè)試表明,該方法無(wú)法完成PROFIBUS-DP的波特率自適應(yīng),實(shí)現(xiàn)穩(wěn)定通信。
好在PROFIBUS-DP協(xié)議只支持9.6~12.0Mbps的10級(jí)固定的波特率,總線傳輸信號(hào)可能的工作頻率已知且穩(wěn)定。因此,可以采用窮舉法,在從站啟動(dòng)通信程序后,逐個(gè)嘗試以不同的波特率接收主站發(fā)出的字符,直到能成功接收為止。在所設(shè)計(jì)的系統(tǒng)中,考慮到主站只可能有45.45、93.75、187.5、500、1.5*103Mbps5個(gè)波特率,所對(duì)應(yīng)的從站的UxBRG值分別為32、15、7、2、0。以收到一個(gè)完整的幀為標(biāo)準(zhǔn),在從站初始化時(shí)自動(dòng)進(jìn)入波特率搜尋狀態(tài),逐個(gè)輪詢UxBRG的值來(lái)實(shí)現(xiàn)波特率自適應(yīng)。這種方法簡(jiǎn)單,容易實(shí)現(xiàn),并且系統(tǒng)工作穩(wěn)定。
PROFIBUS-DP總線在數(shù)據(jù)交換過(guò)程中,有嚴(yán)格的報(bào)文幀的結(jié)構(gòu)和相應(yīng)的時(shí)序關(guān)系,如果時(shí)序稍有差錯(cuò),交換就會(huì)終止[5,6]。在主站發(fā)送每一報(bào)文幀前,需加入一段總線休息的同步時(shí)間TSYN,其值固定為33Tbit(Tbit表示傳輸一個(gè)數(shù)據(jù)位占用的時(shí)間,為傳輸速率的倒數(shù))。在從站接收到主站請(qǐng)求后并非立即響應(yīng),而是需要一定的時(shí)間間隔,這個(gè)時(shí)間間隔定義為TSDR,PROFIBUS規(guī)定此值的下限為11Tbit,上下限為60~800Tbit。主站在接收到響應(yīng)報(bào)文幀后,要等待TIDI才能發(fā)送下一幀,TIDI固定為75Tbit。此外,在通信的主站一側(cè)還定義了參數(shù)TSL,它表示從主站發(fā)出請(qǐng)求幀的最后一個(gè)bit到收到響應(yīng)幀的第一個(gè)bit之間的時(shí)間間隔,反映了一個(gè)系統(tǒng)的實(shí)時(shí)性好壞。如果實(shí)際時(shí)間超過(guò)TSL后,主站還未收到從站的響應(yīng),就認(rèn)為系統(tǒng)出錯(cuò),需做出相應(yīng)的處理。
在設(shè)計(jì)一個(gè)從站時(shí),務(wù)必注意滿足TSDR和TSL這兩條件,使從站的反應(yīng)時(shí)間不能過(guò)快也不能太慢,以符合總線時(shí)序關(guān)系。在從站接收到一個(gè)主站請(qǐng)求幀后都必須做一些必要的處理,這些處理所花費(fèi)的CPU時(shí)間通常都能達(dá)到TSDR的下限要求,如果不能滿足(如波特率太低,而CPU運(yùn)行速度太快)可適當(dāng)加入一點(diǎn)延時(shí),以保證時(shí)序關(guān)系。為了保證整個(gè)系統(tǒng)的實(shí)時(shí)性,TSDR的上限和TSL都不能定義得太長(zhǎng),因此要求從站能對(duì)主站的請(qǐng)求及時(shí)做出響應(yīng)。為此在從站控制器編程中采用了兩項(xiàng)技術(shù):一是充分利用了dsPIC30F的UART接收寄存器和發(fā)送寄存器的四級(jí)緩存,保證收入數(shù)據(jù)的及時(shí)接收和輸出數(shù)據(jù)的連續(xù)發(fā)送;二是為了避免被控制器其它任務(wù)的打擾,影響響應(yīng)時(shí)間,在從站收到主站請(qǐng)求幀的最后一個(gè)字節(jié)時(shí),直接在接收中斷中解析該請(qǐng)求幀,并準(zhǔn)備好響應(yīng)數(shù)據(jù),開(kāi)啟發(fā)送中斷。這兩項(xiàng)技術(shù)是通過(guò)多次摸索后,確保實(shí)現(xiàn)與主站穩(wěn)定通信的關(guān)鍵。
3聯(lián)網(wǎng)測(cè)試
為了驗(yàn)證所設(shè)計(jì)電子皮帶秤控制儀表作為PROFIBUS-DP從站的性能,采用西門子公司的S7-300作為主站,并采用STEP7來(lái)配置相應(yīng)的PROFIBUS-DP實(shí)驗(yàn)網(wǎng)絡(luò)[3]。首先在SIMATICMANAGER下建立一個(gè)PROFIBUS-DP項(xiàng)目;然后將S7-300插入總線中作為主站,并將主站地址設(shè)置為2;在配置好通信傳輸速率(如1.5Mbps)后,就可以得到一個(gè)以S7-300為主站的PROFIBUS-DP總線。在硬件配置下添加自行編輯的GSD文件后,可以在PROFIBUS-DP站點(diǎn)目錄中找到電子皮帶秤控制儀表DP從站,將其添加到PROFIBUS-DP總線上并設(shè)置其地址為11,就完成了整個(gè)實(shí)驗(yàn)網(wǎng)絡(luò)的組態(tài)。在將組態(tài)代碼下載到S7-300模塊后,用雙絞線將該模塊的PROFIBUS-DP接口與電子皮帶秤控制儀表的RS485接口相連,就構(gòu)成了測(cè)試平臺(tái)。
在組網(wǎng)結(jié)束后,分別給PLC、電子稱上電,將PLC模式開(kāi)關(guān)選擇RUN狀態(tài),PLC的RUN(綠色)指示燈閃爍幾次后停止閃爍,處于綠色點(diǎn)亮狀態(tài)。指示燈SF(紅色)、BATF(紅色)、FRCE(黃色)、STOP(停止)閃爍幾次后,處于熄滅狀態(tài)。此種狀態(tài)一直持續(xù)下去,說(shuō)明通信在正常運(yùn)行。更換其它波特率,PLC指示燈的狀態(tài)與以上情況相同,也說(shuō)明通信正常。
在PROFIBUS-DP聯(lián)通后,就可以實(shí)現(xiàn)上位PLC與下位電子皮帶秤控制儀表的數(shù)據(jù)交換。根據(jù)在GSD文件中規(guī)定好的數(shù)據(jù)交換格式,PLC送給電子秤的信號(hào)為PIW310~PIW339,共30個(gè)字節(jié)。電子秤送到PLC的信號(hào)單元為PQW300~PQW329共30個(gè)字節(jié)。經(jīng)觀察,在各種波特率下,上下位機(jī)之間均能實(shí)現(xiàn)正常的數(shù)據(jù)交換,基本達(dá)到了生產(chǎn)過(guò)程控制的需求。
4結(jié)束語(yǔ)
PROFIBUS-DP現(xiàn)場(chǎng)總線是一種較為復(fù)雜的通信協(xié)議,而且有嚴(yán)格的時(shí)序要求。要開(kāi)發(fā)符合標(biāo)準(zhǔn)的通用DP從站站點(diǎn),可采用專用的協(xié)議芯片來(lái)實(shí)現(xiàn),但這種解決方案需要占用較多的控制器硬件資源。在控制器硬件資源不夠時(shí),還有一種解決方案就是采用串口/PROFIBUS-DP轉(zhuǎn)換器,不過(guò)這種方式不僅增加了控制器成本,而且還需開(kāi)發(fā)與轉(zhuǎn)換器相連的串口程序。
如果控制器的CPU芯片具有較高的性能,如16位以上的芯片;并且具有足夠高的系統(tǒng)時(shí)鐘,能產(chǎn)生1.5MHz以上的串口波特率;串口的收發(fā)裝置都具有相應(yīng)的緩存,能滿足數(shù)據(jù)交換過(guò)程中的時(shí)序要求,則可以采用軟件方式來(lái)實(shí)現(xiàn)一個(gè)滿足一般工業(yè)控制要求的DP從站站點(diǎn)。只要對(duì)通信過(guò)程中的時(shí)序進(jìn)行嚴(yán)格控制,完全可以實(shí)現(xiàn)從站與主站間的數(shù)據(jù)交換,滿足PROFIBUS-DP總線的實(shí)時(shí)性要求。這是一種經(jīng)濟(jì)實(shí)用的解決方案,對(duì)開(kāi)發(fā)自主的PROFIBUS-DP總線儀表有一定指導(dǎo)意義。
本文源于網(wǎng)絡(luò)轉(zhuǎn)載,如有侵權(quán),請(qǐng)聯(lián)系刪除