可编程逻辑控制器及其事件驱动编程方法

文档序号:6294105阅读:153来源:国知局
可编程逻辑控制器及其事件驱动编程方法
【专利摘要】本发明提供一种可编程逻辑控制器的事件驱动编程方法,包括:登记至少一个待检测事件;存储与该至少一个待检测事件分别对应的至少一个事件处理程序段;检测该至少一个待检测事件的发生;将检测到的事件放入事件队列;从事件队列提取事件;执行与提取的事件对应的事件处理程序段。
【专利说明】可编程逻辑控制器及其事件驱动编程方法
【技术领域】
[0001]本发明涉及可编程逻辑控制器,更具体地,涉及事件驱动的可编程逻辑控制器及其事件驱动编程方法。
【背景技术】
[0002]可编程逻辑控制器(PLC)由于具有用户可编程的灵活性而在工业控制领域中发挥重要的作用。当前的可编程逻辑控制器的编程方法以及相应的用户应用程序都是基于扫描周期。扫描周期包括几个步骤:更新输入值、执行用户应用程序、以及刷新输出值。
[0003]然而,基于扫描周期的编程方法具有以下不足:
[0004]一事件响应迟缓。用户需要在应用程序中检测输入事件,而且等到扫描周期结束才能输出响应。
[0005]一用户应用程序复杂,难以编写。对于基于扫描周期的可编程逻辑控制器,事件的检测和处理由用户应用程序负责。
[0006]一用户应用程序易读性差,难以维护。对于基于扫描周期的可编程逻辑控制器,用户需要在单个程序中综合诸如输入/输出(I/o)事件、诊断事件、系统事件等各种事件的处理过程,因而用户应用程序的结构化较差。

【发明内容】

[0007]本发明针对现有的基于扫描周期的可编程逻辑控制器及其编程方法的上述不足,提供事件驱动的可编程逻辑控制器及其事件驱动编程方法。
[0008]根据本发明的一方面,提供一种可编程逻辑控制器的事件驱动编程方法,包括:登记至少一个待检测事件;存储与该至少一个待检测事件分别对应的至少一个事件处理程序段;检测该至少一个待检测事件的发生;将检测到的事件放入事件队列;从事件队列提取事件;执行与提取的事件对应的事件处理程序段。
[0009]根据本发明的实施例,该至少一个待检测事件可以包括用户从至少一个预定义事件中选择的事件。
[0010]根据本发明的实施例,该至少一个待检测事件可以包括用户输入的用户定制事件。
[0011]根据本发明的实施例,所述用户定制事件可以包括预定义事件的逻辑组合。
[0012]根据本发明的实施例,所述预定义事件可以包括输入/输出事件、通信事件、诊断事件、系统错误事件、系统空闲事件。
[0013]根据本发明的实施例,该至少一个事件处理程序段可以包括预定义事件处理程序段。
[0014]根据本发明的实施例,该至少一个事件处理程序段可以包括用户输入的用户定制事件处理程序段。
[0015]该方法可以进一步包括以用户定制事件处理程序段替换相应的预定义事件处理程序段。
[0016]根据本发明的实施例,所述事件队列可以包括具有不同的优先级的多个事件队列,登记至少一个待检测事件可以进一步包括:登记待检测事件的优先级,将检测到的事件放入事件队列可以包括:根据检测到的事件的优先级将该事件放入相应的事件队列,从事件队列提取事件可以包括:优先从具有高优先级的事件队列提取事件。
[0017]根据本发明的实施例,将检测到的事件放入事件队列可以包括:如果检测到的事件已经在事件队列中,则丢弃该事件。
[0018]根据本发明的另一方面,提供一种可编程逻辑控制器,包括:事件队列,用于存储待处理事件;事件检测器,用于登记至少一个待检测事件,检测该至少一个待检测事件的发生,并将检测到的事件放入事件队列;程序存储器,用于存储与该至少一个待检测事件分别对应的至少一个事件处理程序段;事件分派器,用于从事件队列提取事件;以及事件处理器,用于执行与提取的事件对应的事件处理程序段。
[0019]根据本发明的实施例,该至少一个待检测事件可以包括用户从至少一个预定义事件中选择的事件。
[0020]根据本发明的实施例,该至少一个待检测事件可以包括用户输入的用户定制事件。
[0021]根据本发明的实施例,所述用户定制事件可以包括预定义事件的逻辑组合。
[0022]根据本发明的实施例,所述预定义事件可以包括输入/输出事件、通信事件、诊断事件、系统错误事件、系统空闲事件。
[0023]根据本发明的实施例,该至少一个事件处理程序段可以包括预定义事件处理程序段。
[0024]根据本发明的实施例,该至少一个事件处理程序段可以包括用户输入的用户定制事件处理程序段。
[0025]根据本发明的实施例,可以在该程序存储器中以用户定制事件处理程序段替换相应的预定义事件处理程序段。
[0026]根据本发明的实施例,所述事件队列可以包括具有不同的优先级的多个事件队列,该事件检测器可以登记待检测事件的优先级,并且根据检测到的事件的优先级将该事件放入相应的事件队列,该事件分派器可以优先从具有高优先级的事件队列提取事件。
[0027]根据本发明的实施例,如果检测到的事件已经在事件队列中,则该事件检测器可以丢弃该事件。
[0028]根据本发明,在可编程逻辑控制器中使用事件驱动编程方法代替基于扫描周期的编程方法,将用户应用程序分割为功能单一的事件处理程序段,降低了用户应用程序编写的难度和出错的几率,并使得用户应用程序的结构化良好,易于维护。同时,由于可以及时地针对特定的事件进行处理,提高了响应速度和系统性能。
【专利附图】

