首页 理论教育 数据传送指令及程序状态监控技巧

数据传送指令及程序状态监控技巧

时间:2023-06-28 理论教育 版权反馈
【摘要】:表3-6 部分装载指令与传送指令装载与传送指令的执行与状态位无关,也不会影响到状态位。启动程序状态监控后,从梯形图左侧垂直的“电源”线开始的连线均为绿色,表示有能流从“电源”线流出。有能流流过的方框指令、线圈、连接线和处于闭合状态的触点均用绿色表示。

数据传送指令及程序状态监控技巧

1.装载指令与传送指令

装载(Load,L)指令与传送(Transfer,T)指令用于在存储器之间或存储器与过程输入、过程输出之间交换数据。

装载指令“L<地址>”将累加器1(ACCU1)原有的内容保存到累加器2,并将累加器1复位为0,然后将被寻址的字节、字或双字装载到累加器1。被装载的字节和字放在累加器的最低字节和低位字。

传送指令“T<地址>”将累加器1的内容传送(复制)到目标地址,累加器1的内容不变。被复制的数据字节数取决于目的地址的数据长度。数据从累加器1传送到外设输出区PQ的同时,也被传送到对应的过程映像输出区(Q区)。表3-6是部分装载指令与传送指令。

表3-6 部分装载指令与传送指令

978-7-111-53570-6-Chapter03-78.jpg

装载与传送指令的执行与状态位无关,也不会影响到状态位。对于S7-300,L STW指令不装载状态字中的/FC、STA和OR位。

在语句表程序中,存储区的地址之间、存储区的地址与外设输入/外设输出之间不能直接进行数据交换,只能通过累加器进行交换,累加器是上述数据交换的中转站。

2.语句表程序状态监控

生成一个项目,打开OB1。如果默认的语言不是STL,执行菜单命令“视图”→“STL”,切换到语句表方式,输入图3-37左边的语句表程序。其中的指令“+I”将累加器1和累加器2中的16位整数相加,结果在累加器1中。打开PLCSIM,生成MW2、MW4和MW6的视图对象。将OB1下载到仿真PLC,将仿真PLC切换到RUN-P模式。分别将300和500输入MW2和MW4的视图对象。

单击工具栏上的 978-7-111-53570-6-Chapter03-79.jpg 按钮,启动程序状态监控功能,图3-37程序区右边窗口中是指令执行的监控信息,称为状态域。图中的RLO和STA是状态字中的两位(见3.2.4节)。STANDARD是累加器1,默认的显示方式为十六进制数。刚开始启动监控时没有ACCU2累加器2)列。

978-7-111-53570-6-Chapter03-80.jpg

图3-37 语句表程序状态监控

用右键单击STANDARD所在的表头(见图3-37),执行快捷菜单中的“表达式”→“十进制”命令,改用十进制数显示累加器1的值。在快捷菜单中,累加器1被称为“默认状态”。

执行快捷菜单中的“显示”→“累加器2”命令,添加表头为ACCU2(累加器2)的列,将该列的显示格式也改为十进制数。

用右键单击STA列,执行快捷菜单中的“隐藏”命令,将使该列消失。

从图3-37可以看出,执行第一条L指令后,MW2中的300被装载到累加器1,执行第二条指令后,累加器1中的300被传送到累加器2,MW4中的500被装载到累加器1。执行“+I”指令后,累加器1和累加器2的低位字中的数据相加,运算结果800在累加器1中,累加器2被清零。执行T指令后,累加器1中的800被传送到MW6,累加器1中的数据保持不变。

在程序编辑器中执行菜单命令“选项”→“自定义”,打开“自定义”对话框的STL选项卡,可以设置默认的监视内容。

3.梯形图中的传送指令

梯形图中的传送指令只有一条MOVE指令(见图3-38),它直接将源数据IN传送到目的地址OUT,不用经过累加器中转。输入变量和输出变量可以是8位、16位或32位的基本数据类型。同一条指令的输入参数和输出参数的数据类型可以不相同。如果将MW10中的数据传送到MB6,当MW10的值超过255时,只是将MW10的低位字节(MB11)中的数据传送到MB6,应避免出现这种情况。

4.梯形图程序状态的显示

梯形图(LAD)用图3-38中较粗的绿色连续线来表示逻辑运算结果为1,即有“能流”流过;用蓝色点状细线表示状态不满足,没有能流流过;用黑色连续线表示状态未知。

