CN110442520B - 一种基于plc编程语言的交叉调试系统及方法 - Google Patents

一种基于plc编程语言的交叉调试系统及方法 Download PDF

Info

Publication number
CN110442520B
CN110442520B CN201910669183.9A CN201910669183A CN110442520B CN 110442520 B CN110442520 B CN 110442520B CN 201910669183 A CN201910669183 A CN 201910669183A CN 110442520 B CN110442520 B CN 110442520B
Authority
CN
China
Prior art keywords
language
debugging
breakpoint
target
instruction
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
CN201910669183.9A
Other languages
English (en)
Other versions
CN110442520A (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.)
Cec Intelligent Technology Co ltd
Original Assignee
Cec Intelligent Technology 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 Cec Intelligent Technology Co ltd filed Critical Cec Intelligent Technology Co ltd
Priority to CN201910669183.9A priority Critical patent/CN110442520B/zh
Publication of CN110442520A publication Critical patent/CN110442520A/zh
Application granted granted Critical
Publication of CN110442520B publication Critical patent/CN110442520B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/02Total factory control, e.g. smart factories, flexible manufacturing systems [FMS] or integrated manufacturing systems [IMS]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Programmable Controllers (AREA)

Abstract

本发明涉及一种基于PLC编程语言的汇编级交叉调试方法,所述基于PLC编程语言的汇编级交叉调试方法是在PLC编程编译时嵌入断点信息,并生生成代码块标识、目标指令与ST语言映射标识、目标指令与LD语言映射标识、目标语言与FBD语言映射标识;在编译阶段,通过中间语言结构建立ST、LD、FBD语言与目标汇编指令的映射关系;在线阶段,将所收集的信息和标识、映射关系等下装到目标可编程控制器或仿真器中;在运行过程中,收集断点信息下发,并通过调试命令实现断点、步进、步出、跳过、单步等调试过程,在进入汇编视图时,提供基于汇编指令的断点、步进、步出、跳过、单步命令,在汇编视图中可显示调试过程对应的汇编指令和寄存器信息。

Description

