Lua脚本在城市轨道交通电力监控培训仿真系统中的应用

(整期优先)网络出版时间:2017-12-22
/ 2

Lua脚本在城市轨道交通电力监控培训仿真系统中的应用

李佑文褚红健王志心曹黎明颜儒彬

(南京国电南自轨道交通工程有限公司210032)

摘要:为了解决城市轨道交通电力监控培训仿真系统中仿真设备之间、线路之间的逻辑运算,通过利用Lua脚本的易用性、灵活性和高效性等特点,完成了本系统的仿真计算;同时通过建立系统Lua脚本逻辑规则知识库,减少了工程应用配置工作量。

关键词:Lua脚本;电力监控;培训仿真;逻辑规则

1概述

在现场城市轨道交通电力监控系统中,存在不同种类的电气设备装置,如保护装置、断路器和隔离开关等,其中不同的设备内部存在大量的逻辑操作,并且设备之间通过硬接线方式进行连接,这些有连接的设备之间也存在一定的外部逻辑关系。在现有的仿真系统中,设备内部逻辑操作以及外部数据输入一般通过场景配置文件或后台程序硬编码的方式来实现,但该方法存在重合性并缺乏灵活性,如同类型的设备相同逻辑重复配置或在增加设备装置时很有可能涉及到源码的改动,在工程应用中会增加相当的配置工作量。根据上述存在的问题以及现有技术的研究,通过利用脚本技术应用在轨道交通电力监控培训仿真系统中即可解决设备逻辑的灵活性同时也减少了大量的重复工作。

2脚本语言

脚本语言是为了缩短传统的编写-编译-链接-运行过程而创建的编程语言。早期的脚本语言通常称为批处理语言,其最大特点是解释运行而非编译,其次是作为公共服务组件能被上层应用调用、提供高效快速的二次开发接口、包含丰富的系统调用功能和灵活地添加自定义功能。

常用的脚本语言主要有Perl、Python、Ruby和Lua等,都具有语法简单易懂、动态数据类型、自动内存分配和回收机制、解释执行等特性。

Lua是一种小巧的脚本,其设计目的是嵌入到其他应用程序中,为其他程序提供灵活的扩展功能。其技术特点包括以下几点:

(1)效率高:在所有常见脚本语言中运行速度最快;

(2)易开发:极大地简化了“编写-编译-链接-运行”的编程周期;

(3)易集成:易于嵌入,能有效地利用第三方代码;

(4)动态代码:脚本语言的代码能够被实时生成和执行。

经综合比较,选择Lua作为本系统的脚本语言。应用设计与执行。

2.1架构设计

将Lua脚本技术应用于本系统的架构如图1所示,设备内的逻辑运算、设备之间以及线路的逻辑运算由数据引擎来驱动,并通过脚本引擎获取逻辑规则来解释执行;数据引擎接收来自实时库的消息命令,并将接收到的消息进行分发至各个数据设备对象;当对象设备收到消息时通过驱动脚本引擎以及逻辑规则文件来执行该逻辑运算,运算完成后将结果写入数据引擎,数据引擎将数据写入实时数据库,实时数据库将结果通知其它设备,完成了设备、设备之间以及线路之间的逻辑运算。

图1LUA脚本应用架构图

本系统中数据设备对象采用面向对象思想进行建模,通过设备对象的属性(如Value*Link、State*Link)可以配置与之相关的遥信量和遥测量,这些信号量作为逻辑运算的判断条件,当信号量发生变化时,通过读取逻辑规则配置对象的属性值和脚本引擎执行该逻辑规则配置文件,将执行结果取出并写入数据引擎。

2.2执行流程

本系统的架构基于消息通知和网络数据,通过不同的信息来执行逻辑规则脚本,其执行步骤如下。

命令解析与执行接收并解析来自网络通信设备的数据或者本地实时库消息,然后执行相应的命令,再通过实时数据库通知其它应用程序,最后将结果反馈至网络通信设备或就地执行。

实时数据库通过消息通知机制将变化数据通知数据引擎,数据引擎根据已经订阅的设备对象信号驱动脚本引擎解释执行逻辑规则文件,最终将逻辑运算结果通过数据引擎写入实时库中通知其它应用程序,在此过程中数据引擎可以同时接收来自实时库中任意数量的消息,并根据不同的消息来驱动脚本引擎,通过脚本引擎来执行并将结果反馈给数据引擎。

脚本引擎通过对象的逻辑规则执行相关的逻辑判断并将结果输出至数据引擎,遥信和遥测量均可参与逻辑运算,采取脚本引擎既可立即执行并反馈结果,也可等待延时操作结果,在模拟仿真系统中增加了仿真的灵活性。

逻辑规则配置可以根据不同的操作逻辑来搭建不同的逻辑运算表达式,该规则配置文件基于已有的规则模板进行,在不同的仿真环境下既可以减少配置工作,也可以通过配置工具增加不同的规则配置,长期积累可以形成一套完整有效的逻辑规则库。

知识库是根据现有不同设备类型建立而成,为每类设备建立一个逻辑规则配置库。也可根据不同的应用场景生成设备之间的逻辑规则,减少相同设备以及设备之间的逻辑配置工作,同时为以后的复用提供基础知识库。

通过数据引擎与脚本引擎二者的驱动来搭建整个逻辑运算的执行机制,采用数据设备对象和逻辑规则配置作为整个规则检测机制,当有实时库消息通知时,执行机制和规则检测机制共同完成整个模拟场景的设备仿真。

2.3解释执行脚本

本系统中核心过程在于Lua脚本的解释执行,步骤如下:

1.读取实时库中相关遥信、遥测的值;

2.根据逻辑规则脚本文件中的表达式计算结果值;

3.将逻辑结果值写入实时库。

由于Lua脚本独立于实时库存在,不能直接调用完成对实时库的访问,因此需自定义Lua函数,并通过数据引擎与实时库接口。从以上功能点分析,仅需定义读、写实时库两个接口即可,声明如下。

DATAREAD(UINTOBID,STRINGATTRNAME);

BOOLWRITE(UINTOBID,STRINGATTRNAME,DATAVAL);

在READ、WRITE函数内部通过单例模式获取实时库对象G_OMSDB,通过该对象完成实时库读写操作。

以下LUA代码描述的是一种在断路器中常用的"三取二"规则逻辑,即三个断路器在同一时间最多只允许有两个断路器在合闸位置,即在每次合闸断路器时,先判断另外两个断路器是否已经在合闸位置。该种逻辑规则广泛用于母联断路器开关与两条进线断路开关之间的闭锁仿真。

A1=READ(520655328,"State")

A2=READ(520655329,"State")

CMD=READ(522717661,"CommandStatus")

RET=(A1==2)and(A2==2)

ifRETthen

ifCMD==1then

WRITE(522717661,"ExecuteState",0)

else

WRITE(522717661,"ExecuteState",1)

end

else

WRITE(522717661,"ExecuteState",1)

end

3结论

综上,将Lua脚本应用于本系统,不仅可以实现模拟仿真电力设备内部之间的逻辑运算,同时也可以仿真设备以及线路之间的交互逻辑;利用Lua脚本的易用性、高效性等特性以及电力监控逻辑规则知识库,减少了系统大量的配置工作,增加了可操作性,同时能够更加高效地仿真现场设备的运行。

参考文献:

[1]顾峰,孙毅,蔡杰.Lua客户端脚本引擎在水电厂监控系统中的应用[J].水电自动化与大坝监测,2014.

[2]汪君鹏,李宥谋.基于Lua脚本技术的网络化测控系统设计[J].西安邮电大学学报,2013.