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