程序控制指令

合集下载

第九章 程序控制类指令及应用

第九章 程序控制类指令及应用
中断前后,系统保存和恢复逻辑堆栈、累加寄存器、特殊存储器标志
位(SM)。从而避免了中断服务返回后对主程序执行现场所造成的破坏。
INT
n,中断服务程序标号指令。中断服务程序标号INT标示n号中断服 务程序的开始(入口)。n的范围是0~127(取决于CPU的型号)。
CRETI,中断服务程序条件返回指令。CRETI根据前面逻辑条件决定是
③每次使能输入(EN)重新有效时,指令将自动复位各参数; ④初值大于终值时,循环体不被执行。
第三节 顺控继电器指令

S7-200 CPU含有256个顺序控制继电器 (SCR)用于顺序控制。S7-200包含顺 序控制指令,可以模仿控制进程的步骤, 对程序逻辑分段;可以将程序分成单个 流程的顺序步骤,也可同时激活多个流 程;可以使单个流程有条件地分成多支 单个流程,也可以使多个流程有条件地 重新汇集成单个流程。从而对一个复杂 的工程可以十分方便地编制控制程序。
ENI,全局中断允许指令。全局性的允许所
有被连接的中断事件。
DISI,全局中断禁止指令。全局性的禁止
处理所有的中断事件。执行DISI指令后,出 现的中断事件就进入中断队列排队等候,直 到ENI指令重新允许中断。
CPU进入RUN运行模式时自动禁止所有中断。
在RUN运行模式中执行ENI指令后,允许所有 中断。


1. 顺序继电器指令 (1)段开始指令:LSCR 定义一个顺序控制继电器段的开始。操作数 为顺序控制继电器位Sx.y,Sx.y作为本段的段 标志位。当Sx.y位为1时,允许该SCR段工作。 (2)段结束指令:SCRE 一个SCR段必须用该指令来结束。 (3)段转移指令:SCRT 该指令用来实现本段与另一段之间的切换。 操作数为顺序控制继电器位Sx.y,Sx.y是下一 个SCR段的标志位。当使能输入有效时,一方 面对Sx.y置位,以便让下一个SCR段开始工作, 另一方面同时对本SCR段的标志位复位,以便 本段停止工作。

第3章PLC的基本指令及程序设计

第3章PLC的基本指令及程序设计
✓ 计数器位:计数器位和继电器一样是一个开关量,表示计数器是否 发生动作的状态。当计数器的当前值达到设定值时,该位被置位为 ON。
✓ 计数器当前值:其值是一个存储单元,它用来存储计数器当前所累 计的脉冲个数,用16位符号整数来表示,最大数值为32 767。
计数器输入端和操作数 ✓ 设定值输入:数据类型为INT型。 ✓ 寻址范围:VW、IW、QW、MW、SW、SMW、LW、AIW、T、C、 AC、*VD、*AC、*LD和常数。 ✓ 一般情况下使用常数作为计数器的设定值。
LPS(Logic Push) 逻辑入栈指令(分支电路开始指令)
LRD(Logic Read) 逻辑读栈指令
LPP(Logic Pop) 逻辑出栈指令(分支电路结束指令)
LPS/LRD/LPP
LPS/LRD/LPP举例 例3
指令3 与ENO指令AENO ENO是LAD中指令盒的布尔能量流出端。该指令使用较少。
举例
1. 逻辑堆栈操作指令
堆栈 堆栈是一组能够存储和取出数据的暂存单元。 遵循“先进后出”的原则。 堆栈深度为“9层”。 可以存储最新的逻辑运算(中间)结果,以便后续逻辑环节使用该结果。 逻辑堆栈操作主要来完成触电复杂逻辑连接的编程。
指令1 OLD(或块指令) ALD (与块指令)
OLD(Or Load)
定时器的指令及使用 指令
定时器的指令及使用
接通延时定时器TON(On-Delay Timer) ✓ 接通延时定时器用于单一时间间隔的定时。 ✓ 上电周期或首次扫描时,定时器位为OFF,当前值为0。 ✓ 输入端接通时,定时器位为OFF,当前值从0开始计时,当前值达 到设定值时,定时器位为ON,当前值仍连续计数到32 767。 ✓ 输入端断开,定时器自动复位,即定时器位为OFF,当前值为0。

程序控制指令

程序控制指令

功能说明: 长返回指令。先将栈顶低7位赋给XPC。再
2023年10月17日7时30分
把下一个单元的16位值赋给PC,SP加1修正。
DSP原理及应用
17
4.返回指令 ② FRETE[D]
指令格式: FRETE[D]
指令功能: (TOS)→XPC (SP)+1→SP (TOS)→PC (SP)+1→SP 0→INTM
程序控制指令
程序控制指令
’C54x的程序控制指令共有31条,可分为6类:
包括: 分支转移指令
子程序调用指令
中断指令
返回指令
堆栈操作指令
其他程序控制指令
2023年10月17日7时30分
DSP原理及应用
2
程序控制指令
1.分支转移指令
分支转移指令共有6条,可实现无条件转移、有 条件转移和远程转移等。
① B[D]
DSP原理及应用
24
④ PSHD
指令格式: PSHD Smem
指令功能: (SP)-1→SP Smem →TOS
功能说明: SP减1操作后,将存储单元Smem的内容 压入SP指向的数据存储单元。
⑤ PSHM
指令格式: PSHM MMR
指令功能: (SP)-1→SP MMR →TOS
功能说明: SP减1操作后,将MMR的内容压入SP指向
12
2.子程序调用指令
④ FCALA[D]
指令格式: FCALA[D] src
指令功能: 若非延时,(SP)-1→SP (PC)+1→TOS (SP)-1→SP (XPC)→TOS
(src(15~0))→PC (src(22~16))→XPC
若延时,(SP)-1→SP (PC)+3→TOS (SP)-1→SP (XPC)→TOS

