二进制编码的小数和plc

二进制编码十进制(BCD)是一种十进制数字的二进制编码,其中每个小数由固定位数表示,通常是4或8位,这与人类计算数据的方式相悖。这种断开会给可编程逻辑控制器(PLC)用户带来问题。

通过Frank Lamb,自动化入门 2016年5月20日

计算机讨厌小数。仅仅因为我们有10个手指和10个脚趾,我们就认为我们可以规定其他计算实体应该使用什么基础来思考。事实上,这是非常低效的。将2进制转换为8进制或16进制很容易,任何逻辑设备都能很好地处理。二进制编码小数(bcd)是一种二进制编码,通常由4位或8位表示。只有人类才需要把寄存器中所有的比特加起来,然后把它们转换成10进制,因为这是我们被编程来思考的方式。

在触摸屏出现之前,七段显示器和拇指轮开关被用作人类和可编程逻辑控制器(plc)之间的数字接口。即使在PLC出现之前,这些设备也是唯一以图形方式与电路进行数字交互的方式。用户可以像ENIAC(第一台电子通用计算机)时代那样移动插头,但用这些设备查看和调整十进制数字要容易得多。问题是,它们是非常密集的输入/输出(I/O)。每个拇指轮段需要四个输入(+电源),而每个7段显示器需要四个输出(+2个电源连接)。尽管如此,对于我们大多数人来说,使用按钮和指示灯直接与小数中的有符号或无符号整数交互要容易得多。

一个常见的抱怨是数学;每个数据类型都必须在平台上显式声明,如果数据类型不相等,则必须进行转换。不仅如此,标准计时器和计数器数据类型还将BCD合并到它们的数据结构中。这是因为这种结构可以追溯到人们必须处理这些拇指轮和七段显示器之类的东西的时候。事实上,计时器设定值仍然输入为“s5t# 3S”,为3秒的设定值。计时器使用三个BCD数字(12位)和两个额外的位作为时间基数。计数器也是如此,这意味着它们只从-999到+999计数。

每个四位数区段只能携带从0000到1001的位值;对于下一个值,不是索引到1010,(“10″在有符号或无符号十进制中或“A”在十六进制中),下一位将被冲撞到下一段位。这意味着最后六个比特组合(A-F)被有效地浪费了——在BCD结构中是不可能的。

BCD结构或基数在许多较新的触摸屏中仍然可用,但大多数程序员倾向于选择整数基数来表示十进制数。BCD有点像DOS;工程学院还在接触它,但人们真的不知道它从何而来。希望回顾那些旧的拇指轮和七段显示将有助于澄清一些神秘和“为什么”的BCD。

弗兰克羊肉他是自动化咨询服务公司的创始人。本文最初发表于自动化入门博客.Automation Primer是CFE Media的内容合作伙伴。由制作编辑克里斯·瓦夫拉编辑,控制工程, CFE传媒,cvavra@cfemedia.com

在线额外

有关plc和编程的更多文章,请参阅下面的相关文章。

原始内容可以在automationprimer.com