從RS-232串口到PROFIBUS-DP總線(xiàn)的轉換接口設計
PROFIBUS是一種國際化、開(kāi)放式、不依賴(lài)于設備生產(chǎn)商的現場(chǎng)總線(xiàn)標準,廣泛適用于制造業(yè)自動(dòng)化、流程工業(yè)自動(dòng)化和樓宇、交通、電力等其他領(lǐng)域自動(dòng)化?;诂F場(chǎng)總線(xiàn)的控制系統要求現場(chǎng)儀表及設備必須具有現場(chǎng)通信能力,而我國目前的實(shí)際情況是:多數傳統儀表及現場(chǎng)設備并不具備現場(chǎng)總線(xiàn)接口,而完全使用國外進(jìn)口設備將會(huì )使系統成本過(guò)高。如何將大量的傳統儀器設備連接到PROFIBUS總線(xiàn)上,實(shí)現PROFIBUS主站與傳統設備之間通信數據透明傳送,成為廣大用戶(hù)急于要解決的問(wèn)題。如:具有RS-232接口的現場(chǎng)測量設備及儀表等,如何使其成為PROFIBUS總線(xiàn)上的一個(gè)從站。本文所講述的這個(gè)接口產(chǎn)品就是處理從RS-232到PROFIBUS-DP的協(xié)議轉換,起到一個(gè)橋的作用,我們稱(chēng)之為總線(xiàn)橋。
本文引用地址:http://dyxdggzs.com/article/201612/329465.htm1. PROFIBUS-DP網(wǎng)絡(luò )協(xié)議
PROFIBUS的網(wǎng)絡(luò )協(xié)議是以ISO頒布的OSI標準七層參考模型為基礎的,只是對第三層到第六層進(jìn)行簡(jiǎn)化。它的三種模塊(FMS、DP和PA)可以適應不同的應用對象和通信速率方面的要求,開(kāi)放性也好。但它們均使用一致的總線(xiàn)存取協(xié)議,該協(xié)議是通過(guò)OSI參考模型第二層(數據鏈路層)來(lái)實(shí)現的,它包括了保證數據可靠性技術(shù)及傳輸協(xié)議和報文處理。
數據鏈路層協(xié)議媒體訪(fǎng)問(wèn)控制(MAL)部分采用受控訪(fǎng)問(wèn)的令牌總線(xiàn)(Token Bus)和主從方式。其中令牌總線(xiàn)與局域網(wǎng)IEEE8024協(xié)議一致,令牌在總線(xiàn)上的各主站間傳遞,持有令牌的主站獲得總線(xiàn)控制權,該主站依照關(guān)系表與從站或與其他主站進(jìn)行通信。主從方式用于主站和從站間通信,其工作特點(diǎn)是:總線(xiàn)上一個(gè)主站控制著(zhù)多個(gè)從站,主站與每一個(gè)從站建立一條邏輯鏈路;主站發(fā)出命令(Command),從站給出響應(response);從站可以連續發(fā)送多個(gè)幀,直到無(wú)信息發(fā)送、達到發(fā)送數量或被主站停止為止。數據鏈路中幀的傳輸過(guò)程分為三個(gè)階段:數據鏈路建立、幀傳輸和鏈路釋放。PROFIBUS-DP并未采用ISO/OSI的應用層,而是自行設置一用戶(hù)層。該層定義了DP的功能、規范與擴展要求等。DP物理層與ISO/OSI參考模型的第一層相同,采用RS-485傳輸技術(shù)。
2. RS-232設備通信協(xié)議
RS-232只是設備通信物理層的一個(gè)標準,因此PROFIBUS主站必須向RS-232設備傳送它能夠理解的數據,這就是RS-232設備的通信協(xié)議。所以,為實(shí)現PROFIBUS主站與RS-232設備的有效數據通信,PROFIBUS主站編程人員應該了解RS-232設備的通信協(xié)議。RS-232設備的通信協(xié)議通常有以下兩類(lèi):
(1)具有應答關(guān)系和若干通信指令的通信協(xié)議
這是應用比較廣泛的通信格式,通信數據可以是ASIIC碼或二進(jìn)制數據。對于這種設備,既有發(fā)送又有接收。用戶(hù)在主站編程,按照協(xié)議規定的報文格式將通信數據填入RS-232總線(xiàn)橋的PROFIBUS數據輸出區,通過(guò)所產(chǎn)生的中斷啟動(dòng)轉換接口將通信數據發(fā)送到設備,然后總線(xiàn)橋自動(dòng)轉入接收狀態(tài)。當總線(xiàn)橋數據全部接收完RS-232設備的回答報文數據后,將回答報文數據自動(dòng)填入PROFIBUS數據輸入區,這樣,PROFIBUS主站可以在PROFIBUS數據輸入區得到RS-232設備的回答報文數據。
(2)無(wú)應答關(guān)系、單純接收或發(fā)送數據(ASIIC碼或二進(jìn)制數據)的通信協(xié)議
此類(lèi)設備(如條碼掃描器)只通過(guò)RS-232接口向PROFIBUS主站發(fā)送數據,也有的設備(如顯示屏)只通過(guò)RS-232接收PROFIBUS主站發(fā)送的數據。PROFIBUS主站實(shí)現這類(lèi)簡(jiǎn)單通信協(xié)議的原理與第一種協(xié)議相同,只是不會(huì )出現沖突,編程更為簡(jiǎn)單。
3. RS232總線(xiàn)橋硬件設計
RS232總線(xiàn)橋系統框圖如圖1所示:
圖1:系統框圖
3.1 SPC3說(shuō)明
西門(mén)子公司提供的SPC3是用于DP智能從站的協(xié)議專(zhuān)用芯片,也是本設計的關(guān)鍵器件。SPC3具有1.5K字節的報文幀存儲器、方式寄存器、狀態(tài)寄存器、中斷寄存器及緩沖區等,各部分地址分配如表1。
表1:SPC3內存單元地址分配
SPC3需外接48MHZ晶振,能自動(dòng)檢測波特率從9.6K到12M??偩€(xiàn)訪(fǎng)問(wèn)是由硬件驅動(dòng)的,與應用對象之間通信采用數據接口,因此數據的交換獨立于總線(xiàn)周期。SPC3的方式寄存器0用于設置PROFIBUS-DP的操作方式,如minTSDR、SYNC、FREEZE等,方式寄存器1設置可動(dòng)態(tài)改變的狀態(tài)。狀態(tài)寄存器存放從站的狀態(tài)信息,以便在任何時(shí)間能掃描總線(xiàn)的介質(zhì)訪(fǎng)問(wèn)子層(MAC)。
集成的監視定時(shí)器(WatchDog),可自動(dòng)識別波特率,并防止出現故障危及外圍設備。一個(gè)公共的中斷輸出,CPU可以通過(guò)讀取中斷寄存器來(lái)判斷中斷源并執行相應中斷。在UART中,實(shí)現并行數據流和串行數據流的變換。在第一個(gè)字符發(fā)送前,SPC3生成發(fā)送請求信號RTS。它集成了完整的DP從站狀態(tài)機,PROFIBU協(xié)議的周期性循環(huán)部分數據通信由SPC3中預先分配的各緩沖區指針的來(lái)回切換完成,其余非循環(huán)部分數據通信則需要由微處理器中的軟件來(lái)實(shí)現。
SPC3自身帶有1.5KB的數據存儲區,至少需要11位地址線(xiàn)。單片機P0口的P0.0~P0.7接SPC3的DB0~DB7端,既作為SPC3的數據線(xiàn),也作為SPC3地址總線(xiàn)的低8位。單片機P2口的P2.0~P2.2接SPC3的AB0~ AB2端,作為SPC3地址總線(xiàn)的高3位,同時(shí)要使SPC3的高5位AB7..3=00000。在軟件程序的設計中,SPC3的數據存儲器的地址區被強制在1000H~15FFH,這要求P2.7~2.4=0001,要想AB4仍為0,就必須將P2.4通過(guò)一個(gè)非門(mén)接SPC3的AB4端。在實(shí)際電路中,SPC3的AB7~5通過(guò)一個(gè)接地電阻接地,使得AB7..5=000,AB3接P2.3始終給出低電平信號即AB3=0,AB4的輸入端通過(guò)一個(gè)可編程邏輯芯片對P2.7~2.4的編碼電路來(lái)實(shí)現(AB4=P2.7|P2.6|P2.5|非P2.4),這樣只要使P2.7~2.4=0001,AB4始終為1,從而保證SPC3的數據存儲器的地址范圍為1000H~15FFH。
3.2 PROFIBUS總線(xiàn)接口
PROFIBUS接口是PROFIBUS標準驅動(dòng)電路,由由兩個(gè)輸入光電隔離電路(6N137,10MBit/s)、一個(gè)輸出光電隔離電路(6N136)、一個(gè)RS-485驅動(dòng)芯片(SN75LS176)、一個(gè)D型9針插頭組成及輔助電路組成。光隔是用以消除來(lái)自零線(xiàn)的干擾,如果現場(chǎng)通信的波特率需要到12M,在光隔選用時(shí)還需要考慮更高的性能,如HCPL7720等。
3.3 RS-232接口
RS232接口電路RS-232驅動(dòng)電路,由一個(gè)輸入光電隔離電路(6N136)、一個(gè)輸出光電隔離電路(6N136)、一個(gè)串口處理芯片(MAX232)、D型9針插頭及輔助電路組成,實(shí)現串口TTL信號到RS-232信號的轉換。
3.4 撥碼開(kāi)關(guān)
一方面用作設置從站地址,另一方面用作RS-232接口設置。上電時(shí),使D7=1,D5~D0作為串口配置數據存入EEPROM,然后將D0撥到0,D6~D0共7位作為設置的從站地址。D2D1D0:串口波特率設置;D4D3:是否有奇/偶校驗;D5:接收/發(fā)送允許。
3.5 微處理器接口
微處理器AT89LS8252由以下幾部分組成:一個(gè)8位中央處理器(CPU),片內8K字節的Flash存儲器,2K字節的EEPROM,片內256字節的SRAM,4個(gè)8位的雙向可尋址I/O端口,一個(gè)全雙工UART串行接口,具有SPI接口,含有WATCHDOG、定時(shí)器等,可滿(mǎn)足接口對程序、配置數據、PROFIBUS標準對異步通信等的需要。AT89LS8252外接24M HZ晶振。。通過(guò)對SPC3的控制實(shí)現PROFIBUS的通信,并在RAM中建立PROFIBUS通信數據緩沖區。另一方面,通過(guò)RS-232接口實(shí)現和外部現場(chǎng)設備的通信,同樣在RAM中建立RS-232通信數據緩沖區。CPU通過(guò)兩個(gè)通信緩沖區的數據交換,實(shí)現PROFIBUS到RS-232的通信。
4. 軟件設計
在西門(mén)子公司的DP從站開(kāi)發(fā)包PACKAGE4中,包括面向SPC3的C原碼固態(tài)程序DPS2。利用它所提供的用戶(hù)宏接口,可以方便的實(shí)現SPC3中各寄存器及緩沖區的初始化設置,根據中斷源類(lèi)型實(shí)現與主站通信數據的接受與發(fā)送。因此單片機不需要考慮從站狀態(tài)機的實(shí)現順序。其主程序流程圖如圖2所示,中斷流程如圖3所示。
圖2:主程序流程圖
圖3:SPC3中斷程序流程圖
其中,有以下三個(gè)部分需要重點(diǎn)說(shuō)明。
(1)SPC3初始化
微處理器對SPC3的初始化包括:屏蔽不允許的中斷;設置用戶(hù)WatchDog值;將ID號、從站地址賦給SPC3對應寄存器,初始化方式寄存器;自定義各buffer長(cháng)度,初始化spc3中各buffer(地址、長(cháng)度賦給對應參數寄存器,并將buffer區清0);從read-cfg-buffer中讀入配置數據計算三個(gè)Din-buffer和三個(gè)Dout-buffer各自的實(shí)際長(cháng)度及地址;獲取三個(gè)Din-buffer中空閑的一個(gè),其地址賦user_input_buffer_ptr_fb;獲取兩個(gè)診斷buffer中空閑的一個(gè)地址賦user_diag_buffer_ptr_fb,置診斷標志user_diag_flag_fb = TRUE;從Status Register取波特率賦;給處理器參數wd_baud_ctrl_val賦值??紤]到在實(shí)際的系統運行中,一般不需要更改從站地址,初始化中將更改站地址標志置為FALSE。
(2)數據通信過(guò)程
當參數化、配置完成后狀態(tài)機進(jìn)入數據交換狀態(tài)。微處理器根據SPC3中斷寄存器的狀態(tài)對SPC3接收到的主站發(fā)送的輸出數據進(jìn)行轉存,同時(shí)組織需通過(guò)SPC3發(fā)送給主站的數據,并根據要求組織外部診斷等。
在RS-232串口通信程序設計中,分別設有串口接受中斷、發(fā)送中斷程序來(lái)處理串口數據的接受和發(fā)送。由于PROFIBUS側的數據更新速率遠遠快于RS-232側的數據更新的速率,為保證由PROFIBUS側輸入的數據能一次性的整塊傳送到RS-232側,需在程序中加一數據緩沖區來(lái)臨時(shí)存儲PROFIBUS 側輸入的數據。在對數據緩沖區中的數據的處理期間,數據緩沖區加鎖,以防止數據緩沖區中數據更新,只有一次處理完成,數據緩沖區才解鎖,允許再次更新其中數據。
在每一次程序循環(huán)中,程序一次性的將整塊PROFIBUS側的輸入數據讀入一數據緩沖區中并將其加鎖,進(jìn)行數據處理,輸出到RS-232側的設備中,接受RS-232側的返回信息;如果數據緩沖區中的PROFIBUS側的輸入數據數據處理完畢,數據緩沖區解鎖,將RS-232 側的輸入數據及信息傳送到PROFIBUS側。依次再循環(huán)。
(3)在主站配置中要注意,雖然本產(chǎn)品的I/O數量可根據PROFIBUS規范任意設定,但配置報文的長(cháng)度是固定的。
結束語(yǔ)
PROFIBUS是世界上最著(zhù)名的工業(yè)現場(chǎng)總線(xiàn)之一,并已為愈來(lái)愈多的國內外用戶(hù)所接受和采用。本總線(xiàn)橋產(chǎn)品的開(kāi)發(fā),使用戶(hù)可以方便地將具有RS-232接口的傳統儀器設備集成到PROFIBUS總線(xiàn)系統,成為一種符合PROFIBUS總線(xiàn)協(xié)議的新產(chǎn)品。
參考文獻:
[1] Siemens,SPC3 and DPS2 User Description,Siemens AG in Fed Rep of Germany,1998
[2] 滿(mǎn)慶豐、韓鋒、夏繼強,開(kāi)發(fā)PROFIBUS-DP智能從站,電測與儀表,2003,40(3)
[3] 方彥軍、朱登攀,圖像傳輸中PROFIBUS接口的設計與實(shí)現,自動(dòng)化儀表,2002,23(12)
評論