程序控制指令

程序控制指令

P75
10
条件转移指令 C、S、Z、O、P
单测5个标志: 单测 个标志: 个标志 JC 标号; 标号; JB/JNAE JNC/JNB/JNE JZ/JE JNZ/JNE JS JNS JP/JPE JNP/JPO JO JNO
11
组合测:
无符号数:组合测 、 无符号数:组合测Z、C JA/JNBE ;高于转移 C+Z=0 JNA/JBE ;低于或等于转移 C & Z=1 有符号数:组合测S、 、 有符号数:组合测 、O、Z JG/JNLE ;大于转移 [S⊕O=0 &(Z=0)] ⊕ ) JGE/JNL ;大于或等于转移 S⊕O=0 ⊕ JL/JNGE ;小于转移 S⊕O=0 且 Z=0 ⊕ JLE/JNG ;小于或等于转移 ⊕O=1或Z=1 小于或等于转移S⊕ 或 测CX: JCXZ ; :
30
串操作指令的特点
源串一般存放在数据段,偏移地址由 指定 指定。 源串一般存放在数据段,偏移地址由SI指定。允许段重 设; 目标串必须在附加段,偏移地址由DI指定; 目标串必须在附加段,偏移地址由 指定; 指定 指令自动修改地址指针,修改方向由DF决定。 决定。 指令自动修改地址指针,修改方向由 决定 DF=0 增地址方向; 增地址方向;DF=1 减地址方向; 减地址方向; 数据块长度值由CX指定 数据块长度值由 指定 可增加自动重复前缀以实现自动修改CX内容。 可增加自动重复前缀以实现自动修改 内容。 内容
格式: 格式: LODS OPRD LODSB LODSW 操作:对字节: 操作:对字节: AL 对 字: AX
源操作数
([DS:SI]) ([DS:SI])
40
串装入指令
用于将内存某个区域的数据串依次装入累加器, 用于将内存某个区域的数据串依次装入累加器, 以便显示或输出到接口。 以便显示或输出到接口。 LODS指令一般不加重复前缀。 指令一般不加重复前缀。 指令一般不加重复前缀

8周参考:常用指令(串操作 程序控制指令 处理器控制指令)

8周参考:常用指令(串操作 程序控制指令 处理器控制指令)
在屏幕上显示一个字符的 指令段如下: MOV DL,<字符> MOV AH,2 INT 21H
1000H
41 42 43 44 45 46
. . .
’ A ’ B’ ’ ’C’ ’ D’ E’ ’ ’ F’
实现题目要求的程序段调试
9
MOV DI, 1000H MOV CX, 0AH MOV AL, ’E’ CLD REPNZ SCASB JZ FOUND MOV DL, ’N’ JMP DONE FOUND:DEC DI MOV ADDR, DI SUB DI, 1000H INC DI MOV NUM, DI MOV DL, ’Y’ DONE: MOV AH, 2 INT 21H HLT
31
例1:给1A000H开始的256个内存单元均减去1,若 发现某个单元减为0则立即退出循环,其后的单元 不再减1。程序段如下:(逻辑地址为1A00:0H)
MOV AX, 1A00H MOV DS, AX MOV DI, -1 MOV CX, 256 GOON: INC DI DEC BYTE PTR[DI] LOOPNZ GOON HLT
条件转移指令可实现程序的条件分支。
条件转移指令根据标志位的状态来决定是否
进行分支转移。 格式: JXX label ;xx为条件名称缩写 指令的转移范围为-128~+127字节。 主要的条件转移指令。
24
① 根据单个标志位设置的条件转移指令
JB/JC JNB/JNC/JAE JP/JPE JNP/JPO JZ/JE JNZ/JNE JS JNS JO JNO ;低于,或CF=1,则转移 ;高于或等于,或CF=0,则转移 ;奇偶标志PF=1(偶),则转移 ;奇偶标志PF=0(奇),则转移 ;结果为零(ZF=1),则转移 ;结果不为零(ZF=0),则转移 ;SF=1,则转移 ;SF=0,则转移 ;OF=1,则转移 ;OF=0,则转移

ABB机器人标准指令详解

ABB机器人标准指令详解

ABB机器人标准指令详解一、 RAPID程序控制指令1、1程序开始/结束控制指令1) PROGRAM START/END1、指令格式: PROGRAM <程序名> <属性> ;2、描述:此指令标识一个机器人程序的开始或结束。

在这里,<程序名>是你给程序取的名字,<属性>是可选的,表示程序的属性(如:INTERLOCK, NO_INTERLOCK, NOPROGRAM等)。

2) JOB START/END1、指令格式: JOB <作业名> <属性> ;2、描述:此指令标识一个作业的开始或结束。

在这里,<作业名>是你给作业取的名字,<属性>是可选的,表示作业的属性(如:INTERLOCK, NO_INTERLOCK, NOPROGRAM等)。

