PLC数据存储原理简介

H123U小型PLC内部采用的是32位的处理器,PLC中的数据处理和电脑中的数据处理基本是一致的。所有的CPU进行数据处理时,都是将其他进制的数据转换成二进制数进行加减乘除运算的。二进制数据是只有0和1两种状态的数据,在计算机内部电路中实际是以“高电平”和“低电平”来表示数据“1”和“0”的。

高电平

高电平是电工程学中的一种叫法,与低电平相对。在逻辑电平中,保证逻辑门的输入电平高于某个输入电压(Vin)时,则认为输入电平为高电平。对于不同芯片,不同逻辑的电平信号而言。这个“Vin”也不是固定的。比如对于3.3v的TTL电平而言,低电平一般认为是1.6v以下为低电平(实际使用时都是输出0v作为低电平),1.8v-3.3v认为是高电平(在工程应用中一般高电平直接输出3.3v)。

电平信号是用电压表示数字量的一种方法,只有0和1两种状态。高电平一般为“1”,低电平一般为”0″(有特殊情况,RS232电平信号是负逻辑,有兴趣的可以查一下)

低电平

和高电平相对,表示数字量“0”。

进制相关的知识

二进制

二进制”用于计算机计算则是最简捷方便的进制,对于1位数的计算有:0+0=0;0+1=1;1+0=1;1+1=10(有进位,此时需用2个位来表示)这些计算只需用典型的“与”、“或”、“非”逻辑电路就可组合完成运算了。

计算机中完成数据计算的实际上是数字电路中的逻辑电路“与门”“或门”“非门”,二进制只有2种数据状态“低电平0”和”高电平1″。对于计算机来说,只认识高低电平0和1,所有的其他进制的数据都必须转换成二进制数据,计算机才能完成数据的处理运算。可以说二进制数据是计算机进行数据计算的基础,二进制对于计算机来说具有举足轻重的作用。(我们常听说计算机只认得0和1就是这个意思)。

位的概念:一个二进制位称之为bit,一个比特位,简称为位。bit位是计算机数据存储的最小数据单元。1bit位只有0或者1两种状态。我们常说的8位数据,16位数据,32位数据实际上就是指这个数据可以由那么多个二进制位组成。

8位数据byte字节

0   bit7

0

0

0

0

0

0

0    bit0

各个位如下:

bit7

bit6

bit5

bit4

bit3

bit2

bit1

bit0

8位数据由8个二进制位组成,每一位都有0或者1两种状态,则8位数据最多可以表示的数值个数为2^8 = 256个数值。对于无符号的数据其范围就是0到255,对于有符号数据其范围就是-128-127这个数值范围(-2^7-(2^7-1))。关于有符号无符号的数值的介绍见下面。一般我们将8位数据称之为byte字节,1个8位数据称之为1个字节。有些编程语言中,1字节表示的就是字符型数据char。

十六位数据(短整型)

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

从右到左分别是bit0-bit15,16位数据一般我们称为1个字,由两个字节组成(2*8位)。表示的整型数值个数2^16 = 65536个数据,对于无符号数据而言,其数值范围是0到65535,对于有符号数据而言其数值范围是-32768-32767(中间包括0)也就是-2^15-(2^15-1)..一般称16位数据为1个字,在一些编程语言中将16位整型数据当成短整型数据使用(如C语言,代表short int)

32位数据(浮点型或者长整型)

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

从右到左分别是bit0到bit31位数据,我们一般把32位数据称为双字数据。由4个字节组成(4*8位)。在程序中单精度浮点型数据是32位的长整型数据也是32位。(还有那种long int 64位整型数据,double双精度浮点型数据)。32位数据的数值范围进一步扩大,无符号整型数据范围:0-(2^32-1),有符号数据-2^31 到 2^31-1.

无符号数据

对于无符号数据,全部的二进制位都表示数据。是正整数

有符号数据

二进制的最高位表示符号位,其剩余位表示正常数值位。这里我懒得写的,从网上找了一下这部分的知识,是C语言的不过都是通用的。

C语言中将基本数据类型划分为signed(有符号)和unsigned(无符号)两大类。

