软件辅助FPGA实现安全监控系统的方法研究

2022-01-17 09:35朱怀宇
自动化仪表 2021年10期
关键词:图元组态页面

吴 婷,黄 超,朱怀宇

(国核自仪系统工程有限公司,上海 200241)

0 引言

近年来,信息安全越来越受关注。软件容易受到黑客和病毒的入侵,有软件参与的系统,必然会带来不确定性。在安全领域,如核电站安全级仪控系统希望使用更安全的、没有软件参与的系统。现场可编程门阵列(field programmable gate array,FPGA)芯片内部是各种硬件电路的集合体,虽然可编程,但本质是各种硬件电路的联合运行。FPGA搭建的系统在可靠性、可验证性、安全性上优于基于CPU搭建的系统。由于FPGA具备高可靠性、易移植、可实现复杂功能的特性,其在核电站仪控系统中的应用已成为必然趋势[1]。

目前,第三代核电站安全监控系统是基于CPU的嵌入式操作系统所搭建的,可实现画面显示、数据处理、监控系统诊断各项功能。本文所探索的、基于FPGA芯片搭建的安全监控系统,能替代基于CPU芯片的安全监控系统。FPGA芯片可实现CPU芯片系统的功能:驱动液晶屏显示和处理人机交互;负责安全监控系统与仪控系统间的数据交互等。

通过FPGA芯片进行的电路设计,是采用硬件描述语言来编程的。程序表达的是电路的真值表达式,通过查找真值表来实现其逻辑功能[2]。而硬件描述语言无法将电路与安全监控画面的布局和画面监控数据准确地表达出来。因此,需要一套组态软件,来辅助FPGA芯片通过电路来实现画面的监控显示功能。

1 基于FPGA芯片的安全监控系统

1.1 安全监控系统设计

基于FPGA芯片的安全监控系统是根据核电站安全级仪控系统需求所搭建的,需要满足仪控系统的接口通信和实时数据存储的需求。系统设计的主要组成部分如下。

①FPGA芯片:安全显示系统的核心,负责所有画面数据的解析、实时数据的运输和界面响应。

②串口:外部接口,安全性高,负责接收和发送核电站安全级控制系统的实时数据。

③网口:外部接口,通信速度快,负责下装组态生成的各类数据。

④DVI和VGA:显示器接口,负责投屏显示监控系统的画面。

⑤DDR3:快速内存,负责缓存实时性显示的画面数据,包括需实时显示的变量数值。

⑥硬盘:固态硬盘,负责存放安全监控系统中的各类配置数据。

安全监控系统的硬件系统是组态软件设计时的限制条件。

1.2 组态软件设计

一般工控领域的组态软件通过直观的交互式界面,提供图形组态。其可分为两个步骤:第一步是利用组态软件提供的绘图工具编辑工业控制系统的工艺画面,形成静态背景图;第二步是绑定工艺画面中图形元素对象和数据变量,实现动画连接,生成随实时数据变化而变化的动态画面[3]。

而辅助FPGA芯片设计的组态软件是独立于基于FPGA芯片的安全监控系统运行的。其属于安全监控系统,为FPGA提供安全监控系统运行所需的数据,也就是FPGA芯片进行静态背景图和动态画面组帧所需要的数据。组态软件在安全监控系统未运行(即离线)时,通过网口设备将工程师组态生成的数据传输给FPGA装置;同时,芯片将所接收到的数据有序地存放到硬盘设备中。

组态软件需要解决三个方面的问题,分别是画面显示层组态、系统数据层组态和组态信息下装。由于组态软件所处的系统环境限制,软件不同于组态王之类的通用组态软件。为了能辅助FPGA实现安全监控系统的功能,软件必须紧密结合FPGA芯片功能特性和需求而进行定制化设计和实现。

2 画面显示层的组态

2.1 画面显示的组成

安全监控系统由至少几十幅画面组成,各画面之间存在跳转关系和导航关系。可以将每幅页面分解,实现不同功能的、可在窗体上放置的可视化图形“元件”称之为一种部件。监控系统的界面大多由以下的基本部件组成:数值显示、图形状态显示、报警灯显示、趋势图形显示、列表显示、输入框、按钮以及各种工艺部件等。而安全监控系统有一些特殊的部件:联动的激活框、诊断的心跳转动线、动态的状态流向树等。

2.2 FPGA芯片实现画面显示的原理

安全监控系统中只有FPGA芯片,因此所有在视频图形阵列(video graphics array,VGA)显示器上显示的画面都需要通过FPGA芯片来解决。VGA图像显示器是通过CRT逐行扫描或隔行扫描的方式实现显示的,即输入信号自显示器屏幕上方开始,从左到右、从上到下逐行扫描[4]。图像的基本组成单元是像素,所以图像叠加显示的实质是在像素级为每个像素点选择信号,完成像素点的定位(确定行、列位置)和图像信号的输出[5]。因此,只要提供安全监控画面中图像的像素点的RGB值点阵式文件,FPGA芯片通过译码提供出图像信号,可将各种颜色的点、线、面,乃至整个画面显示在液晶屏幕上。除了安全监控画面中的显示需求外,在不带操作系统的FPGA芯片的安全监控系统中,鼠标位置移动和点击效果、光标激活闪烁都需要FPGA芯片通过像素点组帧实现显示。