进入程序状态之前,梯形图中的线和元件因为状态未知,全部为黑色。启动程序状态监控后,从梯形图左侧垂直的“电源”线开始的连线均为绿色,表示有能流从“电源”线流出。有能流流过的方框指令、线圈、连接线和处于闭合状态的触点均用绿色表示。

如果有能流流入指令框的使能输入端EN,该指令被执行。如果指令框的使能输出端ENO接有后续元件,有能流从它的ENO端流到与它相连的元件,该指令框为绿色。如果ENO端未接后续元件,则该指令框和ENO输出线均为黑色。

如果CALL指令成功地调用了逻辑块,CALL线圈为绿色。如果跳转条件满足,跳转被执行,跳转线圈为绿色。被跳过的程序段的指令没有被执行,这些程序段的梯形图为黑色。(www.xing528.com)

梯形图中加粗的字体显示的参数值是当前值,细体字显示的参数值来自以前的循环,即该程序区在当前扫描周期中未被处理。

978-7-111-53570-6-Chapter03-81.jpg

图3-38 在梯形图程序状态中修改数据值

用鼠标右键单击图3-38中显示的监控数据,执行快捷菜单命令“表达式”,可以将默认的十六进制显示方式改为十进制。BCD_I指令采用默认的“自动”显示方式,输入变量IN和输出变量OUT的显示格式分别为十六进制和十进制。

用左键单击选中图3-38中的MW10,再用右键单击它,执行出现的快捷菜单中的“修改”命令,可以用出现的“修改”对话框修改MW10的值。右键单击某个触点或线圈,可以用快捷菜单中的命令“修改为0”或“修改为1”来修改它的值。也可以用类似的方法修改语句表程序状态中的变量值。

5.程序库

程序编辑器左边窗口的“库”文件夹中的程序库用来存放可以多次使用的程序部件,其中的子文件夹“Standard Library”(标准库)是STEP 7标准软件包提供的标准程序库,它由以下子文件夹组成:

1)System Function Blocks:保存在CPU的操作系统中的系统功能块SFB和系统功能SFC。

2)S5-S7 Converting Blocks:转换S5程序的块。

3)IEC Function Blocks:符合IEC标准的块,例如用于处理时间和日期信息、比较操作、字符串处理与选择最大值/最小值等。

4)Organization Blocks:组织块(OB)。

5)PID Control Blocks:用于PID控制的功能块。

6)Communication Blocks:用于SIMATIC NET CP通信的FC和FB。

7)TI-S7 Converting Blocks:一般用途的标准功能。

8)Miscellaneous Blocks:其他块,用于时间标记和实时钟同步的块。

“库”文件夹中还有其他程序库,例如“SIMATIC_NET_CP”文件夹中的块用于通信处理器(CP)的编程,名称中包含“Redundant IO”的文件夹用于冗余控制系统。文件夹“stdlibs”与“Standard Library”中的块是重复的。用户安装可选软件包后,将会增加其他程序库。例如安装了顺序功能图语言S7-Graph后,将会增加GRAPH7库。

6.用于数据区传送的系统功能

1)使用SFC20"BLKMOV"(块移动),可以将源存储区的内容复制到目标存储区。源区域与目标区域不能交叉。

输入程序时,将程序编辑器左边窗口的文件夹“\库\Standard Library\System Function Blocks”中的SFC20“拖放”到右边窗口的程序段中,将会自动生成调用SFC20的CALL指令,“:=”号之前是SFC的形式参数(形参),在“:=”号的后面输入各形参的实际参数(实参),“//”号的右边是对该行指令的注释。

输入参数SRCBLK和输出参数DSTBLK的数据类型均为ANY。ANY主要用来表示一片连续的数据区,例如P#DB2.DBX0.0 BYTE 20表示DB2中的DBB0~DBB19这20个字节。ANY的实参(实际参数)也可以是任意的数据类型的地址,例如DB2.DBW30和Q12.5,但是只能表示一个地址。

978-7-111-53570-6-Chapter03-82.jpg

2)SFC81"UBLKMOV"(不间断的块移动)与SFC20的功能和使用方法基本上相同,SFC81的复制操作不会被操作系统的其他任务打断。

3)使用SFC21"FILL",可以将源数据区的数据填充到目标数据区。参数BVAL和BLK的数据类型均为ANY。假设MB20和MB21的值为7和5,执行下面的例程后,DB2的DBB30~DBB34的值分别为7、5、7、5和7。源区域与目标区域不能交叉。

978-7-111-53570-6-Chapter03-83.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