例如,初始化变量int a = -3;其实它等价于signed int a = -3;关键字signed在这里可以省略,因为C语言默认就是有符号类型的,如果要定义无符号类型的数(也就是0和正整数)可以这样定义,unsigned int b = 5;

为了说明清楚signed和unsigned的区别,首先需要了解数据在内存中是如何存储的,在计算机中所有的数据都是按照二进制进行存储的(以下假设在字长为2个字节的机器上来表示)。

举个例子来说,unsigned  int a = 1; 变量a在内存中就是以00000000 00000001来存储的,用图表的形式表示:

因为这里是unsigned  int,它是无符号整型,所以的它的16位全部用来表示数据。

int b = -1;

这里情况就稍微有点复杂了,注意数字1和-1在内存中的存储是完全不一样的,请看,

在计算机中,整数是以原码的形式存储的,而负数是以补码的形式存储的,原码大家都知道也就是它对应的二进制码,那什么是补码呢,就是原码的反码加1,反码就是原码的各位取反,例如-1的补码是:

首先1的原码是                     00000000 00000001

其次取它的反码是                 11111111 11111110

最后在其反码的基础上加上1   11111111 11111111

得到-1的补码是,11111111 11111111

上图中可以看出,int用15位来表示一个数字,第1位被符号位占用了,其实大家应该不难看出在数学中-1是负数中最大的整数,所以这里看到它的各个位都置1,对应于二进制来讲就是最大的数了,计算机就是按照符号位来识别该数是正是负,所以第一位只起到标识的作用并不作为数据位来使用,而其余的15位才是真正的数据位。以补码的形式来存储有个好处那就是计算机将负数的运算当作加法来处理了。那么将一个有符号的数赋给一个无符号的数会发现一个很有趣的现象,比如:

C

unsigned int a;

int b = -1;

a = b;

printf("a=%u",a);

1

2

3

4

unsigned int a;

int b = -1;

a = b;

printf("a=%u",a);

输出a=65535,这个结果是怎么出来的呢?其实很简单,b=-1,根据上图-1在计算机中的数据位是1111111 11111111,注意是数据位,是要去掉符号位的,

所以是15,a是无符号类型的整数,将b赋给a,自然a就是1111111 11111111,也是15位第一位补0,转换成十进制就是65535,它也是unsigned int范围的最大上限(0~65535 216-1),-1是最大的负整数转换成正整数当然也是最大了,这个应该很好理解了。

例如:

unsigned int 类型的范围:一般较旧的机器占两个字节。最大是0—65535,16位2进制数;

signed int 类型的范围:有符号也是16位2进制,只不过第一位用来表示符号了,所以有符号的范围是-32768—32767.

本段来自csdn网友总结

关注本站微信公众号,可以更方便的获得更多资源资料

燕骏工控博客[环宇工控博客]–www.yanjuntech.cn 专注于工业自动化领域,分享工控相关经验与教程,分享收集的百度云盘工控资料资源,记录个人生活读书感悟。期待与您相遇~~

赞赏作者

喜欢 (1)or分享 (0)

