0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

PLC中常用进制及相互转换方法

jf_bq60R2Xt 来源:数控狂人 作者:数控狂人 2022-10-17 11:10 次阅读

数制也称计数制,是用一组固定的符号和统一的规则来表示数值的方法。

任何一个数制都包含两个基本要素:基数和位权

基数:数制所使用数码的个数。

例如,二进制的基数为2;十进制的基数为10。

位权:数制中某一位上的1所表示数值的大小(所处位置的价值)。

例如,十进制的123,1的位权是100,2的位权是10,3的位权是1。

二进制中的 1011 ,左起第一个1的位权是8,0的位权是4,第二个1的位权是2,第三个1的位权是1。

PLC中常用的数制有:十进制、二进制、十六进制、八进制等。

此外还有BCD码和ASCII码也偶尔会使用。

十进制(Decimal notation):

如1234=1*103+2*102+3*101+4*100,逢十进一,基数为10,单个数是0-9,每位的系数乘于基数(10)的N次方,N为其所处的位数。

二进制(Binary notation):

如1101=1*23+1*22+0*21+1*20=13,逢二进一,基数为2,单个数只有0和1, 每位的系数乘于基数(10)的N次方,N为其所处的位数。从第3位至0分别为8,4,2,1,所以二进制也成8421码。如果表示有符号数,则用最高位表示符号,0为正数1为负数。正数以二进制原码表示;负数则以补码存储,即将原码逐位取反再加1。

十六进制(Hexdecimal notation):

逢16进1的进位制。一般用数字0到9和字母A到F(或a~f)表示,其中:A~F表示10~15,这些称作十六进制数字。

八进制(Octal notation):

逢八进一,单个数有0-7,在PLC中常用于编址,数据运算应用较少。BCD码(Binary-Coded Decimal‎):亦称二进码十进数或二十进制代码。用4位二进制数来表示1位十进制数中的0~9这10个数码。通常时钟采用BCD码存储。

ASCII(American Standard Code for Information Interchange:美国信息交换标准代码):

是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的系统,并等同于国际标准ISO/IEC 646。PLC中数据存储只能以0和1形式,其它数据可通过进制转换成二进制,但是字母和一些特殊符号用什么表示则需要约定一套转换规则,于是美国有关的标准化组织就出台了ASCII编码。

浮点数(float):

又称实数(REAL),浮点数是属于有理数中某特定子集的数的数字表示,在计算机中用于近似表示任意某个实数。具体来说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学计数法。

在二进制科学表示法中:S=M×2^N

主要由三部分构成:符号位+阶码(N)+尾数(M)。对于float型数据,其二进制有32位,其中符号位1位,阶码8位,尾数23位。

符号位:0表示正,1表示负。

阶码:这里阶码采用移码表示,对于float型数据其规定的偏置量为127,阶码有正有负,对于8位二进制,则其表示范围为−128~127。比如,对于float型数据,若阶码的真实值为2,则加上127后为129,其阶码表示形式为10000010。

尾数:有效数字位,即部分二进制位(小数点后面的二进制位),因为规定M的整数部分恒为1,所以这个1就不进行存储了。

举例说明

float型数据125.5转换为标准浮点格式,125的二进制表示形式为1111101,小数部分表示为二进制为 1(小数部分乘以2,小于1则为0,大于1则为1,小数继续乘以2,直到小数部分为0为止),则125.5二进制表示为1111101.1,由于规定尾数的整数部分恒为1,则表示为1.1111011*2^6,阶码为6,加上127为133,则表示为10000101,而对于尾数将整数部分1去掉,为1111011,在其后面补0使其位数达到23位,则为11110110000000000000000。则其二进制表示形式为:0 10000101 11110110000000000000000

那么这些进制之间是如何转换呢?

1.十进制转二进制方法为:

十进制数除2取余法,即十进制数除2,余数为权位上的数,得到的商值继续除2,依此步骤继续向下运算直到商为0为止。(具体用法如下图)

1489eaf8-4c75-11ed-a3b6-dac502259ad0.png

2.二进制转十进制方法为:

把二进制数按权展开、相加即得十进制数。(具体用法如下图)

149bb4a4-4c75-11ed-a3b6-dac502259ad0.png

3.二进制转八进制方法为:

3位二进制数按权展开相加得到1位八进制数。(注意事项,3位二进制转成八进制是从右到左开始转换,不足时补0)。(具体用法如下图)

14b8d6ce-4c75-11ed-a3b6-dac502259ad0.png

4.八进制转成二进制方法为:

八进制数通过除2取余法,得到二进制数,对每个八进制为3个二进制,不足时在最左边补零。(具体用法如下图)

14cbeebc-4c75-11ed-a3b6-dac502259ad0.png

5.二进制转十六进制方法为:

与二进制转八进制方法近似,八进制是取三合一,十六进制是取四合一。(注意事项,4位二进制转成十六进制是从右到左开始转换,不足时补0)。(具体用法如下图)

14deed46-4c75-11ed-a3b6-dac502259ad0.png

6.十六进制转二进制方法为:

十六进制数通过除2取余法,得到二进制数,对每个十六进制为4个二进制,不足时在最左边补零。(具体用法如下图)

14f65bfc-4c75-11ed-a3b6-dac502259ad0.png

7.十进制转八进制或者十六进制有两种方法:

第一:间接法—把十进制转成二进制,然后再由二进制转成八进制或者十六进制。这里不再做图片用法解释。

第二:直接法—把十进制转八进制或者十六进制按照除8或者16取余,直到商为0为止。(具体用法如下图)

154ef708-4c75-11ed-a3b6-dac502259ad0.png

