1、第7章可编程控制器编程语言2以梯形图为主的简明、易学的工业控制编程方法7.6 数据处理指令7.6.1 数据移位指令1.移位寄存器SFT:图7-562.可逆移位寄存器SFTR/SFTR:图7-613.算术左移ASL/ASL:图7-644.算术右移ASR/ASR:图7-655.循环左移ROL/ROL:带进位CY图7-676.循环右移ROR/ROR:带进位CY图7-687.数字左移SLD和SLD:左移一个BCD码的字(4位)图7-698.数字右移SRD和SRD:右左移一个BCD码的字(4位)9.字移位WSFT和WSFT:左移一个字(16位)图7-707.6.2 数据传送指令1.数据传送MOV/MOV
2、:图7-712.块设置BSET/BSET:图7-723.块传送XFER/XFER:图7-754.数据交换XCHG/XCHG:通道交换5.位传送MOVB/MOVB:8位二进制6.字传送MOVD/MOVD:四位BCD码7.6.3 数据比较指令1.单字比较CMP/CMP:图7-80,比较结果通过GR、EQ和LE输出;2.块比较BCMP/BCMP:图7-813.块表比较TCMP/TCMP:7.6.4 数制转换指令1.BCD至两进制转换BIN(23)/BIN(23)图7-82 BIN指令2.双通道BCD至两进制BIN(58)/BIN(58)图7-83 BINL指令3.两进制至BCD转换BIN(24)/B
3、IN(24)图7-48 BCD指令4.双通道两进制至BCD转换BIN(24)/BIN(24)图7-85 BCDL指令7.6.5 BCD运行指令1.递增指令INC(38)/INC(38)2.递减指令DEC(39)/DEC(39)3.进位标志CY置位STC(40)/清除CLC(41)4.BCD加法指令ADD(30)/ADD(30)5.双通道BCD加法ADDL(54)/ADDL(54)6.BCD减法指令SUB(31)/SUB(31)加减法时往往需要先清除进位标志CY7.BCD运算例题见图7-86 7-917.6.6 逻辑运算指令1.求反指令COM(29)/COM(29)2.逻辑与指令ANDW(34)
4、/ANDW(34)3.逻辑或指令ORW(35)/ORW(35)4.逻辑异或XORW(36)/XORW(36)5.逻辑同或XNRW(37)/XNRW(37)6.以上指令的例子见图7-92 图7-967.7 子程序和中断控制程序 子程序是将大量的控制任务分离成许多小的控制任务,可以组合使用,也可以重复使用。当主程序调用一个子程序时,控制就转到子程序,子程序执行完毕,返回主程序的调用处的后一条指令。中断和子程序的调用类似,中断使主程序停顿,完成中断任务后,再执行开始中断程序的后一条指令。中断可以是外部的输入信号产生,也可以是内部定时产生中断。中断分为一般中断方式和高速中断方式,一般中断方式,CPU处
5、理完当前程序后停止主程序响应中断,高速中断方式,CPU停止当前程序,立即响应中断。宏指令MCRO(89)指令,宏指令以一个单独的子程序(格式)替代几个具有相同结构、不同操作数的子程序。7.7.1 中断指令1.一般中断程序:中断控制字DM6620是全0000;2.高速中断方式:中断控制字DM6620是首位是1,其余位任意 1-;3.当中断响应时间精确到1ms时使用高速中断,定时中断时间间隔设置DM6622,可以设置10ms或1ms 的倍数。(图7-99)7.2.2 子程序调用指令SBS(91)子程序编号00至15与中断同时使用,子程序编号99被用于定时中断;主程序中将SBS放在要执行的子程序处,
6、子程序编号表示要调用的子程序,当SBS为ON时,PLC根据子程序编号调用相同编号的SBN和RET之间的程序,完成后返回到SBS后的程序。SBS可以多次调用,见图7-101、102、1037.7.3子程序定义和返回SBNRET 在SBN(92)指令中,每个子程序编号只能使用一次;SBN(92)表示一个子程序的开始;RET(93)表示一个子程序的结束;所有子程序都安排在主程序的结尾。7.7.4 宏指令MCRO(99)MCRO指令有4个输入字(SR290-293),4个输出字(SR294-297);子程序执行时,将数据从这些输入、输出口中传输;宏指令的应用见图7-106、1077.7.5 中断控制指
7、令INT(89)INT(89)设置中断方式,表7-2,表7-2中6种是输入中断,3种定时中断,2种屏蔽或非屏蔽所有中断。中断应用见图7-109、7-1107.7.6 步指令 STEP(08)和SNXT(09)步指令成对使用,用步指令可以按照指定的顺序执行程序;在步指令可以反复使用PLC的内部资源;在步指令中不能使用IL(02)/ILC(03)、JMP(04)/JME(05)、SBN(92)和END(01)指令。1.步定义和步起动STEP/SNXT STEP(08)B定义一个程序段(一个步)的开始。STEP(08)B不需要执行条件,即其执行与否由控制位B来控制;SNXT(09)B用来启动程序位B
8、的程序段,在ON的条件下执行SNXT(09)B指令,具有相同控制位B的步被执行,若执行条件为OFF,则该步将不执行 SNXT(09)必须在STEP(08)之前。步指令应用举例1.顺序执行:图7-114;2.分支执行:图7-117;3.并行执行:图7-120。7.7.7 特殊指令1.出错报警指令FAL(06)和严重故障报警指令FALS(07)2.信息显示MSG(46)/MSG(46)3.位计数指令FUN(67)/FUN(67)4.设置系统定时器WDT(94)/WDT(94)5.I/O刷新IORF(97)/IORF(97)本章小结 本章主要介绍了PLC的指令系统和如何将继电器接触器电路转化为PLC控制的基本方法。本章内容重要,希望同学们认真学习,做好实验。练习题:P2791.习题62.习题73.习题8