文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.190859
中文引用格式: 陳虎,,陳倩. 基于FPGA的MEWTOCOL-COM與MODBUS RTU協(xié)議快速轉換的設計與實現(xiàn)[J].電子技術應用,,2019,45(11):112-116.
英文引用格式: Chen Hu,,Chen Qian. Design and implementation of the protocol conversion between MEWTOCOL-COM and MODBUS RTU based on FPGA[J]. Application of Electronic Technique,,2019,45(11):112-116.
0 引言
現(xiàn)場總線技術是在工業(yè)自動化領域中解決工業(yè)現(xiàn)場的智能化儀器儀表,、控制器、執(zhí)行機構等現(xiàn)場設備間的數(shù)字通信以及這些現(xiàn)場控制設備和高級控制系統(tǒng)之間的信息傳遞問題,,是工業(yè)設備自動化和信息化的基礎,。然而,由于歷史原因,現(xiàn)場總線的通信協(xié)議卻種類繁多,,根據(jù)IEC61158第四版國際標準,,已有20種現(xiàn)場總線協(xié)議成為國際標準[1]。常用的現(xiàn)場總線協(xié)議有西門子的MPI和PPI Rockwell的DF1,、松下的MEWTOCOL-COM以及絕大多數(shù)設備廠商都遵循的MODBUS協(xié)議等,。由于不同設備商支持的協(xié)議標準不同,導致不同設備商的設備之間不能直接互聯(lián)互通,,這就造成了生產制造單位在擴大生產線或設計產品線時,,無法做到資源的合理規(guī)劃和充分利用,老舊產線無法順利接入智能網(wǎng)絡等困境,。
目前,,針對不同的工業(yè)協(xié)議之間的相互轉換,最常見的方式有基于嵌入式系統(tǒng)實現(xiàn)協(xié)議轉換,、基于專用芯片實現(xiàn)協(xié)議轉換和基于FPGA實現(xiàn)協(xié)議轉換[2],。表1是對這三種常用方式的優(yōu)缺點的比較。
本文針對松下電工的私有協(xié)議 MEWTOCOL-COM 和標準串行協(xié)議 MODBUS RTU進行了深入的研究,,并設計和實現(xiàn)了一種 MEWTOCOL-COM 與 MODBUS RTU協(xié)議快速轉換的電路方案,,不但解決了 MEWTOCOL-COM 標準設備與 MODBUS RTU標準設備集成在一個現(xiàn)場總線網(wǎng)絡中進行互聯(lián)互通、數(shù)據(jù)交換的問題,,而且完成了兩個協(xié)議快速轉換,,轉換前后的數(shù)據(jù)報文時延小于2 ms。
1 MEWTOCOL-COM與MODBUS通信原理
1.1 MEWTOCOL-COM通信原理
MEWTOCOL-COM是松下電工FP系列PLC與PLC,、計算機或者HMI觸摸屏之間采用的一種專用的通信協(xié)議,。該協(xié)議采用主從應答模式,數(shù)據(jù)傳送采用的是ASCII碼編碼形式,,每次通信的開始,,都由主站(主PLC、計算機或者HMI觸摸屏)發(fā)送指令,,從站(從PLC)接受到指令后,自動進行相應的響應,,主站根據(jù)從站的響應,,可以得知從設備是否正確執(zhí)行了剛剛發(fā)送的指令,這樣就構成了一個交互式的操作,。圖1是完成主從通信模型的示意圖,。
1.2 MEWTOCOL-COM基本幀格式
MEWTOCOL-COM協(xié)議中規(guī)定了基本幀格式,基本幀格式有控制代碼,,包含了幀頭,、命令、正常響應、錯誤響應,、結束等字符,,如表2所示。MEWTOCOL-COM的每次通信都先由主站發(fā)起,,主站發(fā)起命令幀,,命令幀內容除了包含控制代碼外,還包括一些特殊標志碼,、PLC站號和呼號字符等[3],。表3是基本幀的格式。命令幀在文本區(qū)域中填寫命令代碼和操作地址,,命令代碼含義如表4所示,。
1.3 MODBUS RTU工作原理
自1979年來,MODBUS已經成為工業(yè)領域通信協(xié)議的業(yè)界標準,,通過MODBUS連接著百萬臺自動化設備之間的通信,。在OSI模型中,MODBUS位于第7層,,是一種應用層報文傳輸協(xié)議,。
MODBUS在串行通信模式下,通信幀格式有兩種:一種是主機發(fā)起的查詢和命令從設備的格式,,另一種是從設備收到主機命令后的應答格式[4],。通信原理是采用請求/應答的方式進行主從通信,其工作原理如圖2所示,。MODBUS主站通過向相應物理地址的從站發(fā)送相應的控制信息進行總線數(shù)據(jù)的交互,,一般采用的是一對多的物理連接方式,其通信的實質是主從一對一的請求/應答模式的通信過程[5],。
當物理層為RS422或RS485的串行通信方式下,,MODBUS通信協(xié)議有兩種數(shù)據(jù)的收發(fā)模式,一種是RTU(Remote Terminal Unit)模式,,另外一種是ASCII模式,。與ASCII模式不同的是,RTU模式下的報文內容是按十六進制的字節(jié)方式進行收發(fā),,沒有報文的開始和結束標記,。MODBUS協(xié)議規(guī)定,在工業(yè)總線上的所有設備,,都必須支持RTU模式,,而ASCII通信模式作為可選項,而非必選項,。本文以RTU模式為研究對象,,建立MEWTOCOL-COM與MODBUS RTU報文的命令、地址映射關系,從而實現(xiàn)兩種不同的總線協(xié)議的相互轉換,。
在MODBUS RTU協(xié)議中,,主機設備通常通過不同的功能碼實現(xiàn)對位、字進行操作,,這里的功能碼就是對應MEWTOCOL-COM中的命令,。
1.4 命令映射表
為了實現(xiàn)MEWTOCOL-COM 協(xié)議與MODBUS 協(xié)議的相互轉換,首先創(chuàng)建命令對應表,,如表5所示,。
1.5 地址映射表
MODBUS的地址編碼是從1開始,并且分不同的地址段,,MEWTOCOL-COM的地址是從0開始,,要進行兩者相互之間的轉換,MODBUS的地址是MEWTOCOL-COM的地址+1,。轉換關系如表6所示,。
2 FPGA實現(xiàn)設計
本文結合實際協(xié)議網(wǎng)關項目驗證了一種基于FPGA的高速協(xié)議轉換的設計方案,它以Altera公司Cyclone系列FPGA芯片為核心,,采用原理圖和Verilog HDL語言編程實現(xiàn)[4-8],。采用友晶提供的DE0-Nano開發(fā)板,配合開發(fā)軟件Quartus II 13.0,,設計了一個驗證系統(tǒng),,系統(tǒng)采用固定波特率115 200 b/s,接收MEWTOCOL-COM協(xié)議數(shù)據(jù),,使用8 bit數(shù)據(jù)位,,1 bit停止位,無奇偶校驗位,。
轉換后的MODBUS RTU協(xié)議報文,,按照8 bit數(shù)據(jù)位,1 bit停止位的發(fā)送,。
FPGA從串行端口接收一幀MEWTOCOL-COM協(xié)議數(shù)據(jù)%10#RDD011050110757cr,,表明讀取站號為10的寄存器地址1105-1107三個字的內容,轉換為MODBUS RTU報文后,,為0A 03 04 52 00 03 A4 51,。
2.1 頂層設計
圖3是驗證系統(tǒng)的頂層RTL視圖,頂層一共有三個輸入端口:clk,,rst_n和rxd信號,,分別表示FPGA的外部時鐘輸入,,復位信號的輸入(低電平有效)和串口接收信號,。頂層的兩個輸出端口,分別是數(shù)據(jù)輸出有效信號d_valid和串口發(fā)送信號txd。
頂層一共例化了4個獨立模塊,,分別是pll,,uart_receiver,cov_fp_mod和uart_transfer模塊,。
2.2 各模塊說明
(1)時鐘模塊PLL
PLL模塊采用Altera公司提供的基礎鎖相環(huán)IP,,輸入時鐘clk是50 MHz,通過PLL后,,輸出信號c0是波特率的采樣時鐘,,本例中采用固定波特率115 200 b/s,因此,,采用頻率為波特率115 200的16倍,,即1.843 2 MHz。
采樣時鐘c0作為模塊的運行時鐘,,分別送到串行端口的收發(fā)數(shù)據(jù)模塊,。
(2)串口接收數(shù)據(jù)模塊uart_receiver
uart_receiver模塊是從串行端口rxd信號中接收串行數(shù)據(jù),并轉換成8 bit并行數(shù)據(jù)后從dout端口輸出,,同時模塊將給出data_ready指示信號,,表明串并轉換完成1個字節(jié)的有效數(shù)據(jù)。
(3)協(xié)議轉換模塊cov_fp_mod
cov_fp_mod模塊是從串口接收數(shù)據(jù)模塊中接收并行的8 bit數(shù)據(jù),,同時按照MEWTOCOL-COM協(xié)議幀轉換為MODBUS RTU協(xié)議幀的方式,,將重新組裝數(shù)據(jù),并實時地發(fā)送到串口發(fā)送數(shù)據(jù)模塊,。
(4)串口發(fā)送數(shù)據(jù)模塊uart_transfer
串口發(fā)送數(shù)據(jù)模塊是將協(xié)議轉換模塊輸出的協(xié)議幀數(shù)據(jù),,進行并串轉換,并發(fā)送到串行接口線路上,。
2.3 SignalTap信號抓取
圖4是通過Altera(現(xiàn)為Intel)公司的Quartus II軟件信號抓取工具SignalTap,,實時獲得的FPGA的內部信號數(shù)據(jù),其中rxd和txd為FPGA的串口輸入和輸出信號,,i_data_d是來自MEWTOCOL-COM協(xié)議的做了同步處理后的并行數(shù)據(jù),,send_en是轉換模塊進行轉換后使能數(shù)據(jù)輸出的指示信號;o_data信號是協(xié)議轉換模塊的MODBUS RTU協(xié)議報文的輸出并行數(shù)據(jù),;silent_interval_done信號是根據(jù)MODBUS RTU協(xié)議,,發(fā)送數(shù)據(jù)報文前后至少要保持3.5個字符時間以內,串口總線保持寂靜,,對于波特率為115 200 b/s時,,要求這個時間為1 750 μs。當總線上不滿足寂靜時間時,,信號silent_interval_done為低電平,,否則為高電平,,表示數(shù)據(jù)可以從串行端口上進行發(fā)送。信號t35_cnt是串口總線寂靜時間的累加寄存器值,,當MODBUS RTU協(xié)議的數(shù)據(jù)從串行端口上發(fā)送結束后,,信號t35_cnt便開始從0計時,直到計滿1 750 μs后,,silent_interval_done信號才為高電平有效,,表示串口發(fā)送總線上可以進行數(shù)據(jù)的傳送了。
SignalTap的采樣時鐘使用16x波特率的時鐘,,即1.843 2 MHz,,每個時鐘周期為0.542 5 μs。從接收到MEWTOCOL-COM協(xié)議的數(shù)據(jù)到轉換為MODBUS RTU的數(shù)據(jù)并發(fā)送,,通過將SignalTap的數(shù)據(jù)導出為csv格式,,得到從rxd信號接收開始有效計算到協(xié)議轉換發(fā)送txd信號有效輸出,兩者之間的時間差2 212個時間單位,,每個時間單位為0.542 5 μs,,則協(xié)議轉換并開始發(fā)送的時間為0.542 5×2 212=1 200.01 μs。因此,,協(xié)議轉換時間很短,,而且不需要完全接收完整的一個MEWTOCOL-COM協(xié)議的報文才開始轉換,硬件電路上可以在適當?shù)臅r間內開始進行轉換,,大大節(jié)省了協(xié)議收發(fā)的時間延時(協(xié)議轉換的CRC計算為組合邏輯,,時延為納秒級,不影響整個轉換時延),。
3 測試
假設PC按MEWTOCOL-COM協(xié)議從站號(設備地址)為10號(范圍是1~32)的保持寄存器DT1105號開始讀取數(shù)據(jù),,直到讀到寄存器1107號,命令幀:%10#RDD011050110757cr,。
其中57是數(shù)據(jù)幀的BCC校驗字段,,cr是結束符。
3.1 命令轉換
根據(jù)命令對應關系,,在讀取保持寄存器,,MEWTOCOL-COM的RD命令對應MDOBUS RTU的03功能碼。
3.2 地址轉換
首先是站號的進制轉換,,MEWTOCOL-COM協(xié)議中是ASCII通信,,站號為10,對應到MODBUS RTU的十六進制格式就是0x0a,。
其次是訪問的寄存器地址轉換,,在MEWTOCOL-COM協(xié)議中,訪問的是數(shù)據(jù)保持寄存器DT1105~DT1107,,起始寄存器地址是1105,,結束地址是1107,,一共3個寄存器。在MODBUS RTU協(xié)議中,,需要起始地址和訪問的寄存器數(shù)量,因此,,根據(jù)表4,,MOBUS RTU的地址是MEWTOCOL-COM的地址+1,DT1105的地址映射到MODBUS RTU地址,,16位的十六進制就是0x0452,。
最后是不同協(xié)議中地址字段的轉換映射關系。MEWTOCOL-COM協(xié)議字段使用了起始地址和結束地址,,而MODBUS RTU協(xié)議中使用的是寄存器的起始地址和被訪問的寄存器的數(shù)量,,因此,還要計算出實際的訪問寄存器的數(shù)量,,1 107-1 105+1=3,,轉成16位的十六進制數(shù)據(jù)是0x0003,并填入MODBUS RTU協(xié)議字段中,。
3.3 轉換前后通信幀
經過上述命令,、地址和數(shù)據(jù)的轉換和映射關系,由PC發(fā)出的MEWTOCOL-COM協(xié)議的通信幀命令%10#RDD011050110757cr,,經過FPGA電路轉換到從站號25號接收到的MODBUS RTU協(xié)議通信幀是(hex格式):0A 03 04 52 00 03 A4 51,。
4 結論
本文在深入分析了MEWTOCOL-COM和MODBUS RTU兩種現(xiàn)場總線通信協(xié)議的基礎上, 提出了基于FPGA架構的協(xié)議轉換方法的硬件方案,,方便快捷地實現(xiàn)了不同現(xiàn)場總線網(wǎng)絡的互聯(lián)互通,,并能快速進行協(xié)議轉換和收發(fā),兩者延時時間約1 200 μs,,F(xiàn)PGA的資源占用也比較小,,圖5是綜合后的實際邏輯數(shù)量,綜合代碼已經包含了兩者協(xié)議的相互轉換邏輯,,實驗驗證了基于FPGA實現(xiàn)MEWTOCOL-COM與MODBUS RTU協(xié)議轉換,,達到了快速轉換和收發(fā)的特點,為現(xiàn)場總線網(wǎng)關的設計提供了一個很好的解決方案,。
參考文獻
[1] 梅恪,,沈璞.關于總線國際標準IEC61158的研究報告[J].儀器儀表標準化與計量,2003(2):30-34.
[2] 王治靈.基于FPGA的多協(xié)議轉換系統(tǒng)的研究與設計[D].成都:電子科技大學,,2018.
[3] 高偉增,,徐君鵬.松下PLC編程與應用(第二版)[M].北京:機械工業(yè)出版社,2015.
[4] 于楓.ALTERA可編程邏輯器件應用技術[M].北京:科學出版社,,2004.
[5] 李洪偉,,袁斯華.基于Quartus II的FPGA/CPLD設計[M].北京:電子工業(yè)出版社,,2006.
[6] 吳志杰,王新霞,,孔凡敏,,等.多路隔離的Modbus協(xié)議轉換器的設計[J].電子技術應用,2016,,42(10):77-79.
[7] 吳繼華,,王誠.Altera FPGA/CPLD設計[M].北京:人民郵電出版社,2005.
[8] 夏宇聞.Verilog數(shù)字系統(tǒng)設計教程[M].北京:北京航空航天大學出版社,,2003.
作者信息:
陳 虎1,,陳 倩2
(1.成都航空職業(yè)技術學院 信息工程學院,四川 成都610100,;2.四川大學 電子信息學院,,四川 成都610064)