CN102346671B - 基于可扩展式脚本语言的计算方法 - Google Patents
基于可扩展式脚本语言的计算方法 Download PDFInfo
- Publication number
- CN102346671B CN102346671B CN 201110295341 CN201110295341A CN102346671B CN 102346671 B CN102346671 B CN 102346671B CN 201110295341 CN201110295341 CN 201110295341 CN 201110295341 A CN201110295341 A CN 201110295341A CN 102346671 B CN102346671 B CN 102346671B
- Authority
- CN
- China
- Prior art keywords
- calculation services
- real
- data
- script
- write
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明提出了一种基于可扩展式脚本语言的计算方法,支持用户在各条计算服务中提供多行脚本代码,以进行各种复杂的计算、逻辑处理及系统调用(通过执行宿主系统中的应用程序);该技术与ChRDB面向对象式实时数据库系统深度集成,支持如下三种计算脚本逻辑触发方式:(1)定时器触发、(2)具体数据点变化/写入触发、(3)某类数据对象变化/写入触发,可以通过组态生成较复杂的基于实时数据的实时执行逻辑,在遇到自动化监控项目工程实施中多变的用户需求时,能够通过组态完成相应工作,从而最大程度地减少系统的二次开发工作量。
Description
技术领域
数据监控与采集系统(SCADA)是构建众多供电、配网自动化应用系统的基础,作为SCADA系统数据处理功能的重要支撑,计算服务功能可以支持虚拟遥信、开关动作/变位模拟、数值计算、统计计算、设备/子系统间功能联动等辅助逻辑功能。随着计算机软硬件系统性能的提高,用户对于SCADA系统数据处理能力提出了越来越高的要求,计算服务的功能及执行效率也成为评价整个SCADA系统性能的重要技术指标。
背景技术
通讯规约服务进程通过数字通信线路所获得的远方受控站点、智能设备上送的实时信息通常都需要进行处理,并经过数值计算映射到真实的物理量值区间;数字量、脉冲量数值本身意义有限,对其进行统计计算可以得到更直观的量值信息;自动化监控系统的工程应用总会遇到各种复杂多变的用户需求,从而需要不断地向基本的SCADA系统中增加应用逻辑,甚至对既有功能进行更改。所有这些应用需求都对SCADA系统除数据采集、存储、可视化外的广义“计算”功能提出了越来越高的要求。
应用于SCADA系统的传统计算服务实现对于“计算”的定义主要有以下几种类型:(1)算术运算,例如对SCADA系统采集的数据执行比例映射(变比、乘系数等)、加和、平均等操作,仅支持对简单的数值类数据进行处理,而不能支持对用户定制逻辑的执行;(2)布尔逻辑运算,用户提供一组基于某些变量的条件表达式,计算服务引擎依据对其组合得出的布尔运算结果来选择目标动作,通常是一些条件跳转及虚拟数据对象的值置位;(3)函数式运算,包括逆波兰式、函数式(类似Prolog语法)等单行代码/脚本式计算逻辑定义,其执行能力能够覆盖上类中支持的各种布尔逻辑运算,但此类编码较不直观,对其自如地描述需要较深的专业知识,且单行式脚本对于较复杂的计算、控制逻辑也无能为力。
发明内容
针对现有技术中存在的问题,本发明提出了一种基于可扩展式脚本语言的计算方法,支持用户在各条计算服务中提供多行脚本代码,以进行各种复杂的计算、逻辑处理及系统调用(通过执行宿主系统中的应用程序);该技术与ChRDB面向对象式实时数据库系统深度集成,支持如下三种计算脚本逻辑触发方式:(1)定时器触发、(2)具体数据点变化/写入触发、(3)某类数据对象变化/写入触发,可以通过组态生成较复杂的基于实时数据的实时执行逻辑,从而在遇到自动化监控项目工程实施中多变的用户需求时,能够通过组态完成相应工作,在最大程度地减少系统的二次开发工作量。
基于可扩展式脚本语言的计算方法的程序实现基于申请人先期研发的高性能面向对象实时数据库ChRDB。实时数据库是SCADA系统中各子系统、模块进行数据交换的中介,工程项目配置中的数据以面向对象的方式保存在内存实时数据库中,实时数据库为SCADA系统中的各功能模块、子进程提供高速、实时的数据操作和访问支持。
本发明的技术方案为:一种基于可扩展式脚本语言的计算方法,它包括实时数据库,其特征在于:计算服务的执行由驱动层的定时器及数据引擎支撑,二者分别负责定时计算服务的触发执行及数据驱动计算服务的触发执行;所述数据引擎提供了对实时数据库访问功能的抽象,其作为实时数据库与计算服务模块间的中介,负责即时地把各条用户计算服务所关注的数据写入及变化操作传入各计算服务中所定义的对应变量,定时器及数据变化/写入驱动模块均通过数据引擎实现对实时数据库的访问;基于定时器其数据驱动的计算服务一经触发,对应的由用户提供的多行逻辑脚本将被送至脚本引擎进行执行,其中的执行逻辑通过对指定实时数据库数据点进行写入或带参执行系统中的指定应用程序来与自动化监控系统中的其他相关模块进行交互,实现数据共享/交换及逻辑联动。
上述的基于可扩展式脚本语言的计算方法,其进一步特征在于:所述数据驱动计算服务是指具体数据点变化/写入触发及指定类型数据对象变化/写入。
上述的基于可扩展式脚本语言的计算方法,其进一步特征在于:所述计算服务,由工程实施者根据用户需求定义/配置的,应用于SCADA系统中实现特定计算功能的辅助功能模块,它包括定时计算服务和数据驱动计算服务。
所述定时计算服务,由定时器触发,按指定时间间隔触发的计算服务。其中包含一个或以上的输入变量,各输入变量可空置或绑定于实时数据库中的指定数据点,并被指派一个扫描时间间隔及触发后待执行的逻辑脚本。
所述数据驱动计算服务,由实时数据库中数据写入/值变化触发的计算服务。其中包含一个或以上的输入变量,各输入变量既可绑定于实时数据库中的指定数据点也可以绑定至某型数据对象的一个指定属性,输入变量的触发方式须指定为写入触发或变化触发,并给出触发后待执行的逻辑脚本。
本发明的有益效果:基于可扩展式脚本语言的计算服务技术可以广泛地应用于各种电力监控SCADA系统中,支持通过配置创建并执行各种数值计算、统计计算、应用程序带参调用、SCADA子系统/设备间的功能联动等复杂计算、执行逻辑,在功能上实现了对传统SCADA系统中所采用的狭义的、面向数值处理的“计算服务”的极大的改进和扩充。
基于可扩展式脚本语言的计算服务技术具有配置灵活、执行高效、通用性强的特点,通过其所提供的图形化配置工具创建的计算服务可以执行较复杂的数值计算及控制逻辑,而不必进行任何二次开发编程,从而在最大限度满足用户多变系统需求的前提下,尽可能地减少了工程实施中可能带来的二次开发工作量;基于计算服务实现各种设备、子系统间的功能联动也较好地实现了相关设备/系统间的解耦,也间接提高了自动化应用系统的可靠性。
附图说明
图1为本发明的系统架构图。
具体实施方式
以下结合附图和具体实施例,对本发明作出进一步详细阐述。
基于可扩展式脚本语言的计算服务架构如图1所示,计算服务的执行由驱动层的定时器及数据引擎支撑,二者分别负责定时计算服务的触发执行及数据驱动计算服务(具体数据点变化/写入触发及指定类型数据对象变化/写入)的触发执行。数据引擎提供了对实时数据库访问功能的抽象,其作为实时数据库与计算服务模块间的中介,负责即时地把各条用户计算服务所关注的数据写入及变化操作传入各计算服务中所定义的对应变量,定时器及数据变化/写入驱动模块均通过数据引擎实现对实时数据的访问;基于定时器其数据驱动的计算服务一经触发,对应的由用户提供的多行逻辑脚本将被送至脚本引擎进行执行,其中的执行逻辑可以通过对指定实时数据库数据点进行写入或带参执行系统中的指定应用程序来与自动化监控系统中的其他相关模块(如HMI画面,报警,其他联机/集成子系统)进行交互,实现数据共享/交换及逻辑联动。
定义1 计算服务,由工程实施者根据用户需求定义/配置的,应用于SCADA系统中实现特定计算功能的辅助功能模块。定义中的计算为广义概念上的计算任务,包括但不限于数值运算、布尔运算及应用逻辑的执行。
基于可扩展式脚本语言的计算服务支持两种类型的计算服务:(1)定时计算服务,由定时器触发,按一定时间间隔执行用户指定的应用逻辑;(2)数据驱动计算服务,与ChRDB实时数据库深度集成,依据特定类型数据对象的值写入/变化或指定数据点的值写入/变化触发,并执行用户指定的计算任务。
定义2 定时计算服务,按指定时间间隔触发的计算服务。其中包含一个或以上的输入变量,各输入变量可空置或绑定于实时数据库中的指定数据点,并被指派一个扫描时间间隔(Timeout)及触发后待执行的逻辑脚本(Script);可以为定时计算服务指定一个或多个其他变量,分别与实时数据库中的相应数据点绑定,由各输入变量逻辑脚本进行读写,从而实现通过实时数据库呈现计算服务的运行结果。
每间隔相应的时间,相应的输入变量的值将与实时库中的对应数据点同步(如已绑定),计算服务引擎将执行其包含的逻辑脚本,相应脚本在完成数值计算或其他路由及处理后,可以通过执行脚本函数exec()、shell()实现对宿主系统中指定应用程序的带参调用,也可以通过对其所包含的指定其他变量进行写入来通过实时数据库输出运行结果,以便其他以实时数据为中心的应用程序所读取,其执行的如算法1所示。
算法1 定时计算服务的执行
Loop
For each Vi in V
If Vi timeouts then
Sync Vi with RDB
For each Oi in O
Sync Oi with RDB
End
Execute Vi.Script
End
End
End。
定义3 数据驱动计算服务,由实时数据库中数据写入/值变化触发的计算服务。其中包含一个或以上的输入变量,各输入变量既可绑定于实时数据库中的指定数据点也可以绑定至某型数据对象的一个指定属性,输入变量的触发方式须指定为写入触发或变化触发,并给出触发后待执行的逻辑脚本(Script);可以为数据驱动计算服务指定一个或多个其他变量,分别与实时数据库中的相应数据点绑定,由各输入变量逻辑脚本进行读写,从而实现通过实时数据库呈现计算服务的运行结果。
算法2 数据触发计算服务的执行
Wait for triggering signals
For each Oi in O
Sync Oi with RDB
End
Sync Vi with RDB
Execute Vi.Script
End。
逻辑脚本定义及功能扩展
计算服务脚本引擎采用的脚本语言语法与Lua脚本语言相兼容,下面是对其的一份简要描述。
变量
以英文字母或者下划线开头的字母、下划线、数字序列,例如:a, abc, value, totalSum, x1, y1, x2, y2等等。
常量
数值常量:支持整数、浮点数、科学计数法,例如:3.14, 1000, 65535, 3.14e3 …
字符串常量:用双引号括住的一组字符,例如:“Hello World!”,“中文”,“true”…。
数学运算
二元运算符:+ - * / ^( 加减乘除幂 )
一元运算符:- (负值)
注意:这些运算符的操作数都是实数。
关系运算符
<(小于) >(大于) <=(小于等于) >=(大于等于) ==(等于) ~=(不等于)。
逻辑运算符
and(逻辑与) or(逻辑或) not(逻辑非)。
赋值语句
形式为:变量名=值,例如:a=10; pi=3.14; name=”wsi”。同行的多个赋值语句之间可以用分号(;)隔开,但考虑到脚本代码的可读性和可维护性,建议一行只书写一条赋值语句。
if分支语句
if语句有三种形式:
1) if conditions then // conditions为一组联立的关系运算或逻辑运算表达
then-part // 式,若其值为true则执行then-part部分的语句
end
2) if conditions then // conditions为true则执行then-part部分的语句;
then-part // 否则执行else-part部分的语句
else
else-part
end
3) if conditions1 then // conditions1为true则执行then-part部分的语句;
then-part // 否则接着判断conditions2 ,如果其为true则执
elseif conditions2 then// 行elseif-part1部分的语句,如此继续若所有条件
elseif-part1 // 都不满足则执行else-part部分的语句
.. --->多个elseif
else
else-part
end。
字符串连接操作
str1..str2:表示将字符串变量str1与str2相连接并生成一个新字符串。例如:赋值语句a=“Thank ”..“you!”执行完后,字符串变量a的值将为“Thank you!”。
值转换函数
tonumber(str):将字符串变量转换成相应的数值。例如赋值语句pi=tonumber(“3.14”)执行完后,数值变量pi的值将为浮点数3.14。
(num):将数值变量转换成相应的字符串。例如赋值语句str=“pi=”..tostring(3.14)执行完后,字符串变量str的值将为“pi=3.14”。
基于可扩展式脚本语言的计算服务提供众多扩展函数,目前共支持34个脚本函数(loads/saves、loadn/saven、gets/sets、getn/setn、writevp、write、read、getobid、getaid、getdatapoint、exec、lock/unlock、machineid、allow、getpasswd、encrypt、who、matchchoice、precision、invoke、allowa、question、sndplay、shell、sleep、load/save、get/set),用于计算服务触发脚本逻辑的编写并执行实时数据读/写/锁定、用户帐户认证、宿主机器信息获取、实时数据库应用程序执行/宿主系统应用程序执行等功能。脚本引擎的开放性设计使得依据新的用户需求向其中添加新的脚本函数也十分地方便,从而实现了脚本语言的可扩展。
典型应用:作为申请人DSC-9000W自动化监控系统的重要功能组件, 基于可扩展式脚本语言的计算服务技术已经被广泛地应用于各种电力监控SCADA系统中,以之为基础实现的用户培训系统/模块、实时库触发的系统应用程序执行、越限统计触发报警、虚遥信置位等逻辑功能已经成功应用于南京地铁IMS OA/Web发布系统、达州-万州电气化铁路电调系统、伊朗德黑兰地铁4号线PSCADA系统等国内外系统中,并获得用户和工程人员的好评。
虽然本发明已以较佳实施例公开如上,但具体实施例和附图并不是用来限定本发明,任何熟习此技艺者,在不脱离本发明之精神和范围内,自当可作各种变化或润饰,但同样在本发明的保护范围之内。因此本发明的保护范围应当以本申请的权利要求保护范围所界定的为准。
Claims (3)
1.一种基于可扩展式脚本语言的计算方法,该计算方法的程序实现基于面向对象实时数据库,其特征在于:计算服务由工程实施者根据用户需求定义/配置,应用于SCADA系统中实现特定计算功能的辅助功能模块,它包括定时计算服务和数据驱动计算服务;所述数据驱动计算服务是指具体数据点变化/写入触发及指定类型数据对象变化/写入;计算服务的执行由驱动层的定时器及数据引擎支撑,二者分别负责定时计算服务的触发执行及数据驱动计算服务的触发执行;所述数据引擎提供了对实时数据库访问功能的抽象,其作为实时数据库与计算服务模块间的中介,负责即时地把各条用户计算服务所关注的数据写入及变化操作传入各计算服务中所定义的对应变量,定时器及数据变化/写入驱动模块均通过数据引擎实现对实时数据库的访问;基于定时器的数据驱动计算服务一经触发,对应的由用户提供的多行逻辑脚本将被送至脚本引擎进行执行,其中的执行逻辑通过对实时数据库中的指定数据点进行写入,或带参执行系统中的指定应用程序来与自动化监控系统中的其他相关模块进行交互,实现数据共享/交换及逻辑联动。
2.根据权利要求1所述的基于可扩展式脚本语言的计算方法,其特征在于:所述定时计算服务,由定时器触发,按指定时间间隔触发的计算服务;其中包含一个以上的输入变量,各输入变量可空置或绑定于实时数据库中的指定数据点,并被指派一个扫描时间间隔及触发后待执行的逻辑脚本。
3.根据权利要求1所述的基于可扩展式脚本语言的计算方法,其特征在于:所述数据驱动计算服务,由实时数据库中数据写入/值变化触发的计算服务;其中包含一个以上的输入变量,各输入变量既可绑定于实时数据库中的指定数据点也可以绑定至某个类型数据对象的一个指定属性,输入变量的触发方式须指定为写入触发或变化触发,并给出触发后待执行的逻辑脚本。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110295341 CN102346671B (zh) | 2011-09-29 | 2011-09-29 | 基于可扩展式脚本语言的计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110295341 CN102346671B (zh) | 2011-09-29 | 2011-09-29 | 基于可扩展式脚本语言的计算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102346671A CN102346671A (zh) | 2012-02-08 |
CN102346671B true CN102346671B (zh) | 2013-12-18 |
Family
ID=45545375
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110295341 Active CN102346671B (zh) | 2011-09-29 | 2011-09-29 | 基于可扩展式脚本语言的计算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102346671B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103544574B (zh) * | 2013-11-07 | 2016-04-20 | 南京国电南自轨道交通工程有限公司 | 基于可编辑公式脚本的变电站智能专家系统 |
CN103823670B (zh) * | 2013-11-28 | 2017-02-22 | 云南电网公司文山供电局 | 一种基于数据库的多任务、可配置、自动统计数据方法 |
CN104460595B (zh) * | 2014-10-30 | 2017-07-25 | 贵州电力试验研究院 | 一种扩展电力监控系统功能的方法和装置 |
CN104578424A (zh) * | 2015-01-22 | 2015-04-29 | 江苏大烨智能电气股份有限公司 | 一种基于虚拟规约测点合成的配电自动化终端实现方法 |
CN106647337B (zh) * | 2017-02-27 | 2019-11-05 | 南京国电南自轨道交通工程有限公司 | 基于lua脚本的电气设备遥控闭锁特性仿真方法 |
CN107665112B (zh) * | 2017-09-29 | 2021-03-02 | 紫光测控有限公司 | 一种电力控制流程的组态方法及装置 |
CN111104154A (zh) * | 2018-10-25 | 2020-05-05 | 长沙博为软件技术股份有限公司 | 一种基于数据处理服务实现大数据采集系统脚本功能扩展和定制的方法 |
CN111930102B (zh) * | 2020-08-11 | 2022-12-09 | 南京国电南自轨道交通工程有限公司 | 一种基于对象的综合监控联动逻辑配置方法 |
CN112183936A (zh) * | 2020-08-31 | 2021-01-05 | 中冶南方都市环保工程技术股份有限公司 | 一种用于工业生产管理的性能指标实时计算方法 |
CN115981610B (zh) * | 2023-03-17 | 2023-06-02 | 科大国创软件股份有限公司 | 一种基于Lua脚本实现的光伏储能系统的综合运算平台 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101321178A (zh) * | 2008-07-18 | 2008-12-10 | 中兴通讯股份有限公司 | 一种门户工作流引擎系统及其实现方法 |
CN101694626A (zh) * | 2009-09-30 | 2010-04-14 | 曙光信息产业(北京)有限公司 | 脚本执行系统及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9505566D0 (en) * | 1995-03-20 | 1995-05-03 | Secr Defence | A multi-sequential computer for real time applications |
-
2011
- 2011-09-29 CN CN 201110295341 patent/CN102346671B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101321178A (zh) * | 2008-07-18 | 2008-12-10 | 中兴通讯股份有限公司 | 一种门户工作流引擎系统及其实现方法 |
CN101694626A (zh) * | 2009-09-30 | 2010-04-14 | 曙光信息产业(北京)有限公司 | 脚本执行系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102346671A (zh) | 2012-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102346671B (zh) | 基于可扩展式脚本语言的计算方法 | |
CN101957751A (zh) | 一种状态机的实现方法及装置 | |
CN110083436A (zh) | 一种基于Java字节码增强技术的业务数据实时监控系统及方法 | |
CN109324787A (zh) | 一种业务软件开发方法、装置及终端设备 | |
CN103473031B (zh) | 协同并发式消息总线、主动构件组装模型及构件拆分方法 | |
CN100565395C (zh) | 可重构数字控制器的自治域系统 | |
CN109471626A (zh) | 页面逻辑结构、页面生成方法、页面数据处理方法及装置 | |
CN101188012A (zh) | 一种交易数据的清算系统及清算方法 | |
Gouyon* et al. | Pragmatic approach for modular control synthesis and implementation | |
CN110705716A (zh) | 一种多模型并行训练方法 | |
CN104169886A (zh) | 通过地址的运行时间检测间接采样 | |
Bedini et al. | Modeling performance of a parallel streaming engine: bridging theory and costs | |
CN104169887A (zh) | 通过指令操作码的运行时间检测间接采样 | |
CN107479866A (zh) | 基于重构技术实现开放终端应用数据与功能的方法 | |
CN104299170B (zh) | 间歇性能源海量数据处理方法 | |
Lalanda et al. | Architecture and pervasive platform for machine learning services in Industry 4.0 | |
CN102147593B (zh) | 电力系统安全稳定多算法封装流程自定义组态方法 | |
CN109634574A (zh) | 基于微内核架构的变量实时监视方法及系统 | |
CN103473032B (zh) | 独立主动构件和可运行主动构件组装模型及构件拆分方法 | |
Clarke | A contingency approach to the application software generations | |
Girault | Elimination of redundant messages with a two-pass static analysis algorithm | |
CN106844385A (zh) | 一种结合Spark技术构建灵活业务模型的方法 | |
Gobbo et al. | From ancient to modern computing: a history of information hiding | |
CN1661552B (zh) | 用于具有有限资源的微处理器的进程语言 | |
Wallace et al. | Intelligent System Development and Integration for Cloud Computing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |