戴迪,王丽丽,郑华,阎冬梅
(1.湖北超高压输变电公司,湖北 武汉 430050;2.三峡电力职业学院,湖北 宜昌 443002)
MACH2(Modular advanced control HVDC&SVC 2ndedition)系统称为超高压直流以及输电以及静态无功补偿第二代模块化高级控制系统,是ABB公司开发的用于输电工程的一种控制保护系统。MACH2系统是一种基于软件和硬件的开发平台,也是一种适用于直流输电的控制保护系统。
MACH2系统主要有以下几个部分组成:
硬件:包括标准工业计算机、PCI板卡,多种专用电路板。
软件:包括操作系统(XEX,Win NT)及相关系统软件、应用软件,编程和调试环境Hidraw,辅助系统等。
MACH2系统尽可能多的使用商业的“集成软件”,以Window NT/XP为基础的HMI人机接口(Human Machine Interface)、暂态分析、数据库服务器和查看器、通讯等组成。常见的MACH2系统结构如图1所示。
整个MACH2系统整体可分为两个层次:站层和设备层。其中,站层主要包括SCADA和远动通讯系统及站级CAN网,设备层则包括交直流站控系统、直流极控系统、直流保护系统等。HMI程序工作于图1所示的SCADA工作站上,故本文的主要研究对象为站层。目前江陵换流站采用的是直流输电系统中较为常用的MACH2系统,故本文以江陵换流站为例对其HMI程序进行研究和分析。
现在在变电站综合自动化系统中,使用了多种人机界面,有的是通用软件,有的是专门开发的软件。目前江陵换流站使用的是基于InTouch开发的HMI,In-Touch和这些软件相比,主要特点是[1]:
(1)最大限度的开放性。InTouch的运行环境是WinNT/XP,基本的通讯格式包括“快速DDE”和SuiteLink。其中,快速DDE兼容微软的 DDE,因此许多Windows下运行的软件都可以与InTouch直接通讯。为了与其他设备通讯,InTouch有600种通讯协议转换软件(I/O Server),可以与不同的设备通讯。InTouch还提供了一个工具软件,帮助编写通讯协议转换软件。
图1 MACH2系统结构图
(2)网络功能。InTouch支持微软的各种网络,组网非常简单。
(3)数据库功能。InTouch除了自身带有数据库以外,还支持SQL语言,可以方便地与其他数据库连接。
(4)易使用和掌握。InTouch的编程因为方法非常简单,所以多称为组态,是面向非计算机专业的工程人员,任何专业的工程技术人员和维修人员都可以掌握。一方面缩短了应用开发周期,另一方面方便了变电站用户修改和开放上位软件。
图2显示用于构建与运行应用程序的InTouch HMI核心组件。
图2 Intouch核心组件关系图
从图2可以看出,整个Intouch HMI由应用程序管理器、Windows Maker、Windows Viewer以及用户 HMI程序构成,通过应用程序管理器可以分别启动Windows Maker和Windows Viewer组件对用户HMI程序进行编辑和运行。目前江陵换流站全部OWS均安装了Windows Viewer,但仅在 EWS上安装了 Windows Maker,通过 Windows Maker可以查看HMI内部的代码,了解整个HMI程序运行过程。
在InTouch应用程序中,标记代表数据项,在脚本中相当于全局变量。对于需要使用应用程序对其属性进行监视或控制的过程组件,可以为其创建标记。
在Intouch中标记可分为内存标记和I/O标记,内存标记相当于本地变量和其他语言一样,这些变量用于存放程序运行时的各种数据。I/O标记存放的则不是数据而是一个远程的链接标识,通过对I/O变量的调用,即可访问对应的远程数据,若要使用I/O型变量,必需在标记名典中对其访问名进行相应设置[2]。
(1)访问名:可随意填写,为方便维护,一般使其与主题名相同。
(2)节点名:I/O Server所在上位机的IP地址,若其与InTouch安装在同一台机器上,则可不填。本例中,I/O Server装MACH2前置机上,故该项应填写相应的MACH2主机名。
(3)应用程序名:InTouch所要访问的I/O Server的进程名称。
(4)主题名:应与I/O Server中的对应的 Topic Name(题名)相同,以保证InTouch与I/O Server的正常通讯。
在MACH2系统中前置机上的各种模拟及开关量正是通过I/O标记取得的,下面将对I/O标记如何在江陵站HMI程序中获取数据的过程做一个深入的分析。
HMI与前置MACH2主机交换数据是通过I/O标记来完成的,通过使用不同的I/O标记HMI可以从前置机获得状态信息、数值信息等。在前置MACH2主机中所运行的MAIN程序起到了I/O Server的作用,MAIN程序将配置好的I/O标记利用站LAN和SuiteLink协议将这些标记共享给OWS等运行HMI程序的机器。HMI程序通过配置好的I/O标记获得这些被共享的I/O标记信息,其详细过程如图3所示[3]。
图3 I/O标记数据交换示意图
图3中MACH2主机在站LAN里的主机名应为HMI程序里访问名中的节点名称,应用程序名则应为MACH2主机上提供I/O服务的程序的进程名,这里应为MAIN。主题名和项目名称应与MAIN程序共享的主题名和项目名对应。
首先在 Windows Maker界面打开窗口 Jingzhou LAN,如图4所示。
图4 Jingzhou LAN窗口编辑界面
本文将以ACP1A状态指示灯为例,分析开关量是如何从MACH2前置主机最终传递到HMI界面上的。双击ACP1A旁的绿色方块,出现该方块的属性对话框,在属性对话框中选择模拟属性弹出图5窗口。
将以上表达式的计算结果和断点值进行比较即可决定该长方形对象的颜色,在InTouch里最多可设置9个断点值,最多可改变10种颜色。从图6中可以看到该对象共使用了4个断点值从而划分出了5个颜色区间,其颜色与表达式值的对应关系如表1所示。
图5 ACP1A状态指示方块模拟属性
表1 表达式与颜色对应表
下面以ACP11SystemActive标记为例来分析该标记的值是从何处获得的。
为了了解ACP11SystemActive标记获取数据的过程,首先必须找到ACP11SystemActive标记获取数据的数据源。启动Intouch应用程序管理器,在应用程序选择列表中,选择江陵换流站目前所使用的HMI程序,选定后启动Windows Maker进入开发界面。在开发界面中选择“特别”菜单,在弹出的下拉菜单中选择标记管理器,之后出现图6窗口。
图6 标记名属性对话框
点击选择按钮后弹出标记名列表,从列表中找到ACP11SystemActive标记,选择该标记即可进入该标记的属性对话框。点击图7中的访问名按钮,弹出访问名列表,选择ACP11SystemActive标记对应的访问名ACP1A,点击修改进入访问名配置对话框,如图7所示。
从图6和图7可以看出ACP11SystemActive标记是一个I/O标记,它对应的访问名为ACP1A。它使用SuiteLink协议从主机名为X51的主机上的Main程序获取数据。在EWS上打开资源管理器查看站LAN上的计算机后发现站LAN上并没有主机名为X51的计算机,由此可以判断,该I/O标记的主机名是在HMI程序运行时重新指定的。
图7 访问名配置对话框
选择“特别”菜单下的脚本按钮,点击应用程序脚本,此时可以查看应用程序启动时,运行时和结束时所执行的脚本。在应用程序启动时包含如下脚本:
CALL StartupScript();
由上面代码可以看出,应用程序在启动时调用了StartupScript函数,在 QuickFunction中找到 Startup-Script函数,该函数部分代码如下:
………
CALL ReadConsolData();
CALL SetDdeApplicationTopic();
由以上代码可以看到StartupScript函数调用了ReadConsolData函数,在 ReadConsolData函数中可以找到如下两段代码:
IniFileName=InfoInTouchAppDir()+“Application.INI”;
Mach2_ACP1A =INIReadString(IniFileName,“INIT”,“Mach2 S1 ACP1A Node Name”);
第一行代码是获取HMI程序全路径,并将该路径输出到内存标记IniFileName,第二行代码是从该路径下的 Application.INI文件中找出 Mach2 S1 ACP1A Node Name对应的值,并将结果返回给内存消息标记Mach2_ACP1A。
在当前HMI程序目录下找到 Application.INI文件,用记事本打开,发现如下配置信息:
………
Mach2 S1 ACP1A Node Name=GG_S1-ACP1A
Mach2 S1 ACP1B Node Name=GG_S1-ACP1B-
而站LAN中ACP1A主机的主机名为GG_S1-ACP1A-,可见第二行代码已将正确的ACP1A的主机名传递给了标记Mach2_ACP1A。
ReadConsolData函数执行完后又重新返回StartupScript函数,而StartupScript函数又调用了 SetDde-ApplicationTopic函数,打开该函数可以找到以下脚本:
IOSetAccessName( “ACP1A”,Mach2_ACP1A,“”,“”);
IOSetAccessName函数的功能正是实现访问名的重新配置,该语句的含义是将Mach2_ACP1A中的字符变量作为访问名ACP1A的节点名。由此可以看到ACP1A访问名已经配置正确,此时标记名ACP11SystemActive就可以通过 SuiteLink协议和站LAN获取ACP1A主机上的标记信息。该标记获得数据后通过和表达式内的其他标记共同计算出表达式内的值从而确定长方形对象的颜色为用户提供当前主机的工作状态[4]。
HMI程序除了从MACH2主机获取各种现场数据外还要通过数据库系统将各种事件从数据库中获取到HMI程序中来。首先简要介绍一下SQL访问管理器。
在Intouch中数据库在共享的属性或字段的表中存储信息。“结构化查询语言”(Structured Query Language,简称SQL)是以查询的形式访问该类信息的语言。“SQL访问管理器”让您可以使用查询来访问、修改、创建以及删除数据库表。在HMI使用SQL Server数据库的步骤可分为如下3步:
(1)连接数据库
连接SQL Server数据库使用函数SQLConnect,其语法格式如下:
[ResultCode=]SQLConnect(ConnectionID,“ConnectString”):
SQLConnect()返回一个值给 ConnectionID参数,后续的所有SQL函数都将它用作参数。
(2)填写SQL脚本
填写SQL脚本的工作由函数SQLAppendStatement完成,其语法格式为:
[ResultCode=]SQLAppendStatement(Connection-ID,“SQLStatement”):
SQLAppendStatement()函数使用字符串得内容来追加SQL语句。返回值指出在函数调用过程中是否发生了错误。
(3)执行SQL语句返回结果
SQLExecute函数在脚本中运行 SQL查询。其语法为:
SQLExecute(ConnectionID,BindList,StatementID):
如果语句包含 SELECT,则 BindList参数指定用于绑定数据库列与 InTouch标记的“绑定列表”的名称。如果“绑定列表”为 NULL,则不进行任何关联标记的操作。
下面以江陵换流站“Event List”事件列表实现列表显示为例,说明以上三个函数是如何将数据库记录显示到InTouch界面上的。
首先简要介绍一下江陵换流站SCADA数据库的表结构。江陵换流站数据库管理系统使用SQL Server 2008,其数据库名为SCMDB,其中共有48张表,其中事件均存放在Point表中。当日事件存放于Event表中,其他一些表作为Point表的外键表或存放一些辅助信息。
打开Windows Maker查看其中QuickFunction中的BottomOfEventList函数,发现如下代码:
CALL PrepareEventStatement();
ResultCode=SQLExecute(EventListConnectionID,“SQLBindlist”,SQLHandle);
查看PrepareEventStatement函数发现如下代码:
ResultCode=SQLConnect(EventListConnection-ID,“DSN=”+ODBC_DSN+“;UID=”+ODBC_User+ “;PWD=ows”);
ResultCode = SQLAppendStatement(EventList-ConnectionID,“Select* from event”);
SQLAppendStatement ( EventListConnectionID,EventSelectSTR):
SQLAppendStatement ( EventListConnectionID,EventSelectSTR2);
在PrepareEventStatement函数内,第一行代码实现了数据库的连接,并将连接存放在了标记EventList-ConnectionID中,后面三行代码实现了该连接的查询语句,其中EventSelectSTR和EventSelectSTR2的值标记可以在InitSelectStrings函数中找到在这里不再详细介绍。
PrepareEventStatement函数执行完后返回 BottomOfEventList函数并利用SQLExecute函数完成将查询到的数据集绑定到SQLBindlist列表中。SQLBindlist的列表绑定配置如图8所示。
此时数据已经被加载到SQLBindList中,之后通过进一步调用InsertEventRow函数将该列表中的每一行插入到HMI的显示界面中,便实现了一个完整的数据库查询操作。
以上介绍了InTouch与MACH2系统各主机之间的数据交换过程,这对于排除各种InTouch程序界面显示异常或数据不刷新故障有着重要意义。
图8 列表绑定配置
本文以ABB公司的MACH2系统为例,介绍了目前直流系统所采用的控制保护系统,不足之处有待于进一步改进和完善,对于控制保护软件仍需深入研究。
[1] 尹丽娟,徐勤.InTouch组态软件在计算机监控系统中的应用[J].计算机工程与设计,2007,28(13):3273 -3276.
[2] 安连祥,蔡召君,张少如,等.InTouch在冷轧机控制系统中的设计和应用[J].计算机工程,2007,32(22):225 -226.
[3] 张颖,史丽萍,张广龙.基于组态软件InTouch的变电所监控系统[J].计算机应用,2006(26):323 -324.
[4] Wonderware.InTouch9.0 使用手册[Z],2006.