CN112148270B - 实时计算和数据交互方法、系统及介质 - Google Patents
实时计算和数据交互方法、系统及介质 Download PDFInfo
- Publication number
- CN112148270B CN112148270B CN202010804943.5A CN202010804943A CN112148270B CN 112148270 B CN112148270 B CN 112148270B CN 202010804943 A CN202010804943 A CN 202010804943A CN 112148270 B CN112148270 B CN 112148270B
- Authority
- CN
- China
- Prior art keywords
- script
- real
- time
- measuring point
- calculation
- 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
- 238000000034 method Methods 0.000 title claims abstract description 51
- 230000003993 interaction Effects 0.000 title claims abstract description 18
- 238000013515 script Methods 0.000 claims abstract description 161
- 238000004364 calculation method Methods 0.000 claims abstract description 77
- 238000012544 monitoring process Methods 0.000 claims abstract description 19
- 230000008859 change Effects 0.000 claims description 9
- 238000012217 deletion Methods 0.000 claims description 3
- 230000037430 deletion Effects 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 abstract description 6
- 230000006870 function Effects 0.000 description 17
- 238000005259 measurement Methods 0.000 description 11
- 238000004590 computer program Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 239000010979 ruby Substances 0.000 description 3
- 229910001750 ruby Inorganic materials 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 101001082184 Homo sapiens Pyrin and HIN domain-containing protein 1 Proteins 0.000 description 2
- 102100027365 Pyrin and HIN domain-containing protein 1 Human genes 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 101100286571 Mus musculus Pyhin1 gene Proteins 0.000 description 1
- 230000005856 abnormality Effects 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 229940090411 ifex Drugs 0.000 description 1
- HOMGKSMUEGBAAB-UHFFFAOYSA-N ifosfamide Chemical compound ClCCNP1(=O)OCCCN1CCCl HOMGKSMUEGBAAB-UHFFFAOYSA-N 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 235000015110 jellies Nutrition 0.000 description 1
- 239000008274 jelly Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000012913 prioritisation Methods 0.000 description 1
- ZLIBICFPKPWGIZ-UHFFFAOYSA-N pyrimethanil Chemical compound CC1=CC(C)=NC(NC=2C=CC=CC=2)=N1 ZLIBICFPKPWGIZ-UHFFFAOYSA-N 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/34—Graphical or visual programming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种实时计算和数据交互方法、系统及介质,应用于远程监控组态系统,其中,所述方法包括以下步骤:读取计算模块配置信息;读取数据库中的计算脚本内容或读取计算脚本文件;读取测点实时数据库中的测点实时数据;执行所述计算脚本,对所述测点实时数据进行计算,将计算结果回写到所述测点实时数据库;当测点实时数据发生变化,发布测点数据更新消息到MQTT消息队列;所述计算模块配置信息至少包括脚本内容或脚本文件,脚本执行的周期信息或触发事件配置信息。本发明采用支持海量测点和计算功能的脚本,能够支持网络集群服务器和云平台,充分利用当今先进的并行计算技术和成熟稳定的中间件,有非常大的优势。
Description
技术领域
本发明涉及远程监控组态软件领域,特别涉及一种实时计算和数据交互方法、系统及介质。
背景技术
目前流行的的监控组态软件普遍使用有限的一种或多种比较陈旧的脚本语言,即使用的是通用脚本语言,也为其专门定制了许多专用的函数方法,脚本语言相对落后,也不便于扩展,更不能采用和集成市面上流行的新脚本语言,如:Python、PHP、Groovy等;目前流行的的监控组态软件使用的技术都比较陈旧,难以写出性能更加高效、支持海量测点和复杂计算功能的脚本,服务器最多支持双机热备,不支持网络集群服务器和云平台,不能集成使用当今最先进的并行计算技术和成熟稳定的中间件,在大数据、云平台、物联网等领域,已经普遍比较落伍;脚本虽可定时执行,但不能测点数据变化事件驱动,进行指定脚本的触发执行;不支持自定义脚本模板,不能动态生成需要的脚本;脚本的在线调试和更新部署功能都比较弱,限制比较多;脚本的执行普遍缺乏详细的日志记录和错误提示,对用户不太友好。
发明内容
本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明提出一种实时计算和数据交互方法,应用于远程监控组态系统,能够实现工业自动化控制系统中对大量实时数据的快速获取、高速计算、实时输出等功能。
本发明还提出一种实时计算和数据交互系统。
本发明还提出一种实施上述方法的计算机可读存储介质。
根据本发明的第一方面实施例的一种实时计算和数据交互方法,应用于远程监控组态系统,所述方法包括以下步骤:读取计算模块配置信息;根据所述计算模块配置信息,读取数据库中的计算脚本内容或读取计算脚本文件;读取测点实时数据库中的测点实时数据;执行所述计算脚本,对所述测点实时数据进行计算,将计算结果回写到所述测点实时数据库;当测点实时数据发生变化,发布测点数据更新消息到MQTT消息队列;其中,所述计算模块配置信息至少包括脚本内容或脚本文件,脚本执行的周期信息或触发事件配置信息。
根据本发明的一些实施例,所述计算模块配置信息包括:计算模块的编码,脚本的类型、要执行的计算脚本及其方法名称、启用标志以及重复执行的时间间隔或有数据变化的触发测点。
根据本发明的一些实施例,所述方法还包括:根据所述重复执行的时间间隔,定时执行计算模块中定义的脚本程序和/或根据所述触发测点,触发执行计算模块中定义的脚本程序。
根据本发明的一些实施例,所述测点实时数据库为Redis测点实时数据库,所述Redis测点实时数据库,采用Hashmap来存储所有测点实时数据,以测点编码作为Key键值,Value值为JSON序列化字符串。
根据本发明的一些实施例,测点数据更新消息包括消息主题和消息内容,所述消息内容至少包括转换后的工程计量数值。
根据本发明的一些实施例,所述方法还包括:从测点实时数据库中获取测点实时对象变量,基于所述测点实时对象变量得到输入参数和输出参数;自动遍历所有计算模块配置信息,自动分析脚本内容识别出计算脚本中的输入和输出测点,执行计算脚本,通过脚本引擎的方法逐个传入所有类型为测点实时对象的变量,修改所述测点实时对象的属性并输出;当脚本执行异常,根据脚本返回值记录日志。
根据本发明的一些实施例,所述方法还包括:通过动态图形化UI界面,根据选定的脚本模板、测试和参数,动态自动生成脚本文件;且支持脚本文件的在线更新、新增、删除;所述脚本内容是支持符合JSR233标准脚本语言规范的多种通用脚本语言。
根据本发明的一些实施例,所述方法还包括:设置调试模式,在调试模式下,执行所述计算脚本后,将计算结果通过UI界面呈现而不将计算结果写到所述测点实时数据库和MQTT消息队列。
根据本发明的一些实施例,所述计算脚本支持多种脚本语言,其输入输出变量按照指定格式编写,所述格式为Tag_{测点编码}.[数据数值|数据状态|数据字符串]。
根据本发明的一些实施例,所述MQTT消息队列用于计算模块与其他模块进行消息发送和订阅通信。
根据本发明的一些实施例,测点数据更新消息包括消息主题和消息内容,所述消息内容至少包括转换后的工程计量数值。
根据本发明的一些实施例,所述脚本的变量可自定义,自定义变量包括测点变量名、测点对象、参数变量名及参数。
根据本发明的第二方面实施例的一种实时计算和数据交互系统,应用于远程监控组态系统,所述实时计算和数据交互系统包括:脚本库,用于存储计算脚本;计算模块,包括一个脚本文件或一段数据库的脚本内容;计算调度模块,用于读取计算模块配置信息,根据所述计算模块配置信息,读取数据库中的计算脚本内容或读取计算脚本文件;读取测点实时数据库中的测点实时数据,并执行所述计算脚本,对所述测点实时数据进行计算,将计算结果回写到所述测点实时数据库;测点实时数据库,用于存储测点实时数据;MQTT消息队列,用于存储当测点实时数据发生变化时发布的测点数据更新消息;其中,所述计算模块配置信息至少包括脚本内容或脚本文件,脚本执行的周期信息或触发事件配置信息。
根据本发明的第三方面实施例的一种计算机可读存储介质,其上储存有程序指令,所述程序指令被处理器执行时实施如本发明的第一方面实施例所述的方法。
本发明实施例至少具有如下有益效果:
本发明实施例的方法采用支持海量测点和计算功能的脚本,所应用的远程监控组态系统的服务器能够支持网络集群服务器和云平台,本发明实施例充分利用当今先进的并行计算技术和成熟稳定的中间件,在大数据、云平台、物联网等领域,有非常大的优势。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1为本发明实施例的方法流程图。
图2为本发明另一实施例的方法流程图。
图3为本发明实施例的系统框架图。
具体实施方式
以下将结合实施例和附图对本发明的构思、具体结构及产生的技术效果进行清楚、完整的描述,以充分地理解本发明的目的、方案和效果。
需要说明的是,如无特殊说明,当某一特征被称为“固定”、“连接”在另一个特征,它可以直接固定、连接在另一个特征上,也可以间接地固定、连接在另一个特征上。本文所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。此外,除非另有定义,本文所使用的所有的技术和科学术语与本技术领域的技术人员通常理解的含义相同。本文说明书中所使用的术语只是为了描述具体的实施例,而不是为了限制本发明。本文所使用的术语“和/或”包括一个或多个相关的所列项目的任意的组合。
应当理解,尽管在本公开可能采用术语第一、第二、第三等来描述各种元件,但这些元件不应限于这些术语。这些术语仅用来将同一类型的元件彼此区分开。例如,在不脱离本公开范围的情况下,第一元件也可以被称为第二元件,类似地,第二元件也可以被称为第一元件。本文所提供的任何以及所有实例或示例性语言(“例如”、“如”等)的使用仅意图更好地说明本发明的实施例,并且除非另外要求,否则不会对本发明的范围施加限制。
现有技术中,大多数工控组态软件都有脚本功能,可以让用户自定义程序实现特定的计算或控制逻辑,增强工控组态软件的灵活性和扩展性。大多数组态软件脚本不具备动态创建对象的功能,也不支持自定义类型,仅仅是基本的操作逻辑,所以学起来和编程相比要简单的多,主要是在描述你的操作行为。所有脚本和语言都有最基本的运算语法,本质几乎没什么差别,主要是基于不同的语言语法规则,写法上有区别。基本逻辑运算,加减乘除赋值,布尔逻辑,位逻辑,条件判断if,条件循环while,次数限定循环for,也就这些,很多脚本中连自定义函数概念都没有,统统是某事件下的执行脚本。以下简单介绍一下当今世界上流行的监控组态软件的脚本实现方法:
1.iFix采用VBA实现脚本功能
在IFIX里面一个按钮实现启动停止用VBA怎么写?
首先,你的PLC或PAC控制电机或其他设备的启动停止方式必须是自保持型的,也就是一个点到控制设备启动,停止的,例如,该点为1,启动设备,该点为0,停止设备。
其次,通过OPC驱动连接那个PLC或PAC上的那个点,并在IFIX实时数据库中建立个变量联系起来,假设该变量名为StartPoint。
最后,画面上建立一个按钮,在点击事件中写:
If StartPoint=1then
StartPoint:=0
else
StartPoint:=1
end if
2.WinCC采用C语言实现脚本
求三个测点的平均值并赋值给一个新的测点,脚本如下:
3.WebAccess丰富的脚本语言
WebAccess目前支持TclScript、VBScript和Jscript三种脚本语言,方便不同用户的使用选择。TclScript脚本语言是建立在开放性源编程语言Tcl基础上,支持所有8.4版本以上的嵌入式Tcl指令。VBScript和Jscript是基于微软的VBScript和Jscript之上脚本语言。WebAccess为TCL脚本提供了强大的函数库供用户自行编程。示例:
伟诚监控组态软件以前的版本虽然也支持用户自定义计算模块或控制逻辑,但都是采用编译型语言VC6或VB6,利用微软的ActiveX COM组件编程接口,事先编译为目标码,同时,软件提供一套专门的接口和方法,实现与测点实时数据库的交互,计算程序是以动态链接库(.DLL)的方式载入的,不支持系统运行状态下的在线动态编程修改和调试,没有日志记录,对各个计算程序模块的执行错误和异常缺少处理和反馈,程序源代码风格对最终用户也不太友好,更不支持其他的编程语言,用户使用起来不太方便,急需改进。
本发明实施例应用于Web化物联网远程监控组态软件,实时计算调度程序根据系统配置的实时计算模块组态信息,使用Redis测点实时数据库和MQTT消息队列作为数据输入输出交换区,定时或靠事件触发执行计算模块中定义的脚本程序(支持符合JSR233标准脚本语言规范的多种通用脚本语言,例如:JavaScript、AppleScript、Groovy、Jelly、PHP、Python、Ruby、Scala、JRuby、Jython和Velocity等),对测点数据进行计算,再将计算结果回写到Redis测点实时数据库中。若实时数据有发生变化,则发布消息到MQTT消息队列,以便通知其它模块进行后续事件驱动处理。从而实现了工业自动化控制系统中对大量实时数据的快速获取、高速计算、实时输出等功能。
术语解释
Redis(Remote Dictionary Server):即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
MQTT:是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。
JavaScript(简称“JS”):是一种具有函数优先的轻量级,解释型或即时编译型的高级编程语言。虽然它是作为开发Web页面的脚本语言而出名的,但是它也被用到了很多非浏览器环境中,JavaScript基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式和声明式(如函数式编程)风格。
JRuby:是面向Ruby、基于Java虚拟机(JVM)的一种解释程序,它结合了Ruby语言的简易性和功能强大的JVM的执行机制,包括与Java库全面集成。
Vicson:珠海伟诚科技股份有限公司的英文简称。
VMCS:伟诚Web化物联网远程监控组态软件的英文简称。
参照图1,本发明实施例的实时计算和数据交互方法包括以下步骤:读取计算模块配置信息;根据计算模块配置信息,读取数据库中的计算脚本内容或读取计算脚本文件;读取测点实时数据库中的测点实时数据;执行计算脚本,对测点实时数据进行计算,将计算结果回写到测点实时数据库;当测点实时数据发生变化,发布测点数据更新消息到MQTT消息队列。
参照图3,本发明实施例的实时计算和数据交互系统包括:脚本库,用于存储计算脚本;计算模块,包括一个脚本文件或一段数据库的脚本内容;计算调度模块,用于读取计算模块配置信息,根据所述计算模块配置信息,读取数据库中的计算脚本内容或读取计算脚本文件;读取测点实时数据库中的测点实时数据,并执行所述计算脚本,对所述测点实时数据进行计算,将计算结果回写到所述测点实时数据库;测点实时数据库,用于存储测点实时数据;MQTT消息队列,用于存储当测点实时数据发生变化时发布的测点数据更新消息。
以下结合图3详细说明本发明实施例。
(一)计算模块的配置信息
计算模块配置信息,存储着要执行的计算的相关信息,包括计算模块的编码、脚本的类型、要执行的计算脚本及其方法名称、重复执行的时间间隔或有数据变化的触发测点、启用标志等信息。本方法使用关系型数据库(例如SQL Server,MySql)存储这些配置信息。
(二)计算脚本
计算脚本是实际执行计算逻辑的模块。计算脚本可以是存储在数据库配置信息的SCRIPT_CONTENT字段的文本,也可以是存储在磁盘上的脚本文件。计算脚本支持多种脚本语言,例如JavaScript,JRuby等。输入输出变量按照指定格式编写,就会被自动识别,格式为Tag_{测点编码}.[dataValue|dataStatus|dataStr]。脚本返回值类型为字符串,若为“OK”,则为正常;否则,为错误信息;每一个脚本都是单独的线程在执行,性能高效。
示例:
(三)Redis中的测点实时数据库
测点数据采集模块会不断地读取到各个测点的实时数据,存放到Redis数据库中。计算模块从Redis中读取输入数据,计算结束后,回写到Redis测点实时数据库中。在Redis中,采用Hashmap来存储所有测点实时数据,测点编码作为Field的Key键值,Value值为以下结构定义的JSON序列化字符串:
(四)MQTT消息队列
MQTT用于计算模块与其它模块进行消息发送和订阅通信。当计算结束后,若实时数据有变化,则将消息发布到MQTT消息队列中,通讯模块中的信号输出处理程序会通过I/O设备驱动程序自动输出对应信号。
计算模块也可以订阅监听配置的指定测点,若有这些测点的实时数据变化消息,会自动触发对应的脚本执行。
测点数据更新消息格式定义如下:
示例:
MQTT消息主题:/ELVMS/V1/tags/374786_A_8238_1_R/data/json
MQTT消息内容:
(五)脚本模板及其变量定义
脚本中可定义以下变量:
{Tag:测点变量名}:测点对象;
{Param:参数变量名}:参数;
示例:
(六)总体流程
参照图2和图3,本实施例的方法总体流程包括以下步骤:
1)脚本的测点数值输出要写入测点实时数据库,若测点实时信息有变化,要将消息发布到MQTT消息队列;
2)计算调度程序读取计算相关配置信息,并按照时间调度或MQTT事件驱动执行脚本库中的指定脚本;
3)采用javax.script实现脚本库中的脚本文件(支持多种类型的脚本语言,默认为JavaScript脚本),每个脚本文件中可以包含多个函数方法,每个脚本方法可以定义自己的计算周期或触发事件配置;
4)每个计算模块可以是一个脚本文件,也可以是数据库字段内容,输入参数和输出参数通过测点实时对象变量(来源于测点实时数据库)实现,只能用到测点实时对象的dataValue、dataStatus、dataStr属性,计算调度程序,自动遍历并识别计算模块中的输入和输出测点,然后,按照以下方法:
ScriptEngine.put("Tag_{测点编码}",测点编码对应的实时测点对象)
逐个传入所有变量(类型为测点实时对象),以便后续执行ScriptEngine.eval()进行评估校验,执行.InvokeFunction()方法进行计算,输出只能修改输出测点对象的dataValue、dataStatus、dataStr三个属性,脚本返回值类型为字符串,若为“OK”,则为正常;否则,为错误信息;计算调度程序根据返回信息来记录日志,若执行正常,则不用记录日志(错误恢复后也要记录);
示例:ELVMS项目一个Feeder采集不到R馈线电流,用另外一个Feeder的R馈线电流替代,脚本为:
function main(){
Tag_374786_A_8238_1_R.dataValue=Tag_374786_B_8238_1_R.dataValue;
Tag_374786_A_8238_1_R.dataStr=Tag_374786_B_8238_1_R.dataValue+“*”;
return“OK”;
}
5)内存计算要高效,最好支持毫秒级运算,可以考虑多线程并行计算。
6)最终生成一个独立的依赖OpenJDK 8+的JAVA计算程序;
7)脚本有语法错误,也要记录日志;
8)为了确保没有XSS等恶意代码攻击的安全漏洞,要对脚本的上传和修改有严格的权限保护,必要时,在执行脚本前,要对其内容进行分析识别,不允许包含恶意代码,若有,则不执行,并记录日志;
9)后续会陆续积累常用的方法和脚本模板,使得脚本编写更加容易、简捷。
(七)计算程序脚本执行状态监控
提供一个UI界面,可以实时监控所有计算程序脚本方法执行情况,包括:状态、上次成功执行的时间、异常错误信息等。
本发明实施例包括以下优点:
1)采用Java自带的ScriptEngine接口,支持符合JSR233标准脚本语言规范的多种通用脚本语言;
2)引入了Redis实时网络数据库和MQTT消息队列,通过自动识别和处理脚本中的测点变量,实现了与脚本的简单输入输出数据接口;
3)脚本可定时执行,也可以靠指定测点数据变化事件触发执行;
4)通过调试开关控制是否是调试模式,在调试模式下,计算程序将不会将任何计算数据结果写到测点实时数据库和MQTT消息队列,但可以通过UI界面呈现计算结果;
5)支持自定义脚本模板,脚本中可以通过不同标识分别定义测点变量和参数变量,并对各种变量的名称、描述、数据类型、高低限值、默认值、计量单位等进行配置。通过动态图形化UI界面,根据选定的测点和输入的参数数值,动态生成需要的脚本。
目前国内外的主流工业监控组态软件(如:iFix、WinCC、组态王等)都支持脚本功能,经过一段时间的艰苦学习和实验,通过编写复杂的脚本程序和配置,虽然也可以达到类似计算功能效果,但利用的技术普遍都比较陈旧,学习代价很大,也难以写出性能更加高效、支持海量测点和计算功能的脚本,服务器最多支持双机热备,不支持网络集群服务器和云平台,而我们VMCS软件由于基于最新的微服务架构和云平台,充分利用当今最先进的并行计算技术和成熟稳定的中间件(如:Redis实时数据库和MQTT消息队列),在大数据、云平台、物联网等领域,有非常大的优势。
应当认识到,本发明实施例中的方法步骤可以由计算机硬件、硬件和软件的组合、或者通过存储在非暂时性计算机可读存储器中的计算机指令来实现或实施。所述方法可以使用标准编程技术。每个程序可以以高级过程或面向对象的编程语言来实现以与计算机系统通信。然而,若需要,该程序可以以汇编或机器语言实现。在任何情况下,该语言可以是编译或解释的语言。此外,为此目的该程序能够在编程的专用集成电路上运行。
此外,可按任何合适的顺序来执行本文描述的过程的操作,除非本文另外指示或以其他方式明显地与上下文矛盾。本文描述的过程(或变型和/或其组合)可在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可作为共同地在一个或多个处理器上执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)、由硬件或其组合来实现。所述计算机程序包括可由一个或多个处理器执行的多个指令。
进一步,所述方法可以在可操作地连接至合适的任何类型的安卓计算平台中实现。本发明的各方面可以以存储在非暂时性存储介质或设备上的机器可读代码来实现,无论是可移动的还是集成至计算平台,如硬盘、光学读取和/或写入存储介质、RAM、ROM等,使得其可由可编程计算机读取,当存储介质或设备由计算机读取时可用于配置和操作计算机以执行在此所描述的过程。此外,机器可读代码,或其部分可以通过有线或无线网络传输。当此类媒体包括结合微处理器或其他数据处理器实现上文所述步骤的指令或程序时,本文所述的发明包括这些和其他不同类型的非暂时性计算机可读存储介质。当根据本发明所述的方法和技术编程时,本发明还可以包括计算机本身。
计算机程序能够应用于输入数据以执行本文所述的功能,从而转换输入数据以生成存储至非易失性存储器的输出数据。输出信息还可以应用于一个或多个输出设备如显示器。在本发明优选的实施例中,转换的数据表示物理和有形的对象,包括显示器上产生的物理和有形对象的特定视觉描绘。
以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相同的手段达到本发明的技术效果,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。在本发明的保护范围内其技术方案和/或实施方式可以有各种不同的修改和变化。
Claims (6)
1.一种实时计算和数据交互方法,应用于远程监控组态系统,其特征在于,所述方法包括以下步骤:
读取计算模块配置信息,所述计算模块配置信息包括:计算模块的编码、脚本的类型、要执行的计算脚本及其方法名称、启用标志以及重复执行的时间间隔或有数据变化的触发测点;根据所述重复执行的时间间隔,定时执行计算模块中定义的脚本程序和/或根据所述触发测点,触发执行计算模块中定义的脚本程序;
通过动态图形化UI界面,根据选定的脚本模板、测点和参数,动态自动生成脚本文件;且支持脚本文件的在线更新、新增、删除;脚本内容是支持符合JSR233标准脚本语言规范的多种通用脚本语言;
根据所述计算模块配置信息,读取数据库中的计算脚本内容或读取计算脚本文件;
读取测点实时数据库中的测点实时数据;
从测点实时数据库中获取测点实时对象变量,基于测点实时对象变量得到输入参数和输出参数;自动遍历所有计算模块配置信息,自动分析脚本内容识别出计算脚本中的输入和输出测点,执行计算脚本,通过脚本引擎的方法逐个传入所有类型为测点实时对象的变量,修改所述测点实时对象的属性并输出,所述属性包括dataValue、dataStatus、dataStr;
执行所述计算脚本,对所述测点实时数据进行计算,将计算结果回写到所述测点实时数据库;当脚本执行异常,根据脚本返回值记录日志;
当测点实时数据发生变化,发布测点数据更新消息到MQTT消息队列;
其中,所述计算模块配置信息至少包括脚本内容或脚本文件,脚本执行的周期信息或触发事件配置信息。
2.根据权利要求1所述的实时计算和数据交互方法,其特征在于,所述测点实时数据库为Redis测点实时数据库,所述Redis测点实时数据库,采用Hashmap来存储所有测点实时数据,以测点编码作为Key键值,Value值为JSON序列化字符串。
3.根据权利要求1所述的实时计算和数据交互方法,其特征在于,测点数据更新消息包括消息主题和消息内容,所述消息内容至少包括转换后的工程计量数值。
4.根据权利要求1所述的实时计算和数据交互方法,其特征在于,所述方法还包括:
设置调试模式,在调试模式下,执行所述计算脚本后,将计算结果通过UI界面呈现而不将计算结果写到所述测点实时数据库和MQTT消息队列。
5.一种实时计算和数据交互系统,应用于远程监控组态系统,其特征在于,所述实时计算和数据交互系统包括:
脚本库,用于存储计算脚本;
计算模块,包括一个脚本文件或一段数据库的脚本内容;
计算调度模块,用于读取计算模块配置信息,根据所述计算模块配置信息,读取数据库中的计算脚本内容或读取计算脚本文件;读取测点实时数据库中的测点实时数据,从测点实时数据库中获取测点实时对象变量,基于测点实时对象变量得到输入参数和输出参数;自动遍历所有计算模块配置信息,自动分析脚本内容识别出计算脚本中的输入和输出测点,执行计算脚本,通过脚本引擎的方法逐个传入所有类型为测点实时对象的变量,修改所述测点实时对象的属性并输出,所述属性包括dataValue、dataStatus、dataStr;并执行所述计算脚本,对所述测点实时数据进行计算,将计算结果回写到所述测点实时数据库;当脚本执行异常,根据脚本返回值记录日志;所述计算模块配置信息包括:计算模块的编码、脚本的类型、要执行的计算脚本及其方法名称、启用标志以及重复执行的时间间隔或有数据变化的触发测点;根据所述重复执行的时间间隔,定时执行计算模块中定义的脚本程序和/或根据所述触发测点,触发执行计算模块中定义的脚本程序;
测点实时数据库,用于存储测点实时数据;
MQTT消息队列,用于存储当测点实时数据发生变化时发布的测点数据更新消息;
其中,所述计算模块配置信息至少包括脚本内容或脚本文件,脚本执行的周期信息或触发事件配置信息;
所述计算调度模块还用于通过动态图形化UI界面,根据选定的脚本模板、测点和参数,动态自动生成脚本文件;且支持脚本文件的在线更新、新增、删除;脚本内容是支持符合JSR233标准脚本语言规范的多种通用脚本语言。
6.一种计算机可读存储介质,其上储存有程序指令,所述程序指令被处理器执行时实施如权利要求1至4中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010804943.5A CN112148270B (zh) | 2020-08-12 | 2020-08-12 | 实时计算和数据交互方法、系统及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010804943.5A CN112148270B (zh) | 2020-08-12 | 2020-08-12 | 实时计算和数据交互方法、系统及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112148270A CN112148270A (zh) | 2020-12-29 |
CN112148270B true CN112148270B (zh) | 2024-05-14 |
Family
ID=73887903
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010804943.5A Active CN112148270B (zh) | 2020-08-12 | 2020-08-12 | 实时计算和数据交互方法、系统及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112148270B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113014617A (zh) * | 2020-12-31 | 2021-06-22 | 新奥数能科技有限公司 | 一种基于云端数据管理平台的网关配置方法及装置 |
CN112965905B (zh) * | 2021-03-11 | 2024-06-18 | 京东科技信息技术有限公司 | 数据测试方法、装置、设备及存储介质 |
CN113434519B (zh) * | 2021-08-26 | 2021-12-10 | 西安热工研究院有限公司 | 一种测点标签名更新方法、系统及储存介质 |
CN115599770B (zh) * | 2022-10-25 | 2023-07-28 | 北京力控元通科技有限公司 | 一种数据计算脚本系统 |
CN115981610B (zh) * | 2023-03-17 | 2023-06-02 | 科大国创软件股份有限公司 | 一种基于Lua脚本实现的光伏储能系统的综合运算平台 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102495594A (zh) * | 2011-11-14 | 2012-06-13 | 武汉理工大学 | 一种远程监测系统和方法 |
CN103150408A (zh) * | 2013-04-02 | 2013-06-12 | 山东鲁能软件技术有限公司 | 实时数据库中根据点名找到数据库并访问的系统与方法 |
CN109814478A (zh) * | 2019-01-14 | 2019-05-28 | 浙江工业大学 | 基于iOpenWorks的虚拟调试系统 |
CN110347399A (zh) * | 2019-05-31 | 2019-10-18 | 深圳绿米联创科技有限公司 | 数据处理方法、实时计算系统以及信息系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100153351A1 (en) * | 2008-12-16 | 2010-06-17 | Yung Alex P | Techniques for real-time database processing |
-
2020
- 2020-08-12 CN CN202010804943.5A patent/CN112148270B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102495594A (zh) * | 2011-11-14 | 2012-06-13 | 武汉理工大学 | 一种远程监测系统和方法 |
CN103150408A (zh) * | 2013-04-02 | 2013-06-12 | 山东鲁能软件技术有限公司 | 实时数据库中根据点名找到数据库并访问的系统与方法 |
CN109814478A (zh) * | 2019-01-14 | 2019-05-28 | 浙江工业大学 | 基于iOpenWorks的虚拟调试系统 |
CN110347399A (zh) * | 2019-05-31 | 2019-10-18 | 深圳绿米联创科技有限公司 | 数据处理方法、实时计算系统以及信息系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112148270A (zh) | 2020-12-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112148270B (zh) | 实时计算和数据交互方法、系统及介质 | |
US10810110B1 (en) | Methods, systems, and articles of manufacture for testing web services using a behavior-driven development domain specific language framework | |
CN108885545B (zh) | 用于实时数据流编程语言的工具和方法 | |
CN108351636B (zh) | 工程设计工具、系统及模块 | |
Salvaneschi et al. | Context-oriented programming: A software engineering perspective | |
US8818346B2 (en) | Wireless device with a control engine using functional block programming | |
CN110990019B (zh) | 一种Java类分析方法、装置、存储介质及电子设备 | |
CN109876445B (zh) | 一种基于行为树的高解耦引导方法及系统 | |
US10296296B2 (en) | Integrated development environment for analytic authoring | |
CN111459889A (zh) | 一种用于物联网平台的设备数据模型生成方法和装置 | |
CN110603527A (zh) | 服务器侧生产代码的有条件调试 | |
US20170235670A1 (en) | Method for tracking high-level source attribution of generated assembly language code | |
Naujokat et al. | Domain-specific code generator modeling: a case study for multi-faceted concurrent systems | |
CN106293687B (zh) | 一种打包流程的控制方法,及装置 | |
Bouraqadi et al. | Test-driven development for generated portable Javascript apps | |
JP2014228990A (ja) | 制御プログラム作成装置および制御プログラム作成方法 | |
Torres | Increasing the feedback on IoT development in Node-RED | |
JP5045059B2 (ja) | 制御プログラム自動作成装置 | |
CN112988136B (zh) | 一种用户界面编辑方法及装置 | |
CN111832735B (zh) | 基于模板来执行机器学习过程的方法和系统 | |
Brzeziński | Tiny TTCN-inspired testing tools for experimenting with hybrid IoT systems | |
Prastowo | Toward C++ as a Platform for Language-Oriented Programming: On the Embedding of a Model-Based Real-Time Language | |
Krauweel | Concurrent and asynchronous JavaScript programming using Reo | |
CN116225478A (zh) | 一种依赖管理方法、装置、电子设备及存储介质 | |
Schatz et al. | Trace-guided synthesis of reactive behavior models of programmable logic controllers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |