CN109932997A - 一种可编程逻辑控制器内核*** - Google Patents
一种可编程逻辑控制器内核*** Download PDFInfo
- Publication number
- CN109932997A CN109932997A CN201910155771.0A CN201910155771A CN109932997A CN 109932997 A CN109932997 A CN 109932997A CN 201910155771 A CN201910155771 A CN 201910155771A CN 109932997 A CN109932997 A CN 109932997A
- Authority
- CN
- China
- Prior art keywords
- user program
- plc
- program
- task
- pointer
- 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
Landscapes
- Programmable Controllers (AREA)
Abstract
本发明公开了一种可编程逻辑控制器内核***,该***包括PLC内核,所述PLC内核包括通信处理单元、程序执行单元、存储单元和硬件驱动接口;通信处理单元用于权限管理的设定、用户程序的上传与下载和变量的上传与下载;程序执行单元用于执行用户程序;存储单元用于保存用户程序以及运行结果的保持,运行结果通过程序执行单元执行用户程序所得;硬件驱动接口用于通过预设的硬件驱动程序将运行结果刷新到新的硬件设备上;其效果是:对PLC内核的功能特性进行完整的封装和高度抽象,无需专业人员进行代码编写,像操作表格一样完成相关硬件参数的填写,就能自动生成程序,编译输出到新的硬件设备上完成PLC的开发,大大提高PLC功能开发的效率,降低维护成本。
Description
技术领域
本发明涉及可编程逻辑控制器技术领域,具体涉及一种可编程逻辑控制器内核***。
背景技术
可编程逻辑控制器(PLC,Programmable Logic Controller)是一种广泛应用于自动控制***的控制器,其硬件结构基本上与微型计算机相同。其中,中央处理单元(CPU,Central Processing Unit)是PLC的控制中枢。PLC还具有PLC编译器,其用于将串行的、用工程语言描述的自动控制程序(以下简称用户程序)转换为可供CPU执行的机器代码,进而CPU得以执行控制程序中的各个指令。
然而现有技术中,要完成对PLC的开发,需要专业技术人员进行长时间的开发,其开发成本高、开发进度慢。
发明内容
本发明的目的是提供一种降低了PLC开发的成本,降低了对专业技术人员的依赖的一种可编程逻辑控制器内核***。
本发明实例采取的一种技术方案为:一种可编程逻辑控制器内核***,包括PLC内核,所述PLC内核包括通信处理单元、程序执行单元、存储单元和硬件驱动接口;
所述通信处理单元用于权限管理的设定、用户程序的上传与下载和变量的上传与下载;
所述程序执行单元用于执行所述用户程序;
所述存储单元用于保存所述用户程序以及运行结果的保持,所述运行结果通过所述程序执行单元执行用户程序所得;
所述硬件驱动接口用于通过预设的硬件驱动程序将所述运行结果刷新到新的硬件设备上。
作为本发明的一个优选的技术方案,所述存储单元包括用户程序内存单元、I/O内存映像单元和永久存储单元;
所述永久存储单元用于对所述用户程序进行保存;
所述I/O内存映像单元用于所述运行结果的保持;
所述用户程序内存单元用于在执行所述用户程序时,从所述永久存储单元读取所述用户程序并进行存放,同时记录所述用户程序中每段程序在存放时所生成的内存地址。
作为本发明的一个优选的技术方案,所述永久存储单元具体包括:第一内存单元、第二内存单元、第三内存单元、第四内存单元和第五内存单元;
所述第一内存单元用于存放用户程序中硬件设备的规格信息——控制器的型号,存储空间的大小和I/O点数和用户权限信息;
所述第二内存单元用于用户程序中存放变量,变量分为两种:一种是内存变量,不使用硬件I/O点数信息表;另外一种变量是与硬件I/O点数信息表相映射,访问这个变量,就是访问硬件I/O点数信息表。硬件模块的I/O信息表,即硬件I/O点数映射表,每个I/O点都有方便用户程序使用的别名,而别名和硬件I/O之间的关系表,就是硬件模块的I/O信息表;
所述第三内存单元用于在用户程序中为用户预留,便于扩展使用;
所述第四内存单元用于存放用户程序中不同优先级任务的代码段信息;
所述第五内存单元用于存放用户程序中事件处理任务的代码段信息。
作为本发明的一个优选的技术方案,所述程序执行单元包括内核处理器、代码段指针、数据段指针和偏移指针;
执行用户程序时,所述代码段指针从所述偏移指针的地址处取出对应代码段的指令;
所述内核处理器根据所述代码段的指令进入对应的执行任务,并判断所述代码段的指令中是否存在参数,不存在,则判断用户程序是否结束;存在,则根据所述参数进行指令运算,并在运算后修改所述偏移指针的地址,直到执行最后一条指令后,停止用户程序的执行并进行停止任务标记和时间信息的记录。
作为本发明的一个优选的技术方案,所述内核处理器执行用户任务时,按优先级任务的降序排列进行任务切换,且任一优先级任务执行后在预设时间内无法将其再次投入执行。
作为本发明的一个优选的技术方案,当任务切换时,所述内核处理器要将当前任务的代码段指针、数据段指针和偏移指针中的值以及停止任务标记和时间信息全部存放到代码段指针指向的预设地址中。
作为本发明的一个优选的技术方案,所述数据段指针包括第一数据段指针和第二数据段指针;
所述第一数据段指针用于指向所述代码段指针中与硬件相关的数据段;
所述第二数据段指针用于指向所述代码段指针中与硬件无关的数据段。
采用上述技术方案,具有以下优点:本发明提出的一种可编程逻辑控制器内核***,通过该***我们对PLC内核的功能特性进行完整的封装和高度抽象,我们可以不用了解PLC是什么,只需做好硬件驱动程序的填写,就可以将其刷新到新的硬件设备上完成PLC的开发,从而减少了PLC开发的成本,降低了对专业技术人员的依赖,并能大大提高开发进度。
附图说明
图1为本发明实施例的***结构示意图;
图2为本发明实施例中执行用户程序时的方法流程图;
图3为本发明实施例中内存地址的结构示意图。
具体实施方式
为了使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述,以下实施例用于说明本发明,但不用来限制本发明的范围。
参照图1所示,一种可编程逻辑控制器内核***,包括PLC内核,所述PLC内核包括通信处理单元、程序执行单元、存储单元和硬件驱动接口。
所述通信处理单元用于权限管理的设定、用户程序的上传与下载和变量的上传与下载。
具体地,所述通信处理单元与PLC编译器进行通信,用户通过PLC编译器进行密码的设置,只有密码匹配时,才建立连接和具有相应的权限。
所述程序执行单元用于执行所述用户程序。
具体地,所述程序执行单元包括内核处理器、代码段指针、数据段指针和偏移指针,其中,所述数据段指针包括第一数据段指针和第二数据段指针;
所述第一数据段指针用于指向所述代码段指针中与硬件相关的数据段;
所述第二数据段指针用于指向所述代码段指针中与硬件无关的数据段。
执行用户程序时,如图2所示,所述代码段指针从所述偏移指针的地址处取出对应代码段的指令;
所述内核处理器根据所述代码段的指令进入对应的执行任务,并判断所述代码段的指令中是否存在参数,不存在,则判断用户程序是否结束;存在,则根据所述参数进行指令运算,并在运算后修改所述偏移指针的地址,直到执行最后一条指令后,停止用户程序的执行并进行停止任务标记和时间信息的记录。
也就是说整个用户程序的执行过程就是从代码段指针处取出指令,然后根据指令内容取出参数,根据参数修改代码段指针的值,直到当代码段的程序执行到最后一条指令时,并在判断程序结束时,停止用户程序的执行并进行停止任务标记和时间信息的记录,同时进入任务切换并保存运行环境,上述是以一个用户任务的用户程序中的代码段执行过程进行举例,其它程序的执行过程与此相同,在此不再赘述。
所述存储单元用于保存所述用户程序以及运行结果的保持,所述运行结果通过所述程序执行单元执行用户程序所得。
具体地,所述存储单元包括用户程序内存单元、I/O内存映像单元和永久存储单元。
所述永久存储单元用于对所述用户程序进行保存;其中,永久存储单元具体包括:第一内存单元、第二内存单元、第三内存单元、第四内存单元和第五内存单元;
所述第一内存单元用于存放用户程序中硬件设备的规格信息和用户权限信息;
所述第二内存单元用于用户程序中存放变量与硬件模块的信息表;
所述第三内存单元用于在用户程序中为用户预留,便于扩展使用;
所述第四内存单元用于存放用户程序中不同优先级任务的代码段信息;
所述第五内存单元用于存放用户程序中事件处理任务的代码段信息;这样采用了将用户程序以段的形式来进行管理,使得其支持多任务并发执行的能力。
所述I/O内存映像单元用于所述运行结果的保持。
具体地,PLC内核在执行用户程序(即PLC程序)时,会先获得中间指令编码,根据指令码的内容调用指令码对应的过程函数,在此函数调用的内部确定其指令后面跟的参数个数,以及参数占用的位宽,据此PLC内核完成中间指令的执行,并将指令运行的结果存放到所述I/O内存映像单元中,在指令执行过程中,除了内存设备之外没有其他外设参与运算,也就是内核的执行过程是与其硬件设备高度无关的。
所述用户程序内存单元用于在执行所述用户程序时,从所述永久存储单元读取所述用户程序并进行存放,同时记录所述用户程序中每段程序在存放时所生成的内存地址。
其中,所述内存地址的结构如图3所示,也就是将用户程序中每段程序进行散列后的形式。
所述硬件驱动接口用于通过预设的硬件驱动程序将所述运行结果刷新到新的硬件设备上。
具体地,硬件驱动程序,是一系列的接口函数,这些接口函数是PLC内核和硬件平台之间的纽带,PLC内核通过硬件驱动程序与新的硬件设备取得联系,为使PLC内核正常运行,只需要填写适当的硬件驱动程序即可完成PLC的开发,降低了PLC开发的成本,降低了对专业技术人员的依赖,并能大大提高开发进度。
通过上述实施例,对PLC内核的功能特性进行完整的封装和高度抽象,我们可以不用了解PLC是什么,只需做好硬件驱动程序和规格描述文件的填写,就可以将其刷新到新的硬件设备上完成PLC的开发,从而减少了PLC开发的成本,降低了对专业技术人员的依赖,并能大大提高开发进度。
需要说明的是,其中规格描述文件是一个Execl格式的文件,只要按照表格文件中的描述填写表格,就可以生成规格描述文件,之后将规格描述文件传送至PLC内核中,就相当于提供了规格描述文件。
进一步地,所述内核处理器执行用户任务时,按优先级任务的降序排列进行任务切换,且任一优先级任务执行后在预设时间内无法将其再次投入执行。
具体地,PLC内核内部包含一个10ms的中断,每10ms会检查用户任务的优先级,当一个高优先级的任务执行后,在20ms内不能再次投入执行,这样低优先级的任务就可以投入执行,也就是说每个任务执行完毕后,必须等待20ms再次投入执行,以保证低优先级的任务有执行的机会。例如,优先级列表中事件任务优先级>任务0优先级>任务1优先级>任务2优先级>任务3优先级>任务4优先级。PLC内核每10ms中断时只检查比自己优先级高的任务是否可以执行,当前任务执行完毕后,按照优先级从高到底低搜索,确定下一个要执行的任务。
进一步地,当任务切换时,所述内核处理器要将当前任务的代码段指针、数据段指针和偏移指针中的值以及停止任务标记和时间信息全部存放到代码段指针指向的预设地址中。
具体地,PLC内核搜索可以执行的代码段后,直接将该段投入执行;如果找不到可以执行的代码段,则将最高优先级的代码停止调度标记和停止调度时间解除,使最高优先级的代码段投入执行,PLC内核使得优先级不能存在不连续的情况,也就是当只有一个代码段时,这个代码段的优先级必须是最高的;有两个任务任务时,其中一个任务是最高优先级,而另外一个任务必须是次高优先级的,这里需要说明的是,预设地址即图3中代码段0指针的位置。
最后需要说明的是,上述描述仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
Claims (7)
1.一种可编程逻辑控制器内核***,其特征在于,包括PLC内核,所述PLC内核包括通信处理单元、程序执行单元、存储单元和硬件驱动接口;
所述通信处理单元用于权限管理的设定、用户程序的上传与下载以及变量的上传与下载;
所述程序执行单元用于执行所述用户程序;
所述存储单元用于保存所述用户程序以及运行结果的保持,所述运行结果通过所述程序执行单元执行用户程序所得;
所述硬件驱动接口用于通过预设的硬件驱动程序将所述运行结果刷新到新的硬件设备上。
2.根据权利要求1所述的一种可编程逻辑控制器内核***,其特征在于,所述存储单元包括用户程序内存单元、I/O内存映像单元和永久存储单元;
所述永久存储单元用于对所述用户程序进行保存;
所述I/O内存映像单元用于所述运行结果的保持;
所述用户程序内存单元用于在执行所述用户程序时,从所述永久存储单元读取所述用户程序并进行存放,同时记录所述用户程序中每段程序在存放时所生成的内存地址。
3.根据权利要求2所述的一种可编程逻辑控制器内核***,其特征在于,所述永久存储单元具体包括:第一内存单元、第二内存单元、第三内存单元、第四内存单元和第五内存单元;
所述第一内存单元用于存放用户程序中硬件设备的规格信息和用户权限信息;
所述第二内存单元用于用户程序中存放变量与硬件模块的信息表;
所述第三内存单元用于在用户程序中为用户预留,便于扩展使用;
所述第四内存单元用于存放用户程序中不同优先级任务的代码段信息;
所述第五内存单元用于存放用户程序中事件处理任务的代码段信息。
4.根据权利要求1所述的一种可编程逻辑控制器内核***,其特征在于,所述程序执行单元包括内核处理器、代码段指针、数据段指针和偏移指针;
执行用户程序时,所述代码段指针从所述偏移指针的地址处取出对应代码段的指令;
所述内核处理器根据所述代码段的指令进入对应的执行任务,并判断所述代码段的指令中是否存在参数,不存在,则判断用户程序是否结束;存在,则根据所述参数进行指令运算,并在运算后修改所述偏移指针的地址,直到执行最后一条指令后,停止用户程序的执行并进行停止任务标记和时间信息的记录。
5.根据权利要求3所述的一种可编程逻辑控制器内核***,其特征在于,所述内核处理器执行用户任务时,按优先级任务的降序排列进行任务切换,且任一优先级任务执行后在预设时间内无法将其再次投入执行。
6.根据权利要求4所述的一种可编程逻辑控制器内核***,其特征在于,当任务切换时,所述内核处理器要将当前任务的代码段指针、数据段指针和偏移指针中的值以及停止任务标记和时间信息全部存放到代码段指针指向的预设地址中。
7.根据权利要求4所述的一种可编程逻辑控制器内核***,其特征在于,所述数据段指针包括第一数据段指针和第二数据段指针;
所述第一数据段指针用于指向所述代码段指针中与硬件相关的数据段;
所述第二数据段指针用于指向所述代码段指针中与硬件无关的数据段。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910155771.0A CN109932997B (zh) | 2019-03-01 | 2019-03-01 | 一种可编程逻辑控制器内核*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910155771.0A CN109932997B (zh) | 2019-03-01 | 2019-03-01 | 一种可编程逻辑控制器内核*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109932997A true CN109932997A (zh) | 2019-06-25 |
CN109932997B CN109932997B (zh) | 2021-09-28 |
Family
ID=66986219
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910155771.0A Active CN109932997B (zh) | 2019-03-01 | 2019-03-01 | 一种可编程逻辑控制器内核*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109932997B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114363323A (zh) * | 2022-01-06 | 2022-04-15 | 东莞市云雀科技有限公司 | 一种针对plc的智能数据上发方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1218567A (zh) * | 1996-03-13 | 1999-06-02 | 钻石多媒体***公司 | 多路并行数字数据流通道控制器体系结构 |
CN103984603A (zh) * | 2012-03-31 | 2014-08-13 | 华为技术有限公司 | 一种检测内存单元的方法及设备 |
CN104898546A (zh) * | 2015-05-06 | 2015-09-09 | 浙江中控研究院有限公司 | 一种基于soc的plc在线调试***和方法 |
CN106125664A (zh) * | 2016-08-12 | 2016-11-16 | 绵阳市维博电子有限责任公司 | 一种嵌入式plc控制*** |
CN106843127A (zh) * | 2017-02-28 | 2017-06-13 | 深圳市麦格米特控制技术有限公司 | 一种中型plc*** |
-
2019
- 2019-03-01 CN CN201910155771.0A patent/CN109932997B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1218567A (zh) * | 1996-03-13 | 1999-06-02 | 钻石多媒体***公司 | 多路并行数字数据流通道控制器体系结构 |
CN103984603A (zh) * | 2012-03-31 | 2014-08-13 | 华为技术有限公司 | 一种检测内存单元的方法及设备 |
CN104898546A (zh) * | 2015-05-06 | 2015-09-09 | 浙江中控研究院有限公司 | 一种基于soc的plc在线调试***和方法 |
CN106125664A (zh) * | 2016-08-12 | 2016-11-16 | 绵阳市维博电子有限责任公司 | 一种嵌入式plc控制*** |
CN106843127A (zh) * | 2017-02-28 | 2017-06-13 | 深圳市麦格米特控制技术有限公司 | 一种中型plc*** |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114363323A (zh) * | 2022-01-06 | 2022-04-15 | 东莞市云雀科技有限公司 | 一种针对plc的智能数据上发方法 |
CN114363323B (zh) * | 2022-01-06 | 2024-06-07 | 东莞市云雀科技有限公司 | 一种针对plc的智能数据上发方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109932997B (zh) | 2021-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20110048531A (ko) | 가상처리장치의 인터럽트 제어 | |
EP3256915A1 (en) | Extending a programmable logic controller with apps | |
CN102779075A (zh) | 一种在多处理器核***中进行调度的方法、装置及*** | |
JPH0895821A (ja) | マルチタスクのプログラムデバッグ方法とその装置 | |
CN111414256B (zh) | 基于麒麟移动操作***的应用程序进程派生方法、***及介质 | |
CN109308213B (zh) | 基于改进任务调度机制的多任务断点调试方法 | |
EP2733613B1 (en) | Controller and program | |
CN109831520A (zh) | 一种定时任务调度方法及相关装置 | |
US9152454B2 (en) | Method for enabling sequential, non-blocking processing of statements in concurrent tasks in a control device | |
US9910418B2 (en) | Method and programming system for programming an automation component | |
CN117311990B (zh) | 资源调整方法、装置、电子设备、存储介质及训练平台 | |
CN109932997A (zh) | 一种可编程逻辑控制器内核*** | |
CN107820605A (zh) | 用于动态低延迟优化的***和方法 | |
JP7085305B2 (ja) | コントロールシステム及びコントロール方法 | |
CN112346835A (zh) | 一种基于协程的调度处理方法及*** | |
WO2020075351A1 (ja) | コントロール装置 | |
CN100492299C (zh) | 一种嵌入式软件开发的方法及*** | |
US8666521B2 (en) | Method for operating an automation system | |
CN1287287C (zh) | 基于控制***实现在线更新数据的方法 | |
CN115453967A (zh) | 一种PLCopen单轴运动控制功能块的调度执行方法 | |
JP2004280299A (ja) | コントローラ、開発装置及びシステム | |
CN104678875B (zh) | 一种变频器配置方法及变频器配置*** | |
GB2388213A (en) | Improvements relating to task dispatch in priority pre-emptive real-time operating systems | |
EP1227401B1 (en) | Task management device, method and program therefor | |
CN100495328C (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 |