基于IronPython脚本语言的多业务联动实现方法

文档序号:6357581阅读:387来源:国知局
专利名称:基于IronPython脚本语言的多业务联动实现方法
技术领域
本发明涉及智能建筑控制领域的流程控制技术。尤其涉及一种多业务系统的联动 控制技术。
背景技术
智能建筑中通常存在多种系统,比如视频系统,配电自动化系统,BA系统,智能照 明系统,火灾报警系统,安防系统等,通常这些系统都独立存在,当某一事件发生时,对应的 监控系统可以做出反应但是却无法和相关系统产生联动。如何突破这种各个子系统分割运 行的瓶颈,使智能建筑内的硬件平台、软件平台与应用系统之间,以及系统、信息、组织与管 理之间实现高度融合和协调运行,已经成为智能建筑行业乃至社会各界普遍关注的焦点。 为了解决这一问题,各个厂家都花费了很多精力,不仅需解决多个复杂系统以及多种控制 协议之间的互联性和互操作性问题,而且要解决用户的二次开发问题。通常对于多系统联 动的处理都是通过在原代码添加规则代码的方式完成,这样不但复杂而且容易造成软件的 不稳定,而且很多现场的联动规则会发生变化,通常厂家只能通过修改源代码完成客户的 需求,耗时耗力。

发明内容
有鉴于此,本发明提供一种多业务系统联动实现的方法,有效解决多系统联动问 题,以及多系统联动规则发生变化后,用户的二次开发问题。本发明的核心思想为通过PythonEngine脚本引擎实现脚本动态加载和运行,完 成脚本和运行环境的交互,能灵活适合多变的业务场景达到流程控制的目的。本发明采用以下解决方案解决上述问题一种基于IronPython脚本语言的多业务联动实现方法,先在C#编写的运行 环境与IronPython之间搭建一个连接层,能够理解来自C#与IronPython的变量与函 数,使他们能够互相通讯;再使用IronPyhon语言定义多系统的联动逻辑控制脚本,通过 IronPython脚本引擎实现脚本动态加载和运行,由联动逻辑控制脚本实现逻辑控制,实现 多系统联动。所述连接层的创建步骤包括先创建脚本运行环境kriptRuntime ;该kriptRuntime是指脚本的运行时间定 义;再构建一个执行上下文,用来保存需要C#编写的运行环境与IronPython共享的 变量;这些变量对联动控制有意义,并且在C#编写的运行环境和IronPython之间共享;然后创建PythonEngine引擎,用来解析和执行动态语言代码;最后将以上封装成类,作为IronPython和C#编写的运行环境数据共享的连接层 使用。所述联动逻辑控制脚本的实现步骤包括
步骤10 创建PY脚本文件;步骤20 在PY脚本文件中,根据事件发生时,子系统如何动作以及动作的先后顺 序,使用IronPython语言编写控制脚本,用来控制子系统相应的动作;步骤30 将保存好的脚本文件拷贝到指定的目录下,等待脚本引擎加载;步骤40 =IronPython脚本引擎加载并运行指定目录下的脚本文件;步骤50 加载完成,脚本在C#主程序的运行环境(即宿主程序运行环境)中运行。所述步骤20还包括=IronPython脚本引擎将运行环境中的控制变量加入变量 字典类,变量字典类中的控制变量可以在C#主程序的运行环境(即宿主程序运行环境和 IronPython脚本之间共享。所述步骤40包括步骤100 创建IronPython脚本引擎;步骤200 遍历制定目录下的脚本文件;步骤300 加载脚本文件并运行。所述步骤50还包括:C#主程序的运行环境(即宿主程序运行环境)根据变量字 典中的控制变量当前的状态或值进行逻辑条件判断,若条件成立,根据在脚本中定义的事 件发生时,子系统如何动作以及动作的先后顺序,通过运行环境提供的子系统动作接口函 数完成操作。与现有技术相比,本方法有效解决多系统联动问题,以及多系统联动规则发生变 化后,用户的二次开发问题。