2.3 画面显示层组态方法

根据FPGA芯片的实现需求,首先将所有显示在安全监控系统画面中的每个部件分解成单个图元,包括鼠标的状态、光标。对图元进行分析,需要解决的问题可分为两类:显示和响应。

在显示问题上,将所有画面层图元进行抽象和分离,绘制图元的矢量图。通过组态软件提供界面,工程师可直接选择这些图元;同时,组态软件提供对图元的缩小和放大功能,且每个图元类型均能分别设置基本属性和动态属性。在组态软件中进行画面组态时,软件记录下界面中的指定坐标位置、区域大小和该区域需显示的所有图元集。FPGA根据记录下的信息,找到相应的图元的像素点文件进行重新组帧,并在对应位置显现出各个图元。其中,图元的像素点文件是整个图元RGB值的集合文件,RGB对应红、绿、蓝3个分量的一个M×N×3的3维矩阵,用一个8位二进制数表示alpha、Red、Green和Blue值[5]。

在响应问题上,根据FPGA芯片状态机的原理进行分类,也就是根据部件的响应处理方式来分类。部件类型可分为静态显示类、动态显示类、联动显示类、显示数字类、使能按钮类、虚拟键盘按钮类等。根据不同的类别,组态软件提供不同的信息输入框。FPGA对每个部件类型的处理都采用不同的算法库。算法库执行器根据组态信息进行调度,完成运算数据的存取、指定算法块的计算[6];通过解析和重新组帧,就能实现部件的动态功能。

画面组态最终将每副画面作为一个组态单元,形成整页的RGB像素矩阵文件,并对画面中的静态部件和动态部件作分别处理。静态部件,如字、线、框,作为一个图元,只有显示功能。对于动态部件组态,实现则比较复杂,需要标记部件所对应的变量地址、关联部件或跳转页面等。这些数据在系统数据层组态中处理。

3 系统数据层的组态

3.1 显示系统的数据组成

安全监控系统能够通过画面对核电站安全级控制系统运行状态的关键点进行实时监控,同时安全级控制系统也将实时响应监控系统界面操作所产生的触发信号。因此,数据层主要负责安全监控系统与安全级仪控系统之间实时数据的通信。

3.2 FPGA芯片实现数据通信的方式

FPGA芯片需要负责实时变量值的获取和存储,以及鼠标点击画面后的动作解析和发送。DDR3是高速数据采集的首选方案[7]。因此在安全监控系统的DDR3中,存放由串口周期性接收的变量实时值数据帧。界面的触发动作根据发送数据的帧格式要求,由FPGA组帧后直接发送。

3.3 系统数据层组态设计

实时数据库生成系统是组态软件的基本组成部分,数据库生成的关键是数据库的结构[8]。组态软件设计了实时数据库,分别为输入数据表和输出数据表。组态软件提供人机交互的界面。以输入数据为例,输入数据通过串口上唯一确定的接收端口周期性获得。通过SQL语句建立其数据结构:

create table if not exists RvPoints (

id int primary key,

//序号

PIDName varchar(32),

//变量名称

Type varchar(10),

//变量类型

Size int,

//变量大小

Offset int,

//变量地址

FrameHeader varchar(10),

//所在数据帧的帧头

FromPort int,

//周期接收的端口号

des varchar(20),

//变量描述

Sort int);

//数据帧的排序号

工程师根据实际串口连线和实际数据帧的接收顺序,对数据表中各变量进行组态编辑。输出数据也是通过串口发送的,同样有指定的串口和端口,以及发送后接收地址的信息。

组态软件通过输入数据表,为实时数据区计算数据内存大小,以及每个变量点对应的偏移地址信息。根据输出数据表,为每个输出数据提供组态信息。输入数据表和输出数据表是动态部件对应变量的组态信息来源。

4 组态信息下装

4.1 下装信息的分类

组态工具在工程师站上运行,需要在组态完成后将有效信息下装到FPGA安全监控系统中,以支持FPGA实现功能。以监控画面整体为实现目标,所需的信息如下。

①部件图元数据:画面中所有显示部件的RGB点阵像素值数据文件。

②页面数据:每幅页面动静态部件位置、大小,以及动态部件变量的组态信息。

③配置数据:各类支持FPGA组帧的内存地址索引表。

4.1.1 部件图元数据

