一种函数调试方法、装置、设备及存储介质与流程

文档序号:35287860发布日期:2023-09-01 09:30阅读:22来源:国知局
一种函数调试方法、装置、设备及存储介质与流程

本发明属于可编程控制器领域,具体涉及一种iec61131-3标准编写的函数单步调试方法,以及相应的调试装置、设备及计算机可读存储介质。


背景技术:

1、iec61131-3标准定义了函数、功能块。函数(function)不像功能块(functionblock)有数据结构体,函数有输入变量、返回值、本地变量(var)。声明为var类型变量,定义为函数内局部变量。通常用堆栈帧(stack frame)或活动记录(activate record)表示函数调用所需维护的信息,如图1所示,堆栈帧一般包括如下内容:

2、函数的返回地址和参数;

3、临时变量:函数的非静态变量、编译器自动生成的其它临时变量;

4、保存的上下文:在函数调用前后需要保持不变的寄存器。

5、通常用esp寄存器指向当前函数的活动记录的顶部,ebp指向返回地址。

6、由于一些编译器(例如cl.exe)对于函数局部变量地址分配并非按照声明顺序,而是根据变量类型和语句生命周期会重排复用,则无法根据运行时刻ebp地址获取各个局部变量的临时地址,无法实现单步调试功能,而单步调试对于复杂程序的诊断、问题定位有很大价值。故需要生成并嵌入插桩函数,根据输入变量声明顺序类型、本地变量声明顺序类型、函数返回值类型,形成本地变量写函数,计算出存储空间,上送整帧数据,组态软件根据变量声明顺序和字长,按照顺序解析和填写变量值。


技术实现思路

1、本发明的目的,在于提供一种函数调试方法、装置、设备及存储介质,能够实现iec61131-3函数的单步调试,提升可编程控制器的程序调试效率。

2、为了达成上述目的,本发明的解决方案是:

3、一种函数调试方法,包括如下步骤:

4、步骤一,将结构化文本函数的语言代码转换为c语言,并在转换过程中嵌入数据记录c函数;

5、步骤二,对转换得到的c代码进行编译解析,并对每一条语句命令进行调试。

6、上述步骤一的具体内容是,

7、步骤11,获取结构化文本函数变量信息,包括函数形参名/形成类型、本地变量名称/类型、函数返回值类型,自动形成数据记录c函数;

8、步骤12,数据记录c函数将结构化文本函数的变量值依次填写到数据缓冲区;

9、步骤13,将结构化文本函数转换为对等的c函数,每行c代码前面插入状态判断语句,每行c代码后面插入数据记录c函数的调用语句,从而得到转换后包含若干条语句命令的c代码。

10、上述步骤二的具体内容是,

11、步骤21,调用编译器编译转换处理后的c代码,下载目标文件到控制器运行,进入单步运行调试模式;

12、步骤22,控制器执行完一行c代码后,调用数据记录c函数,完成当前数据值记录并将数据帧发送给组态软件,组态软件接收后解析数据,刷新显示变量值;

13、步骤23,控制器等待执行下一条语句命令;组态软件获取鼠标/键盘事件,下发执行下一条语句命令;直至运行到函数尾部。

14、一种函数调试装置,包括,

15、转换嵌入模块,用于将结构化文本函数的语言代码转换为c代码,并在转换过程中嵌入数据记录c函数;及,

16、编译调试模块,用于对转换得到的c代码进行编译解析,并对每一条语句命令进行调试。

17、上述转换嵌入模块包括,

18、数据记录c函数形成模块,用于获取结构化文本函数的变量信息,包括函数形参名/形成类型、本地变量名称/类型、函数返回值类型,形成数据记录c函数;

19、数据记录c函数嵌入模块,用于将前述数据记录c函数所包含的结构化文本函数的变量信息依次填写到数据缓冲区;以及,

20、c代码转换模块,用于将结构化文本函数转换为对等的c函数,并在每行c代码前面插入状态判断语句,每行c代码后面插入数据记录c函数的调用语句,从而得到转换后包含若干条语句命令的c代码。

21、上述编译调试模块包括,

22、编译模块,用于对所述转换嵌入模块得到的c代码进行编译;以及,

23、调试模块,用于对编译后的c代码进行调试;首先下载目标文件到控制器,控制器执行完一条语句命令后,调用数据记录c函数,完成当前数据值记录并将数据帧发送给组态软件,组态软件接收后解析数据,刷新显示变量值;然后控制器等待执行下一条语句命令;组态软件获取鼠标/键盘事件,下发执行下一条语句命令;直至运行到函数尾部。

24、一种函数调试设备,包括存储器、处理器,以及存储在所述存储器中并可在所述处理器上运行的计算机程序;所述处理器执行所述计算机程序时实现如前所述的函数调试方法的步骤。

25、一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序;所述计算机程序被处理器执行时实现如前所述的函数调试方法的步骤。

26、采用上述方案后,本发明具有如下有益效果:在结构化文本转换为c语言的过程中,自动嵌入函数数据镜像记录c函数,实现单步调试过程中,函数形参变量、局部变量值的记录、上送、刷新显示,解决了iec61131-3的函数无法单步调试问题,提升了可编程控制器的程序调试效率。



技术特征:

1.一种函数调试方法,其特征在于包括如下步骤:

2.如权利要求1所述的函数调试方法,其特征在于:所述步骤一的具体内容是,

3.如权利要求1所述的函数调试方法,其特征在于:所述步骤二的具体内容是,

4.一种函数调试装置,其特征在于:包括,

5.如权利要求4所述的函数调试装置,其特征在于:所述转换嵌入模块包括,

6.如权利要求4所述的函数调试装置,其特征在于:所述编译调试模块包括,

7.一种计算机设备,包括存储器、处理器,以及存储在所述存储器中并可在所述处理器上运行的计算机程序;其特征在于:所述处理器执行所述计算机程序时实现如权利要求1至3任一项所述的函数调试方法的步骤。

8.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序;其特征在于:所述计算机程序被处理器执行时实现如权利要求1至3任一项所述的函数调试方法的步骤。


技术总结
本发明公开一种函数调试方法、装置、设备及存储介质,将结构化文本函数的语言代码转换为C语言,并在转换过程中嵌入数据记录C函数;对转换得到的C代码进行编译解析,并对每一条语句命令进行调试。此种技术方案在结构化文本转换为C语言的过程中,自动嵌入函数数据镜像记录C函数,实现单步调试过程中,函数形参变量、局部变量值的记录、上送、刷新显示,解决了IEC61131‑3的函数无法单步调试问题,提升了可编程控制器的程序调试效率。

技术研发人员:张磊,陈宏君,曾凯,叶立文,李响,周磊,谭良良,韩科文
受保护的技术使用者:南京南瑞继保电气有限公司
技术研发日:
技术公布日:2024/1/14
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1