首页> 中国专利> 一种基于AMBA总线的PLC程序调度器IP核

一种基于AMBA总线的PLC程序调度器IP核

摘要

本发明公开了一种基于AMBA总线的PLC程序调度器IP核,包括:AHB接口模块,AHB接口模块包括多个寄存器,控制器通过AMBA总线对寄存器配置任务信息、监控任务状态,任务信息包括程序段段号和数据段段号,基于AMBA总线的PLC程序调度器IP核将程序段段号和数据段段号提供给执行器以执行相应的任务;循环任务调度模块,连接AHB接口模块,用以调度循环任务;定时任务调度模块,连接AHB接口模块以及循环任务调度模块,用以调度定时任务以及挂起循环任务调度模块;中断任务调度模块,连接AHB接口模块、循环任务调度模块以及定时任务调度模块,用以调度中断任务、挂起循环任务调度模块以及挂起定时任务调度模块。

著录项

  • 公开/公告号CN104597832A

    专利类型发明专利

  • 公开/公告日2015-05-06

    原文格式PDF

  • 申请/专利权人 浙江中控研究院有限公司;

    申请/专利号CN201410851778.3

  • 申请日2014-12-31

  • 分类号G05B19/05(20060101);

  • 代理机构31236 上海汉声知识产权代理有限公司;

  • 代理人胡晶

  • 地址 310053 浙江省杭州市滨江区六和路309号中控科技园(高新区)

  • 入库时间 2023-12-18 08:40:01

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-03-13

    专利权的转移 IPC(主分类):G05B19/05 登记生效日:20180223 变更前: 变更后: 申请日:20141231

    专利申请权、专利权的转移

  • 2017-04-19

    授权

    授权

  • 2015-05-27

    实质审查的生效 IPC(主分类):G05B19/05 申请日:20141231

    实质审查的生效

  • 2015-05-06

    公开

    公开

说明书

技术领域

本发明涉及可编程逻辑控制器领域,特别涉及一种基于AMBA总线的 PLC程序调度器IP核。

背景技术

随着自动控制技术的发展,可编程逻辑控制器(PLC)已经越来越多的应 用在各个行业领域中,标准化水平越来越高。目前,已形成了PLC控制器典 型结构、编程语言、通信、用户使用导则等系列国际标准(IEC61131)。其中, 以编程语言标准(IEC61131-3)最为广泛应用,所有可编程控制器均需要支持 该标准支持的五种语言,包括IL、ST、LD、FBD和SFC。

在以微程序控制器(MCU)为处理核心的PLC控制器结构中,无论是 PLC的任务调度还是具体任务的执行,都是基于MCU和嵌入式运行系统工作 的,PLC任务调度和执行时需要占用大量MCU的工作,而MCU通常还需要 完成其它重要任务(如通讯、显示),PLC任务的执行和响应速度也因此受 MCU其它工作的影响,难以保障其实时性和可靠性。为了有限地提高PLC任 务处理性能,当前的PLC系统都在往更高级更快速的MCU方向上努力,但 MCU的目标通用性势必就造成了这些高级MCU的很多功能部件的空闲和浪 费。而且每一次提升MCU的同时,需要重新设计基于该MCU的PLC运行系 统,升级成本大而性能提升有限。。

发明内容

本发明针对现有技术存在的上述不足,提供了一种基于AMBA总线的 PLC程序调度器IP核。本发明通过以下技术方案实现:

一种基于AMBA总线的PLC程序调度器IP核,通过AMBA总线连接控 制器、执行器;

基于AMBA总线的PLC程序调度器IP核包括:

AHB接口模块,连接AMBA总线,AHB接口模块包括多个寄存器,控 制器通过AMBA总线对寄存器配置任务信息、监控任务状态,任务信息包括 程序段段号和数据段段号,基于AMBA总线的PLC程序调度器IP核将程序 段段号提供给执行器以执行相应的任务,任务执行状态和新任务触发的剩余 周期或时间;

循环任务调度模块,连接AHB接口模块,用以调度循环任务;

定时任务调度模块,连接AHB接口模块以及循环任务调度模块,用以调 度定时任务以及挂起循环任务调度模块;

