《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 基于FPGA的MEWTOCOL-COM 與MODBUS RTU協(xié)議快速轉(zhuǎn)換的設(shè)計(jì)與實(shí)現(xiàn)
基于FPGA的MEWTOCOL-COM 與MODBUS RTU協(xié)議快速轉(zhuǎn)換的設(shè)計(jì)與實(shí)現(xiàn)
2019年電子技術(shù)應(yīng)用第11期
陳 虎1,陳 倩2
1.成都航空職業(yè)技術(shù)學(xué)院 信息工程學(xué)院,四川 成都610100;2.四川大學(xué) 電子信息學(xué)院,四川 成都610064
摘要: 在工業(yè)智能化過程中,現(xiàn)場總線設(shè)備之間需要信息交換,但種類繁多的總線通信協(xié)議造成了不同設(shè)備之間無法進(jìn)行正確的信息交換。為解決這個問題,首先深入研究了MEWTOCOL-COM和MODBUS RTU(Remote Terminal Unit)兩種現(xiàn)場總線協(xié)議通信的原理及其運(yùn)行機(jī)制,分析了創(chuàng)建命令、地址和數(shù)據(jù)映射關(guān)系的方法,實(shí)現(xiàn)了兩者協(xié)議間的快速命令、地址和數(shù)據(jù)的映射,設(shè)計(jì)了基于FPGA的硬件電路協(xié)議轉(zhuǎn)換方案,搭建了實(shí)驗(yàn)平臺進(jìn)行MEWTOCOL-COM協(xié)議與MODBUS RTU協(xié)議之間的轉(zhuǎn)換測試。實(shí)驗(yàn)結(jié)果表明,該種方法實(shí)現(xiàn)了兩種網(wǎng)絡(luò)協(xié)議間的轉(zhuǎn)換,從而完成了MEWTOCOL-COM標(biāo)準(zhǔn)設(shè)備與MODBUS RTU標(biāo)準(zhǔn)設(shè)備的數(shù)據(jù)互通,且兩種協(xié)議轉(zhuǎn)換后的通信時(shí)延為微秒級。
中圖分類號: TN792;TP274
文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.190859
中文引用格式: 陳虎,陳倩. 基于FPGA的MEWTOCOL-COM與MODBUS RTU協(xié)議快速轉(zhuǎn)換的設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,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.
Design and implementation of the protocol conversion between MEWTOCOL-COM and MODBUS RTU based on FPGA
Chen Hu1,Chen Qian2
1.College of Electronical and Information Engineering,Chengdu Aeronautic Polytechnic,Chengdu 610100,China; 2.College of Electronics and Information Engineering,Sichuan University,Chengdu 610064,China
Abstract: The information is needed to exchange between fieldbus devices in industrial artificial intelligence. However, it is difficult to exchange data and information between equipments for various fieldbus communications protocol. In this paper, the principle and mechanism of MEWTOCOL-COM and MODBUS RTU(Remote Terminal Unit) were discussed. The quick commands, address and data were mapped between the two communications protocol. Moreover, a protocol conversion programme was designed based on FPGA. The platform was built up by hardware and software for exchange experiments between devices based on MEWTOCOL-COM and MODBUS RTU communications protocol. The experiments results showed that communications could be realized between the devices based on MEWTOCOL-COM and MODBUS RTU communications protocol, the transform between two protocol was implemented, and the communication time delay was completed within milliseconds.
Key words : MEWTOCOL-COM;MODBUS RTU;protocol conversion