1、2程序转移指令1) GOTO1、指令格式: GOTO <行号>;2、描述:此指令将程序执行转移到指定的行号。

2) GOSUB1、指令格式: GOSUB <行号>;2、描述:此指令将程序执行转移到指定的行号,并在返回时继续执行当前行。

3) RETURN1、指令格式: RETURN;2、描述:此指令将程序执行从 GOSUB转移到父程序,并从 GOTO转移到原程序行。

1、3条件判断指令1) IF/THEN/ELSE/ENDIF;1、指令格式: IF <条件> THEN <表达式> ELSE <表达式> ENDIF;2、描述:如果满足条件<条件>,则执行 THEN后面的表达式;否则执行 ELSE后面的表达式。

2) CASE/ESAC/ENDCASE;1、指令格式: CASE <变量> IN <表达式1> / <表达式2> /... / ENDCASE;2、描述:此指令根据变量<变量>的值选择要执行的表达式。

5.2 程序控制指令(新修改)

5.2 程序控制指令(新修改)

NEXT
4) 循环指令可以进行嵌套编程,最多可嵌套8层,单个循 环指令之间不能交叉。图所示为2层嵌套使用。
5.2.4
子程序
子程序是结构化编程的有效工具,它可以把功能独 立的,且需要多次使用的部分程序单独编写,供主程序 调用。子程序能够使程序结构清晰、功能明确,并且简 单易读。要使用子程序,首先要建立子程序,然后才能 调用子程序。 1. 建立子程序 可以选择编程软件“编辑”菜单中的“插入”子菜 单下的“子程序”命令来建立一个新的子程序。默认的 子程序名为SBR_N,编号N的范围为0~63,从0开始按顺 序递增,也可以通过重命名命令为子程序改名。
2. 子程序调用:CALL、CRET指令 1) 指令梯形图与指令表格式
名 指令
称 CALL
子程序调用 CALL SBR_N
SBR_N EN
子程序结束 CRET CRET
指令表格式 梯形图格式
RET
2) 指令功能 CALL 子程序调用指令,当EN端口执行条件存在时, 将主程序转到子程序入口开始执行子程序。SBR_N是子 程序名,标志子程序入口地址。 CRET 有条件子程序返回指令,在其逻辑条件成立时, 结束子程序执行,返回主程序中的子程序调用处继续向 下执行。
5.2.3
循环指令FOR和NEXT
1) 指令格式及操作数
FOR、NEXT指令的基本格式 名 称 循环开始 循环结束 NEXT NEXT
指令 指令表格式
FOR
FOR INDX,INIT,FINAL
FOR EN ENO
梯形图格式
INDX INIT FINAL
NEXT
2) 指令功能 FOR 标记循环程序的开始。 NEXT 标记循环程序的结束,无操作数。

11程序控制指令

11程序控制指令
S7-200的程序控制指令
1.条件结束指令
有条件结束(END)指令根据前一个逻辑 条件终止用户用户程序; 只能用在主程序中使用,不能在子程序或 中断程序中使用。 当I0.2=0时,I0.0接通, Q0.0和Q0.1都会接通; 当I0.2=1时,I0.0接通, Q0.0接通,Q0.1不会接通。

2.停止指令
停止指令将CPU从run状பைடு நூலகம்转换为stop模式 终止程序执行。 如果在中断程序中执行stop指令,中断指令 立即终止,并忽略全部待执行的中断,转 到扫描循环中的剩余程序,包括执行主用 户程序和子程序,在当前扫描结束时从run 转换至stop模式。

3.FOR-NEXT循环指令

1. 建立子程序

可用编程软件Edit菜单中的Insert选项,选 择Subroutine,以建立或插入一个新的子程 序,同时在指令树窗口可以看到新建的子 程序图标,默认的程序名是SBR_n,编号n 从0开始按递增顺序生成,可以在图标上直 接更改子程序的程序名。在指令树窗口双 击子程序的图标就可对它进行编辑。
FOR指令是控制执行FOR和NEXT之间的指令 次数的操作; 使用FOR指令必须指点当前循环计数(INDX)、 起始值(INIT)和结束值(FINAL)。NEXT指 令是FOR循环结束标记,并将堆栈顶值设为1。 FOR指令和NEXT指令必须成对使用; 嵌套深度可达八级;
每次启用FOR指令时,它将 初始值复制至循环计数(INDX); 假定初始值(INIT)等于1,结束值(FINAL) 等于10,FOR与NEXT之间的指令被执行10 次。INDX值递增“1”:1、2、3…10。如果 起始值大于结束值,则不执行循环。每次执 行FOR和NEXT指令之后,INDX值递增“1”, 并将结果与结束值比较,如果循环计数 (indx)大于结束值,循环则终止。

PLC程序控制指令

PLC程序控制指令