中断任务调度模块,连接AHB接口模块、循环任务调度模块以及定时任 务调度模块,用以调度中断任务、挂起循环任务调度模块以及挂起定时任务 调度模块。

较佳的,循环任务的任务信息还包括:执行周期、执行状态、剩余空循 次数;

执行周期表示在多少次循环内执行一次循环任务,任务状态包括等待、 就绪、运行、已运行、停止,剩余空循次数表示还需要多少次空闲循环才会 启动一次循环任务。

较佳的,在前一循环任务完成时,循环任务调度模块根据程序段号和剩 余空循次数选择下一循环任务并启动执行,直至被定时任务调度模块或中断 任务调度模块挂起,并在挂起撤消后继续运行。

较佳的,定时任务的任务信息还包括:定时时间、任务状态、剩余时间;

以一个定时周期的整数倍为定时时间,每过定时时间执行一次定时任务, 剩余时间表示定时任务还需要多少个定时周期才会运行,在执行过程中,若 有中断任务或者更高优先级的定时任务,则挂起当前定时任务,在执行完中 断任务或更高优先级的中断任务后再执行之前挂起的定时任务。

较佳的,在每一定时任务的定时周期到达时,根据定时任务的优先级和 剩余时间触发新定时任务的选择和执行。

较佳的,中断任务的任务信息还包括:中断源、执行状态、中断优先级;

根据中断源选择对应的中断任务,在执行过程中,若有更高优先级的中 断任务,则挂起当前中断任务,在执行完更高优先级的中断任务后再执行之 前挂起的中断任务。

本发明实现PLC任务的自动快速切换调度,从而大幅度提高PLC的处理 性能。解放MCU工作负担,避免了依靠MCU处理而带来的性能影响和硬件 相关等缺点,接口开放易移植。基于本发明,配合用硬件方式实现的IL语言 程序执行模块,可以实现高速任务调度、程序执行、接口开放的SoC芯片, 并基于此可以实现高性能的可编程控制器。

附图说明

图1所示的是本发明的结构示意图;

图2所示的是循环任务调度模块的循环任务属性列表示意图;

图3所示的是循环任务调度模块的工作流程图;

图4所示的是定时任务调度模块的工作流程图;

图5所示的是一实施例的调度流程示意图。

具体实施方式

以下将结合本发明的附图,对本发明实施例中的技术方案进行清楚、完 整的描述和讨论,显然,这里所描述的仅仅是本发明的一部分实例,并不是 全部的实例,基于本发明中的实施例,本领域普通技术人员在没有做出创造 性劳动的前提下所获得的所有其他实施例,都属于本发明的保护范围。

为了便于对本发明实施例的理解,下面将结合附图以具体实施例为例作 进一步的解释说明,且各个实施例不构成对本发明实施例的限定。

如图1所示,本发明提供的一种基于AMBA总线的PLC程序调度器IP 核(以下简称IP核),通过AHB接口挂接在AMBA总线系统上,提供控制 和状态寄存器作为操作接口。AMBA总线系统上的MCU或其他主设备对该 IP核的控制寄存器进行配置;调度器IP在获取到各任务信息和控制信号后自 动调度选择正确的任务并启动该任务的执行;每一个任务有对应的程序段和 数据段,IP核通过向任务执行器模块提供任务的程序段段号来启动任务的执 行。

该IP主要包含以下几个部分模块:

循环任务调度模块。循环任务调度模块用于调度任务(PLC程序)中的 循环任务(或称循检任务)。每一个循环任务有独立的执行周期、执行状态、 剩余空循次数。在前一循环任务完成时,循环任务调度模块根据任务排序和 各任务剩余空循次数选择下一任务并启动执行。循环任务调度模块持续进行 以上轮循选择触发,直至被定时任务调度模块或中断任务调度模块打断挂起, 在挂起请求撤消后继续运行。

定时任务调度模块。定时任务调度模块用于调度PLC程序中的定时任务 (或称定时事件触发任务),每一个定时任务有独立的定时时间、执行状态和 剩余时间。在定时器被触发时,定时任务调度模块根据任务排序和定时时间 判断选择下一任务并启动执行。定时任务调度模块在每个定时点顺序判断并 启动执行定时任务,直至被中断任务调度模块打断挂起,在挂起请求撤消后 继续运行。