0 引言

    現(xiàn)場總線技術(shù)是在工業(yè)自動化領(lǐng)域中解決工業(yè)現(xiàn)場的智能化儀器儀表、控制器、執(zhí)行機(jī)構(gòu)等現(xiàn)場設(shè)備間的數(shù)字通信以及這些現(xiàn)場控制設(shè)備和高級控制系統(tǒng)之間的信息傳遞問題,是工業(yè)設(shè)備自動化和信息化的基礎(chǔ)。然而,由于歷史原因,現(xiàn)場總線的通信協(xié)議卻種類繁多,根據(jù)IEC61158第四版國際標(biāo)準(zhǔn),已有20種現(xiàn)場總線協(xié)議成為國際標(biāo)準(zhǔn)[1]。常用的現(xiàn)場總線協(xié)議有西門子的MPI和PPI Rockwell的DF1、松下的MEWTOCOL-COM以及絕大多數(shù)設(shè)備廠商都遵循的MODBUS協(xié)議等。由于不同設(shè)備商支持的協(xié)議標(biāo)準(zhǔn)不同,導(dǎo)致不同設(shè)備商的設(shè)備之間不能直接互聯(lián)互通,這就造成了生產(chǎn)制造單位在擴(kuò)大生產(chǎn)線或設(shè)計(jì)產(chǎn)品線時(shí),無法做到資源的合理規(guī)劃和充分利用,老舊產(chǎn)線無法順利接入智能網(wǎng)絡(luò)等困境。

    目前,針對不同的工業(yè)協(xié)議之間的相互轉(zhuǎn)換,最常見的方式有基于嵌入式系統(tǒng)實(shí)現(xiàn)協(xié)議轉(zhuǎn)換、基于專用芯片實(shí)現(xiàn)協(xié)議轉(zhuǎn)換和基于FPGA實(shí)現(xiàn)協(xié)議轉(zhuǎn)換[2]。表1是對這三種常用方式的優(yōu)缺點(diǎn)的比較。

qrs4-b1.gif

    本文針對松下電工的私有協(xié)議 MEWTOCOL-COM 和標(biāo)準(zhǔn)串行協(xié)議 MODBUS RTU進(jìn)行了深入的研究,并設(shè)計(jì)和實(shí)現(xiàn)了一種 MEWTOCOL-COM 與 MODBUS RTU協(xié)議快速轉(zhuǎn)換的電路方案,不但解決了 MEWTOCOL-COM 標(biāo)準(zhǔn)設(shè)備與 MODBUS RTU標(biāo)準(zhǔn)設(shè)備集成在一個現(xiàn)場總線網(wǎng)絡(luò)中進(jìn)行互聯(lián)互通、數(shù)據(jù)交換的問題,而且完成了兩個協(xié)議快速轉(zhuǎn)換,轉(zhuǎn)換前后的數(shù)據(jù)報(bào)文時(shí)延小于2 ms。

1 MEWTOCOL-COM與MODBUS通信原理

1.1  MEWTOCOL-COM通信原理

    MEWTOCOL-COM是松下電工FP系列PLC與PLC、計(jì)算機(jī)或者HMI觸摸屏之間采用的一種專用的通信協(xié)議。該協(xié)議采用主從應(yīng)答模式,數(shù)據(jù)傳送采用的是ASCII碼編碼形式,每次通信的開始,都由主站(主PLC、計(jì)算機(jī)或者HMI觸摸屏)發(fā)送指令,從站(從PLC)接受到指令后,自動進(jìn)行相應(yīng)的響應(yīng),主站根據(jù)從站的響應(yīng),可以得知從設(shè)備是否正確執(zhí)行了剛剛發(fā)送的指令,這樣就構(gòu)成了一個交互式的操作。圖1是完成主從通信模型的示意圖。

qrs4-t1.gif

1.2 MEWTOCOL-COM基本幀格式

    MEWTOCOL-COM協(xié)議中規(guī)定了基本幀格式,基本幀格式有控制代碼,包含了幀頭、命令、正常響應(yīng)、錯誤響應(yīng)、結(jié)束等字符,如表2所示。MEWTOCOL-COM的每次通信都先由主站發(fā)起,主站發(fā)起命令幀,命令幀內(nèi)容除了包含控制代碼外,還包括一些特殊標(biāo)志碼、PLC站號和呼號字符等[3]。表3是基本幀的格式。命令幀在文本區(qū)域中填寫命令代碼和操作地址,命令代碼含義如表4所示。

