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