面向对象的编程在电动机试验监控系统中的实现
2021-03-24程立同何志平
程立同,何志平
(中国煤炭科工集团 上海有限公司, 上海 200030)
0 引言
面向对象作为一种技术方法,不仅在计算机领域的高级语言编程上得到普遍应用,在工业控制领域,诸如PLC、DCS、HMI等编程中亦有广泛应用,可编程语言标准IEC 61131-3中也有针对面向对象的内容[1]。面向对象的设计思想是人们观察自然现象的一种认知模式,其基本概念是类和类的实例对象,在计算机编程中,通过抽象和归纳,可将具有共同性质的对象封装成类,而在工业控制系统中,控制对象诸如:电动机,水泵等就是很明显的控制类别,只需简单划分,即可成类。面向对象编程的开发步骤大致为:划分对象→抽象类→将类组织为层次化结构(继承和合成)→用类与实例进行设计和实现等阶段;封装、继承和多态为其主要特征[2]。
1 电动机试验系统
中煤科工集团上海检测中心的1 200 kW电动机试验台主要用于变频器及电动机的特性试验,采用电动机对拖变频回馈加载的技术方案[3]。其主电路系统构成为进线柜总受电,一路电源经开关柜、变频器驱动陪试电动机,另一路经开关柜、调压器进行试验电压调节后再通过开关柜、启动柜、试品变频器(或直接)驱动试品电动机;系统测量控制采用西门子S7-1500可编程控制器、人机交互选用工控机,整个监控系统的编程使用西门子博图集成环境[4]。
2 面向对象编程实现
以试验监控系统中的高压开关为例,分别给出PLC和HMI中面向对象的编程实现。
2.1 PLC
如图1所示,建立一个新用户数据类型(UDT),包含高压开关所需的状态控制操作等接口参数,并添加入项目库发布为“udtHMI_HVSC_Control”类型。在博图中数据类型可在PLC和HMI间共享。
如图2所示创建新FB块,在InOut部分添加新发布“udtHMI_HVSC_Control”类型的变量,编写代码实现高压开关控制状态等逻辑,编译成功后将此FB块拽入项目库、发布为“fbHVSC_Control”类型[5]。
图2 FB块
添加“udtHMI_HVSC_Control”类型变量(UDT实例对象),如图3所示;在功能块中调用“fbHVSC_Control”类型FB实例,如图4所示,对具体开关设备对象实现PLC控制。
图3 PLC变量
图4 FB实例调用
2.2 HMI
创建新面板,如图5所示,放置合适的控件,添加“udtHMI_HVSC_Control”数据类型的新面板属性,将面板中控件的属性、事件与新属性相应元素映射关联,编译成功后添入项目库、发布为新版本面板。
图5 面板
添加“udtHMI_HVSC_Control”类型HMI变量、与相应的PLC变量建立通信连接,如图6所示。调用面板实例、接口属性关联HMI变量,如图7所示,对具体开关设备对象实现HMI监控。
图6 HMI变量
3 系统监控效果
前文针对高压开关,采用对象封装技术,在PLC中将UDT和FB块封装为控制类,在HMI上将UDT和面板封装为视图类,创建类的实例对象在PLC中控制、在HMI上交互、UDT数据对象在HMI与PLC间交换。同样的方法,将电动机试验系统中的调压器、试品启动器、变频器、电量测量、温度测量等对象均分别在PLC、HMI中封装成相应的类,并添加到项目库,用面向对象编程,实现后的系统监控界面如图8所示。
图8视图中的各个监控对象均由类实例化创建,与系统实际设备构成相对应,可动态显示设备状态;同时,每个设备均可通过点击弹窗进行细节显示和操作(弹窗中对象也要应用类实例化),图9所示的弹窗对象为电量测量,图10所示为试品启动柜操作。
图9 电量测量
4 结论
该系统投入运行一年来稳定可靠,日常试验运行结果显示,采用面向对象编程,使PLC及HMI程序逻辑更清晰、可读性强;依据实际控制设备对程序类对象进行封装构建,让用户在界面操作上更方便;类型库的使用,使系统维护扩展更便利、适应性和稳定性更高,同时也有利于编程风格的标准化、提高程序代码的重用度及移植性。
图10 启动柜操作