基于FPGA与智能设备的串口通信设计

2021-06-26 08:26白明松银亮亮刘小峰李雨晴
科学技术创新 2021年16期
关键词:计数器电表串口

曹 煜 白明松 银亮亮 刘小峰 李雨晴

(吉林建筑大学,吉林 长春130118)

随着社会的不断发展,串口通信技术也变得越来越成熟,其优势在于通信电路设计简单,可靠性强以及传输距离较远,从而得到了广泛的应用。串口通信又可分为同步通信与异步通信,同步通信需要接收与发送时钟保持一致,异步通信双方时钟则可以独立工作。

目前串口通信FPGA主控板在市场逐渐兴起,已经应用于许多专业领域。例如在显示领域中,可设计基于FPGA的图像处理算法;在控制领域中,其硬件性能可以控制电机的工作状态;在数据采集领域中,利用其高速采集多路数据。目前工业设备中对主控制器的要求越来越高,工业现场对设备也有着各种各样的控制方式,现在大多数设备仍是采用PLC进行控制,其体积过大,并且机身性能不如FPGA,故本文将采用Verilog HDL语言对通用异步收发传输器进行设计,同时利用ModbusRTU协议来实现FPGA与智能电表和人机交互界面之间的通信,并将实时数据反馈到PC端。

1 协议简介

1.1 RS485总线

RS-485总线标准规定两个逻辑运行状态。其高电平定义为:+2V~+6V之间,表示逻辑状态1;低电平为-2V~-6V之间,表示逻辑状态0;数字信号采用差分传输模式,可减少噪声对于原始信号的干扰。RS-485只针对于传输接口进行了具体的定义,而对于通信网络中的应用层所需要使用的通信协议并没有给予明确的规定,所以开发者可以自行在应用层定义自身所需要的通信协议。

1.2 Modbus协议

Modbus协议是一种工业上比较常用串行通信协议,它包括RTU和ASCII两种模式进行数据之间的通信,RTU模式是通过二进制数据直接实现数据的实时传输。而ASCII模式则是将每个二进制的字节转换成二位十六进制的字符串来进行数据传输。

然而Modbus协议又可以细分为不同的异步通讯方式,Modbus TCP对应基于以太网的通讯模式,Modbus-RTU或ModbusASCII对应异步串行端口的传输方式,例如光纤、RS232、RS485等。

本文采取的是Modbus-RTU通信方式。

Modbus-RTU主机对从机写入报文结构可以划分为:从机地址,功能号,数据地址,数据,CRC校验码。主机对从机进行读取数据的报文结构分别为:从机地址,功能号,数据地址,读取数据个数,CRC校验码。

表1 Modbus常用功能码

表2 Modbus-RTU报文格式

2 模块设计

2.1 FPGA模块设计

FPGA模块分为四部分:顶层模块、发送模块、接收模块、LED信号显示模块。

2.1.1 UART顶层模块设计

在FPGA设计中,顶层模块发送、接收、LED信号显示等子模块起统筹调配的作用。其作用为:(1)对主控板的原始时钟进行分频从而定义系统时钟频率。(2)定义串口接收与发送端口以及发送使能端。

2.1.2 发送模块设计

发送模块首先将定义一个脉冲信号,当脉冲信号到达时,进入发送过程,同时将标志位拉高,将发送的数据放入数据寄存器中,此时启动系统时钟计数器与发送数据计数器。在过程中,系统时钟计数达到一个波特率周期后清零,发送数据计数器加一,通过发送数据计数器来给UART端口赋值,依次传输起始位、数据位以及停止位。若无数据发送时,发送端口则一直保持高电平。

2.1.3 接收模块设计

接收模块中定义数据接收过程标志信号,接收的数据,系统时钟计数器,接收数据计数器,接收数据寄存器。在接收端口出现读取到起始位时,将发送一个周期的脉冲信号,当脉冲信号到达时,立即开始接收过程,依次寄存数据位,当接收数据计数器计数到停止位时,寄存输出接收到的数据,并将接收标志位拉高。

2.1.4 LED信号模块设计

LED灯用来显示当前是否有数据在进行传输。本模块定义LED控制使能与LED数据显示即可,分别对应发送与接收是否有数据正在传输。

2.2 触摸屏模块设计

触摸屏采用MCGS软件进行设计,首先在设备窗口中添加通用串口父设备以及ModbusRTU,设置串口号、波特率以及报帧格式,其次需要编写运行策略,在当前按钮被按下时会执行此策略,通过串口读取或写入数据。最后则需要对主控窗口进行设计,用户界面中有多种元件可供开发人员选择,从而设计出美丽、直观的人机交互窗口。

3 硬件通信与调试

图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,经过串口通信可正常读取此数值。在人机交互界面中,通过人为调整电动阀阀位,其电流会相应改变。

4 结论

本文提出的运用FPGA进行串口通信,操作便捷且运行稳定,适合与应用RS485接口的各类芯片的通信。本文基于智能仪表通信系统来进行设计,利用FPGA中的存储芯片通过ModbusRTU协议来进行收发数据,实现人机交互界面对主控板寄存器进行数据的写入,从而控制系统的工作状态,所有数据通过上位机以进行显示,方便工作人员对系统各个部分进行实时操作。为了提高系统通信效率,FPGA相较于PLC与单片机,其并行处理能力大幅提升,可以满足更高的生产需求,有着较高的应用价值。

猜你喜欢
计数器电表串口
采用虚拟计数器的电子式膜式燃气表
基于NPORT的地面综合气象观测系统通信测试方法及故障处理
基于API函数库实现串口数据通信的分析与设计
基于EM9000工控板高性能双串口通信模型设计与实现
“蹦叭”跳动电表数
基于Multisim10.1的任意进制计数器的设计与实现
船舶电子设备串口数据的软件共享方法
SR620型与53230A型计数器的性能测试
停电那点事儿
算盘是个“小气鬼”