一种基于PLC编程语言的交叉调试系统及方法
技术领域
本发明涉及PLC编程、调试,尤其涉及一种基于PLC编程语言的汇编级交叉调试方法,采用该方法设计实现嵌置在可编程控制器(PLC)编程软件中的PLC编程语言的汇编级交叉调试模块。
背景技术
目前,在计算机编程方面进行C\C++\Java等语言编程时都可以使用断点、单步、步进、步出等调试功能,但是这些语言都是文本语言,由编译器建立了文本语言和运行指令之间的关系,在进行调试时可以很方便的调试函数的每一个执行状态。但是PLC编程所使用的语言分为文本语言和图形语言,在进行调试时,无法看到语言编译后的汇编级运行指令,且在进行调试时由于语言限制,调试粒度不统一,为了解决这个问题,发明了一种基于PLC编程语言的汇编级交叉调试方法。
发明内容
本发明提供一种基于PLC编程语言的汇编级交叉调试方法。
本发明的目的是提供汇编级的PLC编程语言调试功能;
在此,该目的的解决方案是提供给用户一种用于调试的界面,所述用户界面可提供语言编辑视图、调试视图、汇编视图,提供用于提高PLC编程编译软件对高级用户调试需求的支持。根据本发明,一些高级语言用户能够实现对所编程序的高度控制和优化;
该目的的解决方案涉及一种基于PLC编程语言的汇编级交叉调试方法和根据该方法设计实现的嵌置在可编程控制器(PLC)编程软件中的PLC编程语言的汇编级交叉调试模块。
所述基于PLC编程语言的汇编级交叉调试方法是在PLC编程编译时嵌入断点信息,并生成代码块标识、目标汇编指令、目标机器指令、目标汇编指令与ST语言映射标识、目标汇编指令与LD语言映射标识、目标汇编指令与FBD语言映射标识;在编译阶段,通过中间语言结构建立ST、LD、FBD语言与目标汇编指令的映射关系;在线阶段,将所收集的信息和标识、映射关系等下装到目标可编程控制器或仿真器中;在运行过程中,收集断点信息下发,并通过调试命令实现断点、步进、步出、跳过、单步等调试过程,在进入汇编视图时,提供基于汇编指令的断点、步进、步出、跳过、单步命令,在汇编视图中可显示调试过程对应的汇编指令和寄存器信息;
所述嵌置在可编程控制器(PLC)编程软件中的PLC编程语言的汇编级交叉调试模块是采用所述基于PLC编程语言的汇编级交叉调试方法设计实现的PLC编程语言交叉调试模块,并在所述可编程控制器(PLC)编程软件中运行;
所述嵌置在可编程控制器(PLC)编程软件中的PLC编程语言的交叉调试模块包括PLC语言编辑器、信息和标识收集、编译标识生成、断点信息生成、调试命令通信、运行指令显示等六个部分;
所述可编程控制器(PLC)编程软件是一种面向PLC支持ST、LD、FBD语言编程编译的软件系统。
附图说明
图1 描述基于PLC编程语言的汇编级交叉调试方法;
图2 描述编译和链接框架;
图3 描述在线模块功能;
图4 描述在线时设置断点流程图;
图5 描述可编程控制器或仿真器进程状态转换图;
图6 描述ST编程软件中程序代码图;
图7 描述ST编程软件中程序添加断点图;
图8 描述执行到第一个断点后变量结果;
图9 描述执行完一个循环后遇到第一个断点的变量结果。
具体实施方式
为实现上述目的,本发明实施如下技术方案:
PLC在使用时,必须提供相应的具有ST、LD、FBD等语言编程功能的编程软件平台,在该平台上,最终用户可以用自己熟悉的PLC编程语言,经过相应的监控、测试、下装到PLC中,从而实现具体设备或过程的控制任务。目前PLC编程编译软件一般都采用国外的编程环境如Step7,CodeSys等,这些工具都带有调试功能,支持断点、步进、步入、跳转等调试指令,但是并不能支持到汇编指令级、对目标控制器的寄存器信息等没有进行调试实现。本发明研究工业控制编程语言的调试技术,实现面向PLC编程语言的汇编级交叉调试技术,并实现了断点、单步、步进、步出等调试功能,在PLC编程软件中嵌置所述PLC编程语言的交叉调试模块,并提供给用户一种用于调试的界面,所述用户界面可提供语言编辑视图、调试视图、汇编视图。
1.可编程控制器(PLC)编程软件
本发明中所描述的可编程控制器(PLC)编程软件,包含项目管理、ST语言编辑器、LD语言编辑器、FBD语言编辑器、编译器、链接器、在线、数据通信和仿真器模块;
所述ST语言编辑器支持 ST编程语言的词法、语法等;提供对ST语言的编程、变量监视、变量在线读写等功能;支持ST语言的断点、单步、步进、步出等调试功能;
所述LD语言编辑器支持 LD编程语言的词法、语法等;提供对LD语言的编程、变量监视、变量在线读写等功能;支持LD语言的断点、单步、步进、步出等调试功能;
所述FBD语言编辑器支持 FBD编程语言的词法、语法等;提供对FBD语言的编程、变量监视、变量在线读写等功能;支持FBD语言的断点、单步、步进、步出等调试功能;
所述编译器模块用于进行词法分析、语法分析、抽象语法树生成、中间代码生成、目标指令生成等功能,在编译过程中收集断点、代码块标识、目标指令与文本语言映射标识、目标指令与LD语言映射标识、目标语言与FBD语言映射标识,并生成调试信息文件;
所述链接器在进行不同程序链接的基础上,链接为了调试增加的调试信息和调试标识处理信息;
所述在线模块是登录目标可编程控制器或仿真器,将编译生成的目标指令文件、调试信息文件等下装到目标可编程控制器或仿真器中;
所述数据通信是建立与目标可编程控制器和仿真器的通信连接,并在运行过程中,收集断点信息下发,并通过调试命令实现断点、步进、步出、跳过、单步等调试过程,在可编程控制器(PLC)编程软件中显示调试过程对应的汇编指令和寄存器信息;
所述仿真器模块实现模拟目标可编程控制器的功能。
2.ST语言编辑器
为了进行正常的ST调试功能,ST语言编辑区提供语法高亮、行号显示、代码块折叠、断点标记、取消断点、运行行标识、汇编视图等功能;
(1)语法高亮功能
ST编辑器可以配置语言元素的显示颜色/显示背景色/字体/选中颜色/选中背景色:变量、关键字、POU名、自定义数据类型、注释、错误(未定义的变量、关键字、POU等),编辑区根据配置显示语法高亮内容;
(2)行号显示
在编辑窗口的最左侧显示文本行号;
(3)代码块折叠
ST语言中存在一系列需要配对使用的关键字:
被这些成对关键字包含的内容,可以将其折叠起来,具体操作方式为:
在成对关键字的起始关键字处,显示 ,单击/>,则代码折叠至一行,被折叠后的代码显示为/>,同时/>变为/>,可以将鼠标放在被折叠的代码块上,通过tooltip的形式显示被折叠代码的详细内容,也可以点击/>,将被折叠的代码重新展开,展开后,/>变为/>
(4)断点标识/取消断点
在行号左侧点击可建立断点,显示断点标识,再次点击后取消断点;
(5)运行行标识
在线时,以“à”标识显示运行到的行;
(6)汇编指令试图
在线时,以“ASM”标识切换到汇编指令视图,汇编指令视图提供汇编指令、断点/取消断点标识、行标识显示。
3.LD语言编辑器
为了进行正常的LD调试功能,LD语言编辑区提供网络、触点、线圈、块等元件的运行时高亮、网络号、能流线状态、网络折叠、断点标记、取消断点、汇编视图等功能;
(1)元件高亮功能
LD编辑器可以配置图形元件的显示颜色/显示背景色/字体/选中颜色/选中背景色,在线时能流线通/不通的颜色、块元件运行时颜色等;
(2)网络号显示
在编辑窗口的最左侧显示网络编号;
(3)网络块折叠
可折叠一个网络,在网络的起始位置,显示,单击/>,则网络所有内容折叠至一行,被折叠后的代码显示为/>,同时/>变为/>,可以点击/>,将被折叠的代码重新展开,展开后,/>变为/>
(4)断点标识/取消断点
在行号左侧点击可建立断点,显示断点标识,再次点击后取消断点;
(5)运行网络标识
在线时,以“à”标识显示运行到的网络;
(6)汇编指令试图
在线时,以“ASM”标识切换到汇编指令视图,汇编指令视图提供汇编指令、断点/取消断点标识、行标识显示。
4.FBD语言编辑器
为了进行正常的FBD调试功能,FBD语言编辑区提供网络、输入、输出、引脚、块等元件的运行时高亮、网络号、网络折叠、断点标记、取消断点、汇编视图等功能;
(1)元件高亮功能
LD编辑器可以配置图形元件的显示颜色/显示背景色/字体/选中颜色/选中背景色,块元件运行时颜色等;
(2)网络号显示
在编辑窗口的最左侧显示网络编号;
(3)网络块折叠
可折叠一个网络,在网络的起始位置,显示,单击/>,则网络所有内容折叠至一行,被折叠后的代码显示为/>,同时/>变为/>,可以点击/>,将被折叠的代码重新展开,展开后,/>变为/>
(4)断点标识/取消断点
在行号左侧点击可建立断点,显示断点标识,再次点击后取消断点;
(5)运行网络标识
在线时,以“à”标识显示运行到的网络;
(6)汇编指令试图
在线时,以“ASM”标识切换到汇编指令视图,汇编指令视图提供汇编指令、断点/取消断点标识、行标识显示。
5.编译器链接器模块
如图2所示,本文在通用编译流程上增加调试处理,本文的调试数据编译生成思想是在编译时,根据语法和语句的结构,在语法分析完成后,遍历抽象语法树,在语句后面加入调试调用接口,调试调用接口中包含文件信息、行信息等,该接口为在目标可编程控制器或仿真器中实现的处理函数,用于判断在目标程序中是否需要暂停运行,添加完调用接口后,进行语义分析、中间代码生成,编译生成.o二进制ELF文件,并在链接器中进行重定位信息处理,生成目标执行文件。
6.在线模块
在线模块实现语言在线的调试功能,如图3所示,在线模块主要包括登录、下装、运行、断点、取消断点、步进、步出、读取监视数据、退出登录等,用户界面上进行如上操作后,软件生成对应的指令通过通信模块发送给目标控制器或仿真器,并接收目标控制器或仿真器返回的消息,显示在界面上;
如图4所示,在线状态下,设置断点,将生成包含程序名称、断点位置等信息在内的设置断点通信指令,并发送该指令给仿真模块,仿真模块根据运行状态修改断点列表。通信模块接口仿真返回的信息,如果添加断点成功,则在界面上显示断点标识。
7.通信模块
通信模块采用TCP协议,并定义登录、下装、运行、断点、取消断点、步进、步出、读取监视数据、退出登录等指令的数据格式,提供生成和解析指令功能、发送和接收数据功能,以及在线超时等机制。当在线模块发送数据时,通讯模块中的计时器开始计时,若在规定的时间内通讯模块未接收到从控制站返回的应答数据,则认为通讯超时。若通讯超时,通讯模块发送超时消息到界面,并断开与仿真的连接,释放连接,在信息输出窗口显示“通讯超时”。
8.仿真模块设计
仿真模块为单独的进程,可划分为以下三个主要部分:通信处理部分、工程管理部分以及工程运行部分;
通信处理部分完成与ST编程软件进程交互的功能;工程管理部分用于接收ST编程软件下装的程序、解析程序;工程运行部分加载程序代码部分,完成数据加载、数据初始化,并根据ST编程软件进程发送的指令进行状态切换;
如图5所示,整个工程运行部分总共包括四个状态:初始化状态、停止状态、调试状态、运行状态。接收下装完成的工程文件以后进入初始化状态,初始化状态进行工程文件的解析和加载,如果初始化失败则停止;若初始化成功,则进入停止状态,在停止状态下如果收到调试命令则进入调试状态,运行状态无法直接进入调试状态,需要先切换至停止状态。运行状态如果出现故障也会进入停止状态;
调试状态下,收到运行指令,则会根据编译后的调试接口调用判断当前的运行的指令行是否在断点列表中,如果在,则暂停任务,并返回给ST编程软件当前运行到的位置信息,进入暂停等待,直到收到ST编程软件发送的继续运行指令。在此过程中,可以接收ST编程软件发送的读写监视数据指令,提供当前运行的数据信息。
9.运行分析
以ST语言在仿真器上运行的一个程序为例进行分析;
启动ST编程软件进程,创建工程,创建一个ST语言的程序,编写如图6语言代码;
编译完成后,登录仿真进程,下装工程,仿真加载下装的工程,解析正确后进入停止状态。ST编程软件发送调试指令,则仿真进入调试状态;
在ST编程创建断点,则发送断点信息给仿真进程,仿真进程记录断点信息到断点列表中,在本示例中添加如图7断点;
ST编程软件发送运行指令,则仿真从MachineCode的第一条指令开始执行,第一条语句p1:=p1+1;执行完成,进入调用接口,判断当前语句行是否在断点列表中,根据胡我们添加的断点,当前进入断点,则任务暂停,此时获取监视变量如下如结果:
再点击运行,仿真收到运行命令,继续运行程序,则执行条件语句的判断,由于p1此时小于100,执行else部分,遇到断点,由于断点打在else行,此时进入调用接口,判断行在断点行内,任务再次暂停,此时读取变量的结果与图8相同;
再点击运行,仿真收到运行命令,继续运行程序,则执行else中的语句p2:=false;,条件语句执行完毕后,下一行进入调用接口,此行不在断点列表中,继续运行,直到第8行,遇到调用接口,判断第8行在断点列表中,此时读取变量结果与图8相同;
再点击运行,仿真收到运行命令,继续运行程序,p3:=p1 mod 2;由于该ST程序在仿真中是循环执行的,执行完第8行后,再重复执行第一行完毕后,在第2行执行时遇到断点,暂停程序此时读取变量结果如图9所示;
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的范围内,能够轻易想到的变化或替换,都应涵盖在本发明权利要求的保护范围内。