4 网络写指令 梯形图: 梯形图: NETW 语句表: 语句表:NETW TBL,PORT EN EN NETR:指令助记符 指令助记符 TBL TBL写出表 写出表:VB,MB,*VD,*AC,*LD 写出表 * * * PORT PORT通信口:0,1 通信口: 通信口 说明:最多向远程站写16字节数据 说明:最多向远程站写 字节数据 网络读写指令数据表
SM1.2 / I0.0 ﹕ ﹕ I0.0 4 (JMP) M0.0 ( ) 4 LBL Q0.0 ( )
n
LBL LDN SM0.2 JMP 4 LD I0.0 = M0.0 ﹕ ﹕ LBL 4 LD I0.0 = Q0.0
子程序( 四 子程序(p174) ) 1.概述 概述 S7—200PLC程序类型:三大类: 程序类型: 程序类型 三大类: 主程序OB1,子程序 子程序SBR-n,中断程序 中断程序INT-n 主程序 子程序 中断程序 子程序形式:子程序标号开始 子程序标号开始,子程序返回指令结束 子程序形式 子程序标号开始 子程序返回指令结束 2.子程序建立 子程序建立 编辑菜单→插入子程序 编辑菜单 插入子程序 3.子程序参数定义 子程序参数定义 用局部变量表定义参数 4.子程序调用与返回 子程序调用与返回
通信操作指令(P223) 三.通信操作指令 通信操作指令 1. 通信协议控制 通信口0的通信控制: 通信口 的通信控制:SMB30 的通信控制 通信口1的通信控制: 通信口 的通信控制:SMB130 的通信控制 控制字格式 (SMB30/SMB130) p p d b b b m m : pp:奇偶选择 d: 字符数据位 mm: 协议选择 : : 00 PPI从站模式 从站模式 0 0 无 奇偶 1 8位⁄字符 位 字符 01 自由口协议 0 1 偶奇偶 0 7位⁄字符 位 字符 10 PPI主站模式 主站模式 1 0 无奇偶 11 保留 1 1 奇奇偶

程序控制类应用指令

程序控制类应用指令

第六单元程序控制类应用指令任务一跳转程序一、任务提出为了提高设备的可靠性,在工业控制中许多设备要建立自动及手动两种工作方式。

这就要在程序中编排两段程序,一段用于手动,一段用于自动。

然后设立一个手动/自动切换开关对程序段进行选择。

梯形图一般采用图6-1所示的典型结构。

X10是自动/手动切换开关,当它为ON时将跳过自动程序,执行手动程序,为OFF时将跳过手动程序,执行自动程序。

公用程序用于自动程序和手动程序相互切换的处理,自动程序和手动程序都需要完成的任务也可以用公用程序来处理。

图6-1 自动/手动程序切换二、原理分析跳转指令CJ可用来选择执行一定的程序段,跳过暂且不执行的程序段,缩短了扫描周期。

如图6-2所示,若X0接通,则跳到标号为P8的程序处执行。

X0断开时,不执行跳转指令,顺序往下执行。

图6-2 跳转程序表6-1给出了图6-2中跳转发生前后相关器件状态发生变化对程序执行结果的影响。

表6-1跳转对元器件状态的影响1.被跳过的程序段中的输出继电器Y、辅助继电器M、状态继电器S由于该段程序不再执行,即使梯形图中涉及的工作条件发生变化,它们的工作状态将保持跳转发生前的状态不变。

2.被跳过的程序段中的定时器及计数器,无论其是否具有掉电保持功能,由于相关程序停止执行,它们的当前值寄存器被锁定,跳转发生后其定时值、计数值保持不变,在跳转中止,程序接续执行时,定时计数将继续进行。

另外,定时、计数器的复位指令具有优先权,即使复位指令位于被跳过的程序段中,执行条件满足时,复位工作也将执行。

三、知识链接1.编程元件——跳转指针PFX2N的指针P有128点(P0~P127),用于分支和跳转程序。

指针P使用时要注意:⑴在梯形图中,指针放在左侧母线的左边,一个指针只能出现一次,如出现两次或两次以上,就会出错。

⑵多条跳转指令可以使用相同的指针。

⑶P63是END所在的步序,在程序中不需要设置P63。

⑷指针可以出现在相应跳转指令之前,但是如果反复跳转的时间超过监控定时器的设定时间,会引起监控定时器出错。

程序控制类指令

程序控制类指令

程序控制类指令
1 段内直接短转移
格式:JMP SHORT OPR 功能:SHORT表明程序转移的目标地 址与JMP指令在同一个代码段内,操作数 可以是目标地址的标号或指定一个8位的 偏移量,转 移 范 围 为 - 128 ~ 127 字 节。 SHORT可省略。
指令执行后,CS的内容不变,IP的值 (即JMP指令的下一条指令)与8位偏移量 之和被赋予当前的IP。
2 段内直接近转移
程序控制类指令
格式:JMP NEAR PTR OPR 功能:NEAR PTR表明程序转移的目标地址与JMP指令在同一个代码段内,操作数可以是目标地址的 标号或指定一个16位的偏移量,转移范围为-32768~32767字节。NEAR PTR可省略。
指令执行后,CS的内容不变,IP的值(即JMP指令的下一条指令)与16位偏移量之和被赋予当前的IP。
在执行子程序调用指令时
首先要将CALL指令的下一条指令 的地址压入堆栈保护起来,作为子
3 段内间接转移
格式:JMP WORD PTR OPR 功能:程序转移的目标地址与JMP指令在同一个代码段内,指令中的操作数是16位寄存器或存储器单 元,段内转移的偏移地址存放在16位寄存器或存储器中连续两个字节的存储单元中。使用寄存器作为操作 数时,WORD PTR省略,如JMP BX。
指令执行后,CS的内容不变,寄存器中的内容或存储器中指定地址开始的连续两个字节单元的内容被 赋予当前的IP。
条件转移指令
单个标志位的状态作 为转移条件的转移指

