1. 程式人生 > >Profibus-DP從站開發總結(轉)

Profibus-DP從站開發總結(轉)

    通訊介面軟體設計:從站程式包括三個部分

     (1)spc3的初始化程式,

     (2)spc3的中斷處理程式和

     (3)具體的I/O應用程式

    spc3的初始化程式應放在具體的IO應用的前面,spc3的中斷輸出作為CPU的中斷輸入, 在spc3正常工作之前,必須進行初始化,以配置各種需要的暫存器;中斷處理程式用於完成spc3發生的各種時間的處理,主要有:

(1)新的引數報文事件;
(2)全域性控制命令報文事件;
(3)進入或退出資料交換狀態事件;
(4)新的配置報文事件;
(5)新的地址設定報文事件;
(6)檢測到波特率事件和看門狗溢位事件。

    資料輸入輸出處理,以及使用者診斷資料輸入可以放在應用程式迴圈中,在一個應用程式迴圈中,由應用來重新整理輸入BUF中的資料,保障所有輸入資料是最新更新的資料。而spc3在接收到由profibus主站傳送的不同輸出資料時,會產生輸出標誌位(同樣位於中斷請求字單元),cpu通過在應用迴圈中輪詢標誌位來接收主站資料,相對於特定應用的診斷資訊,需要實時傳遞到主站,主站用程式在應用迴圈中判斷是否有可用

的診斷BUF存在,當有空閒BUF時,應用程式輸入診斷資訊並請求更新,對於實時性要求嚴格的系統,應採用中斷方式進行輸出資料和診斷資料處理。


    狀態機:狀態機用來描述profibus-dp站在每種情況下的行為,以保證它符合一致性。spc3晶片內部已經集成了狀態機,使用者對狀態機的

控制是很有限的,

   (1)在power-on狀態:從站接收2類主站set_slave_add報文,以改變從站地址,從站應有非易失性的儲存器來存從站的地址,

   (2)在內部啟動後,從站進入WAIT_prm狀態:等待set_prm報文,set_prm報文包括識別號、同步、鎖定等。另外,在此狀態從站還可以接收Get_Cfg和slave_diag報文,但拒絕處理其它報文,不能進行通訊。

   (3)如果set_prm正確,從站進入WAIT_Cfg,等待chk_cfg報文,chk_cfg報文規定輸入和輸出位元組數。另外也可以接收slave_diag和get_cfg報文。

   (4)如果chk_cfg報文正確,從站進入data_exch狀態,進行資料通訊,在此狀態下,從站可以接收writing outputs,reading inputs,global_control,slave_diag。chk_diag。get_cfg報文

    微控制器主要的任務是通過spc3產生的中斷,對spc3接收到的資料進行轉存,組織要通過spc3發給主站的資料,並根據要求組織外部診斷等。