Claims (1)

1.一种基于PLC编程语言的汇编级交叉调试方法,其特征在于,包括:
在PLC编程编译时嵌入断点信息,并生成代码块标识、目标汇编指令、目标机器指令、目标汇编指令与ST语言映射标识、目标汇编指令与LD语言映射标识、目标汇编指令与FBD语言映射标识;
编译阶段,通过中间语言结构建立ST/LD/FBD语言与目标汇编指令的映射关系;
在线阶段,将所述嵌入断点信息、目标汇编指令与ST语言映射标识、目标汇编指令与LD语言映射标识、目标汇编指令与FBD语言映射标识、ST/LD/FBD语言与目标汇编指令的映射关系,下装到目标可编程控制器或仿真器中;
运行阶段,收集ST、LD、FBD语言的断点信息下发,并通过调试命令实现ST/LD/FBD语言的断点、步进、步出、跳过、单步的调试;
通过汇编视图,基于ST/LD/FBD语言与目标汇编指令的映射关系,构建ST/LD/FBD语言的汇编指令的断点、步进、步出、跳过、单步命令调试,在汇编视图中可显示调试过程对应的汇编指令和寄存器信息。
CN201910669183.9A 2019-07-24 2019-07-24 一种基于plc编程语言的交叉调试系统及方法 Active CN110442520B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910669183.9A CN110442520B (zh) 2019-07-24 2019-07-24 一种基于plc编程语言的交叉调试系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910669183.9A CN110442520B (zh) 2019-07-24 2019-07-24 一种基于plc编程语言的交叉调试系统及方法

