BCD碼

一、二進碼十進數

 

二進碼十進數(英語:Binary-Coded Decimal,簡稱BCD)是一種十進制數編碼的形式。

 

每個十進制數用一串二進制來表示。常見的有以4位表示1個十進制數字,稱爲壓縮的BCD碼(compressed or packed);或者以8位表示1個十進制數字,稱爲未壓縮的BCD碼(uncompressed or zoned)。

 

BCD碼的主要優點:在機器格式與人可讀的格式之間容易轉換,以及十進制數值的高精度表示,經常用於會計系統中。

 

許多PLC將時鐘的日期和時間以BCD碼編碼存儲。對應IEC 61131-3標準中DATE_AND_TIME(DT)數據類型。

 

下面是一個簡單易實現的使用LED來表示二進制值的二進制時鐘。在此時鐘中,LED的每一列顯示時間的二進制編碼十進制數。

 

 

BCD碼格式很容易轉換爲ASCII來顯示。ASCII字符0~9的數據字節的高四位爲0011,低四位正好和0~9的BCD編碼相同。

 

如十進制數1234的BCD碼轉換爲ASCII

 

二、常用BCD編碼方式

 

對應不同需求有不同的編碼方法,大致可以分成有權碼和無權碼兩種:

 

  • 有權碼,如:8421、2421、5421

  • 無權碼,如:餘3碼(Excess-3)、格雷碼

 

8421碼

 

8421碼是最常用的一種BCD編碼方式,又稱爲BCD碼。

 

在這種編碼方式中,每個十進制數字都由對應的四位二進制值表示,二進制值每一位的“1”都代表一個固定數值。將每位“1”所代表的十進制數加起來就可以得到它所代表的十進制數字。因爲代碼中從左至右看每一位“1”分別代表數字“8”“4”“2”“1”,故得名8421碼。

 

每一位“1”代表的十進制數稱爲這一位的權。因爲每位的權都是固定不變的,所以8421碼是恆權碼。

 

如十進制數1234的BCD碼爲0001 0010  0011 0100

 

 

三、不同PLC中BCD碼

 

在西門子S7-300/400/1200/1500中,BCD16表示的十進制數範圍爲-999 到 +999。位 15爲“0”,則符號爲正,爲“1”,則符號爲負。位 12 至位 14不使用。

 

BCD32表示的十進制數範圍爲-9999999 到 +9999999。位 31爲“0”,則符號爲正,爲“1”,則符號爲負。位 28 至位 30不使用。

 

 

如下面把整數1000轉換爲BCD,不會得到正確結果

 

 

在西門子S7-200/200 SMART中,BCD表示的十進制數範圍爲0 到 9999。進行轉換是要注意。

 

 

施耐德PLC中,如Unity Pro XL平臺,BCD16表示的十進制數範圍爲0 到 9999。BCD32表示的十進制數範圍爲0 到 99999999。

 

三菱PLC中,如GX Works2平臺,BCD16表示的十進制數範圍爲0 到 9999。BCD32表示的十進制數範圍爲0 到 99999999。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章