CN110794759B - 一种plc任务调度方法和装置 - Google Patents

一种plc任务调度方法和装置 Download PDF

Info

Publication number
CN110794759B
CN110794759B CN201911035401.XA CN201911035401A CN110794759B CN 110794759 B CN110794759 B CN 110794759B CN 201911035401 A CN201911035401 A CN 201911035401A CN 110794759 B CN110794759 B CN 110794759B
Authority
CN
China
Prior art keywords
task
scheduling
iec
type
code
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
Application number
CN201911035401.XA
Other languages
English (en)
Other versions
CN110794759A (zh
Inventor
陈幼柏
尹俊杰
王伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Hollysys Automation and Drive Co Ltd
Original Assignee
Beijing Hollysys Automation and Drive Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Hollysys Automation and Drive Co Ltd filed Critical Beijing Hollysys Automation and Drive Co Ltd
Priority to CN201911035401.XA priority Critical patent/CN110794759B/zh
Publication of CN110794759A publication Critical patent/CN110794759A/zh
Application granted granted Critical
Publication of CN110794759B publication Critical patent/CN110794759B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/054Input/output
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/10Plc systems
    • G05B2219/15Plc structure of the system
    • G05B2219/15079Multitasking, real time multitasking

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Automation & Control Theory (AREA)
  • Programmable Controllers (AREA)

Abstract

本发明提供一种PLC任务调度方法和装置,方法包括:检测中断调度任务注册时钟的中断状态;当所述时钟的中断到来时,触发中断调度任务,获取各个PLC中IEC任务的调度状态;基于所述调度状态判断是否存在满足调度条件的IEC任务;当存在满足调度条件的IEC任务时,控制调度器调度满足条件的IEC任务。

Description

一种PLC任务调度方法和装置
技术领域
本发明涉及数据处理技术领域,具体涉及一种PLC任务调度方法和装置。
背景技术
随着产品的多样性,工业生产控制越来越复杂,可编程控制器 (ProgrammbleController,简称PC或PLC)作为工业控制的大脑,要完成的工作越来越多,PLC的单任务工作环境显然不能满足复杂计算及IO要求,多进程或多任务在现代计算机操作系统领域是成熟的技术,对于PLC工业控制领域的特点,不能直接使用通用计算机领域的多进程或多任务技术,因此,急需一种能够适用于PLC的多任务调度方案。
发明内容
有鉴于此,本发明实施例提供一种PLC任务调度方法和装置,以实现PLC 进行多任务调度的调度机制。
为实现上述目的,本发明实施例提供如下技术方案:
一种PLC任务调度方法,包括:
检测中断调度任务注册时钟的中断状态;
当所述时钟的中断到来时,触发中断调度任务获取各个PLC中IEC任务的调度状态;
基于所述调度状态判断是否存在满足调度条件的IEC任务;
当存在满足调度条件的IEC任务时,控制调度器调度满足条件的IEC任务。
可选的,上述PLC任务调度方法中,所述基于所述调度状态判断是否存在满足调度条件的IEC任务,包括:
判断与各个所述IEC任务相匹配的调度码的类型;
当与所述IEC任务相匹配的调度码的类型为第一类型时,表明所述IEC 任务满足调度条件,否则,表明所述IEC任务不满足调度条件;
其中,所述调度码为用于表征所述IEC任务是否满足调度条件的二进制码。
可选的,上述PLC任务调度方法中,当所述IEC任务为周期型任务时,且当所述PLC中周期型任务的预设运行周期TRunCycle的时长大于所述IEC 任务的执行时间TRunTime时,所述IEC任务的调度码的计算规则为:
基于公式TCount=TRunCycle/TScheduleInterval计算得到所述IEC任务的调度计数量TCount,其中,所述TScheduleInterval为中断调度任务的调度间隔时间;
依据公式TRunCount=TRunTime/TScheduleInterval和TSleepCount= TCount–TRunCount,计算得到TSleepCount,将所述TSleepCount的值作为所述IEC任务的调度码,所述TSleepCount的值作为值为0时,表明所述IEC 任务的调度码的类型为第一类型。
可选的,上述PLC任务调度方法中,当所述PLC中周期型任务的预设运行周期TRunCycle的时长小于所述IEC任务的执行时间TRunTime时,所述 IEC任务的调度码的计算规则为:
基于公式TCount=TRunCycle/TScheduleInterval计算得到所述IEC任务的调度计数量TCount,其中,所述TScheduleInterval为中断调度任务的调度间隔时间;
依据公式TRunCount=TRunTime/TScheduleInterval和TSleepCount= TCount–(TRunCount%TCount),计算得到TSleepCount,将所述TSleepCount 的值作为所述IEC任务的调度码,所述TSleepCount的值作为值为0时,表明所述IEC任务的调度码的类型为第一类型。
可选的,上述PLC任务调度方法中,当所述IEC任务为事件型任务时,当满足与所述IEC任务相匹配的调度的条件时,所述IEC任务对应的调度码的类型切换为第一类型1,当所述IEC任务执行完毕后,所述IEC任务对应的调度码切换至第二类型0。
可选的,上述PLC任务调度方法中,当所述IEC任务为状态型任务时,当与所述IEC任务相匹配的预设条件保持在满足状态时,所述IEC任务对应的调度码的类型切换为第一类型1,当所述与所述IEC任务相匹配的预设条件保持在不满足状态时,所述IEC任务对应的调度码切换至第二类型0。
一种PLC任务调度装置,包括:
时钟状态判断单元,用于检测中断调度任务注册时钟的中断状态;
调度状态判断单元,用于当所述时钟的中断到来时,触发中断调度任务获取各个PLC中IEC任务的调度状态;基于所述调度状态判断是否存在满足调度条件的IEC任务;
调度执行单元,用于当存在满足调度条件的IEC任务时,控制调度器调度满足条件的IEC任务。
可选的,上述PLC任务调度装置中,所述调度状态判断单元在基于所述调度状态判断是否存在满足调度条件的IEC任务时,包括:
判断与各个所述IEC任务相匹配的调度码的类型;
当与所述IEC任务相匹配的调度码的类型为第一类型时,表明所述IEC 任务满足调度条件,否则,表明所述IEC任务不满足调度条件;
其中,所述调度码为用于表征所述IEC任务是否满足调度条件的二进制码。
可选的,上述PLC任务调度装置中,还包括:
IEC任务调度码配置单元,用于当所述IEC任务为周期型任务时,且当所述PLC中周期型任务的预设运行周期TRunCycle的时长大于所述IEC任务的执行时间TRunTime时,依据以下规则配置所述IEC任务的调度码:
基于公式TCount=TRunCycle/TScheduleInterval计算得到所述IEC任务的调度计数量TCount,其中,所述TScheduleInterval为中断调度任务的调度间隔时间;
依据公式TRunCount=TRunTime/TScheduleInterval和TSleepCount= TCount–TRunCount,计算得到TSleepCount,将所述TSleepCount的值作为所述IEC任务的调度码,所述TSleepCount的值作为值为0时,表明所述IEC 任务的调度码的类型为第一类型。
可选的,上述PLC任务调度装置中,当所述PLC中周期型任务的预设运行周期TRunCycle的时长小于所述IEC任务的执行时间TRunTime时,所述 IEC任务调度码配置单元依据以下规则配置所述IEC任务的调度码:
基于公式TCount=TRunCycle/TScheduleInterval计算得到所述IEC任务的调度计数量TCount,其中,所述TScheduleInterval为中断调度任务的调度间隔时间;
依据公式TRunCount=TRunTime/TScheduleInterval和TSleepCount= TCount–(TRunCount%TCount),计算得到TSleepCount,将所述TSleepCount 的值作为所述IEC任务的调度码,所述TSleepCount的值作为值为0时,表明所述IEC任务的调度码的类型为第一类型。
基于上述技术方案,本发明实施例提供的上述方案,利用当前操作系统中的中断和多任务的技术,实现一个中断调度任务和其它被调度的任务(IEC 任务),中断调度任务通过调度状态来决定被调度任务(IEC任务)的调度时机,进而唤醒被调度任务,周而复始,实现PLC的多任务调度机制。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例公开的一种PLC任务调度方法的流程示意图;
图2为本申请实施例公开的一种周期型任务的执行时序示意图;
图3为本申请另一实施例公开的一种周期型任务的执行时序示意图;
图4为本申请实施例公开的事件型任务的执行时序示意图;
图5为本申请实施例公开的状态型任务的执行时序示意图;
图6为本申请实施例公开的全速型任务的执行时序示意图;
图7为本申请实施例公开的PLC任务调度装置的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请提供了一种适用于PLC的任务调度方法,参见图1,方法包括:
步骤S101:检测中断调度任务注册时钟的中断状态;
在本申请实施例公开的技术方案中,中断调度任务注册时钟中断,作为时钟中断处理函数,该时钟可以为周期为1ms的时钟信号或者是其他时长的时钟信号,实时对该时钟信号进行监测,判断时钟中断是否到来;
步骤S102:当所述时钟的中断到来时,触发中断调度任务,获取各个PLC 中IEC任务的调度状态;
所述IEC任务即,IEC61131-3软件模型中的任务,由用户组态完成特定功能,IEC任务是整个PLC控制系统的核心,他的可靠性最为重要,IEC任务调度的关键是保证系统稳定性和实时性的同一。
在本步骤中,当时钟中断到来时,所述PLC会调用PLC中的TMHandle 任务(中断调度任务)进行处理,所述TMHandle任务为中断触发执行任务,其被调用后会获取所述PLC中各个IEC任务的调度状态,所述调度状态,记为用于判断所述IEC任务是否能够被执行的状态。
步骤S103:基于所述调度状态判断是否存在满足调度条件的IEC任务;
本步骤中,通过判断每个IEC任务所对应的调度状态标识,来判断是否满足调度条件的IEC任务,当某个IEC任务所对应的调度状态标识的为第一预设类型时,例如,其调度标识为1,则表明该IEC任务能够被调度执行,如果调度状态标识的类型不为第一预设类型时,例如,其调度标识为0,表明该 IEC任务不满足调度条件,
步骤S104:当存在满足调度条件的IEC任务时,控制调度器调度满足条件的IEC任务。
中断调度任务TMHandle作为时钟中断处理函数,必然要求中断调度任务执行时间要短,否则会拖累其它中断的处理和整个PLC系统的时效性。对于中断调度任务TMHandle的控制IEC任务能被调度的机制,非常符合生产者消费者模型,当中断调度任务TMHandle检测IEC任务满足调度条件时,使能调度状态,调度并执行满足调度条件的IEC任务,当IEC任务调度完成后,中断调度任务TMHandle等待下一次的唤醒(时钟的中断到来)。
可见,在本申请实施例提供的PLC任务调度方法中,主要利用当前操作系统中的中断和多任务的技术,实现一个中断级的调度任务(TMHandle任务) 和其它被调度的任务(IEC任务),调度任务(TMHandle任务)通过调度状态来决定被调度任务(IEC任务)的调度时机,进而唤醒被调度任务,周而复始,实现PLC的多任务调度机制。
在本申请上述实施例公开的技术方案中,所述PLC中需要执行的IEC任务的类型有多重,其总体可以分为,周期型任务,事件型任务,状态型任务以及全速运行的任务,其中,所述周期型任务指的是,任务以一定的周期循环运行,每隔固定的周期运行一次,所述事件型任务是任务以某个具体的事件作为唤醒机制,如某个输入点产生一个上升沿或下降沿等,就会立即让这个任务运行,运行完毕后,再等待下一次事件的产生,所述状态型任务是任务判定某个状态是否满足,满足则调度任务执行,如果该状态一直满足条件则任务一直运行,全速运行的任务就是一直运行的任务。在本申请实施例公开的技术方案中,会预先为每一个调度任务分配一个调度码,所述调度码用于表征所述调度任务是否满足调度条件,具体的,在本申请上述实施例公开 的技术方案中,所述基于所述调度状态判断是否存在满足调度条件的IEC 任务,具体可以包括:获取与各个所述IEC任务相匹配的调度码,并判断各个调度码的类型,当调度码的类型为第一类型时,表明所述调度码对应的调度任务满足调度条件,当调度码的类型并非为第一类型时,表明所述IEC任务不满足调度条件,在本申请实施例公开的技术方案中,所述调度码仅为一状态标识,其类型可以依据用户需求自行设定,例如,在本申请实施例公开的技术方案中,所述调度码为二进制码,更为具体的,其可以为一个由0或1 构成的二值信号,即,该调度码的值可以为1或0,当其为1时,认为调度码的类型为第一类型,在本申请实施例公开的技术方案中,每个IEC任务的调度码的初始量均为0,将各个IEC任务阻塞在各自的调度码上,等待调度状态成立(调度码变为第一状态时),中断调度任务在判定各IEC任务满足调度条件时,获取调度码,此时,调度器CS就会由进程池中立即唤醒该调度码对应的IEC任务。
在本申请实施例公开的技术方案中,中断调度任务需要维护各IEC任务的调度状态,便于在合适的时机控制IEC任务能被调度器调度,调度状态的控制对于不同类型的IEC任务的检测条件不一样。
针对于周期型任务而言,周期型任务以一定的周期运行,这个周期包含自身的执行时间图2所示,例如,周期型任务的运行周期TRunCycle为8秒,其执行时间为TRunTime为4秒,如图2中高低电平信号,高电平持续的时间为4秒即为周期型任务的执行时间,即满足如下公式TRunTime< TRunCycle,周期性任务执行完毕后,会进行一段时间的休眠状态,等待下一次唤醒,休眠的时间为TSleep=TRunCycle–TRunTime。
针对这种周期型任务,中断调度任务控制的机制为,在创建IEC任务时,先得到该IEC任务的调度计数量为TCount=TRunCycle/TScheduleInterval。其中,所述TScheduleInterval为中断调度任务的调度间隔时间。IEC任务运行结束后,计算TRunCount=TRunTime/TScheduleInterval,同时计算 TSleepCount=TCount–TRunCount。此时,将所述TSleepCount作为该调度任务的调度码,当IEC任务运行完毕后,就阻塞在调度码TSleepCount上,中断调度任务每执行一次,对TSleepCount做减1操作,当TSleepCount为0时,表明所述IEC任务的调度码的类型为第一类型,即可唤醒该任务运行。对于这种周期型任务,间隔TRunCycle时间执行一次。
当所述PLC中周期型任务的预设运行周期TRunCycle的时长小于所述 IEC任务的执行时间TRunTime,且2*TRunCycle大于TRunTime时,例如,参见图3,TRunCycle为8秒,而TRunTime为10秒,此时,则休眠时间TSleep =TRunCycle–(TRunTime%TRunCycle),其中,所述TRunTime%TRunCycle 为用TRunCycle对TRunTime进行求余,TSleepCount=TCount–(TRunCount%TCount),此时的IEC任务是间隔2个周期运行一次。以上为了说明算法,将TRunCycle和TRunTime进行了实例化,不同的周期和运行时间,算法一样,即周期型任务的运行间隔周期为n*TRunCycle(n为大于1的正整数)。
也就是说,所述周期型任务的调度码的计算规则为:当所述第 n*TRunCycle到来时,所述周期型任务的调度码切换为第一状态,其中,所述 TRunCycle为所述调度码的运行周期,当所述周期型任务的执行时间TRunTime小于所述运行周期TRunCycle时,所述n为1,当所述周期型任务的执行时间TRunTime大于所述运行周期TRunCycle时,所述n的值为TRunTime/TRunCycle取整后加1。例如,以上文TRunCycle为8秒,而 TRunTime为10秒,所述n的值为2。
对于事件型任务而言,事件型任务产生一个事件,即该任务满足调度的条件,该事件产生后,表明满足与所述IEC任务相匹配的调度的条件,所述事件型任务对应的IEC码切换至第一状态,所述IEC任务对应的调度码的类型切换为第一类型1,当所述IEC任务执行完毕后,所述IEC任务对应的调度码切换至第二类型0,此时,这个事件回到初始状态,等待事件的下一次产生,例如参见图4所示。例如,事件在产生时,与事件对应的电平信号上会对应生成一个上升沿或下降沿,所述上升沿或下降沿与所述调度码状态相匹配。事件型任务阻塞在该电平信号的信号量上等待被唤醒,中断调度任务通过检测该电平信号检测事件是否产生,若事件产生,中断调度任务post信号量,唤醒该事件型IEC任务,任务执行完毕后,该电平信号变为常低电平或常高电平,IEC任务再一次阻塞在信号量上,等待下一次事件的产生。当然,在本申请实施例公开的技术方案中,也可以通过其他信号来表征是否产生该时间,这些信号可以统称为与该事件相匹配的事件信号标识,通过该事件信号标识判断事件是否产生,而并不一定要通过电平信号的上升沿和下降沿的方式来判断事件是否产生。
当所述IEC任务为状态型任务时,参见图5,当与所述IEC任务相匹配的预设条件保持在满足状态时,所述IEC任务对应的调度码的类型切换为第一类型1,当所述与所述IEC任务相匹配的预设条件保持在不满足状态时,所述IEC任务对应的调度码切换至第二类型0。
参见图6,对于全速型运行的IEC任务而言,其调度码一直保持在第一类型,即,该IEC任务创建即开始运行,对于状态型任务和全速型运行任务,可能会出现任务一直运行的状态,这样会导致系统硬件资源被耗尽,因此对于这两种类型的任务,在本方案中,在运行这些长时间处于运行状态的任务而言,在这些IEC任务运行第一预设时长后,都需要将其调度码切换出第一类型一段时间,这段时间可以记为第二预设时长,使得PLC主动休眠一段时间,让出cpu资源,其中,所述第一预设时长和第二预设时长的具体时长可以依据用户需求自行设定。
本实施例中公开了一种PLC任务调度装置,该装置中各个单元的具体工作内容,请参见上述方法实施例的内容,下面对本发明实施例提供的PLC任务调度装置进行描述,下文描述的PLC任务调度装置与上文描述的PLC任务调度方法可相互对应参照。
参见图7,该PLC任务调度装置,包括:
时钟状态判断单元100,用于检测中断调度任务注册时钟的中断状态;
调度状态判断单元200,用于当所述时钟的中断到来时,触发中断调度任务获取各个PLC中IEC任务的调度状态;基于所述调度状态判断是否存在满足调度条件的IEC任务;
调度执行单元300,用于当存在满足调度条件的IEC任务时,控制调度器调度满足条件的IEC任务。
与上述方法相对应,所述调度状态判断单元在基于所述调度状态判断是否存在满足调度条件的IEC任务时,包括:
判断与各个所述IEC任务相匹配的调度码的类型;
当与所述IEC任务相匹配的调度码的类型为第一类型时,表明所述IEC 任务满足调度条件,否则,表明所述IEC任务不满足调度条件;
其中,所述调度码为用于表征所述IEC任务是否满足调度条件的二进制码。
与上述方法相对应,还包括:
IEC任务调度码配置单元,用于当所述IEC任务为周期型任务时,且当所述PLC中周期型任务的预设运行周期TRunCycle的时长大于所述IEC任务的执行时间TRunTime时,依据以下规则配置所述IEC任务的调度码:
基于公式TCount=TRunCycle/TScheduleInterval计算得到所述IEC任务的调度计数量TCount,其中,所述TScheduleInterval为中断调度任务的调度间隔时间;
依据公式TRunCount=TRunTime/TScheduleInterval和TSleepCount= TCount–TRunCount,计算得到TSleepCount,将所述TSleepCount的值作为所述IEC任务的调度码,所述TSleepCount的值作为值为0时,表明所述IEC 任务的调度码的类型为第一类型。
与上述方法相对应,当所述PLC中周期型任务的预设运行周期TRunCycle 的时长小于所述IEC任务的执行时间TRunTime时,所述IEC任务调度码配置单元依据以下规则配置所述IEC任务的调度码:
基于公式TCount=TRunCycle/TScheduleInterval计算得到所述IEC任务的调度计数量TCount,其中,所述TScheduleInterval为中断调度任务的调度间隔时间;
依据公式TRunCount=TRunTime/TScheduleInterval和TSleepCount= TCount–(TRunCount%TCount),计算得到TSleepCount,将所述TSleepCount 的值作为所述IEC任务的调度码,所述TSleepCount的值作为值为0时,表明所述IEC任务的调度码的类型为第一类型。
与上述方法相对应,IEC任务调度码配置单元具体用于,当所述IEC任务为事件型任务时,当满足与所述IEC任务相匹配的调度的条件时,所述IEC 任务对应的调度码的类型切换为第一类型1,当所述IEC任务执行完毕后,所述IEC任务对应的调度码切换至第二类型0。
与上述方法相对应,IEC任务调度码配置单元具体用于,当所述IEC任务为状态型任务时,当与所述IEC任务相匹配的预设条件保持在满足状态时,所述IEC任务对应的调度码的类型切换为第一类型1,当所述与所述IEC任务相匹配的预设条件保持在不满足状态时,所述IEC任务对应的调度码切换至第二类型0。
为了描述的方便,描述以上系统时以功能分为各种模块分别描述。当然,在实施本发明时可以把各模块的功能在同一个或多个软件和/或硬件中实现。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的系统及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (6)

1.一种PLC任务调度方法,其特征在于,包括:
检测中断调度任务注册时钟的中断状态;
当所述时钟的中断到来时,触发中断调度任务,获取各个PLC中IEC任务的调度状态;
基于所述调度状态判断是否存在满足调度条件的IEC任务;
当存在满足调度条件的IEC任务时,控制调度器调度满足条件的IEC任务;
其中,所述基于所述调度状态判断是否存在满足调度条件的IEC任务,包括:
判断与各个所述IEC任务相匹配的调度码的类型,当与所述IEC任务相匹配的调度码的类型为第一类型时,表明所述IEC任务满足调度条件,否则,表明所述IEC任务不满足调度条件;
其中,所述调度码为用于表征所述IEC任务是否满足调度条件的二进制码;当所述IEC任务为周期型任务时,且当所述PLC中周期型任务的预设运行周期TRunCycle的时长大于所述IEC任务的执行时间TRunTime时,所述IEC任务的调度码的计算规则为:
基于公式TCount=TRunCycle/TScheduleInterval计算得到所述IEC任务的调度计数量TCount,其中,所述TScheduleInterval为中断调度任务的调度间隔时间;
依据公式TRunCount=TRunTime/TScheduleInterval和TSleepCount=TCount–TRunCount,计算得到TSleepCount,将所述TSleepCount的值作为所述IEC任务的调度码,所述中断调度任务每执行一次,对所述TSleepCount做减1操作,所述TSleepCount的值作为值为0时,表明所述IEC任务的调度码的类型为第一类型。
2.根据权利要求1所述的PLC任务调度方法,其特征在于,当所述PLC中周期型任务的预设运行周期TRunCycle的时长小于所述IEC任务的执行时间TRunTime时,所述IEC任务的调度码的计算规则为:
基于公式TCount=TRunCycle/TScheduleInterval计算得到所述IEC任务的调度计数量TCount,其中,所述TScheduleInterval为中断调度任务的调度间隔时间;
依据公式TRunCount=TRunTime/TScheduleInterval和TSleepCount=TCount–(TRunCount%TCount),计算得到TSleepCount,将所述TSleepCount的值作为所述IEC任务的调度码,所述中断调度任务每执行一次,对所述TSleepCount做减1操作,所述TSleepCount的值作为值为0时,表明所述IEC任务的调度码的类型为第一类型。
3.根据权利要求1所述的PLC任务调度方法,其特征在于,当所述IEC任务为事件型任务时,当满足与所述IEC任务相匹配的调度的条件时,所述IEC任务对应的调度码的类型切换为第一类型1,当所述IEC任务执行完毕后,所述IEC任务对应的调度码切换至第二类型0。
4.根据权利要求1所述的PLC任务调度方法,其特征在于,当所述IEC任务为状态型任务时,当与所述IEC任务相匹配的预设条件保持在满足状态时,所述IEC任务对应的调度码的类型切换为第一类型1,当所述与所述IEC任务相匹配的预设条件保持在不满足状态时,所述IEC任务对应的调度码切换至第二类型0。
5.一种PLC任务调度装置,其特征在于,包括:
时钟状态判断单元,用于检测中断调度任务注册时钟的中断状态;
调度状态判断单元,用于当所述时钟的中断到来时,触发中断调度任务获取各个PLC中IEC任务的调度状态;基于所述调度状态判断是否存在满足调度条件的IEC任务,包括:判断与各个所述IEC任务相匹配的调度码的类型;当与所述IEC任务相匹配的调度码的类型为第一类型时,表明所述IEC任务满足调度条件,否则,表明所述IEC任务不满足调度条件;其中,所述调度码为用于表征所述IEC任务是否满足调度条件的二进制码;
IEC任务调度码配置单元,用于当所述IEC任务为周期型任务时,且当所述PLC中周期型任务的预设运行周期TRunCycle的时长大于所述IEC任务的执行时间TRunTime时,依据以下规则配置所述IEC任务的调度码:
基于公式TCount=TRunCycle/TScheduleInterval计算得到所述IEC任务的调度计数量TCount,其中,所述TScheduleInterval为中断调度任务的调度间隔时间;
依据公式TRunCount=TRunTime/TScheduleInterval和TSleepCount=TCount–TRunCount,计算得到TSleepCount,将所述TSleepCount的值作为所述IEC任务的调度码,所述中断调度任务每执行一次,对所述TSleepCount做减1操作,所述TSleepCount的值作为值为0时,表明所述IEC任务的调度码的类型为第一类型;
调度执行单元,用于当存在满足调度条件的IEC任务时,控制调度器调度满足条件的IEC任务。
6.根据权利要求5所述的PLC任务调度装置,其特征在于,当所述PLC中周期型任务的预设运行周期TRunCycle的时长小于所述IEC任务的执行时间TRunTime时,所述IEC任务调度码配置单元依据以下规则配置所述IEC任务的调度码:
基于公式TCount=TRunCycle/TScheduleInterval计算得到所述IEC任务的调度计数量TCount,其中,所述TScheduleInterval为中断调度任务的调度间隔时间;
依据公式TRunCount=TRunTime/TScheduleInterval和TSleepCount=TCount–(TRunCount%TCount),计算得到TSleepCount,将所述TSleepCount的值作为所述IEC任务的调度码,所述中断调度任务每执行一次,对所述TSleepCount做减1操作,所述TSleepCount的值作为值为0时,表明所述IEC任务的调度码的类型为第一类型。
CN201911035401.XA 2019-10-29 2019-10-29 一种plc任务调度方法和装置 Active CN110794759B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911035401.XA CN110794759B (zh) 2019-10-29 2019-10-29 一种plc任务调度方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911035401.XA CN110794759B (zh) 2019-10-29 2019-10-29 一种plc任务调度方法和装置

Publications (2)

Publication Number Publication Date
CN110794759A CN110794759A (zh) 2020-02-14
CN110794759B true CN110794759B (zh) 2021-06-22

Family

ID=69441583

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911035401.XA Active CN110794759B (zh) 2019-10-29 2019-10-29 一种plc任务调度方法和装置

Country Status (1)

Country Link
CN (1) CN110794759B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111857865A (zh) * 2020-06-28 2020-10-30 珠海豹趣科技有限公司 一种事件型任务的处理方法、装置、电子设备及存储介质
CN112925631B (zh) * 2021-04-08 2022-11-04 上海科世达-华阳汽车电器有限公司 一种任务调度方法、装置、电子设备和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101290588A (zh) * 2008-03-07 2008-10-22 重庆邮电大学 一种微嵌入式实时任务调度器及调度方法
CN108536531A (zh) * 2018-04-03 2018-09-14 中国电子科技集团公司第七研究所 一种基于单片机的任务调度和电源管理方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100485605C (zh) * 2001-09-24 2009-05-06 中兴通讯股份有限公司 一种多任务实时操作系统的实现方法
CN100365580C (zh) * 2005-06-09 2008-01-30 华东师范大学 基于中断的实时任务调度方法
JP4811678B2 (ja) * 2008-02-15 2011-11-09 オムロン株式会社 Plcシミュレータ装置及びシミュレーションするためのプログラムとこれが記録された記録媒体
CN101349975B (zh) * 2008-07-29 2014-04-23 北京中星微电子有限公司 一种在嵌入式操作系统上实现中断底半部机制的方法及装置
KR101047373B1 (ko) * 2010-05-20 2011-07-07 현대엘리베이터주식회사 물류시스템에서의 하물처리 제어시스템 및 그 제어방법
CN103399798A (zh) * 2013-07-29 2013-11-20 深圳市汇川控制技术有限公司 Plc的多任务控制方法和装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101290588A (zh) * 2008-03-07 2008-10-22 重庆邮电大学 一种微嵌入式实时任务调度器及调度方法
CN108536531A (zh) * 2018-04-03 2018-09-14 中国电子科技集团公司第七研究所 一种基于单片机的任务调度和电源管理方法

Also Published As

Publication number Publication date
CN110794759A (zh) 2020-02-14

Similar Documents

Publication Publication Date Title
CN107851050B (zh) 具有看门狗定时器的装置及用于操作看门狗定时器的方法
CN110794759B (zh) 一种plc任务调度方法和装置
CN112530056B (zh) 降低智能门锁功耗的方法、智能门锁和存储介质
US20050015767A1 (en) Operating system configuration tool
CN109558227B (zh) 一种基于任务执行预算的单调速率任务调度方法
CN112199170A (zh) 实时操作系统的定时处理方法、装置、设备及存储介质
CN114625108B (zh) 一种仿真测试方法及装置
CN114661449B (zh) 任务调度方法、嵌入式系统及计算机可读存储介质
EP1984817A2 (en) Method, computer program product and computer system for controlling execution of an interruption routine
CN112925631B (zh) 一种任务调度方法、装置、电子设备和存储介质
CN109947015B (zh) 任务的执行方法及主控制器
Nahas et al. Ways for implementing highly-predictable embedded systems using time-triggered co-operative (TTC) architectures
CN107526603B (zh) 一种应用唤醒方法及装置
WO2008146099A1 (en) Data processing system, method for processing data and computer program product
Kopják et al. Event-driven control program models running on embedded systems
Belagali et al. Implementation and validation of dynamic scheduler based on LST on FreeRTOS
CN111338425A (zh) 一种无线低功耗设备实现倒计时的方法及系统
Lakhani et al. Applying design patterns to improve the reliability of embedded systems through a process of architecture migration
KR100689360B1 (ko) 동작인식 스누즈 기능 실행 방법 및 이를 위한 이동 통신단말기
JP2001331461A (ja) マルチプロセッサシステム及びプロセッサスケジュリング方法
CN110489089B (zh) 基于中断管理框架的嵌入式系统低功耗控制方法及系统
Nahas et al. Implementing adaptive time-triggered co-operative scheduling framework for highly-predictable embedded systems
CN111813531B (zh) 一种操作系统时钟调度方法及系统
CN115826731B (zh) 休眠控制方法及装置、存储介质和计算设备
JP2006172229A (ja) タスクの動作制御方法、タスクの動作制御システムおよびプログラム

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
TA01 Transfer of patent application right

Effective date of registration: 20210406

Address after: 100176 Floor 5 510-1515, No. 1 Building, No. 2 Courtyard, Dishengzhong Road, Daxing District Economic and Technological Development Zone, Beijing

Applicant after: BEIJING HOLLYSYS AUTOMATION & DRIVE Co.,Ltd.

Address before: 100176 1510-1515, floor 5, building 1, yard 2, Disheng Middle Road, Beijing Economic and Technological Development Zone, Beijing

Applicant before: BEIJING HOLLYSYS AUTOMATION & DRIVE Co.,Ltd.

Applicant before: NINGBO HELISHI INTELLIGENT TECHNOLOGY Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant