1.整数算术运算指令
S7-200的整数算术运算分为加法运算、减法运算、乘法运算和除法运算,其中每种运算方式又有整数型和双整数型两种。
(1)整数加(ADD_I)
当允许输入端EN为高电平时,输入端IN1和IN2中的整数相加,结果送入OUT中。IN1和IN2中的数可以是常数。整数加的表达式是:IN1+IN2=OUT。整数加(ADD_I)指令和参数见表4-32。
表4-32 整数加(ADD_I)指令和参数
【例4-44】梯形图和指令表如图4-91所示。MW0中的整数为11,MW2中的整数为21,则当I0.0闭合时,整数相加的结果存储在OUT端的MW4中,其结果是多少?
【解】
当I0.0闭合时,激活整数加指令,IN1中的整数存储在MW0中,这个数为11,IN2中的整数存储在MW2中,这个数为21,整数相加的结果存储在OUT端的MW4中的数是32。由于没有超出计算范围,所以Q0.0输出为“1”。假设IN1中的整数为9999,IN2中的整数为30000,则超过整数相加的范围。由于超出计算范围,所以Q0.0输出为“0”。
【关键点】整数相加未超出范围时’当I0.0闭合’则Q0.0输出为高电平’否则Q0.0输出为低电平。
图4-91 整数加(ADD_I)指令应用举例
双整数加(ADD_DI)指令与整数加(ADD_I)类似,只不过其数据类型为双整数,在此不再赘述。
(2)双整数减(SUB_DI)
当允许输入端EN为高电平时,输入端IN1和IN2中的双整数相减,结果送入OUT中。IN1和IN2中的数可以是常数。双整数减的表达式是:IN1-IN2=OUT。双整数减(SUB_DI)指令和参数见表4-33。
表4-33 双整数减(SUB_DI)指令和参数
【例4-45】梯形图和指令表如图4-92所示,IN1中的双整数存储在MD0中,数值为22,IN2中的双整数存储在MD4中,数值为11,当I0.0闭合时,双整数相减的结果存储在OUT端的MD4中,其结果是多少?
【解】
当I0.0闭合时,激活双整数减指令,IN1中的双整数存储在MD0中,假设这个数为22,IN2中的双整数存储在MD4中,假设这个数为11,双整数相减的结果存储在OUT端的MD4中的数是11。由于没有超出计算范围,所以Q0.0输出为“1”。
图4-92 双整数减(SUB_DI)指令应用举例
整数减(SUB_I)指令与双整数减(SUB_DI)类似,只不过其数据类型为整数,在此不再赘述。
(3)整数乘(MUL_I)
当允许输入端EN为高电平时,输入端IN1和IN2中的整数相乘,结果送入OUT中。IN1和IN2中的数可以是常数。整数乘的表达式是:IN1×IN2=OUT。整数乘(MUL_I)指令和参数见表4-34。
表4-34 整数乘(MUL_I)指令和参数
【例4-46】梯形图和指令表如图4-93所示。IN1中的整数存储在MW0中,数值为11,IN2中的整数存储在MW2中,数值为11,当I0.0闭合时,整数相乘的结果存储在OUT端的MW4中,其结果是多少?
【解】
当I0.0闭合时,激活整数乘指令,IN1×IN2=OUT,整数相乘的结果存储在OUT端的MW4中,结果是121。由于没有超出计算范围,所以Q0.0输出为“1”。
图4-93 整数乘(MUL_I)指令应用举例
两个整数相乘得双整数乘指令(MUL),其两个乘数都是整数,乘积为双整数,注意MUL和MUL_I的区别。
双整数乘(MUL_DI)指令与整数乘(MUL_I)类似,只不过双整数乘数据类型为双整数,在此不再赘述。
(4)双整数除(DIV_DI)
当允许输入端EN为高电平时,输入端IN1中的双整数除以IN2中的双整数,结果为双整数,送入OUT中,不保留余数。IN1和IN2中的数可以是常数。双整数除(DIV_DI)指令和参数见表4-35。
表4-35 双整数除(DIV_DI)指令和参数
【例4-47】梯形图和指令表如图4-94所示。IN1中的双整数存储在MD0中,数值为11,IN2中的双整数存储在MD4中,数值为2,当I0.0闭合时,双整数相除的结果存储在OUT端的MD8中,其结果是多少?
【解】
当I0.0闭合时,激活双整数除指令,IN1中的双整数存储在MD0中,数值为11,IN2中的双整数存储在MD4中,数值为2,双整数相除的结果存储在OUT端的MD8中的数是5,不产生余数。由于没有超出计算范围,所以Q0.0输出为“1”。
【关键点】双整数除法不产生余数。
整数除(DIV_I)指令与双整数除(DIV_DI)类似,只不过其数据类型为整数,在此不再赘述。整数相除得商和余数指令(DIV),其除数和被除数都是整数,输出OUT为双整数,其高位是一个16位余数,其低位是一个16位商,注意DIV和DIV_I的区别。
图4-94 双整数除(DIV_DI)指令应用举例
【例4-48】算术运算程序示例,其中开始时AC1中内容为4000,AC0中内容为6000,VD100中内容为200,VW200中内容为41,程序和运行结果如图4-95所示。
【解】
累加器AC0和AC1中可以装入字节、字、双字和实数等数据类型的数据,可见其使用比较灵活。DIV指令的除数和被除数都是整数,而结果为双整数,对于本例除数为4000,被除数41,双整数结果存储在VD202中,其中余数23存储在高位VW202中,商97存储在低位VW204中。
图4-95 程序和运行结果
a)程序b)运行结果
【例4-49】用模拟电位器调节定时器T37的设定值为5~20s,设计此程序。
【解】
CPU 221和CPU 222有一个模拟电位器,其他CPU有2个模拟电位器。CPU将电位器的位置转换为0~255的数值,然后存入SM28和SM29中,分别对应电位器0和电位器1的值。电位器的位置用小螺钉旋具调整。
由于设定时间的范围是5~20s,电位器上对应的数字是0~255,设读出的数字为X,则100ms定时器(单位是0.1ms)的设定值为
(200-50)×X/255+50=150×X/255+50
为了保证精度,要先乘法后除法,梯形图如图4-96所示。
图4-96 梯形图
(5)递增/递减运算指令
在输入端IN1上加1或减1,并将结果置入OUT。递增/递减指令的操作数类型为字节、字和双字。字递增运算指令格式见表4-36。
表4-36 字递增运算指令格式
1)字节递增/字节递减运算(INC_B/DEC_B)。使能端输入有效时,将一个字节的无符号数IN增1/减1,并将结果送至OUT指定的存储器单元输出。
2)双字递增/双字递减运算(INC_DW/DEC_DW)。使能端输入有效时,将双字长的符号数IN增1/减1,并将结果送至OUT指定的存储器单元输出。
【例4-50】递增/递减运算程序如图4-97a所示。初始时AC0中的内容为125,VD100中的内容为128000,试分析运算结果。
图4-97 程序和运行结果
a)程序b)运行结果
【例4-51】设计记录一台设备的运行的时间,当设备运行时,I0.0为1,停止时I0.0为0,测量的小时数存放在VW0中,分钟数存放在VW2,秒数存放在VW4中,当前的秒数显示在数码管上。
【解】
程序如图4-98所示。
图4-98 程序
【例4-52】有一个电炉,加热功率有1000W、2000W和3000W三个档次,电炉有1000W和2000W两种电加热丝。要求用一个按钮选择三个加热档,当按一次按钮时,1000W电阻丝加热,即第一档;当按两次按钮时,2000W电阻丝加热,即第二档;当按三次按钮时,1000W和2000W电阻丝同时加热,即第三档;当按四次按钮时停止加热,请编写程序。
【解】
程序如图4-99所示。(www.xing528.com)
图4-99 程序
2.浮点数运算指令
浮点数函数有浮点数运算函数、三角函数、对数函数、幂运算函数和PID等。浮点数运算函数又分为加法运算、减法运算、乘法运算和除法运算函数。浮点数运算函数见表4-37。
表4-37 浮点数运算函数
分别介绍如下:
①实数加(ADD_R)。当允许输入端EN为高电平时,输入端IN1和IN2中的实数相加,结果送入OUT中。IN1和IN2中的数可以是常数。实数加的表达式是:IN1+IN2=OUT。实数加(ADD_R)指令和参数见表4-38。
表4-38 实数加(ADD_R)指令和参数
用一个例子来说明实数加(ADD_R)指令,梯形图和指令表如图4-100所示。当I0.0闭合时,激活实数加指令,IN1中的实数存储在MD0中,假设这个数为10.1,IN2中的实数存储在MD4中,假设这个数为21.1,实数相加的结果存储在OUT端的MD8中的数是31.2。
图4-100 实数加(ADD_R)指令应用举例
②实数减(SUB_R)、实数乘(MUL_R)和实数除(DIV_R)的使用方法与前面的指令用法类似,在此不再赘述。
③MUL_DI/DIV_DI和MUL_R/DIV_R的输入都是32位,输出的结果也是32位,但前者的输入和输出是双整数,属于双整数运算,而后者输入和输出的是实数,属于浮点运算,简单地说,后者的输入和输出数据中有小数点,而前者没有,后者的运算速度要慢得多。
值得注意的是,乘/除运算对特殊标志位SM1.0(零标志位)、SM1.1(溢出标志位)、SM1.2(负数标志位)、SM1.3(被0除标志位)会产生影响。若SM1.1在乘法运算中被置1,表明结果溢出,则其他标志位状态均置0,无输出。若SM1.3在除法运算中被置1,说明除数为0,则其他标志位状态保持不变,原操作数也不变。
【关键点】浮点数的算术指令的输入端可以是常数’但必须是带有小数点的常数’如5.0’不能为5’否则会出错。
3.转换指令
转换指令是将一种数据格式转换成另外一种格式进行存储。例如,要让一个整型数据和双整型数据进行算术运算,一般要将整型数据转换成双整型数据。STEP 7-Micro/Win的转换指令见表4-39。
表4-39 转换指令
(续)
(1)整数转换成双整数(ITD)
整数转换成双整数指令是将IN端指定的内容以整数的格式读入,然后将其转换为双整数码格式输出到OUT端。整数转换成双整数指令和参数见表4-40。
表4-40 整数转换成双整数指令和参数
【例4-53】梯形图和指令表如图4-101所示。IN中的整数存储在MW0中(用十六进制表示为16#0016),当I0.0闭合时,转换完成后OUT端的MD2中的双整数是多少?
【解】
当I0.0闭合时,激活整数转换成双整数指令,IN中的整数存储在MW0中(用十六进制表示为16#0016),转换完成后OUT端的MD2中的双整数是16#00000016。但要注意,MW2=16#0000,而MW4=16#0016。
图4-101 整数转换成双整数指令应用举例
(2)双整数转换成实数(DTR)
双整数转换成实数指令是将IN端指定的内容以双整数的格式读入,然后将其转换为实数码格式输出到OUT端。实数格式在后续算术计算中是很常用的,如3.14就是实数形式。双整数转换成实数指令和参数见表4-41。
表4-41 双整数转换成实数指令和参数
【例4-54】梯形图和指令表如图4-102所示。IN中的双整数存储在MD0中,(用十进制表示为16),转换完成后OUT端的MD4中的实数是多少?
【解】
当I0.0闭合时,激活双整数转换成实数指令,IN中的双整数存储在MD0中(用十进制表示为16),转换完成后OUT端的MD4中的实数是16.0。一个实数要用4个字节存储。
图4-102 双整数转换成实数指令应用举例
【关键点】应用I_DI转换指令后’数值的大小并未改变’但有时转换是必需的’因为只有相同的数据类型’才可以进行数学运算’例如要将一个整数和双整数相加’则比较保险的做法是先将整数转化成双整数’再做双整数加法。
DI_I是双整数转换成整数的指令,并将结果存入OUT指定的变量中。若双整数太大,则会溢出。
DI_R是双整数转换成实数的指令,并将结果存入OUT指定的变量中。
(3)实数四舍五入为双整数(ROUND)
ROUND指令是将实数进行四舍五入取整后转换成双整数的格式。实数四舍五入为双整数指令和参数见表4-42。
表4-42 实数四舍五入为双整数指令和参数
【例4-55】梯形图和指令表如图4-103所示。IN中的实数存储在MD0中,假设这个实数为3.14,进行四舍五入运算后OUT端的MD4中的双整数是多少?假设这个实数为3.88,进行四舍五入运算后OUT端的MD4中的双整数是多少?
【解】
当I0.0闭合时,激活实数四舍五入指令,IN中的实数存储在MD0中,假设这个实数为3.14,进行四舍五入运算后OUT端的MD4中的双整数是3,假设这个实数为3.88,进行四舍五入运算后OUT端的MD4中的双整数是4。
图4-103 实数四舍五入为双整数指令应用举例
【关键点】ROUND是四舍五入指令’而TRUNC是取整指令’将输入的32位实数转换成整数’只有整数部分保留’舍去小数部分’结果为双整数’并将结果存入OUT指定的变量中。例如输入是32.2’执行ROUND或者TRUNC指令’结果转换成32。而输入是32.5’执行TRUNC指令’结果转换成32;执行ROUND指令’结果转换成33。请注意区分。
【例4-56】将英寸转换成厘米,已知单位为英寸的长度保存在VW0中,数据类型为整数,英寸和厘米的转换单位为2.54,数据类型为实数,要将最终单位厘米的结果保存在VD4中,且结果为整数。编写程序实现这一功能。
【解】
要将单位为英寸的长度转化成单位为厘米的长度,必须要用到实数乘法,因此乘数必须为实数,而已知的英寸长度是整数,所以先要将整数转换成双整数,再将双整数转换成实数,最后将乘积取整就得到结果。程序如图4-104所示。
4.数学功能指令
数学功能指令包含正弦(SIN)、余弦(COS)、正切(TAN)、自然对数(LN)、自然指数(EXP)和平方根(SQRT)等。这些指令的使用比较简单,仅以正弦(SIN)为例说明数学功能指令的使用,见表4-43。
图4-104 程序
表4-43 求正弦(SIN)值指令和参数
用一个例子来说明求正弦(SIN)值指令,梯形图和指令表如图4-105所示。当I0.0闭合时,激活求正弦值指令,IN中的实数存储在VD0中,假设这个数为0.5,实数求正弦的结果存储在OUT端的VD8中的数是0.479。
图4-105 正弦运算指令应用示例
【关键点】三角函数的输入值是弧度’而不是角度。
求余弦(COS)和求正切(TAN)的使用方法与前面的指令用法类似,在此不再赘述。
5.编码和解码指令
编码指令(ENCO)将输入字IN的最低有效位的位号写入输出字OUT的最低有效“半字节”(4位)中。解码指令(DECO)根据输入字IN的低4位所表示的位号,置输出字OUT的相应位为1。也有人称解码指令为译码指令。编码和解码指令格式见表4-44。
表4-44 编码和解码指令格式
用一个例子说明以上指令的应用,如图4-106所示是编码和解码指令程序示例。
图4-106 编码和解码指令程序示例
a)程序b)运行结果
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。