嵌入式PLC引擎实现方法和引擎与流程

文档序号:12863110阅读:352来源:国知局
嵌入式PLC引擎实现方法和引擎与流程

本发明涉及工业控制技术,尤其涉及一种嵌入式plc引擎实现方法和引擎。



背景技术:

专用控制器是一种为企业、设备量身定制的控制器,其功能单一、结构精简,且都是为具体的机器定制。近年来,随着工控领域竞争的日益白炽化,即使可编程控制器(programmablelogiccontroller,plc)具有可靠性高、抗干扰能力强等优点,越来越多的企业也开始因无法承受plc的高成本压力,而逐步开始选用专用控制器来代替。然而采用专用控制器也将面临可靠性和兼容性降低的风险。

现有技术通过对已有的专用控制器进行平台化开发改造,升级形成嵌入式plc,使其兼有plc和专用控制器的优点。现有的嵌入式plc的核心元件为plc引擎。plc引擎采用多任务操作系统的动态任务创建方式工作,所有线程的扫描周期相同,并根据是否处于使用状态来对线程进行动态的资源分配。在处理不同实时时间要求任务的情况下,所有线程的扫描周期都需要满足最高实时时间要求任务,从而导致高配置线程处理低实时时间要求任务造成的资源浪费。

现有plc引擎的资源利用率不高。



技术实现要素:

本发明提供一种嵌入式plc引擎实现方法,包括:

获取待处理数据,并根据所述待处理数据获取预设响应时间;

获取plc引擎中线程的扫描周期,所述plc引擎包含m个线程,所述m为大于或等于2的整数,且至少两个所述线程的扫描周期不相同;

根据所述扫描周期和预设响应时间,确定目标线程;

以所述目标线程处理所述待处理数据。

进一步地,所述m个线程的资源都是预配置的固定资源。

进一步地,所述plc引擎中线程的扫描周期中的最大扫描周期,预先设置为小于安全监测任务模型的预设响应时间;

所述根据所述扫描周期和预设响应时间,确定目标线程,包括:

所述待处理数据包括安全监测任务模型时,根据所述最大扫描周期确定目标线程。

进一步地,所述根据所述扫描周期和预设响应时间,确定目标线程,包括:

在所述plc引擎中线程的扫描周期中,获取小于所述预设响应时间的最大扫描周期;

根据所述最大扫描周期确定所述目标线程。

进一步地,在所述以所述目标线程处理所述待处理数据之前,还包括:

确定系统时钟计数是否到达所述目标线程的预设触发计数值;

若系统时钟计数到达所述目标线程的预设触发计数值,则执行所述以所述目标线程处理所述待处理数据。

本发明还提供了一种嵌入式plc引擎,包括:

第一获取模块,用于获取待处理数据,并根据所述待处理数据获取预设响应时间;

第二获取模块,用于获取plc引擎中线程的扫描周期,所述plc引擎包含m个线程,所述m为大于或等于2的整数,且至少两个所述线程的扫描周期不相同;

目标线程确定模块,用于根据所述扫描周期和预设响应时间,确定目标线程;

数据处理模块,用于以所述目标线程处理所述待处理数据。

进一步地,所述m个线程的资源都是预配置的固定资源

进一步地,所述plc引擎中线程的扫描周期中的最大扫描周期,预先设置为小于安全监测任务模型的预设响应时间;

所述目标线程确定模块具体用于:所述待处理数据包括安全监测任务模型时,根据所述最大扫描周期确定目标线程。

进一步地,所述目标线程确定模块具体用于:

在所述plc引擎中线程的扫描周期中,获取小于所述预设响应时间的最大扫描周期;

根据所述最大扫描周期获取所述目标线程。

进一步地,还包括:触发模块,用于在所述以所述目标线程处理所述待处理数据之前,确定系统时钟计数是否到达所述目标线程的预设触发计数值;若系统时钟计数到达所述目标线程的预设触发计数值,则执行所述以所述目标线程处理所述待处理数据。

