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