STEP7断点调试功能对PLC的探索与研究

| 浏览次数:

zoޛ)j馓I1<iLky文章编号:1674-098X(2015)12(b)-0100-06

随着科学技术的发展,以微处理器为基础的工业用PLC(程序逻辑控制器),已经广泛应用于各种机械设备及生产线过程的自动化控制系统中,它功能强大、使用方便,成为当代工业自动化领域的主要技术支柱之一。目前各厂商推出的PLC产品,基本结构相同,工作原理相似,随着国际标准化编程语言IEC61131-3的推出,编程方式也趋于统一,但不同品牌又各有特点,针对不同的应用领域,开发出专用的功能模块,对PLC性能进行优化;编程软件的辅助功能也在进行功能拓展,应用于特殊的编程、测试、仿真等。

西门子公司编程软件STEP7中的断点调试功能,以其功能强大、操作简单、设置方便、界面友好等特点,成为最好的探索PLC工作原理的工具之一,通过断点调试功能结合PLC SIM仿真软件或在线监控PLC硬件运行,可以分解程序运行步骤,观察累加器和状态字寄存器、块寄存器、输入/输出变量、位存储器等内部核心器件的运行状态,了解PLC的工作过程。

1 PLC的运行工作过程

PLC的程序分为操作系统和用户程序,操作系统用来处理PLC的启动、刷新输入/输出过程映像区、调用用户程序、处理中断和错误、管理存储区和通讯等任务。PLC采用循环扫描方式执行由若干条指令组成的用户程序,指令在存贮器中顺序排列。从第一条指令开始,逐条顺序执行,直至扫描到最后一条,其间还会执行跳转指令和块调用指令,在执行指令时,从输入/输出过程映像区或其他存储区读入数据,按指令执行相应逻辑运算、算术运算,运算的结果写入指定的存储区域,因此与程序执行相关的执行器存储区的内容会随着程序的执行而变化,观察和跟踪这些核心器件内数据的变化过程,可以实现了解PLC的运行过程和工作原理的目的。

2 STEP7断点测试功能

STEP7的断点测试功能是在程序运行过程中产生断点,该功能的初衷是调试程序,在设备运行初期或出现故障时,通过断点操作,逐行在线扫描程序,同时观察寄存器里状态字的变化,累加器、存储器中数据的运算以及检测程序的运行结果,从而查找编程错误或故障点,最终解决问题。正是这样逐步观察程序运行的过程,为探索PLC的运行原理提供了技术手段。

2.1 断点测试功能的内容

在STEP7测试模式下,断点的限制数目可以通过选项设置,使用断点可以在用户程序的指定点停止程序处理。当PLC在程序中执行到断点时,CPU会切换到STOP模式。基于断点,可以逐步运行程序处理,检测每条语句执行的结果,并通过窗口显示PLC内部寄存器的内容、状态和数值,如图1所示。

2.2 断点测试功能设置步骤

此例使用西门子的S7 PLC SIM仿真器进行演示,使用真实PLC时,要尽量隔离I/O信号,如果必须在线调试程序,就要做好相关设备的防护措施,减少设备误动作造成的损害。注意:并非所有的PLC都可以使用断点测试功能,测试前要查阅相关可编程控制器的文档,确定PLC是否支持该功能。

2.2.1 设置断点测试运行模式

在西门子STEP7编程软件中打开需要调试的程序,在编程窗口使用调试/操作……菜单命令,就会打开操作窗口,如图2所示,可以在过程操作和测试操作之间选择需要的操作模式。

两种模式是有区别的,过程操作模式下,测试功能程序状态被限定为要保证在扫描周期时间上处理的程序最少,这就意味着不允许任何子程序调用,也不能进行HOLD测试和单步执行程序。测试操作模式下,所有的测试功能都可用,且不受限制,PLC扫描周期时间会明显增加,这是因为,需要手动控制程序的进程,并且程序回路中的语句状态在每个周期都被记录。

2.2.2 设置程序状态

通过离线/在线伙伴命令按钮,可以切换PLC的离线/在线状态,只有PLC处于在线状态时,才能运行断点测试功能,此时,顶部状态栏会显示为浅蓝色,用来区分离线/在线状态,如图3所示。

2.2.3 在程序中设置断点

将PLC设置为在线状态后,使用视图>断点栏命令可以调出断点工具栏,按钮功能如图4所示。

将光标移动到需要测试或观察的程序行前端,点击设置/删除断点按钮,即可在此处设置断点测试的起点,该程序行前端出现一个空心圆圈标记,如图5所示,再点击断点激活(开/关),断点变为实心圆圈标记,同时弹出图1所示的PLC寄存器内容窗口。

此时要将PLC切换到RUN-P模式,然后点击下一个语句按钮,即可显示一个箭头,指向要运行的程序,随着按钮的点击,程序逐步开始执行,执行过程中的状态和运行数据都可以通过PLC寄存器内容窗口观察到,直至程序结束。注意:断点测试只能在STL视图模式下进行。建议不要调用整个程序进行调试,而是逐个调用功能块,应当从调用子程序体系最深的嵌套层开始。