本实施例通过获取待处理数据,并根据所述待处理数据获取预设响应时间;获取plc引擎中线程的扫描周期,所述plc引擎包含m个线程,所述m为大于或等于2的整数,且至少两个所述线程的扫描周期不相同;根据所述扫描周期和预设响应时间,确定目标线程,以所述目标线程处理所述待处理数据。实现了线程的优化分配,减少高消耗线程处理低实时性要求的任务而导致的资源浪费,提高线程的利用率。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明提供的一种嵌入式plc引擎实现方法流程示意图;

图2为本发明提供的另一种嵌入式plc引擎实现方法流程示意图;

图3为本发明提供的再一种嵌入式plc引擎实现方法流程示意图;

图4为本发明提供的再一种嵌入式plc引擎实现方法流程示意图;

图5本发明提供的一种嵌入式plc引擎结构示意图;

图6本发明提供的另一种嵌入式plc引擎结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1为本发明提供的一种嵌入式plc引擎实现方法流程示意图。如图1所示的实施例包括:

s110,获取待处理数据,并根据所述待处理数据获取预设响应时间。

获取所述待处理数据包括但不限于以下实现方式:

1)从外部接收所述待处理数据;

2)从外部输入的预处理数据中获得所述待处理数据;

3)响应外部输入的指令从预设数据库中提取所述待处理数据;

4)根据外部输入的指令和预设数据库而生成所述待处理数据。

所述待处理数据可以是包括安全门逻辑判断任务模型、电磁阀控制任务模型、信号指示灯控制任务模型和安全监测任务模型。由于不同的任务根据其实现的功能而具有不同的响应时间要求,所述待处理数据对应预设响应时间。

所述根据所述待处理数据获取预设响应时间的一种实现方式是:所述待处理数据中包括待处理任务和预设响应时间,获取所述待处理数据的所述预设响应时间。

所述根据所述待处理数据获取预设响应时间的另一种实现方式是:预设有待处理数据和预设响应时间的第一对应关系;根据获取的所述待处理数据和所述第一对应关系获得所述待处理数据的预设响应时间。

所述预设响应时间是指要求在预设响应时间内完成所述任务,例如:

安全门逻辑判断任务模型对时间要求比较高,此类为高实时性要求的任务,安全门逻辑判断任务模型的预设响应时间为2ms;

电磁阀控制任务模型为电磁阀驱动及行程到位检测,属于一般的动作逻辑处理,预设响应时间为30ms;

信号指示灯控制任务模型属于周期性的低速逻辑处理,预设响应时间为0.7s;

安全监测任务模型主要包括运行时的环境安全扫描以及plc逻辑的故障分析扫描,主要属于安全机制处理,可以是在整个运行的过程中都保持执行,但是对响应快慢并没有太高要求,此类为低实时性要求的任务,安全监测任务模型的预设响应时间为5s。

上述任务模型具体可以包括用户编辑的可执行所需任务的逻辑程序。

s120,获取plc引擎中线程的扫描周期,所述plc引擎包含m个线程,所述m为大于或等于2的整数,且至少两个所述线程的扫描周期不相同。

所述s110和s120的执行顺序可以相互交换,也可以同时执行。

s120的一种实现方式中,所述m可取4,即plc引擎包含4个线程,每个线程的扫描周期设置为不相同。所述扫描周期为所述线程在循环执行过程中完成一次输入、处理、输出所需要的时间,所述扫描周期反映所述线程的运行速度。线程的扫描周期越短,线程的运行速度越快,线程的系统开销也越大。例如:

线程1的扫描周期为1ms级,其计数刻度为1ms,线程1在每一个时钟计数刻度均调度一次;

线程2的扫描周期为10ms级,其计数刻度为10ms,线程2按计数刻度在每计数10次时调度一次;

线程3的扫描周期为100ms级,其计数刻度为100ms,线程3按计数刻度在每计数100次时调度一次;