汇川plc可以用C语言吗,汇川小型PLC梯形图编程系列教程(七):数值存储与二进制数据知识详解...相关推荐

  1. 汇川小型PLC梯形图编程系列教程(七):数值存储与二进制数据知识详解

    原文链接:汇川小型PLC梯形图编程系列教程(七):数值存储与二进制数据知识详解 PLC数据存储原理简介 H123U小型PLC内部采用的是32位的处理器,PLC中的数据处理和电脑中的数据处理基本是一致的 ...

  2. 汇川技术小型PLC梯形图编程系列教程(二):AutoShop软件使用技巧介绍

    原文链接:汇川技术小型PLC梯形图编程系列教程(二):AutoShop软件使用技巧介绍 俗话说的好,磨刀不误砍柴工.这里的刀指的是准备工作:手册+熟练使用软件(掌握一些技巧).所以本篇为大家简单介绍一 ...

  3. 汇川技术小型PLC梯形图编程系列教程(三):PLC系统程序与用户程序介绍

    原文链接:汇川技术小型PLC梯形图编程系列教程(三):PLC系统程序与用户程序介绍 PLC的定义 可编程逻辑控制器是种专门为在工业环境下应用而设计的数字运算操作电子系统.它采用一种可编程的存储器,在其 ...

  4. R语言基础知识详解及概括

    R语言基础知识详解及概括 目录 R语言基础知识详解及概括 R数据可视化示例 R语言进行数据创建

  5. R语言可视化绘图基础知识详解

    R语言可视化绘图基础知识详解 图形参数:字体.坐标.颜色.标签等: 图像符号和线条: 文本属性: 图像尺寸及边界: 坐标轴.图例自定义等: 图像的组合: #install.packages(c(&qu ...

  6. 汇川plc可以用C语言吗,汇川PLC技术能应用在工业自动化领域吗?

    汇川PLC可以应用于所有的工业部门,现在已经扩展到商业.农业.民用.智能建筑等领域.汇川PLC不仅可以代替继电器控制用于开关逻辑控制,还可以用于模拟闭环过程控制.数据处理.通信联网和运动控制.它在国民 ...

  7. GO语言教程4:defer(延迟语句)详解

    文章目录 1.defer语句格式 2.defer执行的时间 3.defer语句的作用 4.defer语句执行的顺序 5.defer与return的value之间的关系 6.用defer进行代码跟踪 7 ...

  8. Go 语言系列教程(七) : Map深入解析

    前言 Map 哈希表是一种巧妙并且实用的数据结构.它是一个无序的key/value对的集合,其中所有的key都是不同的,在Go语言中,map类型可以写为map[K]V ,key和value之间可以是不 ...

  9. PLC梯形图编程基础知识详解

    OFweek工控网讯:初学PLC梯形图编程,应要遵循一定的规则,并养成良好的习惯.下面以三菱FX系列PLC为例,简单介绍一下PLC梯形图编程时需要遵循的规则,希望对大家有所帮助.有一点需要说明的是,本 ...

最新文章

  1. 《神经元》发表脑智卓越中心关于灵活分类决策神经环路机制的研究成果
  2. System.Windows.Forms.Timer在线程中的注意事项
  3. JS 新浪下拉菜单+jQuery
  4. 解决老版本eclipse无法完全替换主题的问题
  5. 高动态范围图像-单图
  6. CVPR 2020 运行12-in-1遇到的问题及解决办法(持续更新中)
  7. 从语义开始 – 概念、意义、实践
  8. 决策树的python实现
  9. touchend与click顺序
  10. matlab 神经网络工具箱的实用
  11. Swagger使用总结
  12. 深入理解Yii2.0 (2)事件Event
  13. SharePoint 2010企业应用解决方案
  14. Windows 上的高效启动器—— Listary
  15. 【雨滴风格 时间倒计时置顶显示小工具】
  16. 低信噪比环境下GPS信号识别捕获技术
  17. 桌面计算机图标固定位置,win10桌面图标如何固定位置|win10电脑桌面图标固定位置方法...
  18. 苹果系统 python闪退怎么解决_MacOS pyinstaller 打包python应用闪退问题解决
  19. Dubbo2.6.5入门——简单的HelloWorld
  20. 4.TradingView K线和成交量没有自适应区域显示,ma线显示会错乱,高低不齐(巨坑)

热门文章

  1. 需求用户app的主题颜色能根据手机壳的颜色自动调整
  2. 教程一:微信公众号的申请
  3. MySQL基础+高级
  4. 建筑学计算机快速设计,建筑学专业可能会学的软件,什么样计算机好,设计软件对计算机配置的要求.docx...
  5. ftp yum 安装软件报错FTP Error 550 - Server denied you to change to the given directory
  6. Java要抛弃祖宗的基业,Java程序员危险了!
  7. 影响钕铁硼性能的因素及方法
  8. 【统计学习】5分钟了解假设检验中的第一类错误和第二类错误
  9. SQLyog-12.5.0 64位 中文 破解版
  10. 2011年国外最受欢迎的15个儿童网站