PLC编程如何测量长度 PLC的加,减,乘,除指令有什么用?其实功能十分强大!

小编 82 0

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接收信息?【RS-485专业讲解】系列7

通过时间方式判断进行数据的接收的两种方式,我已经详细的向大家介绍了固定长度报文情况下PLC如何接收数据,本文我就向大家介绍一下当报文长度不固定的情况下我们该如何控制PLC接收信息。

首先我们回顾一下当协议中报文的长度不固定的情况下,我们是通过判断字符间的空闲时间的方式来判断一段报文的起始,通常是字符与字符之间空闲时间超过3.5个字符传输时间,我们就认为一段报文接收完毕,之后接收到的报文就是一段新的报文。下面我们来看看这个程序如何写。

1 、寄存器设定

SMB30 = 2#00001001=16#9

图1-1

1)自由口模式。第0、1位。SM30.0=1、SM30.1=0

2)通讯速率9600bps。第2、3、4位。SM30.2=0、SM30.3=1、SM30.4=0

3)每个字符的数据位是8位。第5位。SM30.5=0

4)不选用奇偶效验。第6、7位。SM30.6=0、SM30.7=0

SMB87 = 2#10010100 =16#94

图1-2

1) 不使用中断条件作为检测信息的开始。第1位。SM87.1=0

2) 当SMW92中的定时时间超出时终止接收。第2、位。SM87.2=1

3) 定时器是内部字符定时器。第3位。SM87.3=0

4) 使用SMW90的值检测空闲状态。第4位。SM87.4=1

5) 不检测结束字符。第5位。SM87.5=0

6) 不检测起始字符。第6位。SM87.6=0

7) 允许信息接收功能。第7位。SM87.7=1

注:第0位为无效位不使用,永久为0。

SMW90 = 4

将SMW90设定成4表示报文间空闲时间大于4ms后接收的第一个字符是新信息的开始。

SMW92 = 4

由于我们设定SM87.3 = 0确定使用报文长度不固定方式,在9600bps通讯速率下1个字符(10个位)的接收需要1.04ms,3.5个字符的时间需要3.64ms,因此将SMW92设定成4表示当字符与字符之间的空闲时间超过4ms时停止接收信息(注:SMW92不支持小数),同时空闲4ms后(SMW90 = 4)接收到的第一个字符是新信息的开始。

SMB94 = 255

SMB94定义接收缓冲区大小,此处定义为最大255字节。(注:接收缓冲区是用来存放接收到的数据的区域,最大255字节,大家可以根据通讯情况自由定义。)

2、程序编写

图2-1

图2-2

以上就是报文长度不固定方式下,接收数据的程序,下面我们从电脑向PLC发送两组长度不同的报文 AA 11 22 BB 23 45 C1和AA11 22 BB 23 45 C1 54,看看效果。

图2-3

图2-4

图2-5

图2-6

由上面两次操作我们可以看到当报文长度不固定的时候电脑向PLC发送几个字符PLC就会接收几个字符。

作者:技成培训网(马乐)

版权为技成所有,未经同意盗取必究!

——END——

相关问答

PLC自动测量长度的方法?

以下是一种常见的基于PLC的自动测量长度的方法:1.连接编码器:编码器是一种用于测量长度、角度等物理量的传感器。将编码器连接到PLC的输入口,可以实时读取编...

plc长度计算方法?

PLC测量长度一般都是使用电子尺或接线式编码器。电阻尺可以直接测量出绝对长度、测量精确、使用简单等特点。我用的是良石技术的LS21-E4KT电阻尺模块,将电子尺...

plc测量钢丝绳长度的方法?

PLC测量长度一般都是使用电子尺或接线式编码器。电阻尺可以直接测量出绝对长度、测量精确、使用简单等特点。我用的是良石技术的LS21-E4KT电阻尺模块,将电子尺...

plc怎么输入长度尺寸?

PLC测量长度一般都是使用电子尺或接线式编码器。电阻尺可以直接测量出绝对长度、测量精确、使用简单等特点。我用的是良石技术的LS21-E4KT电阻尺模块,将电子...

西门子200PLC编码器信号怎么转换成测量距离的长度显示和速度显示?

使用双相双输入的高速计数器(EH系列用C251等),这个计数是硬件计数的,无论方向还是脉冲计数都是自动完成,你只要在要处理的地方直接读取就可以(如转换角度值...

西门子200PLC编码器讯号怎么转换成测量距离的长度显示和速度...

在西门子200PLC中处理编码器信号时,首先要解析其格雷码或增量码信息。利用计...接着根据你的设备参数(如齿距或线性关系)转换成长度值。速度则是位移除以时间...

三菱plcFX1N,怎么编程编码器的ab相,实现长度定位?

使用高速计数器C251,实现AB相控制,X0和X1分别接在编码器的A相和B相。C251数值可以写K999999,没有关系的。C251的当前值和你的定位数值做区间比较,需要用到的...

plc延时时间长度的计算方法?

一般的是100ms基时,延时时间=设定时间*基时。例如TMRT0K123的延时时间就是123*100ms=12300ms=12.3s。当M1028为10ms时间切换标志信号,Off时定时器T6...

plc字节长度?

PLC中的字节是二进制数据的单位。一个字节通常8位长。作为一个单位来处理的一个二进制数字串,是构成信息的一个小单位。最常用的字节是八位的字节,即它包含...

plc的扫描周期是多少长时间?好心人告诉我?

PLC扫描周期长短与CPU运行速度、PLC硬件配置和用户程序长短有关.PLC扫描周期T=(输入—点时间*输入端子数)+(指令执行速度*指令的条数)+(输出一点的时间*...