一种基于时间与事件混合驱动的分布式控制系统及方法与流程

文档序号:17258242发布日期:2019-03-30 09:29阅读:212来源:国知局
一种基于时间与事件混合驱动的分布式控制系统及方法与流程

本发明涉及计算机领域,尤其涉及一种基于时间与事件混合驱动的分布式控制系统及方法。



背景技术:

现有工业自动化系统中可编程逻辑控制器使用轮询式计算模型,即每台可编程逻辑控制器按照读取传感器输入数据、执行所有用户程序和刷新执行器输出的顺序集中分批处理。用户程序以模块的形式储存,并且通过统一的接口来提升代码的重复利用率与执行效率。轮询式控制方法在规定时间内完成所有程序的执行,当在规定轮询周期内无法完成执行任务时,控制器会发出超时警报。当分布式控制系统中拥有多台可编程逻辑控制器时,控制器之间通过消息机制连接。当执行轮询开始时,从其他控制器收到的消息与其他输入数据一起读入用户程序内。当执行周期结束时,消息将会发送给其他控制器。现有的轮询式执行机制存在较多的缺点,例如:1.执行效率低下,所有代码在每个循环下必须全部执行一次,导致执行时间长;2.消息机制会受到网络的影响,从而导致先发送的信息无法确保在同一执行周期内抵达目标控制器,信息顺序的混乱容易造成多控制器之间通讯无法同步,从而使执行结果的正确率下降;3.本地同步(轮询)全局异步(消息)的执行方式会造成不确定性,无法预测执行结果,从而造成无法满足控制系统的实时性。

因此,本领域的技术人员致力于开发一种基于时间与事件混合驱动的分布式控制系统及方法,可实现选择性执行必须的用户程序代码,提升执行效率;可确保多可编程控制器中消息传递顺序的正确性与时效性;可消除现有分布式控制系统执行的不确定性,提高执行结果的实时性与可预测性。



技术实现要素:

有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是现有工业自动化系统中采用轮询式计算模型的可编程逻辑控制器,其执行效率低下;消息机制会受到网络的影响,造成多控制器之间通讯无法同步,控制器执行方式的不确定性增加,无法满足分布式控制系统的实时性要求。

为实现上述目的,本发明提供了一种基于时间与事件混合驱动的分布式控制系统,其特征在于,包括两个或两个以上可编程逻辑控制器;所述可编程逻辑控制器之间的连接为并列连接;所述可编程逻辑控制器包括程序块、事件缓存池、时钟;所述程序块包括功能块,事件源功能块,终点功能块;所述事件源功能块被配置为创建事件,所述功能块被配置为处理所述事件,所述终点功能块被配置为注销所述事件;所述功能块包括功能用户代码模块,功能输入端,功能输出端;所述事件源功能块包括源用户代码模块、源输出端;所述终点功能块包括终点用户代码模块、终点输入端;所述事件缓存池与所述功能输入端之间、所述事件缓存池与所述功能输出端之间、所述事件缓存池与所述源输出端之间、所述事件缓存池与所述终点输入端通过所述事件连接;所述功能输入端,所述功能输出端,所述源输出端和所述终点输入端的接口类型相同且与所述事件匹配。

进一步地,所述事件包括时间戳和变量,所述时间戳包括创建时间,最迟执行完成时间,最后执行时间和优先级;所述创建时间由所述源功能块创建,所述创建时间在所述事件整个存活期中无法修改;所述最迟执行完成时间被设置为所述事件必须完成的最迟时间节点;所述最后执行时间被设置为最近一次所述功能块处理完成所述事件的时间;所述变量包括变量值,所述变量值的数量大于等于0。

进一步地,所述可编程逻辑控制器之间通过时间同步机制配置所有所述可编程逻辑控制器的本地时间相同,所述可编程逻辑控制器之间通过消息传递所述事件。

进一步地,所述事件缓存池被配置为接收所述功能输出端和所述源输出端的所述事件,对接收的全部所述事件进行排序和存储,发送所述事件给对应的所述功能输入端或所述终点输入端;一个所述事件可以被传递给一个及以上的所述功能块,且一个所述功能块同时只能接收一个所述事件,如果所述事件被传递给2个及以上的所述功能块,则所述事件的所述优先级依据所述事件内定义的先后顺序被重新设置。

进一步地,所述事件的所述最迟执行完成时间可以设置为所述事件的所述创建时间加上所述可编程逻辑控制器的输入更新周期。

一种采用所述基于时间与事件混合驱动的分布式控制系统的分布式控制方法,包括如下步骤:

步骤1:采用所述事件源功能块创建所述事件,并将所述事件发送到所述事件缓存池;

步骤2:运用所述事件缓存池对所述分布式控制系统的全部所述事件进行控制。

进一步地,所述步骤1包括如下步骤:

步骤1.1:读取输入状态或消息缓存;