线程4的扫描周期为1s级,其计数刻度为1s,线程4按计数刻度在每计数1000次时调度一次。

上述计数刻度是针对每个线程而言的,以线程2为例,其计数刻度为10ms,线程2仅仅在每10ms达到时获得一次计数,在计数为10ms~19ms时,所述线程2的都处于计数为10ms的状态,只有计数达到20ms后,线程2开始进入计数为20ms的状态。所述计数刻度的一种实现方式可以是:线程2对应设置有一计时变量t2,t2的计数刻度为10ms所述t2为10的倍数。在系统时钟计数230ms时,所述t2为230ms。当系统时钟计数为231ms、232ms、233ms、234ms、235ms、236ms、237ms、238ms、239ms时,所述t2仍为230ms,线程2处于t2为230ms的状态。直到系统时钟计数为240ms时,t2计数跳变为240ms,线程2进入t2为240ms的状态。

在包含所述线程1、线程2、线程3、线程4的plc引擎中,系统时钟的计数刻度最大为线程1的计数刻度,即系统时钟的计数刻度最大为1ms。所述系统时钟的最大计数刻度是由其驱动的线程中,具有最小扫描周期的线程决定。

本实施中4个线程的扫描周期都不相同,但本发明不限于此,也可以设置相同等级的扫描周期或完全相同的扫描周期,在此不做限定。

本实施例中所述的线程为根据嵌入式plc系统应用对象需求划分的多个不同实时等级的逻辑任务,由于嵌入式plc为根据用户需求定制的专用plc,其任务可预测,因此,通过本发明的引擎设计方法可最大限度充分发挥软硬件特性,提高系统利用效率,降低成本。

s130,根据所述扫描周期和预设响应时间,确定目标线程。

所述线程的扫描周期的差异导致所述线程产生的系统开销的不同,s130选用扫描周期与预设响应时间匹配的线程作为目标线程处理,优化线程分配,减少高消耗线程处理低实时性要求的任务而导致的资源浪费,提高线程的利用率。

所述s130具体可以是,根据所述待处理数据的预设响应时间所对应的时间等级,来确定处理所述待处理数据的目标线程。例如,在所述待处理数据包含安全门逻辑判断任务模型时,安全门逻辑判断任务模型的预设响应时间为2ms,即处理时间最多不能超过2ms。如果选用10ms级扫描周期的线程必然无法满足其预设响应时间。因此所述安全门逻辑判断任务模型对应的目标线程为1ms级扫描周期的线程1,所述线程1的扫描时间能够在2ms内完成所述安全门逻辑判断任务模型。又例如,在所述待处理数据包含信号指示灯控制任务模型时,根据所述信号指示灯控制任务模型的预设响应时间为0.7s可知,目标线程的扫描周期应接近并小于0.7s,因此确定100ms级扫描周期的线程3为所述信号指示灯控制任务模型的目标线程。相对于现有技术中采用同样扫描周期的线程处理不同预设响应时间的待处理数据,本实施例提高了系统软硬件资源的利用率,减少了资源浪费,进而降低了硬件成本。

s140,以所述目标线程处理所述待处理数据。

在目标线程确定后,以所述目标线程来处理所述待处理数据,在有多个线程相同扫描周期的实施例中,可以优先选择空闲的线程处理所述待处理数据。本实施例中,在所述s110之前还可以包括线程设置的步骤。在设置线程的过程中,根据可能获取的待处理数据来确定各个线程的扫描周期。例如,针对门禁控制系统,仅仅需要处理安全门逻辑判断任务模型和安全监测任务模型,则无需设置上述线程2和线程3对应的扫描周期,可以将线程1、线程2和线程3都设置为1ms级扫描周期,而线程4都设置为1s级扫描周期。从而进一步提高线程的利用率。