图1是本发明中的告警系统,视频系统与SCADA系统联动流程图
具体实施例方式下面参考附图结合实例对本发明做进一步的描述IronPyhon脚本很容易被C#代码调用,同时又很容易调用C#函数,但是 IronPython脚本不能编译成二进制文件,导致C#与IronPython之间不能直接进行通 讯,所以在C#编写的运行环境与IronPython之间搭建一个连接层,能够理解来自C#与 IronPython的变量与函数,使他们能够互相通讯。IronPython使用PythonEngine引擎实现连接层,使得IronPython脚本可以和C# 编写的运行环境进行交互,IronPython运行在PythonEngine引擎上,所以引擎能访问它的 运行环境,IronPython可以操作运行环境中的堆栈结构。创建连接层的第一步是创建脚本运行环境(kriptRimtime),这是整个执行过程 的起点,接着构建一个执行上下文,用来保存需要共享的变量。运行环境和脚本可以通过创 建不同的ScriptScope来提供多个数据隔离的执行上下文,最后创建PythonEngine引擎, 用来解析和执行动态语言代码。将以上功能封装成类,作为IronPython和运行环境数据共 享的连接层使用。联动控制脚本的编写主要用来实现多系统的联动逻辑控制多系统联动控制逻辑, 通过运行环境和脚本之间共享的变量,根据事件发生时,子系统如何动作以及动作的先后顺序,使用IronPython语言编写控制脚本,保存为PY脚本文件,由IronPython脚本引擎加 载并运行。加载完成,脚本在运行环境中运行,运行环境根据变量字典中的控制变量当前的 状态或值进行逻辑条件判断,若条件成立,根据在脚本中定义的事件发生时,子系统如何动 作以及动作的先后顺序,通过运行环境提供的子系统动作接口函数完成操作。当现场逻辑 控制要求发生变化时,只要修改PY脚本文件就可以完成逻辑控制的修改,完成二次开发, 不需要修改软件核心代码。IronPython是一种开放源代码的脚本编程语言,这种脚本语言特别强调开发速度 和代码的清晰程度,IronPython和.Net框架集无缝集成。它可以用来开发各种程序,从简 单的脚本任务到复杂的、面向对象的应用程序都有大显身手的地方。使用IronPython脚本语言建立多业务系统联动机制的方法,在脚本文件中编写 多系统联动控制逻辑,通过PythonEngine脚本引擎实现脚本动态加载和运行,完成脚本和
运行环境的交互。以下展示了一份控制脚本文件实例
权利要求
1.一种基于IronPython脚本语言的多业务联动实现方法,其特征是先在C#编写的 运行环境与IronPython之间搭建一个连接层,能够理解来自C#与IronPython的变量与 函数,使他们能够互相通讯;再使用IronPyhon语言定义多系统的联动逻辑控制脚本,通过 IronPython脚本引擎实现脚本动态加载和运行,由联动逻辑控制脚本实现逻辑控制,实现 多系统联动。
2.根据权利要求1所述的基于IronPython脚本语言的多业务联动实现方法,其特征是 所述连接层的创建步骤包括先创建脚本运行环境kriptRuntime ;该kriptRuntime是指脚本的运行时间定义; 再构建一个执行上下文,用来保存需要C#编写的运行环境与IronPython共享的变量;然后创建PythonEngine引擎,用来解析和执行动态语言代码;最后将以上封装成类,作为IronPython和C#编写的运行环境数据共享的连接层使用。
3.根据权利要求1所述的基于IronPython脚本语言的多业务联动实现方法,其特征是 所述联动逻辑控制脚本的实现步骤包括步骤10:创建PY脚本文件;步骤20 在PY脚本文件中,根据事件发生时,子系统如何动作以及动作的先后顺序,使 用IronPython语言编写控制脚本,用来控制子系统相应的动作;步骤30 将保存好的脚本文件拷贝到指定的目录下,等待脚本引擎加载;步骤40 =IronPython脚本引擎加载并运行指定目录下的脚本文件;步骤50 加载完成,脚本在C#主程序的运行环境即宿主程序运行环境中运行。
4.根据权利要求2所述的基于IronPython脚本语言的多业务联动实现方法,其特征是 所述步骤20还包括=IronPython脚本引擎将运行环境中的控制变量加入变量字典类,变量 字典类中的控制变量可以在C#主程序的运行环境即宿主程序运行环境和IronPython脚本 之间共享。
5.根据权利要求2所述的基于IronPython脚本语言的多业务联动实现方法,其特征是 所述步骤40包括步骤100 创建IronPython脚本引擎; 步骤200 遍历制定目录下的脚本文件; 步骤300 加载脚本文件并运行。
6.根据权利要求4所述的基于IronPython脚本语言的多业务联动实现方法,其特征是 所述步骤50还包括:C#主程序的运行环境即宿主程序运行环境根据变量字典中的控制变 量当前的状态或值进行逻辑条件判断,若条件成立,根据在脚本中定义的事件发生时,子系 统如何动作以及动作的先后顺序,通过运行环境提供的子系统动作接口函数完成操作。
全文摘要
本发明公开了一种基于IronPython脚本语言的多业务联动实现方法,本发明充分利用了开源语言IronPython与.Net框架集成的特点。通过IronPython脚本引擎实现脚本动态加载和运行,完成脚本和宿主语言环境的数据交互。本发明通过IronPython脚本语言编写多系统的联动逻辑脚本,调用通用子系统函数库实现对象的操作。可根据现场需求灵活修改联动规则并立即生效,不需要修改软件核心程序,消除信息孤岛,以适应多变的联动业务场景。
文档编号G06F9/44GK102141917SQ201110084488
公开日2011年8月3日 申请日期2011年4月2日 优先权日2011年4月2日
发明者杨毅, 王伟江, 雷贤忠 申请人:南京天溯自动化控制系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1