曹 煜 白明松 銀亮亮 劉小峰 李雨晴
(吉林建筑大學,吉林 長春130118)
隨著社會的不斷發展,串口通信技術也變得越來越成熟,其優勢在于通信電路設計簡單,可靠性強以及傳輸距離較遠,從而得到了廣泛的應用。串口通信又可分為同步通信與異步通信,同步通信需要接收與發送時鐘保持一致,異步通信雙方時鐘則可以獨立工作。
目前串口通信FPGA主控板在市場逐漸興起,已經應用于許多專業領域。例如在顯示領域中,可設計基于FPGA的圖像處理算法;在控制領域中,其硬件性能可以控制電機的工作狀態;在數據采集領域中,利用其高速采集多路數據。目前工業設備中對主控制器的要求越來越高,工業現場對設備也有著各種各樣的控制方式,現在大多數設備仍是采用PLC進行控制,其體積過大,并且機身性能不如FPGA,故本文將采用Verilog HDL語言對通用異步收發傳輸器進行設計,同時利用ModbusRTU協議來實現FPGA與智能電表和人機交互界面之間的通信,并將實時數據反饋到PC端。
RS-485總線標準規定兩個邏輯運行狀態。其高電平定義為:+2V~+6V之間,表示邏輯狀態1;低電平為-2V~-6V之間,表示邏輯狀態0;數字信號采用差分傳輸模式,可減少噪聲對于原始信號的干擾。RS-485只針對于傳輸接口進行了具體的定義,而對于通信網絡中的應用層所需要使用的通信協議并沒有給予明確的規定,所以開發者可以自行在應用層定義自身所需要的通信協議。
Modbus協議是一種工業上比較常用串行通信協議,它包括RTU和ASCII兩種模式進行數據之間的通信,RTU模式是通過二進制數據直接實現數據的實時傳輸。而ASCII模式則是將每個二進制的字節轉換成二位十六進制的字符串來進行數據傳輸。
然而Modbus協議又可以細分為不同的異步通訊方式,Modbus TCP對應基于以太網的通訊模式,Modbus-RTU或ModbusASCII對應異步串行端口的傳輸方式,例如光纖、RS232、RS485等。
本文采取的是Modbus-RTU通信方式。
Modbus-RTU主機對從機寫入報文結構可以劃分為:從機地址,功能號,數據地址,數據,CRC校驗碼。主機對從機進行讀取數據的報文結構分別為:從機地址,功能號,數據地址,讀取數據個數,CRC校驗碼。

表1 Modbus常用功能碼

表2 Modbus-RTU報文格式
FPGA模塊分為四部分:頂層模塊、發送模塊、接收模塊、LED信號顯示模塊。
2.1.1 UART頂層模塊設計
在FPGA設計中,頂層模塊發送、接收、LED信號顯示等子模塊起統籌調配的作用。其作用為:(1)對主控板的原始時鐘進行分頻從而定義系統時鐘頻率。(2)定義串口接收與發送端口以及發送使能端。
2.1.2 發送模塊設計
發送模塊首先將定義一個脈沖信號,當脈沖信號到達時,進入發送過程,同時將標志位拉高,將發送的數據放入數據寄存器中,此時啟動系統時鐘計數器與發送數據計數器。在過程中,系統時鐘計數達到一個波特率周期后清零,發送數據計數器加一,通過發送數據計數器來給UART端口賦值,依次傳輸起始位、數據位以及停止位。若無數據發送時,發送端口則一直保持高電平。
2.1.3 接收模塊設計
接收模塊中定義數據接收過程標志信號,接收的數據,系統時鐘計數器,接收數據計數器,接收數據寄存器。在接收端口出現讀取到起始位時,將發送一個周期的脈沖信號,當脈沖信號到達時,立即開始接收過程,依次寄存數據位,當接收數據計數器計數到停止位時,寄存輸出接收到的數據,并將接收標志位拉高。
2.1.4 LED信號模塊設計
LED燈用來顯示當前是否有數據在進行傳輸。本模塊定義LED控制使能與LED數據顯示即可,分別對應發送與接收是否有數據正在傳輸。
觸摸屏采用MCGS軟件進行設計,首先在設備窗口中添加通用串口父設備以及ModbusRTU,設置串口號、波特率以及報幀格式,其次需要編寫運行策略,在當前按鈕被按下時會執行此策略,通過串口讀取或寫入數據。最后則需要對主控窗口進行設計,用戶界面中有多種元件可供開發人員選擇,從而設計出美麗、直觀的人機交互窗口。

圖2 電表累計電能讀數
整體設計由電腦、FPGA、人機交互界面及智能電表構成,FPGA開發板與人機交互界面和智能電表通過RS485總線連接,FPGA與電腦則利用網線傳輸數據。FPGA采用Xilinx Artix-7主控芯片。智能電表采用頂德電器PD7194Z-9S4三相多功能電力儀表,人機交互界面采用昆侖通泰TPC1061Ti型觸摸屏,均可自定義設備地址。工業現場人員通過操作人機交互界面實現對FPGA中寄存器的數據進行寫入,電腦端通過RJ45接口讀取FPGA中寄存器的數據來顯示當前工業設備的運行狀態。
首先利用Vivado軟件將編寫好的程序下載到FPGA芯片中,之后在電腦設計一個小窗口以顯示電動閥以及電表的工作狀態,觸摸屏通訊地址為01,電表默認設備地址為03,選擇讀取電表中所存儲的正向有功電能數據以及電動閥當前電流示數。(圖1、2,表3)

圖1 智能電表、FPGA開發板、觸摸屏的連接(網線連接電腦)

表3 不同閥位下電動閥的電流值
電流表累計電能讀數為1kWh,經過串口通信可正常讀取此數值。在人機交互界面中,通過人為調整電動閥閥位,其電流會相應改變。
本文提出的運用FPGA進行串口通信,操作便捷且運行穩定,適合與應用RS485接口的各類芯片的通信。本文基于智能儀表通信系統來進行設計,利用FPGA中的存儲芯片通過ModbusRTU協議來進行收發數據,實現人機交互界面對主控板寄存器進行數據的寫入,從而控制系統的工作狀態,所有數據通過上位機以進行顯示,方便工作人員對系統各個部分進行實時操作。為了提高系統通信效率,FPGA相較于PLC與單片機,其并行處理能力大幅提升,可以滿足更高的生產需求,有著較高的應用價值。