
SIMATIC S7-1200指令讲解(内部培训教程).pdf
88页内部培训内部培训 名称:SIMATIC S7-1200SIMATIC S7-1200指令讲解(内部培训教程)指令讲解(内部培训教程)所属部门:XX 汇报人:xxX2.1.1数据处理指令数据处理指令.1.1.1.1比较指令比较指令31.1.比较指令比较指令2.2.范围内与范围外比较指令范围内与范围外比较指令例例-1-1用接通延时定时器和比较指令组成占空比可调的脉冲发生器用接通延时定时器和比较指令组成占空比可调的脉冲发生器53.OK3.OK与与NOT_OKNOT_OK指令指令6.1.2.1.2 使能输入和使能输出使能输入和使能输出1.BCD1.BCD码:码:BCD(Binary-coded Decimal)BCD(Binary-coded Decimal)是二进制编码是二进制编码的十进制数的缩写,的十进制数的缩写,BCDBCD码用码用4 4位二进制数表示一位十位二进制数表示一位十进制数进制数,每一位每一位BCDBCD码允许的数值范围为码允许的数值范围为2#00002#00002#10012#1001;对应于十进制数;对应于十进制数0-90-94 4位二进制数共有位二进制数共有1616种种组合,有组合,有6 6种组合(种组合(2#10102#1010 2#1111)2#1111)没有在没有在BCDBCD码中码中使用。
使用BCDBCD码的最高位二进制数用来表示符号、负数为,码的最高位二进制数用来表示符号、负数为,正数为正数为0 0;一般令负数和正数的最高;一般令负数和正数的最高4 4位二进制数分别位二进制数分别为为11111111和和000000001616位位BCDBCD码的范围为码的范围为999999十十999999、3232位位BCDBCD码的范围为码的范围为-999999-999999 +9999999+9999999862-8627拨码开拨码开关关译码芯译码芯片片PLCPLC的四个输的四个输出点出点后接一个译码后接一个译码芯片芯片用用PLCPLC的输入的输入点读取拨码开点读取拨码开关的输出关的输出82.EN2.EN与与ENOENO令令MW32=F983MW32=F983,则输出,则输出MW34=-983MW34=-983下列指令使用下列指令使用EN/ENOEN/ENO:数学运算指令、传送与转换:数学运算指令、传送与转换指令、位移与循环指令、字逻辑运算指令等指令、位移与循环指令、字逻辑运算指令等下列指令不使用下列指令不使用EN/ENOEN/ENO:位逻辑指令、比较指令、:位逻辑指令、比较指令、计数器指令、定时器指令和程序控制指令。
计数器指令、定时器指令和程序控制指令9.1.3.1.3数据转换指数据转换指令令1.CONV1.CONV指令指令2.2.浮点数转换为双整浮点数转换为双整数指令数指令3.SCAL_X3.SCAL_X指令指令OUT=VALUE(MAX-MIN)+MINOUT=VALUE(MAX-MIN)+MIN例如:如果例如:如果MAX=1000MAX=1000,MIN=200MIN=200,则,则0.4200.420;1.2 11601.2 11604.NORM_X4.NORM_X指令指令OUT=(VALUE-MINOUT=(VALUE-MIN)/(MAX-MIN)/(MAX-MIN)10.1.4.1.4数据传送指数据传送指令令1.MOV1.MOV指令指令输入输出数据类型可以不一样,如:输入输出数据类型可以不一样,如:MB0MW2MB0MW2低字节中;低字节中;MW4MB6MW4MB6,但是如果,但是如果MW4MW4超过超过2 2,则只传送低字,则只传送低字节中的数值节中的数值2.SWAP2.SWAP指令指令 IN IN和和OUTOUT为数据类型为数据类型WordWord时,时,SWAPSWAP指令交换输入指令交换输入ININ的高、低字节后,保存到的高、低字节后,保存到OUTOUT指定的地址。
指定的地址ININ和和OUTOUT为数据类型为数据类型DwordDword时,交换个字节中数时,交换个字节中数据的顺序,交换后保存到据的顺序,交换后保存到OUTOUT指定的地址如:指定的地址如:16#AABBCCDD16#DDCCBBAA16#AABBCCDD16#DDCCBBAA113.3.全局数据块和数组全局数据块和数组数组由相同数据类型的多个元素组成,数组元素的数组由相同数据类型的多个元素组成,数组元素的数据类型可以是所有的基本数据类型数据类型可以是所有的基本数据类型全局数据全局数据块的生成方法:演示块的生成方法:演示124.FILL_BLK4.FILL_BLK与与UFILL_BLKUFILL_BLK指令指令FILL BLKFILL BLK指令将输入参数取设置的值填充到输出参指令将输入参数取设置的值填充到输出参数数OUTOUT指定起始地址的目标指定起始地址的目标数据区ININ和和OUTOUT必须是必须是D D、L L(数据块或块的局部数据)中的(数据块或块的局部数据)中的数组元素数组元素,ININ还可以还可以是常数COUNTCOUNT为填充的数组元素为填充的数组元素的个数,数据类型为的个数,数据类型为DIntDInt或常数。
或常数MOVE_BLK.MOVE_BLK与与UMOVE_BLKUMOVE_BLK指令指令6.6.块填充和快传送指令的实验(演示)块填充和快传送指令的实验(演示)13.1.1.位移与循环位移指令位移与循环位移指令1.1.位移指令位移指令移位指令移位指令SHRSHR和和SHLSHL将输入参数将输入参数ININ指定的存储单元的指定的存储单元的整个内容逐位右移或左移若干位,移位的位数用输整个内容逐位右移或左移若干位,移位的位数用输入参数入参数N N来定义,移位的结果保存在输出参数来定义,移位的结果保存在输出参数OUTOUT指指定的地址定的地址无符号数移位和有符号数左移后空出来的位用无符号数移位和有符号数左移后空出来的位用0 0填填充有符号数右移后空出来的位用符号位(原来的充有符号数右移后空出来的位用符号位(原来的最高位)填充,正数的符号位为最高位)填充,正数的符号位为0.0.节负数的符号位节负数的符号位为为1 1142.2.循环移位指令循环移位指令循环移位指令循环移位指令RORROR和和ROLROL将输入参数将输入参数ININ指定的存储单指定的存储单元的整个内容逐位循环右移或循环左移若干位,即元的整个内容逐位循环右移或循环左移若干位,即移出来的位又送回存储单元另一端空出来的位,原移出来的位又送回存储单元另一端空出来的位,原始的位不会丢失。
始的位不会丢失N N为移位的位数,移位的结果保存为移位的位数,移位的结果保存在输出参数在输出参数OUTOUT指定的地址指定的地址153.3.使用循环移位指令的彩灯控制器使用循环移位指令的彩灯控制器16.2.2 数学运算指令数学运算指令.2.1.2.1数学运算指令数学运算指令数学运算包括数学运算指令、浮点数函数运算指令、逻数学运算包括数学运算指令、浮点数函数运算指令、逻辑运算指令辑运算指令1 1四则运算指令四则运算指令17 数学运算指令中的数学运算指令中的ADDADD、SUBSUB、MULMUL和和DIVDIV分别是加、分别是加、减、乘、除指令、它们执行的操作数的数据类型可选减、乘、除指令、它们执行的操作数的数据类型可选SInt,Int,DInt,USInt,UInt,UDIntSInt,Int,DInt,USInt,UInt,UDInt和和Real,IN1Real,IN1和和IN2IN2可以是常数可以是常数IN1IN1、IN2IN2和和OUTOUT的数据类型应该相同的数据类型应该相同18【例】压力变送器的量程为【例】压力变送器的量程为0 010MPa10MPa,输出信号为,输出信号为0 010V10V,被,被CPUCPU集成的模拟量输入的通道集成的模拟量输入的通道0 0(地址为(地址为IW64)IW64)转换为转换为0 02764827648的数字。
假设转换后的数字为的数字假设转换后的数字为N,N,试求试求以以kPakPa为单位的压力值为单位的压力值解:解:0 010MPa10MPa(0 010000kPa10000kPa)对应于转换后的数字)对应于转换后的数字0 02764827648,转换公式为,转换公式为 P=P=(1000010000N)/27648(kPa)N)/27648(kPa)注意:在运算时一定要先乘后除,否则会损失原始数注意:在运算时一定要先乘后除,否则会损失原始数据的精度据的精度20【例例】使用浮点数运算计算上例以使用浮点数运算计算上例以kPakPa为单位的压力值为单位的压力值将上例改写为:将上例改写为:p p=(10000 x N10000 x N)2764827648=0.361690 X N 0.361690 X N(kPa)(kPa)212 2其它整数数学运算指令其它整数数学运算指令(1 1)MODMOD指令指令 用用MODMOD指令来求除法的余数指令来求除法的余数2 2)NEGNEG指令指令 NEG(negation)NEG(negation)将输入将输入ININ的值的符号取反后,保存的值的符号取反后,保存在输出在输出OUTOUT中,中,ININ和和OUTOUT的数据类型可以是的数据类型可以是SInt,Int,SInt,Int,DIntDInt和和Real,Real,输入输入ININ还可以是常数。
还可以是常数3 3)INCINC与与DECDEC指令指令 执行指令执行指令INCINC与与DECDEC时,参数时,参数IN/OUTIN/OUT的值分别被加的值分别被加1 1和和减减1 1IN/OUTIN/OUT的数据类型可选的数据类型可选SInt,USInt,Int,UInt,SInt,USInt,Int,UInt,DIntDInt和和UDIntUDInt(有符号或无符号的整数)有符号或无符号的整数)22(4 4)绝对值指令)绝对值指令ABSABS ABSABS指令用来求输入指令用来求输入ININ中的有符号整数中的有符号整数(SInt,Int(SInt,Int宁宁DIntDInt或实数(或实数(Real)Real)的绝对值,将结果保存在输出的绝对值,将结果保存在输出OUTOUT中ININ和和OUTOUT的数据类型应的数据类型应相同)MIN)MIN与与MAXMAX指令指令 MIN(minimum)MIN(minimum)指令比较输入指令比较输入IN1IN1和和IN2IN2的值,将其中较的值,将其中较小的值送给输出小的值送给输出OUTOUTMAX(maximum)MAX(maximum)指令比较输入指令比较输入IN1IN1和和IN2IN2的值,将其中较的值,将其中较大的值送给输出大的值送给输出OUTOUT。
INI INI和和IN2IN2的数据类型相同才能执行指定的操作的数据类型相同才能执行指定的操作23(6 6)LIMITLIMIT指令指令 LIMITLIMIT指令检查输入指令检查输入ININ的值是否在参数的值是否在参数MINMIN和和MAXMAX指定指定的范围内,如果的范围内,如果ININ的值没有超出该范围,将它直接保存的值没有超出该范围,将它直接保存在在OUTOUT指定的地址中如果指定的地址中如果ININ的值小于的值小于MINMIN的值或大于的值或大于MAXMAX的值,将的值,将MINMIN或或MAXMAX的值送给输出的值送给输出OUTOUT243.3.浮点数函数运算指令浮点数函数运算指令 浮点数(实数)数学运算浮点数(实数)数学运算指令的指令的操作数操作数ININ和和OUTOUT的数据类型的数据类型为为RealReal浮点数自然指数指令浮点数自然指数指令EXPEXP和浮点数自然对数指令和浮点数自然对数指令LNLN中的指数中的指数和对数的底和对数的底数为数为2 2.7182871828浮点数开平方浮点。
