Modbus通信協(xié)議的FPGA實(shí)現(xiàn)
(6)等待發(fā)送完成,轉(zhuǎn)到步驟(1)。
解釋模塊主要由解釋控制模塊、分析模塊、各功能碼解釋模塊、錯(cuò)誤功能碼處理模塊組成。分析模塊首先分析接收消息起始兩個(gè)字節(jié),即地址碼和功能碼。如果地址為廣播消息地址(地址為0)或者地址碼和本從站地址不相等,則不處理本消息,解釋控制模塊發(fā)出解釋完畢并置不響應(yīng)信號(hào)為“1”,頂層控制模塊繼續(xù)處于等待接收消息狀態(tài)。如果功能碼為非支持功能碼,則選擇錯(cuò)誤功能代碼處理模塊;如果為某一支持的功能碼,則選擇相應(yīng)的功能模塊解釋接收消息,按照功能碼要求解碼(例如讀/寫(xiě)某一指定寄存器或者線圈)。處理完之后把相應(yīng)的異常碼響應(yīng)消息或者正常響應(yīng)消息寫(xiě)入Modbus協(xié)議接口模塊里的發(fā)送緩沖寄存器里,完畢之后通過(guò)Ld_TbNCE信號(hào)把發(fā)送緩沖寄存器鎖存消息的末地址(不帶CRC校驗(yàn)位)Trbuf_add[7..O](保證在Ld_TbNCE有效時(shí)它為末地址)存入Modbus協(xié)議接口模塊,發(fā)出解釋完畢信號(hào),不響應(yīng)信號(hào)置“O”,之后由頂層控制模塊控制接口模塊發(fā)送響應(yīng)消息。對(duì)于某些功能碼,比如01碼和02碼,03碼和04碼,由于對(duì)它們的解釋差別很小,可以共用一個(gè)模塊,達(dá)到節(jié)省資源的目的。對(duì)于特定的系統(tǒng),完全可以選擇某一些功能碼甚至某一個(gè)功能碼,而達(dá)到需求,故這里采用這種模塊化方式,可以很容易在不改變其他功能模塊的情況下刪除不需要的功能碼模塊或者增加新需要的功能碼模塊。
該協(xié)處理器與從設(shè)備其他部分接口僅僅為雙口RAM,從設(shè)備完全被映射為寄存器組的抽象,這比啟用寄存器直接實(shí)現(xiàn)要節(jié)省邏輯資源。由于這些雙口RAM是完全透明的,用戶可以根據(jù)整個(gè)Modbus系統(tǒng)需要自定義各個(gè)寄存器的實(shí)際含義。Modbus主設(shè)備可以在任何時(shí)候隨機(jī)地訪問(wèn)這些寄存器組。Modbus從設(shè)備控制、執(zhí)行模塊對(duì)這些寄存器組的訪問(wèn)需要尋求一種較好的方式,由于FPGA的高速度及并行機(jī)制,一般情況下可以采取輪詢的機(jī)制即可滿足工業(yè)實(shí)時(shí)性需求。對(duì)于某些特殊情況需要更高優(yōu)先級(jí)的控制方式,也可以采取中斷方式。如圖7所示,可以通過(guò)雙口RAM的地址線和寫(xiě)使能信號(hào)線進(jìn)行中斷檢測(cè)和沖突檢測(cè):當(dāng)從站協(xié)處理模塊對(duì)某些特定寄存器讀/寫(xiě)完畢之后,產(chǎn)生一個(gè)中斷信號(hào),對(duì)某些可能存在從站協(xié)處理器模塊和從設(shè)備控制執(zhí)行模塊都要對(duì)其進(jìn)行寫(xiě)操作的寄存器,如果有寫(xiě)操作同時(shí)發(fā)生,則從設(shè)備控制執(zhí)行模塊應(yīng)該等待從站協(xié)處理器寫(xiě)完再寫(xiě),以保證寫(xiě)操作是原子的。圖8為03碼應(yīng)答的完整仿真時(shí)序。本文引用地址:http://www.ex-cimer.com/article/157238.htm
圖9為示波器在通信線路上檢測(cè)到的波形,圖9(a)展現(xiàn)了一系列連續(xù)幀通信實(shí)況;圖9(b)展現(xiàn)某一應(yīng)答情況,可以看出主機(jī)和從機(jī)通信電平有差異,但都在RS 485范圍之內(nèi);圖9(c)展現(xiàn)了某一幀的具體情況。
5 結(jié)語(yǔ)
該設(shè)計(jì)基于Altera公司FPGA,首先設(shè)計(jì)了一個(gè)可以通用于Modbus主設(shè)備和從設(shè)備的Modbus協(xié)議接口,然后基于該協(xié)議接口設(shè)計(jì)了一個(gè)通用的Modbus從設(shè)備協(xié)處理器,該接口也可以方便地用于主協(xié)議設(shè)備中。本設(shè)計(jì)通過(guò)了多款FPGA芯片的綜合驗(yàn)證,并與WEINVIEW公司觸摸屏MT-506MV和INVT公司CHF1OO-5R5G/7R5P變頻器成功通信。目前該設(shè)計(jì)已在某工業(yè)EPS系統(tǒng)和某沖擊試驗(yàn)臺(tái)中穩(wěn)定運(yùn)行半年,可見(jiàn)其有一定應(yīng)用前景。
評(píng)論