本实施例通过获取待处理数据,并根据所述待处理数据获取预设响应时间;获取plc引擎中线程的扫描周期,所述plc引擎包含m个线程,所述m为大于或等于2的整数,且至少两个所述线程的扫描周期不相同;根据所述扫描周期和预设响应时间,确定目标线程,以所述目标线程处理所述待处理数据。实现了线程的优化分配,减少高消耗线程处理低实时性要求的任务而导致的资源浪费,提高线程的利用率。

在所述m个线程的一种实现方式中,所述m个线程的资源都是预配置的固定资源。所述m个线程之间不存在资源共享,各自独立使用固定资源进行工作,线程之间的数据传输则可以通过数据耦合实现。

相对于现有技术中对所有线程动态分配资源、动态任务创建方式的资源配置方案,本实施例为每个线程预配置固定资源,降低了由资源回收及资源分配失败导致的系统卡顿等问题发生的可能,提高了系统的安全性和稳定性。

图2为本发明提供的另一种嵌入式plc引擎实现方法流程示意图。在图1所示实施例的基础上,图2所示的实施例中,所述plc引擎中线程的扫描周期中的最大扫描周期,预先设置为小于安全监测任务模型的预设响应时间;所述s130包括:

s131,所述待处理数据包括安全监测任务模型时,根据所述最大扫描周期确定目标线程。

具体地,可以为所述安全监测任务模型专门预先设置一具有最大扫描周期的安全线程,所述最大扫描周期由所述安全检测任务模型的预设响应时间确定,最大扫描周期预先设置为小于安全监测任务模型的预设响应时间。

所述s131的一种实现方式为:在检测到所述待处理数据包括安全监测任务模型时,直接以最大扫描周期的线程作为所述安全监测任务模型的目标线程。

本实施例中,通过在所述待处理数据包括安全监测任务模型时,根据所述最大扫描周期确定目标线程,提高了确定安全监测任务模型的目标线程的效率。

图3为本发明提供的再一种嵌入式plc引擎实现方法流程示意图。在图1或图2所示实施例的基础上,图3所示的实施例中所述s130包括:

s132,在所述plc引擎中线程的扫描周期中,获取小于所述预设响应时间的最大扫描周期。

具体地,可以建立扫描周期与线程的对应关系。通过遍历所述对应关系,将所述扫描周期与所述预设响应时间进行比较,即可获取小于所述预设响应时间的扫描周期集合,再从获取的扫描周期集合中选取出最大扫描周期。

s133,根据所述最大扫描周期确定所述目标线程。

本实施例通过在所述plc引擎中线程的扫描周期中,获取小于所述预设响应时间的最大扫描周期,根据所述最大扫描周期确定所述目标线程,实现了以最接近预设响应时间的扫描周期确定目标线程,提高了线程的使用效率。

图4为本发明提供的再一种嵌入式plc引擎实现方法流程示意图。在图1~3所示实施例的基础上,图4所示的实施例中,在所述s140之前,还包括目标线程的触发过程:

s141,确定系统时钟计数是否到达所述目标线程的预设触发计数值。

每个线程都预设有触发计数值,具体可以是一计数变量,所述计数变量的计数刻度由所述线程的扫描周期确定。例如所述线程4的扫描周期为1s级,则所述线程4的计数变量的计数刻度为1s。所述系统时钟的计数刻度由线程的最小扫描周期确定,本实施例中所述系统时钟的计数刻度为1ms,在系统时钟计数1000ms时,所述线程4的计数变量计数1s。若线程4为目标线程,若所述线程4的预设触发计数值为5s,则在所述线程4的计数变量的计数达到5s时,确定系统时钟计数到达所述目标线程的预设触发计数值。所述计数变量的计数开始时刻可以是嵌入式plc完成系统初始化后各线程同时开始,也可以是预设的起算时刻,所述预设的起算时刻例如是在接收到嵌入式plc外部输入信号触发时,或者是接收到远程通讯时等。不同线程的计数变量的计数开始时刻可以相同,也可以不同,在此不做限定。

