劉詩林,許 暉,劉海濤
LIU Shi-lin, XU Hui, LIU Hai-tao
(西北工業(yè)大學 航海學院,西安 710072)
基于C8051F040的PROFIBUS-DP從站設(shè)計
An profi bus-dp slave designs based on c8051f040
劉詩林,許 暉,劉海濤
LIU Shi-lin, XU Hui, LIU Hai-tao
(西北工業(yè)大學 航海學院,西安 710072)
本文以某硬盤檢測系統(tǒng)自動化改造工程為對象,針對該系統(tǒng)設(shè)備分散,數(shù)據(jù)傳輸信息量大,實時性和可靠性要求高等特點,設(shè)計一種可用于該系統(tǒng)的分布式控制基于PROFIBUS-DP協(xié)議的I/O從站。根據(jù)分布式控制系統(tǒng)的整體結(jié)構(gòu)、工作原理及特點,對微控制器C8051F040和協(xié)議芯片SPC3開發(fā)I/O從站的硬件電路、軟件設(shè)計流程進行了設(shè)計。給出基于PROFIUBS-DP的分布式控制系統(tǒng)網(wǎng)絡(luò)組態(tài)與調(diào)試的方法,經(jīng)測試表明,I/O從站與監(jiān)控計算機和PLC通信正常、可靠,實時性滿足了控制系統(tǒng)的要求。
C8051F040;PROFIBUS-DP;I/O從站;SPC3
硬盤檢測程序是硬盤出廠前不可缺少的步驟,檢測的過程是批量進行的,而每塊硬盤的檢測耗時不一致,這對檢測監(jiān)控人員來說工作量非常大。因此通過自動化改造可以節(jié)省人力資源,同時提高檢測系統(tǒng)的工作效率。
該系統(tǒng)主要由以下幾部分組成:8組共32個測試機柜,4套裝卸機械手,1套傳送機構(gòu)、1套分揀機構(gòu)、控制主機和監(jiān)視計算機。系統(tǒng)中存在大量的I/O信號,而且各套設(shè)備與控制主機之間需要滿足實時通信的要求,為了使系統(tǒng)正??煽康倪\行,可以采用以下兩種方法:1)采用傳統(tǒng)的PLC構(gòu)成集散型控制系統(tǒng)(Distributed Control System,DCS);2)采用基于現(xiàn)場總線的分布式I/O系統(tǒng)[1]。
采用第一種方案存在系統(tǒng)不開放、硬件投資大、布線復雜和維修不便等缺點,具有明顯的局限性。而采用第二種方案基本局限于國外產(chǎn)品,如西門子公司的基于PROFIBUS分布式I/O控制系統(tǒng),WAGO公司基于CANbus、DeviceNET、PROFIBUS分布式I/O控制系統(tǒng),但價格較高。因此,本文設(shè)計了基于C8051F040的PROFIBUS-DP I/O從站用于該系統(tǒng)的分布式控制。
硬盤檢測控制系統(tǒng)由西門子PLC、內(nèi)置PROFIBUS通信卡的監(jiān)控計算機和自行開發(fā)的I/O從站構(gòu)成,并由PROFIBUS-DP電纜連接構(gòu)成分布式總線控制網(wǎng)絡(luò),總體結(jié)構(gòu)如圖1所示。
圖1 硬盤檢測分布式控制系統(tǒng)總體結(jié)構(gòu)圖
分布在現(xiàn)場的I/O從站連接各套設(shè)備,并通過PROFIBUS總線通信接口與總線網(wǎng)絡(luò)相連;控制系統(tǒng)由西門子PLC作為一類主站,監(jiān)控計算機作為二類主站編程和運行監(jiān)控程序并通過總線適配卡與現(xiàn)場I/O從站進行實時通信,構(gòu)成分布式控制,從而實現(xiàn)系統(tǒng)的分布式控制和集中監(jiān)管監(jiān)控功能。
控制系統(tǒng)中的監(jiān)控計算機選用研華公司的工控機( IPC) ;PLC選用德國西門子的S7-300(CPU 315-2DP);總線適配卡選用西門子公司的CP5611,用來完成現(xiàn)場總線和監(jiān)控計算機之間的協(xié)議轉(zhuǎn)換。各個I/O從站之間通過專用屏蔽電纜互聯(lián)構(gòu)成PROF IBUS總線網(wǎng)絡(luò),總線兩端連接PROFIBUS總線終端器,用來提高系統(tǒng)的穩(wěn)定性,增強系統(tǒng)的抗干擾能力。
PROFIBUS是作為德國國家標準DIN19245、歐洲標準EN50170,目前已成為中國唯一的現(xiàn)場總線國家標準GB/T20540- 2006。PROFIBUS作為一種不依賴于制造廠商的開放式現(xiàn)場總線標準,已廣泛應(yīng)用于制造加工自動化、過程自動化和樓宇自動化等領(lǐng)域中[1]。
原則上,PROFIBUS協(xié)議在任何微處理器上都可以實現(xiàn),在微處理器內(nèi)部或外部安裝異步串行通信接口(UART)即可完成?;谏鲜鎏攸c,在開發(fā)PROFIBUS-DP從站時有以下兩種方案可供選擇:1)單片機+軟件;2)單片機+PROFIBUS通信專用ASIC[2]。
比較兩種設(shè)計方案:第一種方案硬件設(shè)計相對較簡單,成本較低,但要求開發(fā)人員透徹了解PROFIBUS-DP的技術(shù)細節(jié),傳輸速率低于500kbit/s,而且程序編寫工作量較大,這樣從站可靠性也不高。第二種方案利用硬件實現(xiàn)協(xié)議功能,傳輸速率可以到達12Mbit/s,雖然硬件成本有所增加,但可以降低開發(fā)難度、提高從站的可靠性。經(jīng)綜合考慮,本文采用第二種方案設(shè)計I/O從站。
對于測試機柜,I/O從站的作用主要是監(jiān)控硬盤檢測是否結(jié)束并記錄測試結(jié)果給分揀機構(gòu)提供參考;機械手、分揀和傳送機構(gòu)由PLC通過I/O從站實現(xiàn)現(xiàn)場控制,其中包含有多個控制氣缸的電磁換向閥、行程開關(guān)、步進電機驅(qū)動器以及傳感器信號。
I/O從站除了滿足如上控制要求外,還需要有PROFIBUS-DP通信接口,為了使從站具有較高的適應(yīng)性和可靠性,本文采用功能模塊化設(shè)計,系統(tǒng)由C8051F040單片機和完整封裝了PROFIBUS-DP協(xié)議芯片SPC3構(gòu)成其核心部分,其它還有16路數(shù)字量輸入/輸出、8路模擬量輸入/2路模擬量輸出、基于SPC3的PROFIBUS總線隔離驅(qū)動、RS232、開關(guān)設(shè)置地址及電源模塊等部分組成,詳如圖2所示。
2.1.1 微處理器與SPC3的接口設(shè)計
微控制器和SPC3是I/O從站的核心,微處理應(yīng)能夠通過輸入/輸出接口與現(xiàn)場設(shè)備相連,并能夠通過協(xié)議芯片SPC3與主站進行實時通信,本文選用的微處理是美國Cygnal公司C8051F040,其突出的優(yōu)點是有與MCS-51指令集完全兼容的高速CIP-51內(nèi)核(峰值速度可達25MIPS)、多達64位可編程I/O口線、片內(nèi)集成看門狗定時器、64K可在系統(tǒng)編程的FLASH程序存儲器、128B非易失性數(shù)據(jù)存儲器、4352(4KB +256B)的片內(nèi)RAM、支持JTAG調(diào)試等。C8051F040的片上資源很豐富,包括8組I/O端口、A /D和D /A轉(zhuǎn)換器、多個中斷源、增強型通用異步接收器和發(fā)送器(UART),非常適用于工業(yè)系統(tǒng)的自動控制,而且采用這種系統(tǒng)級SOC芯片,在很大程度上可以減少外圍元器件的數(shù)量,從而減少元器件間的走線,提高系統(tǒng)的穩(wěn)定性和可靠性。
協(xié)議芯片SPC3,包含有方式寄存器、狀態(tài)寄存器、中斷寄存器、各種緩沖器指針和緩沖區(qū)等。最大傳輸速率可達12Mbit/s,可以自動檢測總線上傳輸速率。該芯片內(nèi)部含有1.5KB的雙口RAM作為SPC3與軟件/程序的接口。此外,SPC3從初始化到正常工作,都由芯片內(nèi)部集成的狀態(tài)機來控制,不需要過多的人為干預(yù)。只要按正確方法對SPC3中的寄存器和數(shù)據(jù)區(qū)進行初始化后,對其雙口RAM進行數(shù)據(jù)的讀寫操作即可完成從站與主站間的通訊。微控制器C8051F040與協(xié)議芯片SPC3的接口電路設(shè)計參考SPC3芯片手冊的標準電路設(shè)計完成。
圖2 PROFIBUS-DP從站總體結(jié)構(gòu)框圖
2.1.2 輸入/輸出接口電路設(shè)計
根據(jù)系統(tǒng)的要求, I/O從站具有16路數(shù)字量輸入/輸出,8路模擬量輸入和2路模擬量輸出。數(shù)字量輸入接口用于連接各種限位開關(guān)、繼電器、可控硅或電磁閥門等,輸入信號一般為0~24V或0~12V直流電壓信號,因此該通道的最主要問題是隔離問題,如隔離不好,較強的電磁干擾就會引入到系統(tǒng)中,影響系統(tǒng)的正常工作。所以數(shù)字量的輸入需經(jīng)過光電耦合器TLP521后接入C8051F040的輸入接口,從而保證系統(tǒng)工作的可靠性。數(shù)字量輸出接口,主要用于控制電磁閥門、繼電器、指示燈、聲光報警器等,一般只具有開、關(guān)兩種狀態(tài)的設(shè)備。根據(jù)所用器件的不同,有繼電器輸出、晶體管輸出和晶閘管輸出等多種形式,輸出0~24V或0~5V直流電壓信號。為提高從站的穩(wěn)定性和抗干擾能力,輸出接口也使用光電耦合器,將微控制器C8051F040輸出接口與現(xiàn)場的負載完全隔離。在輸出通道與光電隔離電路之后,通過使用輸出驅(qū)動芯片ULN2803來增強輸出接口的驅(qū)動能力。模擬量輸入接口主要用于傳感器信號的輸入,由于C8051F040芯片引腳有8個專用于模擬輸入通道,是8路12位分辨率的逐次逼近寄存器型ADC的輸入端。基于這一點,該通道只需要經(jīng)過I/V轉(zhuǎn)換電路接入C8051F040模擬輸入端口即可。另外C8051F040內(nèi)部有兩個12位的DAC轉(zhuǎn)換器,每個DAC都具有靈活的輸出更新機制,允許無縫的滿度變化并支持無抖動輸出更新。
2.1.3 總線通信接口電路設(shè)計
PROFIBUS-DP的數(shù)據(jù)傳輸是通過RS485接口實現(xiàn)的,為消除來自總線的干擾,需要采用雙路電源供電,對通信信號的輸入/輸出通道進行光電隔離。協(xié)議芯片SPC3的數(shù)據(jù)發(fā)送請求(RTS) 、數(shù)據(jù)輸入(RXD) 、數(shù)據(jù)輸出( TXD)引腳經(jīng)隔離后與總線驅(qū)動器相連。RS485總線驅(qū)動器一側(cè)與9針D型插座相連,另一側(cè)通過光耦HCPL7101與SPC3相連。在設(shè)計中采用能夠滿足12Mbps波特率的總線驅(qū)動芯SN65ALS1176,接收器在總線開路、斷路和空閑時有故障安全保護功能。該部分電路設(shè)計可參考SPC3手冊。
在從站設(shè)計中,硬件的選擇和電路設(shè)計會直接影響從站性能的穩(wěn)定和通信速度,I/O從站要完成與主站的通信任務(wù)和相關(guān)控制功能,還需要設(shè)計相應(yīng)的配套軟件。由于SPC3集成了PROFIBUSDP協(xié)議的狀態(tài)機,使得C8051F040的主要任務(wù)在于初始化和啟動SPC3、數(shù)據(jù)的發(fā)送和接收、診斷事務(wù)及中斷事務(wù)處理等。這些功能可以通過KeilC51程序開發(fā)來實現(xiàn),程序采用結(jié)構(gòu)化設(shè)計,包括主程序、SPC3初始化程序、SPC3中斷處理程序、I/O接口程序、和外部診斷程序等:
1)USERSPC3.C主程序。這部分主要完成SPC3的初始化、啟動、發(fā)送和接收數(shù)據(jù)以及診斷等功能。
主程序首先對單片機和SPC3進行正確的初始化。單片機初始化包括端口配置和時鐘初始化。SPC3初始化包括設(shè)置協(xié)議芯片的中斷允許、寫入從站識別號和地址、設(shè)置SPC3方式寄存器、設(shè)置診斷緩沖區(qū)、參數(shù)緩沖區(qū)、配置緩沖區(qū)、地址緩沖區(qū)和初始化長度,并根據(jù)以上初始值得出各個緩沖區(qū)的指針和輔助緩沖區(qū)的指針。根據(jù)傳輸?shù)臄?shù)據(jù)長度,確定輸出緩沖區(qū)和輸入緩沖區(qū)及指針[2]。SPC3的初始化流程如圖3示。
圖3 SPC3的初始化流程
初始化正確后,啟動SPC3,數(shù)據(jù)輸入和輸出(輸入和輸出相對于主站而言)放在主循環(huán)中。SPC3在接收到由PROFIBUS主站發(fā)送的不同輸出數(shù)據(jù)時,會產(chǎn)生輸出標志位(位于中斷請求字單元),MCU通過輪循標志位來接收主站數(shù)據(jù)。向主站傳送輸入數(shù)據(jù)時,SPC3將實際采集到的應(yīng)用數(shù)據(jù)不斷地填入輸入緩沖區(qū),并通過主循環(huán)不斷地刷新,以確保所有的輸入數(shù)據(jù)是最新的。
2)INTSPC3.C中斷模塊。這個模塊主要處理分配從站參數(shù)、組態(tài)數(shù)據(jù)檢查和從站地址設(shè)定等功能。在PROFIBUS-DP中主要有以下的中斷事件:新的參數(shù)報文事件,全局控制命令報文事件,進入或退出數(shù)據(jù)交換狀態(tài)事件,新的配置報文事件,新的地址設(shè)置報文事件,看門狗事件。設(shè)計采用中斷方式處理從站地址設(shè)定,檢查組態(tài)和參數(shù)報文是否正確。采用外部中斷INT0輸入,其入口地址為0003H。主程序、中斷程序流程如圖4所示。
圖4 主程序和中斷程序流程
3)SPC3.C模塊。主要根據(jù)組態(tài)數(shù)據(jù)計算輸入輸出數(shù)據(jù)長度,輔助緩沖區(qū)分配,緩沖區(qū)初始化,設(shè)置I/O數(shù)據(jù)長度,各緩沖區(qū)數(shù)據(jù)更新等功能。
4)USER.H模塊。用來定義變量和宏接口,宏口使用戶可方便地訪問SPC3的寄存器。
從站調(diào)試分為兩個部分,首先是硬件電路的測試,檢查電路是否正常,芯片是否正常工作,通過JTAG接口連接仿真器,編寫測試程序?qū)8051F040的外圍電路進行功能檢查。當測試硬件電路達到設(shè)計要求后,然后就是軟件的調(diào)試工作。調(diào)試I/O從站之前必須組建PROFIBUS-DP總線網(wǎng)絡(luò),并在計算機上進行網(wǎng)絡(luò)組態(tài)。采用S7-300作為第一類主站,PC作為第二類主站進行編程和監(jiān)控,通過PROFIBUS-DP專用電纜連接PLC與自行設(shè)計開發(fā)的I/O從站,構(gòu)成現(xiàn)場總線的分布式I/O控制系統(tǒng)??偩€系統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。I/O從站的調(diào)試分三步進行:第一步用德國西門子公司的ET200 I/O從站建立一主加一從的總線網(wǎng)絡(luò),編寫PLC測試運行程序,利用RS485 -232轉(zhuǎn)接模塊與串口調(diào)試助手軟件監(jiān)測PROFIBUS總線上的報文,并記錄;第二步用自行開發(fā)的I/O從站替換ET200,運行相同PLC測試程序并監(jiān)測總線上的報文,與第一步監(jiān)測到的報文進行對比、找出不同之處進行分析、修改I/O從站軟件,直到總線上的報文與第一步監(jiān)測到的報文相同;第三步把自行開發(fā)的I/O從站和ET200連接到同一總線網(wǎng)絡(luò)中進行兼容性測試。
經(jīng)測試表明,I/O從站與監(jiān)控計算機和PLC通信正常、可靠,系統(tǒng)運行良好,實時性滿足了硬盤檢測控制系統(tǒng)的要求。
PROFIBUS作為一種國際化的、不依賴于設(shè)備制造商的開放式現(xiàn)場總線,已廣泛的應(yīng)用于自動化領(lǐng)域。本文設(shè)計的I/O從站作為PROFIBUS-DP現(xiàn)場總線的I/O節(jié)點能有效地實現(xiàn)自動化系統(tǒng)的分布式控制,并具有一定的通用性。對于開發(fā)過程中所提出的技術(shù)方案和實現(xiàn)方法可以在類似的分布式控制系統(tǒng)中推廣應(yīng)用。
[1] 孫鶴旭,梁濤,云力軍.Profibus現(xiàn)場總線控制系統(tǒng)的設(shè)計與開放[M].北京:國防工業(yè)出版社,2007:191-200.
[2] 王永華,A.Verwer.現(xiàn)場總線技術(shù)及應(yīng)用教程——從PROFIBUS到AS-i[M].北京:機械工業(yè)出版社,2006:
[3] 潘琢金,施國君.C8051FXXX高速SOC單片機及運用[M].北京:航空航天大學出版社,2002.
[4] 曹晶,方康玲,廖煥柱.PROFIBUS-DP從站接口設(shè)計[J].計算機與信息技術(shù),2009.
[5] SPC3 Siemens PROFIBUS Controller User Description[OL].Siemens AG,2000.
TH166
B
1009-0134(2010)11(上)-0042-04
10.3969/j.issn.1009-0134.2010.11(上).14
2010-07-03
劉詩林(1985 -), 男,江西武寧人,碩士研究生,研究方向為工業(yè)現(xiàn)場總線。