qrs4-b2.gif

qrs4-b3.gif

qrs4-b4.gif

1.3 MODBUS RTU工作原理

    自1979年來,MODBUS已經(jīng)成為工業(yè)領(lǐng)域通信協(xié)議的業(yè)界標(biāo)準(zhǔn),通過MODBUS連接著百萬臺自動化設(shè)備之間的通信。在OSI模型中,MODBUS位于第7層,是一種應(yīng)用層報(bào)文傳輸協(xié)議。

    MODBUS在串行通信模式下,通信幀格式有兩種:一種是主機(jī)發(fā)起的查詢和命令從設(shè)備的格式,另一種是從設(shè)備收到主機(jī)命令后的應(yīng)答格式[4]。通信原理是采用請求/應(yīng)答的方式進(jìn)行主從通信,其工作原理如圖2所示。MODBUS主站通過向相應(yīng)物理地址的從站發(fā)送相應(yīng)的控制信息進(jìn)行總線數(shù)據(jù)的交互,一般采用的是一對多的物理連接方式,其通信的實(shí)質(zhì)是主從一對一的請求/應(yīng)答模式的通信過程[5]。

qrs4-t2.gif

    當(dāng)物理層為RS422或RS485的串行通信方式下,MODBUS通信協(xié)議有兩種數(shù)據(jù)的收發(fā)模式,一種是RTU(Remote Terminal Unit)模式,另外一種是ASCII模式。與ASCII模式不同的是,RTU模式下的報(bào)文內(nèi)容是按十六進(jìn)制的字節(jié)方式進(jìn)行收發(fā),沒有報(bào)文的開始和結(jié)束標(biāo)記。MODBUS協(xié)議規(guī)定,在工業(yè)總線上的所有設(shè)備,都必須支持RTU模式,而ASCII通信模式作為可選項(xiàng),而非必選項(xiàng)。本文以RTU模式為研究對象,建立MEWTOCOL-COM與MODBUS RTU報(bào)文的命令、地址映射關(guān)系,從而實(shí)現(xiàn)兩種不同的總線協(xié)議的相互轉(zhuǎn)換。

    在MODBUS RTU協(xié)議中,主機(jī)設(shè)備通常通過不同的功能碼實(shí)現(xiàn)對位、字進(jìn)行操作,這里的功能碼就是對應(yīng)MEWTOCOL-COM中的命令。

1.4 命令映射表

    為了實(shí)現(xiàn)MEWTOCOL-COM 協(xié)議與MODBUS 協(xié)議的相互轉(zhuǎn)換,首先創(chuàng)建命令對應(yīng)表,如表5所示。

qrs4-b5.gif

1.5 地址映射表

    MODBUS的地址編碼是從1開始,并且分不同的地址段,MEWTOCOL-COM的地址是從0開始,要進(jìn)行兩者相互之間的轉(zhuǎn)換,MODBUS的地址是MEWTOCOL-COM的地址+1。轉(zhuǎn)換關(guān)系如表6所示。

qrs4-b6.gif

2 FPGA實(shí)現(xiàn)設(shè)計(jì)

    本文結(jié)合實(shí)際協(xié)議網(wǎng)關(guān)項(xiàng)目驗(yàn)證了一種基于FPGA的高速協(xié)議轉(zhuǎn)換的設(shè)計(jì)方案,它以Altera公司Cyclone系列FPGA芯片為核心,采用原理圖和Verilog HDL語言編程實(shí)現(xiàn)[4-8]。采用友晶提供的DE0-Nano開發(fā)板,配合開發(fā)軟件Quartus II 13.0,設(shè)計(jì)了一個驗(yàn)證系統(tǒng),系統(tǒng)采用固定波特率115 200 b/s,接收MEWTOCOL-COM協(xié)議數(shù)據(jù),使用8 bit數(shù)據(jù)位,1 bit停止位,無奇偶校驗(yàn)位。

    轉(zhuǎn)換后的MODBUS RTU協(xié)議報(bào)文,按照8 bit數(shù)據(jù)位,1 bit停止位的發(fā)送。

    FPGA從串行端口接收一幀MEWTOCOL-COM協(xié)議數(shù)據(jù)%10#RDD011050110757cr,表明讀取站號為10的寄存器地址1105-1107三個字的內(nèi)容,轉(zhuǎn)換為MODBUS RTU報(bào)文后,為0A 03 04 52 00 03 A4 51。