两个无符号数的比较 结果作为转移条件的
转移指令
两个带符号数的比较 结果作为转移条件的
转移指令
程序控制类指令
条件转移指令
程序控制类指令

第8章程序控制指令

第8章程序控制指令
合条件为真时,执行子程序
只有当一个或多个输入逻辑 组合条件为真时,仅在一次
扫描过程中执行子程序
例题8.3
设一个生产系统的PLC程序在检测到15个 错误条件的任一个,都将锁定一个位,从 而停止生产系统。
要求设计一个报警系统,当错误发生时 红色指示灯亮2秒,暗1秒。若60秒内没有 人按下复位按钮,则再加入蜂鸣器报警。 因15个位置中任一个检测到错误都要调用 报警逻辑,所以需要将报警逻辑编写成子 程序形式,以便于调用。
目的
提供子程序和程序扫描相关的不同程序控制指 令的整体概述
介绍SLC和Logix系统的程序控制指令 说明程序控制指令如何应用于自动化系统的
PLC程序中
目标
解释程序控制指令功能 描述子程序的操作 解释立即输入和输出指令的功能 描述清除指令的操作 画出并描述使用程序控制指令表达的应用梯形图 使用SLC及Logix系统的程序控制指令,开发梯形
8.3.2 跳转和标记区域控制指令
跳转(JMP)输出指令和输入标记(LBL) 指令一起使用,标记指令确定跳转指令的目 的梯级。
SLC系列PLC中的标记为Q2:(0~255),而 Logix系列使用不大于40个字符的文本标记
使用跳转指令注意事项:
编程使用跳转指令应特别小心,不要因跳转返回 指令使程序滞留在循环内太长时间而触发看门狗
确认LBL指令是梯级中的第一个输入指令 千万不要将跳转指令编写到MCR区域中
程序梯形图梯级 扫描
跳转
没有 扫描 的程 序段
跳转目的
跳转和标记指令的标准梯形图
SLC系列 向前跳转 被跳转指令跳过的梯形图梯级
Logix系列 向前跳转
被跳转指令跳过的梯形图梯级
向后跳转 因为跳转指令而重复的梯形图梯级 标记多跳转指令对应单一标记

程序控制指令

程序控制指令
(0A3256H)=1688H JMP SI ;(IP)←(SI)=0256H JMP TABLE[BX] ;(IP)← (0A3256H)=1688H EA=[16D× (DS)+(BX)+TABLE =(0A0000H+0056H+3200H)=(0A3256H)=1688H
3.2.4程序控制指令
3.2.4程序控制指令
4. 子程序调用时,系统将自动保护返回地址,以便调用结束后返
(1) 格式Ⅰ: CALL 操作Ⅰ:(SP)← (SP)-2,[(SP+1),(SP)]← (IP),(IP)←DISP)← (SP)-2,[(SP+1),(SP)]← (IP),(IP)← (REG) 或(IP)← (MEM 〖BFQ〗 说明:DISP16为16位偏移量,REG为寄存器,MEM为存储单 元,段内间接调用子程序入口地址存放在REG或MEM中。段 内调用是将IP指向子程序入口地址,从而进入子程序。
3.2.4程序控制指令
(3) 格式: RET 操作:(IP)← [(SP+1),(SP (SP)← (SP)+2
3.2.4程序控制指令
(4) 格式: RET 操作:(IP)← [(SP+1),(SP)],(SP)←
(SP)+2 (CS)← [(SP+1),(SP)],(SP)← (SP)+2
说明:子程序结束之前必须要有一条RET指令,才能保证 调用程序正确返回调用处。段内返回,系统自动从堆栈顶部弹 出一个字的内容,送到IP寄存器,使子程序返回到主程序中 CALL指令的下一条指令。段间返回时系统自动地从堆栈顶部 弹两个字的内容,分别送到IP和CS寄存器中。
JMP SHORT LAB1

第3节6 程序控制指令

第3节6 程序控制指令

有一个首地址为ARRAY的M个元素的字数组 试编写一个程 个元素的字数组,试编写一个程 例 3.80 有一个首地址为 的 个元素的字数组 求出该数组的内容之和(不考虑溢出 并把结果存入TOTAL中. 序:求出该数组的内容之和 不考虑溢出 并把结果存入 求出该数组的内容之和 不考虑溢出),并把结果存入 中 MOV CX , M MOV AX , 0 MOV SI , AX START_LOOP: ADD AX , ARRAY[ SI ] ADD SI , 2 LOOP START_LOOP MOV TOTAL , AX
③段间直接调用 格式: 格式:CALL FAR PTR OPR 例如: 例如 CALL FAR PTR PROCA 执行的操作: 执行的操作:PUSH (CS), PUSH (IP) ) ) (IP) DST指定的偏移地址 (CS) ) 指定的偏移地址 ) ④段间间接调用 格式: 格式:CALL DWORD PTR OPR 例如: 例如 CALL DWORD PTR [BX+15] 执行的操作: 执行的操作:PUSH (CS), PUSH (IP) ) ) (IP) (EA) (CS) ) ) ) (EA+2) ) DST 指定的段地址
OPR 的段内偏移地址 OPR 所在段的段地址 LOOP (1000H:2000H) : )
格式: 格式:JMP DWORD PTR OPR 执行的操作: 执行的操作: (IP) (EA) ) ) (CS) (EA+2) ) ) 例:JMP DWORD PTR [BX][SI]
(2)条件转移指令 (2)条件转移指令
3.3.7 处理器控制指令
1.标志位处理指令 标志位处理指令
2.其他器处理控制指令 其他器处理控制指令