系统时钟可以采用嵌入式cpu的通用定时器或系统的滴答时钟实现。系统时钟的计数刻度由嵌入式plc所应用的场合决定。对于一般的工业场合,系统时钟的计数刻度可以是1ms级;而对于需要高速运动控制的场合,系统时钟的计数刻度可以是0.1ms级,甚至更低。系统时钟的计数刻度越小,系统开销越大。本实施例中,所述系统时钟的计数采用中断方式实现精确定时,每一个计数刻度均产生一次时钟中断。

s142,若系统时钟计数到达所述目标线程的预设触发计数值,则执行所述以所述目标线程处理所述待处理数据。

本实施例以到达所述预设触发计数值为目标线程开始处理待处理数据的触发条件,以最小的系统开销实现了各线程的按需实时调度,实现了对所述待处理数据的开始处理时间的精确控制。

在上述实施例中,在所述s110之前,还包括初始化过程:

s101,扫描硬件获取硬件逻辑信息,并确认所述硬件逻辑信息是否通过安全检测;

s102,若所述硬件逻辑信息通过安全检测,则加载操作系统的核心程序和线程调度系统,所述线程调度系统包括所述m个线程;

s103,加载plc驱动程序;

s104,加载所述待处理数据。

本实施例通过初始化过程对plc硬件系统进行安全检测和数据加载。

图5本发明提供的一种嵌入式plc引擎结构示意图。图5所示的实施例包括:

第一获取模块51,用于获取待处理数据,并根据所述待处理数据获取预设响应时间;

第二获取模块52,用于获取plc引擎中线程的扫描周期,所述plc引擎包含m个线程,所述m为大于或等于2的整数,且至少两个所述线程的扫描周期不相同;

目标线程确定模块53,用于根据所述扫描周期和预设响应时间,确定目标线程;

数据处理模块54,用于以所述目标线程处理所述待处理数据。

在上述实施例中,所述m个线程的资源都是预配置的固定资源

在上述实施例中,所述plc引擎中线程的扫描周期中的最大扫描周期,预先设置为小于安全监测任务模型的预设响应时间;

所述目标线程确定模块53具体用于:所述待处理数据包括安全监测任务模型时,根据所述最大扫描周期确定目标线程。

在上述实施例中,所述目标线程确定模块53具体用于:

在所述plc引擎中线程的扫描周期中,获取小于所述预设响应时间的最大扫描周期;

根据所述最大扫描周期获取所述目标线程。

图5所示实施例的装置对应地可用于执行图1~图3所示方法实施例中的步骤,其实现原理和技术效果类似,此处不再赘述。

图6本发明提供的另一种嵌入式plc引擎结构示意图。在图5所示实施例的基础上,图6所示实施例还包括:

触发模块61,用于在所述以所述目标线程处理所述待处理数据之前,确定系统时钟计数是否到达所述目标线程的预设触发计数值;若系统时钟计数到达所述目标线程的预设触发计数值,则执行所述以所述目标线程处理所述待处理数据。

所述plc引擎还包括始终刻度计数器,用于提供所述系统时钟的计数。

图6所示实施例的装置对应地可用于执行图1~图4所示方法实施例中的步骤,其实现原理和技术效果类似,此处不再赘述。

在上述实施例中,还包括初始化模块,用于扫描硬件获取硬件逻辑信息,并确认所述硬件逻辑信息是否通过安全检测;若所述硬件逻辑信息通过安全检测,则加载操作系统的核心程序和线程调度系统,所述线程调度系统包括所述m个线程;加载plc驱动程序;加载所述待处理数据。

所述plc引擎还包括数据接口和plc驱动程序接口,所述plc引擎通过所述数据接口获取所述待处理数据,通过所述plc驱动程序接口获取所述plc驱动程序。本实施例通过初始化模块对plc硬件系统进行安全检测和数据加载。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

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