1、S7-200 系列的基本逻辑指令S7-200 系列的基本逻辑指令与 FX 系列和 CPM1A 系列基本逻辑指令大体相似,编程和梯形图表达方式也相差不多,这里列表表示 S7-200 系列的基本逻辑指令(见表)。表 S7-200 系列的基本逻辑指令指令名称 指令符 功能 操作数取 LD bit 读入逻辑行或电路块的第一个常开接点取反 LDN bit 读入逻辑行或电路块的第一个常闭接点与 A bit 串联一个常开接点与非 AN bit 串联一个常闭接点或 O bit 并联一个常开接点或非 ON bit 并联一个常闭接点Bit:I,Q,M,SM,T,C,V,S电路块与 ALD 串联一个电路块电路块或
2、OLD 并联一个电路块 无输出 = bit 输出逻辑行的运算结果 Bit:Q,M,SM,T,C,V,S置位 S bit,N 置继电器状态为接通复位 R bit,N 使继电器复位为断开Bit:Q,M,SM,V,SS7-200 系列 PLC 的比较指令在 SIEMENS S7-200 的编程软件 STEP-7 中,有专门的比较指令:IN1 与 IN2 比较,比较的数据类型可以是 B、I(W)、D、R,即字节、字整数、双字整数和实数;还可以有其他的比较式:、等等。当满足比较等式,则该触点闭合。与 LMODSOFT 指令对照:在 LMODSOFT 中,没有直接的数的比较指令,但 SUB 指令可以通过其
3、执行减法功能后的三个输出端的状态实现整数的比较功能。若与 LMODSOFT 中的 SUB 指令对应,则在 STEP-7 中应有三个比较指令: 、=、,则根据 SUB 指令三个输出端的不同组合,均可找到对应的比较指令。比如:(30007)(40030)(30007)=(40030) (30007)(40030)(30007)(30007)(40030)(30007)(40030)S7-200 系列 PLC 的定时器指令类型、编号及分辨率TON接通延时TONR有记忆接通延时TOF断开延时3 种分辨率(时基):1ms、10ms、100ms分别对应不同的定时器号定时器 6 个要素:指令格式(时基、编号
4、等) 预置值PT使能IN 复位3 种定时器不同当前值Txxx 定时器状态(位)可由触点显示定时值=时基预置值 PT。由于定时器的计时间隔与程序的扫描周期并不同步,定时器可能在其时基(1ms、10ms、100ms)内任何时间启动,所以,未避免计时时间丢失,一般要求设置 PT 预置值必须大于最小需要的时间间隔。例如:使用 10ms 时基定时器实现 140ms延时(时间间隔),则 PT 应设置为 15(10ms15=150ms)。2) 功能(1)接通延时定时器 TON一般用于单一时间间隔的定时指令格式:见图,编号与分辨率及定时器类型有关。(见教材 P221:Fig8-3-3a)使能:IN: I2.0
5、 =“1”当前值T33,当在线(Online)时,此处显示当前值预置值PT=3,即定时时间=10ms3=30ms复位IN:I2.0 = “0”定时器状态(位)“1”或“0”与 MODICON PLC 的定时器指令对照:区别:对 MODICON PLC,当 10001=“0” ,10002=“1”时,定时器当前值保持;当计时时间到,即(40040)= 30 时,只要 10002=“1”,定时器也是保持对 S7-200 PLC,只要 I0.0=“1”,即计时,当 T33 当前值=3 时,定时器继续计时,直至I0.0=“0”,定时器复位(相当于 10002=“0” )(1)断开延时定时器 TOF一般
6、用于故障时间后的时间延时指令格式:见图,编号与分辨率及定时器类型有关。注意: 定时器状态(位)=“1”(置位)及当前值复 0 与使能.I0.0=“1”同步;计时开始与使能 I0.0 从“1”“0”(断开)同步,且当计时时间到而使能仍=“0”时,当前值保持。(2)有记忆接通延时定时器 TONR一般用于累计许多时间间隔(指令功能及时序图见教材 P222:Fig8-3-3c)指令格式:见图,编号与分辨率及定时器类型有关。注意: 定时器状态(位)=“1”(置位)及当前值复 0 与使能.I0.0=“1”同步;计时开始与使能 I0.0 从“1”“0”(断开)同步,且当计时时间到而使能仍=“0”时,当前值保
7、持。(3) 有记忆接通延时定时器 TONR一般用于累计许多时间间隔S7-200 系列 PLC 的计数器指令1)类型及编号CTU增计数CTD减计数 C0C255CTUD增减计数计数器 6 个要素: 指令格式(类型、编号等)预置值PV使能CU、CD 复位R、LD当前值Cxxx 计数器状态(位)与定时器类似2)功能、时序图及应用示例此例为一个增减计数器的应用示例,其与 MODICON PLC 计数器指令的比较,同学可自己进行,并注意到,计数器指令的使能均是采样上升沿(“0” “1” )。S7-200 系列 PLC 其它常用指令1.脉冲产生指令 EU/ED 的应用EU 指令在 EU 指令前的逻辑运算结
8、果由 OFF 到 ON 时就产生一个宽度为一个扫描周期的脉冲,驱动其后面的输出线圈。2 逻辑堆栈的操作LPS 为进栈操作,LRD 为读栈操作,LPP 为出栈操作。S7-200 系列 PLC 中有一个 9 层堆栈,用于处理逻辑运算结果,称为逻辑堆栈。3 NOT、NOP 和 MEND 指令NOT、NOP 及 MEND 指令的形式及功能如表 4-19 所示。表 4-19 NOT、NOP 及 MEND 指令的形式及功能STL 功能 操作数NOT 逻辑结果取反 NOP 空操作 MEND 无条件结束 NOT 为逻辑结果取反指令,在复杂逻辑结果取反时为用户提供方便。NOP 为空操作,对程序没有实质影响。ME
9、ND 为无条件结束指令,在编程结束时一定要写上该指令,否则会出现编译错误。调试程序时,在程序的适当位置插入 MEND 指令可以实现程序的分段调试。4比较指令比较指令是将两个操作数按规定的条件作比较,条件成立时,触点就闭合。比较运算符有:=、=、。(1)字节比较字节比较用于比较两个字节型整数值 INl 和 IN2 的大小,字节比较是无符号的。比较式可以是 LDB、AB 或 OB 后直接加比较运算符构成。如:LDB=、AB=等。整数 INl 和 IN2 的寻址范围:VB、IB、QB、MB、SB、SMB、LB、*VD、*AC、*LD 和常数。指令格式例如: LDB= VBl0,VBl2(2)整数比较
10、整数比较用于比较两个一字长整数值 INl 和 IN2 的大小,整数比较是有符号的(整数范围为 16#8000 和 16#7FFF 之间)。比较式可以是 LDW、AW 或 OW 后直接加比较运算符构成。如:LDW=、AW=等。整数 INl 和 IN2 的寻址范围:VW、IW、QW、MW、SW、SMW、LW、AIW、T、C、AC、*VD、*AC、*LD 和常数。指令格式例如: LDW= VWl0,VWl2(3)双字整数比较双字整数比较用于比较两个双字长整数值 INl 和 IN2 的大小,双字整数比较是有符号的(双字整数范围为 16#80000000 和 16#7FFFFFFF 之间)。比较式可以是
11、LDD、AD 或 OD 后直接加比较运算符构成。如:LDD=、AD=等。双字整数 INl 和 IN2 的寻址范围:VD、ID、QD、MD、SD、SMD、LD、HC、AC、*VD、*AC、*LD 和常数。指令格式例如: LDD= VDl0,VDl2(4)实数比较实数比较用于比较两个双字长实数值 INl 和 IN2 的大小,实数比较是有符号的(负实数范围为-1.175495E-38 和-3.402823E+38,正实数范围为+1.175495E-38 和+3.402823E+38)。比较式可以是 LDR、AR 或 OR 后直接加比较运算符构成。如:LDR=、AR=等。实数 INl 和 IN2 的寻
12、址范围:VD、ID、QD、MD、SD、SMD、LD、AC、*VD、*AC、*LD 和常数。指令格式例如: LDR= VDl0,VDl2S7-200PLC 功能指令概述般的逻辑控制系统用软继电器、定时器和计数器及基本指令就可以实现。利用功能指令可以开发出更复杂的控制系统,以致构成网络控制系统。这些功能指令实际上是厂商为满足各种客户的特殊需要而开发的通用子程序。功能指令的丰富程度及其合用的方便程度是衡量 PLC 性能的一个重要指标。S7-200 的功能指令很丰富,大致包括这几方面:算术与逻辑运算、传送、移位与循环移位、程序流控制、数据表处理、PID 指令、数据格式变换、高速处理、通信以及实时时钟等
13、。功能指令的助记符与汇编语言相似,略具计算机知识的人学习起来也不会有太大困难。但S7-200 系列 PLC 功能指令毕竟太多,一般读者不必准确记忆其详尽用法,需要时可可查阅产品手册。S7-200PLC 四则运算指令介绍四则运算指令如表 4-20 所示。表 4-20 四则运算指令名称指令格式(语句表)功能 操作数寻址范围加法指令 +I 两个 16 位带符号整数相加,得到一个 IN1,IN2,OUT:VW,IW,QW,MIN1,OUT16 位带符号整数。执行结果:IN1+OUT=OUT(在 LAD 和FBD 中为:IN1+IN2=OUT)W,SW,SMW,LW, T,C,AC,*VD,*AC,*L
14、DIN1 和 IN2 还可以是 AIW 和常数+D IN1,IN2两个 32 位带符号整数相加,得到一个32 位带符号整数。执行结果:IN1+OUT=OUT(在 LAD 和FBD 中为:IN1+IN2=OUT)IN1,IN2,OUT:VD,ID,QD,MD,SD,SMD,LD,AC,*VD,*AC,*LDIN1 和 IN2 还可以是 HC 和常数+R IN1,OUT两个 32 位实数相加,得到一个 32 位实数。执行结果:IN1+OUT=OUT(在 LAD 和FBD 中为:IN1+IN2=OUT)IN1,IN2,OUT:VD,ID,QD,MD,SD,SMD,LD,AC,*VD,*AC,*LDI
15、N1 和 IN2 还可以常数-I IN1,OUT两个 16 位带符号整数相减,得到一个16 位带符号整数。执行结果:OUT-IN1=OUT(在 LAD 和FBD 中为:IN1-IN2=OUT)IN1,IN2,OUT:VW,IW,QW,MW,SW,SMW,LW, T,C,AC,*VD,*AC,*LDIN1 和 IN2 还可以是 AIW 和常数-D IN1,OUT两个 32 位带符号整数相减,得到一个32 位带符号整数。执行结果:OUT-IN1=OUT(在 LAD 和FBD 中为:IN1-IN2=OUT)IN1,IN2,OUT:VD,ID,QD,MD,SD,SMD,LD,AC,*VD,*AC,*L
16、DIN1 和 IN2 还可以是 HC 和常数减法指令-R IN1,OUT两个 32 位实数相加,得到一个 32 位实数。执行结果:OUT-IN1=OUT(在 LAD 和FBD 中为:IN1-IN2=OUT)IN1,IN2,OUT:VD,ID,QD,MD,SD,SMD,LD,AC,*VD,*AC,*LDIN1 和 IN2 还可以常数*I IN1,OUT两个 16 位符号整数相乘,得到一个 16整数。执行结果:IN1*OUT=OUT(在 LAD 和FBD 中为:IN1*IN2=OUT)IN1,IN2,OUT:VW,IW,QW,MW,SW,SMW,LW, T,C,AC,*VD,*AC,*LDIN1
17、和 IN2 还可以是 AIW 和常数MUL IN1,OUT两个 16 位带符号整数相乘,得到一个32 位带符号整数。执行结果:IN1*OUT=OUT(在 LAD 和FBD 中为:IN1*IN2=OUT)IN1,IN2:VW,IW,QW,MW,SW,SMW,LW,AIW,T,C,AC,*VD,*AC,*LD 和常数OUT:VD,ID,QD,MD,SD,SMD,LD,AC,*VD,*AC,*LD*D IN1,OUT两个 32 位带符号整数相乘,得到一个32 位带符号整数。执行结果:IN1*OUT=OUT(在 LAD 和FBD 中为:IN1*IN2=OUT)IN1,IN2,OUT:VD,ID,QD,
18、MD,SD,SMD,LD,AC,*VD,*AC,*LDIN1 和 IN2 还可以是 HC 和常数乘法指令*R IN1,OUT两个 32 位实数相乘,得到一个 32 位实数。执行结果:IN1*OUT=OUT(在 LAD 和FBD 中为:IN1*IN2=OUT)IN1,IN2,OUT:VD,ID,QD,MD,SD,SMD,LD,AC,*VD,*AC,*LDIN1 和 IN2 还可以是常数/I IN1,OUT两个 16 位带符号整数相除,得到一个16 位带符号整数商,不保留余数。执行结果:OUT/IN1=OUT(在 LAD 和FBD 中为:IN1/IN2=OUT)IN1,IN2,OUT:VW,IW,
19、QW,MW,SW,SMW,LW, T,C,AC,*VD,*AC,*LDIN1 和 IN2 还可以是 AIW 和常数除法指令DIV IN1,OUT两个 16 位带符号整数相除,得到一个32 位结果,其中低 16 位为商,高 16位为结果。执行结果:OUT/IN1=OUT(在 LAD 和IN1,IN2:VW,IW,QW,MW,SW,SMW,LW,AIW,T,C,AC,*VD,*AC,*LD 和常数OUT:VD,ID,QD,MD,SD,SMDFBD 中为:IN1/IN2=OUT) ,LD,AC,*VD,*AC,*LD/D IN1,OUT两个 32 位带符号整数相除,得到一个32 位整数商,不保留余数
20、。执行结果:OUT/IN1=OUT(在 LAD 和FBD 中为:IN1/IN2=OUT)IN1,IN2,OUT:VD,ID,QD,MD,SD,SMD,LD,AC,*VD,*AC,*LDIN1 和 IN2 还可以是 HC 和常数/R IN1,OUT两个 32 位实数相除,得到一个 32 位实数商。执行结果:OUT/IN1=OUT(在 LAD 和FBD 中为:IN1/IN2=OUT)IN1,IN2,OUT:VD,ID,QD,MD,SD,SMD,LD,AC,*VD,*AC,*LDIN1 和 IN2 还可以是常数SQRT IN,OUT把一个 32 位实数(IN)开平方,得到32 位实数结果(OUT)L
21、N IN,OUT对一个 32 位实数(IN)取自然对数,得到 32 位实数结果(OUT)EXP IN,OUT对一个 32 位实数(IN)取以 e 为底数的指数,得到 32 位实数结果(OUT)SIN IN,OUTCOS IN,OUT数学函数指令TAN IN,OUT分别对一个 32 位实数弧度值(IN)取正弦、余弦、正切,得到 32 位实数结果(OUT)IN,OUT:VD,ID,QD,MD,SD,SMD,LD,AC,*VD,*AC,*LDIN 还可以是常数INCB OUT将字节无符号输入数加 1执行结果:OUT+1=OUT(在 LAD 和 FBD中为:IN+1=OUT)DECB OUT将字节无符
22、号输入数减 1执行结果:OUT-1=OUT(在 LAD 和 FBD中为:IN-1=OUT)IN,OUT:VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LDIN 还可以是常数INCW OUT将字(16 位)有符号输入数加 1执行结果:OUT+1=OUT(在 LAD 和 FBD中为:IN+1=OUT)DECW OUT将字(16 位)有符号输入数减 1执行结果:OUT-1=OUT(在 LAD 和 FBD中为:IN-1=OUT)IN,OUT:VW,IW,QW,MW,SW,SMW,LW,T,C,AC,*VD,*AC,*LDIN 还可以是 AIW 和常数INCD OUT将双字(32
23、位)有符号输入数加 1执行结果:OUT+1=OUT(在 LAD 和 FBD中为:IN+1=OUT)增减指令DECD OUT将字(32 位)有符号输入数减 1执行结果:OUT-1=OUT(在 LAD 和 FBD中为:IN-1=OUT)IN,OUT:VD,ID,QD,MD,SD,SMD,LD,AC,*VD,*AC,*LDIN 还可以是 HC 和常数S7-200PLC 逻辑运算指令逻辑运算指令如表 4-21 所示。表 4-21 逻辑运算指令名称指令格式(语句表) 功能 操作数ANDB IN1,OUT将字节 IN1 和 OUT 按位作逻辑与运算,OUT 输出结果字节逻辑运算指令ORB 将字节 IN1
24、和 OUT 按位作逻IN1,IN2,OUT:VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LDIN1 和 IN2 还可以是常数IN1,OUT 辑或运算,OUT 输出结果XORB IN1,OUT将字节 IN1 和 OUT 按位作逻辑异或运算,OUT 输出结果INVB OUT 将字节 OUT 按位取反,OUT输出结果ANDW IN1,OUT将字 IN1 和 OUT 按位作逻辑与运算,OUT 输出结果ORW IN1,OUT将字 IN1 和 OUT 按位作逻辑或运算,OUT 输出结果XORW IN1,OUT将字 IN1 和 OUT 按位作逻辑异或运算,OUT 输出结果字逻辑运算指
25、令INVW OUT 将字 OUT 按位取反,OUT 输出结果IN1,IN2,OUT:VW,IW,QW,MW,SW,SMW,LW,T,C,AC,*VD,*AC,*LDIN1 和 IN2 还可以是 AIW 和常数ANDD IN1,OUT将双字 IN1 和 OUT 按位作逻辑与运算,OUT 输出结果ORD IN1,OUT将双字 IN1 和 OUT 按位作逻辑或运算,OUT 输出结果XORD IN1,OUT将双字 IN1 和 OUT 按位作逻辑异或运算,OUT 输出结果双字逻辑运算指令INVD OUT 将双字 OUT 按位取反,OUT输出结果IN1,IN2,OUT:VD,ID,QD,MD,SD,SMD
26、,LD,AC,*VD,*AC,*LDIN1 和 IN2 还可以是 HC 和常数S7-200PLC 数据传送指令 数据传送指令如表 4-22 所示。表 4-22 数据传送指令名称指令格式(语句表) 功能 操作数MOVB IN,OUTIN,OUT:VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LDIN 还可以是常数MOVW IN,OUTIN,OUT:VW,IW,QW,MW,SW,SMW,LW,T,C,AC,*VD,*AC,*LDIN 还可以是 AIW 和常数OUT 还可以是 AQWMOVD IN,OUTIN,OUT:VD,ID,QD,MD,SD,SMD,LD,AC,*VD,*
27、AC,*LDIN 还可以是 HC,常数,&VB,&IB,&QB,&MB,&T,&CMOVR IN,OUT将 IN 的内容拷贝到 OUT 中IN 和 OUT 的数据类型应相同,可分别为字,字节,双字,实数IN,OUT:VD,ID,QD,MD,SD,SMD,LD,AC,*VD,*AC,*LDIN 还可以是常数BIR IN,OUT立即读取输入 IN 的值,将结果输出到 OUTIN:IBOUT:VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD单一传送指令BIW IN,OUT立即将 IN 单元的值写到 OUT 所指的物理输出区IN:VB,IB,QB,MB,SB,SMB,LB,AC
28、,*VD,*AC,*LD 和常数OUT:QBBMB IN,OUT,N将从 IN 开始的连续 N 个字节数据拷贝到从 OUT 开始的数据块N 的有效范围是 1255IN,OUT:VB,IB,QB,MB,SB,SMB,LB,*VD,*AC,*LDN:VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD 和常数BMW IN,OUT,N将从 IN 开始的连续 N 个字数据拷贝到从 OUT 开始的数据块N 的有效范围是 1255IN,OUT:VW,IW,QW,MW,SW,SMW,LW,T,C,*VD,*AC,*LDIN 还可以是 AIWOUT 还可以是 AQWN:VB,IB,QB,M
29、B,SB,SMB,LB,AC,*VD,*AC,*LD 和常数块传送指令BMD IN,OUT,N将从 IN 开始的连续 N 个双字数据拷贝到从 OUT 开始的数据块N 的有效范围是 1255IN,OUT:VD,ID,QD,MD,SD,SMD,LD, *VD,*AC,*LDN:VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD 和常数S7-200PLC 移位与循环移位指令移位与循环移位指令如表 4-23 所示。表 4-23 移位与循环移位指令名称 指令格式(语句表) 功能 操作数SRB OUT,N 将字节 OUT 右移 N 位,最左边的位依次用 0填充SLB OUT,N 将字
30、节 OUT 左移 N 位,最右边的位依次用 0填充RRB OUT,N 将字节 OUT 循环右移 N 位,从最右边移出的位送到 OUT 的最左位字节移位指令RLB OUT,N 将字节 OUT 循环左移 N 位,从最左边移出的位送到 OUT 的最右位IN,OUT,N:VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LDIN 和 N 还可以是常数SRW OUT,N 将字 OUT 右移 N 位,最左边的位依次用 0 填充SLW OUT,N 将字 OUT 左移 N 位,最右边的位依次用 0 填充RRW OUT,N 将字 OUT 循环右移 N 位,从最右边移出的位送到 OUT 的最左位
31、字移位指令RLW OUT,N 将字 OUT 循环左移 N 位,从最左边移出的位送到 OUT 的最右位IN,OUT:VW,IW,QW,MW,SW,SMW,LW,T,C,AC,*VD,*AC,*LDIN 还可以是 AIW 和常数N:VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD,常数SRD OUT,N 将双字 OUT 右移 N 位,最左边的位依次用 0填充SLD OUT,N 将双字 OUT 左移 N 位,最右边的位依次用 0填充RRD OUT,N 将双字 OUT 循环右移 N 位,从最右边移出的位送到 OUT 的最左位双字移位指令RLD OUT,N 将双字 OUT 循环左
32、移 N 位,从最左边移出的位送到 OUT 的最右位IN,OUT:VD,ID,QD,MD,SD,SMD,LD,AC,*VD,*AC,*LDIN 还可以是 HC 和常数N:VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD,常数位移位寄存器指令SHRB DATA,S_BIT,N将 DATA 的值(位型)移入移位寄存器;S_BIT 指定移位寄存器的最低位,N 指定移位寄存器的长度(正向移位=N,反向移位=-N)DATA,S_BIT:I,Q,M,SM,T,C,V,S,LN:VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD,常数S7-200PLC 交换和填充
33、指令交换和填充指令如表 4-24 所示。表 4-24 交换和填充指令名称 指令格式(语句表) 功能 操作数换字节指令 SWAP IN将输入字 IN 的高位字节与低位字节的内容交换,结果放回 IN 中IN:VW,IW,QW,MW,SW,SMW,LW,T,C,AC,*VD,*AC,*LD填充指令FILL IN,OUT,N用输入字 IN 填充从 OUT 开始的 N个字存储单元N 的范围为 1255IN,OUT:VW,IW,QW,MW,SW,SMW,LW,T,C,AC,*VD,*AC,*LDIN 还可以是 AIW 和常数OUT 还可以是 AQWN:VB,IB,QB,MB,SB,SMB,LB,AC,*V
34、D,*AC,*LD,常数S7-200PLC 表操作指令表操作指令如表 4-25 所示。表 4-25 表操作指令名称指令格式(语句表) 功能 操作数表存数指令ATT DATA,TABLE将一个字型数据 DATA 添加到表 TABLE 的末尾。EC值加 1DATA,TABLE:VW,IW,QW,MW,SW,SMW,LW,T,C,AC,*VD,*AC,*LDDATA 还可以是 AIW,AC和常数FIFO TABLE,DATA将表 TABLE 的第一个字型数据删除,并将它送到DATA 指定的单元。表中其余的数据项都向前移动一个位置,同时实际填表数 EC 值减 1表取数指令LIFO TABLE,DATA
35、将表 TABLE 的最后一个字型数据删除,并将它送到DATA 指定的单元。剩余数据位置保持不变,同时实际填表数 EC 值减 1DATA,TABLE:VW,IW,QW,MW,SW,SMW,LW,T,C, *VD,*AC,*LDDATA 还可以是 AQW 和AC表查找指令FND= TBL,PTN,INDEXFND,)的数据项如果找到一个符合条件的数据项,则 INDEX 指明该数据项在表中的位置。如果一个也找不到,则INDEX 的值等于数据表的长度。为了搜索下一个符合的值,在再次使用该指令之前,必须先将 INDEX加 1TBL:VW,IW,QW,MW,SMW,LW,T,C, *VD,*AC,*LDP
36、TN,INDEX:VW,IW,QW,MW,SW,SMW,LW,T,C,AC, *VD,*AC,*LDPTN 还可以是 AIW 和 ACS7-200PLC 数据转换指令数据转换指令如表 4-26 所示。表 4-26 数据转换指令名称 指令格 式 功能 操作数(语句表)BTI IN,OUT将字节输入数据 IN 转换成整数类型,结果送到OUT,无符号扩展IN:VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD,常数OUT:VW,IW,QW,MW,SW,SMW,LW,T,C,AC,*VD,*AC,*LDITB IN,OUT将整数输入数据 IN 转换成一个字节,结果送到OUT。输入
37、数据超出字节范围(0255)则产生溢出IN:VW,IW,QW,MW,SW,SMW,LW,T,C,AIW,AC,*VD,*AC,*LD,常数OUT:VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LDDTI IN,OUT将双整数输入数据 IN 转换成整数,结果送到OUT。IN:VD,ID,QD,MD,SD,SMD,LD,HC,AC,*VD,*AC,*LD,常数OUT:VW,IW,QW,MW,SW,SMW,LW,T,C,AC,*VD,*AC,*LDITD IN,OUT将整数输入数据 IN 转换成双整数(符号进行扩展),结果送到 OUTIN:VW,IW,QW,MW,SW,SMW,
38、LW,T,C,AIW,AC,*VD,*AC,*LD,常数OUT:VD,ID,QD,MD,SD,SMD,LD,AC,*VD,*AC,*LDROUND IN,OUT将实数输入数据 IN 转换成双整数,小数部分四舍五入,结果送到 OUTTRUNC IN,OUT将实数输入数据 IN 转换成双整数,小数部分直接舍去,结果送到 OUTIN,OUT:VD,ID,QD,MD,SD,SMD,LD,AC,*VD,*AC,*LDIN 还可以是常数在 ROUND 指令中 IN还可以是 HCDTR IN,OUT 将双整数输入数据 IN 转换成实数,结果送到 OUTIN,OUT:VD,ID,QD,MD,SD,SMD,LD
39、,AC,*VD,*AC,*LDIN 还可以是 HC 和常数BCDI OUT将 BCD 码输入数据 IN 转换成整数,结果送到OUT。IN 的范围为 09999数据类型转换指令IBCD 将整数输入数据 IN 转换成 BCD 码,结果送到IN,OUT:VW,IW,QW,MW,SW,SMW,LW,T,C,AC,*VD,*AC,*LDOUT OUT。IN 的范围为 09999 IN 还可以是 AIW 和常数AC 和常数ENCO IN,OUT将字节输入数据 IN 的最低有效位(值为 1 的位)的位号输出到 OUT 指定的字节单元的低 4 位IN:VW,IW,QW,MW,SW,SMW,LW,T,C,AIW
40、,AC,*VD,*AC,*LD,常数OUT:VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD编码译码指令DECO IN,OUT根据字节输入数据 IN 的低 4 位所表示的位号将OUT 所指定的字单元的相应位置 1,其它位置 0IN:VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD,常数IN:VW,IW,QW,MW,SW,SMW,LW,T,C,AQW,AC,*VD,*AC,*LD段码指令 SEG IN,OUT 根据字节输入数据 IN 的低 4 位有效数字产生相应的七段码,结果输出到 OUT,OUT 的最高位恒为 0IN,OUT:VB,IB,QB,M
41、B,SB,SMB,LB,AC,*VD,*AC,*LDIN 还可以是常数字符串转换指令ATH IN,OUT,LEN把从 IN 开始的长度为 LEN 的 ASC码字符串转换成 16 进制数,并存放在以 OUT 为首地址的存储区中。合法的 ASC码字符的 16 进制值在30H39H,41H46H 之间,字符串的最大长度为255 个字符IN,OUT,LEN:VB,IB,QB,MB,SB,SMB,LB,*VD,*AC,*LDLEN 还可以是 AC 和常数S7-200PLC 特殊指令特殊指令如表 4-27 所示。PLC 中一些实现特殊功能的硬件需要通过特殊指令来使用,可实现特定的复杂的控制目的,同时程序的
42、编制非常简单。表 4-27 特殊指令名称指令格式(语句表)功能 操作数ATCH INT,EVNT把一个中断事件(EVNT)和一个中断程序联系起来,并允许该中断事件DTCH EVNT截断一个中断事件和所有中断程序的联系,并禁止该中断事件INT:常数EVNT:常数(CPU221/222:012,1923,2733;CPU224:023,2733;CPU226:033)ENI 全局地允许所有被连接的中断事件DISI 全局地关闭所有被连接的中断事件CRETI 根据逻辑操作的条件从中断程序中返回中断指令RETI 位于中断程序结束,是必选部分,程序编译时软件自动在程序结尾加入该指令无通信指令 NETR 初
43、始化通讯操作,通过指令端口(PORT) TBL:VB,MB,*VD,*AC,*LTBL,PORT从远程设备上接收数据并形成表(TBL)。可以从远程站点读最多 16 个字节的信息NETW TBL,PORT初始化通讯操作,通过指定端口(PORT)向远程设备写表(TBL)中的数据,可以向远程站点写最多 16 个字节的信息DPORT:常数XMT TBL,PORT用于自由端口模式。指定激活发送数据缓冲区(TBL)中的数据,数据缓冲区的第一个数据指明了要发送的字节数,PORT 指定用于发送的端口RCV TBL,PORT激活初始化或结束接收信息的服务。通过指定端口(PORT)接收的信息存储于数据缓冲区(TB
44、L),数据缓冲区的第一个数据指明了接收的字节数TBL:VB,IB,QB,MB,SB,SMB,*VD,*AC,*LDPORT:常数(CPU221/222/224 为0;CPU226 为 0 或 1)GPA ADDR,PORT读取 PORT 指定的 CPU 口的站地址,将数值放入 ADDR 指定的地址中SPA ADDR,PORT将 CPU 口的站地址(PORT)设置为 ADDR 指定的数值ADDR:VB,IB,QB,MB,SB,SMB,LB,AC,*VD,*AC,*LD在 SPA 指令中 ADDR 还可以是常数PORT:常数TODR T 读当前时间和日期并把它装入一个 8 字节的缓冲区(起始地址为
45、 T)时钟指令TODW T 将包含当前时间和日期的一个 8 字节的缓冲区(起始地址是 T)装入时钟T:VB,IB,QB,MB,SB,SMB,LB,*VD,*AC,*LDHDEF HSC,MODE为指定的高速计数器分配一种工作模式。每个高速计数器使用之前必须使用 HDEF 指令,且只能使用一次HSC:常数(05)MODE:常数(011)高速计数器指令HSC N根据高速计数器特殊存储器位的状态,按照 HDEF 指令指定的工作模式,设置和控制高速计数器。N 指定了高速计数器号N:常数(05)高速脉冲输出指令 PLS Q检测用户程序设置的特殊存储器位,激活由控制位定义的脉冲操作,从 Q0.0 或Q0.
46、1 输出高速脉冲可用于激活高速脉冲串输出(PTO)或宽度可调脉冲输出(PWM)Q:常数(0 或 1)PID 回路指令PID TBL,LOOP运用回路表中的输入和组态信息,进行PID 运算。要执行该指令,逻辑堆栈顶(TOS)必须为 ON 状态。TBL 指定回路表的起始地址,LOOP 指定控制回路号回路表包含 9 个用来控制和监视 PID 运算的参数:过程变量当前值(PV n ),过程变量前值(PV n-1 ),给定值(SP n ),输出值(M n ),增益(Kc),采样时间(Ts),积分时间(Ti),微分时间(Td)和积分项前值(MX)为使 PID 计算是以所要求的采样时间进行,应在定时中断执行中断服务程序或在由定时器控制的主程序中完成,其中定时时间必须填入回路表中,以作为 PID 指令的一TBL:VBLOOP个输入参数