在FANUC梯形圖中,“M代碼”或者“T代碼”經(jīng)常要使用譯碼指令進(jìn)行譯碼處理;而系統(tǒng)默認(rèn)“M代碼”對(duì)應(yīng)的“F10”以及“T代碼”對(duì)應(yīng)的“F26”都是二進(jìn)制型式,所以在梯形圖中對(duì)代碼進(jìn)行譯碼時(shí),經(jīng)常使用二進(jìn)制譯碼指令“DECB”。但在有些PMC程序中,會(huì)先將代碼由二進(jìn)制轉(zhuǎn)換為BCD數(shù)據(jù)后,再使用BCD的譯碼指令“DEC”進(jìn)行譯碼,為什么要繞一圈使用BCD譯碼而不直接使用二進(jìn)制譯碼指令呢?

因?yàn)槎M(jìn)制譯碼指令一次可以連續(xù)譯出8個(gè)連續(xù)的數(shù)字直接對(duì)應(yīng)單個(gè)字節(jié)的地址,通過(guò)設(shè)定還可以一次編譯出上百個(gè)數(shù)字,對(duì)于這些數(shù)字及地址比較龐大,設(shè)計(jì)人員在編寫(xiě)PMC程序時(shí)可能無(wú)法立即知道哪個(gè)地址對(duì)應(yīng)哪個(gè)譯碼數(shù)據(jù);而使用BCD譯碼指令,可以很直觀的看出譯碼地址,所以有些設(shè)計(jì)人員在編寫(xiě)PMC程序時(shí),會(huì)使用這種方式。
那么BCD譯碼“DEC”指令中指定的數(shù)字是什么含義呢?

圖中的“2611”并不是將數(shù)字“2611”進(jìn)行譯碼,“2611”是個(gè)組合數(shù)字,分為兩部分含義,需要進(jìn)行拆開(kāi)解讀。

譯碼數(shù)據(jù)為“26”是個(gè)十位數(shù)字,十位數(shù)字是“2”對(duì)應(yīng)高位,個(gè)位數(shù)字是“6”對(duì)應(yīng)低位;圖中譯碼方式為“11”,對(duì)高低兩位同時(shí)譯碼,譯碼數(shù)據(jù)為“26”,當(dāng)“D800=26”時(shí),數(shù)據(jù)與譯碼數(shù)據(jù)相同,線圈R385.0輸出。

若將“2611”更改為“2601”,即只對(duì)“26”及“D800”的低位(個(gè)位)進(jìn)行譯碼,高位(十位)忽略,個(gè)位數(shù)為“6”,即當(dāng)“D800”個(gè)位數(shù)為6時(shí),線圈R385.0輸出。

同理,若將“2611”更改為“2610”,則只有當(dāng)“D800”十位數(shù)為2時(shí),線圈R385.0才會(huì)輸出。

DEC指令只可對(duì)BCD兩位數(shù)進(jìn)行譯碼,對(duì)于超過(guò)兩位數(shù)的BCD代碼無(wú)法使用!