CN107291038B - 一种软件plc指令解析执行方法 - Google Patents
一种软件plc指令解析执行方法 Download PDFInfo
- Publication number
- CN107291038B CN107291038B CN201710624911.5A CN201710624911A CN107291038B CN 107291038 B CN107291038 B CN 107291038B CN 201710624911 A CN201710624911 A CN 201710624911A CN 107291038 B CN107291038 B CN 107291038B
- Authority
- CN
- China
- Prior art keywords
- instruction
- logic state
- function
- execution
- management
- 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
Links
Classifications
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/05—Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
- G05B19/054—Input/output
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/10—Plc systems
- G05B2219/11—Plc I-O input output
- G05B2219/1103—Special, intelligent I-O processor, also plc can only access via processor
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Automation & Control Theory (AREA)
- Programmable Controllers (AREA)
Abstract
本发明公开了一种PLC指令解析执行方法,包括指令译码、指令执行、逻辑状态管理、函数嵌套管理四个步骤。本发明还公开了一种PLC指令解析执行***,包括指令译码模块、指令执行模块、逻辑状态管理模块和函数嵌套管理模块。本发明使得指令之间的耦合大为降低,增强了***的可扩展性,并保证***稳定可靠。
Description
技术领域
本发明属于工业控制领域,具体是一种软件PLC指令解析执行方法。
背景技术
PLC是以自动控制技术、微计算机技术、和通信技术为基础发展起来的新一代工业控制装置,随着微处理器技术的发展,PLC得到了迅速的发展,也在社会各领域的生产训得到了越来越多的应用。PLC在国内外已广泛应用于钢铁、石油、化工、电力、建材、机械制造、汽车、轻纺、交通运输、环保及文化娱乐等各个行业。
在梯形图向指令表转换过程中,传统PLC***采用的硬件芯片实现梯形图扫描,导致梯形图指令集更新困难,PLC的固件更新需要花费更长的时间周期和成本。
发明内容
为了解决现有技术中存在的上述技术问题,本发明提供了一种PLC指令解析执行方法,包括指令译码、指令执行、逻辑状态管理、函数嵌套管理四个步骤,
步骤一、指令译码,根据指令指针指示顺序读取指令码,并对指令和参数的有效性进行判断,如果发现数据不合法或者数据越界访问,则报错;
步骤二、指令执行,根据指令译码结果跳转到对应指令处理函数,指令处理函数提取各需要的参数进行运算,每条指令执行完成后都会输出对应的逻辑状态,逻辑有效或无效,该逻辑状态会被提交给逻辑状态管理步骤以进行逻辑运算和梯图指令扫描控制;
步骤三、逻辑状态管理,记录最近的逻辑运算结果,每一行梯形图对应产生一个逻辑状态,每一次运算都会产生一个逻辑状态提供给后一个指令,以判断是否执行后续指令;
步骤四、函数嵌套管理,负责管理函数调用和中断处理响应,跳转到被调用的函数之前,会对当前的上下文环境进行进栈保存,然后指令指针指向待执行的函数入口,下一条指令会自动转到指令指针所指向的地址进行译码执行;函数执行完后出栈之前所保存的上下文环境数据,指令指针恢复到跳转前指令位置的下一条指令处顺序执行。
进一步的,步骤一具体为:根据指令指针读到指令数据后,首先判断指令码是否为控制器支持的有效指令;然后从指令数据中分离出指令依赖的参数表,并判断参数是常量还是变量地址,对于变量地址还需要判别地址是否为有效***地址,同时检查对应的操作是否会引起数据越界,如果一切正常,则开始执行对应指令,否则进入报警状态,停止PLC执行,防止执行错误的动作。
进一步的,步骤三中,当出现分支时会自动压栈保存当前逻辑状态,当前逻辑状态分别提供给所有分支使用,在最后一行分支自动出栈上一次保存的逻辑。***根据当前的逻辑状态,判断是否执行下一步指令。
本发明还公开了一种PLC指令解析执行***,包括指令译码模块、指令执行模块、逻辑状态管理模块和函数嵌套管理模块,
指令译码模块,根据指令指针指示顺序读取指令码,并对指令和参数的有效性进行检查。
指令执行模块,根据译码结果跳转到对应指令处理函数,处理函数提取各需要的参数进行运算,并产生逻辑状态;
逻辑状态管理模块,它记录最近的逻辑运算状态,每一条梯图指令都会产生一个逻辑状态。模块根据前面的逻辑状态判断是否执行下一条指令运算。
函数嵌套管理模块,管理函数调用和中断处理响应,以支持函数的多重嵌套调用。
本发明使得指令之间的耦合大为降低,增强了***的可扩展性,并保证***稳定可靠。
附图说明
图1是本发明的PLC指令解析执行方法流程图;
图2是逻辑状态和指令运算关系图。
具体实施方式
下面结合附图对本发明作进一步说明。
如图1所示,本发明的PLC指令解析执行方法,主要包括指令译码、指令执行、逻辑状态管理、函数嵌套管理四个步骤。
步骤一、指令译码,根据指令指针指示顺序读取指令码,并对指令和参数的有效性进行判断,如果发现数据不合法或者数据越界访问,则报错。
根据指令指针读到指令数据后,首先判断指令码是否为控制器支持的有效指令;然后从指令数据中分离出指令依赖的参数表,并判断参数是常量还是变量地址,对于变量地址还需要判别地址是否为有效***地址,同时检查对应的操作是否会引起数据越界,如果一切正常,则开始执行对应指令,否则进入报警状态,停止PLC执行,防止执行错误的动作;
步骤二、指令执行,根据指令译码结果跳转到对应指令处理函数,指令处理函数提取各需要的参数进行运算,每条指令执行完成后都会输出对应的逻辑状态,逻辑有效或无效,该逻辑状态会被提交给逻辑状态管理步骤以进行逻辑运算和梯图指令扫描控制;
步骤三、逻辑状态管理,记录最近的逻辑运算结果,每一行梯形图对应产生一个逻辑状态,每一次运算都会产生一个逻辑状态提供给后一个指令,以判断是否执行后续指令。
出现分支时会自动压栈保存当前逻辑状态,当前逻辑状态分别提供给所有分支使用,在最后一行分支自动出栈上一次保存的逻辑。***根据当前的逻辑状态,判断是否执行下一步指令;
步骤四、函数嵌套管理,负责管理函数调用和中断处理响应,跳转到被调用的函数之前,会对当前的上下文环境进行进栈保存,然后指令指针指向待执行的函数入口,下一条指令会自动转到指令指针所指向的地址进行译码执行;函数执行完后出栈之前所保存的上下文环境数据,指令指针恢复到跳转前指令位置的下一条指令处顺序执行。
本发明的PLC指令解析执行***,包括指令译码模块、指令执行模块、逻辑状态管理模块和函数嵌套管理模块。
指令译码模块,根据指令指针指示顺序读取指令码,并对指令和参数的有效性进行检查。
指令执行模块,根据译码结果跳转到对应指令处理函数,处理函数提取各需要的参数进行运算,并产生逻辑状态;
逻辑状态管理模块,它记录最近的逻辑运算状态,每一条梯图指令都会产生一个逻辑状态。模块根据前面的逻辑状态判断是否执行下一条指令运算。
函数嵌套管理模块,管理函数调用和中断处理响应,以支持函数的多重嵌套调用。
如图2所示,由于指令之间只用逻辑状态进行调度控制,用户通过改变梯图指令的数据状态、指令位置顺序、分支结构等方式来改变输出的逻辑状态,后续指令根据前面输出的逻辑状态有效与否来判断是否需要执行指令运算(或者跳过当前指令,直接执行下一条指令)、判断是否输出有效的逻辑状态。由于指令本身的运算结果和生成逻辑状态是相互独立的,因此指令运算结果是否正确不会影响到下一条指令是否被执行。而对于梯图扫描只需要保证指令输出的逻辑状态正确即可保证梯图扫描顺序正确可靠。
Claims (4)
1.一种PLC指令解析执行方法,包括指令译码、指令执行、逻辑状态管理、函数嵌套管理四个步骤,其特征在于:
步骤一、指令译码,根据指令指针指示顺序读取指令码,并对指令和参数的有效性进行判断,如果发现数据不合法或者数据越界访问,则报错;
步骤二、指令执行,根据指令译码结果跳转到对应指令处理函数,指令处理函数提取各需要的参数进行运算,每条指令执行完成后都会输出对应的逻辑状态,逻辑有效或无效,该逻辑状态会被提交给逻辑状态管理步骤以进行逻辑运算和梯图指令扫描控制;
步骤三、逻辑状态管理,记录最近的逻辑运算结果,每一行梯形图对应产生一个逻辑状态,每一次运算都会产生一个逻辑状态提供给后一个指令,以判断是否执行后续指令;
步骤四、函数嵌套管理,负责管理函数调用和中断处理响应,跳转到被调用的函数之前,会对当前的上下文环境进行进栈保存,然后指令指针指向待执行的函数入口,下一条指令会自动转到指令指针所指向的地址进行译码执行;函数执行完后出栈之前所保存的上下文环境数据,指令指针恢复到跳转前指令位置的下一条指令处顺序执行。
2.如权利要求1所述的PLC指令解析执行方法,其特征在于:
步骤一具体为:根据指令指针读到指令数据后,首先判断指令码是否为控制器支持的有效指令;然后从指令数据中分离出指令依赖的参数表,并判断参数是常量还是变量地址,对于变量地址还需要判别地址是否为有效***地址,同时检查对应的操作是否会引起数据越界,如果一切正常,则开始执行对应指令,否则进入报警状态,停止PLC执行,防止执行错误的动作。
3.如权利要求1所述的PLC指令解析执行方法,其特征在于:
步骤三中,当出现分支时会自动压栈保存当前逻辑状态,当前逻辑状态分别提供给所有分支使用,在最后一行分支自动出栈上一次保存的逻辑;***根据当前的逻辑状态,判断是否执行下一步指令。
4.一种PLC指令解析执行***,包括指令译码模块、指令执行模块、逻辑状态管理模块和函数嵌套管理模块,其特征在于:
指令译码模块,根据指令指针指示顺序读取指令码,并对指令和参数的有效性进行检查;
指令执行模块,根据译码结果跳转到对应指令处理函数,处理函数提取各需要的参数进行运算,并产生逻辑状态;
逻辑状态管理模块,记录最近的逻辑运算状态,每一条梯图指令都会产生一个逻辑状态;该逻辑状态管理模块根据前面的逻辑状态判断是否执行下一条指令运算;
函数嵌套管理模块,管理函数调用和中断处理响应,以支持函数的多重嵌套调用。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710624911.5A CN107291038B (zh) | 2017-07-27 | 2017-07-27 | 一种软件plc指令解析执行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710624911.5A CN107291038B (zh) | 2017-07-27 | 2017-07-27 | 一种软件plc指令解析执行方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107291038A CN107291038A (zh) | 2017-10-24 |
CN107291038B true CN107291038B (zh) | 2019-04-02 |
Family
ID=60103440
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710624911.5A Active CN107291038B (zh) | 2017-07-27 | 2017-07-27 | 一种软件plc指令解析执行方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107291038B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108920186A (zh) * | 2018-06-25 | 2018-11-30 | 杭州电子科技大学 | 一种运动指令解析方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101364098A (zh) * | 2008-09-12 | 2009-02-11 | 南京航空航天大学 | 一种将梯形图转换为指令表程序及解释执行的方法与*** |
CN101533263A (zh) * | 2009-02-17 | 2009-09-16 | 固高科技(深圳)有限公司 | 一种计算机可编程自动控制***及其控制方法 |
CN102354144A (zh) * | 2011-09-06 | 2012-02-15 | 北京联合大学 | 一种将梯形图转化成plc程序指令的方法 |
CN102393670A (zh) * | 2011-10-24 | 2012-03-28 | 杭州电子科技大学 | 一种梯形图内嵌高级语言进行混合编程的实现方法 |
CN102650861A (zh) * | 2012-05-04 | 2012-08-29 | 深圳市矩形科技有限公司 | 一种plc梯形图代码硬解题方法 |
-
2017
- 2017-07-27 CN CN201710624911.5A patent/CN107291038B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101364098A (zh) * | 2008-09-12 | 2009-02-11 | 南京航空航天大学 | 一种将梯形图转换为指令表程序及解释执行的方法与*** |
CN101533263A (zh) * | 2009-02-17 | 2009-09-16 | 固高科技(深圳)有限公司 | 一种计算机可编程自动控制***及其控制方法 |
CN102354144A (zh) * | 2011-09-06 | 2012-02-15 | 北京联合大学 | 一种将梯形图转化成plc程序指令的方法 |
CN102393670A (zh) * | 2011-10-24 | 2012-03-28 | 杭州电子科技大学 | 一种梯形图内嵌高级语言进行混合编程的实现方法 |
CN102650861A (zh) * | 2012-05-04 | 2012-08-29 | 深圳市矩形科技有限公司 | 一种plc梯形图代码硬解题方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107291038A (zh) | 2017-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102096631B (zh) | 接口测试方法及装置 | |
CN103634592A (zh) | 智能电视自动化测试方法及*** | |
US20130120292A1 (en) | Method and apparatus for designating entire area using partial area touch in a portable equipment | |
WO2015131679A1 (zh) | 任务进程的处理方法及装置 | |
CN102291593B (zh) | Iptv机顶盒生产中的***配置和测试方法 | |
CN109117362B (zh) | 一种基于中间语言的plc程序验证*** | |
CN107479878B (zh) | 一种基于openresty的lua模块化开发方法及开发框架 | |
CN101916200B (zh) | 终端升级的方法、终端升级回退的方法和升级管理中心 | |
CN103279331A (zh) | Android***多任务并发处理方法及装置 | |
CN111970376A (zh) | 一种网关软件的跨平台应用***及开发方法 | |
CN101488012A (zh) | 一种利用流程框图实现顺序控制的方法 | |
CN102833120B (zh) | 一种快速自动化测试中处理网管服务器异常的方法及*** | |
CN103215784A (zh) | 一种洗衣机运行方法及洗衣机 | |
CN107291038B (zh) | 一种软件plc指令解析执行方法 | |
CN103761184A (zh) | 程序的代码段测试方法、装置和*** | |
CN104572078A (zh) | 在Android修复模式下蓝牙功能的实现方法及*** | |
CN108685545A (zh) | 洗碗机启动控制方法、装置及计算机可读存储介质 | |
CN111435227A (zh) | 一种智能家居设备测试方法、装置、设备及介质 | |
CN102566481B (zh) | 一种基于c语言的plc控制***及其实现方法 | |
CN105472679A (zh) | 一种通讯终端的网络切换方法和装置 | |
CN112469179A (zh) | 一种基于策略管理的照明控制装置 | |
Yu et al. | An engineerable procedure description method for industrial automation | |
CN103605475A (zh) | 虚拟***软键盘的控制方法和装置 | |
CN109922014A (zh) | 一种交换机冷热启动判断方法及*** | |
CN101477342B (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 |