1、PLCPLC节日彩灯节日彩灯的各种设计的各种设计一、基础知识一、基础知识-移位指令移位指令1、左移位指令(SHL) 使能输入有效时,将输入IN的无符号数字节、字或双字中的各位向左移N位后(右端补0),将结果输出到OUT所指定的存储单元中,如果移位次数大于0,最后一次移出位保存在“溢出”存储器位SM1.1。如果移位结果为0,零标志位SM1.0置1。2、右移位指令 使能输入有效时,将输入IN的无符号数字节、字或双字中的各位向右移N位后,将结果输出到OUT所指定的存储单元中,移出位补0,最后一移出位保存在SM1.1。如果移位结果为0,零标志位SM1.0置1。左移位右移位左移位指令举例:左移位指令举例
2、:移位前移位后0SM1.1右移位指令举例:右移位指令举例:移位前移位后1SM1.1指令表的写法指令表的写法(1)IN和OUT指定的寄存器相同时LD I0.0EUSRB MB0, 2(2)IN和OUT指定的寄存器不同时LD I0.0EUMOVB MB0, QB0SRB QB0, 23、循环左移位指令(ROL) 使能输入有效时,将IN输入无符号数(字节、字或双字)循环左移N位后,将结果输出到OUT所指定的存储单元中,移出的最后一位的数值送溢出标志位SM1.1。当需要移位的数值是零时,零标志位SM1.0为1。4、循环右移位指令(ROR) 使能输入有效时,将IN输入无符号数(字节、字或双字)循环右移N
3、位后,将结果输出到OUT所指定的存储单元中,移出的最后一位的数值送溢出标志位SM1.1。当需要移位的数值是零时,零标志位SM1.0为1。循环左移举例循环左移举例移位前移位后0SM1.1循环右移举例循环右移举例移位前移位后1SM1.1指令表的写法指令表的写法(1)IN和OUT指定的寄存器相同时LD I0.0EURRB MB0, 2(2)IN和OUT指定的寄存器不同时LD I0.0EUMOVB MB0, QB0RRB QB0, 2循环移位次数大于数据类型的处理:循环移位次数大于数据类型的处理:1、如果操作数是字节,当移位次数N8时,则在执行循环移位前,先对N进行模8操作(N除以8后取余数),其结果
4、0-7为实际移动位数。2、如果操作数是字,当移位次数N16时,则在执行循环移位前,先对N进行模16操作(N除以16后取余数),其结果0-15为实际移动位数。3、如果操作数是双字,当移位次数N32时,则在执行循环移位前,先对N进行模32操作(N除以32后取余数),其结果0-31为实际移动位数。【例【例5-4】程序应用举例,将】程序应用举例,将AC0中的字循环右移中的字循环右移2位,将位,将VW200中的字左移中的字左移3位。位。 【例【例5-5】用】用I0.0控制接在控制接在Q0.0Q0.7上的上的8个彩灯循环个彩灯循环移位,从左到右以移位,从左到右以0.5s的速度依次点亮,保持任意时刻的速度依
5、次点亮,保持任意时刻只有一个指示灯亮,到达最右端后,在从左到右依次点只有一个指示灯亮,到达最右端后,在从左到右依次点亮。亮。5、移位寄存器指令、移位寄存器指令SHRB使能输入端,连接使能输入端,连接移位脉冲信号,移位脉冲信号,EN有效时,移位寄存有效时,移位寄存器移动一位。器移动一位。数据输入端,存放数据输入端,存放被移进移位寄存器被移进移位寄存器的二进制数值的二进制数值指定移位寄存指定移位寄存器的最低位器的最低位指定移位寄存器的长度指定移位寄存器的长度和移位方向。移位寄存和移位方向。移位寄存器的最大长度为器的最大长度为64位。位。N为正值表示左移位,为正值表示左移位,N为负值表示右移位为负值
6、表示右移位【例【例5-6】移】移位寄存器应位寄存器应用举例。用举例。 I0.0【例【例5-7】用】用PLC构成喷泉的控制。用灯构成喷泉的控制。用灯L1L12分别代表喷分别代表喷泉的泉的12个喷水注。个喷水注。(1)控制要求:按下起动按钮后,隔灯闪烁,)控制要求:按下起动按钮后,隔灯闪烁,L1亮亮0.5秒后灭,秒后灭,接着接着L2亮亮0.5秒后灭,秒后灭, 接着接着L3亮亮0.5秒后灭,接着秒后灭,接着L4亮亮0.5秒秒后灭,接着后灭,接着L5、L9亮亮0.5秒后灭,接着秒后灭,接着L6、L10亮亮0.5秒后灭,秒后灭,接着接着L7、L11亮亮0.5秒后灭,接着秒后灭,接着L8、L12亮亮0.5
7、秒后灭,秒后灭,L1亮亮0.5秒后灭,如此循环下去,直至按下停止按钮。如图秒后灭,如此循环下去,直至按下停止按钮。如图5-8所示。所示。分析:需指定一个分析:需指定一个8位的移位寄存器(位的移位寄存器(M10.1M11.0),),移位寄存器的移位寄存器的S-BIT位为位为M10.1,并且移位寄存器的每一位,并且移位寄存器的每一位对应一个输出(对应一个输出(Q0.0Q0.7) 思考:思考:LED数码显示管数码显示管0-3显示,间隔时间为显示,间隔时间为1S。BACDEFG 1、控制要求:、控制要求: 天塔的灯光,可以用PLC控制灯光的闪耀移位及时序的变化等。控制要求如下:按起动按钮,L12L11
8、L10L8L1L1、L2、L9L1、L5、L8L1、L4、L7L1、L3、L6L1L2、L3、L4、L5L6、L7、L8、L9L1、L2、L6L1、L3、L7L1、L4、L8L1、L5、L9L1L2、L3、L4、L5L6、L7、L8、L9L12L11L10 循环下去,直至按下停止按钮。天塔之光的设计天塔之光的设计2、I/0分配分配3、程序设计、程序设计提供提供0.5S的的脉冲脉冲提供移位初值为1,之后均为0,直到下一次循环再次置1初始复位数据转换指令和数据运算指令数据转换指令和数据运算指令1、字节与字转换指令、字节与字转换指令BTI指令作用:将字节数值(IN)转换成整数值,并将结果置入OUT指
9、定的存储单元。 IN:VB, IB, QB, MB, SB, SMB, LB, AC, 常量, 数据类型:字节OUT:VW, IW, QW, MW, SW, SMW, LW, T, C, AC,数据类型:整数 BTI IN,OUT 字节与字转换指令字节与字转换指令ITB 指令作用:ITB指令将字整数(IN)转换成字节,并将结果置入OUT指定的存储单元。输入的字整数0至255被转换。超出部分导致溢出,SM1.1=1。输出不受影响。 IN:VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, 常量,数据类型:整数OUT:VB, IB, QB, MB, SB, SM
10、B, LB, AC, 数据类型:字节 ITB IN,OUT 2 2、字整数与双字整数之间的转换、字整数与双字整数之间的转换 ITD指令用法: ITD指令将整数值(IN)转换成双整数值,并将结果置入OUT指定的存储单元。符号被扩展。 IN:VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, 常量, 数据类型:整数OUT:VD, ID, QD, MD, SD, SMD, LD, AC,数据类型:双整数 ITD IN,OUT 字整数与双字整数之间的转换字整数与双字整数之间的转换 DTIDTI指令用法: DTI指令将双整数值(IN)转换成整数值,并将结果置入OUT指
11、定的存储单元。如果转换的数值过大,则无法在输出中表示,产生溢出SM1.1=1,输出不受影响。lIN:VD, ID, QD, MD, SD, SMD, LD, HC, AC,常量,数据类型:双整数lOUT:VW, IW, QW, MW, SW, SMW, LW, T, C, AC, 数据类型:整数 DTI IN,OUT 3、双整数与实数之间的转换的转换、双整数与实数之间的转换的转换 DIRlDTR指令将32位带符号整数IN转换成32位实数,并将结果置入OUT指定的存储单元 。 lIN:VD, ID, QD, MD, SD, SMD, LD, HC, AC, 常量。l数据类型:双整数lOUT:VD
12、, ID, QD, MD, SD, SMD, LD, AC。l数据类型:实数 DTR IN,OUT 双整数与实数之间的转换的转换双整数与实数之间的转换的转换 ROUNDlROUND指令按小数部分四舍五入的原则,将实数(IN)转换成双整数值,并将结果置入OUT指定的存储单元。 lIN:VD, ID, QD, MD, SD, SMD, LD, AC, 常量。l数据类型:实数lOUT:VD, ID, QD, MD, SD, SMD, LD, AC。l数据类型:双整数 ROUND IN,OUT 双整数与实数之间的转换的转换双整数与实数之间的转换的转换 TRUNClTRUNC(截位取整)指令按将小数部分
13、直接舍去的原则,将32位实数(IN)转换成32位双整数,并将结果置入OUT指定存储单元。 lIN:VD, ID, QD, MD, SD, SMD, LD, AC, 常量。l数据类型:实数lOUT:VD, ID, QD, MD, SD, SMD, LD, AC。l数据类型:双整数 TRUNC IN,OUT 4、BCD码与整数的转换码与整数的转换 BCDI BCDIlBCD-I指令将二进制编码的十进制数IN转换成整数,并将结果送入OUT指定的存储单元。IN的有效范围是BCD码 0至9999。lIN :VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, 常量。lO
14、UT:VW, IW, QW, MW, SW, SMW, LW, T, C, AC。lIN/OUT数据类型:字 BCDI OUT BCD码与整数的转换码与整数的转换 IBCD IBCDlI-BCD指令将输入整数IN转换成二进制编码的十进制数,并将结果送入OUT指定的存储单元。IN的有效范围是0至9999。lIN :VW, IW, QW, MW, SW, SMW, LW, T, C, AIW, AC, 常量。lOUT:VW, IW, QW, MW, SW, SMW, LW, T, C, AC。lIN/OUT数据类型:字 IBCD OUT 5 5、 译码指令译码指令l译码指令根据输入字节(IN)的低
15、4位表示的输出字的位号,将输出字的相对应的位,置位为1,输出字的其他位均置位为0。l IN:VB, IB, QB, MB, SMB, LB, SB, AC, 常量。数据类型:字节lOUT:VW, IW, QW, MW, SMW, LW, SW, AQW, T, C, AC。数据类型:字 编码指令编码指令l编码指令将输入字(IN)最低有效位(其值为1)的位号写入输出字节(OUT)的低4位中 lIN:VW, IW, QW, MW, SMW, LW, SW, AIW, T, C, AC, 常量。数据类型:字lOUT:VB, IB, QB, MB, SMB, LB, SB, AC。数据类型:字节 例题
16、:例题:若(AC2)=2 则VW40中的数值为:2#0000 0000 0000 0100 若(AC3)=2#0000 0000 0000 0100 则VB50中的编码为2。 6 6、七段显示译码指令、七段显示译码指令l功能:将输入字节(IN)的低四位确定的16进制数(16#0F),产生相应的七段显示码,送入输出字节OUT。lIN:VB, IB, QB, MB, SB, SMB, LB, AC, 常量。lOUT:VB, IB, QB, MB, SMB, LB, AC。IN/OUT的数据类型:字节 SEG IN,OUT 运行结果为AC1中的值为16#3F(2#0011 1111)。 算数运算指令
17、算数运算指令1、整数与双整数加减法指令、整数与双整数加减法指令l整数加法(ADD-I)和减法(SUB-I)指令是:使能输入有效时,将两个16位符号整数相加或相减,并产生一个16位的结果输出到OUT。l双整数加法(ADD-D)和减法(SUB-D)指令是:使能输入有效时,将两个32位符号整数相加或相减,并产生一个32位结果输出到OUT。l整数与双整数加减法指令影响算术标志位SM1.0(零标志位),SM1.1(溢出标志位)和SM1.2(负数标志位)。功能IN1+IN2=OUT IN1-IN2=OUTIN1/IN2: VW, IW, QW, MW, SW, SMW, T, C, AC, LW, AIW
18、, 常量, *VD, *LD, *AC。OUT: VW, IW, QW, MW, SW, SMW, T, C, LW, AC, *VD, *LD, *AC。IN/OUT数据类型:整数。 IN1/IN2: VD, ID, QD, MD, SMD, SD, LD, AC, HC, 常量, *VD, *LD, *AC。OUT:VD, ID, QD, MD, SMD, SD, LD, AC, *VD, *LD, *AC。IN/OUT数据类型:双整数。语句表的写法语句表的写法LD I0.0MOVW VW0, VW20+I VW10, VW20LD I0.0+I VW10, VW20LD I0.0MOVD
19、 VD10, VD30-D VD20, VD30LD I0.0MOVD VD10, VD30-D VD20, VD30【例5-11】求5000加400的和,5000在数据存储器VW200中,结果放入AC0。程序如图5-17所示。LD I0.0 MOVW VW200, AC0 /VW200AC0+I +400, AC0 /VW200+400=AC02、整数乘除法指令、整数乘除法指令l整数乘法指令(MUL-I)是:使能输入有效时,将两个16位符号整数相乘,并产生一个16位积,从OUT指定的存储单元输出。l整数除法指令(DIV-I)是:使能输入有效时,将两个16位符号整数相除,并产生一个16位商,从
20、OUT指定的存储单元输出,不保留余数。如果输出结果大于一个字,则溢出位SM1.1置位为1。IN1/IN2: VW, IW, QW, MW, SW, SMW, T, C, AC, LW, AIW, 常量, *VD, *LD, *AC。OUT: VW, IW, QW, MW, SW, SMW, T, C, LW, AC, *VD, *LD, *AC。IN/OUT数据类型:整数。l双整数乘法指令(MUL-D):使能输入有效时,将两个32位符号整数相乘,并产生一个32位乘积,从OUT指定的存储单元输出。l双整数除法指令(DIV-D):使能输入有效时,将两个32位整数相除,并产生一个32位商,从OUT指
21、定的存储单元输出,不保留余数。IN1/IN2: VD, ID, QD, MD, SMD, SD, LD, AC, HC, 常量, *VD, *LD, *AC。OUT:VD, ID, QD, MD, SMD, SD, LD, AC, *VD, *LD, *AC。IN/OUT数据类型:双整数。LD I0.0MOVW VW10, VW30*I VW20, VW30LD I0.2MOVD VD30, VD50/D VD40, VD50l整数乘法产生双整数指令(MUL):使能输入有效时,将两个16位整数相乘,得出一个32位乘积,从OUT指定的存储单元输出。l整数除法产生双整数指令(DIV):使能输入有效
22、时,将两个16位整数相除,得出一个32位结果,从OUT指定的存储单元输出。其中高16位放余数,低16位放商。【例5-12】乘除法指令应用举例,程序如图5-18所示。LD I0.0MUL AC1 VD100DIV VW10 VD200 例题1: 使用乘法除法指令实现灯移位点亮控制有一组灯15个,接于Q0.0Q1.6,要求:当I0.0为ON时,灯正序每隔一秒单个移位,并循环,当I0.0为 OFF 时,灯反序每隔1S单个移位,到Q0.0为ON 停止。例题例题2:l用模拟电位器调节定时器T37的设定值,要求设定的时间范围为1015S。 模拟电位器:PLC内置的设置参数用的小电位器,旋转其位置,可以调节
23、外部调节寄存器SMB28和SMB29中的数值(与0255对应) 设模拟电位器读出的数字是N,则定时器的设定值为:l(150-100)*N/255+100=50N/255+100(150-100)*N/255+100=50N/255+100(150-100)*N/255+100=50N/255+1003、实数加减乘除指令、实数加减乘除指令l实数加法(ADD-R)、减法(SUB-R)指令:将两个32位实数相加或相减,并产生一个32位实数结果,从OUT指定的存储单元输出。l实数乘法(MUL-R)、除法(DIV-R)指令:使能输入有效时,将两个32位实数相乘(除),并产生一个32位积(商),从OUT指
24、定的存储单元输出。l操作数:IN1/IN2:VD, ID, QD, MD, SMD, SD, LD, AC, 常量, *VD, *LD, *AC。lOUT:VD, ID, QD, MD, SMD, SD, LD, AC, *VD, *LD, *ACl数据类型:实数。【例5-13】实数运算指令的应用,程序如图5-19所示。LD I0.0+R AC1, VD100/R VD100, AC0将英寸转换成厘米,已知将英寸转换成厘米,已知C10的当前值为英寸的当前值为英寸的计数值,的计数值,1英寸英寸=2.54厘米。厘米。 4 4、逻辑运算指令、逻辑运算指令VB1: 0 0 0 1 1 1 0 0 VB
25、2: 1 1 0 0 1 1 0 1 VB2: 0 0 0 0 1 1 0 0VW100: 0001 1101 1111 1010 VW200: 1110 0000 1101 1100VW300: 1111 1101 1111 1110AC0与 AC1中每一位相异为1,相同为0VB5: 0000 1111 VB6: 1111 00005、递增、递减指令、递增、递减指令VB0: 0 0 0 1 1 1 0 0 VB0: 0 0 0 1 1 1 0 1VB0: 0 0 0 1 1 1 1 1 VB0: 0 0 0 1 1 1 1 0 6、子程序调用指令、子程序调用指令课后思考:各种彩灯循环的控制课
26、后思考:各种彩灯循环的控制设计程序:完成当按下启动按钮后,彩灯点亮,时间间隔0.5S。点亮方式:l8盏灯按1-8正序点亮。l8盏灯按8-1逆序点亮。l8盏灯正序单数点亮。l8盏灯全亮,然后全部熄灭。l按下停止按钮,全部停止。带参数的子程序调用带参数的子程序调用1、局部变量的概念 S7-200中有全局变量和局部变量。 全局变量时是指在各POU中都有效的变量。 局部变量只在定义它的POU中有效。用L表示局部变量。分为:1)输入变量(IN)由调用它的POU提供的传入子程序的输入参数。2)输出变量(OUT)子程序执行的结果,被返回给调用它的POU3)IN-OUT(输入输出变量)初始值由调用它的POU传
27、给子程序,并将结果返回给调用它的POU2、使用方法举例、使用方法举例 编写电动机启动停止电路,在不同的输入信号下调用此程序。1)打开已经自动生成的子程序SBR-0,在此POU的局部变量表中建立变量。系统自动分配地址。2、在子程序中输入程序(使用局部变量,则此子程序可以任意移植)l3、在主程序中调用该子程序7、跳转指令及标号跳转指令及标号 l(1)指令格式lJMP:跳转指令,使能输入有效时,把程序的执行跳转到同一程序指定的标号(n)处执行。lLBL:指定跳转的目标标号。l操作数n:0255。l必须强调的是:跳转指令及标号必须同在主程序内或在同一子程序内,同一中断服务程序内,不可由主程序跳转到中断
28、服务程序或子程序,也不可由中断服务程序或子程序跳转到主程序。例例1:例例2:8、END 、STOP 、WDR指令指令(1)END:条件结束指令,执行条件成立(左侧逻辑值为1)时结束主程序,返回主程序的第一条指令执行。在梯形图中该指令不连在左侧母线。END指令只能用于主程序,不能在子程序和中断程序中使用。(2)MEND:无条件结束指令,结束主程序,返回主程序的第一条指令执行。在梯形图中无条件结束指令直连接左侧母线。用户必须以无条件结束指令,结束主程序。在调试程序时,在程序的适当位置插入MEND指令可以实现程序的分段调试。 必须指出MicroWin32 STEP-7编程软件,在主程序的结尾自动生成
29、无条件结束指(MEND)用户不得输入,否则编译出错。l(3)STOP:停止指令,执行条件成立,停止执行用户程序,令CPU工作方式由RUN转到STOP。SM5.0为检测到I/O错误时置1 END 和和STOP的区别的区别 l当I0.0接通时,Q0.0有输出若I0.1接通,执行END指令,终止用户程序,并返回主程序的起点,Q0.0仍保持接通,但下面的程序不会执行。l若I0.0断开,接通I0.2,则Q0.1有输出,若将I0.3接通,则执行STOP指令,立即终止程序执行,Q0.0与Q0.1均复位,CPU转为STOP方式。 (4) WDR:警戒时钟刷新指令警戒时钟刷新指令 工作原理:看门狗定时器定时时间为300ms,正常时,程序扫描不超过300ms,则每个周期它被复位。当程序扫描超过正常值时,看门狗定时器动作,停止程序运行。看门狗定时器动作的原因: 程序由于干扰,偏离正常运行路线,扫描时发生错误 程序较长或遇到循环指令使得正常情况下,扫描时间过长。 对于情况2,则可以在程序中加入WDR指令,当使能输入有效时,警戒时钟复位。可以增加一次扫描时间。