8.八进制或者十六进制转成十进制方法为:

把八进制、十六进制数按权展开、相加即得十进制数。(具体用法如下图)

157bef38-4c75-11ed-a3b6-dac502259ad0.png

9.BCD码转十进制:

因为BCD码是用四位二进制表示一位十进制数,所以转换方法类似二进制转十六进制“取四合一”法,四位组合后转成十进制得到的就是十进制。以上介绍了PLC中常用进制及相互转换方法,意在让初学者理解进制含义及转换规律。真正使用时可利用计算机提供的程序员型计算器轻松运算出来。

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • plc
    plc
    +关注

    关注

    5010

    文章

    13274

    浏览量

    463073
  • 存储
    +关注

    关注

    13

    文章

    4297

    浏览量

    85801
  • BCD
    BCD
    +关注

    关注

    1

    文章

    88

    浏览量

    29716
  • 代码
    +关注

    关注

    30

    文章

    4780

    浏览量

    68527

原文标题:PLC中常用数制及各进制的转换方法,不会还有电气人不会吧?!

文章出处:【微信号:数控狂人,微信公众号:数控狂人】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    labview中浮点数与十六进制字符串相互转

    与下位机数据交流及通讯时,经常有浮点数与十六进制字符串相互转化的需求,经过两天总结,找到了最简洁的相互转化的方法,萌新欢迎大佬指正,文件也附上。*附件:HEX字符串与浮点数
    发表于 10-21 19:51

    字符 数字相互转换

    很惭愧,俺对基础的东西不是很了解,数字 1和字符 ‘1’ 怎么相互转换 ,因为在LCD1602和TFT彩屏显示涉及到相互转换,总是弄不清楚,请大虾给科普下,‘0’是代表字符 0 吗?
    发表于 05-26 11:22

    labview里单精度浮点数和十六进制数如何相互转换

    我需要将一个单精度的浮点数(如0.33)转换为十六进制数然后通过串口发送,同时还需将串口读取的十六进制转换为单精度浮点数。 求问在labview里如何使浮点数和十六
    发表于 10-14 11:04

    BCD码与十进制相互转换,无密码,可直接用

    本帖最后由 kevindandan 于 2019-6-5 16:09 编辑 前面有个串口的小应用,涉及到十进制数与BCD码的相互转换,看似很简单,也花了点时间。附件是LabVIEW2017的代码,希望同坛友共同交流,有改进意见的可以提,谢谢。
    发表于 09-08 07:56

    ASCII-十六进制相互转换 自己写的,仅供参考

    ASCII-十六进制相互转换 VI源码,仅供参考,如有错误欢迎指正!
    发表于 10-26 10:59

    如何实现了SPI/ASI的相互转换

    如何实现了SPI/ASI的相互转换
    发表于 06-08 06:32

    HEX文件和BIN文件相互转换的软件

    HEX文件和BIN文件相互转换的软件:
    发表于 09-13 15:28 380次下载
    HEX文件和BIN文件<b class='flag-5'>相互转换</b>的软件

    进制数与八进制数的相互转换

    进制数与八进制数的相互转换 (1)二进制转换为八进制数: 将二
    发表于 09-24 11:27 2w次阅读

    进制数与十六进制数的相互转换

    进制数与十六进制数的相互转换进制数与十六进制数的相互转换,按照每4位二
    发表于 09-24 11:28 9747次阅读
    二<b class='flag-5'>进制</b>数与十六<b class='flag-5'>进制</b>数的<b class='flag-5'>相互转换</b>

    触发器的相互转换

    触发器的相互转换 基本触发器之间是可以互相转换的,JK触发器和D触发器是两种最常用的触发器,别的触发器可以通过这两种触发器转化得来,它们
    发表于 09-18 08:56 4693次阅读
    触发器的<b class='flag-5'>相互转换</b>

    各种进制相互转换

    各种进制相互转换 1、其它进制转换为十进制  方法是:将其它
    发表于 09-19 11:29 3875次阅读
    各种<b class='flag-5'>进制</b><b class='flag-5'>相互转换</b>

    PLC中常用数制及如何转换

    中某一位上的1所表示数值的大小(所处位置的价值)。例如,十进制的123,1的位权是100,2的位权是10,3的位权 是1。二进制中的 1011 ,左起第一个1的位权是8,0的位权是4,第二个1的位权是2,第三个1的位权是1。 PLC
    发表于 04-18 11:29 1次下载
    <b class='flag-5'>PLC</b><b class='flag-5'>中常用</b>数制及如何<b class='flag-5'>转换</b>

    PLC中常用进制相互转换方法

    数制也称计数制,是指用一组固定的符号和统一的规则来表示数值的方法。它按进位的原则进行计数的方法,称为进位计数制。
    的头像 发表于 04-27 11:32 4807次阅读
    <b class='flag-5'>PLC</b><b class='flag-5'>中常用</b><b class='flag-5'>进制</b>及<b class='flag-5'>相互转换</b><b class='flag-5'>方法</b>

    浅谈PLC中常用进制相互转换方法

    BCD码是用四位二进制表示一位十进制数,所以转换方法类似二进制转十六进制“取四合一”法,四位组合
    发表于 06-10 07:11 1254次阅读
    浅谈<b class='flag-5'>PLC</b><b class='flag-5'>中常用</b><b class='flag-5'>进制</b>及<b class='flag-5'>相互转换</b><b class='flag-5'>方法</b>

    如何实现二进制和BCD码数据的相互转变?

    如何实现二进制和BCD码数据的相互转变? 二进制码是将十进制数字表示为二进制数和十进制数的一种表
    的头像 发表于 02-18 14:51 3532次阅读