2.1 頂層設(shè)計(jì)

    圖3是驗(yàn)證系統(tǒng)的頂層RTL視圖,頂層一共有三個輸入端口:clk,rst_n和rxd信號,分別表示FPGA的外部時(shí)鐘輸入,復(fù)位信號的輸入(低電平有效)和串口接收信號。頂層的兩個輸出端口,分別是數(shù)據(jù)輸出有效信號d_valid和串口發(fā)送信號txd。

qrs4-t3.gif

    頂層一共例化了4個獨(dú)立模塊,分別是pll,uart_receiver,cov_fp_mod和uart_transfer模塊。

2.2 各模塊說明

    (1)時(shí)鐘模塊PLL

    PLL模塊采用Altera公司提供的基礎(chǔ)鎖相環(huán)IP,輸入時(shí)鐘clk是50 MHz,通過PLL后,輸出信號c0是波特率的采樣時(shí)鐘,本例中采用固定波特率115 200 b/s,因此,采用頻率為波特率115 200的16倍,即1.843 2 MHz。

    采樣時(shí)鐘c0作為模塊的運(yùn)行時(shí)鐘,分別送到串行端口的收發(fā)數(shù)據(jù)模塊。

    (2)串口接收數(shù)據(jù)模塊uart_receiver

    uart_receiver模塊是從串行端口rxd信號中接收串行數(shù)據(jù),并轉(zhuǎn)換成8 bit并行數(shù)據(jù)后從dout端口輸出,同時(shí)模塊將給出data_ready指示信號,表明串并轉(zhuǎn)換完成1個字節(jié)的有效數(shù)據(jù)。

    (3)協(xié)議轉(zhuǎn)換模塊cov_fp_mod

    cov_fp_mod模塊是從串口接收數(shù)據(jù)模塊中接收并行的8 bit數(shù)據(jù),同時(shí)按照MEWTOCOL-COM協(xié)議幀轉(zhuǎn)換為MODBUS RTU協(xié)議幀的方式,將重新組裝數(shù)據(jù),并實(shí)時(shí)地發(fā)送到串口發(fā)送數(shù)據(jù)模塊。

    (4)串口發(fā)送數(shù)據(jù)模塊uart_transfer

    串口發(fā)送數(shù)據(jù)模塊是將協(xié)議轉(zhuǎn)換模塊輸出的協(xié)議幀數(shù)據(jù),進(jìn)行并串轉(zhuǎn)換,并發(fā)送到串行接口線路上。

