S7-200PLC的基本功能指令张泽礼概述•基本功能指令是PLC多位二进制数同时操作的指令。•按照操作数据的位数有:字节操作指令,字操作指令,双字操作指令之分。•按照操作数据类型分为:字节数据(含ASCII)码,整数I(有符号字数据),实数R(双字浮点数据)。•按照操作的性质分为:传送指令、转换指令、整数运算指令、实数运算指令(包括了函数运算指令)、逻辑运算指令、控制指令、移位及循环移位指令等。•按照上述说法,比较指令是介于功能指令和开关指令中间的指令,其运算形式是多位数据的比较,其结果是开关的形式出现。一PLC的数据类型二整数运算指令三逻辑运算指令四实数运算指令五移位及循环移位指令六转换指令七表功能指令八控制指令主要内容•1、位数据及开关量•2、字节数据及存储元件编址•3、字数据及存储元件编址•4、双字数据存储元件编址•5、数据类型1、位数据及开关量•一个开关只有两种状态,接通与断开。这是逻辑状态,用0和1表示,一般正逻辑规定接通为1,断开为0。•1个开关量也可以表示数字即0和1,这种二进制数据就是位数据。在计算机中的数据是由多位二进制数据组合成的,8位构成一个字节,16位构成一个字。2、字节数据•字节数据由8位二进制数据组成,位的位置决定其权重•字节数据(byte)的表示方法如:IB0由I0.7、I0.6、I0.5、I0.4、I0.3、I0.2、I0.1、I0.0构成,其中I0.0是最低位,I0.7是最高位,不同位置代表不同的权重。•这样可以表示256种状态,表示数据0~255。•字节数据可以用16进制表示或者10进制表示。16进制表示数值在16#00~16#FF之间。•两种进制可以相互转换:位置I0.7I0.6I0.5I0.4I0.3I0.2I0.1I0.0权重1286432168421PLC的字节编址方法•字节编址用第一个字母表示寄存器的类型,第二个字母B表示字节编址。例如IB0、QB0、MB0、VB0、SMB0等。•有IB0~IB15输入映像寄存器,共计256点。•有QB0~QB15共16个输出映像寄存器,共计256点,这就决定可以扩展的I/O数目。•同样有MB0~MB31共32个共计256个中间继电器。VB0~VB2047(CPU221/222)或者VB0~VB5119(CPU224/226)变量存储单元。3、字数据及•字数据(word)是计算机一次能够处理二进制数据的位数(等于计算机的字长),一般是8的倍数。例如奔腾4P4C以前PC为32位机,以后为64位机。PLC的CPU的字长是16位的,因此其字数据位16位二进制数据。•字数据可以表示65536中状态,可以表示的无符号整数0~65535,可以表示有符号整数为-32768~+32767之间。字编址•字数据存储一般占两个字节,例如IW0由IB0和IB1组成,其中IB0是高8位,IB1是地8位。IW1是由IB1和IB2构成,其中I2.0是最低位,I1.7是最高位或符号位。•西门子PLC中的定时器和计数器的字长是16位的字数据,但是是有符号整数,设定值在1~32767之间。使用CTUD加减计数器就可以出现负值。4、双字数据•双字数据(doubleword)用D表示,是32位数据,可以表示状态数232=4294967296(约43亿)种。表示无符号数在0~4294967295之间,表示的有符号数-147483648~+214483647之间。•双字数据在存储单元中由四个字节组成。例如ID0由IB0~IB3组成,其中I0.7是最高位,I3.0是最低位。同样可知QD0、MD0等也是由四个字节的存储单元构成(QD0、ID0需要增加EM223I/O扩展模块)。•双字数据有双字有符号整数和实数两种。双字存储元件编址•地址分配情况:以VD100为例,由4个存储单元组成VB100是高8位,VB103是低8位,VB101、VB102是中间位。•实数也是双字数据,只是带有小数,因此编址与双字整数相同。5、数据类型•整数:整数是没有小数的数据,分为有符号整数和无符号整数。无符号整数的最高位表示数据的最高位;有符号整数的最高位是符号位,0表示整数1表示负数。•实数(浮点数float):实数是有符号带小数的数据,数据长度为4个字节,在传送指令中使用MOV_R指令,可以直接输入正负小数(7位)数据类型编程练习•使用开关指令的抢答器设计和使用功能指令的抢答器设计。•使用功能指令编写程序比开关指令简单的多。二整数运算指令•1、整数与双整数加减指令•2、整数乘除指令LAD功能IN1+IN2=OUTIN1-IN2=OUTIN1+IN2=OUTIN1-IN2=OUT1.整数与双整数加减法指令(INT/DINT)I是16位有符号数,DI是32位有符号数。ADD_I是将两个16位有符号整数相加后产生16位有符号整数,结果大于32767时产生溢出SM1.1置位。SUB_DI是双整数减法运算,结果为双整数。如果结果为0,则SM1.0置位。•加法运算仿真,ADD_I是两个16位二进制数相加,结果也是16位二进制数。•有符号16位数值范围为•-32768~+32767之间。•如果结果超过32787则产生进位特殊功能及电器SM1.1=1加法指令实例用加法指令实现单按钮控制•说明:进入运行状态MW0初值为16#0000,按一下I0.0后执行一次加法指令MW0=1000,在执行一次后又变为MW0=0000,但是进位使得SM1.1=1。•重复操作实现单按钮控制。•也可以用特殊功能继电器SM1.1驱动Q0.0。LAD功能IN1*IN2=OUTIN1/IN2=OUTIN1*IN2=OUTIN1/IN2=OUTIN1*IN2=OUTIN1/IN2=OUT2.整数乘除法指令整数乘法指令MUL_I将两个16位有符号数相乘,产生16位积从OUT指定单元输出。MUL则将两个16位有符号整数相乘产生32位积从OUT指定单元输出。双整数乘法则将两个32位数相乘后产生32位积从OUT指定单元输出。除法指令亦然,其中DIV指令是将两个16位有符号数相除,结果从一个32位输出,其中高16位为余数,低16位为商。举例:用乘法运算实现单按钮控制说明:MW0由MB0和MB1两个字节组成,MB1是低字节,MB0是高字节,M0.7是最高位。当初始化MW0=16#5555时折合#01010101,逐次乘2,则M0.7就会出现高低电平的变化。I0.0通断次数16#MW0值2#MW0值M0.7的值初始值0次5555010101010101010101AAAA1010101010101010125554010101010101010003AAA81010101010101000145550010101010101000005AAA01010101010100000165540010101010100000007AA801010101010000000185500010101010000000009AA00101010100000000011054000101010000000000011A8101010000000000011250000101000000000000013A00010100000000000001144000/5555010000000000000003、递增及递减指令•递增指令每执行一次存储单元的内容加1,可以用于控制循环次数,也可以用于加法计数运算。按存储单元长度分为:字节增量指令,字增量指令,双字增量指令三种。•递减指令每执行一次存储单元的内容减1,可以用于控制循环次数,也可以用于减法计数运算。按存储单元长度分为:字节减量指令,字减量指令,双字减量指令三种。ENENOINOUTINC_B原理:用于使能输入有效时,输入数IN加1或减1,得到的结果通过OUT指定的存储器单元输出。举例:食品加工厂对饮料生产线上的盒装饮料进行计数,每24盒为一箱,要求能记录生产的箱数。LDI0.0//增脉冲输入端LDC30//复位输入端//循环计数CTUC30,+24//增计数指令//设定脉冲数为24LDC30//装入计数器触点//作为双字增的//脉冲输入INCDVD100//双字增指令//增减指令的应用增/减量指令的应用•用增量指令实现单按钮控制起保停控制。•每当I0.0通断一次,M0.0奇偶变化一次,从而使得Q0.0状态随之反转一次。三、实数运算指令•实数运算指令一般用于模拟量的运算处理,如PID控制等。常用的实数运算分为以下几种:•1、实数加减运算•2、实数乘除运算•3、函数运算1.实数加减乘除指令实数可以理解为带符号的小数,因为是浮点数,小数的点的位置是任意的。注意的是实数是双字数,其地址单元必须是四字节。将两个实数(32位)相加,产生32位结果从OUT输出。MOVDIN1,OUT+RIN2,OUT将两个实数(32位)相减,产生32位结果从OUT输出。MOVDIN1,OUT-RIN2,OUT2、实数乘除运算两个实数IN1和IN2相乘,产生的结果32的积从OUT输出。如果产生结果溢出SM1.1置1。MOVDIN1,OUT*RIN2,OUT两个实数IN1和IN2相乘,产生的结果32的积从OUT输出。如果产生结果溢出SM1.1置1。MOVDIN1,OUT*RIN2,OUT函数运算的应用常常与模拟量模块相关,例如测量电路的电压有效值,电流的有效值,电功率、功率因数及电能(1)平方根(SQRT)指令(2)自然对数(LN)指令(3)自然指数(EXP)指令(4)三角函数指令(SIN、COS、TAN)3.数学函数变换指令注意:SINCOSTAN的操作数为弧度值。3、函数指令•注意当使用三角函数运算指令时,输入角度为弧度值。使用函数运算指令实现电压电流有效值的测量•假设交流电压从AIW0输入,交流电流从AIW2输入(均应设置为双极性)。•通过PLC内部运行后将电压、电流的有效值、电功率、功率因数及消耗电能从PLC的文本显示器输出,构成组合参数仪表。四、逻辑运算指令•1.逻辑与指令(WAND)•2.逻辑或运算(WOR)•3.逻辑异或指令(WXOR)•4.取反指令(INV)1、与逻辑运算•将参与运算的多位二进制数逐位进行与运算,全1出1,有0出0。例如:16#FF与16#0F进行与逻辑运算后的结果是16#0F。•与逻辑运算分为字节与逻辑运算、字与逻辑运算和双字与逻辑运算三种情况。逻辑等效2、或逻辑运算•将参与运算的多位二进制数逐位进行或运算,有1出1,全0出0。例如:16#F0与16#0F进行与逻辑运算后的结果是16#FF。•或逻辑运算分为字节或逻辑运算、字或逻辑运算和双字或逻辑运算三种情况。逻辑等效3异或逻辑•将参与运算的多位二进制数逐位进行异或运算,同则出0,异则出1。例如:16#FF与16#FF进行与逻辑运算后的结果是16#0。•异或逻辑运算分为字节异或逻辑运算、字异或逻辑运算和双字异或逻辑运算三种情况。逻辑等效4取反•将参与运算的多位二进制数逐位进行取反运算,例如:16#FF进行取反逻辑运算后的结果是16#0。•取反逻辑运算分为字节取反、字取反和双字取反逻辑运算三种情况。逻辑等效•位逻辑取反:•功能指令取反应用举例:使用取反指令实现单按钮起保停控制•原理:PLC启动时MB0=16#0,通断一次I0.0后MB0=16#FF,再通断一次又恢复到16#0。•可以用M0.0~M0.7中任意位驱动Q0.0。五、数据传送指令传送指令的作用是从源地址读出数据后,将源地址的数据复制到目标地址当中,源地址中内容不变,目标地址中的原内容被覆盖。1.单数传送指令:MOV分为:字节传送、字传送、双字传送2.块传送(数据组):BLKMOV分为:字节块传送、字块传送、双字块传送1、单一传送MOV指令可用用来传送单个数据,数据类型可以是字节、字、双字、实数。2.块传送BLKMOV指令可用来进行一次多个(最多255个)数据的传送,数据块类型可以是字节块、字块、双字块。N的范围为1至255应用举例:多路抢答器设计•说明:•当没有人抢答时,M0.0常闭触点接通,读取输入端口