-
-
-
ytzidonghua | 当前状态:在线
总积分:11263 2025年可用积分:0
注册时间: 2006-09-18
最后登录时间: 2024-08-02
-
-
300教程之七
ytzidonghua 发表于 2007/5/12 18:06:34 946 查看 0 回复 [上一主题] [下一主题]
手机阅读
+AR1 (Add to AR1) 指令将AR1的内容加上累加器1中低字的内容,或加上指令中的16位常数,结果在AR1中。地址寄存器中的存储区域标识符(第24~26位)保持不变。
3.7 逻辑控制指令
表3-29 逻辑控制指令与状态位触点指令
语句表中的逻辑控制指令 梯形图中的状态位触点指令 说明
JUJLJCJCNJCBJNBJBIJNBIJOJOSJZJNJPJMJPZJMZJUOLOOP ------BR-OVOS==0<> 0> 0< 0>= 0<= 0UO- 无条件跳转多分支跳转RLO=1时跳转RLO=0时跳转RLO=1且BR=1时跳转RLO=0且BR=1时跳转BR=1时跳转BR=0时跳转OV=1时跳转OS=1时跳转运算结果为0时跳转运算结果非0时跳转运算结果为正时跳转运算结果为负时跳转运算结果大于等于0时跳转运算结果小于等于0时跳转指令出错时跳转循环指令
只能在同一逻辑块内跳转。同一个跳转目的地址只能出现一次。跳转或循环指令的操作数为地址标号,标号由最多4个字符组成,第一个字符必须是字母,其余的可以是字母或数字。在梯形图中,目标标号必须是一个网络的开始。
【例3-10】IW8与MW12的异或结果如果为0,将M4.0复位,非0则将M4.0置位。
L IW8 //IW8的内容装入累加器1的低字
L MW12 //累加器1的内容装入累加器2,MW12的内容装入累加器1
XOW //累加器1,2低字的内容逐位异或
JN NOZE //如果累加器1的内容非0,则跳转到标号NOZE处
R M4.0
JU NEXT
NOZE: AN M4.0
S M4.0
NEXT: NOP 0
3.7.3 循环指令
循环指令LOOP <jump label>用ACCU 1-L作循环计数器,每次执行LOOP指令时ACCU 1-L的值减1,若减1后ACCU 1-L非0,将跳转到<jump label>指定的标号处。
【例3-11】用循环指令求5!(5的阶乘)。
L L#1 //32位整数常数装入累加器1,置阶乘的初值
T MD20 //累加器1的内容传送到MD20,保存阶乘的初值
L 5 //循环次数装入累加器的低字
BACK: T MW10 //累加器1低字的内容保存到循环计数器MW10
L MD20 //取阶乘值
*D //MD20与MW10的内容相乘
T MD20 //乘积送MD20
L MW10 //循环计数器内容装入累加器1
LOOP BACK //累加器1低字的内容减1,减1后非0,跳到标号BACK
…… //循环结束后,恢复线性扫描
3.8 程序控制指令
表3-30 程序控制指令
语句表指令 梯形图指令 描述
BEBEUBECCALL FCnCALL SFCn CALL FBn1,DBn2CALL SFBn1,DBn2CC FCn或SFCnUC FCn或SFCnRETMCRAMCRDMCR()MCR -------CALLCALLRETMCRAMCRDMCR<MCR> 块结束块无条件结束块条件结束调用功能调用系统功能调用功能块调用系统功能块RLO=1时条件调用无条件调用条件返回起动主控继电器功能取消主控继电器功能打开主控继电器区关闭主控继电器区
OPN DB10 //打开数据块DB10作为共享数据块
L DBW35 //将打开的DB10中的数据字DBW35装入累加器1的低字
T MW12 //累加器1低字的内容装入MW12
OPN DI20 //打开作为背景数据块的数据块DB20
L DIB35 // DB20.DIB35装入累加器1的最低字节
T DBB27 //累加器1最低字节传送到DB10.DBB27
表3-31 数据块指令
指令 描述
OPNCDBL DBLGL DBNOL DILGL DINO 打开数据块交换共享数据块和背景数据共享数据块的长度装入累加器1共享数据块的编号装入累加器1背景数据块的长度装入累加器1背景数据块的编号装入累加器1