一种PLC的组态程序的调试方法及调试系统技术方案

技术编号:24119231 阅读:38 留言:0更新日期:2020-05-13 02:35
本申请公开一种PLC的组态程序的调试方法及调试系统,调试设备对目标代码进行编辑,在目标代码的每个代码行添加调试信息,对编辑后的目标代码进行编译,生成组态程序;在调试模式下,PLC在运行组态程序中任意指令行之前,调用第一函数,由第一函数基于断点信息和/或单步调试信息确定当前的指令行是否为有效停止行,如果当前的指令行是有效停止行,则调用第二函数,由第二函数控制运行组态程序的任务进入睡眠状态,以停止运行组态程序,直至接收到继续运行指令,运行当前的指令行。基于本申请公开的技术方案,能够对组态程序进行在线调试,而且通过设置断点和单步调试,使得测试人员能够监测调试的细节。

【技术实现步骤摘要】
一种PLC的组态程序的调试方法及调试系统
本申请属于软件调试
,尤其涉及一种PLC的组态程序的调试方法及调试系统。
技术介绍
随着工控行业应用的复杂度越来越高,PLC中组态程序(即IEC程序)的编程量和复杂度不断提升,而验证组态程序的编写是否正确,运行是否可靠稳定,能否达到预期的需求,仅仅依靠用户进行常规的程序检查已经无法满足。因此,如何提供一种针对PLC中组态程序的在线调试方法,以验证组态软件是否正确、能否达到预期的需求,是本领域技术人员面临的一个技术难题。
技术实现思路
有鉴于此,本申请的目的在于提供一种PLC的组态程序的调试方法及调试系统,能够对组态程序进行在线调试,而且测试人员能够监测调试的细节。为实现上述目的,本申请提供如下技术方案:一方面,本申请提供一种PLC的组态程序的调试方法,包括:调试设备对目标代码进行编辑,在所述目标代码的每个代码行添加调试信息,所述调试信息至少包括行号、第一函数的标识和第二函数的标识;所述调试设备对编辑后的目标代码进行编译,生成所述PLC能够运行的组态程序;所述调试设备向PLC发送所述组态程序;在调试模式下,所述PLC运行所述组态程序,并且所述PLC在运行所述组态程序中任意指令行之前,基于所述第一函数的标识调用第一函数,由所述第一函数基于所述调试设备发送的断点信息和/或单步调试信息确定当前的指令行是否为有效停止行,如果当前的指令行是有效停止行,则基于所述第二函数的标识调用第二函数,由所述第二函数控制运行所述组态程序的任务进入睡眠状态,以停止运行所述组态程序,直至接收到继续运行指令,运行当前的指令行,如果当前的指令行不是有效停止行,则运行当前的指令行;所述调试设备获取所述PLC运行所述组态程序的运行数据,并进行显示;其中,所述断点信息包含需暂停运行的指令行的行号,所述单步调试信息包含需要单步运行的指令行的行号。可选的,所述调试设备获取所述PLC运行所述组态程序的运行数据,包括:所述PLC在确定当前的指令行为有效停止行,且停止运行所述组态程序时,向所述调试设备发送所述当前指令行的行号。可选的,所述调试设备获取所述PLC运行所述组态程序的运行数据,还包括:所述调试设备向所述PLC发送全局变量获取请求,所述全局变量获取请求包括目标全局变量的指示信息,其中,所述调试设备在对所述编辑后的目标代码进行编译过程中配置各个全局变量的指示信息,所述全局变量的指示信息包括用于存储所述全局变量的存储区域的标识、所述全局变量在所述存储区域的偏移值、以及所述全局变量的长度;所述PLC基于所述目标全局变量的指示信息获取所述目标全局变量的值,并向所述调试设备发送所述目标全局变量的值。可选的,所述调试信息还包括第三函数的标识;所述调试方法还包括:在调试模式下,所述PLC在运行所述组态程序中函数的第一行时,基于所述第三函数的标识调用第三函数,由所述第三函数获得当前的堆栈地址。可选的,所述调试设备获取所述PLC运行所述组态程序的运行数据,还包括:所述调试设备向所述PLC发送局部变量获取请求,所述局部变量获取请求包括目标局部变量的指示信息,其中,所述局部变量的指示信息包括局部变量的偏移值、以及所述局部变量的长度;所述PLC基于所述堆栈地址、以及目标局部变量的指示信息,获取所述目标局部变量的值,并向所述调试设备发送所述目标局部变量的值。可选的,所述断点信息包括:所述调试设备在启动调试前向所述PLC发送的断点信息;和/或,所述调试设备在调试过程中,响应输入操作,向所述PLC发送的断点信息。可选的,所述单步调试信息包括:所述调试设备在启动调试前向所述PLC发送的单步调试信息;和/或,所述调试设备在调试过程中,响应输入操作,向所述PLC发送的单步调试信息。另一方面,本申请提供一种PLC的组态程序的调试系统,包括:调试设备和PLC;所述调试设备用于:对目标代码进行编辑,在所述目标代码的每个代码行添加调试信息,所述调试信息至少包括行号、第一函数的标识和第二函数的标识;对编辑后的目标代码进行编译,生成所述PLC能够运行的组态程序;向PLC发送所述组态程序;获取所述PLC运行所述组态程序的运行数据,并进行显示;所述PLC用于:在调试模式下,运行所述组态程序,并且所述PLC在运行所述组态程序中任意指令行之前,基于所述第一函数的标识调用第一函数,由所述第一函数基于所述调试设备发送的断点信息和/或单步调试信息确定当前的指令行是否为有效停止行,如果当前的指令行是有效停止行,则基于所述第二函数的标识调用第二函数,由所述第二函数控制运行所述组态程序的任务进入睡眠状态,以停止运行所述组态程序,直至接收到继续运行指令,运行当前的指令行,如果当前的指令行不是有效停止行,则运行当前的指令行;其中,所述断点信息包含需暂停运行的指令行的行号,所述单步调试信息包含需要单步运行的指令行的行号。可选的,所述调试信息还包括第三函数的标识;所述PLC还用于:在运行所述组态程序中函数的第一行时,基于所述第三函数的标识调用第三函数,由所述第三函数获得当前的堆栈地址。可选的,所述调试设备获取所述PLC运行所述组态程序的运行数据,包括:所述PLC在确定当前的指令行为有效停止行,且停止运行所述组态程序时,向所述调试设备发送所述当前指令行的行号;和/或,所述调试设备向所述PLC发送全局变量获取请求,所述全局变量获取请求包括目标全局变量的指示信息,其中,所述调试设备在对所述编辑后的目标代码进行编译过程中配置各个全局变量的指示信息,所述全局变量的指示信息包括用于存储所述全局变量的存储区域的标识、所述全局变量在所述存储区域的偏移值、以及所述全局变量的长度;所述PLC基于所述目标全局变量的指示信息获取所述目标全局变量的值,并向所述调试设备发送所述目标全局变量的值;和/或,所述调试设备向所述PLC发送局部变量获取请求,所述局部变量获取请求包括目标局部变量的指示信息,其中,所述局部变量的指示信息包括局部变量的偏移值、以及所述局部变量的长度;所述PLC基于所述堆栈地址、以及目标局部变量的指示信息,获取所述目标局部变量的值,并向所述调试设备发送所述目标局部变量的值。由此可见,本申请的有益效果为:本申请公开的PLC的组态程序的调试方法,调试设备在对目标代码进行编辑的过程中,针对每个代码行添加调试信息,将编辑后的目标代码编译为PLC能够运行的组态程序,并将该组态程序发送至PLC;在调试模式下,PLC在运行组态程序的每一个指令行之前,基于调试信息调用第一函数,由第一函数基于调试设备发送的断点信息和/或单步调试信息确定当前的指令行是否为有效停止行,如果当前的指令行不是有效停止行,则运行当前的指令行,如果当前的指令行是有效停止行,基于调试信息调用第二函数,由第二函数控制运行组态程序的任务进入睡眠状态,以停止运行组态程序,本文档来自技高网...