中断任务调度模块。中断任务调度模块用于调度PLC程序中定义的中断 任务(或称中断事件触发任务),每一个任务有独立的中断源、中断优先级、 执行状态。在中断源被触发时,中断任务调度模块根据中断源选择对应的中 断任务启动执行。

AHB接口模块。AHB接口模块用于提供IP核挂接到AMBA总线的操作 接口,包括AHB主接口和AHB从接口。AHB从接口模块用以支持总线上其 它主设备(如MCU)对本IP核寄存器的配置和读取,AHB主接口用于操作 AMBA总线上的执行器模块(如启动任务的执行)。AHB接口模块中包含多 个控制和状态寄存器,同时提供中断信号输入和输出。

如图2所示,循环任务调度模块中包含一个循环任务属性列表,该列表 可以以寄存器组的方式或以RAM块的方式提供,为一组同样格式反映任务属 性和状态的数据,供循环任务调度使用。

每个循环任务的属性状态至少包含以下内容:该任务的程序段段号、数 据段段号、执行周期、任务状态、剩余空循次数。

程序段段号、数据段段号、执行周期:在PLC程序编译下载时,编译器 会将任务和功能块等程序模块分为程序段和数据段,并为每一个任务分配唯 一的程序段段号和数据段段号;循环任务在组态时也定义了该任务的执行周 期,即在多少次循环内执行一次。程序段段号、数据段段号、执行周期在IP 核初始化时由MCU填入列表,在列表中是不变的。

任务状态:任务状态包括等待、就绪、运行、已运行、停止等五种状态。 等待状态表示该任务还未完成准备;就绪状态表示已完成准备,但是需要其 它正在运行的任务完成;运行状态表示本任务正在运行;已运行状态表示在 本次循环中,本任务已完成运行;停止状态表示本任务已被停止,在此后循 环中都不会再运行。

剩余空循次数:剩余空循次数表示任务还需要多少次空闲循环才会启动 一次执行。

循环任务调度模块持续运行,在一个任务执行结束后立刻进行新任务的 选择和启动。其具体工作流程如图3所示:

1)初始化:第一个循环开始前,分别将各循环任务的循环周期加载到其 剩余空循次数;

2)循环开始,各任务状态为“等待”,任务调度模块将各个任务的剩余 空循次数减1,剩余空循次数=0的任务,状态切换为“就绪”,更新到列表中 对应位置。

3)循环任务调度模块顺序查找“就绪”任务;

4)若没有查找到“就绪”任务,则从2)开始新的循环;否则,启动该 任务的执行(具体启动方式本发明不作规定),任务状态切换为“执行”;

5)等待任务执行结束(接收到任务执行结束中断信号),任务结束后该 任务状态切换为“已执行”,并将该任务的循环周期加载到其剩余空循次数;

继续3)~5)步骤。

定时任务调度模块也包含一个定时任务属性列表,该列表中每个定时任 务的属性状态至少包含以下内容:该任务的程序段段号、数据段段号、定时 时间、任务状态、剩余时间。

程序段段号、数据段段号、定时时间在IP核初始化时由MCU填入列表, 在列表中是不变的。在本发明中,定时任务均以一个标准时间(定时周期) 的整数倍为任务定时时间,每过定时时间执行一次该任务。因此,定时任务 属性中剩余时间表示任务还需要多少个定时周期才会运行。

定时任务调度模块需要一个定时器支持,在每一个定时周期到达时,触 发新任务的选择和启动。其具体工作流程如图4所示:

1)初始化:在运行开始前,分别将各定时任务的定时时间(以定时周期 的倍数为计数单位)加载到其剩余时间,各任务状态为“等待”;定时器开始 工作;

2)当触发一次定时器中断时,各个任务的剩余时间同时减1;剩余时间 =0的任务,状态切换为“就绪”;

