引言
國際電工委員會IEC在2000年1月4日投票通過了現場總線IEC61158國際標準,IEC61158包括了7種現場總線標準,PROFIBUS作為類型3正式加入IEC61158。PROFIRUS協議的結構是以ISO7498國際標準開放式系統互連網絡參考模型OSI為基礎的。
PRO FIBUS由二三部分組成:PROFIBUS·FMS、PROFIBus-DP和PROFIBUS—PA。FMS主要用于車間級控制網絡,是一種令牌結構和實時多主網絡,DP是一種高速的低成本通信連接,用于設備級控制系統與分散式通信;PA是專為過程化而設計的,具有本征安全規范。在這里,主要介紹PROFIBUS-DP(Distributed Process)協議。 PROFIBUS—DP使用了0SI參考模型的第一層、第二層和用戶接口,第三層到第七層未定義。PROFIBUS—DP主要應用于傳感器和執行器級的高速數據傳輸.它以DlN 19245的第一部分為基礎,主站周期性地讀取從站的輸入信息并周期地向從站發送輸出信息。它的響應時何從幾百μ s~幾百m s,數據傳輸速率為9 6 k b p s~12Mbps,傳輸的數據容量為每個報文多達244字節.傳輸介質為屏蔽雙絞線或光纖等。
本文主要討論采用slemens的從站協議芯片開發智能從站的方法.智能從站的框圖如圖1所示。其中包括微控制器、看門狗及EEPROM、SPC3、光電隔離、驅動器和撥碼開關等。

1 SPC3協議專用芯片
1.1 SPC3主要技術指標
◇支持PROFIBUS—DP協議;
◇最大數據傳輸速率12Mbps,可自動檢測并調整數 據傳輸速率;
◇與80c32、80X86、80C165、80C166、80C167和HCII、HCl6、HC916系列芯片兼容;
◇44引腳的PQFP封裝;
◇可獨立處理PROFIBUS—DP通信協議.
◇集成的看門狗(WDT).
◇外部時鐘接口24MHz或48MHz;
◇5V直流供電。
1.2 SPC3內部結構介紹
SPC3是用于從站開發的智能逋信芯片.它支持PROFIBUS-DP協議。SPC3內部集成了1.5KB的雙口RAM。內部鎖存囂/寄存器位于前21個地址單元。主要包括方式寄存器l、0.中斷控制寄存器.狀態寄存器以及輸入、輸出緩沖器和診斷緩沖器各宦的狀態寄存器。
組織參數位于RAM中從1 6H開始的單元。整個緩沖器結構(屬于DP—sAPs)就是基于這些參數來寫的。此外,普通參數在這些單元設置數據(包括站地址、地址允許改變、用戶看門狗值和設備標識號等)。狀態顯示存儲在這些單元(通用控制命令等)。
用戶緩沖器區域位于從40H開始的單元。其中,方式寄存器O設置PROFlBUS—DP的操作方式,如SYNC、FREEZE等。方式寄存器0必須在離線狀態進行賦值,一旦上電,就不能修改。方式寄存器1在上電后可對每個位進行置位和復位。
SPC3有1 4個中斷源.各個中斷源沒有優先級-而是通過中斷屏蔽寄存器和中斷響應寄存器來實現中斷的。但“新參數數據“中斷和“新配置數據”中斷可以不用中斷響應寄存器響應。中斷信號的極性由用戶設定。
診斷分為外部診斷和狀態診斷。若是外部診斷,用戶必須在從第7字節開始的單元中寫入用戶數據。若是狀態診斷,則只需在第l字節寫入00H.而不必填寫從第7字節開始的用戶數據。
從站地址號可以是固定的,也可以由主站設置。若設站地址號不能改變,則在初始化階段,令“Real—No—Add—change=0FFH" "R-SSA BUF-PTR=00H”。
用戶看門狗計數器是l 6位的內部存儲器單元, 初始值由R user Wd_Value單元給定。每接收1個數據報文,計數器減l。當減到0000H時,SPC3就進入“等待參數化”狀態,DP狀態機執行“離開主站”命令。
另外SPC3內部還集成了1個看門狗計數器.可工作于3種不同的狀態 波特率監測、波特率控制和DP控制。SPC3能自動標識總線波特率(9.6kbps~12Mbps)。
1.3 SPC3硬件電路設計
CPU使用AT89S52,采用的是INTEL工作方式,CPU與SPC3的接口電路如圖2所示。

對AT89S52而言,SPC3相當于它擴展的一個外部RAM。而且,SPC3有內部地址解碼電路.所以,AB8~AB10接地。此時DB7~DB0是數據地址復用總線.可以產生低8位的數據和地址,高4位地址由AB0~AB3產生,AB4~AB7產生SPC3的片選信號.只有AB4~AB7同時為0時才選中SPC3。在圖2中,SPC3的片選信號是1000H,SPC3的內部RAM位于1000H~l5FFH單元。本從站的開發采用的是匯編語言編程.占用的內存單元少,不需擴展外部RAM。如果使用C語言編程,則必須擴展足夠的RAM或者使用帶有足夠RAM的CPU。
從圖2中可以看出,RS485總線驅動器一側與9針D型插鷹相連。另一側通過光耦與SPC3相連。目前,能滿足12M bp s波特率的驅動芯片有sN 6 5AL S1 7 6、SN65ALSI 176、SN75ASLl76、ADMl一485、SN65HVDl 176等,采用光電隔離主要是為了消除來自外界的干擾,能滿足12Mbps波特率的光耦有HCPL7 720、HCPL0720HCPL772l、HCPL072l、HCPL7710等。另外要求電源也要采取隔離措施.如加變壓器隔離或采用DC—DC模塊。
2 PROFIBUS—DP的狀態機
根據PROFIBUS—DP協議可知,PROFIBUS—DP的狀態機描述DP從站在每種情況下的行為以保證它符合一致性.SPC3內部集成了狀態機.用戶對狀態機的控制是很有限的。PROFIBUS—DP的狀態機如圖3所示。

在Power_On狀態,從站能從2類主站接收Set Slave-Add報文來改變它的地址,然后從站進入Wail_P rm狀態,等待參數化.此狀態從站還可以接收Get_Cfg和Slave_Dlag報文。參數化完成后.從站進人wait_Cfg狀態,等待Chk_Cfg報文.另外還可以接收Slave_Diag、Set_Prm和Get_Cfg報文。如果Chk_Cfg完成后,從站將進入Data_Exch狀態.進行數據通信。此時從站還可接收Writing_Outputs、Reading_lnputs、Global_Control、Slave Diag、Chk_Diag和Get_Cfg報文,若組態和數據交換不成功.就會返回到參數化階段。Wait_Prm在對從站進行組態時,必須要編寫它的GSD文件.所謂GSD就是為了將不同的PROFIBUS產品集成在一起而以電子設備數據庫文件方式提供的功能函數(如I/O點數、診斷信息、波特率、時間監視等)。只有GSD文件在COMPROFlBUS組態軟件下才能對從站組態,否則主站無法識別從站。
3 軟件設計
對SPC3的軟件操作主要包括兩個部分:SPC3的初始化和SPC3的中斷處理。主程序和中斷程序流程圖分別如圖4和圖5所示。