PLC的加、减、乘、除指令有什么用?其实功能十分强大!
大家好,欢迎关注电气技术微课堂!这里会每天更新关于电气自动化、PLC、工业机器人、电子技术的原创文章和微课,如果你感兴趣请关注我
今天我们要谈一谈西门子S7-1200PLC中常用的
什么是四则运算指令呢?
四则运算指令包括加法指令ADD、减法指令SUB、乘法指令MUL、除法指令DIV四种。
一、加法指令ADD
执行加法指令ADD将输入IN1的值与输入IN2的值相加,并将加得结果存储在OUT设定的寄存器中。
加法指令功能框各端口的定义如下
EN: 使能输入端,EN为1时执行加法指令,EN为0时不执行。
ENO: 使能输出端,当指令正确执行期间使能输出端ENO为1,指令结果超出输出 OUT指定数据类型的允许范围或浮点数为无效值时ENO为0。
IN1/IN2: 要相加的数值,可以是寄存器的地址或常数,单击ADD指令下的星标可以扩展输入的数目。
OUT: 加法计算结果输出,IN1+IN2=OUT,OUT端一般填写寄存器地址。
加法指令小提示: 可以从指令框的“<???>”下拉列表中选择该指令的数据类型,当地址长度与数据类型不匹配时,会将输入数值隐式转换为指定的数据类型,编译不会报错,但运行过程中可能会出错。
二、减法指令SUB
执行减法指令SUB,将由被减数IN1的值减去减数IN2的值,并将结果存入OUT设定的寄存器地址中。
减法指令功能框各端口的定义如下
EN: 使能输入端,EN为1时执行加法指令,EN为0时不执行。
ENO: 使能输出端,当指令正确执行期间使能输出端ENO为1,指令结果超出输出 OUT 指定数据类型的允许范围或浮点数为无效值时ENO为0。
IN1: 被减数,可以是寄存器地址或常数。
IN2: 减数,可以是寄存器地址或常数。
OUT: 减法计算结果输出,IN1-IN2=OUT,OUT端一般填写寄存器地址。
三、乘法指令MUL
乘法指令MUL将输入 IN1 的值与输入 IN2 的值相乘,并将乘积保存在输出 OUT指定的寄存器中。
乘法指令功能框各端口的定义如下
EN: 使能输入端,EN为1时执行加法指令,EN为0时不执行。
ENO: 使能输出端,指令正确执行期间ENO输出为1,
IN1: 乘数,可以是寄存器地址或常数。
IN2: 乘数,可以是寄存器地址或常数。
Inn: 可以添加多个相乘的数。
OUT: 输出乘积存入指定的寄存器中。
四、除法指令DIV
除法指令DIV将输入 IN1 的值除以输入 IN2 的值,并将除得的商保存在输出 OUT指定的寄存器中。DIV指令支持各种整型和实数型数据。
除法指令功能框各端口的定义如下
EN: 使能输入,EN为1时执行加法指令,EN为0时不执行。
ENO: 使能输出 ,指令正确执行期间ENO状态为1。
IN1: 被除数,可以是寄存器地址、整数或浮点数,需要与所选数据类型匹配。
IN2: 除数,可以是寄存器地址、整数或浮点数,需要与所选数据类型匹配。
OUT: 商值,输出OUT为执行除法指令得到的商,数据类型为无符号整数,余数被省略不计。
除法指令小提示
在使用除法指令DIV时,OUT输出端为除得的商值,数据类型为无符号整型,余数被省略不显示,如果需要求余数需使用MOD指令。
四则运算指令的实际应用举例
例题:温度传感器将采集到的温度值转换为电压信号输入给PLC,测量范围是0~100Co,数值经过被CPU集成的模拟量通道0(地址为IW64)转换为0~27648的数字,假设转换后的数字为T,试求以为Co单位的温度值。
解:0~100Co的温度值经A/D转换后的数字为0~27648,设转换后得到的数字为T,转换公式为
在编辑指令时,为了保证运算精度,应先乘后除。
因为公式中IW64乘以100的运算结果可能会大于16位整数的最大值32767(IW64为16位存储器,模拟值为二进制的补码,最高位为符号位,0为负,1为正),因此应将IW64中的数值数据类型转换为实数再进行乘除运算。
探讨PLC变量的数据类型及数值范围
PLC是工业控制不可缺少的自动化核心设备,要想学好PLC就必须要先了解数据类型。数据类型是所有自动化软件的编程基础,只有熟练掌握,才能随心所欲的驾驭。下面我们就以西门子S7-200为例,详细讲述这些常用的数据类型。
siemens PLC
1、基本数据类型
基本数据类型由以下几种:
1.1、位(bit)
定义为BOOL(布尔型),只有两个值:0 或 1。如:I0.0,Q0.1,M0.0,V0.1 等。
1.2、字节(Byte)
定义一个字节(Byte)等于8 位(Bit),其中0位为最低位,7 位为最高位。
如:IB0(包括 I0.0~I0.7 位),QB0(包括Q0.0~Q0.7 位),MB0,VB0 等。
用十六进制表示的范围为:00~FF,用十进制表示的范围为 0~255。
字节
1.3、字(Word)
定义相邻的两字节(Byte)组成一个字(Word),表示一个无符号整数,所以一个字为16位。
如:IW0 由 IB0 和 IB1 组成的,其中I是输入映象寄存器,W表示字,0是字的起始字节。特别注意的是:起始字节必须是偶数。
字的范围为十六进制的 0000~FFFF,十进制的 0~65536。
在编程时,如果已经使用 IW0,如果想再用 IB0或 IB1,就要特别慎重,避免重复定义。
字
1.4、双字(Double Word)
相邻的两个字(Word)组成一个双字,来表示一个无符号数。因此,双字为 32 位。
如:MD100 是由 MW100 和 MW102 组成的,其中M是位存储区,D表示双字,100是双字的起始字节。特别注意的是:双字的起始字节也必须是偶数。
双字的范围为十六进制的 0000~FFFFFFFF(即十进制的 0~4294967295)。
在编程时如果已经使用了MD100,如果再用 MW100或MW102,就要特别慎重,避免重复定义。
双字
特别注意:以上的字节、字和双字数据类型均为无符号数,即只有正数,没有负数。
1.5、16位整数(INT,Integer)
整数为有符号数,最高位为符号位,1表示负数,0表示正数。范围为-32768~32767。
正整数
1.6、32 位整数(DINT,Double Integer)
32 位整数和16位整数一样,为有符号数,最高位为符号位,1表示负数,0表示正数。范围为-2147483648~2147483647。
负整数
1.7、浮点数(R,Real)
浮点数为 32 位,可以用来表示小数。浮点数可以为:1.m×2e。
单精度浮点数
2、复合数据类型
用户通过复合基本数据类型而生成就是复合数据类型。
复合数据类型包括以下几种:
2.1、数组(ARRAY)
将一组同一类型的数据组合在一起组成一个单位就是数组。
2.2、结构(STRUCT)
将一组同不同类型的数据组合在一起组成一个单位就是结构。
2.3、字符串(STRING)
字符串是由最多 254 个字符组成的一维数组。
2.4、日期和时间(DATE-AND-TIME)
用于存储年、月、日、时、分、秒、毫秒和星期的数据。占用 8 个字节,BCD 编码。
星期天代码为1,星期一~星期六代码分别是 2~7。
如:DT#2004_07_15_12:30:15.200 为 2004 年 7 月 15 日 12 时 30 分 15.2 秒。
2.5、用户定义的数据类型(UDT,User-Defined Data Type)
由用户将基本数据类型和复合数据类型组合在一起形成的数据类型。
可以在数据块DB和变量声明表中定义复合数据类型。
3、数据类型汇总表格
4、举例说明
对于有符号的整数来说,最高位用作符号位,余下的位才是数值部分。
下面以有符号整数INT来举例说明其数值范围为什么是-32768-32767?
最高位是符号位,0为"+"、1为"- ,去掉一个符号位后,余下的数据只有15位。
15位二进制1对应的整数最大正整数为2^15-1=32767,最大值为+32767,对应二进制:0111 1111 1111 1111。即十进制范围:0~32767;
15位二进制1对应的整数最大负整数为-2^15=-32768,最大值为-32768,对应二进制:1111 1111 1111 1111。即十进制范围:-32768~-1;
西门子PLC
其实,数据类型简单也复杂,尤其是自定义数据类型。看得懂,并不代表你能在编程过程中能正确使用。只有自己动手编程,对不同的数据类型进行定义和使用,才能有深入地理解和掌握。当你对数据类型充分理解后,就可以学习数据的寻址。坚持不懈的学习和实际编程,才会有可能成为变成专家。
相关问答
plc数据双整数为什么有负数?
在PLC(可编程逻辑控制器)中,数据类型如整型(INT)、双整数等是用来表示不同的数值范围和符号的。整型数据占用两个字节(Byte),属于有符号数,其取值范围为...在...
PLC什么双整数?
实数和长整型一样占用2个字(4个字节)的空间,只是实数表示的是带有小数的数据,如88.39,这就是实型,在程序中一般符号是REAL或FLOAT;而长整型也就是你说的双整数...
PLC中整数和浮点数如何转化?
三菱plc里面将浮点数转换成整数用INT指令。该指令把二进制整数转化为二进制浮点数;常数K、H在各浮点运算指令中自动转换,在FLT指令中不处理。使用printf输出...
三菱plc怎么把整值变成一位小数?
1、要将整数转换为一位小数,需要进行以下步骤:用浮点数寄存器存储整数值,可以使用D寄存器(例如D0)。2、将整数值除以10,这可以使用除法指令(例如DIV)、...1...
三菱pLc怎么小数转整数?
使用三菱PLC将小数转换为整数涉及以下步骤:将小数乘以适当的比例因子,使其转换为整数。例如,要将小数点后三位的小数转换为整数,使用比例因子1000。使用M...
三菱PLC编程正负数比较编程方法?
要在上位机可以直接输入负数,只要在变量类型类型上选择双极性整数就可以了。plc中也是可以直接输入负数的,例如三菱plc就可以输入k-10来输入十进制-10,要注意...
三菱PLC怎么完成小数加减运算-懂得
首先需要明确,三菱PLC默认情况下只能进行整数运算,如果需要进行小数运算,需要购买带有模拟量输入输出模块的PLC。假设使用了模拟量输入输出模块,以...
有谁能帮我介绍下,我对西门子PLC的实数,整数,双整数,浮点数,字符串有写不明白他们之间是如何转换的?
实数,就是浮点数可以理解为带小数点的数据如1.5100.5整数,顾名思义就是没有小数点范围0-65535的双整数,同上范围0-4294967295浮点数,就是实数...
三菱FXPLC如何将32位整数变成16位整数-懂得
1、要看你32位的数据是否都用到,如果数值很大(要用到32位),那必须将这个数据进行等比缩小至16位数据以下,再通过数据转化即可;2、要看你的采集模块...
库卡机器人给plc发送整数的方式?
库卡机器人给PLC发送整数的方式是通过使用Modbus通信协议。Modbus是一种常用的工业通信协议,它允许不同设备之间进行数据交换。库卡机器人可以通过Modbus协议...