2.3 SignalTap信號抓取

    圖4是通過Altera(現(xiàn)為Intel)公司的Quartus II軟件信號抓取工具SignalTap,實(shí)時(shí)獲得的FPGA的內(nèi)部信號數(shù)據(jù),其中rxd和txd為FPGA的串口輸入和輸出信號,i_data_d是來自MEWTOCOL-COM協(xié)議的做了同步處理后的并行數(shù)據(jù),send_en是轉(zhuǎn)換模塊進(jìn)行轉(zhuǎn)換后使能數(shù)據(jù)輸出的指示信號;o_data信號是協(xié)議轉(zhuǎn)換模塊的MODBUS RTU協(xié)議報(bào)文的輸出并行數(shù)據(jù);silent_interval_done信號是根據(jù)MODBUS RTU協(xié)議,發(fā)送數(shù)據(jù)報(bào)文前后至少要保持3.5個字符時(shí)間以內(nèi),串口總線保持寂靜,對于波特率為115 200 b/s時(shí),要求這個時(shí)間為1 750 μs。當(dāng)總線上不滿足寂靜時(shí)間時(shí),信號silent_interval_done為低電平,否則為高電平,表示數(shù)據(jù)可以從串行端口上進(jìn)行發(fā)送。信號t35_cnt是串口總線寂靜時(shí)間的累加寄存器值,當(dāng)MODBUS RTU協(xié)議的數(shù)據(jù)從串行端口上發(fā)送結(jié)束后,信號t35_cnt便開始從0計(jì)時(shí),直到計(jì)滿1 750 μs后,silent_interval_done信號才為高電平有效,表示串口發(fā)送總線上可以進(jìn)行數(shù)據(jù)的傳送了。

qrs4-t4.gif

    SignalTap的采樣時(shí)鐘使用16x波特率的時(shí)鐘,即1.843 2 MHz,每個時(shí)鐘周期為0.542 5 μs。從接收到MEWTOCOL-COM協(xié)議的數(shù)據(jù)到轉(zhuǎn)換為MODBUS RTU的數(shù)據(jù)并發(fā)送,通過將SignalTap的數(shù)據(jù)導(dǎo)出為csv格式,得到從rxd信號接收開始有效計(jì)算到協(xié)議轉(zhuǎn)換發(fā)送txd信號有效輸出,兩者之間的時(shí)間差2 212個時(shí)間單位,每個時(shí)間單位為0.542 5 μs,則協(xié)議轉(zhuǎn)換并開始發(fā)送的時(shí)間為0.542 5×2 212=1 200.01 μs。因此,協(xié)議轉(zhuǎn)換時(shí)間很短,而且不需要完全接收完整的一個MEWTOCOL-COM協(xié)議的報(bào)文才開始轉(zhuǎn)換,硬件電路上可以在適當(dāng)?shù)臅r(shí)間內(nèi)開始進(jìn)行轉(zhuǎn)換,大大節(jié)省了協(xié)議收發(fā)的時(shí)間延時(shí)(協(xié)議轉(zhuǎn)換的CRC計(jì)算為組合邏輯,時(shí)延為納秒級,不影響整個轉(zhuǎn)換時(shí)延)。

3 測試

    假設(shè)PC按MEWTOCOL-COM協(xié)議從站號(設(shè)備地址)為10號(范圍是1~32)的保持寄存器DT1105號開始讀取數(shù)據(jù),直到讀到寄存器1107號,命令幀:%10#RDD011050110757cr。

    其中57是數(shù)據(jù)幀的BCC校驗(yàn)字段,cr是結(jié)束符。

3.1 命令轉(zhuǎn)換

    根據(jù)命令對應(yīng)關(guān)系,在讀取保持寄存器,MEWTOCOL-COM的RD命令對應(yīng)MDOBUS RTU的03功能碼。

3.2 地址轉(zhuǎn)換

    首先是站號的進(jìn)制轉(zhuǎn)換,MEWTOCOL-COM協(xié)議中是ASCII通信,站號為10,對應(yīng)到MODBUS RTU的十六進(jìn)制格式就是0x0a。

    其次是訪問的寄存器地址轉(zhuǎn)換,在MEWTOCOL-COM協(xié)議中,訪問的是數(shù)據(jù)保持寄存器DT1105~DT1107,起始寄存器地址是1105,結(jié)束地址是1107,一共3個寄存器。在MODBUS RTU協(xié)議中,需要起始地址和訪問的寄存器數(shù)量,因此,根據(jù)表4,MOBUS RTU的地址是MEWTOCOL-COM的地址+1,DT1105的地址映射到MODBUS RTU地址,16位的十六進(jìn)制就是0x0452。

    最后是不同協(xié)議中地址字段的轉(zhuǎn)換映射關(guān)系。MEWTOCOL-COM協(xié)議字段使用了起始地址和結(jié)束地址,而MODBUS RTU協(xié)議中使用的是寄存器的起始地址和被訪問的寄存器的數(shù)量,因此,還要計(jì)算出實(shí)際的訪問寄存器的數(shù)量,1 107-1 105+1=3,轉(zhuǎn)成16位的十六進(jìn)制數(shù)據(jù)是0x0003,并填入MODBUS RTU協(xié)議字段中。