3.3.5 程序控制类指令

3.3.5  程序控制类指令

1. 无条件转移指令(1)jmp段内直接短程转移Jmp short标号jmp short loop1next:下一条指令………loop1:……….(loop1也可能在跳转指令前)跳转距离范围是-128-127(2) 段内直接近程转移Jmp near ptr标号跳转距离范围是-32768-32767(3)段内直接转移Jmp bx ; IP<—bxJmp word ptr [1000h] ;IP<—word ptr[1000h](4)段间直接转移Jmp far ptr标号(5)段间间接转移Jmp dword ptr [1000h] ;IP<—word ptr[1000h],CS<—word ptr[1002h] 2. 过程调用指令call(1)段内直接调用Call near ptr过程名<=> Call过程名可以暂把过程名理解为标号先把下条指令的有效地址入栈(为了能够以后恢复),然后跳转到新地址Push ip; ip为该跳转指令的下一条指令的有效地址Ip<—ip+loop loop表示跳转距离(2)段内间接调用Call word ptr [1000h]被调用过程的有效地址保存在内存ds:[1000h]处Push ipIp<—word ptr [1000h](3)段间直接调用Call far ptr过程名Push cs ;先入csPush ip ;再入ipIp<—过程入口地址的偏移量Cs<—过程入口地址的段基址(4)段间间接调用Call dword ptr [1000h]Push cs ;先入csPush ip ;再入ipIp<—word ptr [1000h]Cs<—word ptr [1002h]3. 过程返回指令ret,类似C语言中的return;段内返回, 格式:ret作用相当于pop ip,回到调用过程时保存的地址继续执行下条指令段间返回,格式:ret相当于pop ipPop cs回到调用过程时保存的地址继续执行下条指令带立即数返回,格式:ret n除返回原来的ip和cs外,还做sp=sp+n适用于过程带参数的情况,计算机调用函数或过程时,先把参数的值入栈,再把返回地址(下条指令地址)入栈。

项目14-程序控制指令(2011-7-16)

项目14-程序控制指令(2011-7-16)

项目14 程序控制指令1.条件结束条件结束指令(END)根据前面的逻辑关系终止当前扫描周期。

可以在主程序中使用条件结束指令,但不能在子程序或中断服务程序中使用该命令。

2.停止停止指令(STOP)导致CPU从RUN到STOP模式从而可以立即终止程序的执行。

如果STOP 指令在中断程序中执行,那么该中断立即终止,并且忽略所有挂起的中断,继续扫描程序的剩余部分。

完成当前周期的剩余动作,包括主用户程序的执行,并在当前扫描的最后,完成从RUN到STOP模式的转变。

3.看门狗复位看门狗复位指令(WDR)允许S7--200 CPU的系统看门狗定时器被重新触发,这样可以在不引起看门狗错误的情况下,增加此扫描所允许的时间。

使用WDR指令时要小心,因为如果您用循环指令去阻止扫描完成或过度的延迟扫描完成的时间,那么在终止本次扫描之前,下列操作过程将被禁止:①通讯(自由端口方式除外)② I/O更新(立即I/O除外)③强制更新④ SM位更新(SM0,SM5~SM29不能被更新)⑤运行时间诊断⑥由于扫描时间超过25秒,10ms和100ms定时器将不会正确累计时间。

⑦在中断程序中的STOP指令⑧带数字量输出的扩展模块也包含一个看门狗定时器,如果模块没有被S7--200写,则此看门狗定时器将关断输出。

在扩展的扫描时间内,对每个带数字量输出的扩展模块进行立即写操作,以保持正确的输出。

请参考这段描述之后的实例。

图1提示:如果希望程序的扫描周期超过500ms,或者在中断事件发生时有可能使程序的扫描周期超过500ms时,您应该使用看门狗复位指令来重新触发看门狗定时器。

每次使用看门狗复位指令,您应该对每个扩展模块的某一个输出字节使用一个立即写指令来复位每个扩展模块的看门狗。

如果您使用了看门狗复位指令允许程序的执行有一个很长的扫描时间,此时将S7--200的模式开关切换到STOP位置,则在1.4秒内,CPU转到STOP方式。

图2:停止、结束和看门狗复位指令程序举例4.For--Next循环指令FOR和NEXT指令可以描述需重复进行一定次数的循环体。

第五章 3 程序控制指令

第五章 3 程序控制指令

