1、第四章功能指令与简单编程器的使用方法4.1FX系列PLC的功能指令概述一 功能指令的表示方法用功能号表示“FNC ”来指定功能每条功能指令都要助记符 例FNC45的助记符是MEAN由上图可见,功能指令的梯形图结构包括以下3部分1 执行条件由X、Y、M、S、T、C等软元件的接点或接点组构成,如图中的X0和X1,当执行条件为ON时,才执行应用指令2 功能号和助记符每条功能指令都有一个功能编号和相应的助记符,功能号不同,应用指令的功能就不同。图中,MEAN就是指令助记符3 操作数操作数有以下几种1)源操作数 S在执行指令的过程中,源操作数中的内容保持不变。当同时有多个源操作数时,分别用 S1 S2等
2、表示若可使用变址功能可用S.表示2)目标操作数 用D表示,在执行指令的过程中,目标操作数中的内容随程序的执行会有所改变。3)其他操作数 用m、n表示,用来表示十进制常数K或十六进制常数H。二 数据长度和指令类型1数据长度16位指令和32位指令在16位指令助记符的前面加上字符D即为32位指令16位操作数的每一个操作数占2个程序步2 脉冲执行与连续执行脉冲执行:指令仅在执行条件从OFF变到ON时执行,脉冲执行方式的指令在指令助记符后面附有符号P连续执行:当执行条件位ON时,指令在各个扫描周期都被执行注:符号“(P)”和“(D)”和同时使用例 “ADD”“ADDP”“DADD”“DADDP”3位元件
3、1、位元件与字元件位元件:只有ON/OFF状态的元件,例X Y M S字元件:处理数据的元件 T C D2、位元件的组合没相邻的4bit元件组成一个单元,用“Kn+首位元件”表示.n位组数,16位指令Kn为K1K4 32位指令Kn为K1K8例 K8M1004变址寄存器 V Z1同普通寄存器一样,变址寄存器V Z也是16位的数据寄存器,其地址编号为V7-V0,Z7-Z0,共16点。当需用进行32位数据运算时,需将V Z组合起来使用。且规定Z存放低16位数据2可用变址寄存器修改的软元件有X Y M S P T C D K H KnX KnY KnM KnS,但不能修改V Z本身以及指定位数用的Kn
4、本身例 不能用Z0M10来修改Z的地址。但可用M10Z0来修改M的地址。4.2 程序流向控制指令一 条件跳转指令 CJ通过例子对跳转指令执行前后以及跳转区内外各软元件的状态进行说明1、软元件 Y M S的状态 保持跳转前的状态2 计数器C的状态及定时器T的状态1)若发生跳转前,C和T没有计数和计时,跳转发生后,即使条件满足,C和T也不工作2)若C和T在工作时跳转,则在跳转期间,它们将停止计数和定时,并保持当前值不变,当跳转解除后,计数和定时继续,如图3)定时器T192-T199高速计数器的状态与跳转指令无关3 当主控指令MC与跳转指令一起使用,应注意1)当程序由MC区外向MC区外跳转,或由MC
5、区外向MC区内跳转时,跳转指令的执行与MC指令是否有效无关2)当程序执行由MC区内向MC区内跳转,或由MC区内向MC区外跳转时,跳转指令的执行,必须是MC指令有效3)当程序的执行由1个MC区如主控1跳转到另一个MC区如主控2是,只有当1区的MC指令有效时,才能执行跳转4 T、C软元件复位指令RST的执行4.2.2子程序调用与子程序返回指令 CALL SRET 注意问题子程序应写在FEND之后,即CALL CALLP指令对应的标号应写在FEND之后,CALL CALLP指令调用的程序必须以SRET结束,CJ指令中用过的指针不能再用。4.2.3 与中断有关的指令 IRET:中断返回指令 EI:允许
6、中断指令 DI:禁止中断指令以上3个指令无操作数,分别占用一个程序中断程序从他唯一的中断指针开始,到第一条IRET指令结束。中断指令应放在FEND指令之后,IRET指令只能在中断程序中使用。4.2.4程序结束指令FEND:主程序结束指令子程序包括中断子程序应放在FEND指令之后,4.2.6 循环指令FOR:用来表示循环区的起点,它的原操作数用来表示循环次数N,可以取任意的数据格式,如果N为负数,当作N=1处理。NEXT:是循环区终点指令,无操作数FOR和NEXT之间的程序被反复执行,执行次数由FOR指令的原操作数决定,执行完后,执行NEXT后面的指令循环程序注意:FOR和NEXT指令总是成对使
7、用的,FOR指令应放在NEXT的前面,如果没有满足上述条件,就会出错例题:在X1的上升沿,将50、55、60、90分别送D10D18 LDP X1 RST Z MOV K50 D10 FOR K8 ADD D10Z K5 D11Z INC ZNEXT4.3 比较与传送指令4.3.1比较指令 CMP:比较,用来实现两个数据的代数比较 ZCP:区间比较1 比较CMP 2个原操作数 S1和S2为原操作数D 目标操作数,放比较结果2 区间比较 3个原操作数4.3.2 传送指令1MOV指令:将源程序传送到指定目标2SMOV 移位指令 3 取反指令 CML5块传送指令 BMOV块传送将原操作数指定的元件开
8、始的n个数据组成的数据块传送到指定的目标5多点传送指令 FMOV FMOV将源文件中的数据传送到指定目标开始的n个元件中,传送后n个文件中的数据完全相同6 数据交换指令 XCH执行数据交换指令时,数据在指定的目标元件之间交换,交换指令一般采用脉冲执行方式,否则在每一个扫描周期都要交换一次4.3.3 数据变换指令1BCD 变换指令将源文件中的二进制数转换为BCD码并送到目标元件中4.4 算术运算与字逻辑运算指令4.4.1 算术运算1 加法指令:将源元件中的二进制数相加,结果送到指定的目标元件2 减法指令SUB3 乘法指令MUL4除法指令DIV4.4.2 二进制加1INC减1DEC指令综合运算举例
9、4.4.3 字逻辑运算4.5 循环移位与移位指令4.5.1 循环移位指令 右移位ROR 左移位 ROL4.5.2 带进位的循环移位指令右循环RCR 左循环 RCL4.5.3 位右移SFTR和位左移SFTL指令4.5.4 字右移WSFR和字左移WSFL指令4.5.5 FIFO写入与读出指令例题:某仓库的产品在出库时,要求按入库登记的顺序从库内取出,即按先入先出的原则出库,假设产品编号用4位16进制数表示,允许最大的库存量为99,实现上述要求的程序如图所示指令表LDP X20MOV K4X0 D256SFWR D256 D257 K100LDP X21SFWD D257 D357 K100LD M8000MOV D357 K4Y0