PLC编程基础——进制介绍
1 PLC编程基础
1.1 数据格式及要求
数据格式:即指数据的长度和表示方式。
要求:S7-200 SMART对数据的格式有一定的要求,指令与数据之间的格式一致才能正常工作。
用一位二进制数表示开关量
一位二进制数:一位二进制数有0(OFF)和1(ON)两种不同的取值,分别对应于开关量(或数字量)的两种不同的状态。
位数据的数据类型:布尔(Bool)型。
位地址:由存储器标识符、字节地址和位号组成,如I3.4等。
其它CPU存储区的地址格式:由存储器标识符和起始字节号(一般取偶字节)组成,如V B 100、V W 100、V D 100等。
1.1.1 十进制数
包含0~9共10个数字,以上10个数可以任意组合。规则:逢十进一。例:9+1=10,19+1=20,99+1=100.
1.1.2 八进制数
包含0~7共8个数字,以上8个数可以任意组合。规则:逢八进一。例:7+1=10,17+1=20,77+1=100。注意:S7-200 PLC的输入输出点都是按八进制进行排列。例如:I0.0~I0.7,I1.0~I1.7
1.1.3 二进制数
包含0~1共2个数字,以上2个数可以任意组合。规则:逢二进一。 例:1+1=10,,11+1=100。二进制又叫计算机语言或机器码
数及数制:数用于表示一个量的具体大小。根据计数方式的不同,有十进制(D)、二进制(B)、十六进制(H)和八进制等不同的计数方式。
二进制数的表示:在S7-200中用2#来表示二进制常数,例如 “2# 10111010 ”。
二进制数的大小:将二进制数的各位(从右往左第n位)乘以对应的位权(×2n-1),并将结果累加求和可得其大小。例如:2# 10111010 = 1×2 8-1 +0×2 7-1 +1×2 6-1 +1×2 5-1 +1×2 4-1 +0×2 3-1 +1×2 2-1 +0×2 1-1 = 186
1.1.4 十六进制数
包含0~9共10个数字加上A、B、C、D、E、F共6个字母,合计一起总共16个符号,以上16个数可以任意组合。规则:逢十六进一。例:9+1=A,F+1=10,1F+1=20,FF+1=100 。
十六进制数的引入:将二进制数从右往左每4位用一个十六进制数表示,可以实现对多位二进制数的快速准确的读写。
十六进制数的表示:在S7-200中用16#来表示十六进制常数,例如 “2# 1010 1110 1111 0111 可转换为16# AEF7 ”。
十六进制数的大小:将十六进制数的各位(从右往左第n位)乘以对应的位权(×16n-1),并将结果累加求和可得其大小。例如:16#2F = 2×16 2-1 +15×16 1-1 = 47
1.1.5 BCD码
BCD码释义:BCD码就是用四位二进制数的组合来表示1位十进制数,即用二进制编码的十进制数(Binary Coded Decimal Number)缩写。 例如 十进制数 23 的BCD码为 2# 0010 0011 或表示为 16# 23 ,但其8421码为 2# 00010111 。
BCD码的应用:BCD码常用于输入输出设备,例如拨码开关输入的是BCD码,送给七段显示器的数字也是BCD码。
1.1.6 负数(有符号数)的表示方法
负数的表示:PLC一般用二进制的补码来表示有符号数,其最高位为符号位(0 ——正数、1 ——负数)。
绝对值相等的正负有符号数间的关系:正数的补码是它本身。
PLC编程必备:模拟量计算,结合实际案例详解,这操作一看就懂
模拟量是工业自动化使用的蛮多的一个东西,一般用在对温度、压力等数字量的检测和控制,比较高端的还会结合PID进行使用。在学习模拟量的过程中,读取到相应的数据很简单,困扰大家学习模拟量的最大难题是对模拟量的量程范围的选择以及计算。下面,陈老师将对模拟量的计算进行一个详细的解说,会结合相应的案例,帮助大家理解模拟量。
例1:
如上图,一个温度感应模块,感应的温度时0~150°,对应的输出电压时0~10V,也就是说感应到0的温度,这个模块就输出一个0V的电压;感应到150°,就输出一个10V的电压。中间的每一个温度也会对应一个相应的电压,这里需要去计算么,不不不,现在还不到计算的时候,我们继续往下看。
上图是我们FX系列的plc,加了2个模拟量的模块,其中FX3U-4AD就是用来接收这些电压数值的模块(也可以接收电流)。有一点要记住,plc显示出来的是数字,而不是电压值。而且,显示出来的数值大小也可以是不同范围,例如,可以把0-10V的电压显示为0-10000的数值,也可以显示为0-4000或者0-32000的对应数值,你选择的数值越大,检测的就越精确,看下图的3种模式,我们可以通过plc编程进行设定,选择其中一种:
(由于我们的温度模块是0-10V的,我们plc的接收范围是-10V--+10V,我们把负数部分去掉,对应的数值的负数范围也可以去掉)
下面我们选择0-32000的数值范围进行计算。也就是说,读取到是数值0,就是电压为0v;读取到32000的数值,就是感应到的电压是10V。再对应到我们温度模块的0-150°,可以发现0-10V就是一个中间量,我们不需要拿他来计算, 0数值对应的温度是0°150°对应的数值是32000。
如上图,温度和读取的数值是一个线性关系,我们可以用坐标系表示,温度为X,显示的数值为Y,这时我们发现,他们之间存在一个比例关系,Y是X的k倍,也就是说,显示的数值是实际温度的K倍,具体是多少倍,我们不知道,我们可以列公式 y=k*x,这时可以代入 x=150°时,y=32000,即 32000=k*150,可以求得,k=32000/150=2133
结论是,读取到的数值除以2133就是实际的温度。
选择不同的量程范围,计算的过程都是一样的,这里就不给大家一一演示,下面进入第二个例子,来看看更有难度的计算。
例2:
下图是我们另外一种温度变送器,它能感应到-50°~+150°的温度范围,输出的是4~20ma的电流。
就是说我们的感应器感应到-50°时,输出电流4mA;感应到150°的温度时,输出20mA的电流。参照下图,我们可以选择不用的量程范围
比如,我们选择0~16000的量程范围,那么这时候对应关系如下:
我们把读取的数值命名为y把实际温度命名为x,x变化,我们的y也会跟着变化,这时,因为我们的温度初始检测值不为零,所以计算比前面有所不同。我们先根据-50°对应数值0, +150°对应的数值为16000,做出下图
我们可以列出这样的方程y=k*x+b,然后代入(-50,0)、(150,16000)
这是初中的直线方程的知识点,我们可以接出k=80,b=4000;
y=80*x+4000或x=(y-4000)/80
最后可以得出,实际的数值减去4000,再除以80就是实际的温度。
我们再来回顾下计算的流程。
这就是我们模拟量的计算过程,当然plc也可以通过D\A模块输出电压或者电流,其计算过程和原理都是一样的,这里就留给大家自己去思考。(本文为技成老师原创,作者:陈育鑫,未经授权不得转载,违者必究!)
往期优秀文章回顾:
变频器的控制回路端口详解,图文并茂~
相关问答
PLC显示负数那个问题咋解决的?
可以尝试修改数据类型,将输入的数据类型,用转换模块,进行数据类型的转换可以尝试修改数据类型,将输入的数据类型,用转换模块,进行数据类型的转换
plc中如果是负数,要变成正数的化为什么要减去k65535?例子:[D...
[最佳回答]因为每个数据寄存器都是16bit的,而16Bit存储的数据范围是0-65535,也就是65535+1=-1;而65535是通过二进制数据转1111111111111111换过来的最大...
三菱PLC编程正负数比较编程方法?
要在上位机可以直接输入负数,只要在变量类型类型上选择双极性整数就可以了。plc中也是可以直接输入负数的,例如三菱plc就可以输入k-10来输入十进制-10,要注意...
松下plc怎么把数据变成负数?
可以将数据变成负数。因为松下PLC(可编程逻辑控制器)具有数值处理功能,可以通过使用适当的指令和操作,将数据转换为负数。例如,可以使用逻辑运算指令或数值...
三菱FX3G如何通过程序把一个正数改为负数,有这样的指令吗?
以FX3G系列PLC为例,参考程序如下:需要注意的一点:计数器清零与复位用RST指令。以FX3G系列PLC为例,参考程序如下:需要注意的一点:计数器清零与复位用RST指令。
台达plc正负数转换指令?
出频率。脉冲的发出位置是y0,方...读取d500与d501寄存器的数值作为脉冲的发出频率。脉冲的发出位置是y0,方向脉冲发出位置是y1。因为drva指令是绝对位置指令,...
plc中d存储器怎么会变负值?
PLC中的D存储器会变成负值通常是由于程序或者输入信号的错误导致的。例如,可能是在程序中给D存储器赋予了负值或者在输入信号中出现了异常值。另外,如果使用了...
三菱plc数据寄存器d可以是负数吗?
1.可以是负数。2.因为三菱PLC的数据寄存器D是一个16位的有符号整数,其中最高位表示符号位,0表示正数,1表示负数。因此,D寄存器可以存储负数值。3.这意味着...
西门子PLCINV_I指令对一个正数求反,怎么变成负数了?而计算机中的一个正数的原码补码反码不都是一样吗?
你说的应该是INV_W指令。求反就是说对各位取反,包括符号位。一个字的最高位为0表示整数;为1表示负数。因此你一个整数取反肯定是负数啊。他的那个帮助说是...
西门子PLCL#-100数据意义?
负的长整数,具体编码为11111111111111111111111110011100。由于是负数,长整数和整数的编码格式不同(首位正负标示符为1,而其他位为对应2进制编码的补码加1),负...