【技术保护点】
1.一种PLC的组态程序的调试方法,其特征在于,包括:/n调试设备对目标代码进行编辑,在所述目标代码的每个代码行添加调试信息,所述调试信息至少包括行号、第一函数的标识和第二函数的标识;/n所述调试设备对编辑后的目标代码进行编译,生成所述PLC能够运行的组态程序;/n所述调试设备向PLC发送所述组态程序;/n在调试模式下,所述PLC运行所述组态程序,并且所述PLC在运行所述组态程序中任意指令行之前,基于所述第一函数的标识调用第一函数,由所述第一函数基于所述调试设备发送的断点信息和/或单步调试信息确定当前的指令行是否为有效停止行,如果当前的指令行是有效停止行,则基于所述第二函数的标识调用第二函数,由所述第二函数控制运行所述组态程序的任务进入睡眠状态,以停止运行所述组态程序,直至接收到继续运行指令,运行当前的指令行,如果当前的指令行不是有效停止行,则运行当前的指令行;/n所述调试设备获取所述PLC运行所述组态程序的运行数据,并进行显示;/n其中,所述断点信息包含需暂停运行的指令行的行号,所述单步调试信息包含需要单步运行的指令行的行号。/n

【技术特征摘要】
1.一种PLC的组态程序的调试方法,其特征在于,包括:
调试设备对目标代码进行编辑,在所述目标代码的每个代码行添加调试信息,所述调试信息至少包括行号、第一函数的标识和第二函数的标识;
所述调试设备对编辑后的目标代码进行编译,生成所述PLC能够运行的组态程序;
所述调试设备向PLC发送所述组态程序;
在调试模式下,所述PLC运行所述组态程序,并且所述PLC在运行所述组态程序中任意指令行之前,基于所述第一函数的标识调用第一函数,由所述第一函数基于所述调试设备发送的断点信息和/或单步调试信息确定当前的指令行是否为有效停止行,如果当前的指令行是有效停止行,则基于所述第二函数的标识调用第二函数,由所述第二函数控制运行所述组态程序的任务进入睡眠状态,以停止运行所述组态程序,直至接收到继续运行指令,运行当前的指令行,如果当前的指令行不是有效停止行,则运行当前的指令行;
所述调试设备获取所述PLC运行所述组态程序的运行数据,并进行显示;
其中,所述断点信息包含需暂停运行的指令行的行号,所述单步调试信息包含需要单步运行的指令行的行号。