一个部件的图元数据为一个RGB像素值数据文件。静态部件因为只有一个状态,因此只有一个图元。而动态部件有多个运行状态,因此每个部件都有多个图元,其数据为一系列的RGB像素值数据文件。

而相同类型的部件在各幅页面上的大小不尽相同。FPGA一般不作复杂的运算,需要组态软件将同一类部件的、不同大小的RGB像素值数据文件分别进行处理。

4.1.2 页面数据

页面由多个部件组成。页面数据里存放的是本页面中所应显示的部件类别、坐标位置、大小。动态部件在多状态下显示的图元内存地址,以及对应的变量显示规则和实时变量在DDR3内存中的地址。以模拟量显示框为例,它属于显示数字类部件,部件类别的编号为xxx。组态软件在界面提供人机交互区。模拟量显示的页面数据示例如表1所示。工程师可拖拽部件和调整选项等。

表1 模拟量显示的页面数据示例Tab.1 Sample of page data displayed in analog quantity

模拟量显示部件的对应变量可在页面中组态填入,而在生成页面数据时,将被组态软件处理成FPGA需要的变量内存地址信息。发送字节数为实际下装数据的长度。

图像数据在存储器中的常规存储方式是以从左至右、从上至下的顺序按行缓存,与图形扫描顺次一致,即图像的每一行像素数据均按行存储[9]。组态软件也是从每幅页面上按照行的方式,对各个部件根据图层顺序从上至下逐层扫描,生成图像的RGB像素矩阵数据文件。另外,图层层级越高的部件扫描刷新顺序越往后排,这样显示页面只显示最后一层刷新到的彩色点。

4.1.3 配置数据

FPGA大多具有内嵌的数据存储器,用于存储配置数据[10]。而组态软件提供的配置数据是用于FPGA芯片查表的各类地址索引表。为了减少FPGA芯片的负担,不是所有的地址索引表都需要下装到FPGA芯片装置上,而是只提供下装必须在安全显示系统运行时查表的地址索引表即可。运行时不会发生实时变化的索引表,则尽可能直接写到页面数据中,不下装到监控系统。

不需要下装的索引表是需要支持页面数据生成的。如表1所示,页面数据需要部件图元的图像地址以及变量地址。而这些地址是指存储在FPGA芯片装置硬盘或DDR3里的地址,是组态软件根据整个项目所包含的页面和变量进行整合排序后计算出的内存地址。

需要下装的索引表是发送数据点的索引表。FPGA根据监控系统的实时操作,对动作相关的变量进行实时查表,并组帧发送。

另外,系统实时显示数据,如鼠标状态、阿拉伯数字等系统级数据,也都是组态软件管理的图元。因为这些数据也是运行时实时变化的,需要根据索引表查询,所以也需要下装到FPGA芯片装置中。

4.2 组态和下装

4.2.1 组态下装的准备

部件图元数据、页面数据和配置数据之间是有相互关联性的。组态软件在生成组态数据时,需要考虑它们之间的相互依赖性,使最底层的最先生成。数据生成顺序如图1所示。

图1 数据生成顺序Fig.1 Sequence of data generation

4.2.2 下装的方式

如1.1节所述,FPGA芯片装置系统中的硬盘和DDR3用于存储数据。

①硬盘中存放大数据块的数据,如部件图元数据、页面数据,配置数据等。

②DDR3中存放安全显示系统实时需要的数据,如实时数据区和当前页面所需的数据。

因此,组态软件只需要负责对硬盘进行数据下装。组态软件生成的组态信息,按照用户数据协议(user datagram protocol,UDP),通过网口下装到FPGA芯片装置硬盘上。DDR3中的数据由FPGA芯片负责读取和存储。

4.2.3 安全下装

组态软件向FPGA芯片装置下装数据时,为了保证下装数据的完整性,设计发送数据开始标志和数据发送结束标志的数据包,以保障数据帧的完整性。

5 结论

虽然组态软件是安全监控系统的辅助工具,但它作为关键性工具,必不可少。基于FPGA芯片的安全监控系统有了组态软件的辅助,使得此方案实现更加灵活、便捷,能够实现复杂度较高的监控画面。而以FPGA芯片替代CPU芯片,使用全硬件的方式实现安全领域的监控系统是发展趋势,不依赖任何嵌入式操作系统,具有更长的生命周期。组态软件的离线性能也保障了此方案的安全性。目前,本文研究的方法在国际上具有领先水平,能促进软件在更大范围的应用。

猜你喜欢
图元组态页面
刷新生活的页面
基于PLC及组态技术的恒温控制系统开发探讨
学术出版物插图的编排要求(一):图注
联锁表自动生成软件的设计与实现
基于PLC和组态的智能电动拧紧系统
PLC组态控制在水箱控制系统的应用
基于Qt绘图系统的图形应用优化研究与实现
铸造行业三维组态软件的应用
数控车床的工艺与编程
网站结构在SEO中的研究与应用