N:子程序的编号,取值范围:000—049 子程序的编号,取值范围:000 049
功能: 一起使用, 定义子程序N 功能: SBN和RET一起使用,用SBN定义子程序 和 一起使用 定义子程序 开始, 开始, RET(93)用于每段子程序的结尾,表示子 ( )用于每段子程序的结尾, 程序结束。 程序结束。
(2) 软件复位
只要25200 ON,高速计数器复位。 只要 ,高速计数器复位。 另外, 断电再上电时高速计数器自动复位。 另外,当PLC断电再上电时高速计数器自动复位。 断电再上电时高速计数器自动复位
19
3.使用高速计数器时的设定 .
使用高速计数器前必须进行必要的设定, 使用高速计数器前必须进行必要的设定 , 否则 使用无效。 使用无效。 系列PLC,设定值写入 对CPM1A系列 系列 ,设定值写入DM6642中。 中 用设定值确定高速计数器功能是否使用、 用设定值确定高速计数器功能是否使用 、 复位 方式、计数模式等。 方式、计数模式等。
7
00100 25313 25502 22007 25314 25502 00100 25313
主 程 序
子 程 序
二、宏指令及其功能
宏指令也是调用子程序的指令, 宏指令也是调用子程序的指令,但与前述子程序有 所不同。宏指令子程序的操作数I1是子程序中第一个 所不同。宏指令子程序的操作数 是子程序中第一个 输入字参数,操作数O1是子程序中第一个输出字参 输入字参数,操作数 是子程序中第一个输出字参 每次调用时, 的数据可以不同, 数,每次调用时, I1 和O1的数据可以不同,由于宏 的数据可以不同 调用的子程序其输入/输出的数据可以变换 输出的数据可以变换, 调用的子程序其输入 输出的数据可以变换,因此提 高了子程序存在的价值。 高了子程序存在的价值。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

