采用SPC3協(xié)議芯片設(shè)計(jì)PROFIBUS-DP智能從站
引言
國(guó)際電工委員會(huì)IEC在2000年1月4日投票通過(guò)了現(xiàn)場(chǎng)總線IEC61158國(guó)際標(biāo)準(zhǔn),IEC61158包括了7種現(xiàn)場(chǎng)總線標(biāo)準(zhǔn),PROFIBUS作為類型3正式加入IEC61158。PROFIRUS協(xié)議的結(jié)構(gòu)是以ISO7498國(guó)際標(biāo)準(zhǔn)開放式系統(tǒng)互連網(wǎng)絡(luò)參考模型OSI為基礎(chǔ)的。
PRO FIBUS由二三部分組成:PROFIBUSFMS、PROFIBus-DP和PROFIBUS―PA。FMS主要用于車間級(jí)控制網(wǎng)絡(luò),是一種令牌結(jié)構(gòu)和實(shí)時(shí)多主網(wǎng)絡(luò),DP是一種高速的低成本通信連接,用于設(shè)備級(jí)控制系統(tǒng)與分散式通信;PA是專為過(guò)程化而設(shè)計(jì)的,具有本征安全規(guī)范。在這里,主要介紹PROFIBUS-DP(Distributed Process)協(xié)議。 PROFIBUS―DP使用了0SI參考模型的第一層、第二層和用戶接口,第三層到第七層未定義。PROFIBUS―DP主要應(yīng)用于傳感器和執(zhí)行器級(jí)的高速數(shù)據(jù)傳輸.它以DlN 19245的第一部分為基礎(chǔ),主站周期性地讀取從站的輸入信息并周期地向從站發(fā)送輸出信息。它的響應(yīng)時(shí)何從幾百μ s~幾百m s,數(shù)據(jù)傳輸速率為9 6 k b p s~12Mbps,傳輸?shù)臄?shù)據(jù)容量為每個(gè)報(bào)文多達(dá)244字節(jié).傳輸介質(zhì)為屏蔽雙絞線或光纖等。
本文主要討論采用slemens的從站協(xié)議芯片開發(fā)智能從站的方法.智能從站的框圖如圖l所示。其中包括微控制器、看門狗及EEPROM、SPC3、光電隔離、驅(qū)動(dòng)器和撥碼開關(guān)等。
1 SPC3協(xié)議專用芯片
1.1 SPC3主要技術(shù)指標(biāo)
◇支持PROFIBUS―DP協(xié)議;
◇最大數(shù)據(jù)傳輸速率12Mbps,可自動(dòng)檢測(cè)并調(diào)整數(shù) 據(jù)傳輸速率;
◇與80c32、80X86、80C165、80C166、80C167和HCII、HCl6、HC916系列芯片兼容;
◇44引腳的PQFP封裝;
◇可獨(dú)立處理PROFIBUS―DP通信協(xié)議.
◇集成的看門狗(WDT).
◇外部時(shí)鐘接口24MHz或48MHz;
◇5V直流供電。
1.2 SPC3內(nèi)部結(jié)構(gòu)介紹
SPC3是用于從站開發(fā)的智能逋信芯片.它支持PROFIBUS-DP協(xié)議。SPC3內(nèi)部集成了1.5KB的雙口RAM。內(nèi)部鎖存囂/寄存器位于前21個(gè)地址單元。主要包括方式寄存器l、0.中斷控制寄存器.狀態(tài)寄存器以及輸入、輸出緩沖器和診斷緩沖器各宦的狀態(tài)寄存器。
組織參數(shù)位于RAM中從1 6H開始的單元。整個(gè)緩沖器結(jié)構(gòu)(屬于DP―sAPs)就是基于這些參數(shù)來(lái)寫的。此外,普通參數(shù)在這些單元設(shè)置數(shù)據(jù)(包括站地址、地址允許改變、用戶看門狗值和設(shè)備標(biāo)識(shí)號(hào)等).狀態(tài)顯示存儲(chǔ)在這些單元(通用控制命令等)。
用戶緩沖器區(qū)域位于從40H開始的單元。其中,方式寄存器O設(shè)置PROFlBUS―DP的操作方式,如SYNC、FREEZE等。方式寄存器0必須在離線狀態(tài)進(jìn)行賦值,一旦上電,就不能修改。方式寄存器1在上電后可對(duì)每個(gè)位進(jìn)行置位和復(fù)位。
SPC3有1 4個(gè)中斷源.各個(gè)中斷源沒(méi)有優(yōu)先級(jí)-而是通過(guò)中斷屏蔽寄存器和中斷響應(yīng)寄存器來(lái)實(shí)現(xiàn)中斷的。但“新參數(shù)數(shù)據(jù)“中斷和“新配置數(shù)據(jù)”中斷可以不用中斷響應(yīng)寄存器響應(yīng)。中斷信號(hào)的極性由用戶設(shè)定。
診斷分為外部診斷和狀態(tài)診斷。若是外部診斷,用戶必須在從第7字節(jié)開始的單元中寫入用戶數(shù)據(jù)。若是狀態(tài)診斷,則只需在第l字節(jié)寫入00H.而不必填寫從第7字節(jié)開始的用戶數(shù)據(jù)。
從站地址號(hào)可以是固定的,也可以由主站設(shè)置。若設(shè)站地址號(hào)不能改變,則在初始化階段,令“Real―No―Add―change=0FFH" "R-SSA BUF-PTR=00H”。
用戶看門狗計(jì)數(shù)器是l 6位的內(nèi)部存儲(chǔ)器單元, 初始值由R user Wd_Value單元給定。每接收1個(gè)數(shù)據(jù)報(bào)文,計(jì)數(shù)器減l。當(dāng)減到0000H時(shí),SPC3就進(jìn)入“等待參數(shù)化”狀態(tài),DP狀態(tài)機(jī)執(zhí)行“離開主站”命令。
另外SPC3內(nèi)部還集成了1個(gè)看門狗計(jì)數(shù)器.可工作于3種不同的狀態(tài) 波特率監(jiān)測(cè)、波特率控制和DP控制。SPC3能自動(dòng)標(biāo)識(shí)總線波特率(9.6kbps~12Mbps)。
1.3 SPC3硬件電路設(shè)計(jì)
CPU使用AT89S52,采用的是INTEL工作方式,CPU與SPC3的接口電路如圖2所示。對(duì)AT89S52而言,SPC3相當(dāng)于它擴(kuò)展的一個(gè)外部RAM。而且,SPC3有內(nèi)部地址解碼電路.所以,AB8~AB10接地。此時(shí)DB7~DB0是數(shù)據(jù)地址復(fù)用總線.可以產(chǎn)生低8位的數(shù)據(jù)和地址,高4位地址由AB0~AB3產(chǎn)生,AB4~AB7產(chǎn)生SPC3的片選信號(hào).只有AB4~AB7同時(shí)為0時(shí)才選中SPC3。在圖2中,SPC3的片選信號(hào)是1000H,SPC3的內(nèi)部RAM位于1000H~l5FFH單元。本從站的開發(fā)采用的是匯編語(yǔ)言編程.占用的內(nèi)存單元少,不需擴(kuò)展外部RAM。如果使用C語(yǔ)言編程,則必須擴(kuò)展足夠的RAM或者使用帶有足夠RAM的CPU。
從圖2中可以看出,RS485總線驅(qū)動(dòng)器一側(cè)與9針D型插鷹相連。另一側(cè)通過(guò)光耦與SPC3相連。目前,能滿足12M bp s波特率的驅(qū)動(dòng)芯片有sN 6 5AL S1 7 6、SN65ALSI 176、SN75ASLl76、ADMl一485、SN65HVDl 176等,采用光電隔離主要是為了消除來(lái)自外界的干擾,能滿足12Mbps波特率的光耦有HCPL7 720、HCPL0720HCPL772l、HCPL072l、HCPL7710等。另外要求電源也要采取隔離措施.如加變壓器隔離或采用DC―DC模塊。
2 PROFIBUS―DP的狀態(tài)機(jī)
根據(jù)PROFIBUS―DP協(xié)議可知,PROFIBUS―DP的狀態(tài)機(jī)描述DP從站在每種情況下的行為以保證它符合一致性.SPC3內(nèi)部集成了狀態(tài)機(jī).用戶對(duì)狀態(tài)機(jī)的控制是很有限的。PROFIBUS―DP的狀態(tài)機(jī)如圖3所示
在Power_On狀態(tài),從站能從2類主站接收Set Slave-Add報(bào)文來(lái)改變它的地址,然后從站進(jìn)入Wail_P rm狀態(tài),等待參數(shù)化.此狀態(tài)從站還可以接收Get_Cfg和Slave_Dlag報(bào)文。參數(shù)化完成后.從站進(jìn)人wait_Cfg狀態(tài),等待Chk_Cfg報(bào)文.另外還可以接收Slave_Diag、Set_Prm和Get_Cfg報(bào)文。如果Chk_Cfg完成后,從站將進(jìn)入Data_Exch狀態(tài).進(jìn)行數(shù)據(jù)通信。此時(shí)從站還可接收Writing_Outputs、Reading_lnputs、Global_Control、Slave Diag、Chk_Diag和Get_Cfg報(bào)文,若組態(tài)和數(shù)據(jù)交換不成功.就會(huì)返回到參數(shù)化階段。Wait_Prm在對(duì)從站進(jìn)行組態(tài)時(shí),必須要編寫它的GSD文件.所謂GSD就是為了將不同的PROFIBUS產(chǎn)品集成在一起而以電子設(shè)備數(shù)據(jù)庫(kù)文件方式提供的功能函數(shù)(如I/O點(diǎn)數(shù)、診斷信息、波特率、時(shí)間監(jiān)視等)。只有GSD文件在COMPROFlBUS組態(tài)軟件下才能對(duì)從站組態(tài),否則主站無(wú)法識(shí)別從站。
3 軟件設(shè)計(jì)
對(duì)SPC3的軟件操作主要包括兩個(gè)部分:SPC3的初始化和SPC3的中斷處理。主程序和中斷程序流程圖分別如圖4和圖5所示。
SPC3的初始化程序應(yīng)放在主程序的前面,而中斷處理程序完成CPU對(duì)SPC3中斷輸出的響應(yīng)。 SPC3上電復(fù)位之后.在正常工作之前必須進(jìn)行初始化,以配置各個(gè)寄存器。中斷處理程序用于處理SPC3發(fā)生的各種事件,這些事件包括 新的參數(shù)報(bào)文事件:全局控制命令報(bào)文事件.進(jìn)入或退出數(shù)據(jù)交換狀態(tài)事件,新的配置報(bào)文事件:新的地址設(shè)置報(bào)文事件;監(jiān)測(cè)到波特率事件和看門狗溢出事件。數(shù)據(jù)輸入和輸出處理(輸入輸出相對(duì)于主站而言)及用戶診斷數(shù)據(jù)輸入可以放在應(yīng)用程序主循環(huán)中。在一個(gè)應(yīng)用循環(huán)申,由應(yīng)用來(lái)刷新輸入BUF中的數(shù)據(jù).保障所有輸入數(shù)據(jù)是最新的更新數(shù)據(jù)。而SPC3在接收到由PROFIBUS主站傳送的不同輸出數(shù)據(jù)時(shí).會(huì)產(chǎn)生輸出標(biāo)志位(同樣位于中斷請(qǐng)求字單元),CPU通過(guò)在應(yīng)用循環(huán)中輪詢標(biāo)志位來(lái)進(jìn)行接收主站數(shù)據(jù)。對(duì)于特定應(yīng)用的診斷信息.需要實(shí)時(shí)傳遞到主站。主應(yīng)用程序在應(yīng)用循環(huán)中判斷是否有可用的診斷BUF存在一當(dāng)有空閑BUF時(shí)應(yīng)用程序輸入診斷信息,并請(qǐng)求更新。對(duì)于實(shí)時(shí)性要求嚴(yán)格的系統(tǒng),應(yīng)采用中斷方式進(jìn)行輸出數(shù)據(jù)和診斷數(shù)據(jù)處理。
4 GSD文件簡(jiǎn)介
PRO FlBUS設(shè)備具有不同的性能特點(diǎn),為達(dá)到PROFIBUS簡(jiǎn)單的即插即用配置.PROFIBUS設(shè)備的特性均在電子設(shè)備數(shù)據(jù)庫(kù)文件(GSD)中具體說(shuō)明。標(biāo)準(zhǔn)化的GSD數(shù)據(jù)將通信擴(kuò)大到操作員控制級(jí)。使用基于GSD的組態(tài)工具可將不同廠商生產(chǎn)的設(shè)備集成在同一總線系統(tǒng)中.既簡(jiǎn)單又是對(duì)用戶友好的。
4.1 GSD文件的組成
GSD文件可以分為三個(gè)部分:
◆一般規(guī)范 這部分包括生產(chǎn)廠商和設(shè)備的名稱,硬件和軟件的版本狀況,支持的波特率一可能的監(jiān)視時(shí)間問(wèn)隔以及總線插頭的信號(hào)分配;
◆與DP主站有關(guān)的規(guī)范這部分包括只運(yùn)用于DP主站的各項(xiàng)參數(shù)(如連接從站的最多臺(tái)數(shù)或上裝和下裝能力)。這一部分對(duì)從站沒(méi)有規(guī)定;
◆與DP從站有關(guān)的規(guī)范 這部分包括與從站有關(guān)的一切規(guī)范(如輸入/輸出通道的數(shù)量和類型、中斷測(cè)試的規(guī)范以及輸入/輸出數(shù)據(jù)一致性的信息)。
4.2 GSD文件格式
GSD文件是ASCII文件.可以用任何一種ASCII編輯囂編輯 如計(jì)事本、UltraEdit等,也可使用PROFIBus用戶組織提供的編輯程序GSDEdit。GSD文件是由若干行組成,每行都用一個(gè)關(guān)鍵字開頭,包括關(guān)鍵字及參數(shù)(無(wú)符號(hào)數(shù)或字符串)兩部分。GSD文件中的關(guān)鍵字可以是標(biāo)準(zhǔn)關(guān)鍵字(在PROFIBUS標(biāo)準(zhǔn)中定義)或自定義關(guān)鍵字。標(biāo)準(zhǔn)關(guān)鍵字可以被PROFIBUS的任何組態(tài)工具所識(shí)別,而自定義 關(guān)鍵字只能被特定的組態(tài)工具識(shí)別。
一個(gè)GSD文件的例子如下。
#Pr0fibus DP ;DP設(shè)備的GSD文件均以此關(guān)鍵存在
GSD Revision=1 ;GSD文件版本
VendorName="Meglev" ;設(shè)備制造商
Model Name="DP Slave" ;產(chǎn)品名稱,產(chǎn)品版本
Revision="Version 01" ;產(chǎn)品版本號(hào)(可選)
RevisionNtmber=01 ;產(chǎn)品識(shí)別號(hào)
IdemNumber=0x01 ;協(xié)議類型(表示DP)
ProtocoI Ident=0 ;站類型(0表示從站)
StationType=0 ;不支持FMS.純DP從站
FMS Supp=0 ;硬件版本
Hardware Realease="HW1.0" ;軟件版本
Soltware Realease="SWl.0" ;支持9.6kbps波特率
9.6 supp=1 ;支持19.2kbps波特率
19.2 supp=l ;9.6kbps時(shí)最大延遲時(shí)間
MaxTsdr 9.6=60 ;19.2kbps時(shí)最大延遲時(shí)間
MaxTsdrl9.2=60 ;不提供RTS信號(hào)
RepeaterCtrl sig=0 ;不提供24V電壓
24VPins=0 ;采用的解決方案
Implementation Type="SPC3" ;不支持鎖定模式
FreezeMode Supp=0 ;不支持同步模式
SyncMode Supp=0 ;支持自動(dòng)波特率檢測(cè)
AutoBaud Supp=l ;不支持改變從站地址
Set SlaveAdd Supp=0 ;故障安全模式類型
Fail Safe=0 ;最大用戶參數(shù)數(shù)據(jù)長(zhǎng)度(0-237)
MaxUser PrmDataLen=0 ;用戶參數(shù)長(zhǎng)度
Usel prmDataLen=0 ;最小從站響應(yīng)循環(huán)間隔
Min Slave Imervall=22 ;是否為模塊站
Modular Station=l ;從站最大模塊數(shù)
MaxModule=l ;最大輸入數(shù)據(jù)長(zhǎng)度
MaxInput Len=8 ;最大輸出數(shù)據(jù)長(zhǎng)度
MaxOutput Len=8 ;最大數(shù)據(jù)的長(zhǎng)度(輸入輸出之和)
MaxData Len=16 ;最大診斷數(shù)據(jù)長(zhǎng)度(6~244)Slave
MaxDiagData Len=6 ;從站類型
Family=3 ;模塊1,輸入輸出各4字節(jié)
M0dule=“Modulel”0x23,0x13; ;模塊2.輸入輸出各8字節(jié)
EndModule
Module="Module2"0x27,0x17;
EndModule
結(jié)語(yǔ)
PROFIBUS.DP現(xiàn)場(chǎng)總線已成為我國(guó)機(jī)械部的行業(yè)標(biāo)準(zhǔn).受到越來(lái)越多科研機(jī)構(gòu)和廠家的重視t本文從開發(fā)的角度.詳細(xì)闡述了PROFIBUS―DP現(xiàn)場(chǎng)總線的軟硬件設(shè)計(jì)方法。相信能給讀者起到拋磚引玉的作用。我們開發(fā)的帶有PROFIBUS-DP總線接口的設(shè)備,能滿足互操作性以及實(shí)耐性通信的要求,已在許多行業(yè)得到成功應(yīng)用。
評(píng)論