曹 煜 白明松 銀亮亮 劉小峰 李雨晴
(吉林建筑大學(xué),吉林 長春130118)
隨著社會(huì)的不斷發(fā)展,串口通信技術(shù)也變得越來越成熟,其優(yōu)勢在于通信電路設(shè)計(jì)簡單,可靠性強(qiáng)以及傳輸距離較遠(yuǎn),從而得到了廣泛的應(yīng)用。串口通信又可分為同步通信與異步通信,同步通信需要接收與發(fā)送時(shí)鐘保持一致,異步通信雙方時(shí)鐘則可以獨(dú)立工作。
目前串口通信FPGA主控板在市場逐漸興起,已經(jīng)應(yīng)用于許多專業(yè)領(lǐng)域。例如在顯示領(lǐng)域中,可設(shè)計(jì)基于FPGA的圖像處理算法;在控制領(lǐng)域中,其硬件性能可以控制電機(jī)的工作狀態(tài);在數(shù)據(jù)采集領(lǐng)域中,利用其高速采集多路數(shù)據(jù)。目前工業(yè)設(shè)備中對(duì)主控制器的要求越來越高,工業(yè)現(xiàn)場對(duì)設(shè)備也有著各種各樣的控制方式,現(xiàn)在大多數(shù)設(shè)備仍是采用PLC進(jìn)行控制,其體積過大,并且機(jī)身性能不如FPGA,故本文將采用Verilog HDL語言對(duì)通用異步收發(fā)傳輸器進(jìn)行設(shè)計(jì),同時(shí)利用ModbusRTU協(xié)議來實(shí)現(xiàn)FPGA與智能電表和人機(jī)交互界面之間的通信,并將實(shí)時(shí)數(shù)據(jù)反饋到PC端。
RS-485總線標(biāo)準(zhǔn)規(guī)定兩個(gè)邏輯運(yùn)行狀態(tài)。其高電平定義為:+2V~+6V之間,表示邏輯狀態(tài)1;低電平為-2V~-6V之間,表示邏輯狀態(tài)0;數(shù)字信號(hào)采用差分傳輸模式,可減少噪聲對(duì)于原始信號(hào)的干擾。RS-485只針對(duì)于傳輸接口進(jìn)行了具體的定義,而對(duì)于通信網(wǎng)絡(luò)中的應(yīng)用層所需要使用的通信協(xié)議并沒有給予明確的規(guī)定,所以開發(fā)者可以自行在應(yīng)用層定義自身所需要的通信協(xié)議。
Modbus協(xié)議是一種工業(yè)上比較常用串行通信協(xié)議,它包括RTU和ASCII兩種模式進(jìn)行數(shù)據(jù)之間的通信,RTU模式是通過二進(jìn)制數(shù)據(jù)直接實(shí)現(xiàn)數(shù)據(jù)的實(shí)時(shí)傳輸。而ASCII模式則是將每個(gè)二進(jìn)制的字節(jié)轉(zhuǎn)換成二位十六進(jìn)制的字符串來進(jìn)行數(shù)據(jù)傳輸。
然而Modbus協(xié)議又可以細(xì)分為不同的異步通訊方式,Modbus TCP對(duì)應(yīng)基于以太網(wǎng)的通訊模式,Modbus-RTU或ModbusASCII對(duì)應(yīng)異步串行端口的傳輸方式,例如光纖、RS232、RS485等。
本文采取的是Modbus-RTU通信方式。
Modbus-RTU主機(jī)對(duì)從機(jī)寫入報(bào)文結(jié)構(gòu)可以劃分為:從機(jī)地址,功能號(hào),數(shù)據(jù)地址,數(shù)據(jù),CRC校驗(yàn)碼。主機(jī)對(duì)從機(jī)進(jìn)行讀取數(shù)據(jù)的報(bào)文結(jié)構(gòu)分別為:從機(jī)地址,功能號(hào),數(shù)據(jù)地址,讀取數(shù)據(jù)個(gè)數(shù),CRC校驗(yàn)碼。
表1 Modbus常用功能碼
表2 Modbus-RTU報(bào)文格式
FPGA模塊分為四部分:頂層模塊、發(fā)送模塊、接收模塊、LED信號(hào)顯示模塊。
2.1.1 UART頂層模塊設(shè)計(jì)
在FPGA設(shè)計(jì)中,頂層模塊發(fā)送、接收、LED信號(hào)顯示等子模塊起統(tǒng)籌調(diào)配的作用。其作用為:(1)對(duì)主控板的原始時(shí)鐘進(jìn)行分頻從而定義系統(tǒng)時(shí)鐘頻率。(2)定義串口接收與發(fā)送端口以及發(fā)送使能端。
2.1.2 發(fā)送模塊設(shè)計(jì)
發(fā)送模塊首先將定義一個(gè)脈沖信號(hào),當(dāng)脈沖信號(hào)到達(dá)時(shí),進(jìn)入發(fā)送過程,同時(shí)將標(biāo)志位拉高,將發(fā)送的數(shù)據(jù)放入數(shù)據(jù)寄存器中,此時(shí)啟動(dòng)系統(tǒng)時(shí)鐘計(jì)數(shù)器與發(fā)送數(shù)據(jù)計(jì)數(shù)器。在過程中,系統(tǒng)時(shí)鐘計(jì)數(shù)達(dá)到一個(gè)波特率周期后清零,發(fā)送數(shù)據(jù)計(jì)數(shù)器加一,通過發(fā)送數(shù)據(jù)計(jì)數(shù)器來給UART端口賦值,依次傳輸起始位、數(shù)據(jù)位以及停止位。若無數(shù)據(jù)發(fā)送時(shí),發(fā)送端口則一直保持高電平。
2.1.3 接收模塊設(shè)計(jì)
接收模塊中定義數(shù)據(jù)接收過程標(biāo)志信號(hào),接收的數(shù)據(jù),系統(tǒng)時(shí)鐘計(jì)數(shù)器,接收數(shù)據(jù)計(jì)數(shù)器,接收數(shù)據(jù)寄存器。在接收端口出現(xiàn)讀取到起始位時(shí),將發(fā)送一個(gè)周期的脈沖信號(hào),當(dāng)脈沖信號(hào)到達(dá)時(shí),立即開始接收過程,依次寄存數(shù)據(jù)位,當(dāng)接收數(shù)據(jù)計(jì)數(shù)器計(jì)數(shù)到停止位時(shí),寄存輸出接收到的數(shù)據(jù),并將接收標(biāo)志位拉高。
2.1.4 LED信號(hào)模塊設(shè)計(jì)
LED燈用來顯示當(dāng)前是否有數(shù)據(jù)在進(jìn)行傳輸。本模塊定義LED控制使能與LED數(shù)據(jù)顯示即可,分別對(duì)應(yīng)發(fā)送與接收是否有數(shù)據(jù)正在傳輸。
觸摸屏采用MCGS軟件進(jìn)行設(shè)計(jì),首先在設(shè)備窗口中添加通用串口父設(shè)備以及ModbusRTU,設(shè)置串口號(hào)、波特率以及報(bào)幀格式,其次需要編寫運(yùn)行策略,在當(dāng)前按鈕被按下時(shí)會(huì)執(zhí)行此策略,通過串口讀取或?qū)懭霐?shù)據(jù)。最后則需要對(duì)主控窗口進(jìn)行設(shè)計(jì),用戶界面中有多種元件可供開發(fā)人員選擇,從而設(shè)計(jì)出美麗、直觀的人機(jī)交互窗口。
圖2 電表累計(jì)電能讀數(shù)
整體設(shè)計(jì)由電腦、FPGA、人機(jī)交互界面及智能電表構(gòu)成,FPGA開發(fā)板與人機(jī)交互界面和智能電表通過RS485總線連接,FPGA與電腦則利用網(wǎng)線傳輸數(shù)據(jù)。FPGA采用Xilinx Artix-7主控芯片。智能電表采用頂?shù)码娖鱌D7194Z-9S4三相多功能電力儀表,人機(jī)交互界面采用昆侖通泰TPC1061Ti型觸摸屏,均可自定義設(shè)備地址。工業(yè)現(xiàn)場人員通過操作人機(jī)交互界面實(shí)現(xiàn)對(duì)FPGA中寄存器的數(shù)據(jù)進(jìn)行寫入,電腦端通過RJ45接口讀取FPGA中寄存器的數(shù)據(jù)來顯示當(dāng)前工業(yè)設(shè)備的運(yùn)行狀態(tài)。
首先利用Vivado軟件將編寫好的程序下載到FPGA芯片中,之后在電腦設(shè)計(jì)一個(gè)小窗口以顯示電動(dòng)閥以及電表的工作狀態(tài),觸摸屏通訊地址為01,電表默認(rèn)設(shè)備地址為03,選擇讀取電表中所存儲(chǔ)的正向有功電能數(shù)據(jù)以及電動(dòng)閥當(dāng)前電流示數(shù)。(圖1、2,表3)
圖1 智能電表、FPGA開發(fā)板、觸摸屏的連接(網(wǎng)線連接電腦)
表3 不同閥位下電動(dòng)閥的電流值
電流表累計(jì)電能讀數(shù)為1kWh,經(jīng)過串口通信可正常讀取此數(shù)值。在人機(jī)交互界面中,通過人為調(diào)整電動(dòng)閥閥位,其電流會(huì)相應(yīng)改變。
本文提出的運(yùn)用FPGA進(jìn)行串口通信,操作便捷且運(yùn)行穩(wěn)定,適合與應(yīng)用RS485接口的各類芯片的通信。本文基于智能儀表通信系統(tǒng)來進(jìn)行設(shè)計(jì),利用FPGA中的存儲(chǔ)芯片通過ModbusRTU協(xié)議來進(jìn)行收發(fā)數(shù)據(jù),實(shí)現(xiàn)人機(jī)交互界面對(duì)主控板寄存器進(jìn)行數(shù)據(jù)的寫入,從而控制系統(tǒng)的工作狀態(tài),所有數(shù)據(jù)通過上位機(jī)以進(jìn)行顯示,方便工作人員對(duì)系統(tǒng)各個(gè)部分進(jìn)行實(shí)時(shí)操作。為了提高系統(tǒng)通信效率,FPGA相較于PLC與單片機(jī),其并行處理能力大幅提升,可以滿足更高的生產(chǎn)需求,有著較高的應(yīng)用價(jià)值。