基于fpga的串行總線通信在線重構(gòu)方法
【專利摘要】本發(fā)明提供了基于FPGA的串行總線通信在線重構(gòu)方法,包括如下步驟:(1)對從站設(shè)備中的FPGA進(jìn)行區(qū)域劃分,劃分為靜態(tài)區(qū)域和通信重構(gòu)區(qū)域,(2)從站設(shè)備識別串行總線的通信協(xié)議類型,當(dāng)通信協(xié)議類型不一致時,激活重構(gòu)控制模塊,(3)從站設(shè)備中重構(gòu)控制模塊向重構(gòu)主控模塊發(fā)送重構(gòu)請求,重構(gòu)主控模塊發(fā)出準(zhǔn)備完成信號給重構(gòu)控制模塊,重構(gòu)控制模塊收到準(zhǔn)備完成信號后對通信重構(gòu)區(qū)域進(jìn)行在線動態(tài)重新配置,使得重構(gòu)區(qū)域中的通信協(xié)議類型與串行總線的通信協(xié)議類型一致。本發(fā)明使得基于FPGA的串行總線通信設(shè)備具備在線自動適應(yīng)網(wǎng)絡(luò)協(xié)議變化的能力,增強(qiáng)網(wǎng)絡(luò)通信設(shè)備的靈活性和互換性,對多種網(wǎng)絡(luò)通信協(xié)議并存的工業(yè)控制領(lǐng)域具有重大意義。
【專利說明】基于FPGA的串行總線通信在線重構(gòu)方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及工業(yè)控制領(lǐng)域,尤其涉及工業(yè)控制系統(tǒng)的基于FPGA的串行總線通信 在線重構(gòu)方法。
【背景技術(shù)】
[0002] 隨著工業(yè)控制的網(wǎng)絡(luò)化、信息化的程度不斷提高,要求對現(xiàn)場設(shè)備集中監(jiān)視、統(tǒng)一 管理。然而,目前國際上網(wǎng)絡(luò)通信協(xié)議就多達(dá)200余種,其中滿足國際標(biāo)準(zhǔn)IEC61158的也 有20余種。系統(tǒng)設(shè)計(jì)者根據(jù)不同的應(yīng)用需求,往往需要多個儀表廠商提供不同的傳感器、 變送器、控制器、執(zhí)行機(jī)構(gòu)等。然而每個儀表生產(chǎn)廠商可能使用不同標(biāo)準(zhǔn)的網(wǎng)絡(luò)通信協(xié)議, 如Modbus RTU、Modbus ASCII、Profibus-DP,CC-Link等。多種網(wǎng)絡(luò)通信的并存使得工業(yè)設(shè) 備的開發(fā)者和使用者都面臨著嚴(yán)峻的考驗(yàn),亟需一種具有動態(tài)適應(yīng)網(wǎng)絡(luò)通信變化的能力, 而且只消耗最小的軟硬件資源。在實(shí)際工業(yè)網(wǎng)絡(luò)控制系統(tǒng)中,由于功能或臨時更換等需求, 同樣采用串行總線(比如RS-485總線、CAN總線等)為物理傳輸?shù)耐ㄐ旁O(shè)備可能同時存在 于同一網(wǎng)絡(luò),則需要網(wǎng)絡(luò)通信設(shè)備站具有自動識別鏈路通信協(xié)議,然后將本站的通信模式 切換到當(dāng)前通信協(xié)議,實(shí)現(xiàn)網(wǎng)絡(luò)控制系統(tǒng)的通信自適應(yīng)。針對該問題目前解決方案有以下 兩種:硬件全局重構(gòu)和軟件冗余方法。硬件全局重構(gòu)技術(shù)是近年來基于FPGA發(fā)展起來的配 置技術(shù)。網(wǎng)絡(luò)控制系統(tǒng)的全局重構(gòu)則是通過檢測當(dāng)前網(wǎng)絡(luò)的通信協(xié)議類型,更改的負(fù)責(zé)網(wǎng) 絡(luò)通信部分,然后將該配置文件整體燒寫至FPGA。然而,硬件全局重構(gòu)需要對整個FPGA資 源重新配置,該重構(gòu)方法是對器件的整體進(jìn)行更新寫入,不需要改變的非通信部分也進(jìn)行 了更新寫入,從而導(dǎo)致系統(tǒng)進(jìn)行重新初始化,甚至引起系統(tǒng)崩潰,所以該技術(shù)尚未被廣泛應(yīng) 用于工業(yè)現(xiàn)場控制過程中。
[0003] 軟件冗余方法是通過將實(shí)現(xiàn)不同通信協(xié)議的功能塊同時集中在設(shè)備站中,通過檢 測鏈路通信協(xié)議,然后通過函數(shù)調(diào)用或功能切換使得當(dāng)前通信模式為鏈路通信模式,保證 網(wǎng)絡(luò)控制系統(tǒng)正常通信。然而,由于該方法同時將所有通信協(xié)議集中一起,使得系統(tǒng)消耗的 硬件資源和軟件資源將隨著服務(wù)的通信協(xié)議種類數(shù)量成倍的上升,造成大量資源浪費(fèi)。
【發(fā)明內(nèi)容】
[0004] 為解決現(xiàn)有技術(shù)存在的問題和缺陷,本發(fā)明提供一種基于FPGA的串行總線網(wǎng)絡(luò) 通信在線重構(gòu)方法,通過對網(wǎng)絡(luò)通信重構(gòu)區(qū)域采用部分硬件重構(gòu)的方式,在線動態(tài)配置網(wǎng) 絡(luò)通信重構(gòu)區(qū)域,使得基于FPGA的串行總線網(wǎng)絡(luò)通信設(shè)備具備在線自動適應(yīng)網(wǎng)絡(luò)協(xié)議變 化的能力,增強(qiáng)網(wǎng)絡(luò)通信設(shè)備的靈活性和互換性。
[0005] 本發(fā)明的技術(shù)方案是:
[0006] 1.基于FPGA的串行總線通信在線重構(gòu)方法,其特征在于,所述網(wǎng)絡(luò)通信過程涉及 主站設(shè)備和從站設(shè)備,具體包括如下步驟:
[0007] 步驟一,對從站設(shè)備中的FPGA進(jìn)行區(qū)域劃分,并劃分為靜態(tài)區(qū)域和通信重構(gòu)區(qū) 域,所述靜態(tài)區(qū)域包括重構(gòu)控制模塊和重構(gòu)主控模塊;
[0008] 步驟二,從站設(shè)備識別串行總線的通信協(xié)議類型,當(dāng)串行總線的通信協(xié)議類型與 所述通信重構(gòu)區(qū)域中的通信協(xié)議類型不一致時,激活所述重構(gòu)控制模塊;
[0009] 步驟三,從站設(shè)備中所述重構(gòu)控制模塊向所述重構(gòu)主控模塊發(fā)送重構(gòu)請求,所述 重構(gòu)主控模塊收到所述重構(gòu)請求后進(jìn)行重構(gòu)準(zhǔn)備,并在確認(rèn)完成重構(gòu)準(zhǔn)備后發(fā)出準(zhǔn)備完成 信號給所述重構(gòu)控制模塊,所述重構(gòu)控制模塊收到所述準(zhǔn)備完成信號后對所述通信重構(gòu)區(qū) 域進(jìn)行在線動態(tài)重新配置,使得所述重構(gòu)區(qū)域中的通信協(xié)議類型與所述串行總線的通信協(xié) 議類型一致。
[0010] 2.從站設(shè)備的所述通信重構(gòu)區(qū)域包含串行鏈路通信協(xié)議所包括的物理層,數(shù)據(jù)鏈 路層和應(yīng)用層,所述網(wǎng)絡(luò)通信協(xié)議的在線動態(tài)重新配置是指:①若從站設(shè)備的物理層沒有 設(shè)置可與FPGA芯片相匹配對接的對外接口,則網(wǎng)絡(luò)通信重構(gòu)區(qū)域包含數(shù)據(jù)鏈路層和應(yīng)用 層,②若從站設(shè)備的物理層設(shè)置有可與FPGA芯片匹配對接的對外接口,則網(wǎng)絡(luò)通信重構(gòu)區(qū) 域包含對物理層,數(shù)據(jù)鏈路層和應(yīng)用層進(jìn)行通信重構(gòu)的過程,實(shí)現(xiàn)基于FPGA的串行總線的 網(wǎng)絡(luò)通信在線重構(gòu),應(yīng)用層和物理層的通信重構(gòu)過程與數(shù)據(jù)鏈路層的通信重構(gòu)過程方法相 同。
[0011] 3.對網(wǎng)絡(luò)通信重構(gòu)區(qū)域進(jìn)行重構(gòu)之前,將整個靜態(tài)區(qū)域和通信重構(gòu)區(qū)域完全重新 配置一次,確定所述通信重構(gòu)區(qū)域的默認(rèn)通信類型。
[0012] 4.所述步驟二中,在激活重構(gòu)控制模塊之前,先通過從站設(shè)備中的存儲器控制模 塊測試并建立所述重構(gòu)控制模塊與從站設(shè)備的外置存儲器之間的數(shù)據(jù)連接,為網(wǎng)絡(luò)通信重 構(gòu)準(zhǔn)備配置文件,所述配置文件的位置由當(dāng)前串行總線的通信協(xié)議的類型決定。
[0013] 5.所述步驟二中,所述重構(gòu)控制模塊被激活后,重構(gòu)控制模塊凍結(jié)所述通信重構(gòu) 區(qū)域的所有輸入信號,包括所述重構(gòu)控制模塊向所述重構(gòu)主控模塊輸出的用于將通信重構(gòu) 區(qū)域復(fù)位的局部復(fù)位信號。
[0014] 6.所述步驟三中,所述重構(gòu)控制模塊向重構(gòu)主控模塊發(fā)送重構(gòu)請求的同時,所述 重構(gòu)控制模塊向所述重構(gòu)主控模塊發(fā)送重構(gòu)時鐘,所述重構(gòu)請求信號在整個重構(gòu)過程中貫 穿整個重構(gòu)過程,直到出現(xiàn)重構(gòu)成功或者重構(gòu)錯誤。
[0015] 7.所述重構(gòu)控制模塊接收到重構(gòu)主控模塊的準(zhǔn)備完成信號后,等待四個重構(gòu)時 鐘周期,并在第四個重構(gòu)時鐘周期結(jié)束前存儲控制模塊從存儲器中讀取第一個16bit的數(shù) 據(jù);
[0016] 當(dāng)?shù)谒膫€重構(gòu)時鐘周期結(jié)束時,即第四個重構(gòu)周期的下降沿,存儲控制模塊將讀 取的第一個Mbit的數(shù)據(jù)傳輸至重構(gòu)主控模塊的數(shù)據(jù)總線上,第一次等待四個時鐘周期以 后,在下一個下降沿到達(dá)之前讀取第二個16bit的數(shù)據(jù);
[0017] 重復(fù)上述動作直到存儲器中的配置文件讀取完成且重構(gòu)主控模塊輸出重構(gòu)成功 信號到所述重構(gòu)控制模塊。
[0018] 8_所述重構(gòu)控制模塊接收到重構(gòu)成功信號后在8個重構(gòu)時鐘周期內(nèi)解除重構(gòu)請 求信號。
[0019] 9.所述重構(gòu)請求信號解除后,需要等待通信重構(gòu)區(qū)域的凍結(jié)信號成功解除后,所 述重構(gòu)請求信號才能通過重構(gòu)區(qū)域的復(fù)位信號進(jìn)行復(fù)位。
[0020] 10·所述靜態(tài)區(qū)域還包括鏈路通信檢測模塊,鏈路通信檢測模塊根據(jù)串行總線的 報(bào)文信息識別當(dāng)目!J網(wǎng)絡(luò)的通信協(xié)議類型,若識別的當(dāng)前通信協(xié)議類型與重構(gòu)區(qū)域中的通信 協(xié)議類型不一致,鏈路通信檢測模塊激活重構(gòu)控制模塊。
[0021] 本發(fā)明的技術(shù)效果:
[0022] 1.本發(fā)明提供一種基于FPGA的串行總線通信在線重構(gòu)方法,從站進(jìn)行完全配置 以后,當(dāng)其檢測到網(wǎng)絡(luò)通信鏈路通信協(xié)議與網(wǎng)絡(luò)通信重構(gòu)區(qū)域的協(xié)議不一致時,激活重構(gòu) 控制塊。通過對網(wǎng)絡(luò)通信重構(gòu)區(qū)域采用部分硬件重構(gòu)的方式,在線動態(tài)配置網(wǎng)絡(luò)通信重構(gòu) 區(qū)域,使得基于FPGA的串行總線網(wǎng)絡(luò)通信設(shè)備具備在線自動適應(yīng)網(wǎng)絡(luò)協(xié)議變化的能力,增 強(qiáng)網(wǎng)絡(luò)通信設(shè)備的靈活性和互換性,而且無需將不必要的通信協(xié)議集中在一起,避免了資 源的浪費(fèi)。
[0023] 2.在整個通信重構(gòu)過程中,非重構(gòu)區(qū)域(即靜態(tài)區(qū)域)一直保持不變,則其歷史數(shù) 據(jù)及狀態(tài)可以得以保持,應(yīng)用功能塊可以繼續(xù)正常的完成數(shù)據(jù)采集、控制量計(jì)算、信號輸出 等功能,極大的保證了系統(tǒng)的穩(wěn)定運(yùn)行。
[0024] 3·本發(fā)明實(shí)現(xiàn)了 Modbus ASCII通信設(shè)備和Modbus RTU通信設(shè)備的互換性,增強(qiáng) 了產(chǎn)品的互換性,可以實(shí)現(xiàn)多種網(wǎng)絡(luò)的通信的自適應(yīng),對多種網(wǎng)絡(luò)通信協(xié)議并存的工業(yè)控 制領(lǐng)域具有重大意義。
【專利附圖】
【附圖說明】
[0025] 圖1為本發(fā)明邏輯架構(gòu)及重構(gòu)區(qū)域劃分示意圖。
[0026] 圖2為本發(fā)明主要實(shí)現(xiàn)步驟示意圖。
[0027]圖3為本發(fā)明的具體實(shí)施例流程示意圖。
[0028] 圖4為本發(fā)明的通信協(xié)議類型的判別過程示意圖。
[0029] 圖5為本發(fā)明的具體實(shí)施例通信模型異同點(diǎn)對比示意圖。
[0030] 圖6是Modbus總線網(wǎng)絡(luò)的拓?fù)鋱D。
【具體實(shí)施方式】
[0031] 本發(fā)明提供一種基于FPGA的串行總線通信在線重構(gòu)方法,通過對網(wǎng)絡(luò)通信重構(gòu) 區(qū)域采用部分硬件重構(gòu)的方式,使得基于FPGA的串行總線網(wǎng)絡(luò)通信設(shè)備具備在線自動適 應(yīng)網(wǎng)絡(luò)協(xié)議變化的能力,增強(qiáng)網(wǎng)絡(luò)通信設(shè)備的靈活性和互換性。由于串行總線具有多種,比 如RS-485總線、RS-232總線以及RS-422總線等,并且網(wǎng)絡(luò)通信協(xié)議也具有多種,如Modbus RTU、Modbus ASCII、Profibus-DP,CC-Link 等,因此,本發(fā)明以 RS-485 總線,并以 Modbus RTU 和Modbus ASCII兩種通信協(xié)議作為具體實(shí)施例對本發(fā)明作進(jìn)一步描述。
[0032]圖1為本發(fā)明邏輯架構(gòu)及重構(gòu)區(qū)域劃分示意圖。如圖1所示,本發(fā)明提供的Modbus 從站通過部分重構(gòu)方法,實(shí)現(xiàn)在線自動適應(yīng)Modbus ASCII與Modbus RTU的系統(tǒng)功能結(jié)構(gòu) 圖,包含:
[0033] 通信檢測模塊1,在Modbus主站與Modbus從站通信過程中,所有Modbus從站均 可以通過RS-485總線引入鏈路信號,通信檢測模塊和網(wǎng)絡(luò)通信重構(gòu)區(qū)域同時將該信號作 為輸入。正如第一實(shí)施例流程示意圖所描述,通信檢測模塊根據(jù)Modbus ASCII和Modbus RTU的數(shù)據(jù)鏈路層差異特征,實(shí)現(xiàn)區(qū)分鏈路通信協(xié)議。本發(fā)明中"主站"也稱"主站設(shè)備", "從站"也稱"從站設(shè)備"。
[0034] 重構(gòu)控制塊2,該模塊作為整個重構(gòu)控制的中心,當(dāng)通信檢測模塊識別到當(dāng)前網(wǎng)絡(luò) 通信協(xié)議與網(wǎng)絡(luò)通信重構(gòu)區(qū)域的通信協(xié)議不一致時,則激活重構(gòu)控制塊。已激活的重構(gòu)控 制塊首先屏蔽網(wǎng)絡(luò)通信重構(gòu)區(qū)域的輸入信號,然后向重構(gòu)主節(jié)點(diǎn)發(fā)送重構(gòu)請求信號,接著 等待來自重構(gòu)主節(jié)點(diǎn)的重構(gòu)準(zhǔn)備完成信號。當(dāng)重構(gòu)準(zhǔn)備信號被聲明時,重構(gòu)控制塊從存儲 控制塊中取出配置數(shù)據(jù),并將該數(shù)據(jù)傳遞至重構(gòu)主節(jié)點(diǎn),直到重構(gòu)完成或重構(gòu)錯誤信號出 現(xiàn)。若重構(gòu)主節(jié)點(diǎn)的重構(gòu)完成信號聲明時,重構(gòu)控制塊馬上撤銷重構(gòu)請求信號,然后復(fù)位網(wǎng) 絡(luò)通信重構(gòu)區(qū)域,并解除網(wǎng)絡(luò)通信重構(gòu)區(qū)域的屏蔽控制信號。本發(fā)明實(shí)施例中的重構(gòu)主控 模塊接收重構(gòu)控制塊的重構(gòu)請求后進(jìn)行重構(gòu)準(zhǔn)備,所述重構(gòu)準(zhǔn)備是指當(dāng)重構(gòu)主控模塊收到 重構(gòu)請求后,進(jìn)行基于FPGA的串行總線通信在線重構(gòu)的常規(guī)自檢的過程,目的是檢測從站 設(shè)備是否具備重構(gòu)的基本條件,例如用戶對否已經(jīng)自定義劃分好重構(gòu)區(qū)域,重構(gòu)區(qū)域的的 大小是否適度等等。
[0035] 具體為,若在重構(gòu)過程中,出現(xiàn)重構(gòu)錯誤信號,則取消重構(gòu)請求信號,然后等待20 個重構(gòu)時鐘以后重新執(zhí)行重構(gòu)步驟。值得注意的是,當(dāng)重構(gòu)成功信號出現(xiàn)后,需要等待該信 號解除后才能對復(fù)位網(wǎng)絡(luò)通信重構(gòu)區(qū)域和解除該區(qū)域的屏蔽控制信號。
[0036] 存儲控制塊3,該功能塊根據(jù)外部存儲器定義讀取數(shù)據(jù)應(yīng)用接口,當(dāng)重構(gòu)控制塊啟 動網(wǎng)絡(luò)通信重構(gòu)時,該模塊根據(jù)重構(gòu)控制塊提供的存儲器地址,連續(xù)從外部存儲器中取出 數(shù)據(jù)。
[0037] 外部存儲器模塊4,該存儲器按地址分別存儲了 Modbus RTU和Modbus ASCII數(shù)據(jù) 鏈路層的配置文件。
[0038] 重構(gòu)主控模塊5, Altera Cyclone V或Arria V或Stratix V器件內(nèi)部都集成了 該控制塊,重構(gòu)控制塊通過預(yù)留的交互接口,即可實(shí)現(xiàn)對網(wǎng)絡(luò)通信重構(gòu)區(qū)域的重新配置。
[0039] 應(yīng)用功能塊,Modbus網(wǎng)絡(luò)中每個設(shè)備從站都通過應(yīng)用功能塊實(shí)現(xiàn)自身應(yīng)用功能, 該模塊包括兩個單元:Modbus應(yīng)用層單元61,該單元主要實(shí)現(xiàn)Modbus通信協(xié)議應(yīng)用層的協(xié) 議數(shù)據(jù)包解析及封裝等;用戶應(yīng)用單元62,該單元主要功能與本設(shè)備站具體功能有關(guān),例 如控制信號的輸出、控制量的計(jì)算、傳感器信號采集等等。除此之外,該模塊通過Modbus網(wǎng) 絡(luò)同其它通信站相連,實(shí)現(xiàn)站與站之間的數(shù)據(jù)交互。
[0040] 圖2為本發(fā)明主要實(shí)現(xiàn)步驟示意圖。
[0041] 步驟S1.對FPGA進(jìn)行區(qū)域劃分,并劃分為靜態(tài)區(qū)域和通信重構(gòu)區(qū)域,其中,靜態(tài)區(qū) 域至少包括重構(gòu)控制模塊2以及重構(gòu)主控模塊5,當(dāng)然,靜態(tài)區(qū)域還還包括應(yīng)用功能模塊、 存儲器控制模塊3以及鏈路通信檢測模塊1,其中應(yīng)用功能模塊用于控制信號的輸出、控制 量的計(jì)算、傳感器信號采集等;存儲器控制模塊用于當(dāng)重構(gòu)控制模塊氣動網(wǎng)絡(luò)通信重構(gòu)時 根據(jù)重構(gòu)控制提供的存儲器地址,連續(xù)從外置存儲器中讀取配置文件數(shù)據(jù);重構(gòu)主控模塊 為Altera Cyclone V、Arria V以及Stratix V等系列的FPGA器件內(nèi)部集成的控制模塊, 重構(gòu)控制模塊通過預(yù)留的交互接口,即可實(shí)現(xiàn)對網(wǎng)絡(luò)通信重構(gòu)區(qū)域的重新配置。本實(shí)施例 中所述的FPGA (Field _ Programmable Gate Array),即現(xiàn)場可編程門陣歹丨」,它是作為專用 集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了 原有可編程器件門電路數(shù)有限的缺點(diǎn)。
[0042] 步驟S2.識別串行總線的通信協(xié)議類型,當(dāng)串行總線的通信協(xié)議類型與重構(gòu)區(qū)域 中的通信協(xié)議類型不一致時,激活重構(gòu)控制模塊;若一致,則不動作,等待下次串行總線的 報(bào)文信息并進(jìn)行識別,直到通信協(xié)議不一致的情況下執(zhí)行下一步,其中,對于串行總線的通 信協(xié)議類型與重構(gòu)通信協(xié)議類型的識別是通過鏈路通信檢測模塊實(shí)現(xiàn)的,鏈路通信檢測 模塊根據(jù)串行總線的報(bào)文信息識別當(dāng)前網(wǎng)絡(luò)的通信協(xié)議類型,以Modbus ASCII協(xié)議以及 Modbus RTU協(xié)議對識別過程進(jìn)行詳細(xì)的表述:
[0043] 根據(jù)Modbus傳輸協(xié)議標(biāo)準(zhǔn)的規(guī)定:通訊首先由主站向從站發(fā)起請求,而且Modbus 的主站每次只能發(fā)起一個通信事務(wù),網(wǎng)絡(luò)中所有從站都會接收到該請求報(bào)文,然后通過解 析該報(bào)文的地址域內(nèi)容,判斷該內(nèi)容是否為本站地址,若是則作出相應(yīng)的應(yīng)答響應(yīng),否則丟 棄該報(bào)文。其中地址域的有效范圍為1-247,另外0號地址為廣播地址,所有從站收到"0 號地址"請求時均不進(jìn)行報(bào)文應(yīng)答。從另一個方面,網(wǎng)絡(luò)的整個通信方式由Modbus主站決 定,所有網(wǎng)絡(luò)從站都必須與之一致才能正常通信。
[0044] 步驟S3.重構(gòu)控制模塊向重構(gòu)主控模塊發(fā)送重構(gòu)請求,重構(gòu)控制模塊接收重構(gòu)主 控模塊的準(zhǔn)備完成信號后對重構(gòu)區(qū)域重新進(jìn)行協(xié)議配置,即對重構(gòu)區(qū)域進(jìn)行重構(gòu)。
[0045] 圖3為本發(fā)明的具體實(shí)施例流程示意圖。如圖3所示,是本實(shí)施例提供的Modbus 從站通過重構(gòu)網(wǎng)絡(luò)數(shù)據(jù)鏈路層的實(shí)現(xiàn)自動適應(yīng)網(wǎng)絡(luò)通信協(xié)議變化的詳細(xì)流程圖,其包含了 具體實(shí)施過程的諸多細(xì)節(jié),有助于理解本發(fā)明,但是對于本領(lǐng)域技術(shù)人員而言,這諸多細(xì)節(jié) 限定而成的技術(shù)方案僅是本發(fā)明較優(yōu)的技術(shù)方案,不應(yīng)理解為本發(fā)明的唯一實(shí)現(xiàn)方式或者 對保護(hù)范圍的限定。具體流程包括:
[0046] 步驟S301、判斷當(dāng)前網(wǎng)絡(luò)鏈路通信類型是否與網(wǎng)絡(luò)重構(gòu)區(qū)域的通信協(xié)議類型一 致,該步驟等同于第一實(shí)施例的步驟S301-S310后,根據(jù)當(dāng)前通信計(jì)數(shù)器值確定當(dāng)前鏈路 通信協(xié)議類型,然后再將該類型與圖1中網(wǎng)絡(luò)通信重構(gòu)區(qū)域里的通信協(xié)議類型相比較,若 此二者顯示的通信類型一致,不需要改變,則進(jìn)入下一次條件判斷;若此二者顯示通信類型 不一致,則進(jìn)入步驟S302。
[0047] 步驟S302、若步驟S301判斷結(jié)果為假時,說明該從站通信協(xié)議與網(wǎng)絡(luò)主站通信協(xié) 議不一致,則激活重構(gòu)控制塊,屏蔽網(wǎng)絡(luò)通信重構(gòu)區(qū)域的輸入信號,避免在重構(gòu)過程中,夕卜 界信號變換影響網(wǎng)絡(luò)重構(gòu)。
[0048] 步驟S3〇3、根據(jù)當(dāng)前檢測的網(wǎng)絡(luò)通信協(xié)議,確定外部存儲器的通信地址,建立數(shù)據(jù) 通路。
[0049] 其中,外部存儲器是用作存放網(wǎng)絡(luò)通信重構(gòu)區(qū)域的部分重構(gòu)配置文件,本實(shí)施例 是實(shí)現(xiàn)Modbus ASCII與Modbus RTU數(shù)據(jù)鏈路的自動重構(gòu),即在該存儲其中按地址分段存 儲了 Modbus ASCII數(shù)據(jù)鏈路配置文件和Modbus RTU數(shù)據(jù)鏈路層配置文件。當(dāng)存儲控制塊 向該存儲器發(fā)送讀命令,同時將讀的起始地址發(fā)送值存儲器,然后該存儲器將數(shù)據(jù)按照時 鐘周期節(jié)拍傳送至存儲器控制塊。
[0050] 步驟S304、重構(gòu)控制塊向FPGA中的重構(gòu)主控節(jié)點(diǎn)準(zhǔn)備重構(gòu)時鐘,并發(fā)送重構(gòu)請求 信號,該請求信號表明外部請求對網(wǎng)絡(luò)通信重構(gòu)區(qū)域重新配置,而且該信號需要一直保持 高電平,直到重構(gòu)成功信號出現(xiàn)。
[0051] 其中,重構(gòu)時鐘由重構(gòu)控制塊提供,該時鐘信號時重構(gòu)主節(jié)點(diǎn)的工作的基準(zhǔn)時鐘, 而且重構(gòu)控制塊應(yīng)當(dāng)在整個重構(gòu)過程中為重構(gòu)主控節(jié)點(diǎn)提供該時鐘信號。步驟S303、判斷 重構(gòu)主控節(jié)點(diǎn)準(zhǔn)備完成信號是否被發(fā)生。重構(gòu)控制模塊發(fā)送重構(gòu)請求信號后,F(xiàn)PGA需要一 段時間反應(yīng),準(zhǔn)備數(shù)據(jù)接收等操作,在此期間對重構(gòu)主節(jié)點(diǎn)送人數(shù)據(jù)是無效的。
[0052] 步驟S3〇6、若步驟S304判斷為真,則等待四個重構(gòu)時鐘周期,并通過存儲器烤制 塊取出第一個16bit數(shù)據(jù),并將其放在重構(gòu)主節(jié)點(diǎn)的數(shù)據(jù)總線上。
[0053]其中,重構(gòu)準(zhǔn)備完成信號出現(xiàn)后,需要等待四個時鐘周期,在此我們稱之為"握手 協(xié)定",保證重構(gòu)數(shù)據(jù)域時鐘同步。
[0054]其中,由于重構(gòu)主節(jié)點(diǎn)的數(shù)據(jù)位寬為I6,則每次都需要從存儲器取出兩個字節(jié)數(shù) 據(jù),其中第一個字節(jié)為低8位,第二字節(jié)為高第8位。
[0055]步驟§3〇7、按照時鐘節(jié)拍,每次從外部存儲器中取出i6bit數(shù)據(jù),并在重構(gòu)時鐘的 下降沿將該配置數(shù)據(jù)放在數(shù)據(jù)總線上。
[0056]當(dāng)S306等待四個重構(gòu)時鐘周期后,重構(gòu)主節(jié)點(diǎn)將在時鐘的上升沿或數(shù)據(jù)總線數(shù) 據(jù)。本實(shí)例提供的方法約定,在每個時鐘的下降沿準(zhǔn)備好重構(gòu)數(shù)據(jù),以保證在上升沿采集的 時候數(shù)據(jù)的有序及有效性。
[0057]步驟S308、判斷重構(gòu)主節(jié)點(diǎn)的重構(gòu)成功信號是否被置高。若該電平保持為低,則說 明配置文件尚未傳輸完成,則返回步驟S307 ;若該電平被置高,說明重構(gòu)結(jié)束,然后進(jìn)入步 驟 S309。
[0058]步驟S309、取消重構(gòu)請求信號,等待重構(gòu)成功信號置0。為避免重構(gòu)主節(jié)點(diǎn)啟動第 二次重構(gòu),規(guī)定重構(gòu)請求信號在8個重構(gòu)時鐘內(nèi)必須清除為〇,本實(shí)施例規(guī)定,當(dāng)出現(xiàn)重構(gòu) 成功信號后,則立即取消重構(gòu)請求信號。
[0059] 其中,當(dāng)重構(gòu)信號出現(xiàn)后,F(xiàn)PGA將會保持重構(gòu)成功信號一段時間,在該期間內(nèi),不 允許網(wǎng)絡(luò)通信重構(gòu)區(qū)域的屏蔽信號及復(fù)位信號仍需要保持為高。
[0060] 步驟S310、取消屏蔽網(wǎng)絡(luò)通信重構(gòu)區(qū)域輸入信號,復(fù)位網(wǎng)絡(luò)通信重構(gòu)區(qū)域。在步 驟S309中,當(dāng)重構(gòu)成功信號由高變?yōu)榈秃?,整個重構(gòu)過程已經(jīng)結(jié)束。重構(gòu)控制塊則取消步 驟S302的屏蔽控制信號,并復(fù)位該網(wǎng)絡(luò)通信重構(gòu)區(qū)域,以保證所有的通信狀態(tài)保持為初始 值。
[0061] 需要注意的是,整個FGPA需要在整體配置成功一次之后,才能進(jìn)行該實(shí)施例的重 構(gòu)過程,該整體配置同時將靜態(tài)區(qū)域和網(wǎng)絡(luò)部分重構(gòu)區(qū)域同時配置,該過程可以保證通信 識別通信檢測模塊、應(yīng)用控制塊、存儲器控制塊等正常工作。
[0062] 本實(shí)施例初始完全配置過程中網(wǎng)絡(luò)通信重構(gòu)區(qū)域的初始通信方式可以為 Modbus ASCII和Modbus RTU中的任意一種,均滿足本實(shí)施例的要求。此外,整個FPGA的重構(gòu)次數(shù) 是根據(jù)實(shí)際情況確定,沒有嚴(yán)格限制。
[0063] 圖4為本發(fā)明的通信協(xié)議類型的判別過程示意圖。
[0064] Modbus ASCII和Modbus RTU均包括物理層、數(shù)據(jù)鏈路層和應(yīng)用層,但其數(shù)據(jù)鏈路 層差異較大,尤其是數(shù)據(jù)位寬、數(shù)據(jù)編碼方式等。如圖4所示:
[0065] 步驟S401. Modbus從站(滿足Modbus RTU或Modbus ASCII其中任意一種通信協(xié) 議)通過RS-485總線數(shù)據(jù)輸入信號,并監(jiān)視該輸入信號的起始信號;
[0066] 其中,起始信號是Modbus通信站傳輸每個字節(jié)的起始位,規(guī)定為低電平。當(dāng)接收 比特流計(jì)數(shù)值為零,且鏈路輸入信號為低電平時,則該信號為起始信號,表明一個字節(jié)傳輸 開始;
[0067] 步驟S402.判斷采樣比特流數(shù)據(jù)的時間是否到,該采樣時間尚未到時,則繼續(xù)等 待;
[0068] 步驟S403.若步驟S402判斷采樣時間到時,則將當(dāng)前鏈路輸入數(shù)據(jù)放入接收緩 存,然后將比特流接收計(jì)數(shù)器加1,其中,比特流數(shù)據(jù)存放的相對地址由比特流計(jì)數(shù)值決 定;
[0069] 步驟S404.判斷比特流計(jì)數(shù)值是否等于9,并且判斷步驟S403接收的比特?cái)?shù)據(jù)是 否等于1 ;
[0070] 具體地,由Modbus ASCII傳輸協(xié)議標(biāo)準(zhǔn)規(guī)定,在數(shù)據(jù)鏈路層傳輸?shù)拿總€字節(jié)數(shù)據(jù) 包括1個起始位+7個數(shù)據(jù)位+1個奇偶校驗(yàn)位+1個停止位,Modbus RTU傳輸協(xié)議標(biāo)準(zhǔn)規(guī) 定,在數(shù)據(jù)鏈路層的每個字節(jié)包括1個起始位+8個數(shù)據(jù)位+1個奇偶校驗(yàn)位,其中起始位為 0,停止位為1,奇偶檢驗(yàn)位由數(shù)據(jù)位和奇偶檢驗(yàn)方式?jīng)Q定。當(dāng)步驟S404中判斷比特流計(jì) 數(shù)值為9,則說明本次字節(jié)傳送的起始位、數(shù)據(jù)位、奇偶檢驗(yàn)位均己被接收,若當(dāng)前接收的比 特流數(shù)據(jù)為1,則表明符合Modbus ASCII停止位要求,然后進(jìn)入步驟S40S,進(jìn)行奇偶檢驗(yàn)檢 查;
[0071] 步驟S405.判斷比特流計(jì)數(shù)值是否等于10。若步驟404與步驟S405判斷結(jié)果同 時為假時,則返回S402,準(zhǔn)備接收下一個數(shù)據(jù);若步驟S405判斷結(jié)果為真時,說明已接收的 數(shù)據(jù)不符合Modbus ASCII幀格式要求,而且此時已經(jīng)接收了 1〇比特?cái)?shù)據(jù),滿足Modbus RTU 字節(jié)比特流校驗(yàn)要求,則進(jìn)入步驟S406 ;
[0072] 步驟S406.判斷bitl_bit9奇偶檢驗(yàn)是否正確,若正確則進(jìn)入步驟S4〇7,
[0073] 步驟S407.對通信計(jì)數(shù)器加 1 ;
[0074] 步驟S408.判斷bitl_bit8的奇偶檢驗(yàn)是否正確,按照Modbus ASCII協(xié)議規(guī)定, 接收緩存的biti-bits包括了全部的數(shù)據(jù)位和奇偶檢驗(yàn)位。若該校驗(yàn)結(jié)果錯誤,即不符合 Modbus ASCII的幀格式,則重新進(jìn)入步驟S304,繼續(xù)接收第10個比特?cái)?shù)據(jù);若該校驗(yàn)結(jié)果 正確,即符合Modbus ASCII的幀格式,然后進(jìn)入步驟S409,將通信計(jì)數(shù)器減1 ;
[0075] 步驟S210.清零比特流計(jì)數(shù)器,當(dāng)完成Modbus ASCII和Modbus RTU正確校驗(yàn)后, 然后進(jìn)入該步驟對比特流計(jì)數(shù)器進(jìn)行清零操作,表明一個字節(jié)接收完畢,重新返回開始操 作,進(jìn)行下一個字節(jié)數(shù)的接收及判斷。
[0076] 通過上述步驟,完成對Modbus ASCII以及Modbus RTU的識別,上述識別方式僅僅 是以Modbus總線的兩種模式Modbus ASCII以及Modbus RTU為例進(jìn)行協(xié)議識別說明,在實(shí) 際應(yīng)用中,其他的網(wǎng)絡(luò)通信協(xié)議也可以釆用上述的方法進(jìn)行識別,只是其他協(xié)議的字節(jié)的 起始位、校驗(yàn)位等設(shè)置不同而已。
[0077] 圖5為本發(fā)明的具體實(shí)施例通信模型異同點(diǎn)對比示意圖。如圖5所示,Modbus總 線傳輸模式分為Modbus ASCII和Modbus RTU兩種傳輸模式。按0SI七層模型,Modbus ASCII和Modbus RTU均包括物理層、數(shù)據(jù)鏈路層和應(yīng)用層,但其數(shù)據(jù)鏈路層差異較大,尤其 是數(shù)據(jù)位寬、數(shù)據(jù)編碼方式等。本發(fā)明正是基于此思路,提供一種通過改變網(wǎng)絡(luò)通信數(shù)鏈路 層,在線自動適應(yīng)Modbus ASCII與Modbus RTU通信協(xié)議的方法。串行鏈路的通信協(xié)議所 包括的物理層,數(shù)據(jù)鏈路層和應(yīng)用層,通常情況下,基于FPGA平臺的網(wǎng)絡(luò)通信重構(gòu)區(qū)域包 含數(shù)據(jù)鏈路層和應(yīng)用層,若從站設(shè)備的物理層沒有設(shè)置可與FPGA芯片相匹配對接的對外 接口,則網(wǎng)絡(luò)通信重構(gòu)區(qū)域包含數(shù)據(jù)鏈路層和應(yīng)用層,但是,若從站設(shè)備的物理層設(shè)置有可 與FPGA芯片匹配對接的對外接口,依然可以通過本發(fā)明所提供的方法實(shí)現(xiàn)基于FPGA的串 行總線通信在線重構(gòu)。雖然在本發(fā)明的實(shí)施例中,對Modbus ASCII和Modbus RTU的通信 重構(gòu)中只重構(gòu)數(shù)據(jù)鏈路層,是因?yàn)槭S嗟膽?yīng)用層和物理層是一樣的,不再做重復(fù)表述。
[0078] 圖6是Modbus總線網(wǎng)絡(luò)的拓?fù)鋱D。如圖6所示,其主要由一個Modbus主站和若 干個Modbus從站構(gòu)成,其中各個站之間通過RS-485總線連接,并在狀5總線兩端分別接入 120 Ω的終端電阻。Modbus網(wǎng)絡(luò)中各站之間通信均采用該總線傳輸,而且每個正確的通信 報(bào)文均符合Modbus傳輸協(xié)議標(biāo)準(zhǔn)。
[0079] 根據(jù)Modbus傳輸協(xié)議標(biāo)準(zhǔn)的規(guī)定:通訊首先由主站向從站發(fā)起請求,而且Modbus 的主站每次只能發(fā)起一個通信事務(wù),網(wǎng)絡(luò)中所有從站都會接收到該請求報(bào)文,然后通過解 析該報(bào)文的地址域內(nèi)容,判斷該內(nèi)容是否為本站地址,若是則作出相應(yīng)的應(yīng)答響應(yīng),否則丟 棄該報(bào)文。其中地址域的有效范圍為1-247,另外0號地址為廣播地址,所有從站收到"0 號地址"請求時均不進(jìn)行報(bào)文應(yīng)答。從另一個方面,網(wǎng)絡(luò)的整個通信方式由Modbus主站決 定,所有網(wǎng)絡(luò)從站都必須與之一致才能正常通信。根據(jù)Modbus總線傳輸協(xié)議標(biāo)準(zhǔn)的定義: Modbus總線傳輸模式分為Modbus ASCII和Modbus RTU兩種傳輸模式。
[0080] 應(yīng)當(dāng)指出,以上【具體實(shí)施方式】可以使本領(lǐng)域的技術(shù)人員更全面地理解本發(fā)明創(chuàng) 造,但不以任何方式限制本發(fā)明創(chuàng)造。因此,盡管本說明書和實(shí)施例對本發(fā)明創(chuàng)造己進(jìn)行了 詳細(xì)的說明,但是,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,仍然可以對本發(fā)明創(chuàng)造進(jìn)行修改或者等同替 換;而一切不脫離本發(fā)明的精神和范圍的技術(shù)方案及其改進(jìn),其均涵蓋在本發(fā)明創(chuàng)造專利 的保護(hù)范圍當(dāng)中。
【權(quán)利要求】
1. 基于FPGA的串行總線通信在線重構(gòu)方法,其特征在于,所述網(wǎng)絡(luò)通信過程涉及主站 設(shè)備和從站設(shè)備,具體包括如下步驟: 步驟一,對從站設(shè)備中的FPGA進(jìn)行區(qū)域劃分,并劃分為靜態(tài)區(qū)域和通信重構(gòu)區(qū)域,所 述靜態(tài)區(qū)域包括重構(gòu)控制模塊和重構(gòu)主控模塊; 步驟二,從站設(shè)備識別串行總線的通信協(xié)議類型,當(dāng)串行總線的通信協(xié)議類型與所述 通信重構(gòu)區(qū)域中的通信協(xié)議類型不一致時,激活所述重構(gòu)控制模塊; 步驟三,從站設(shè)備中所述重構(gòu)控制模塊向所述重構(gòu)主控模塊發(fā)送重構(gòu)請求,所述重構(gòu) 主控模塊收到所述重構(gòu)請求后進(jìn)行重構(gòu)準(zhǔn)備,并在確認(rèn)完成重構(gòu)準(zhǔn)備后發(fā)出準(zhǔn)備完成信號 給所述重構(gòu)控制模塊,所述重構(gòu)控制模塊收到所述準(zhǔn)備完成信號后對所述通信重構(gòu)區(qū)域進(jìn) 行在線動態(tài)重新配置,使得所述重構(gòu)區(qū)域中的通信協(xié)議類型與所述串行總線的通信協(xié)議類 型一致。
2. 根據(jù)權(quán)利要求1所述基于FPGA的串行總線通信在線重構(gòu)方法,其特征在于,從站設(shè) 備的所述通信重構(gòu)區(qū)域包含串行鏈路通信協(xié)議所包括的物理層,數(shù)據(jù)鏈路層和應(yīng)用層,所 述網(wǎng)絡(luò)通信協(xié)議的在線動態(tài)重新配置是指:①若從站設(shè)備的物理層沒有設(shè)置可與FPGA芯 片相匹配對接的對外接口,則網(wǎng)絡(luò)通信重構(gòu)區(qū)域包含數(shù)據(jù)鏈路層和應(yīng)用層,②若從站設(shè)備 的物理層設(shè)置有可與FPGA芯片匹配對接的對外接口,則網(wǎng)絡(luò)通信重構(gòu)區(qū)域包含對物理層, 數(shù)據(jù)鏈路層和應(yīng)用層進(jìn)行通信重構(gòu)的過程,實(shí)現(xiàn)基于FPGA的串行總線的網(wǎng)絡(luò)通信在線重 構(gòu),應(yīng)用層和物理層的通信重構(gòu)過程與數(shù)據(jù)鏈路層的通信重構(gòu)過程方法相同。
3. 根據(jù)權(quán)利要求1的基于FPGA的串行總線通信在線重構(gòu)方法,其特征在于,對網(wǎng)絡(luò)通 信重構(gòu)區(qū)域進(jìn)行重構(gòu)之前,將整個靜態(tài)區(qū)域和通信重構(gòu)區(qū)域完全重新配置一次,確定所述 通信重構(gòu)區(qū)域的默認(rèn)通信類型。
4. 根據(jù)權(quán)利要求1的基于FPGA的串行總線通信在線重構(gòu)方法,其特征在于,所述步驟 二中,在激活重構(gòu)控制模塊之前,先通過從站設(shè)備中的存儲器控制模塊測試并建立所述重 構(gòu)控制模塊與從站設(shè)備的外置存儲器之間的數(shù)據(jù)連接,為網(wǎng)絡(luò)通信重構(gòu)準(zhǔn)備配置文件,所 述配置文件的位置由當(dāng)前串行總線的通信協(xié)議的類型決定。
5·根據(jù)權(quán)利要求1的基于FPGA的串行總線通信在線重構(gòu)方法,其特征在于,所述步驟 二中,所述重構(gòu)控制模塊被激活后,重構(gòu)控制模塊凍結(jié)所述通信重構(gòu)區(qū)域的所有輸入信號, 包括所述重構(gòu)控制模塊向所述重構(gòu)主控模塊輸出的用于將通信重構(gòu)區(qū)域復(fù)位的局部復(fù)位 信號。
6·根據(jù)權(quán)利要求4的基于FPGA的串行總線通信在線重構(gòu)方法,其特征在于,所述步驟 三中,所述重構(gòu)控制模塊向重構(gòu)主控模塊發(fā)送重構(gòu)請求的同時,所述重構(gòu)控制模塊向所述 重構(gòu)主控模塊發(fā)送重構(gòu)時鐘,所述重構(gòu)請求信號在整個重構(gòu)過程中貫穿整個重構(gòu)過程,直 到出現(xiàn)重構(gòu)成功或者重構(gòu)錯誤。
7.根據(jù)權(quán)利要求6的基于FPGA的串行總線通信在線重構(gòu)方法,其特征在于,所述重構(gòu) 控制模塊接收到重構(gòu)主控模塊的準(zhǔn)備完成信號后,等待四個重構(gòu)時鐘周期,并在第四個重 構(gòu)時鐘周期結(jié)束前存儲控制模塊從存儲器中讀取第一個16bit的數(shù)據(jù); 當(dāng)?shù)谒膫€重構(gòu)時鐘周期結(jié)束時,即第四個重構(gòu)周期的下降沿,存儲控制模塊將讀取的 第一個Mbit的數(shù)據(jù)傳輸至重構(gòu)主控模塊的數(shù)據(jù)總線上,第一次等待四個時鐘周期以后, 在下一個下降沿到達(dá)之前讀取第二個16bit的數(shù)據(jù); 重復(fù)上述動作直到存儲器中的配置文件讀取完成且重構(gòu)主控模塊輸出重構(gòu)成功信號 到所述重構(gòu)控制模塊。 _
8.根據(jù)權(quán)利要求7所述的基于FPGA的串行總線通信在線重構(gòu)方法,其特征在于,所述 重構(gòu)控制模塊接收到重構(gòu)成功信號后在8個重構(gòu)時鐘周期內(nèi)解除重構(gòu)請求信號。
9·根據(jù)權(quán)利要求5所述的基于FPGA的串行總線通信在線重構(gòu)方法,其特征在于,所述 重構(gòu)請求信號解除后,需要等待通信重構(gòu)區(qū)域的凍結(jié)信號成功解除后,所述重構(gòu)請求信號 才能通過重構(gòu)區(qū)域的復(fù)位信號進(jìn)行復(fù)位。
10.根據(jù)權(quán)利要求1所述的基于FPGA的串行總線通信在線重構(gòu)方法,其特征在于,所述 靜態(tài)區(qū)域還包括鏈路通信檢測模塊,鏈路通信檢測模塊根據(jù)串行總線的報(bào)文信息識別當(dāng)前 網(wǎng)絡(luò)的通信協(xié)議類型,若識別的當(dāng)前通信協(xié)議類型與重構(gòu)區(qū)域中的通信協(xié)議類型不一致, 鏈路通信檢測模塊激活重構(gòu)控制模塊。
【文檔編號】H04L12/40GK104219121SQ201410471276
【公開日】2014年12月17日 申請日期:2014年9月16日 優(yōu)先權(quán)日:2014年9月16日
【發(fā)明者】趙亦欣, 黃偉, 吳小軍, 楊智, 彭正福, 劉靜, 呂躍躍 申請人:西南大學(xué)