CN109582379A - 基于微内核操作系统的可编程逻辑控制器系统、控制方法 - Google Patents
基于微内核操作系统的可编程逻辑控制器系统、控制方法 Download PDFInfo
- Publication number
- CN109582379A CN109582379A CN201811481394.1A CN201811481394A CN109582379A CN 109582379 A CN109582379 A CN 109582379A CN 201811481394 A CN201811481394 A CN 201811481394A CN 109582379 A CN109582379 A CN 109582379A
- Authority
- CN
- China
- Prior art keywords
- thread
- file
- communication processing
- setting
- worker
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4403—Processor initialisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/572—Secure firmware programming, e.g. of basic input output system [BIOS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Programmable Controllers (AREA)
Abstract
本发明公开了一种基于微内核操作系统的可编程逻辑控制器系统、控制方法,其中,系统包括:根线程模块,用于运行根线程进行内存地址空间映射,PLC初始化,创建通讯处理线程、辅助线程,提供触发通讯处理线程、辅助线程和运算线程运行的定时机制;通讯处理线程模块,用于运行通讯处理线程对经过TCP/IP协议栈处理后的报文进行应用层解析处理;在收到全下装服务时,通知辅助线程模块加载文件;辅助线程模块,用于运行辅助线程加载用户工程文件,动态创建运算线程模块;运算线程模块,用于运行运算线程执行PLC控制逻辑和IO数据。本发明可提升PLC系统的安全性和可靠性。
Description
技术领域
本发明涉及可编程逻辑控制技术,尤指一种基于微内核操作系统的可编程逻辑控制器系统、控制方法。
背景技术
可编程控制器PLC广泛应用于工业自动化领域,是企业生产自动化运行的关键设备。当前PLC系统的安全性受到业界的高度重视,提高PLC系统安全性的主要方向有:
研究PLC所用中央处理器CPU芯片的安全性,目的是提升PLC硬件的安全性。
研究PLC软件所用操作系统的安全性,目的是提升PLC操作系统的安全性。
研究PLC固件的可信启动、通信加解密技术、访问控制等技术,在此基础上开发具备主动安全防御能力的可信PLC。
研究通用防病毒软件在工业控制环境的应用,目的是提升PLC外部环境的安全性。
上述方向从不同层面出发,研究提升PLC系统安全性的措施。
发明内容
本发明提供了一种基于微内核操作系统的可编程逻辑控制器系统、控制方法,可提升PLC系统的安全性和可靠性。
为了达到本发明目的,本发明提供了一种基于微内核操作系统的可编程逻辑控制器系统,包括:
根线程模块,用于运行根线程进行内存地址空间映射,可编程逻辑控制器PLC初始化,创建通讯处理线程、辅助线程,以及提供触发所述通讯处理线程、辅助线程和运算线程运行的定时机制;
通讯处理线程模块,用于运行所述通讯处理线程对经过传输控制协议TCP/因特网互联协议IP协议栈处理后的报文进行应用层解析处理;以及在收到全下装服务时,通知辅助线程模块加载文件;
辅助线程模块,用于运行所述辅助线程加载用户工程文件,以及动态创建运算线程模块;
所述运算线程模块,用于运行所述运算线程执行PLC控制逻辑和输入输出IO数据。
作为一种实现方式,所述通讯处理线程模块,用于运行所述通讯处理线程对经过TCP/IP协议栈处理后的报文进行应用层解析处理,包括:
在设置的周期开始后,检查接收缓冲区,如果所述接收缓存区存储有报文,则根据服务类型对存储的报文进行处理,所述服务类型包括:登录、传文件服务、全下装服务、读变量服务、写变量服务、强制;对报文处理完毕后准备应答信息,并将应答信息发送至发送缓冲区缓存后睡眠直到设置的周期时间结束,然后开始下一个周期。
作为一种实现方式,所述通讯处理线程模块,用于在所述服务类型为传文件服务时,对存储的报文进行处理,包括:
在所述服务类型为传文件服务时,调用设置在应用层的一个或多个文件访问接口进行文件传输;
所述辅助线程模块,用于运行所述辅助线程加载用户工程文件,包括:
所述辅助线程模块,用于调用设置在应用层的一个或多个文件访问接口读取用户工程文件内容。
作为一种实现方式,所述辅助线程模块包括工程加载线程子模块和主线程子模块:
所述工程加载线程子模块,用于运行所述工程加载线程加载用户工程文件,包括:
在设置的周期开始后,判断是否需要加载工程文件,如果不需要加载工程文件,睡眠直到设置的周期结束;如果需要加载工程文件,解析工程文件并向主线程子模块发出创建运算线程通知后,睡眠直到设置的周期结束;
主线程子模块,用于运行所述主线程动态创建运算线程,包括:
在设置的周期开始后,判断是否接收到所述工程加载线程子模块发送的创建运算线程通知,如果接收到,创建运算线程并设置该运算线程为可运行状态,睡眠直到设置的周期结束;如果没有接收到,睡眠直到设置的周期结束。
作为一种实现方式,根线程模块,用于提供触发所述通讯处理线程、辅助线程和运算线程运行的定时机制,包括:
调用定时处理函数,等待中断信号到来,当所述中断信号到来,继续执行所述定时处理函数,更新当前时间基准,依次检查所述通讯处理线程、辅助线程、运算线程的睡眠时间;如果存在睡眠时间到期的线程,则触发该线程运行;当检查完毕,再次等待所述中断信号到来。
本发明实施例还提供了一种基于微内核操作系统的可编程逻辑控制方法,所述方法包括:
运行根线程进行内存地址空间映射,可编程逻辑控制器PLC初始化,创建通讯处理线程、辅助线程,以及提供触发通讯处理线程、辅助线程和运算线程运行的定时机制;
运行所述通讯处理线程对经过传输控制协议TCP/因特网互联协议IP协议栈处理后的报文进行应用层解析处理;
在收到全下装服务时,运行所述辅助线程加载用户工程文件以及动态创建运算线程;
运行所述运算线程执行PLC控制逻辑和输入输出IO数据。
作为一种实现方式,运行所述通讯处理线程对经过TCP/IP协议栈处理后的报文进行应用层解析处理,包括:
在设置的周期开始后,检查接收缓冲区,如果所述接收缓存区存储有报文,则根据服务类型对存储的报文进行处理,所述服务类型包括:登录、传文件服务、全下装服务、读变量服务、写变量服务、强制;对报文处理完毕后准备应答信息,并将应答信息发送至发送缓冲区缓存后睡眠直到设置的周期时间结束,然后开始下一个周期。
作为一种实现方式,在所述服务类型为传文件服务时,对存储的报文进行处理,包括:
所述服务类型为传文件服务时,调用设置在应用层的一个或多个文件访问接口进行文件传输;
运行所述辅助线程加载用户工程文件,包括:
调用设置在应用层的一个或多个文件访问接口读取用户工程文件内容。
作为一种实现方式,运行所述辅助线程加载用户工程文件,包括:
在设置的周期开始后,判断是否需要加载工程文件,如果不需要加载工程文件,睡眠直到设置的周期结束;如果需要加载工程文件,解析工程文件并发出创建运算线程通知后,睡眠直到设置的周期结束;
动态创建运算线程,包括:
在设置的周期开始后,判断是否接收到创建运算线程通知,如果接收到,创建运算线程并设置该运算线程为可运行状态,睡眠直到设置的周期结束;如果没有接收到,睡眠直到设置的周期结束。
作为一种实现方式,运行根线程提供触发通讯处理线程、辅助线程和运算线程运行的定时机制,包括:
调用定时处理函数,等待中断信号到来,当所述中断信号到来,继续执行所述定时处理函数,更新当前时间基准,依次检查所述通讯处理线程、辅助线程、运算线程的睡眠时间;如果存在睡眠时间到期的线程,则触发该线程运行;当检查完毕,再次等待所述中断信号到来。
本发明实施例还提供了一种计算机可读存储介质,所述介质存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现如前所述的基于微内核操作系统的可编程逻辑控制方法的步骤。
与现有技术相比,本发明包括:根线程模块,用于运行根线程进行内存地址空间映射,可编程逻辑控制器PLC初始化,创建通讯处理线程、辅助线程,以及提供触发所述通讯处理线程、辅助线程和运算线程运行的定时机制;通讯处理线程模块,用于运行所述通讯处理线程对经过传输控制协议TCP/因特网互联协议IP协议栈处理后的报文进行应用层解析处理;以及在收到全下装服务时,通知辅助线程模块加载文件;辅助线程模块,用于运行所述辅助线程加载用户工程文件,以及动态创建运算线程模块;所述运算线程模块,用于运行所述运算线程执行PLC控制逻辑和输入输出IO数据。本发明可提升PLC系统的安全性和可靠性。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
图1为本发明实施例提供的基于微内核操作系统的可编程逻辑控制器系统模块图;
图2为本发明应用示例中PLC的内部结构图;
图3为本发明应用示例中根线程模块工作流程示意图;
图4为本发明应用示例中网络协议栈线程模块工作流程示意图;
图5为本发明应用示例中通讯处理线程模块工作流程示意图;
图6为本发明应用示例中运算线程模块工作流程示意图;
图7为本发明实施例提供的基于微内核操作系统的可编程逻辑控制方法流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本发明实施例提供了一种基于微内核操作系统的可编程逻辑控制器系统,所述微内核操作系统可以只提供线程管理、进程间通信、虚拟内存空间、句柄空间、设备基础单元(中断对象)五项功能,所述可编程逻辑控制器系统如图1所示,包括:
根线程模块,用于运行根线程进行内存地址空间映射,可编程逻辑控制器PLC初始化,创建通讯处理线程、辅助线程,以及提供触发所述通讯处理线程、辅助线程和运算线程运行的定时机制;
ARM上电后引导程序开始运行,引导程序加载微内核操作系统到内存,并将控制权交给微内核操作系统;微内核操作系统获得控制权后,完成操作系统的初始化工作,自动建立IDLE线程和根线程;
根线程创建通讯处理线程、辅助线程可基于微内核操作系统提供的线程创建函数实现;
通讯处理线程模块,用于运行所述通讯处理线程对经过传输控制协议TCP/因特网互联协议IP协议栈处理后的报文进行应用层解析处理;以及在收到全下装服务时,通知辅助线程模块加载文件;
辅助线程模块,用于运行所述辅助线程加载用户工程文件,以及动态创建运算线程模块;IEC61131-3标准规定了五种通用的PLC编程语言,用户可使用其中任意一种编程语言写PLC控制逻辑。组态软件将所述PLC控制逻辑编译后生成一个文件,该文件就叫用户工程文件,也叫做IEC工程文件;
所述运算线程模块,用于运行所述运算线程执行PLC控制逻辑和输入输出IO数据。
作为一种实现方式,根线程模块,用于提供触发所述通讯处理线程、辅助线程和运算线程运行的定时机制,包括:
调用定时处理函数,等待中断信号到来,当所述中断信号到来,继续执行所述定时处理函数,更新当前时间基准,依次检查所述通讯处理线程、辅助线程、运算线程的睡眠时间;如果存在睡眠时间到期的线程,则触发该线程运行;当检查完毕,再次等待所述中断信号到来。
通讯处理线程、辅助线程、运算线程都是周期运行,依赖一个公共的定时机制。本发明实施例中该定时机制可以由根线程实现。
作为一种实现方式,根线程模块,还用于当所述中断信号没有到来时,阻塞所述定时处理函数,将已有的中央处理器CPU执行权限转给所述通讯处理线程、辅助线程、运算线程。
作为一种实现方式,所述通讯处理线程模块,用于运行所述通讯处理线程对经过TCP/IP协议栈处理后的报文进行应用层解析处理,包括:
在设置的周期开始后,检查接收缓冲区,如果所述接收缓存区存储有报文,则根据服务类型对存储的报文进行处理,所述服务类型包括:登录、传文件服务、全下装服务、读变量服务、写变量服务、强制;对报文处理完毕后准备应答信息,并将应答信息发送至发送缓冲区缓存后睡眠直到设置的周期时间结束,然后开始下一个周期,所述设置的周期可以为50ms。
作为一种实现方式,所述通讯处理线程模块,用于在所述服务类型为传文件服务时,对存储的报文进行处理,包括:
在所述服务类型为传文件服务时,调用设置在应用层的一个或多个文件访问接口进行文件传输;
所述辅助线程模块,用于运行所述辅助线程加载用户工程文件,包括:
所述辅助线程模块,用于调用设置在应用层的一个或多个文件访问接口读取用户工程文件内容。
作为一种实现方式,通讯处理线程模块在收到全下装服务时,可以设置“加载工程”标志,从而告知辅助线程模块需要加载文件了。
作为一种实现方式,通讯处理线程模块收到写变量和强制服务时,可以不立即执行,而是缓存起来,交给运算线程模块执行。
作为一种实现方式,所述辅助线程模块包括工程加载线程子模块和主线程子模块:
所述工程加载线程子模块,用于运行所述工程加载线程加载用户工程文件,包括:
在设置的周期开始后,判断是否需要加载用户工程文件,如果不需要加载用户工程文件,睡眠直到设置的周期结束;如果需要加载用户工程文件,解析用户工程文件并向主线程子模块发出创建运算线程通知后,睡眠直到设置的周期结束,所述设置的周期可以为50ms;作为一种实现方式,工程加载线程子模块可以通过判断是否有“加载工程”标志来判断是否需要加载用户工程文件;
主线程子模块,用于运行所述主线程动态创建运算线程,包括:
在设置的周期开始后,判断是否接收到所述工程加载线程子模块发送的创建运算线程通知,如果接收到,创建运算线程并设置该运算线程为可运行状态,睡眠直到设置的周期结束;如果没有接收到,睡眠直到设置的周期结束,所述设置的周期可以为10ms。
上述线程中,根线程优先级高于其它线程,通讯处理线程、工程加载线程、主线程和运算线程的优先级依次为:101、126、115、116。微内核操作系统提供了基于优先级的抢占式任务调度机制,上述线程由操作系统根据优先级自动调度。微内核操作系统只提供基于消息的进程间通信(Inter Process Communication,IPC)机制,上述线程间使用该IPC机制实现交互。上述线程可以采用静态内存声明变量,运行在微内核操作系统提供的虚拟地址空间。
作为一种实现方式,运算线程模块,用于运行所述运算线程执行PLC控制逻辑和输入输出IO数据,包括:
在设置的周期开始后,从输入口读取输入数据,向输出口写输出数据,执行PLC控制逻辑,保存需要掉电保存的变量,睡眠直到设置的周期结束,所述设置的周期最低可以为10ms。所述输入口和输出口可以为集成在一个双口随机存取存储器(random accessmemory,RAM)上。
作为一种实现方式,所述可编程逻辑控制器系统还可以包括:网络协议栈线程模块,用于实现网卡驱动、将从网卡接收到的报文执行TCP/IP协议处理后保存到接收缓冲区,以及将发送缓冲区的报文执行TCP/IP协议处理后通过网卡发送出去。
与通用操作系统相比,本发明实施例基于的微内核操作系统只包含基本功能,源代码规模小易于验证,bug大大降低,安全性和可靠性显著提高。基于该微内核操作系统实现的PLC系统,安全性和可靠性必然随之提高。
下面以一个具体的应用示例对本发明实施例所述的基于微内核操作系统的可编程逻辑控制器系统进行说明。
图2为PLC的内部结构图,本发明实施例所述的基于微内核操作系统的可编程逻辑控制器系统对应图2中的PLC软件,其是运行在微内核操作系统之上的一组应用层线程。
本应用示例中PLC硬件可以采用ZYNQ7010双核处理器,板载512MB内存,具备百兆网卡接口。
如图3所示,根线程模块主要完成以下工作:
首先根据微内核操作系统提供的启动信息初始化内存地址空间;
然后调用初始化函数RtsInit(),该函数功能为:完成文件系统初始化、现场总线(如DP)初始化、以太网通讯初始化、外部库初始化、代码管理初始化、诊断初始化等,以及创建通讯处理线程、工程加载线程、主线程;
通过操作系统接口初始化一个1ms硬件定时器,然后进入while循环,在循环中调用定时器处理函数VOS_TaskSimuTimers(),该函数等待1ms中断,如果1ms中断没有到来,该VOS_TaskSimuTimers()被阻塞,于是让出CPU执行权限给其它线程执行;当1ms硬件定时器时间到来,硬件中断被操作系统内核捕获,操作系统内核通过IPC机制通知根线程,于是VOS_TaskSimuTimers()继续执行。VOS_TaskSimuTimers()首先更新PLC软件的时间基准(开机后运行了多少毫秒),然后检查其它线程的睡眠时间,如果某个线程睡眠时间到期,就通过IPC机制给该线程发信号触发运行。VOS_TaskSimuTimers()检查完所有其它线程的睡眠时间后,再次等待1ms中断,如果1ms终端没有来VOS_TaskSimuTimers()被阻塞,于是再次让出CPU执行权限。上述过程周而复始。需要注意的是,根线程是优先级最高的线程,VOS_TaskSimuTimers()执行时其它线程被操作系统暂停执行,VOS_TaskSimuTimers()阻塞时其它线程才执行。
如图4所示,网络协议栈线程模块主要完成以下工作:
该线程等待网卡中断并设置5ms超时。当没有中断也没有达到超时时,网络协议栈线程被阻塞。当网卡中断发生时,中断被操作系统内核捕获,操作系统内核通过IPC机制通知网络协议栈线程,网络协议栈线程开始运行。网络协议栈线程接收网卡数据,对网络报文执行TCP/IP协议栈处理,处理协议栈内部软定时事件,处理待发送数据,然后重新等待网卡中断并设置超时。如果网卡中断一直没来,且超时时间没有到,网络协议栈线程将处于阻塞状态。此时根线程可以每1ms检测一次超时时间,当5ms超时时间到来时,根线程给网络协议栈线程发信号。网络协议栈线程收到信号后被唤醒,处理协议栈内部软定时事件,然后重新等待网卡中断并设置超时。上述过程周而复始。
如图5所示,通讯处理线程模块主要完成以下工作:
处理具体的PLC软件通讯服务,周期是50ms。在每个50ms周期,通讯处理线程首先检查接收缓冲区,如果有数据报文就根据服务类型调用具体的处理函数。这些服务包括登录、传文件服务、全下装服务、读变量、写变量、强制等,服务处理完毕后准备应答信息,将应答信息送入一个发送缓冲区缓存。接着通讯处理线程睡眠直到50ms结束,然后开始下一个周期。通讯处理线程睡眠期间,由根线程每1ms检测一次睡眠时间,当睡眠时间结束时,根线程给通讯处理线程发信号并唤醒它。
上述网络协议栈线程和通讯处理线程是两个独立的线程,二者的协作过程是:网络协议栈线程从网卡收到报文后,送到TCP/IP协议栈处理,经过协议栈处理后的报文送入一个接收缓冲区缓存;通讯处理线程周期性读取接收缓冲区,发现有报文后,检查报文格式、解析并处理具体服务、填写应答报文,并将应答报文送入一个发送缓冲区缓存;网络协议栈线程检查发送缓冲区,如果有待发送的数据就首先送到TCP/IP协议栈处理,然后经过网卡发送到网络。
工程加载线程是一个周期任务,周期是50ms。该线程首先检查“加载工程”标志,如果不需要加载工程文件,直接睡眠到50ms;如果需要加载工程文件,就按照特定格式解析用户工程文件,然后设置“创建IEC”标志,并睡眠到50ms。睡眠到期后开始下一周期,重复上述过程,周而复始。
本发明中主线程是一个周期任务,周期是10ms。该线程首先检查“创建IEC”标志,如果不需要创建运算线程,直接睡眠到10ms;如果需要创建运算线程,就动态创建一个运算线程,设置运算线程为可运行状态,然后睡眠到10ms。睡眠到期后开始下一周期,重复上述过程,周而复始。
运算线程是一个周期任务,周期由用户在工程中设定,最低10ms。如图6所示,运算线程模块主要完成以下工作:
首先读取双口RAM的输入数据,然后向双口RAM写输出数据。接下来执行写变量、执行强制,随后执行用户的PLC控制逻辑,而后保存需要掉电保存的变量,最后睡眠直到本周期结束。睡眠到期后开始下一周期,重复上述过程,周而复始。
本发明实施例还提供了一种基于微内核操作系统的可编程逻辑控制方法,如图7所示,所述方法包括:
S701运行根线程进行内存地址空间映射,可编程逻辑控制器PLC初始化,创建通讯处理线程、辅助线程,以及提供触发通讯处理线程、辅助线程和运算线程运行的定时机制;
S702运行所述通讯处理线程对经过传输控制协议TCP/因特网互联协议IP协议栈处理后的报文进行应用层解析处理;
S703在收到全下装服务时,运行所述辅助线程加载用户工程文件以及动态创建运算线程;
S704运行所述运算线程执行PLC控制逻辑和输入输出IO数据。
作为一种实现方式,运行所述通讯处理线程对经过TCP/IP协议栈处理后的报文进行应用层解析处理,包括:
在设置的周期开始后,检查接收缓冲区,如果所述接收缓存区存储有报文,则根据服务类型对存储的报文进行处理,所述服务类型包括:登录、传文件服务、全下装服务、读变量服务、写变量服务、强制;对报文处理完毕后准备应答信息,并将应答信息发送至发送缓冲区缓存后睡眠直到设置的周期时间结束,然后开始下一个周期。
作为一种实现方式,在所述服务类型为传文件服务时,对存储的报文进行处理,包括:
所述服务类型为传文件服务时,调用设置在应用层的一个或多个文件访问接口进行文件传输;
运行所述辅助线程加载用户工程文件,包括:
调用设置在应用层的一个或多个文件访问接口读取用户工程文件内容。
作为一种实现方式,运行所述辅助线程加载用户工程文件,包括:
在设置的周期开始后,判断是否需要加载用户工程文件,如果不需要加载用户工程文件,睡眠直到设置的周期结束;如果需要加载用户工程文件,解析用户工程文件并发出创建运算线程通知后,睡眠直到设置的周期结束;
动态创建运算线程,包括:
在设置的周期开始后,判断是否接收到创建运算线程通知,如果接收到,创建运算线程并设置该运算线程为可运行状态,睡眠直到设置的周期结束;如果没有接收到,睡眠直到设置的周期结束。
作为一种实现方式,运行根线程提供触发通讯处理线程、辅助线程和运算线程运行的定时机制,包括:
调用定时处理函数,等待中断信号到来,当所述中断信号到来,继续执行所述定时处理函数,更新当前时间基准,依次检查所述通讯处理线程、辅助线程、运算线程的睡眠时间;如果存在睡眠时间到期的线程,则触发该线程运行;当检查完毕,再次等待所述中断信号到来。
与通用操作系统相比,本发明实施例基于的微内核操作系统只包含基本功能,源代码规模小易于验证,bug大大降低,安全性和可靠性显著提高。基于该微内核操作系统实现的PLC系统,安全性和可靠性必然随之提高。
本发明实施例还提供了一种计算机可读存储介质,所述介质存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现如前实施例所述的基于微内核操作系统的可编程逻辑控制方法的步骤。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
Claims (11)
1.一种基于微内核操作系统的可编程逻辑控制器系统,其特征在于,包括:
根线程模块,用于运行根线程进行内存地址空间映射,可编程逻辑控制器PLC初始化,创建通讯处理线程、辅助线程,以及提供触发所述通讯处理线程、辅助线程和运算线程运行的定时机制;
通讯处理线程模块,用于运行所述通讯处理线程对经过传输控制协议TCP/因特网互联协议IP协议栈处理后的报文进行应用层解析处理;以及在收到全下装服务时,通知辅助线程模块加载文件;
辅助线程模块,用于运行所述辅助线程加载用户工程文件,以及动态创建运算线程模块;
所述运算线程模块,用于运行所述运算线程执行PLC控制逻辑和输入输出IO数据。
2.根据权利要求1所述的于微内核操作系统的可编程逻辑控制器系统,其特征在于,
所述通讯处理线程模块,用于运行所述通讯处理线程对经过TCP/IP协议栈处理后的报文进行应用层解析处理,包括:
在设置的周期开始后,检查接收缓冲区,如果所述接收缓存区存储有报文,则根据服务类型对存储的报文进行处理,所述服务类型包括:登录、传文件服务、全下装服务、读变量服务、写变量服务、强制;对报文处理完毕后准备应答信息,并将应答信息发送至发送缓冲区缓存后睡眠直到设置的周期时间结束,然后开始下一个周期。
3.根据权利要求2基于微内核操作系统的可编程逻辑控制器系统,其特征在于,
所述通讯处理线程模块,用于在所述服务类型为传文件服务时,对存储的报文进行处理,包括:
在所述服务类型为传文件服务时,调用设置在应用层的一个或多个文件访问接口进行文件传输;
所述辅助线程模块,用于运行所述辅助线程加载用户工程文件,包括:
所述辅助线程模块,用于调用设置在应用层的一个或多个文件访问接口读取用户工程文件内容。
4.根据权利要求2或3所述的基于微内核操作系统的可编程逻辑控制器系统,其特征在于,
所述辅助线程模块包括工程加载线程子模块和主线程子模块:
所述工程加载线程子模块,用于运行所述工程加载线程加载用户工程文件,包括:
在设置的周期开始后,判断是否需要加载工程文件,如果不需要加载工程文件,睡眠直到设置的周期结束;如果需要加载工程文件,解析工程文件并向主线程子模块发出创建运算线程通知后,睡眠直到设置的周期结束;
主线程子模块,用于运行所述主线程动态创建运算线程,包括:
在设置的周期开始后,判断是否接收到所述工程加载线程子模块发送的创建运算线程通知,如果接收到,创建运算线程并设置该运算线程为可运行状态,睡眠直到设置的周期结束;如果没有接收到,睡眠直到设置的周期结束。
5.根据权利要求1、2或3所述的基于微内核操作系统的可编程逻辑控制器系统,其特征在于,
根线程模块,用于提供触发所述通讯处理线程、辅助线程和运算线程运行的定时机制,包括:
调用定时处理函数,等待中断信号到来,当所述中断信号到来,继续执行所述定时处理函数,更新当前时间基准,依次检查所述通讯处理线程、辅助线程、运算线程的睡眠时间;如果存在睡眠时间到期的线程,则触发该线程运行;当检查完毕,再次等待所述中断信号到来。
6.一种基于微内核操作系统的可编程逻辑控制方法,其特征在于,所述方法包括:
运行根线程进行内存地址空间映射,可编程逻辑控制器PLC初始化,创建通讯处理线程、辅助线程,以及提供触发通讯处理线程、辅助线程和运算线程运行的定时机制;
运行所述通讯处理线程对经过传输控制协议TCP/因特网互联协议IP协议栈处理后的报文进行应用层解析处理;
在收到全下装服务时,运行所述辅助线程加载用户工程文件以及动态创建运算线程;
运行所述运算线程执行PLC控制逻辑和输入输出IO数据。
7.根据权利要求6所述的基于微内核操作系统的可编程逻辑控制方法,其特征在于,
运行所述通讯处理线程对经过TCP/IP协议栈处理后的报文进行应用层解析处理,包括:
在设置的周期开始后,检查接收缓冲区,如果所述接收缓存区存储有报文,则根据服务类型对存储的报文进行处理,所述服务类型包括:登录、传文件服务、全下装服务、读变量服务、写变量服务、强制;对报文处理完毕后准备应答信息,并将应答信息发送至发送缓冲区缓存后睡眠直到设置的周期时间结束,然后开始下一个周期。
8.根据权利要求7所述的基于微内核操作系统的可编程逻辑控制方法,其特征在于,
在所述服务类型为传文件服务时,对存储的报文进行处理,包括:
所述服务类型为传文件服务时,调用设置在应用层的一个或多个文件访问接口进行文件传输;
运行所述辅助线程加载用户工程文件,包括:
调用设置在应用层的一个或多个文件访问接口读取用户工程文件内容。
9.根据权利要求7或8所述的基于微内核操作系统的可编程逻辑控制方法,其特征在于,
运行所述辅助线程加载用户工程文件,包括:
在设置的周期开始后,判断是否需要加载工程文件,如果不需要加载工程文件,睡眠直到设置的周期结束;如果需要加载工程文件,解析工程文件并发出创建运算线程通知后,睡眠直到设置的周期结束;
动态创建运算线程,包括:
在设置的周期开始后,判断是否接收到创建运算线程通知,如果接收到,创建运算线程并设置该运算线程为可运行状态,睡眠直到设置的周期结束;如果没有接收到,睡眠直到设置的周期结束。
10.根据权利要求6、7或8所述的基于微内核操作系统的可编程逻辑控制方法,其特征在于,
运行根线程提供触发通讯处理线程、辅助线程和运算线程运行的定时机制,包括:
调用定时处理函数,等待中断信号到来,当所述中断信号到来,继续执行所述定时处理函数,更新当前时间基准,依次检查所述通讯处理线程、辅助线程、运算线程的睡眠时间;如果存在睡眠时间到期的线程,则触发该线程运行;当检查完毕,再次等待所述中断信号到来。
11.一种计算机可读存储介质,其特征在于,所述介质存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现如权利要求6至10中任一项所述的基于微内核操作系统的可编程逻辑控制方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811481394.1A CN109582379B (zh) | 2018-12-05 | 2018-12-05 | 基于微内核操作系统的可编程逻辑控制器系统、控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811481394.1A CN109582379B (zh) | 2018-12-05 | 2018-12-05 | 基于微内核操作系统的可编程逻辑控制器系统、控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109582379A true CN109582379A (zh) | 2019-04-05 |
CN109582379B CN109582379B (zh) | 2022-03-11 |
Family
ID=65926150
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811481394.1A Active CN109582379B (zh) | 2018-12-05 | 2018-12-05 | 基于微内核操作系统的可编程逻辑控制器系统、控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109582379B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111258684A (zh) * | 2020-01-22 | 2020-06-09 | 北京和利时系统工程有限公司 | 一种控制方法和装置 |
CN115857418A (zh) * | 2023-02-28 | 2023-03-28 | 深圳华龙讯达信息技术股份有限公司 | 一种基于耦合设计的可编程逻辑控制系统 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101303647A (zh) * | 2008-03-20 | 2008-11-12 | 中科院嘉兴中心微系统所分中心 | 一种无线传感器网络专用操作系统的设计方法 |
CN101963798A (zh) * | 2010-06-29 | 2011-02-02 | 东华大学 | 嵌入式轨道交通车站设备信息采集机及其方法 |
CN102708037A (zh) * | 2012-04-23 | 2012-10-03 | 山东中创软件工程股份有限公司 | 一种应用程序运行状态的检查方法和检查装置 |
US20130152096A1 (en) * | 2011-12-07 | 2013-06-13 | Chan-ju Park | Apparatus and method for dynamically controlling preemption section in operating system |
CN204496242U (zh) * | 2015-02-04 | 2015-07-22 | 北京和利时机器控制技术有限公司 | 一种plc无线通信装置 |
CN105549522A (zh) * | 2015-12-16 | 2016-05-04 | 中国电子信息产业集团有限公司第六研究所 | 一种基于sparc架构cpu的plc嵌入式实时安全控制运行系统及其运行方法 |
WO2017000637A1 (zh) * | 2015-06-30 | 2017-01-05 | 深圳市中兴微电子技术有限公司 | 一种闪存烧写方法、单板、上位机及系统 |
US20170269966A1 (en) * | 2016-03-18 | 2017-09-21 | Electronics And Telecommunications Research Institute | Method and apparatus for scheduling threads in many-core system |
CN108536085A (zh) * | 2018-04-23 | 2018-09-14 | 北京和利时智能技术有限公司 | 一种单总线通讯方法及系统 |
-
2018
- 2018-12-05 CN CN201811481394.1A patent/CN109582379B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101303647A (zh) * | 2008-03-20 | 2008-11-12 | 中科院嘉兴中心微系统所分中心 | 一种无线传感器网络专用操作系统的设计方法 |
CN101963798A (zh) * | 2010-06-29 | 2011-02-02 | 东华大学 | 嵌入式轨道交通车站设备信息采集机及其方法 |
US20130152096A1 (en) * | 2011-12-07 | 2013-06-13 | Chan-ju Park | Apparatus and method for dynamically controlling preemption section in operating system |
CN102708037A (zh) * | 2012-04-23 | 2012-10-03 | 山东中创软件工程股份有限公司 | 一种应用程序运行状态的检查方法和检查装置 |
CN204496242U (zh) * | 2015-02-04 | 2015-07-22 | 北京和利时机器控制技术有限公司 | 一种plc无线通信装置 |
WO2017000637A1 (zh) * | 2015-06-30 | 2017-01-05 | 深圳市中兴微电子技术有限公司 | 一种闪存烧写方法、单板、上位机及系统 |
CN105549522A (zh) * | 2015-12-16 | 2016-05-04 | 中国电子信息产业集团有限公司第六研究所 | 一种基于sparc架构cpu的plc嵌入式实时安全控制运行系统及其运行方法 |
US20170269966A1 (en) * | 2016-03-18 | 2017-09-21 | Electronics And Telecommunications Research Institute | Method and apparatus for scheduling threads in many-core system |
CN108536085A (zh) * | 2018-04-23 | 2018-09-14 | 北京和利时智能技术有限公司 | 一种单总线通讯方法及系统 |
Non-Patent Citations (4)
Title |
---|
WANG CHENGJUN: ""Research on the Microkernel Technology"", 《2009 SECOND INTERNATIONAL WORKSHOP ON COMPUTER SCIENCE AND ENGINEERING》 * |
杨州军: ""J-TEXT托卡马克中央控制系统的设计与实现"", 《中国优秀博硕士学位论文全文数据库(博士)信息科技辑》 * |
江连海: ""嵌入式控制系统开发平台上软PLC的实现"", 《中国优秀硕士学位论文全文数据库 工程科技Ⅱ辑》 * |
闫少勃等: ""国产化PLC上下位机安全通信技术研究"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111258684A (zh) * | 2020-01-22 | 2020-06-09 | 北京和利时系统工程有限公司 | 一种控制方法和装置 |
CN111258684B (zh) * | 2020-01-22 | 2023-09-29 | 北京和利时控制技术有限公司 | 一种控制方法和装置 |
CN115857418A (zh) * | 2023-02-28 | 2023-03-28 | 深圳华龙讯达信息技术股份有限公司 | 一种基于耦合设计的可编程逻辑控制系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109582379B (zh) | 2022-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1659470A2 (en) | Systems and methods for notifying multiple hosts from an industrial controller | |
CN110663006B (zh) | 对可编程逻辑控制器执行故障转移并控制物理系统的方法 | |
CN113179227B (zh) | 基于队列的at指令控制方法 | |
CN109582379A (zh) | 基于微内核操作系统的可编程逻辑控制器系统、控制方法 | |
CN111475312B (zh) | 基于实时操作系统的消息驱动方法和装置 | |
CN109507991B (zh) | 一种双轴伺服控制平台调试系统及方法 | |
CN108241522B (zh) | 虚拟化环境中的睡眠状态切换方法、装置及电子设备 | |
CN109558235B (zh) | 一种处理器的调度方法、装置及计算机设备 | |
CN115794313A (zh) | 一种虚拟机调试方法、系统、电子设备及存储介质 | |
CN112306652A (zh) | 带有上下文提示的功能的唤醒和调度 | |
CN116521324B (zh) | 中断虚拟化处理方法、装置及电子设备 | |
CN113608765A (zh) | 数据处理方法、装置、设备以及存储介质 | |
CN114303107A (zh) | 用于在具有opc ua的控制程序中同步地调用功能模块的方法和工业控制器 | |
CN114257492B (zh) | 智能网卡的故障处理方法、装置、计算机设备和介质 | |
CN112084099B (zh) | 基于主机获取报警状态值的方法、装置、设备及存储介质 | |
CN106922189B (zh) | 设备代理装置及其控制方法 | |
CN111433738A (zh) | 控制器事件队列 | |
CN114416322A (zh) | 基于双链表的任务调度方法、装置、电子设备及存储介质 | |
CN114281529A (zh) | 分布式虚拟化的客户操作系统调度优化方法、系统及终端 | |
US11360926B2 (en) | Configuration management device, configuration management system, configuration management method, and non-transitory computer readable storage medium | |
US10803007B1 (en) | Reconfigurable instruction | |
EP1227401B1 (en) | Task management device, method and program therefor | |
CN112791386B (zh) | 多窗口激活状态生成方法、装置、设备及可读存储介质 | |
CN115314338B (zh) | 一种实时性运动控制方法及系统 | |
CN113778712B (zh) | 嵌入式系统 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |