当前位置:首页 > 物联网 > 《物联网技术》杂志
[导读]摘 要:主要介绍了工业控制组态软件开发环境中图元类的设计思想,结合实时数据库应用,并利用QT集成开发工具及C++面向对象的特性,给出了在Linux平台下组态人机界面中图元类的一种设计实现方法,实现了图元控件的封装性、独立性和可重用性。

引 言

随着工业控制自动化水平的不断提高,计算机应用技术在工业控制领域的应用也越来越广泛。其中,组态软件是用于管理、控制和监控工业生产现场的软件平台,主要是指控制数据采集与生产过程监控的专用软件。组态软件解决了以前在控制系统中的复杂流程设计、以及数据采集等功能需要依靠复杂编程来实现的问题。它可以为工程人员提供使用灵活的组态开发方式和运行环境,在工业控制系统中同时进行工业现场实时数据的采集处理和存储,数据趋势显示、图形动画展示、报表、实时报警显示等多种任务。并且能够提供数据安全访问机制,可以采用基于角色的多级关系安全访问控制对实时数据库进行操作,防止未授权用户修改或删除工业控制现场的有效数据,避免非法访问系统而造成工业生产事故和损失。

工业控制应用的硬件平台种类繁多,硬件平台上的软件系统需要有良好的可移植性。Linux 操作系统是基于Unix 设计理念发展出来的操作系统,其系统源代码是开源的。虽然目前存在很多不同的Linux,但它们都使用了 Linux 内核并且具有广泛的硬件支持,可以安装在各种计算机硬件设备中,如台式计算机,大型机、手机、平板电脑、路由器等,因此非常适合于工业控制领域。Linux 内核功能全面,具备网络管理、网络服务等方面的功能,可使用户很方便地建立高效稳定的通信,非常适用于工业控制领域自动化中的设备通信需求。其系统设计模块化程度高,代码的开源性也为用户提供了很高的自由度,对于工业控制领域中多样的需求,开发者可以根据个性化需求而有针对性的对操作系统源代码进行修改和优化, 综合各方面优势,使得Linux 操作系统能够在工业控制领域取得广泛的使用。


组态介绍,结构 

组态软件系统需要适用于工业控制现场管理,其结构主 要是由组态开发模块,用户界面运行模块,实时数据库系统, 通信模块以及 I/O 驱动模块等组件组成,结构框图如图 1 所示。 其中,用户图形界面系统将直观的展示系统运行状态,是最 直观,与用户交互也最直接的主要模块。


基于Linux平台组态软件图形界面系统的设计研究

从用户使用的角度来看,组态软件一般由开发环境和运行环境组成。工程人员在开发环境下,根据不同的工业现场设计需求,进行个性化的组态和配置,进入运行系统后,将已经设计好的组态程序进行运行,图形界面运行系统通过通信模块与实时数据库通信,数据库通过I/O 通信模块采集现场设备数据并进行处理。一方面,实时数据库通过IO 通信模块获取工业现场产生的实时生产数据,经过数据库处理后传送回组态运行界面,组态运行系统能够以图形或数据直观展示工业现场的生产情况,能够进行报警处理,显示趋势曲线等多种方式向用户提供工业控制解决方案。另一方面,用户也可以通过修改运行环境中的图形元素和参数配置,通过通信接口向图元对应的工控现场设备发送指令。组态软件就可以使用户能够以直观简洁、便于操作的方式管理和监控工业现场的生产情况和相关数据。

组态软件系统采用Qt/E 集成开发工具进行设计开发。Qt/E 最初由奇趣科技开发,后来为诺基亚公司收购,是一个跨平台的 C++ 应用程序以及UI 开发框架。它支持Linux 操作系统, 具有跨平台的优势, 同时, 也支持其他常见的如Windows 操作系统,真正实现了一次开发而跨平台运行的目标。

Qt 提供的信号和槽(Signal/Slot)机制是其核心特征机制之一。它可以让编程人员把一些互不了解的对象绑定在一起, 用于对象之间的通信,槽可以和信号连接在一起,每当发射信号时,就会自动调用槽函数。它和普通C++ 成员函数几乎是一样的,可以是虚函数,可以被重载,可以是共有的、保护的或者私有的,并且也可以被其他C++ 函数直接调用,参数也可以是任意类型。而且,编程人员在开发时可以设计自己的信号和槽,将信号联系到某个槽上,则槽会在正确的时间, 以正确的信号参数被调用。

