《s7-200plc的指令系统剖析》由会员分享,可在线阅读,更多相关《s7-200plc的指令系统剖析(83页珍藏版)》请在金锄头文库上搜索。
1、指令分类按形式分,2.功能块,1.继电器,触点,线圈,( ),Enable,输入参数,IN1,IN2,N,输出参数,OUT,功能数据类型,地址,条件,长度,EN,指令分类按功能分,1。位操作功能 2。定时器/计数器 3。算术运算功能 4。关系运算功能 5。数据传送功能 6。转换功能 7。控制功能,一、基本逻辑指令,逻辑关系 梯形图 助记符,I0.0,I0.1,LD I0.0 A I0.1 = Q0.0,LD I0.0 O I0.1 = Q0.0,LDN I0.1 = Q0.0,AND,OR,NOT,当 I0.0与 I0.1 都 “ON” 时, 则输出 Q0.0 “ON”(1)。,当 I0.0
2、或 I0.0 “ON” 时,则输出 Y0 “ON”(1),当 I0.1 “OFF” 时 则输出 Q0.0 “ON”(1),Q0.0,I0.0,I0.1,Q0.0,Q0.0,I0.1,I0.0,*,*,I0.1,Q0.0,逻辑关系 梯形图 助记符,LD X0 O X1 LD X2 O X3 ALD = Y0,LD X0 A X1 LD X2 AN X3 OLD = Y0,当 “X0 或 X1”与“X2 或X3” 都 “ON” 时, 则输出 Y0 “ON”。,ALD(And Stack),OLD(Or Stack),当 “X0 与 X1”或“X2 与 X3非” “ON” 时,则输 出 Y0 “ON
3、”。,Y0,X0,X2,X1,X3,Y0,置位、复位指令,立即I/O指令立即输入,直接读取物理输入点的值,输入映象寄存器内容不更新。指令操作数仅限于输入物理点的值 。,立即I/O指令立即输出,执行立即输出指令时,则将结果同时立即复制到物理输出点和相应的输出映象寄存器,立即I/O指令立即置位和复位指令,必须指出:立即I/O指令是直接访问物理输入输出点的,比一般指令访问输入输出映象寄存器占用CPU时间要长,因而不能盲目地使用立即指令,否则,会加长扫描周期时间,反而对系统造成不利影响。,空操作,正跳变,负跳变,能流到达取非触点时,能流就停止;能流未到达取非触点时,能流就通过。,检测到每一次正跳变(信
4、号后,让能流通过一个扫描周期的时间,检测到每一次负跳变信号后,让能流通过一个扫描周期的时间,取非,输入映象寄存器I0.0,输出映象寄存器Q0.0,输出映象寄存器Q0.1,输出映象寄存器Q0.2,一个周期,一个周期,空操作指令(NOP N)不影响程序的执行。 操作数N是常数 0255,2. 定时器及定时器指令,输入接点,设定值: 132767,定时器号码 (0255),IN,PT,T37,TON,定时器分辨率(时基)有三种:1ms、10ms、100ms。定时器的分辨率由定时器号决定,定时器的实际设定时间T=设定值PT分辨率,TS=1200*0.1=120S,延时接通定时器 TON,其工作波形图如
5、下:,I0.1,Q0.1,计时值,设定值,TS,T38,TON,PT,IN,I0.1,120,( ),T38,Q0.1,延时断开定时器 TOF,其工作波形图如下:,I0.1,Q0.1,计时值,设定值,TS,设定值,使能输入,TOF,PT,IN,T38,TOF,PT,IN,I0.1,120,T38,( ),T38,Q0.1,TS=1200*0.1=120S,保持型定时器 TONR,其工作波形图如下:,输入端,Q0.1,当前值,设定值,TS,TS= 120*10ms,T4,M0.1,TONR,PT,IN,I0.1,120,T4,( ),T4,Q0.1,最大值,32767,120, 1ms分辩率定时
6、器 每隔1ms刷新一次,刷新定时器位和定时器当前值,在一个扫描周期中要刷新多次,而不和扫描周期同步。, 10ms分辩率定时器 10ms分辩率定时器启动后,定时器对10ms时间间隔进行计时。程序执行时,在每次扫描周期的开始对10ms定时器刷新,在一个扫描周期内定时器位和定时器当前值保持不变。, 100ms分辨率定时器 100ms定时器启动后,定时器对100ms时间间隔进行计时。只有在定时器指令执行时,100ms定时器的当前值才被刷新。,自复位式的定时器,T33,T33,T33,错误,正确,2. 计数器指令,定时器是对PLC内部的时钟脉冲进行计数,而计数器是对外部的或由程序产生的计数脉冲进行计数
7、。,当前值:计数器累计计数的当前值(16位有符号整数),它存放在计数器的16位(bit)当前值寄存器中。,每个计数器只有一个16位的当前值寄存器地址。在一个程序中,同一计数器号不要重复使用,更不可分配给几个不同类型的计数器。,增计数器,设定值: -3276832767,CU,PV,C20,CTU,R,复位,计脉冲数,增/减计数器,增计数,减计数,复位,C(0255),当前值,减计数器,CU,PV,C(0255),CTD,LD,复位,装设定值,计脉冲数,2,1,计数器当前值等于0时,停止计数,同时计数器位被置位“1”,设定值, 电机起动后,R1产生宽度为一个扫描 周期的正脉冲,使C20和T37复
8、位, 起、停传送带电机,计数器应用举例:产品数量检测,Q0.0,Q0.0,I0.2,24,C20,T37,20,C20,Q0.1,每检测到一个产品,X2产生一个正脉冲, 使C20计一个数, C20每计24个数,机械手动作一次, 机械手动作后,延时2秒,将机械手 电磁铁切断,同时将C20复位。C20 复位后,Q0.1和T37也复位,( ),I0.0,I0.1,C20,( ),IN,PT,TON,T37,T37,P,Q0.0,移位寄存器指令,L,D,I,0,.,1,E,U,S,H,R,B,I,0,.,2,V,1,0,.,0,4,一、传送指令数据传送指令,数据块传送指令,数据块传送指令把从输入(IN
9、)指定地址的N个连续字节、字、双字的内容传送到从输出(OUT)指定地址开始的N个连续字节、字、双字的存储单元中去。,传送字节立即读、写指令,传送字节立即写(BIW)指令,将从输入端(IN)指定字节地址的内容写入输出端(OUT)指定字节地址的物理输出点(QB)。,传送字节立即读(BIR)指令,读取输入端(IN)指定字节地址的物理输入点(IB)的值,并写入输出端(OUT)指定字节地址的存储单元中。,二、数学运算指令1.加法指令,-I IN2,OUT,-D IN2,OUT,-R IN2,OUT,2.减法指令,3.乘法指令,4.除法指令,整数完全除法指令,把输入端(IN)指定的两个16位整数相除,产生
10、一个32位结果,并送到输出端(OUT)指定的存储单元中去。其中高16位是余数,低16位是商。,整数加法、减法、乘法、除法,双整数加法、减法、乘法、除法,整数完全乘法、除法,实数加法、减法、乘法、除法,三、转换指令,BCD码转为整数(BCDI)指令,将输入 端(IN)指定的BCD码转换成整数,并将 结果存放到输出端(OUT)指定的存储单 元中去。输入数据的范围是0到9999 (BCD码)。 整数转为BCD码(IBCD)指令,将输入端 (IN)指定的整数转换成BCD码,并将结果存放 到输出端(OUT)指定的存储单元中去。输入数据的范围是0到 9999。 指令影响的特殊存储器位:SM1.6(非法BC
11、D),无符号操作,1BCD码与整数的转换,2双字整数与实数的转换,双字整数转换为实数,双字整数转换为实数,实数转换为双字整数,双字整数转为实数(DTR)指令:将输入端(IN)指定的32位有符号整数转换成32位实数 ROUND取整指令,转换时实数的小数部分四舍五入。 TRUNC取整指令,实数舍去小数部分后,转换成32位有符号整数。,实数转为双字整数指令可分为四舍五入取整(ROUND)和舍去尾数后取整(TRUNC)指令。,取整指令被转换的输入值应是有效的实数,如果实数值太大,使输出无法表示,那末溢出位(SM1.1)被置位。,3双整数与整数的转换,输入端(IN)的有符号双整数转换成整数,并存入OUT
12、。被转换的输入值应是有效的双整数,否则溢出位(SM1.1)被置位。,欲将整数转换为实数,可先用ITD指令把整数转换为双整数,然后再用DTR指令把双整数转换为实数。,例:,101,C10,英寸,LPS,逻辑推入栈指令(分支或主控指令)。在梯形图中的分支结构中,用于生成一条新的母线,左侧为主控逻辑块时,第一个完整的从逻辑行从此处开始。 注意:使用LPS指令时,本指令为分支的开始,以后必须有分支结束指令LPP。即LPS与LPP指令必须成对出现。,逻辑推入弹出栈指令,LPP,逻辑弹出栈指令(分支结束或主控复位指令)。在梯形图中的分支结构中,用于将LPS指令生成一条新的母线进行恢复。 注意:使用LPP指
13、令时,必须出现在LPS的后面,与LPS成对出现。,逻辑读栈指令,LRD,逻辑读栈指令。在梯形图中的分支结构中,当左侧为主控逻辑块时,开始第二个和后边更多的从逻辑块。,比较,1. 字节比较 2. 整数比较 3. 双字整数比较,1. 字节比较,字节比较用于比较两个字节型整数值IN1和IN2的大小,字节比较是无符号的。比较式可以是LDB、AB或OB后直接加比较运算符构成。 如:LDB=、AB、OB= 等。 整数IN1和IN2的寻址范围:VB、IB、QB、MB、SB、SMB、LB、*VD、*AC、*LD和常数。 指令格式例: LDB= VB10, VB12 AB MB0, MB1 OB= AC1, 1
14、16,2. 整数比较,整数比较用于比较两个一字长整数值IN1和IN2的大小,整数比较是有符号的(整数范围为16#8000和16#7FFF之间)。比较式可以是LDW、AW或OW后直接加比较运算符构成。 如:LDW=、AW、OW= 等。 整数IN1和IN2的寻址范围:VW、IW、QW、MW、SW、SMW、LW、AIW、T、C、AC、*VD、*AC、*LD和常数。 指令格式例: LDW= VW10, VW12 AW MW0, MW4 OW= AC2, 1160,3. 双字整数比较,双字整数比较用于比较两个双字长整数值IN1和IN2的大小,双字整数比较是有符号的(双字整数范围为16#80000000和
15、16#7FFFFFFF之间)。 指令格式例: LDD= VD10, VD14 AD MD0, MD8 OD= HC0, *AC0,4. 实数比较,实数比较用于比较两个双字长实数值IN1和IN2的大小,实数比较是有符号的(负实数范围为-1.175495E-38和-3.402823E+38,正实数范围为+1.175495E-38和+3.402823E+38)。比较式可以是LDR、AR或OR后直接加比较运算符构成。 指令格式例: LDR= VD10, VD18 AR MD0, MD12 OR *AC1, VD100,图4.23 程序举例,图4.24 时序图,返回本节,数学函数指令,1. 平方根 2. 自然对数 3. 指数 4. 正弦、余弦、正切,1. 平方根,SQRT,平方根指令。把一个双字长(32位)的实数IN开平方,得到32位的实数结果。 在LAD和FBD中,以指令盒形式编程,执行结果:SQRT(IN)=OUT。 在STL中,执行结果:SQRT(IN)=OUT。 本指令影响的特殊存储器位:SM1.0(零);SM1.1(溢出和非法值);SM1.