STL
Network 1
LLDD
SSMM00..11
CCAALLLL 1010 .
. . . Network 6
M14.3
. . .
子程序 10 开始
RET
从子程序 10 条件返回(RET)
STEP 7 Micro/Win 32 自动为每个 子程序加入返回指令
. . . Network 6 LD M14.M31.3 CRET . . .
程序完成时 从局部存储器区拷贝输出参数值到指定的输出参数地址
数据单元的大小和类型用参数的代码表示 在子程序中局部存储器的参数值的分配如下所示
l 按照子程序指令的调用顺序 参数值分配给局部存储器 起始地址是 L.0 l 1 到 8 连续位参数值分配一个字节 从 Lx.0 到 Lx.7 l 字节 字和双字值按照字节顺序分配在局部存储器中 (LBx LWx 或 LDx) 在带参数调用子程序指令中 参数必须按照一定顺序排列 输入参数在最前面,其次是输入/输出参 数 然后是输出参数 如果用语句表编程 CALL 指令的格式是
*AC1 IN/OUT
图 9-
54 用 LAD 和 STL 表示的子程序调用
图 9-54 中的地址参数 (如 IN4 处的 &VB100) 以一个双字 (无符号) 的值传送到子程序 在带常数调
用程序时必须指明常数类型 例如 把值为 12345 的无符号双字作为参数进行传递 常数参数必须
用 DW#12345 指明 如果参数中缺少了常数描述符 常数可能被当作不同的类型
Stop, End, and WDR Example
LAD
Network 1 SM5.0
. . . Network 15
M5.6
. . N.etwork 78
I0.0
. . .
STOP
当发现 I/O 错误时 强迫 CPU 转到 STOP 方式
WDR
当 M5.6 为 on 时 重新触发看门
狗定时器 WDR 允许增加本次
L0.0 LB1 LB2.0 LD3 LW7 LD9
Name EN IN1 IN2 IN3 IN4 IN/OUT1 OUT1
Var. Type IN IN IN IN IN IN/OUT OUT TEMP
Data Type BOOL BOOL BYTE
BOOL DWORD WORD DWORD
53 STEP 7-Micro/WIN 32 局部变量表 局部变量表中的数据类型区定义了参数的大小和格式 参数类型是
. Network LBL 4
Network 14 . . . .
Network 33
SM0.2
52 JMP 和 LBL 指令在 LAD
FBD 4 JMP
4 LBL
如果保存的数据没有丢失 则跳转到 LBL4
可以在主程序 子程序或中断程序中使 用跳转和标号指令 JJMMP 和相应的标 号 LBL 必须总是在同一段程序中 要 么麽是主程序或是子程序 要麽么是中断程 序
带参数调用子程序
子程序可能包含要传递的参数 参数在子程序的局部变量表中定义 (见图 9-53) 参数必须有一个符 号名 (最多 8 个字符) 变量类型和数据类型 子程序最多可以传递 16 个参数 局部变量表中的变量类型区定义变量是传到子程序 (IN) 传入和传出子程序 (IN_OUT) 或者传出子 程序 (OUT) 参数类型的特征如下所述
l OUT: 从子程序来的结果值被返回到指定参数位置 常数 (如 16#1234) 和地址 (如 &VB100) 不允许作为输出参数
l TEMP: 任何局部存储器都不能用来传递参数 只能在子程序内部暂时存贮数据
要加入一个参数 把光标放到要加入的变量类型区 (IN, IN-OUT<OUT) 点击鼠标右键可以得到一 个菜单选择 选择插入选项 然后选择下一行选项 这样就出现了另一个所选类型的参数项
MAIN SBR10
SM0.1 EN SUBROUTINE 10
M14.3 RET
FBD
55 子程序指令的 LAD STL 和 FBD 举例
图 9-
循环指令 (For, Next )
FOR 指令和 NEXT 指令必须成对使用 FOR 标记循环的开始 NEXT 标记循环的结束 FOR 标记在 FOR 和 NEXT 之间执行指 令 必须给 FOR 指令指定当 前循环计数 (INDX) 初值 (INIT) 和 终值 (FINAL) NEXT 指令标记循环的结束 并且置栈顶值为 1 例如 给定初值 (INIT) 为 1 终值 (FINAL) 为 10 那么随着当前
输入或输出参数上没有自动数据类型转换功能 例如 如果局部变量表声明一个参数具有实型 而
在调用时使用一个双字 子程序中的值就是双字
当给子程序传递值时 它们放在子程序的局部存储器中 局部变量表的最左列 (见图 9–53) 是每个
被传递参数的局部存储器地址 当子程序调用时 输入参数值被拷贝到子程序的局部存储器 当子
输入/输出 INDX INIT
FINAL
操 作数
VW, IW, QW, MW, SW, SMW, LW, T, C, AC, *VD, *AC, *LD VW, IW, QW, MW, SW, SMW, T, C, AC, LW, AIW, 常数, *VD, *AC, *LD VW, IW, QW, MW, SW, SMW, LW, T, C, AC, AIW, 常数, *VD, *AC, *LD
计数值 (INDX) 从 1 增加到 10 FOR 与 NEXT 之间的指令被执行 10 次 如果初值大于终值 那么循环体不被执行 每执行一次循环体
当前计数值增加 1 并且将其结果同终值作比较 如果大于终值 那么终止循环
For: 使 ENO = 0 的出错条件是 SM4.3 (运行时间) 0006 (间接寻 址)
l 通讯 (自由端口方式除外) l I/O 更新 (立即 I/O 除外) l 强制更新 l SM 位更新 (SM0 SM5 SM29 不能被更新) l 运行时间诊断 l 由于扫描时间超过 25 秒 10 ms 和 100 ms 定时器将不会正确累计时间 l 在中断程序中的 STOP 指令
注意 如果希望扫描超过 300ms 或者希望中断事件而该中断事件能使扫描时间大于 300ms 那么样最好 WDR 指令来重新触发看门狗定时器 如果将 S7-200 CPU 方式开关切到 STOP 位置 则在 1.4 秒里 CPU 转到 STOP 方式
暂停指令 (STOP) 能够引起 CPU 方式发生变化 从 RUN 到 STOP 从而可以立即终止程序的执行 操作数 无
如果 STOP 指令在中断程序中执行 那么该中断立即终止 并 且忽略所有挂起的中断 继续扫描程序的剩余部分 在本次扫 描的最后 完成 CPU 从 RUN 到 STOP 的转变
看门狗复位 (WDR)
l 布尔 - 该数据类型用于单独位输入和输出 图 9-54 中的 IN2 是布尔输入
l 字节 字和双字 - 这些数据类型分别指明一个 1 2 或 4 字节的无符号输入或输出参数
l 整数 双整数 - 这些数据类型分别指明一个 2 或 4 字节的有符号输入或输出参数
l 实数 - 该数据类型指明一个 4 字节的单精度 IEEE 浮点参数
Comment
图 9-
l 能流 布尔能流仅允许对位输入操作 该变量声明告述 STEP 7–Micro/WIN 32 此输入参数是 位逻辑指令组合的能流结果 在局部变量表中布尔能流输入必须出现在其它类型的前面 只 有输入参数可以这样使用 图 9-54 中的允许输入 (EN) 和 IN1 输入都使用布尔逻辑
从主程序跳到子程序或中断程序 同样不能从子程序或中断程 序跳出
跳转及标号指令举例
Network 14 SM0.2 /
. . . Network 3
4 LBL
LAD
STL
Network
4 JMP
如果保存的数据没有丢失 LBL4
则跳转到
LDN JMP .
SM0.2 4
.
可以在主程序 子程序或中断程序中使 用跳转和标号指令 JMP 和相应的标 号 LBL 必须总是在同一段程序中 要 么麽是主程序或是子程序 要么麽是中断程 序
Network 15 WDR
M5.6
Network 78
I0.0
END
当 M5.6 为 on 时 重新触发看门 狗定时器 WDR 允许增加本次 扫描时间
当 I0.0 是 on 时 结束主程序
51 STOP END 和 WDR 指令在 LAD FBD 和 STL 中应用举例
图 9-
跳转及标号指令
跳转指令 (JMP) 可使程序流程转到同一程序中的具体标号 (n) 处 当这种跳转执行时 栈顶的值总是逻辑 1 标号指令 (LBL) 标记跳转目的地的位置 (n) 操作数 n: 常数 0 到 255 数据类型 WORD 跳转和标号指令必须用在主程序 子程序或中断程序中 不能
数据类型 无 执行完子程序以后 控制程序回到子程序调用指令的下一条指 令
图 9–55 是调用子程序并从子程序返回的举例 使 ENO = 0 的出错条件是 SM4.3 (运行时间) 0008 (最多子 程序嵌套超界)
注意
Micro/WIN32 为每个子程序自动加入返回指令 子程序的嵌套深度最多是 8 层 尽管子程序不禁止递归调用 (自己调用自己) 但使用时要慎重 当有一个子程序被调用时 系统会保存当前的逻辑堆栈 置栈顶值为 1 堆栈的其他值为零 把控 制交给被调用的子程序 当子程序完成之后 恢复逻辑堆栈 把控制权交还给调用程序 因为累加器可在主程序和子程序之间自由传递 所以在子程序调用时 累加器的值既不保存也不恢 复
LAD
STL
I0.0 I0.1
相关文档
最新文档