Qt 具有完备的图形开发工具,提供了双缓冲机制,能够把一个窗口部件渲染到一个脱屏 QPixmap 中,然后再把这个QPixmap 复制到显示屏幕上。因此,用于组态图形运行系统中就能够消除屏幕的闪烁,更好地支持组态运行系统中图形界面的操作和展示,因此QT 集成开发环境非常适用于组态软件的开发目标。

2 组态图形运行系统的设计

组态软件中,构成工业控制现场的图形界面由各个简单的图元对象组成,它们是组态运行画面的基础单元,也是动画功能的基本元素,主要分为基本图元和动态图元两类。每个图元拥有影响和决定其外观展示的各种属性,用户通过配置不同的属性值,在进入运行系统后将体现为不同形式的外观展示。Qt 的视图框架中包括 QGraphicsView,QGraphicsScene, QGraphicsItem 和Qpainter,能够提供给用户开发图形界面所需的必要元素,并且使用C++ 高级编程语言,支持面向对象开发。能够进行图元的图形展示,可以绘制从简单的直线到复杂的和弦曲线等形状和动画效果。

从Qt 4.2 开 始 引 入 的 QGraphicsView 框 架 用 来 取代 Qt 3 中的 Canvas 模块, 并在很多地方进行了改 进, QGraphicsView 能够管理大量图元, 支持如碰撞检测、坐标变换等功能。QGraphicsView 中的图元能够处理键盘事件、鼠标事件,包括鼠标按下,移动,释放,双击事件,能够跟踪鼠标移动。在QGraphicsView 框架中,通过二元空间划分树提供了快速的图元查找,这样就能够实时地显示大场景。框架中包含三个主要的类, 分别是 QGraphicsView, QGraphicsScene,QGraphicsItem,依次分别是视图,场景和图元。

QGraphicsItem 是在一个 QGraphicsScene 中最基本的图形类,它是在 QGraphicsScene 中绘制的各个图形的项的基类, 类中包括声明图形项的位置,进行碰撞检测,绘制的重载和进行各个项之间的相互作用的事件处理等属性。

Qgraphicsscene 进行场景的展示, 包含许多不同的项。场景(以及它的项)在视图中显示,这样用户就可以看到了。QGraphicsView 提供一个显示 QGraphicsScene 内容的窗口, 可以在构造时候把场景对象作为参数,或者之后使用 setScene()来设置View 的场景,然后调用show()函数后,view 就可以默认的在场景的中心进行图形界面的显示。

2.1 简单静态图元

图形运行系统简单的静态图元,例如直线、圆形、多边形等,在绘制此类图形时,需要用到QPainter 类,自定义图元类继承QWidget类并重载paintEvent( QPaintEvent * )方法, 可以在派生的图元类中重新实现绘图事件。

由于不同图元要求图形有不同形状,大小和颜色等,需要重写其paint 函数,对图元类的属性值进行赋值,画出期望的图形形状和颜色,以矩形图元为例:

基于Linux平台组态软件图形界面系统的设计研究

重写 paint 函数,对不同属性进行赋值,在函数定义中实现图像的绘制。

基于Linux平台组态软件图形界面系统的设计研究

即可构造出自定义大小 / 形状和颜色的平面矩形形状。其他简单图形例如圆形、直线、多边形等,都可以使用类似的方法进行定义和重写,就可以设计画出不同的简单图形元素。

2.2 动态图元的设计实现

系统中的动态运行图元类能够灵活而直观的显示工业现场运行状态,每一个动态的控件有独立的数据源,因而有特定的动画功能和效果。以动态图形水管流动的图元为例,可以使用QT/E 中QGraphicsDropShadowEffect 类并设置数据范围使得管道流水具有阴影效果,并且将图元项添加到动画组QParallelAnimationGroup 中,则动态图元类型具有阴影动画效果,以水管 WaterPipe类为例,实现代码如下:

基于Linux平台组态软件图形界面系统的设计研究

在视图QGraphicsView 中添加包含有 WaterPipe 类型图元项的QGraphicsScene 场景,进行初始化和调用显示函数后, 在图形界面运行系统中便会显示出水管动态流动的画面效果, 因此,对于类似的具有动态画面效果的图元类型,可以采用上述方法设计实现,并能够在 Linux 平台系统中得到良好应用。

结 语

本文采用在Linux 系统下Qt/E 进行开发设计,解决了组态图形界面中的简单图元设计和实现的问题,提出了采用面向对象设计思想,对不同的静态和动态图元控件类的设计开发和研究。随着工业自动化的发展和控制系统的规模不断增大, 使得组态软件的功能需求日渐增多,系统变得更加复杂。由于组态软件系统整体的复杂性,组态软件系统中各个模块之间的交互以及运行展示仍需要根据实际应用中的不同需求、不同情况进行不断的优化和完善。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