基于MSP430單片機(jī)的Profibus-DP通信接口開(kāi)發(fā)
0 引言
Profibus是開(kāi)放的、與制造商無(wú)關(guān)、無(wú)知識(shí)產(chǎn)權(quán)保護(hù)的標(biāo)準(zhǔn)。因此世界上任何人都可以獲得該標(biāo)準(zhǔn)并設(shè)計(jì)各自的軟硬件解決方案。Pro-fibus-DP通信接口的開(kāi)發(fā)有兩種方案選擇:?jiǎn)纹瑱C(jī)+軟件;單片機(jī)+Profibus通信芯片ASIC。
方案2中Profibus-DP協(xié)議完全由Profibus通信ASIC來(lái)實(shí)現(xiàn),單片機(jī)主要處理用戶(hù)程序。因此方案2開(kāi)發(fā)周期相對(duì)少很多,本文將采用單片機(jī)+Profibus通信ASIC來(lái)實(shí)現(xiàn)Profibus通信接口的設(shè)計(jì)。
1 Profibus-DP基本特性
Profibus包括三個(gè)兼容系列:Profibus-FMS,Profibus-DP,Profibus-PA。FMS提供大量的通信服務(wù)用于完成以中等傳輸速度進(jìn)行的循環(huán)和非循環(huán)的通信服務(wù);DP是一種經(jīng)過(guò)優(yōu)化的高速廉價(jià)的通信連接,適用于實(shí)時(shí)性要求較高的場(chǎng)合,主要用于自動(dòng)控制與分散式外設(shè)之間的通信;PA是專(zhuān)為過(guò)程自動(dòng)化而設(shè)計(jì),具有本質(zhì)安全性,用于安全性要求較高的場(chǎng)合及總線(xiàn)供電的站點(diǎn)。
1.1 協(xié)議結(jié)構(gòu)
Profibus-DP協(xié)議采用了ISO/OSI模型的第1層(物理層)、第2層(數(shù)據(jù)鏈路層),除去了3~7層,并自定義了用戶(hù)接口層,這種協(xié)議結(jié)構(gòu)保證了數(shù)據(jù)傳輸?shù)目焖儆行А?/P>
1.2 報(bào)文結(jié)構(gòu)
Profibus-DP數(shù)據(jù)編碼采用異步不歸零制,傳輸線(xiàn)的空載電平為“1”。為了避免數(shù)據(jù)傳輸中發(fā)生沖突而導(dǎo)致數(shù)據(jù)丟失,在每個(gè)請(qǐng)求報(bào)文發(fā)送前必須保證33位(同步時(shí)間)的空載狀態(tài)。在單個(gè)字符間所有數(shù)據(jù)傳送時(shí)沒(méi)有間隙,即無(wú)縫。各種報(bào)文的格式如圖1所示。
1.3 Profibus-DP從站狀態(tài)機(jī)
圖2為DP從站狀態(tài)機(jī)的簡(jiǎn)單圖示。各種橢圓表示不同的狀態(tài),帶箭頭的連線(xiàn)表示狀態(tài)間的轉(zhuǎn)換,連線(xiàn)上的文字表示狀態(tài)轉(zhuǎn)換所需滿(mǎn)足的條件。
只有在Power_on狀態(tài),從站可以接收來(lái)自二類(lèi)主站的“Set_Slave_Address"報(bào)文,從而改變從站地址,從站應(yīng)具有非易失性存儲(chǔ)器來(lái)存儲(chǔ)從站地址。內(nèi)部啟動(dòng)后,從站進(jìn)入wait_Prm狀態(tài),等待“Wait_Prm”報(bào)文。參數(shù)化報(bào)文由用戶(hù)組態(tài)時(shí)給定,包括一些標(biāo)準(zhǔn)的信息,如識(shí)別號(hào)、同步鎖定能力,還包括了一些用戶(hù)特別定義的數(shù)據(jù),另外,在此狀態(tài)從站還可以接收“Get_Cfg”報(bào)文、“Slave_Diag”報(bào)文,但拒絕處理其他報(bào)文,不能進(jìn)行數(shù)據(jù)通信。如果Set_Prm正確,從站進(jìn)入wait_Cfg狀態(tài),等待“Check_Cfg”報(bào)文,該報(bào)文規(guī)定主站對(duì)它的配置信息,即數(shù)據(jù)交換中的輸入輸出字節(jié)數(shù)。此外,也可接收“Get_Cfg”報(bào)文、“Slave_Diag”的報(bào)文。當(dāng)參數(shù)化與配置正確通信,在此狀態(tài),從站可以接收以下報(bào)文:Data_Exchange_Ok、Writing_outputs,Reading_Inputs,Global_Control,Slave_Diag,Get_Cfg等。從站接收主站的狀態(tài)請(qǐng)求后,以高優(yōu)先級(jí)的診斷報(bào)文作為應(yīng)答。診斷信息包括了標(biāo)準(zhǔn)診斷信息和與用戶(hù)有關(guān)的信息。
2 通信接口硬件設(shè)計(jì)
本文選用的Profibus-DP的通信協(xié)議芯片為SPC3。SPC3集成了全部的Profibus-DP協(xié)議。SPC3在DP方式下將完成所有DP-SAP的設(shè)置。SPC3內(nèi)部集成了1.5 KB的雙口RAM,包括參數(shù)寄存器、方式寄存器、狀態(tài)寄存器,中斷控制器等。SPC3內(nèi)部集成的看門(mén)狗定時(shí)器有3種工作狀態(tài):波特率檢測(cè)、波特率控制和從站控制。內(nèi)部的USART可實(shí)現(xiàn)并行數(shù)據(jù)流和串行數(shù)據(jù)流的相互轉(zhuǎn)換。微順序控制器控制整個(gè)工作過(guò)程??臻e定時(shí)器直接控制串行總線(xiàn)的時(shí)序。
考慮到Profibus對(duì)速率的要求本文選用高速率,低功耗的16位MSP430單片機(jī),采用Intel工作方式。CPU與SPC3接口電路如圖3所示。對(duì)于MSP430單片機(jī)而言,SPC3相當(dāng)于它擴(kuò)張的一個(gè)外部RAM。單片機(jī)可以通過(guò)訪(fǎng)問(wèn)外部RAM的方法訪(fǎng)問(wèn)SPC3的寄存器。RS 485驅(qū)動(dòng)器的一端與SPC3相連,另一端通過(guò)9針D型插頭與總線(xiàn)相連。RS 485驅(qū)動(dòng)器選擇SN75SLS176來(lái)滿(mǎn)足高速的數(shù)據(jù)通信。
3 通信接口軟件設(shè)計(jì)
軟件設(shè)計(jì)是開(kāi)發(fā)Profibus-DP通信接口的一個(gè)重要環(huán)節(jié)。由于SPC3集成了完整的DP協(xié)議,因此在進(jìn)行通信時(shí),MSP430單片機(jī)不用參與處理DP狀態(tài)機(jī)。主要任務(wù)是根據(jù)SPC3產(chǎn)生的中斷,對(duì)SPC3接收到數(shù)據(jù)轉(zhuǎn)存,組織要通過(guò)SPC3發(fā)給的數(shù)據(jù),并根據(jù)要求組織外部診斷。
主程序流程圖如圖4所示,在SPC3正常工作之前,需要進(jìn)行初始化,以配置需要的寄存器,包括設(shè)置協(xié)議芯片的中斷允許,寫(xiě)入從站識(shí)別號(hào)和地址,設(shè)置SPC3方式寄存器,設(shè)置診斷緩沖區(qū),配置緩沖區(qū),地址緩沖區(qū),初始化長(zhǎng)度,并根據(jù)以上初始值得出各個(gè)緩沖區(qū)的指針和輔助緩沖區(qū)的指針。根據(jù)確定輸出緩沖區(qū)、輸入緩沖區(qū)及指針,初始化流程圖如圖5所示,初始化包括:SPC3硬件復(fù)位、硬件模式、設(shè)置SPC3中斷屏蔽寄存器、SPC3內(nèi)部看門(mén)狗、設(shè)備標(biāo)識(shí)號(hào)、緩沖區(qū)初始化。
中斷程序流程圖如圖6所示,在Profibus-DP中最主要處理以下的中斷事件:新的參數(shù)報(bào)文事件,全局控制命令報(bào)文事件,進(jìn)入或退出數(shù)據(jù)交換狀態(tài)事件,新的配置報(bào)文事件,新的地址設(shè)置報(bào)文事件,檢測(cè)到波特率事件,看門(mén)狗事件。
4 結(jié)語(yǔ)
選用的MSP430單片機(jī)具有高速率、低功耗的特點(diǎn),SPC3芯片則集成了Profibus-DP全部協(xié)議內(nèi)容,整系統(tǒng)功能相對(duì)完善,使用方法簡(jiǎn)單。本方案用于Profibus-DP通信接口的開(kāi)發(fā),可以減少開(kāi)發(fā)周期,實(shí)現(xiàn)開(kāi)發(fā)的簡(jiǎn)化。
評(píng)論