引言 作為我國第一個(gè)工業(yè)通信領(lǐng)域現場(chǎng)總線(xiàn)技術(shù)國家標準的PROFIBUS現場(chǎng)總線(xiàn),其應用范圍已經(jīng)相當廣泛,占有很大的市場(chǎng)份額。在PROFIBUS家族中,PROFIBUS-DP總線(xiàn)的應用最為廣泛。 國內的一些廠(chǎng)商都在開(kāi)發(fā)并相繼推出自己的現場(chǎng)總線(xiàn)系列產(chǎn)品。但是其FCS系列產(chǎn)品在快速接入主流現場(chǎng)總線(xiàn)系統中有一些阻力,所占市場(chǎng)份額比較小,其提供的系統設計方案大多還是在主推DCS系統。為了能夠快速接入主流現場(chǎng)總線(xiàn),結合國家863課題,中國四聯(lián)儀器儀表集團有限公司與本教研室共同研發(fā) PROFIBUS-DP/MODBUS網(wǎng)關(guān),以期實(shí)現其FCS系列輸入/輸出從站設備快速無(wú)縫接入PROFIBUS-DP網(wǎng)絡(luò ),并借此來(lái)提高其自動(dòng)化設備的應用范圍。 1 系統的總體設計 MODBUS總線(xiàn)采用單主多從、查詢(xún)一回應的工作方式,具有結構簡(jiǎn)單、可靠性高、受干擾的概率低、傳輸實(shí)時(shí)性能較好等優(yōu)點(diǎn);但是MODBUS總線(xiàn)沒(méi)有路由器、網(wǎng)關(guān)等網(wǎng)絡(luò )互聯(lián)設備,網(wǎng)絡(luò )規模有限,大型組網(wǎng)能力和網(wǎng)絡(luò )處理能力較差。 本系統使采用MODBUS協(xié)議的現場(chǎng)設備無(wú)縫接入PROFIBUS-DP現場(chǎng)總線(xiàn)系統,以此來(lái)提高現場(chǎng)設備選擇的靈活性。這樣做不僅僅擴展了MODBUS 網(wǎng)絡(luò )和PROFIBUS-DP網(wǎng)絡(luò )的互聯(lián)性,還大大降低了系統升級和更新?lián)Q代所需要的費用。 系統總體結構如圖1所示。其關(guān)鍵部分是智能網(wǎng)關(guān),它實(shí)現了協(xié)議之間的相互轉換,無(wú)縫鏈接PROFIBUS-DP現場(chǎng)總線(xiàn)系統與MODBUS總線(xiàn)系統,使同一系統內同時(shí)存在PROFIBUS-DP總線(xiàn)和MODBUS總線(xiàn)的設備,已經(jīng)存在和使用的設備不必做任何改變就能夠直接接入PROFIBUS-DP網(wǎng)絡(luò )。 ![]() 其中,微控制器為中國四聯(lián)集團開(kāi)發(fā)的主控制器,本智能網(wǎng)關(guān)在設計上為其預留了一個(gè)用于和主控制器進(jìn)行通信的通信接口。底層的I/O模塊實(shí)現工業(yè)現場(chǎng)信號的檢測或控制執行設備的運行。 2 PROFIBUS-DP/MODBUS網(wǎng)關(guān)結構設計 PROFIBUS-DP/MODBUS嵌入式網(wǎng)關(guān)硬件結構如圖2所示。按照功能模塊劃分,網(wǎng)關(guān)可以分為電源管理模塊、中央處理器模塊、 PROFIBUS-DP從站模塊和RS485通信模塊。 ![]() 本硬件設計要求串行口速率能夠達到921.6 kbps;诖艘,硬件平臺選用Philips公司的ARM7TDMI核的微處理器。電源管理模塊負責整套系統的電源供給。系統的穩定運行和電源模塊的穩定性能關(guān)系密切,此處設計的電源模塊兼有熱插拔和電壓轉換的功能。PROFIBUS-DP從站模塊的核心功能由協(xié)議芯片(VPC3+C)來(lái)實(shí)現,從站單元的配置和管理則由中央處理器模塊來(lái)完成。 中央處理器模塊除了實(shí)現對PROFIBUS-DP從站模塊的配置和管理外,還要完成MODBUS協(xié)議的實(shí)現以及兩種協(xié)議數據交換協(xié)議棧的實(shí)現。為了提高系統的抗干擾能力,和外界進(jìn)行通信的部分需要和系統在物理接口上進(jìn)行電氣隔離,此處的3個(gè)通信接口都需要進(jìn)行隔離。根據通信速度要求的不同,選擇磁耦芯片模塊完成PROFIBUS-DP通信的隔離兼物理層電平轉換功能;用雙通道磁耦隔離芯片來(lái)完成另外兩路串行口通信的隔離。這兩款芯片都采用了最新的基于芯片尺寸的變壓器隔離技術(shù)的磁耦。和傳統的光耦比較,其轉換速度、瞬態(tài)共模抑制能力、功耗、尺寸及成本等方面均有很明顯的優(yōu)勢。 3 系統的軟件設計 3.1 軟件總體結構設計 一般情況下,現場(chǎng)總線(xiàn)協(xié)議之間的轉換器可分為物理層的中繼器、MAC層的網(wǎng)橋及應用層的網(wǎng)關(guān)等幾種形式。中繼器方式需要更改底層硬件,網(wǎng)橋方式對應MAC 層的協(xié)議轉換復雜,而網(wǎng)關(guān)的形式則使得原有網(wǎng)段的協(xié)議不需做任何改變,實(shí)現起來(lái)最為簡(jiǎn)單。 本系統采用了網(wǎng)關(guān)形式,軟件總體流程如圖3所示,主要實(shí)現了PROFIBUS-DP協(xié)議芯片VPC3+C的驅動(dòng)程序和MODBUS協(xié)議,同時(shí)在應用層實(shí)現了PROFIBUS-DP總線(xiàn)和MODBUS總線(xiàn)協(xié)議數據幀的轉換。MODB-US協(xié)議只是定義了消息域的格局和內容的公共格式,具體的物理層及應用層可以由用戶(hù)根據需要定義。本網(wǎng)關(guān)MODBUS通信部分物理層采用標準的RS485總線(xiàn),MAC協(xié)議是由軟件實(shí)現的。 ![]() CPU通過(guò)驅動(dòng)VPC3+C來(lái)實(shí)現對PROFIBUS熔一DP通信過(guò)程的控制,包括通信接口檢查、正常和發(fā)生故障情況下診斷數據的發(fā)送及數據交換等過(guò)程;通過(guò)MODBUS協(xié)議實(shí)現對下掛的輸入/輸出從站模塊的查詢(xún)操作;通過(guò)對輸入/輸出模塊的應答幀(或通信超時(shí))進(jìn)行分析來(lái)判斷模塊的狀態(tài)以及模塊的通道狀態(tài);根據模塊狀態(tài)信息填充PROFIBUS-DP的診斷域的數據,并以此為依據來(lái)對網(wǎng)關(guān)狀態(tài)(正常通信、報告錯誤或警告信息)進(jìn)行控制。 3.2 網(wǎng)關(guān)協(xié)議棧設計 網(wǎng)關(guān)協(xié)議棧為MODBUS輸入/輸出模塊和PROFI-BUS-DP通信的橋梁。協(xié)議棧采用分層結構:PROFIBUS-DP通信層、協(xié)議映射層和 MODDBUs I/O通信層。協(xié)議棧結構及報文處理流程如圖4所示。 ![]() (1)PROFIBUS-DP通信層 負責對VPC3+C通信狀態(tài)的監控管理,按照一定的規則將PROFIBUS-DP總線(xiàn)通信收到的數據映射到CPU內部的存儲器,供I/O通信層調用,完成輸出數據的更新;把I/O通信層的輸入數據按照一定的規則映射到CPU內部的寄存器,在適當的時(shí)候寫(xiě)入VPC3+C的輸入數據緩沖區,以完成輸入數據的更新。 (2)協(xié)議數據映射層 負責將I/O模塊映射為標準PROFIBUS-DP I/O模塊的工作,包括對下掛的I/O模塊類(lèi)型和通信接口控制字的檢查;各輸入模塊通道輸入數據在PROFIBUS-DP輸入數據中起始位置及所占長(cháng)度的管理;PROFIBUS-DP輸出數據向各輸出模塊通道輸出數據上的映射關(guān)系管理。 (3)MODBUS通信層 負責完成和下掛MODBUS從站I/O模塊的所有通信,包括讀取I/O模塊類(lèi)型、讀取通道輸出值、設定通道輸出值和參數設置等工作;根據映射層提供的輸出數據映射關(guān)系,將PROFIBUS-DP的輸出數據在CPU存儲器里的映射數據更新到輸出模塊的相應通道上;讀取各輸入模塊的通道輸入值,給映射層提供輸入數據資源。 3.3 PROFIBUS-DP總線(xiàn)驅動(dòng) 此網(wǎng)關(guān)PROFIBUS-DP部分采用協(xié)議芯片VPC3+C,其內部含有4KB RAM,用戶(hù)可根據需要對其進(jìn)行設置;有兩種微處理器接口,數據/地址總線(xiàn)復用或單獨操作。因為ARM核對外部RAM操作的速度較快,時(shí)序不能滿(mǎn)足 VPC3+C的操作時(shí)序,因此這里不采用數據/地址總線(xiàn)復用的方式,而是用ARM的GPIO口來(lái)模擬VPC3+C的操作時(shí)序。在這里模擬的是其在 Intel模式下內部寄存器的讀寫(xiě)時(shí)序。此驅動(dòng)主要提供了以下功能:nxp_vpc3_read、nxp_vpc3_write、 nxp_vpc3_init、nxp_vpc3_reset、nxp_vpc3_isr。這些函數分別向上層應用提供了讀寫(xiě)VPC3+C寄存器、對其初始化、復位操作及中斷的處理功能。其中對寄存器的讀寫(xiě)操作是關(guān)鍵部分,函數原型如下: unsigned char nxp_vpc3_read(unsigned int addr); void nxp_vpc3_write(unsigned int addr,unsigned char data); 其中,addr為要讀寫(xiě)的寄存器地址,data為要寫(xiě)入的數據。 3.4 MODBUS協(xié)議的實(shí)現 為增加信號傳輸的距離并提高抗干擾能力,MODB-US物理層采用標準的RS485通信。MODBUS協(xié)議實(shí)現軟件的流程如圖5所示。 ![]() 為了提高協(xié)議處理報文的效率,并提供良好的擴展性能,定義了函數指針數組,用于MODBUS應用層的數據處理。函數指針數組指針按照模塊類(lèi)型進(jìn)行信息處理的導向。 3.5 協(xié)議數據的映射處理 此網(wǎng)關(guān)的主要任務(wù)是完成PROFIBUS-DP的數據和MODB-實(shí)現的流程US數據的相互轉換,為了保證數據的實(shí)時(shí)性采用單緩沖區技術(shù)來(lái)實(shí)現信息的及時(shí)更新。所謂“單緩沖區”,即不管是PROFIBUS-DP還是MODBUS中待轉換的數據,只保留當前最新的一幀?紤]到現場(chǎng)通信的數據主要是數據的采集或模擬量的輸出,采用單個(gè)緩沖區不僅僅大大降低了對內存的需求,而且可以保證通信的實(shí)時(shí)性。因為PROFIBUS-DP的正常通信需要組態(tài)的軟件和下掛模塊的硬件一致,才能保證系統的可靠運行。因此如何將MODBUS從站模塊合理地映射成PROFIBUS-DP的標準模塊很關(guān)鍵。這里根據模塊特點(diǎn)(類(lèi)型、數字量/模擬量、通道數量等)定義了不同的通信接口控制字(CFG_DAT)。系統上電后,網(wǎng)關(guān)通過(guò)MODBUS功能碼0x11對下掛從站模塊進(jìn)行類(lèi)型及狀態(tài)查詢(xún),并根據類(lèi)型得到對應不同模塊的CFG_DAT。在PROFIBUS-DP進(jìn)行通信接口配置(CFG_CHK)的過(guò)程中檢查下掛模塊的 CFG_DAT和對主站硬件組態(tài)的模塊對應的CFG_DAT,并根據此來(lái)填充診斷數據。如果檢查通過(guò),控制PROFIBUS-DP從站協(xié)議芯片進(jìn)入數據交換狀態(tài);否則主站在進(jìn)行診斷數據請求(DIAG-REQ)的時(shí)候,將診斷數據報告給主站。此網(wǎng)關(guān)判斷的診斷信息包括:對應CFG_DAT錯誤的模塊地址、模擬量輸入MODBUS模塊的通道斷線(xiàn)標志。 3.6 關(guān)鍵技術(shù)研究 (1)緩沖區數據映射——保證實(shí)時(shí)性 網(wǎng)關(guān)在對兩種協(xié)議的數據進(jìn)行映射的過(guò)程中,采用了一次性?xún)却婵截惣夹g(shù)和單緩沖區技術(shù)來(lái)盡快完成數據的處理且保證是最新數據,以此來(lái)保證數據傳輸在經(jīng)過(guò)網(wǎng)關(guān)時(shí)的實(shí)時(shí)性。 一次性?xún)却婵截惣夹g(shù)是指,網(wǎng)關(guān)從協(xié)議芯片內部讀取到PROFIBUS-DP的輸出數據后,直接將存到的數據填充到MODBUS輸出幀內;從MODBUS輸入模塊得到的數據直接填入到PROFIBUS-DP協(xié)議芯片的輸入緩沖區。這樣的方式可減少內存拷貝過(guò)程中所耗費的時(shí)間。如上所述,網(wǎng)關(guān)單緩沖區技術(shù)也是為了保證數據是最新采用的。此網(wǎng)關(guān)連接的兩種設備的正常數據通信都是周期性的,且周期一般是固定不變的。如果MODBUS數據交換的周期小于 PROFIBUS-DP的數據交換周期,則網(wǎng)關(guān)的緩存中只有1幀有效數據;如果MODBUS數據交換周期大于PROFIBUS-DP的數據交換周期,若采用鏈表保存PRO-FIBUS-DP的幀數據,則不管緩沖區的大小有多少,肯定導致緩沖區溢出,從而使PROFIBUS-DP的輸出數據不能即時(shí)更新到 MODBUS從站的通道上進(jìn)而影響系統的實(shí)時(shí)性。 (2)實(shí)時(shí)模塊通信檢查——保證可靠性 系統除了在上電之后對下掛的MODBUS模塊進(jìn)行類(lèi)型查詢(xún)并和PROFIBUS-DP主站組態(tài)模塊類(lèi)型進(jìn)行比較外,在進(jìn)入正常數據交換之后,也會(huì )對模塊的狀態(tài)進(jìn)行查詢(xún),判斷模塊是否發(fā)生錯誤。錯誤標志是在網(wǎng)關(guān)和MODB-US從站進(jìn)行通信過(guò)程中根據從站的回應幀來(lái)判斷的。在逐個(gè)檢查模塊錯誤標志后,如果沒(méi)有錯誤標識被置位,繼續正常通信過(guò)程;如果發(fā)現有錯誤標識被置位,則控制PRO-FIBUS-DP協(xié)議芯片離開(kāi)數據交換狀態(tài),并且填充診斷信息。在此之后,不斷查詢(xún)MODBUS模塊類(lèi)型,直至模塊類(lèi)型和對PROFIBUS-DP主站組態(tài)數據一致為止,再控制PROFIBUS-DP協(xié)議芯片進(jìn)入數據交換狀態(tài)。這樣采用實(shí)時(shí)查詢(xún)模塊是否出錯狀態(tài)的方式來(lái)保證軟件組態(tài)數據和硬件類(lèi)型相一致,防止出現輸入/輸出數據的錯誤。 此網(wǎng)關(guān)系統中MODBUS協(xié)議是由軟件來(lái)實(shí)現的,考慮到需要定時(shí)器等保證通信的可靠性,為了防止兩種協(xié)議通信的相互影響,對PROFIBUS-DP輸出數據的讀取采用查詢(xún)的方式而非中斷方式進(jìn)行。這樣在PROFIBUS-DP的數據到來(lái)后不會(huì )打斷正在進(jìn)行的MODBUS通信,尤其是在PROFIBUS- DP通信速率較高的情況下,這種設計的可靠性更加明顯。如果采用中斷的方式,在PRO-FIBUS-DP通信速率超過(guò)一定值,其勢必影響網(wǎng)關(guān)和 MODBUS從站之間的通信(詳見(jiàn)下面性能分析部分),嚴重時(shí)會(huì )導致MODBUS幀傳輸的不完整性,從而導致網(wǎng)關(guān)對MODBUS模塊通信狀態(tài)的誤判,進(jìn)而影響系統的穩定性。 4 網(wǎng)關(guān)測試結果 在規定的條件下,對通信次數進(jìn)行計數,程序的每個(gè)掃描周期進(jìn)行一次MODBUS數據輸入/輸出的更新;PROFIBUS-DP輸入/輸出數據的更新,則是在VPC3+C收到PROFIBUS-DP的輸出數據標志位置位后進(jìn)行。對這兩種數據更新的次數進(jìn)行計數,分別為Cmidbus和Cdp在 PROFIBUS-DP通信速率(λdp)變化的情況下,實(shí)際測試數據如表1所列。 ![]() 從表中可以看出,λdp=187.5 kbps時(shí),Cdp=Cmodbus,實(shí)際上,此時(shí)已經(jīng)出現了PROFIBUS-DP丟包現象。這也解釋了上邊所提到的如果λdp超過(guò)一定值,若采用中斷方式處理PROFIBUS-DP的輸出數據,勢必影響正在進(jìn)行的MODBUS的通信。 5 結論 將中國四聯(lián)集團采用MODBUS協(xié)議的輸入/輸出從站設備無(wú)縫接入PROFIBUS-DP網(wǎng)絡(luò )的智能通信網(wǎng)關(guān)的實(shí)現方案,有效地拓寬了其應用范圍。在硬件設計上,采用電源管理模塊實(shí)現網(wǎng)關(guān)的熱插拔功能;采用專(zhuān)用芯片解析PROFIBUS-DP協(xié)議;采用磁耦隔離代替傳統的光耦隔離,提高了系統的性能和可靠性。軟件方面,采用單緩沖區設計、一次性?xún)却婵截惣夹g(shù)、實(shí)時(shí)模塊狀態(tài)查詢(xún)方式以及合理的中斷應用來(lái)保證系統的實(shí)時(shí)性和可靠性,還對網(wǎng)關(guān)的性能進(jìn)行了測試和簡(jiǎn)單計算,給出了保證不丟包所需要滿(mǎn)足的公式。為其他工業(yè)通信網(wǎng)關(guān)的設計提供了參考。 參考文獻 1. Willig A.An architecture for wireless extension of PROFIBUS[C].Proc.29th Annu.Conf.IEEE Industrial Eleetronics Society,2003,3:2369-2375. 2. Ferreira L,Alves M,Tovar E.Hybrid wired/wireless profibus networks supported by bridges/touters[C].Proe.2002IEEE Workshop Factory Communication Systems,2002:193-202. 3. Lee K C,Lee S,Lee H H.Implementation and PID tuning of network-based control systems via Profibus polling network[J].Computer Standards and Interfaces,2004,26(3):229-240. 4. Suk Lee,Kyoung Nam Ha,et al.NDIS-based virtual polling algorithm for IEEE 802.11b for guaranteeing the realtime requirements[J].Computer Standards&Interfaces,2007,29:316-324. 作者:北京航空航天大學(xué) 梁超眾 夏繼強 來(lái)源:《單片機與嵌入式系統應用》 2009(11) |