PROFI BUS-DP/MODBUS的網(wǎng)關(guān)結(jié)構(gòu)設(shè)計(jì)
3.6 關(guān)鍵技術(shù)研究
(1)緩沖區(qū)數(shù)據(jù)映射――保證實(shí)時(shí)性
網(wǎng)關(guān)在對(duì)兩種協(xié)議的數(shù)據(jù)進(jìn)行映射的過程中,采用了一次性內(nèi)存拷貝技術(shù)和單緩沖區(qū)技術(shù)來盡快完成數(shù)據(jù)的處理且保證是最新數(shù)據(jù),以此來保證數(shù)據(jù)傳輸在經(jīng)過網(wǎng)關(guān)時(shí)的實(shí)時(shí)性。
一次性內(nèi)存拷貝技術(shù)是指,網(wǎng)關(guān)從協(xié)議芯片內(nèi)部讀取到PROFIBUS-DP的輸出數(shù)據(jù)后,直接將存到的數(shù)據(jù)填充到MODBUS輸出幀內(nèi);從MODBUS輸入模塊得到的數(shù)據(jù)直接填入到PROFIBUS-DP協(xié)議芯片的輸入緩沖區(qū)。這樣的方式可減少內(nèi)存拷貝過程中所耗費(fèi)的時(shí)間。如上所述,網(wǎng)關(guān)單緩沖區(qū)技術(shù)也是為了保證數(shù)據(jù)是最新采用的。此網(wǎng)關(guān)連接的兩種設(shè)備的正常數(shù)據(jù)通信都是周期性的,且周期一般是固定不變的。如果MODBUS數(shù)據(jù)交換的周期小于PROFIBUS-DP的數(shù)據(jù)交換周期,則網(wǎng)關(guān)的緩存中只有1幀有效數(shù)據(jù);如果MODBUS數(shù)據(jù)交換周期大于PROFIBUS-DP的數(shù)據(jù)交換周期,若采用鏈表保存PRO-FIBUS-DP的幀數(shù)據(jù),則不管緩沖區(qū)的大小有多少,肯定導(dǎo)致緩沖區(qū)溢出,從而使PROFIBUS-DP的輸出數(shù)據(jù)不能即時(shí)更新到MODBUS從站的通道上進(jìn)而影響系統(tǒng)的實(shí)時(shí)性。
(2)實(shí)時(shí)模塊通信檢查――保證可靠性
系統(tǒng)除了在上電之后對(duì)下掛的MODBUS模塊進(jìn)行類型查詢并和PROFIBUS-DP主站組態(tài)模塊類型進(jìn)行比較外,在進(jìn)入正常數(shù)據(jù)交換之后,也會(huì)對(duì)模塊的狀態(tài)進(jìn)行查詢,判斷模塊是否發(fā)生錯(cuò)誤。錯(cuò)誤標(biāo)志是在網(wǎng)關(guān)和MODB-US從站進(jìn)行通信過程中根據(jù)從站的回應(yīng)幀來判斷的。在逐個(gè)檢查模塊錯(cuò)誤標(biāo)志后,如果沒有錯(cuò)誤標(biāo)識(shí)被置位,繼續(xù)正常通信過程;如果發(fā)現(xiàn)有錯(cuò)誤標(biāo)識(shí)被置位,則控制PRO-FIBUS-DP協(xié)議芯片離開數(shù)據(jù)交換狀態(tài),并且填充診斷信息。在此之后,不斷查詢MODBUS模塊類型,直至模塊類型和對(duì)PROFIBUS-DP主站組態(tài)數(shù)據(jù)一致為止,再控制PROFIBUS-DP協(xié)議芯片進(jìn)入數(shù)據(jù)交換狀態(tài)。這樣采用實(shí)時(shí)查詢模塊是否出錯(cuò)狀態(tài)的方式來保證軟件組態(tài)數(shù)據(jù)和硬件類型相一致,防止出現(xiàn)輸入/輸出數(shù)據(jù)的錯(cuò)誤。
此網(wǎng)關(guān)系統(tǒng)中MODBUS協(xié)議是由軟件來實(shí)現(xiàn)的,考慮到需要定時(shí)器等保證通信的可靠性,為了防止兩種協(xié)議通信的相互影響,對(duì)PROFIBUS-DP輸出數(shù)據(jù)的讀取采用查詢的方式而非中斷方式進(jìn)行。這樣在PROFIBUS-DP的數(shù)據(jù)到來后不會(huì)打斷正在進(jìn)行的MODBUS通信,尤其是在PROFIBUS-DP通信速率較高的情況下,這種設(shè)計(jì)的可靠性更加明顯。如果采用中斷的方式,在PRO-FIBUS-DP通信速率超過一定值,其勢必影響網(wǎng)關(guān)和MODBUS從站之間的通信(詳見下面性能分析部分),嚴(yán)重時(shí)會(huì)導(dǎo)致MODBUS幀傳輸?shù)牟煌暾?,從而?dǎo)致網(wǎng)關(guān)對(duì)MODBUS模塊通信狀態(tài)的誤判,進(jìn)而影響系統(tǒng)的穩(wěn)定性。本文引用地址:http://www.ex-cimer.com/article/181148.htm
4 網(wǎng)關(guān)測試結(jié)果
在規(guī)定的條件下,對(duì)通信次數(shù)進(jìn)行計(jì)數(shù),程序的每個(gè)掃描周期進(jìn)行一次MODBUS數(shù)據(jù)輸入/輸出的更新;PROFIBUS-DP輸入/輸出數(shù)據(jù)的更新,則是在VPC3+C收到PROFIBUS-DP的輸出數(shù)據(jù)標(biāo)志位置位后進(jìn)行。對(duì)這兩種數(shù)據(jù)更新的次數(shù)進(jìn)行計(jì)數(shù),分別為Cmidbus和Cdp在PROFIBUS-DP通信速率(λdp)變化的情況下,實(shí)際測試數(shù)據(jù)如表1所列。
從表中可以看出,λdp=187.5 kbps時(shí),Cdp=Cmodbus,實(shí)際上,此時(shí)已經(jīng)出現(xiàn)了PROFIBUS-DP丟包現(xiàn)象。這也解釋了上邊所提到的如果λdp超過一定值,若采用中斷方式處理PROFIBUS-DP的輸出數(shù)據(jù),勢必影響正在進(jìn)行的MODBUS的通信。
5 結(jié) 論
將中國四聯(lián)集團(tuán)采用MODBUS協(xié)議的輸入/輸出從站設(shè)備無縫接入PROFIBUS-DP網(wǎng)絡(luò)的智能通信網(wǎng)關(guān)的實(shí)現(xiàn)方案,有效地拓寬了其應(yīng)用范圍。在硬件設(shè)計(jì)上,采用電源管理模塊實(shí)現(xiàn)網(wǎng)關(guān)的熱插拔功能;采用專用芯片解析PROFIBUS-DP協(xié)議;采用磁耦隔離代替?zhèn)鹘y(tǒng)的光耦隔離,提高了系統(tǒng)的性能和可靠性。軟件方面,采用單緩沖區(qū)設(shè)計(jì)、一次性內(nèi)存拷貝技術(shù)、實(shí)時(shí)模塊狀態(tài)查詢方式以及合理的中斷應(yīng)用來保證系統(tǒng)的實(shí)時(shí)性和可靠性,還對(duì)網(wǎng)關(guān)的性能進(jìn)行了測試和簡單計(jì)算,給出了保證不丟包所需要滿足的公式。為其他工業(yè)通信網(wǎng)關(guān)的設(shè)計(jì)提供了參考。
評(píng)論