3.3 轉(zhuǎn)換前后通信幀

    經(jīng)過上述命令、地址和數(shù)據(jù)的轉(zhuǎn)換和映射關(guān)系,由PC發(fā)出的MEWTOCOL-COM協(xié)議的通信幀命令%10#RDD011050110757cr,經(jīng)過FPGA電路轉(zhuǎn)換到從站號25號接收到的MODBUS RTU協(xié)議通信幀是(hex格式):0A 03 04 52 00 03 A4 51。

4 結(jié)論

    本文在深入分析了MEWTOCOL-COM和MODBUS RTU兩種現(xiàn)場總線通信協(xié)議的基礎(chǔ)上, 提出了基于FPGA架構(gòu)的協(xié)議轉(zhuǎn)換方法的硬件方案,方便快捷地實(shí)現(xiàn)了不同現(xiàn)場總線網(wǎng)絡(luò)的互聯(lián)互通,并能快速進(jìn)行協(xié)議轉(zhuǎn)換和收發(fā),兩者延時(shí)時(shí)間約1 200 μs,F(xiàn)PGA的資源占用也比較小,圖5是綜合后的實(shí)際邏輯數(shù)量,綜合代碼已經(jīng)包含了兩者協(xié)議的相互轉(zhuǎn)換邏輯,實(shí)驗(yàn)驗(yàn)證了基于FPGA實(shí)現(xiàn)MEWTOCOL-COM與MODBUS RTU協(xié)議轉(zhuǎn)換,達(dá)到了快速轉(zhuǎn)換和收發(fā)的特點(diǎn),為現(xiàn)場總線網(wǎng)關(guān)的設(shè)計(jì)提供了一個很好的解決方案。

qrs4-t5.gif

參考文獻(xiàn)

[1] 梅恪,沈璞.關(guān)于總線國際標(biāo)準(zhǔn)IEC61158的研究報(bào)告[J].儀器儀表標(biāo)準(zhǔn)化與計(jì)量,2003(2):30-34.

[2] 王治靈.基于FPGA的多協(xié)議轉(zhuǎn)換系統(tǒng)的研究與設(shè)計(jì)[D].成都:電子科技大學(xué),2018.

[3] 高偉增,徐君鵬.松下PLC編程與應(yīng)用(第二版)[M].北京:機(jī)械工業(yè)出版社,2015.

[4] 于楓.ALTERA可編程邏輯器件應(yīng)用技術(shù)[M].北京:科學(xué)出版社,2004.

[5] 李洪偉,袁斯華.基于Quartus II的FPGA/CPLD設(shè)計(jì)[M].北京:電子工業(yè)出版社,2006.

[6] 吳志杰,王新霞,孔凡敏,等.多路隔離的Modbus協(xié)議轉(zhuǎn)換器的設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2016,42(10):77-79.

[7] 吳繼華,王誠.Altera FPGA/CPLD設(shè)計(jì)[M].北京:人民郵電出版社,2005.

[8] 夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計(jì)教程[M].北京:北京航空航天大學(xué)出版社,2003.



作者信息:

陳  虎1,陳  倩2

(1.成都航空職業(yè)技術(shù)學(xué)院 信息工程學(xué)院,四川 成都610100;2.四川大學(xué) 電子信息學(xué)院,四川 成都610064)

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。