1、STEP7 断点调试功能对 PLC 的探索与研究摘 要:PLC(程序逻辑控制器)采用循环扫描的方式执行用户程序,逻辑执行状态和数据运行结果监视,需借助断点功能或其他工具对 PLC的存储器和寄存器等内部存储器进行查询。该文借助西门子编程软件STEP7 断点功能,阐述如何在程序调试中设置断点,通过断点操作,逐步执行程序,观察程序运行时状态字和累加器的数值改变,既可监视程序的运行情况,又可查看程序数据块、背景数据块、堆栈指针等数值的变化,通过实际的逻辑结果监视和数据实时查询,对 PLC 的运行过程进行分析与探索,揭示 PLC 的工作原理。 关键词:断点功能 PLC 测试 循环处理 存储器 寄存器 中
2、图分类号:TP31 文献标识码:A 文章编号:1674-098X(2015)12(b)-0100-06 随着科学技术的发展,以微处理器为基础的工业用 PLC(程序逻辑控制器) ,已经广泛应用于各种机械设备及生产线过程的自动化控制系统中,它功能强大、使用方便,成为当代工业自动化领域的主要技术支柱之一。目前各厂商推出的 PLC 产品,基本结构相同,工作原理相似,随着国际标准化编程语言 IEC61131-3 的推出,编程方式也趋于统一,但不同品牌又各有特点,针对不同的应用领域,开发出专用的功能模块,对 PLC 性能进行优化;编程软件的辅助功能也在进行功能拓展,应用于特殊的编程、测试、仿真等。 西门子
3、公司编程软件 STEP7 中的断点调试功能,以其功能强大、操作简单、设置方便、界面友好等特点,成为最好的探索 PLC 工作原理的工具之一,通过断点调试功能结合 PLC SIM 仿真软件或在线监控 PLC 硬件运行,可以分解程序运行步骤,观察累加器和状态字寄存器、块寄存器、输入/输出变量、位存储器等内部核心器件的运行状态,了解 PLC 的工作过程。 1 PLC 的运行工作过程 PLC 的程序分为操作系统和用户程序,操作系统用来处理 PLC 的启动、刷新输入/输出过程映像区、调用用户程序、处理中断和错误、管理存储区和通讯等任务。PLC 采用循环扫描方式执行由若干条指令组成的用户程序,指令在存贮器中
4、顺序排列。从第一条指令开始,逐条顺序执行,直至扫描到最后一条,其间还会执行跳转指令和块调用指令,在执行指令时,从输入/输出过程映像区或其他存储区读入数据,按指令执行相应逻辑运算、算术运算,运算的结果写入指定的存储区域,因此与程序执行相关的执行器存储区的内容会随着程序的执行而变化,观察和跟踪这些核心器件内数据的变化过程,可以实现了解 PLC 的运行过程和工作原理的目的。 2 STEP7 断点测试功能 STEP7 的断点测试功能是在程序运行过程中产生断点,该功能的初衷是调试程序,在设备运行初期或出现故障时,通过断点操作,逐行在线扫描程序,同时观察寄存器里状态字的变化,累加器、存储器中数据的运算以及
5、检测程序的运行结果,从而查找编程错误或故障点,最终解决问题。正是这样逐步观察程序运行的过程,为探索 PLC 的运行原理提供了技术手段。 2.1 断点测试功能的内容 在 STEP7 测试模式下,断点的限制数目可以通过选项设置,使用断点可以在用户程序的指定点停止程序处理。当 PLC 在程序中执行到断点时,CPU 会切换到 STOP 模式。基于断点,可以逐步运行程序处理,检测每条语句执行的结果,并通过窗口显示 PLC 内部寄存器的内容、状态和数值,如图 1 所示。 2.2 断点测试功能设置步骤 此例使用西门子的 S7 PLC SIM 仿真器进行演示,使用真实 PLC 时,要尽量隔离 I/O 信号,如
6、果必须在线调试程序,就要做好相关设备的防护措施,减少设备误动作造成的损害。注意:并非所有的 PLC 都可以使用断点测试功能,测试前要查阅相关可编程控制器的文档,确定 PLC 是否支持该功能。 2.2.1 设置断点测试运行模式 在西门子 STEP7 编程软件中打开需要调试的程序,在编程窗口使用调试/操作菜单命令,就会打开操作窗口,如图 2 所示,可以在过程操作和测试操作之间选择需要的操作模式。 两种模式是有区别的,过程操作模式下,测试功能程序状态被限定为要保证在扫描周期时间上处理的程序最少,这就意味着不允许任何子程序调用,也不能进行 HOLD 测试和单步执行程序。测试操作模式下,所有的测试功能都
7、可用,且不受限制,PLC 扫描周期时间会明显增加,这是因为,需要手动控制程序的进程,并且程序回路中的语句状态在每个周期都被记录。 2.2.2 设置程序状态 通过离线/在线伙伴命令按钮,可以切换 PLC 的离线/在线状态,只有 PLC 处于在线状态时,才能运行断点测试功能,此时,顶部状态栏会显示为浅蓝色,用来区分离线/在线状态,如图 3 所示。 2.2.3 在程序中设置断点 将 PLC 设置为在线状态后,使用视图断点栏命令可以调出断点工具栏,按钮功能如图 4 所示。 将光标移动到需要测试或观察的程序行前端,点击设置/删除断点按钮,即可在此处设置断点测试的起点,该程序行前端出现一个空心圆圈标记,如
8、图 5 所示,再点击断点激活(开/关) ,断点变为实心圆圈标记,同时弹出图 1 所示的 PLC 寄存器内容窗口。 此时要将 PLC 切换到 RUN-P 模式,然后点击下一个语句按钮,即可显示一个箭头,指向要运行的程序,随着按钮的点击,程序逐步开始执行,执行过程中的状态和运行数据都可以通过 PLC 寄存器内容窗口观察到,直至程序结束。注意:断点测试只能在 STL 视图模式下进行。建议不要调用整个程序进行调试,而是逐个调用功能块,应当从调用子程序体系最深的嵌套层开始。 3 断点测试实例 为了能够全面了解断点测试功能,在编写的测试程序中尽量涉及 PLC的典型应用实例,包括逻辑判断、数据运算、子程序调
9、用、数据块调用、背景数据块等,基本能够满足对 PLC 运行和工作原理的探索与研究。 3.1 编写测试程序 3.1.1 测试程序的功能 基于以上目的,编写一个按钮控制 16 盏灯的测试程序,当按钮按下2 次后 16 盏灯全亮,当按钮按到第 3 次时 16 盏灯全灭,然后重新开始循环,具体过程如下。 (1)在主程序 OB1 中满足 M0.0=1 条件后,调用子程序功能块 FB1,背景数据块为 DB3。 (2)在子程序 FB1 功能块中点击按钮 I0.0,点击次数记录在全局数据块 DB1 的 DB1.DBW0 中。 (3)调用结束,回到主程序 OB1。 (4)如果 DB1.DBW0=1(记录到按钮按
10、下次数为 1 或以上) ,将DB2.DBW0 赋值为 1。 (5)DB1.DBW0 和 DB2.DBW0 相加,计算结果送到 MW100 中。 (6)如果 MW100=3(即按钮按下 2 次) ,PQW0 控制下的 16 盏灯全亮。 (7)如果 MW100=4(即按钮按下 3 次) ,PQW0 控制下的 16 盏灯全灭,此时 DB1.DBW0、DB2.DBW0、MW100 复位为 0,程序结束。 3.1.2 程序控制逻辑 程序逻辑如图 6 所示。 满足 M0.0=1 条件后,程序跳转到功能 FB1,完成按钮计数后,转回主程序,再对计数进行判断,满足条件灯亮,否则灯灭。 3.1.3 编写程序 首
11、先编写子程序 FB1 功能块,在变量声明表中设置内部变量, “a”为布尔型数据, “zhongjian”为整数型数据。 在 FB1 中编写程序如下: 程序段 1 A I 0.0 FP #a CU C 1 BLD 101 A M 0.3 L C#1 S C 1 A M 0.4 R C 1 L C 1 T #zhongjian NOP 0 NOP 0 程序段 2 L #zhongjian T DB1.DBW 0 NOP 0 在 OB1 中编写主程序,在程序段 1 中有条件调用功能块 FB1,会提示自动生成背景数据块,这里指定的背景数据块为 DB3。 程序段 1 A M 0.0 JNB _001 C
12、ALL FB 1 , DB3 a :=M0.1 zhongjian:=DB1.DBW2 _001: NOP 0 程序段 2 A( L DB1.DBW 0 L 1 =I ) JNB _002 L 1 T DB2.DBW 0 _002: NOP 0 程序段 3 L DB1.DBW 0 L DB2.DBW 0 +I T MW 100 NOP 0 程序段 4 L MW 100 L 4 =I = M 0.4 程序段 5 A M 0.4 = L 20.0 A L 20.0 JNB _003 L 0 T MW 100 _003: NOP 0 A L 20.0 JNB _004 L 0 T DB1.DBW 2
13、 _004: NOP 0 A L 20.0 JNB _005 L 0 T DB2.DBW 0 _005: NOP 0 程序段 6 L MW 100 L 3 =I JN noze L DW#16#FFFF T PQW 0 JU next noze: L 0 T PQW 0 next: NOP 0 3.2 测试程序下载和运行 保存编写完成的程序,STEP7 会对编写的程序进行检测,如果发现问题会给出错误提示,帮助编程人员修改程序,然后下载到 PLC 的装载存储器中,工作时,由 CPU 调度指挥,将程序和系统存储器中的数据放在工作存储器中运行,再将结果送回各个系统存储器,具体功能如下。 3.2.1
14、装载存储器 编写的程序和系统数据(组态、连接和模块参数)被下载到 CPU 的装载存储器内。程序运行时,CPU 把程序中的可执行部分复制到工作存储器内。随 PLC 的型号不同,装载存储器可能是 RAM 和 FEPROM 等。 3.2.2 工作存储器 集成高速存取的 RAM 存储器,用于存储 CPU 运行时的用户程序和数据。在 CPU 断电或复位操作时,RAM 中的程序会被清除。 3.2.3 系统存储器 系统存储器是 CPU 为用户程序提供的存储器组件,被划分为若干个地址区域,用于存放用户程序的操作数据,如过程映像输入/输出、位存储器、定时器、计数器、数据块与背景数据块、块堆栈、中断堆栈和诊断缓冲
15、区等,该区域还提供临时存储器,可以存放程序块的临时数据,当用户生成块时,可以声明临时变量,该区域只在执行该块时有效,执行完后被覆盖,该例在 FB1 功能块中声明的布尔量“a”和整数“zhongjian”即为临时变量。 如图 7 所示:扫描循环开始时,CPU 读取过程映像输入/输出区域里的 I0.0(按钮)的输入信号,在计数器存取区域记录 FB1 功能块中点击按钮的次数,并存储在临时存储器里,背景数据块 DB3 与之相关联,然后送到共享数据块 DB1 中的 DB1.DBW0,同时使共享数据块 DB2 中的 DB2.DBW0 等于 1,DB1.DBW0 与 DB2.DBW0 相加,结果送到位存储器 MW100 中,通过对 MW100 的判断,如果大于等于3,将 FF 赋值给过程映像输入/输出区域 PQW0,控制 16 盏灯全部亮起,如果大于等于 4,则将 0 赋值给 PQW0,灯全部灭。 4 断点测试过程 CPU 中的状态字寄存器和累加器寄存器担负着 PLC 的程序控制和数值