步骤1.2:判断输入状态是否发生变化或消息缓存是否不为空;如果是,则转步骤1.3;否则,转步骤1.1;

步骤1.3:读取输入变量或所述消息,根据读取的所述输入变量或所述消息创建所述事件,并将创建的所述事件传递给所述事件缓存池。

进一步地,所述步骤1.3中,如果创建的所述事件是依据所述消息创建的,则所述事件的所述最后执行时间被配置为所述源功能块读取所述消息的时间,所述事件的所述创建时间、所述最迟执行完成时间和所述优先级继承所述消息中的所述时间戳的相应内容。

进一步地,所述步骤2包括如下步骤:

步骤2.1:读取所述事件缓存池状态;

步骤2.2:所述事件缓存池的状态为空则转步骤2.1,否则转步骤2.3;

步骤2.3:读取所述事件缓存池中第一位置的所述事件,将读取的所述事件传递给对应的所述功能块或所述终点功能块;

步骤2.4:如果所述步骤2.3中接收所述事件的是所述终点功能块则转步骤2.5,否则转步骤2.6;

步骤2.5:移除所述事件缓存池的第一位置的已被传递的所述事件;判断所述事件是否需要发送所述信息,如果是,则发送所述消息,所述消息包括所述事件的所述时间戳的内容;如果否,则计算所述事件的最长执行时间,注销所述事件,所述最长执行时间为所述事件的所述最后执行时间减去所述创建时间;最后转所述步骤2.1;

步骤2.6:移除所述事件缓存池的第一位置的已被传递的所述事件;更新所述事件的所述时间戳;

步骤2.7:检查所述事件的剩余执行时间是否小于0,如果小于0则转步骤2.8,否则转步骤2.9,所述剩余执行时间为所述事件的所述最迟执行完成时间减去所述最后执行时间;

步骤2.8:发出计算超时警报,转所述步骤2.1;

步骤2.9:所述功能块处理完所述事件后,将所述事件传入所述事件缓存池,将所述事件缓存池内所述时间戳相同的所述事件合并,之后对所述事件缓存池内的全部所述事件重新排序,最后转所述步骤2.1。

进一步地,所述步骤2.9中的所述事件的排序方法包括如下方法中的一种或几种的组合:

方法3.1:按照所述剩余执行时间的长短排序,所述剩余执行时间短的所述事件优先;

方法3.2:按照所述最迟执行完成时间的先后顺序排序,所述最迟执行完成时间靠前的所述事件优先;

方法3.3:按照所述事件的所述优先级的高低排序,所述优先级的高的所述事件优先。

与现有技术相比,通过本发明的实施,达到了以下明显的技术效果:

1、本发明的分布式控制系统及方法,无需依赖上位机或者主机,所有可编程控制器之间可以通过事件流顺序执行分布式逻辑,消除由于硬件性能不同对软件执行结果的影响;

2、本发明的分布式控制系统及方法通过使用时间与事件混合驱动的执行方法,可以准确测量所述事件的最长执行时间,根据最长执行时间来对所述事件的队列进行动态调整,确保所有任务能够在实时性要求内完成;

3、本发明的分布式控制系统及方法中的所述时间戳的设计可准确测量所述消息的传递时间,有效降低网络延迟对执行结果正确性造成的影响;

4、本发明的分布式控制系统及方法使用事件触发的执行方式,相比现有轮询式执行方式可大幅度提升执行效率,减少执行的时间。

以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。

附图说明

图1是本发明的一个较佳实施例的事件传递机制示意图;

图2是本发明的一个较佳实施例的功能块定义图;

图3是本发明的一个较佳实施例的多控制器间的事件传递机制示意图;

图4是本发明的一个较佳实施例的事件源功能块运作流程图;

图5是本发明的一个较佳实施例的事件处理机制流程图。

具体实施方式

以下参考说明书附图介绍本发明的多个优选实施例,使其技术内容更加清楚和便于理解。本发明可以通过许多不同形式的实施例来得以体现,本发明的保护范围并非仅限于文中提到的实施例。

实施例1:

如图1和图2所示,本发明提供一种基于时间与事件混合驱动的分布式控制系统包括两个可编程逻辑控制器;可编程逻辑控制器之间的连接为并列连接;可编程逻辑控制器包括程序块、事件缓存池、时钟;程序块包括功能块,事件源功能块,终点功能块;事件源功能块被配置为创建事件,功能块被配置为处理事件,终点功能块被配置为注销事件;功能块包括功能用户代码模块,功能输入端,功能输出端;事件源功能块包括源用户代码模块、源输出端;终点功能块包括终点用户代码模块、终点输入端;所述程序块可使用iec61131-3或者iec61499模块化封装;事件缓存池与功能输入端之间、事件缓存池与功能输出端之间、事件缓存池与源输出端之间、事件缓存池与终点输入端通过事件连接;功能输入端,功能输出端,源输出端和终点输入端的接口类型相同且与事件匹配,事件包括时间戳和变量,时间戳包括创建时间,最迟执行完成时间,最后执行时间和优先级;创建时间由源功能块创建,创建时间在事件整个存活期中无法修改;最迟执行完成时间被设置为事件必须完成的最迟时间节点,本实施例中,最迟执行完成时间设置为事件的创建时间加上可编程逻辑控制器的输入更新周期;最后执行时间被设置为最近一次所述功能块处理完成所述事件的时间;所述变量包括变量值,所述变量值的数量大于等于0;事件缓存池被配置为接收功能输出端和源输出端的事件,对接收的全部所述事件进行排序和存储,发送事件给对应的功能输入端或终点输入端;

