BCD碼的最高位二進制數(shù)是符號位,負數(shù)的符號位為1,正數(shù)為0。16位BCD碼的范圍為–999~+999。
下圖的撥碼開關將顯示的數(shù)字轉換為4位二進制數(shù)。PLC用12個數(shù)字量輸入點讀取的是3位BCD碼,它的值為2#1000 0010 1001,即十六進制數(shù)16#829。
BCD碼沒有單獨的表示方法,而是借用了十六進制的表示方法,因此二者很容易混淆。
下圖是S7-300/400的BCD碼和整數(shù)的相互轉換指令,可以看到在指令中BCD碼均用十六進制的形式表示。
在程序中,怎么知道一個數(shù)字是BCD碼還是十六進制數(shù)呢?
1)看數(shù)據(jù)的來源和用途。BCD碼一般用于輸入和輸出,例如來自撥碼開關的數(shù)據(jù)是BCD碼,送給顯示電梯樓層的譯碼器芯片的是BCD碼。
2)看手冊的規(guī)定,例如數(shù)據(jù)類型DATE_AND_TIME中的日期和時間值是BCD碼,計數(shù)器的預設值PV和當前計數(shù)值CV_BCD為BCD碼。
怎樣監(jiān)視BCD碼?
在變量表和程序狀態(tài)監(jiān)控中,用十六進制格式監(jiān)視BCD碼。
怎樣輸入BCD碼?
從上圖可以看出,BCD碼用十六進制格式輸入,其最高位(符號位)為16#F(2#1111)。BCD碼的低3位各位只能是0~9,如果是16#A~16#F則會出錯。
計數(shù)器的預設值PV是0~999的BCD碼,可以用格式為C#的常數(shù)(C#1~C#999)作為計數(shù)器的預設值。
下圖用MW42提供計數(shù)器的預設值PV,如果用MOVE指令將十進制數(shù)348(對應的十六進制數(shù)為16#15C)傳送給MW42,進入RUN模式時,操作系統(tǒng)將它轉換為BCD碼時出錯(16#15C不是BCD碼),不能切換到RUN模式。
輸入預設值348時,應改為將C#348傳送給MW42,它會自動地變?yōu)閃#16#348,當然也可以直接輸入16#348。沒有必要用I_BCD指令將348轉換為BCD碼W#16#348后,再傳送給MW42。













