断点测试在博图SCL编程中的基础使用方法
作者:黄 俊 涛
关键词:博图、断点测试、SCL、S7-300、S7-400、S7-1500
一、前言
本文面向PLC新手,对断点测试在博图 SCL编程中的基础使用方法进行简要说明。本次说明使用VMware Workstation 17 Pro虚拟机,虚拟机系统为Win10专业版,博图版本v18.1,PLC为CPU314C-2 PN/DP 和 CPU1516-3 PN/DP。
二、断点测试简介
2.1通用IDE中的断点测试
断点测试是一种十分有效的程序调试手段,在诸如VS Code、PyCharm、Visual Studio之类的主流通用IDE(Integrated Development Environment,集成开发环境)中皆有支持。
多数情况下,断点测试表现为使程序在运行到设定好的断点处时暂停运行,直到开发者给出恢复执行的指令后,才继续运行到下一断点。在暂停运行时,开发者可以查看变量、内存、调用栈等信息。它的存在,使开发者们得以更便捷地验证程序执行路径与实时检查程序状态,逐步排查问题,从而快速定位和修复问题。
2.2 博图中的断点测试
博图作为一种面向工业自动化领域的专用IDE,同样具有断点测试功能。但是,它的断点测试功能不是在所有情况下都能使用的,而是仅在使用S7-300、S7-400、S7-1500系列PLC CPU 固件版本 V2.5 及以上版本进行SCL和STL语言编程时才能使用,且部分功能在S7-1500系列PLC上不再支持使用。
本次说明将使用SCL语言,主要在CPU314C-2 PN/DP上演示断点测试的操作方法,以及设置/删除断点、启用/禁用断点、运行、执行到光标处、逐过程、逐语句、跳出、断点间跳转功能。
三、断点测试功能介绍与演示
3.1操作方法
对于断点测试的操作,可以通过三种方式完成。
第一种方式,是通过博图项目界面最右侧的“测试” (Testing) 任务卡,在“断点” (Breakpoints) 窗格中完成,如图1。
图1 “测试”任务卡与“断点”窗格
第二种方式,是右键点击代码行序号左侧的灰色竖条或断点标志,通过弹出的菜单完成操作,如图2。
图2 右键菜单
第三种方法,是使用菜单中显示的快捷键进行操作。虽然说是快捷键,但是这既不是所有操作都有快捷键,按键又略显繁杂,使用体验恐怕不会非常好,所以不推荐使用此法。
3.2断点基础操作
3.2.1设置/删除断点
设置一个断点的方法很简单。找到要设断点的语句对应的序号,在序号旁边左键点击一下灰色区域,会出现一个灰色的圆点,这就是被创建的断点。此时,该断点处于未启用状态。再次左键点击灰色圆点则会使其消失,这样就删除了这个断点。已经启用的断点同样可以被这样删除。
此外,右键菜单也可以实现设置与删除断点,且能直接删除所有断点,而“断点”窗格只能删除断点。
图3 未启用的断点
图4 右键菜单中的设置/删除断点
图5 “断点”窗格中的删除断点
需要注意的是,REPEAT、END_IF、END_FOR、END_WHILE、END_CASE等控制结构的开始或结束处,不能设置断点。
3.2.2启用/禁用断点
断点在被成功创建后,需要启用才能发挥作用。若要启用断点,则必须将程序转为在线,否则无法启用断点。对于暂时不需要的断点,我们可以将其禁用。将程序由在线转为离线时,博图会将所有断点状态切换为禁用,再次转为在线时,需要将用到的断点重新启用。
我们可以右键点击新创建的断点,在右键菜单中启用它,也可以在“断点”窗格中启用它。右键菜单和“断点”窗格一样,都能选择启用/禁用选定的单个断点,或是启用/禁用所有断点,十分便捷。
图6 右键菜单中的启用/禁用断点
图7 “断点”窗格中的启用/禁用断点
左侧为启用/禁用所有断点,右侧为启用/禁用选定的断点
启用断点后,运行状态下的PLC将转为调试模式。在此模式下,S7-300系列与S7-400系列PLC中启用了断点的程序将不能被监视。同样的,正在被监视的程序不能启用断点。S7-1500系列PLC不受影响。
3.2.3运行
启用断点后,程序将会执行至第一个被启用的断点的前一行语句,而后进入暂停状态。这也就意味着,被设置了断点的那一行语句在此时并不会被执行。直到我们按下运行按钮,程序才会继续执行,直到下一个被启用的断点。
运行按钮在右键菜单和“断点”窗格中都能被找到。
图8 右键菜单中的运行
图9 “断点”窗格中的运行
需要注意的是,此时的S7-300系列和S7-400系列的PLC不会在监视中显示变量的实时变化,仅会在一个周期完成后更新变量状态,而不能通过按下运行按钮更新变量状态。但S7-1500系列的PLC与之相反,会在每次运行后更新变量状态。
3.2.3断点间跳转
当我们设置的断点较为分散而导致不好定位时,我们可以通过断点间跳转来实现对断点的精准定位。
我们可以在断点的右键菜单找到“转至上一个断点”和“下一个断点”这两个选项,它们可以使光标跳转到当前断点的上一个或下一个断点的位置。这个方法在断点较少时尚可使用,倘若断点较多,且我们需要跳过某些断点去定位到下一个断点,那么我们应该使用“断点”窗格。在“断点”窗格下列出的断点中,左键双击我们要定位的断点,光标就会跳转到该断点的位置。这使得我们可以快速定位目标断点。
图10 右键菜单中的断点见跳转
图11 “断点”窗格中的断点间跳转
3.3其他操作
本部分内容在实践中使用较少,且除执行到光标处外的功能仅在S7-300系列和S7-400系列PLC上得到支持,实用价值较低,故仅作简单介绍。
3.3.1执行到光标处
使程序继续执行,直到光标位置。
图12 右键菜单中的执行到光标处
图13 “断点”窗格中的执行到光标处
3.3.2逐过程
在当前程序块中逐句执行,直至该程序快结束。
3.3.3逐语句
在全局中逐句执行,直至该程序结束。
3.3.4跳出
如果正在进行块调用,而且所调用块中的程序执行在断点处中断运行,则可使用“跳出”(Step out) 命令跳回到被调用块。
图13 右键菜单中的逐过程、逐语句、跳出
图14 “断点”窗格中的逐过程、逐语句、跳出