事件源功能块创建事件后,传递给事件缓存池缓存,事件缓存池根将排在第一位的事件发送给事件指定触发的功能块或终点功能块,功能块处理完事件后,更新事件中的时间戳并输出事件到事件缓存池,终点功能块处理完事件后注销事件。

如图3所示,两个可编程逻辑控制器之间通过时间同步机制配置所有可编程逻辑控制器的本地时间相同,可编程逻辑控制器之间通过消息传递事件,消息包含被传递事件的时间戳内容。

本实施例中,单个事件可以被传递给一个及以上的功能块,且单个功能块同时只能接收一个事件,如果事件被传递给2个及以上的功能块时,事件的优先级依据事件内定义的先后顺序被重新设置。

一个功能块可以输出多个事件发送给事件缓存池,输出的多个事件按照逻辑中的先后触发顺序重置相应事件中的优先级。

当事件缓存池为空时,可编程控制器进入空闲状态,直到事件缓存池不为空为止。

本实施例中,采用本发明提供的基于时间与事件混合驱动的分布式控制系统的分布式控制方法包括如下步骤:

步骤1:采用事件源功能块创建事件,并将事件发送到事件缓存池;

步骤2:运用事件缓存池对分布式控制系统的全部事件进行控制。

如图4所示,步骤1中事件源功能块的工作流程包括如下步骤:

步骤1.1:读取可编程逻辑控制器的输入状态或消息缓存;

步骤1.2:判断输入状态是否发生变化或消息缓存是否不为空;如果是,则转步骤1.3;否则,转步骤1.1;

步骤1.3:读取输入变量或消息,根据读取的输入变量或消息创建事件,并将创建的事件传递给事件缓存池;如果创建的事件是依据消息创建的,则事件的最后执行时间被配置为源功能块读取消息的时间,事件的创建时间、最迟执行完成时间和优先级继承消息中的时间戳的相应内容。

如图5所示,步骤2包括如下步骤:

步骤2.1:读取事件缓存池状态;

步骤2.2:事件缓存池状态为空则转步骤2.1,否则转步骤2.3;

步骤2.3:读取事件缓存池中第一位置的事件,将读取的事件传递给对应的功能块或终点功能块;

步骤2.4:如果步骤2.3中接收事件的是终点功能块则转步骤2.5,否则转步骤2.6;

步骤2.5:移除事件缓存池的第一位置的已被传递的事件;判断事件是否需要发送信息,如果是,则发送消息,消息包括事件的时间戳的全部内容;如果否,则计算事件的最长执行时间,最后注销事件,最长执行时间为事件的最后执行时间减去创建时间;最后转步骤2.1;

步骤2.6:移除事件缓存池的第一位置的已被传递的事件;更新事件的时间戳;

步骤2.7:检查事件的剩余执行时间是否小于0,如果小于0则转步骤2.8,否则转步骤2.9,剩余执行时间为事件的最迟执行完成时间减去最后执行时间;

步骤2.8:发出计算超时警报,转步骤2.1;

步骤2.9:功能块处理完事件后,将事件传入事件缓存池,将事件缓存池内时间戳相同的事件合并,之后对事件缓存池内的全部事件重新排序,全部事件重新排序的方法为按照剩余执行时间的长短排序,剩余执行时间短的事件优先,当剩余执行时间相同时,按照事件的述优先级的高低排序,优先级的高的事件优先;最后转步骤2.1。

实施例2:

在实施例1的基础上,本发明提供的基于时间与事件混合驱动的分布式控制系统及方法可以运用到单独的可编程逻辑控制器中。

实施例3:

在实施例1的基础上,步骤2.9中的事件缓存池内的全部事件重新排序的方法为按照最迟执行完成时间的先后顺序排序,最迟执行完成时间靠前的事件优先,当最迟执行完成时间相同时,按照事件的述优先级的高低排序,优先级的高的事件优先。

实施例4:

在实施例1的基础上,单个功能块也可以配置为可以同时接收一个及以上事件,当单个功能块同时接收两个及以上事件时,被同时接收的事件在单个功能块中采用多线程并行执行的方式。

以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1