Publications (2)

Publication Number Publication Date
CN110442520A CN110442520A (zh) 2019-11-12
CN110442520B true CN110442520B (zh) 2023-07-28

Family

ID=68431326

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910669183.9A Active CN110442520B (zh) 2019-07-24 2019-07-24 一种基于plc编程语言的交叉调试系统及方法

Country Status (1)

Country Link
CN (1) CN110442520B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112835323B (zh) * 2020-12-31 2022-05-17 深圳市雷赛控制技术有限公司 可编程逻辑控制语言编译方法及装置
CN116431142B (zh) * 2023-04-13 2024-02-13 四川法瑞检测设备有限公司 一种可快速构建且不易出错的高效率编程方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160266997A1 (en) * 2015-03-12 2016-09-15 Landis+Gyr Innovations, Inc. Debugging code for controlling intelligent devices using log data from executed object code
CN109976760A (zh) * 2017-12-27 2019-07-05 北京东土科技股份有限公司 一种图形语言的交叉编译方法及交叉编译器

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160266997A1 (en) * 2015-03-12 2016-09-15 Landis+Gyr Innovations, Inc. Debugging code for controlling intelligent devices using log data from executed object code
CN109976760A (zh) * 2017-12-27 2019-07-05 北京东土科技股份有限公司 一种图形语言的交叉编译方法及交叉编译器

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Design and implementation of PLC multimedia software;Yanjun Hou;《 2011 International Conference on Multimedia Technology》;20110825;全文 *
STEP7断点调试功能对PLC的探索与研究;兑幸福;《科技创新导报》;20160613;全文 *