3 断点测试实例

为了能够全面了解断点测试功能,在编写的测试程序中尽量涉及PLC的典型应用实例,包括逻辑判断、数据运算、子程序调用、数据块调用、背景数据块等,基本能够满足对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(记录到按钮按下次数为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 编写程序

首先编写子程序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

CALL 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

_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 装载存储器

编写的程序和系统数据(组态、连接和模块参数)被下载到CPU的装载存储器内。程序运行时,CPU把程序中的可执行部分复制到工作存储器内。随PLC的型号不同,装载存储器可能是RAM和FEPROM等。

3.2.2 工作存储器

集成高速存取的RAM存储器,用于存储CPU运行时的用户程序和数据。在CPU断电或复位操作时,RAM中的程序会被清除。

3.2.3 系统存储器

系统存储器是CPU为用户程序提供的存储器组件,被划分为若干个地址区域,用于存放用户程序的操作数据,如过程映像输入/输出、位存储器、定时器、计数器、数据块与背景数据块、块堆栈、中断堆栈和诊断缓冲区等,该区域还提供临时存储器,可以存放程序块的临时数据,当用户生成块时,可以声明临时变量,该区域只在执行该块时有效,执行完后被覆盖,该例在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的程序控制和数值运行,通过断点测试可以观察到状态字的状态变化与控制程序运行的对应关系,以及累加器寄存器中数值的计算过程。

4.1 运行测试程序

在OB1的程序段1中设置断点,在线开始测试,该行程序是一个条件调用,当M0.0=0时,程序向下进行,当M0.0=1时,调用FB1功能块。

当M0.0=0时,状态字寄存器的/FC=0,表示一行程序的开始,STA=1,与命令A相对应,随着程序执行到第二行,/FC=1,表示程序正在执行中,继续执行时,由于没有满足调用条件,程序没有执行调用FB1功能块,而是直接跳过,进入下一段程序。

当M0.0=1时,程序执行到第二行,状态字寄存器/FC=1、STA=1、ROL=1,状态为存储的是寻址位的状态,逻辑位为1,表示能流可以到达该运算处(满足条件),可以跳转,两种条件下状态字寄存器对比如图8所示。

程序执行到第三行时,状态字寄存器/FC=1、STA=1、ROL=1,表示程序重新开始,因此,一行程序的开始并不是以段落和行来划分的,而是由状态字根据程序执行的状态,结合状态位、逻辑位的结果来决定的。此时要点击“执行调用”按钮,程序执行调用,自动在编程窗口打开FB1程序块,箭头指示到程序段1的第一行,此时在PLC寄存器内容中可以看到,背景数据块为DB3。

在FB1中,当I0.0=0时,/FC=1、STA=0、BR=1、ROL=0,程序执行到此处时,逻辑结果为0;当I0.0=1时, /FC=1、STA=1、BR=1、ROL=1,说明程序执行到该行时,对I0.0的信号做出状态和逻辑判断,逻辑结果为1,在随后执行的程序中计数器值为1,记录到按钮的点击次数,其余程序与此类同,不再分析。

4.2 状态字寄存器

通过上面的实例,可以看出状态字是一个16位的寄存器(高7位未用),用于存储CPU执行指令的状态。状态字中的某些位用于决定指令是否执行和以什么样的方式执行,此时,状态字中的变化为了解程序的运行提供了参考,指示程序运行的情况,而且,位逻辑指令和字逻辑指令还可以访问和检测状态字,将状态位信号直接集成到程序中,控制程序执行的流程。

状态字的每个位都与程序运行相关,如图9所示。

4.2.1 /FC:首位检测位

第0位称为首次检测位,FC前面的斜杠表示对FC取反,用于判断一个逻辑串(一系列的逻辑运算指令)的起止。 /FC为0,表明一个新逻辑串的开始,逻辑串指令执行过程中/FC为1,逻辑串指令结束时,/FC位清零。

4.2.2 RLO:逻辑运算结果位

第1位为RLO,位称为逻辑运算结果(Result of Logic Operation)。该位用来存储执行位逻辑指令或比较指令的结果。RLO的状态为1,表示有能流流过运算点处;为0则表示无能流流过该点。可以用RLO触发跳转指令。

4.2.3 STAT:状态位

第2位为状态位,用以保存被寻址位的值。状态位不能用指令检测,它只是在程序测试中被CPU解释并使用。如果一条指令是对存储区操作的位逻辑指令,则无论是对该位的读或写操作,STA总是与该位的值取得一致;对不访问存储区的位逻辑指令来说,STA位没有意义,此时它总被置为1。

4.2.4 BR:二进制结果位

第8位为二进制结果位,它将字处理程序与位处理联系起来,在一段既有位操作又有字操作的程序中,用于表示字逻辑是否正确。如果字逻辑指令或者功能、功能块出现错误,把BR置为0,能流中断,下条指令不被执行。字逻辑指令或者功能、功能块被正确执行后,使BR位为1,能流就可以传递到下条指令。

其余的OR、OV、OS、CC0、CC1位也与指令的逻辑操作和字运算等相关联,都可以通过逻辑位来访问,作为状态位常开/常闭触点用于编程。

4.3 程序运算测试

在FB1功能块将记录的按钮动作次数送入DB1.DBW 0中(为了更清楚地分析数据,假设这里已经记录了两次,即DB1.DBW 0=2),并返回OB1,运行到到程序段3 L DB1.DBW 0时,先将DB1.DBW 0中的数值2内容装入ACCU1(全局数据块为DB1),再执行L DB2.DBW 0,将数值1装入ACCU1(全局数据块为DB2),ACCU1原来的2移动到ACCU2中,执行整数相加命令后,结果送入ACCU1,此时ACCU1=3,ACCU执行前后对比如图10所示。

4.4 CPU的累加器

从上面的测试可以看出,累加器是CPU中的专用寄存器。S7_300有两个累加器,S7_400有4个累加器,数据的传送与变换一般通过累加器进行,而不是在存储区进行,还可以把操作数送入累加器,在累加器中进行运算和处理,处理后的运算结果保存在累加器1中,并可传送到存储区。数据运行原理如图11所示。

5 结语

通过西门子STEP7断点功能测试,为观察PLC程序运行找到了一种技术途径。编辑完成的程序下载到装载存储器,再将程序和系统存储器中的数据调入工作存储器中运行,由CPU状态寄存器里的控制字控制执行程序,由累加器完成数据运算和数据传递,使人们对PLC的工作原理有了更深入的了解。

参考文献

[1]廖常初.S7-300/400PLC应用技术[M].北京:机械工业出版社,2008.

[2]王安兵.什么是状态字?状态字的作用[J/OL].百度文库:http://wenku.baidu.com/link?url=F-IF3lCjaiR80vvTiuLIaJgUvs0YepwAJls-a8ZqvID1Hub0m1g9MuAgDcFvUEXaV9imLPyjNIi-E4-oh1PfWNMy9dsdQPnE0Ycr28JTpkS.

[3]刘玉蓉.西门子状态字九个位的含义[J/OL].技成文章:http:///wenku/PLC/ximenzi/201308/00004968.html.

推荐访问: 断点 调试 探索 功能 研究

【STEP7断点调试功能对PLC的探索与研究】相关推荐

工作总结最新推荐

NEW
  • XX委高度重视党校的建设和发展,出台《创建全省一流州市党校(行政学院)实施方案》及系列人才培养政策,为党校人才队伍建设提供了有力的政策支撑。州委党校在省委党校的悉心指导下、州委的正确领导下,深入贯彻落

  • 为推动“不忘初心、牢记使命”主题教育常态化,树牢“清新简约、务本责实、实干兴洛”作风导向,打造忠诚干净担当、敢于善于斗争的执纪执法铁军,经县纪委常委会会议研究,决定在全县纪检监察系统开展“转变作风工作

  • 为进一步发展壮大农村集体经济,增强村级发展活力,按照中共XXX市委抓党建促乡村振兴工作领导小组《关于印发全面抓党建促乡村振兴四个工作计划的通知》要求,工作队与村“两委”结合本村实际,共同研究谋划xx村

  • 今年来,我区围绕“产城融合美丽XX”总体目标,按照“城在林中,水在城中,山水相连,林水相依”以及“城乡一体、景城一体、园城一体”的建设思路,强力推进城市基础设施建设、棚户区改造、房地产开发和城市风貌塑

  • 同志们:新冠疫情发生至今已有近三年时间。三年来,在广大干群的共同努力下,我们坚决打好疫情防控阻击战,集团公司范围内未发生一起确诊病例,疫情防控工作取得了阶段性胜利。当前国际疫情仍在扩散蔓延,国内疫情多

  • 我是毕业于XX大学的定向选调生,当初怀着奉献家乡、服务人民的初心回到XX,在市委的关心关爱下,获得了这个与青年为友的宝贵历练机会。一年感悟如下。一要对党忠诚,做政治坚定的擎旗手。习近平总书记指出,优秀

  • 同志们:今天召开这个会议,主要任务是深入学习贯彻习近平总书记重要指示批示精神,以及李克强总理批示要求,认真落实全国安全生产电视电话会议和全省、全市安全生产电视电话会议精神,研究我县安全生产和安全隐患大

  • 2022年市委政研室机关党的建设工作的总体要求是:坚持以XXX新时代中国特色社会主义思想为指导,全面贯彻党的XX届X中X会和省、市第十二次党代会精神,自觉运用党的百年奋斗历史经验,弘扬伟大建党精神,深

  • 同志们:今天,我们在这里召开市直机关基层党建示范点工作会议,一方面是对各示范点单位进行表彰授牌,另一方面是想通过这种会议交流的方式,给大家提供一个相互学习、取长补短的平台和机会。市直工委历来把创建基层

  • 新冠疫情暴发以来,学校党委坚决贯彻习近平总书记关于疫情防控工作的指示要求和党中央的决策部署,严格执行×××部、×××厅关于疫情防控的系列要求,认真落实驻地防疫部门的工作举措,继承发扬优良传统,以最高标