3)定时任务调度模块顺序查找“就绪”任务;因在定时任务调度模块内 所有的就绪任务是顺序执行的,因此在组态的时候可将优先级高的定时任务 排在列表的前面。

4)若没有查找到“就绪”任务,则本次定时执行结束;否则,启动该任 务的执行,任务状态切换为“执行”;

5)等待任务执行结束,任务结束后该任务状态切换为“已执行”,将该 任务的定时时间重新加载到其剩余时间,该任务状态切换为“等待”;

继续3)~5)步骤。

中断任务调度模块也包含一个中断任务属性列表,该列表中每个中断任 务的属性状态至少包含以下内容:该任务的程序段段号、数据段段号、中断 源、中断优先级。

中断任务调度模块由一组中断信号触发,该组中断信号可表示不同的中 断源。触发中断后,从属性列表中选择对应中断源的中断任务,启动该任务 的执行。当在执行过程中,如果有新的更高优先级的中断触发,则挂起当前 的中断任务,立即执行新的中断任务。直到新的中断任务执行完毕再继续执 行原来被挂起的中断任务。

定时任务调度模块可以打断挂起循环任务的执行,中断任务调度模块可 以打断定时任务和循环任务的执行,同时定时任务调度模块内高优先级的定 时任务也可以打断挂起低优先级定时任务的执行,中断任务调度模块内高优 先级的中断任务也可以打断挂起低优先级中断任务的执行。即,循环任务调 度模块可以被定时任务调度模块和中断任务调度模块打断挂起,定时任务调 度模块可以被中断任务调度模块打断挂起。挂起后原循环任务或定时任务暂 停执行,在对应的定时或中断任务结束后恢复原挂起模块的工作,并恢复原 任务的执行。

已触发的定时任务调度模块可以被更高优先级的定时任务触发,实现定 时任务的嵌套。

已触发的中断任务调度模块可以被更高优先级的中断源触发,实现中断 任务的嵌套。

基于本发明的一则实施例,循环任务属性列表以32位寄存器组的方式提 供,寄存器组包含的成员个数决定了本实施例支持的循环任务的个数。格式 如表1所示:

表1

CTn_CR为循环任务控制寄存器组,包括程序段段号、数据段段号和循环 周期,为只写寄存器。在初始化时,由MCU根据组态程序完成填写,填写后 数据不变。

CTn_SR为循环任务状态寄存器组,包括任务运行状态和剩余空循次数, 为只读寄存器。由IP核内部进行控制,在IP核工作后,随着任务运行寄存器 数据不停的变化,可由MCU读取查看。

在本实施例中,定时任务属性列表也以此类型的寄存器组(只写的 TTn_CR和只读的TTn_SR)方式提供。中断任务属性列表以只读的寄存器组 (ITn_CR)提供,实现中断源和中断程序的关系链接的功能。

上述实施例举例了指令格式和寄存器的定义。在本发明框架下,指令格 式和寄存器格式是可以自由调整的,这些调整和细化均应视为本发明的保护 范围。

当没有记时器或中断任务即将运行的时候,将执行循环任务。任务属性 栏指定的优先级将被解释为循环交替。比如优先权=3时,每3个循环执行 一次任务。在多循环任务中,OpenPCS没有定义特殊的执行次序。

在任务属性中指定一个N,定时器任务将每隔N毫秒被执行。

例如表2所示的任务列表,其调度流程如图5所示。

任务 时间 优先级(循环次数) Zyk11 执行40ms 1 Zyk12 执行20ms 10 Timer1 每10ms定时;执行2ms 1 Timer2 每50ms;执行2ms 2

表2

本发明中,以硬件方式设计PLC任务调度模块,任务调度模块作为一个 主设备挂接在AMBA总线上,MCU或其他控制主模块只需对任务调度模块 进行寄存器的配置和触发,该模块就可以在不需要MCU参与的情况下自动分 析调度PLC任务以及启动执行。

因此,本发明很大的提高了PLC任务执行和响应的实时性和可靠性,使 得PLC任务的执行和响应不受限于MCU。同时也释放了MCU大量的工作, 减轻了MCU的负担。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不 局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可 轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明 的保护范围应该以权利要求的保护范围为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号