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發給主站的資料,并根據要求組織外部診斷等。