Also Published As

Publication number Publication date
CN110442520A (zh) 2019-11-12

Similar Documents

Publication Publication Date Title
CN109254776B (zh) 多语言代码编译方法及编译器
US5504902A (en) Multi-language generation of control program for an industrial controller
CN109143952B (zh) 可编程逻辑控制器编程语言转换系统
CN109918081B (zh) 一种编译方法及编译器
Iwamoto et al. Refactoring aspect-oriented programs
CN106737676B (zh) 一种基于脚本可二次开发的工业机器人编程系统
CN109976760A (zh) 一种图形语言的交叉编译方法及交叉编译器
CN105094939B (zh) 一种基于Makefile自动编译技术实现的软件源文件静态分析方法
CN110442520B (zh) 一种基于plc编程语言的交叉调试系统及方法
CN106484403A (zh) 一种机器人跨平台的图形化开发系统
JP2018133034A (ja) ソフトウェア試験装置、ソフトウェア試験システム、ソフトウェア試験方法およびプログラム
CN101458633B (zh) 通过脚本程序访问宿主程序的方法及其系统和装置
CN109032056B (zh) 可编程逻辑控制器编程语言转换方法
CN103092747A (zh) 一种控制程序的验证和测试方法及系统
CN116540986A (zh) 一种基于Web端的文本类编程语言代码编辑器构建方法
KR20010078692A (ko) 하이브리드 컴퓨터 프로그래밍 환경
CN104375932A (zh) 一种Java卡代码覆盖率分析方法和装置
CN110209565B (zh) 一种元数据模型调试方法及其装置
CN105700934A (zh) 一种智能编译方法和智能编译系统
KR20190094779A (ko) Plc 명령어 컴파일러 테스트케이스 자동 생성 장치
JP2000112737A (ja) プログラム作成装置
JPH08511370A (ja) ソフトウェア実行システム
CN115344248A (zh) 一种rpa开发字段编辑多样化方法
Lee et al. A New Integrated Software Development Environment Based on SDL, MSC, and CHILL for Large‐scale Switching Systems
CN116301836A (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