2.根据权利要求1所述的调试方法,其特征在于,所述调试设备获取所述PLC运行所述组态程序的运行数据,包括:
所述PLC在确定当前的指令行为有效停止行,且停止运行所述组态程序时,向所述调试设备发送所述当前指令行的行号。


3.根据权利要求2所述的调试方法,其特征在于,所述调试设备获取所述PLC运行所述组态程序的运行数据,还包括:
所述调试设备向所述PLC发送全局变量获取请求,所述全局变量获取请求包括目标全局变量的指示信息,其中,所述调试设备在对所述编辑后的目标代码进行编译过程中配置各个全局变量的指示信息,所述全局变量的指示信息包括用于存储所述全局变量的存储区域的标识、所述全局变量在所述存储区域的偏移值、以及所述全局变量的长度;
所述PLC基于所述目标全局变量的指示信息获取所述目标全局变量的值,并向所述调试设备发送所述目标全局变量的值。


4.根据权利要求3所述的调试方法,其特征在于,所述调试信息还包括第三函数的标识;
所述调试方法还包括:在调试模式下,所述PLC在运行所述组态程序中函数的第一行时,基于所述第三函数的标识调用第三函数,由所述第三函数获得当前的堆栈地址。


5.根据权利要求4所述的调试方法,其特征在于,所述调试设备获取所述PLC运行所述组态程序的运行数据,还包括:
所述调试设备向所述PLC发送局部变量获取请求,所述局部变量获取请求包括目标局部变量的指示信息,其中,所述局部变量的指示信息包括局部变量的偏移值、以及所述局部变量的长度;
所述PLC基于所述堆栈地址、以及目标局部变量的指示信息,获取所述目标局部变量的值,并向所述调试设备发送所述目标局部变量的值。


6.根据权利要求1所述的调试方法,其特征在于,所述断点信息包括:

【专利技术属性】
技术研发人员:陈幼柏尹俊杰王伟周东红雷志军朱毅明
申请(专利权)人:北京和利时智能技术有限公司宁波和利时智能科技有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1