由RS-232串口到PROFIBUS-DP總線的轉(zhuǎn)換接口設(shè)計(jì)
其中,有以下三個(gè)部分需要重點(diǎn)說(shuō)明。
?。?)SPC3初始化
微處理器對(duì)SPC3的初始化包括:屏蔽不允許的中斷;設(shè)置用戶(hù)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;從StatusRegister取波特率賦;給處理器參數(shù)wd_baud_ctrl_val賦值??紤]到在實(shí)際的系統(tǒng)運(yùn)行中,一般不需要更改從站地址,初始化中將更改站地址標(biāo)志置為FALSE。
?。?)數(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-23
2側(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)。
?。?)在主站配置中要注意,雖然本產(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)外用戶(hù)所接受和采用。本總線橋產(chǎn)品的開(kāi)發(fā),使用戶(hù)可以方便地將具有RS-232接口的傳統(tǒng)儀器設(shè)備集成到PROFIBUS總線系統(tǒng),成為一種符合PROFIBUS總線協(xié)議的新產(chǎn)品。
西門(mén)子plc相關(guān)文章:西門(mén)子plc視頻教程
評(píng)論