BCD碼(Binary-Coded Decimal?)是二進(jìn)制編碼的十進(jìn)制數的縮寫(xiě),BCD碼用4位二進(jìn)制數表示一位十進(jìn)制數。BCD碼各位的數值范圍為20000~21001,對應于十進(jìn)制數0~9。BCD碼不能使用十六進(jìn)制的A~F(21010~21111)這6個(gè)數字。BCD碼本質(zhì)上是十進(jìn)制數,因此相鄰兩位逢十進(jìn)一。
BCD碼的最高位二進(jìn)制數是符號位,負數的符號位為1,正數為0。16位BCD碼的范圍為–999~+999。
下圖的撥碼開(kāi)關(guān)將顯示的數字轉換為4位二進(jìn)制數。PLC用12個(gè)數字量輸入點(diǎn)讀取的是3位BCD碼,它的值為21000 0010 1001,即十六進(jìn)制數16829。
BCD碼沒(méi)有單獨的表示方法,而是借用了十六進(jìn)制的表示方法,因此二者很容易混淆。
下圖是S7-300/400的BCD碼和整數的相互轉換指令,可以看到在指令中BCD碼均用十六進(jìn)制的形式表示。
在程序中,怎么知道一個(gè)數字是BCD碼還是十六進(jìn)制數呢?
1)看數據的來(lái)源和用途。BCD碼一般用于輸入和輸出,例如來(lái)自撥碼開(kāi)關(guān)的數據是BCD碼,送給顯示電梯樓層的譯碼器芯片的是BCD碼。
2)看手冊的規定,例如數據類(lèi)型DATE_AND_TIME中的日期和時(shí)間值是BCD碼,計數器的預設值PV和當前計數值CV_BCD為BCD碼。
怎樣監視BCD碼?
在變量表和程序狀態(tài)監控中,用十六進(jìn)制格式監視BCD碼。
怎樣輸入BCD碼?
從上圖可以看出,BCD碼用十六進(jìn)制格式輸入,其最高位(符號位)為16F(21111)。BCD碼的低3位各位只能是0~9,如果是16A~16F則會(huì )出錯。
計數器的預設值PV是0~999的BCD碼,可以用格式為C的常數(C1~C999)作為計數器的預設值。
下圖用MW42提供計數器的預設值PV,如果用MOVE指令將十進(jìn)制數348(對應的十六進(jìn)制數為1615C)傳送給MW42,進(jìn)入RUN模式時(shí),操作系統將它轉換為BCD碼時(shí)出錯(1615C不是BCD碼),不能切換到RUN模式。
輸入預設值348時(shí),應改為將C348傳送給MW42,它會(huì )自動(dòng)地變?yōu)閃16348,當然也可以直接輸入16348。沒(méi)有必要用I_BCD指令將348轉換為BCD碼W16348后,再傳送給MW42。