【附图说明】
[0029]通过下面结合附图对示范性实施例的详细描述,将更好地理解本发明。应当清楚地理解,所描述的示范性实施例仅仅是作为说明和示例,而本发明不限于此。本发明的精神和范围由所附权利要求书的具体内容限定。下面描述附图的简要说明,其中:[0030]图1是示出根据本发明的实施例的可编程逻辑控制器的事件驱动编程方法的流程图;
[0031]图2是示出根据本发明的另一实施例的可编程逻辑控制器的事件驱动编程方法的流程图;
[0032]图3是根据本发明的实施例的可编程逻辑控制器的框图;以及
[0033]图4是根据本发明的另一实施例的可编程逻辑控制器的框图。
【具体实施方式】
[0034]图1是示出根据本发明的实施例的可编程逻辑控制器的事件驱动编程方法的流程图。
[0035]参照图1,在步骤S101,在可编程逻辑控制器中登记至少一个待检测事件。根据实施例,可以预先定义若干预定义事件,诸如输入/输出事件、通信事件、诊断事件、系统错误事件、系统空闲事件等,从而可以从这些预定义事件中选择感兴趣的事件作为待检测事件。另外,作为预定义事件的补充,用户也可以输入用户定制事件作为待检测事件。用户定制事件可以是预定义事件的逻辑组合。例如,假定预定义事件包括=(El)输入通道I接收到数据;(E2)网络端口接收到消息;以及(E3)系统空闲,则可以定义如下的用户定制事件:E1ANDE3,即,输入通道I接收到数据且系统空闲;*E20RE3,S卩,网络端口接收到消息或系统空闲。然而,本发明的用户定制事件不限于预定义事件的逻辑组合,也可以由用户根据实际需要自行定义。
[0036]在步骤S103,在可编程逻辑控制器中为每个待检测事件存储相应的事件处理程序段。根据实施例,可以预先定义若干预定义事件处理程序段,用于事件的缺省处理。然而,当事件没有相应的预定义事件处理程序段或者需要特殊处理时,可以输入用户定制事件处理程序段。当用户为待检测事件输入用户定制事件处理程序段时,如果存在对应的预定义事件处理程序段,则可以以输入的用户定制事件处理程序段替换该预定义事件处理程序段。
[0037]在步骤S105,在可编程逻辑控制器中检测各个待检测事件的发生。
[0038]在步骤S107,将检测到的事件放入可编程逻辑控制器的事件队列。根据实施例,如果检测到的事件已经在事件队列中,则可以丢弃该事件。然而,本发明不限于此。替换地,也可以在事件队列中记录重复的事件。
[0039]在步骤S109,从事件队列中提取事件。
[0040]在步骤S111,执行存储在可编程逻辑控制器中的与提取的事件对应的事件处理程序段。
[0041]图2是示出根据本发明的另一实施例的可编程逻辑控制器的事件驱动编程方法的流程图。该实施例与图1的实施例的区别主要在于,利用多个具有不同优先级的事件队列来管理队列。
[0042]参照图2,在步骤201,在可编程逻辑控制器中登记至少一个待检测事件以及其优先级。
[0043]在步骤S203,在可编程逻辑控制器中为每个待检测事件存储相应的事件处理程序段。
[0044]在步骤S205,在可编程逻辑控制器中检测各个待检测事件的发生。[0045]在步骤S207,将检测到的事件放入与其优先级对应的事件队列。
[0046]在步骤S209,依照优先级从事件队列中提取事件,当较高优先级的事件队列非空时,优先提取较高优先级的事件队列中的事件。即,先处理最高优先级的事件队列,再处理次高优先级的事件队列,依此类推。
[0047]在步骤S211,执行存储在可编程逻辑控制器中的与提取的事件对应的事件处理程序段。
[0048]图3是根据本发明的实施例的可编程逻辑控制器100的框图。
[0049]参照图3,可编程逻辑控制器100包括事件检测器101、程序存储器103、事件分派器105、事件处理器107以及用于存储待处理事件的事件队列。
[0050]事件检测器101登记至少一个待检测事件,检测待检测事件的发生,并将检测到的事件放入事件队列。根据实施例,已存在于队列中的事件可以被丢弃或重复记录。根据实施例,待检测事件可以包括预定义事件和用户输入的用户定制事件。用户定制事件可以是预定义事件的逻辑组合,也可以由用户根据实际需要自行定义。
[0051]程序存储器103存储与待检测事件分别对应的事件处理程序段。根据实施例,事件处理程序段可以包括预定义事件处理程序段和用户定制事件处理程序段,并且可以以用户定制事件处理程序段替换相应的预定义事件处理程序段。
[0052]事件分派器105从事件队列中提取事件并分派给事件处理器107。
[0053]事件处理器107接收事件分派器105分派的事件,并执行存储在程序存储器103中的与该事件对应的事件处理程序段。
[0054]图4是根据本发明的另一实施例的可编程逻辑控制器200的框图。该实施例与图3的实施例的区别主要在于,利用多个具有不同优先级的事件队列来管理队列。
[0055]参照图4,可编程逻辑控制器200包括事件检测器201、程序存储器203、事件分派器205、事件处理器207、以及用于存储待处理事件的多个具有不同优先级的事件队列(如,优先级I事件队列、优先级2事件队列、和优先级3事件队列)。
[0056]事件检测器201登记至少一个待检测事件及其优先级,检测待检测事件的发生,并将检测到的事件放入与其优先级对应的事件队列。
[0057]程序存储器203存储与待检测事件分别对应的事件处理程序段。
[0058]事件分派器205依照优先级从事件队列中提取事件并分派给事件处理器207,当较高优先级的事件队列非空时,优先提取较高优先级的事件队列中的事件。即,先处理最高优先级的事件队列,再处理次高优先级的事件队列,依此类推。
[0059]事件处理器207接收事件分派器205分派的事件,并执行存储在程序存储器203中的与该事件对应的事件处理程序段。
[0060]虽然已经图示和描述本发明的示范性实施例,但是本领域技术人员可以理解,随着技术的进步,可以作出各种变更和修改并可以用等价物替换其元素而不背离本发明的真实范围。
【权利要求】
1.一种可编程逻辑控制器的事件驱动编程方法,包括: 登记至少一个待检测事件; 存储与该至少一个待检测事件分别对应的至少一个事件处理程序段; 检测该至少一个待检测事件的发生; 将检测到的事件放入事件队列; 从事件队列提取事件; 执行与提取的事件对应的事件处理程序段。
2.如权利要求1所述的方法,其中,该至少一个待检测事件包括用户从至少一个预定义事件中选择的事件。
3.如权利要求2所述的方法,其中,该至少一个待检测事件包括用户输入的用户定制事件。
4.如权利要求3所述的方法,其中,所述用户定制事件包括预定义事件的逻辑组合。
5.如权利要求2所述的方法,其中,所述预定义事件包括输入/输出事件、通信事件、诊断事件、系统错误事件、系统空闲事件。
6.如权利要求1所述的方法,其中,该至少一个事件处理程序段包括预定义事件处理程序段。
7.如权利要求6所述的方 法,其中,该至少一个事件处理程序段包括用户输入的用户定制事件处理程序段。
8.如权利要求7所述的方法,进一步包括以用户定制事件处理程序段替换相应的预定义事件处理程序段。
9.如权利要求1所述的方法,其中,所述事件队列包括具有不同的优先级的多个事件队列, 登记至少一个待检测事件进一步包括:登记待检测事件的优先级, 将检测到的事件放入事件队列包括:根据检测到的事件的优先级将该事件放入相应的事件队列, 从事件队列提取事件包括:优先从具有高优先级的事件队列提取事件。
10.如权利要求1所述的方法,其中,将检测到的事件放入事件队列包括: 如果检测到的事件已经在事件队列中,则丢弃该事件。
11.一种可编程逻辑控制器,包括: 事件队列,用于存储待处理事件; 事件检测器,用于登记至少一个待检测事件,检测该至少一个待检测事件的发生,并将检测到的事件放入事件队列; 程序存储器,用于存储与该至少一个待检测事件分别对应的至少一个事件处理程序段;以及 事件分派器,用于从事件队列提取事件;以及 事件处理器,用于执行与提取的 事件对应的事件处理程序段。
12.如权利要求11所述的可编程逻辑控制器,其中,该至少一个待检测事件包括用户从至少一个预定义事件中选择的事件。
13.如权利要求12所述的可编程逻辑控制器,其中,该至少一个待检测事件包括用户输入的用户定制事件。
14.如权利要求13所述的可编程逻辑控制器,其中,所述用户定制事件包括预定义事件的逻辑组合。
15.如权利要求12所述的可编程逻辑控制器,其中,所述预定义事件包括输入/输出事件、通信事件、诊断事件、系统错误事件、系统空闲事件。
16.如权利要求11所述的可编程逻辑控制器,其中,该至少一个事件处理程序段包括预定义事件处理程序段。
17.如权利要求16所述的可编程逻辑控制器,其中,该至少一个事件处理程序段包括用户输入的用户定制事件处理程序段。
18.如权利要求17所述的可编程逻辑控制器,其中,在该程序存储器中以用户定制事件处理程序段替换相应的预定义事件处理程序段。
19.如权利要求11所述的可编程逻辑控制器,其中,所述事件队列包括具有不同的优先级的多个事件队列, 该事件检测器登记待检测事件的优先级,并且根据检测到的事件的优先级将该事件放入相应的事件队列, 该事件分派器优先从具有高优先级的事件队列提取事件。
20.如权利要求11所述的可编程逻辑控制器,其中,如果检测到的事件已经在事件队列中,则该事件检测器丢弃 该 事件。
【文档编号】G05B19/05GK103885376SQ201210554616
【公开日】2014年6月25日 申请日期:2012年12月19日 优先权日:2012年12月19日
【发明者】王海峰 申请人:施耐德电器工业公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1