CN111142469B - 一种plc的组态程序的调试方法及调试系统 - Google Patents

一种plc的组态程序的调试方法及调试系统 Download PDF

Info

Publication number
CN111142469B
CN111142469B CN201911380482.7A CN201911380482A CN111142469B CN 111142469 B CN111142469 B CN 111142469B CN 201911380482 A CN201911380482 A CN 201911380482A CN 111142469 B CN111142469 B CN 111142469B
Authority
CN
China
Prior art keywords
debugging
plc
configuration program
function
line
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
Application number
CN201911380482.7A
Other languages
English (en)
Other versions
CN111142469A (zh
Inventor
陈幼柏
尹俊杰
王伟
周东红
雷志军
朱毅明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Hollysys Automation and Drive Co Ltd
Original Assignee
Beijing Hollysys Automation and Drive Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Hollysys Automation and Drive Co Ltd filed Critical Beijing Hollysys Automation and Drive Co Ltd
Priority to CN201911380482.7A priority Critical patent/CN111142469B/zh
Publication of CN111142469A publication Critical patent/CN111142469A/zh
Application granted granted Critical
Publication of CN111142469B publication Critical patent/CN111142469B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/05Programmable logic controllers, e.g. simulating logic interconnections of signals according to ladder diagrams or function charts
    • G05B19/054Input/output
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/10Plc systems
    • G05B2219/14Plc safety
    • G05B2219/14106Reconfiguration of components or graceful degradation, degrade

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中组态程序(即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在运行组态程序的每一个指令行之前,基于调试信息调用第一函数,由第一函数基于调试设备发送的断点信息和/或单步调试信息确定当前的指令行是否为有效停止行,如果当前的指令行不是有效停止行,则运行当前的指令行,如果当前的指令行是有效停止行,基于调试信息调用第二函数,由第二函数控制运行组态程序的任务进入睡眠状态,以停止运行组态程序,直至接收到继续运行指令;调试设备获取PLC运行组态程序的运行数据并进行显示。
基于本申请公开的PLC的组态程序的调试方法,能够对PLC的组态程序进行在线调试,PLC在确定当前指令行是有效停止行,且停止运行组态程序后,调试设备可以获取PLC运行组态程序的运行数据,并显示获取到的运行数据,基于此,测试人员通过输入断点信息和/或单步调试信息,就可以获知组态程序调试过程的细节。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请公开的一种PLC的组态程序的调试方法的流程图;
图2为本申请公开的全局变量的指示信息的结构;
图3为本申请公开的针对多层函数保存的堆栈地址的示意图;
图4为本申请公开的局部变量的指示信息的结构;
图5为本申请公开的一种PLC的组态程序的调试系统的结构示意图。
具体实施方式
本申请公开一种PLC的组态程序的调试方法及调试系统,能够对组态程序进行在线调试,而且通过设置断点和单步调试,使得测试人员能够监测调试的细节。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参见图1,图1为本申请公开的一种PLC的组态程序的调试方法的流程图。该调试方法包括:
步骤S11:调试设备对目标代码进行编辑,在目标代码的每个代码行添加调试信息。其中,调试信息至少包括行号、第一函数的标识和第二函数的标识。
需要说明的是,目标代码是指待调试的组态程序的原始代码。
步骤S12:调试设备对编辑后的目标代码进行编译,生成PLC能够运行的组态程序。
步骤S13:调试设备向PLC发送组态程序。
步骤S14:在调试模式下,PLC运行组态程序,并且PLC在运行组态程序中任意指令行之前,基于第一函数的标识调用第一函数,由第一函数基于调试设备发送的断点信息和/或单步调试信息确定当前的指令行是否为有效停止行;如果当前的指令行是有效停止行,则基于第二函数的标识调用第二函数,由第二函数控制运行组态程序的任务进入睡眠状态,以停止运行组态程序,直至接收到继续运行指令,运行当前的指令行;如果当前的指令行不是有效停止行,则运行当前的指令行。
其中,断点信息包含需暂停运行的指令行的行号,单步调试信息包含需要单步运行的指令行的行号。
可以理解的是,PLC运行至某指令行时,停止运行该指令行,在接收到继续运行指令时,再运行该指令行,就实现单步调试。因此,需要单步运行的指令行也是需要暂停运行的指令行。
在调试模式下,PLC在运行组态程序的每一个指令行之前,都要判断当前的指令行是否是有效停止行。具体的,PLC基于第一函数的标识调用第一函数,第一函数比较当前指令行的行号与断点信息和单步调试信息包含的行号,如果当前指令行的行号与断点信息和单步调试信息包含的任意一个行号相同,那么确定当前指令行为有效停止行,如果当前指令行的行号与断点信息和单步调试信息包含的行号均不同,那么确定当前指令行不是有效停止行,PLC运行当前的指令行。
在确定当前指令行是有效停止行后,PLC基于第二函数的标识调用第二函数,第二函数的作用是控制运行组态程序的任务进入睡眠状态,当运行组态程序的任务进入睡眠状态后,停止运行组态程序,之后当接收到调试设备发送的继续运行指令(GO指令)时,运行组态程序的任务被唤醒,运行当前的指令行。
这里对PLC中的断点信息和单步调试信息进行说明。
PLC存储的断点信息包括:
调试设备在启动调试前向PLC发送的断点信息;和/或,调试设备在调试过程中,响应输入操作,向PLC发送的断点信息。
也就是说,测试人员可以在启动调试前,向调试设备输入断点信息,由调试设备将断点信息向PLC发送,由PLC将断点信息存储至本地的存储区域。在调试过程中,测试人员也可以向调试设备输入断点信息,由调试设备将断点信息向PLC发送,由PLC将断点信息存储至本地的存储区域。
PLC存储的单步调试信息包括:
调试设备在启动调试前向PLC发送的单步调试信息;和/或,调试设备在调试过程中,响应输入操作,向PLC发送的单步调试信息。
也就是说,测试人员可以在启动调试前,向调试设备输入单步调试信息,由调试设备将单步调试信息向PLC发送,由PLC将单步调试信息存储至本地的存储区域。在调试过程中,测试人员也可以向调试设备输入单步调试信息,由调试设备将单步调试信息向PLC发送,由PLC将单步调试信息存储至本地的存储区域。
实施中,调试设备显示人机交互界面,测试人员在人机交互界面执行输入操作,输入断点信息和/或单步调试信息。或者,测试人员通过其他输入设备执行输入操作,输入断点信息和/或单步调试信息。
步骤S15:调试设备获取PLC运行组态程序的运行数据,并进行显示。
需要说明的是,PLC在确定当前指令行为有效停止行,且停止运行组态程序后,调试设备可以获取PLC运行组态程序的运行数据,并显示获取到的运行数据。
可以理解的是,测试人员通过输入断点信息和单步调试信息,就可以获知组态程序调试过程的细节。
本申请公开的PLC的组态程序的调试方法,调试设备在对目标代码进行编辑的过程中,针对每个代码行添加调试信息,将编辑后的目标代码编译为PLC能够运行的组态程序,并将该组态程序发送至PLC;在调试模式下,PLC在运行组态程序的每一个指令行之前,基于调试信息调用第一函数,由第一函数基于调试设备发送的断点信息和/或单步调试信息确定当前的指令行是否为有效停止行,如果当前的指令行不是有效停止行,则运行当前的指令行,如果当前的指令行为有效停止行,基于调试信息调用第二函数,由第二函数控制运行组态程序的任务进入睡眠状态,以停止运行组态程序,直至接收到继续运行指令;调试设备获取PLC运行组态程序的运行数据并进行显示。
基于本申请公开的PLC的组态程序的调试方法,能够对PLC的组态程序进行在线调试,PLC在确定当前指令行为有效停止行,且停止运行组态程序后,调试设备可以获取PLC运行组态程序的运行数据,并显示获取到的运行数据,基于此,测试人员通过输入断点信息和/或单步调试信息,就可以获知组态程序调试过程的细节。
下面对上述实施例中调试设备获取PLC运行组态程序的运行数据的过程进行说明。
在一个实施例中,调试设备获取PLC运行组态程序的运行数据,包括:PLC在确定当前的指令行为有效停止行,且停止运行组态程序时,向调试设备发送当前指令行的行号。
也就是说,PLC在确定当前的指令行为有效停止行,且停止运行组态程序后,向调试设备发送当前指令行的行号,使得测试人员可以获知PLC当前运行到组态程序的哪个指令行。
在另一个实施例中,调试设备获取PLC运行组态程序的运行数据,还包括:
调试设备向PLC发送全局变量获取请求,该全局变量获取请求包括目标全局变量的指示信息;其中,调试设备在对编辑后的目标代码进行编译过程中配置各个全局变量的指示信息,任意一个全局变量的指示信息包括用于存储该全局变量的存储区域的标识、该全局变量在存储区域的偏移值、以及该全局变量的长度;
PLC基于目标全局变量的指示信息获取目标全局变量,并向调试设备发送目标全局变量。
需要说明的是,调试设备在对编辑后的目标代码进行编译的过程中,针对每个全局变量分别配置对应的指示信息,指示信息用于指示全局变量在数据区的具体存储区域。其中,每个全局变量的指示信息包括:用于存储该全局变量的存储区域的标识RefID、该全局变量在存储区域的偏移值Offset、以及该全局变量的长度Size。基于全局变量的指示信息可以确定该全局变量的在数据区的具体存储区域。
图2为全局变量的指示信息的结构。
调试设备向PLC发送的全局变量获取请求包括目标全局变量的指示信息。PLC基于该目标全局变量的指示信息,从本地的数据区读取目标全局变量的值,并向调试设备发送。调试设备显示接收到的目标全局变量的值,使得测试人员获知目标全局变量的值。
在另一个实施例中,调试信息还包括第三函数的标识。
相应的,在图1所示调试方法的基础上还包括:在调试模式下,PLC在运行组态程序中函数的第一行时,基于第三函数的标识调用第三函数,由第三函数获得当前的堆栈地址。也就是说,PLC在进入组态程序中的函数时,调用第三函数,由第三函数获得当前的堆栈地址。
需要说明的是,如果PLC进入的函数的层次为多层时,第三函数需要获取每一层的堆栈地址,并保存。如图3示出了针对多层函数保存的堆栈地址的示意图。
调试设备获取PLC运行组态程序的运行数据,还包括:
调试设备向PLC发送局部变量获取请求,局部变量获取请求包括目标局部变量的指示信息;其中,任意一个局部变量的指示信息包括该局部变量的偏移值、以及该局部变量的长度;
PLC基于堆栈地址、以及目标局部变量的指示信息,获取目标局部变量的值,并向调试设备发送目标局部变量的值。
需要说明的是,PLC在进入组态程序的函数后,会在当前任务栈上扩展栈空间,并在栈上存储局部变量的值,这意味着局部变量的地址是随机动态的。PLC在运行组态程序中函数的第一行时,通过第三函数获取当前的堆栈地址,之后,结合调试设备发送的目标局部变量的偏移值和目标局部变量的长度,就可以获取目标局部变量的值。由调试设备显示目标局部变量的值,使得测试人员获知目标局部变量的值。
在一种可能的实现方式中,局部变量的指示信息采用如图4所示的结构。
RefID指示变量为全局变量或局部变量,变量的类型识别结果用于指示后续的信息解析方法,设计方式为:RefID的高位字节指示变量是全局变量还是局部变量,识别出变量为栈上变量(局部变量)后,此时表明RefID的低两位字节无意义,同时也说明了在RefID之后的内存结构,由此可从RefID之后的内存中解析出TsakIndex和StackLayer,TaskIndex为任务索引,任务为操作系统调度的基本单位,函数的调用最终是以任务为单位组织起来执行,StackeLayer指示栈的层次,通过TaskIndex和StackeLayer查表就能得到每层函数的栈起始空间,结合偏移值Offset和长度Size就能得到栈上局部变量的值。
局部变量分为普通变量和指针变量,如果取栈上指针变量的值,需再嵌套一次结构,先得到栈地址,再从栈上得到局部变量指针的值,结合指针地址、Offset、Size,就能得到栈上指针变量的值。
其它复杂的类型,都可以通过嵌套结构,逐层指示解析,最终得到变量的值。
本申请上文公开了PLC的组态程序的调试方法,相应的,本申请还公开一种PLC的组态程序的调试系统,说明书中关于两者的描述可以相互参考。
请参见图5所示,本申请公开的调试系统包括调试设备100和PLC200。
调试设备100用于:对目标代码进行编辑,在目标代码的每个代码行添加调试信息,调试信息至少包括行号、第一函数的标识和第二函数的标识;对编辑后的目标代码进行编译,生成PLC200能够运行的组态程序;向PLC200发送组态程序;获取PLC200运行组态程序的运行数据,并进行显示。
PLC200用于:在调试模式下,运行调试设备100发送的组态程序,并且PLC200在运行组态程序中任意指令行之前,基于第一函数的标识调用第一函数,由第一函数基于调试设备发送的断点信息和/或单步调试信息确定当前的指令行是否为有效停止行,如果当前的指令行是有效停止行,则基于第二函数的标识调用第二函数,由第二函数控制运行组态程序的任务进入睡眠状态,以停止运行组态程序,直至接收到继续运行指令,运行当前的指令行,如果当前的指令行不是有效停止行,则运行当前的指令行。
其中,断点信息包含需暂停运行的指令行的行号,单步调试信息包含需要单步运行的指令行的行号。
在另一个实施例中,调试信息还包括第三函数的标识。PLC200还用于:在运行组态程序中函数的第一行时,基于第三函数的标识调用第三函数,由第三函数获得当前的堆栈地址。
在另一个实施例中,调试设备100获取PLC200运行组态程序的运行数据,包括:
PLC200在确定当前的指令行为有效停止行,且停止运行组态程序时,向调试设备100发送当前指令行的行号;
和/或,调试设备100向PLC200发送全局变量获取请求,全局变量获取请求包括目标全局变量的指示信息,其中,调试设备100在对编辑后的目标代码进行编译过程中配置各个全局变量的指示信息,全局变量的指示信息包括用于存储全局变量的存储区域的标识、全局变量在存储区域的偏移值、以及全局变量的长度;PLC200基于目标全局变量的指示信息获取目标全局变量的值,并向调试设备100发送目标全局变量的值;
和/或,调试设备100向PLC200发送局部变量获取请求,局部变量获取请求包括目标局部变量的指示信息,其中,局部变量的指示信息包括局部变量的偏移值、以及局部变量的长度;PLC200基于堆栈地址、以及目标局部变量的指示信息,获取目标局部变量的值,并向调试设备100发送目标局部变量的值。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (8)

1.一种PLC的组态程序的调试方法,其特征在于,包括:
调试设备对目标代码进行编辑,在所述目标代码的每个代码行添加调试信息,所述调试信息至少包括行号、第一函数的标识和第二函数的标识;
所述调试设备对编辑后的目标代码进行编译,生成所述PLC能够运行的组态程序;
所述调试设备向PLC发送所述组态程序;
在调试模式下,所述PLC运行所述组态程序,并且所述PLC在运行所述组态程序中任意指令行之前,基于所述第一函数的标识调用第一函数,由所述第一函数基于所述调试设备发送的断点信息和/或单步调试信息确定当前的指令行是否为有效停止行,如果当前的指令行是有效停止行,则基于所述第二函数的标识调用第二函数,由所述第二函数控制运行所述组态程序的任务进入睡眠状态,以停止运行所述组态程序,直至接收到继续运行指令,运行当前的指令行,如果当前的指令行不是有效停止行,则运行当前的指令行;
所述调试设备获取所述PLC运行所述组态程序的运行数据,并进行显示;
其中,所述断点信息包含需暂停运行的指令行的行号,所述单步调试信息包含需要单步运行的指令行的行号;
所述调试设备获取所述PLC运行所述组态程序的运行数据,包括:
所述调试设备向所述PLC发送全局变量获取请求,所述全局变量获取请求包括目标全局变量的指示信息,其中,所述调试设备在对所述编辑后的目标代码进行编译过程中配置各个全局变量的指示信息,所述全局变量的指示信息包括用于存储所述全局变量的存储区域的标识、所述全局变量在所述存储区域的偏移值、以及所述全局变量的长度;所述PLC基于所述目标全局变量的指示信息获取所述目标全局变量的值,并向所述调试设备发送所述目标全局变量的值;
所述调试设备获取所述PLC运行所述组态程序的运行数据,还包括:
所述调试设备向所述PLC发送局部变量获取请求,所述局部变量获取请求包括目标局部变量的指示信息,其中,所述局部变量的指示信息包括局部变量的偏移值、以及所述局部变量的长度;所述PLC基于堆栈地址、以及目标局部变量的指示信息,获取所述目标局部变量的值,并向所述调试设备发送所述目标局部变量的值。
2.根据权利要求1所述的调试方法,其特征在于,所述调试设备获取所述PLC运行所述组态程序的运行数据,还包括:
所述PLC在确定当前的指令行为有效停止行,且停止运行所述组态程序时,向所述调试设备发送所述当前指令行的行号。
3.根据权利要求1所述的调试方法,其特征在于,所述调试信息还包括第三函数的标识;
所述调试方法还包括:在调试模式下,所述PLC在运行所述组态程序中函数的第一行时,基于所述第三函数的标识调用第三函数,由所述第三函数获得当前的堆栈地址。
4.根据权利要求1所述的调试方法,其特征在于,所述断点信息包括:
所述调试设备在启动调试前向所述PLC发送的断点信息;
和/或,所述调试设备在调试过程中,响应输入操作,向所述PLC发送的断点信息。
5.根据权利要求1所述的调试方法,其特征在于,所述单步调试信息包括:
所述调试设备在启动调试前向所述PLC发送的单步调试信息;
和/或,所述调试设备在调试过程中,响应输入操作,向所述PLC发送的单步调试信息。
6.一种PLC的组态程序的调试系统,其特征在于,包括:调试设备和PLC;
所述调试设备用于:对目标代码进行编辑,在所述目标代码的每个代码行添加调试信息,所述调试信息至少包括行号、第一函数的标识和第二函数的标识;对编辑后的目标代码进行编译,生成所述PLC能够运行的组态程序;向PLC发送所述组态程序;获取所述PLC运行所述组态程序的运行数据,并进行显示;
所述PLC用于:在调试模式下,运行所述组态程序,并且所述PLC在运行所述组态程序中任意指令行之前,基于所述第一函数的标识调用第一函数,由所述第一函数基于所述调试设备发送的断点信息和/或单步调试信息确定当前的指令行是否为有效停止行,如果当前的指令行是有效停止行,则基于所述第二函数的标识调用第二函数,由所述第二函数控制运行所述组态程序的任务进入睡眠状态,以停止运行所述组态程序,直至接收到继续运行指令,运行当前的指令行,如果当前的指令行不是有效停止行,则运行当前的指令行;
其中,所述断点信息包含需暂停运行的指令行的行号,所述单步调试信息包含需要单步运行的指令行的行号;
所述调试设备获取所述PLC运行所述组态程序的运行数据,包括:
所述调试设备向所述PLC发送全局变量获取请求,所述全局变量获取请求包括目标全局变量的指示信息,其中,所述调试设备在对所述编辑后的目标代码进行编译过程中配置各个全局变量的指示信息,所述全局变量的指示信息包括用于存储所述全局变量的存储区域的标识、所述全局变量在所述存储区域的偏移值、以及所述全局变量的长度;所述PLC基于所述目标全局变量的指示信息获取所述目标全局变量的值,并向所述调试设备发送所述目标全局变量的值;
和/或,所述调试设备向所述PLC发送局部变量获取请求,所述局部变量获取请求包括目标局部变量的指示信息,其中,所述局部变量的指示信息包括局部变量的偏移值、以及所述局部变量的长度;所述PLC基于堆栈地址、以及目标局部变量的指示信息,获取所述目标局部变量的值,并向所述调试设备发送所述目标局部变量的值。
7.根据权利要求6所述的调试系统,其特征在于,所述调试信息还包括第三函数的标识;
所述PLC还用于:在运行所述组态程序中函数的第一行时,基于所述第三函数的标识调用第三函数,由所述第三函数获得当前的堆栈地址。
8.根据权利要求7所述的调试系统,其特征在于,所述调试设备获取所述PLC运行所述组态程序的运行数据,还包括:
所述PLC在确定当前的指令行为有效停止行,且停止运行所述组态程序时,向所述调试设备发送所述当前指令行的行号。
CN201911380482.7A 2019-12-27 2019-12-27 一种plc的组态程序的调试方法及调试系统 Active CN111142469B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911380482.7A CN111142469B (zh) 2019-12-27 2019-12-27 一种plc的组态程序的调试方法及调试系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911380482.7A CN111142469B (zh) 2019-12-27 2019-12-27 一种plc的组态程序的调试方法及调试系统

Publications (2)

Publication Number Publication Date
CN111142469A CN111142469A (zh) 2020-05-12
CN111142469B true CN111142469B (zh) 2021-07-27

Family

ID=70521120

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911380482.7A Active CN111142469B (zh) 2019-12-27 2019-12-27 一种plc的组态程序的调试方法及调试系统

Country Status (1)

Country Link
CN (1) CN111142469B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111752245B (zh) * 2020-06-30 2021-06-25 北京和利时智能技术有限公司 数据访问及处理方法、装置、设备及可读存储介质
CN114647233B (zh) * 2022-05-18 2022-09-30 浙江国利网安科技有限公司 Plc运行组态监测方法、装置、存储介质及电子设备
CN115616973B (zh) * 2022-10-26 2024-10-11 深圳市汇川技术股份有限公司 断点调试功能的实现方法、系统、设备及介质

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102495802A (zh) * 2011-12-26 2012-06-13 华为技术有限公司 测试软件系统的方法和装置以及计算机系统
CN103218293A (zh) * 2013-04-12 2013-07-24 深圳市汇川控制技术有限公司 一种plc在线调试系统和方法
CN105302055A (zh) * 2015-11-09 2016-02-03 北京工业大学 一种工业控制系统中可编程逻辑控制器的安全监控系统及方法
CN107818043A (zh) * 2016-09-13 2018-03-20 东华软件股份公司 用于程序调试的方法和装置
CN108959058A (zh) * 2017-05-18 2018-12-07 南京南瑞继保电气有限公司 一种虚拟控制器的组态调试器实现方法
CN109783342A (zh) * 2017-11-10 2019-05-21 华为技术有限公司 脚本调试方法、设备及计算机存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102495802A (zh) * 2011-12-26 2012-06-13 华为技术有限公司 测试软件系统的方法和装置以及计算机系统
CN103218293A (zh) * 2013-04-12 2013-07-24 深圳市汇川控制技术有限公司 一种plc在线调试系统和方法
CN105302055A (zh) * 2015-11-09 2016-02-03 北京工业大学 一种工业控制系统中可编程逻辑控制器的安全监控系统及方法
CN107818043A (zh) * 2016-09-13 2018-03-20 东华软件股份公司 用于程序调试的方法和装置
CN108959058A (zh) * 2017-05-18 2018-12-07 南京南瑞继保电气有限公司 一种虚拟控制器的组态调试器实现方法
CN109783342A (zh) * 2017-11-10 2019-05-21 华为技术有限公司 脚本调试方法、设备及计算机存储介质

Also Published As

Publication number Publication date
CN111142469A (zh) 2020-05-12

Similar Documents

Publication Publication Date Title
CN111142469B (zh) 一种plc的组态程序的调试方法及调试系统
CN109840206B (zh) 数据测试方法、装置、终端及存储介质
CN101482845B (zh) 一种调用即时调试器的方法和系统
US20150248343A1 (en) Method and apparatus for implementing instrumentation code
US8561032B2 (en) Visualizing thread life time in eclipse
CN110659198A (zh) 应用程序的测试用例执行方法、装置和软件测试系统
CN113364515B (zh) 基于Xstate的卫星遥控方法、装置、设备和存储介质
CN104156305A (zh) 一种应用程序测试方法及装置
CN111796578A (zh) 一种车用控制器测试方法、装置、系统和存储介质
CN112162908B (zh) 基于字节码注入技术的程序调用链路监控实现方法及装置
CN104516817A (zh) 一种内存泄漏检测方法及装置
KR20150096478A (ko) 프로그래머블 컨트롤러, 프로그래머블 컨트롤러 시스템 및 실행 에러 정보 작성 방법
CN111124828B (zh) 一种数据处理方法、装置、设备及存储介质
CN117667607A (zh) 可视化埋点方法、装置及存储介质
CN110733037B (zh) 信号的处理方法及装置、存储介质及处理器
JPH07334211A (ja) プログラマブルコントローラのデータトレース方法
CN116126832A (zh) 数据库切换方法、切换装置、电子设备及存储介质
CN108614704B (zh) 代码编译方法及装置
CN112530615B (zh) 一种适用于核电站设备的变量强制方法及系统
CN115994086A (zh) 图像处理方法及装置、存储介质、终端
CN114398290A (zh) 一种程序调试方法、装置、设备及介质
JP2008123559A (ja) Plcシミュレータ装置及びシミュレーションするためのプログラムとこれが記録された記録媒体
CN111400173B (zh) 一种vts测试方法、装置及设备
CN113821250A (zh) 一种设备管理方法、装置、设备和存储介质
JP6252269B2 (ja) 制御装置、制御システム、データトレース方法、及びプログラム

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
TA01 Transfer of patent application right

Effective date of registration: 20210401

Address after: 100176 Floor 5 510-1515, No. 1 Building, No. 2 Courtyard, Dishengzhong Road, Daxing District Economic and Technological Development Zone, Beijing

Applicant after: BEIJING HOLLYSYS AUTOMATION & DRIVE Co.,Ltd.

Address before: 100176 Floor 5 510-1515, No. 1 Building, No. 2 Courtyard, Dishengzhong Road, Daxing District Economic and Technological Development Zone, Beijing

Applicant before: BEIJING HOLLYSYS AUTOMATION & DRIVE Co.,Ltd.

Applicant before: NINGBO HELISHI INTELLIGENT TECHNOLOGY Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant