上一篇教程,我們?yōu)榇蠹医榻B了二進制數(shù)據(jù) 【極課工控】小型PLC系列教程之2.2數(shù)值存儲與二進制.. 。
位數(shù)少的CPU,并非不能處理大的數(shù)值,只不過需要多次運算,有時還需要編程人員熟悉算法。就像大車一次可以搬運的貨物,用小車就需要往返多次才能搬完,車越小,需要的次數(shù)越多,耗時也越多。
H1U/H2U系列PLC元件中,常用的數(shù)據(jù)寬度是1Word(即16bit);部分計數(shù)器為2Word(32bit)。對于16bit的無符號數(shù)據(jù),用2進制表示的最大值為1111,1111,1111,1111,換算為十進制就是65,535。
本篇博文將為大家詳細介紹一下其他的數(shù)據(jù)進制,其中我們在PLC編程中用的比較多的是十進制和十六進制數(shù)據(jù),BCD碼一般用在數(shù)碼管顯示的用途中。
十進制
十進制數(shù)據(jù)就是我們?nèi)祟愂褂玫?2345678910 11 12這樣的數(shù)據(jù),逢十進一。咱們上小學就開始學的數(shù)學,都是基于10進制的。十進制數(shù)據(jù)在編程中用的比較多。
小型PLC中十進制數(shù)據(jù)用K開頭標識,如:
MOV K20 D200 將20這個十進制數(shù)據(jù)賦值給D200數(shù)據(jù)寄存器
十六進制
十六進制,逢十六進一。
十六進制(Hexadecimal)是計算機中數(shù)據(jù)的一種表示方法。同日常生活中的表示法不一樣,它由0-9,A-F組成,字母不區(qū)分大小寫。與10進制的對應關(guān)系是:0-9對應0-9;A-F對應10-15;十六進制用hex表示。
在小型PLC中十六進制前綴是 H,如下梯形圖程序:
MOV HA D100 將十六進制數(shù)據(jù) A(也就是十進制的10)賦值給D100寄存器
對于十進制500而言,用十進制表示出來是500,用十六進制表示是HEX: 01F4,用二進制表示:1 1111 0100。
每個十六進制位相當于4個二進制位:
十進制十六進制二進制
000000
110001
220010
330011
440100
550101
660110
770111
881000
991001
10A1010
11B1011
12C1100
13D1101
14E1110
15F1111
16100001 0000
17110001 0001
18120001 0010
19130001 0011
20140001 0100
每一個十六進制位對應的4個二進制位,F(xiàn)F對應的二進制位就是1111 1111.
八進制:
八進制數(shù)據(jù)用的稍微少一點,逢八進一。具體不詳細說,和上面差不多,用的并不多
BCD碼(數(shù)碼管顯示-摘自手冊P20)
最符合人們閱讀習慣的數(shù)字格式是十進制,在人們監(jiān)控或設置工作參數(shù)時,往往需要采用十進制格式進行數(shù)據(jù)顯示,而計算機內(nèi)部使用的是HEX格式,故需采用一種底層為每4個二進制位組成一個數(shù)字位,而每個數(shù)字位只能為十進制數(shù)的0~9,由此組成的數(shù)值,這種格式數(shù)字在存儲器中的編碼稱為BCD碼(Binary-Coded Decimal)。
在PLC內(nèi)部,原理上用4位二進制數(shù)代表1位十進制數(shù),在每一位BCD碼中,不存在HEX格式中的A~F。對于一個8bit寬度的寄存器單元,能存儲的最大BCD數(shù)只能是99,因此將HEX格式轉(zhuǎn)換為BCD碼后,會占用更大的存儲空間。
PLC內(nèi)部總是按HEX格式進行數(shù)據(jù)計算的,在驅(qū)動非智能的顯示設備(如數(shù)碼管)顯示數(shù)據(jù)之前,往往需要將PLC內(nèi)部的十六進制( HEX)格式數(shù)據(jù)先轉(zhuǎn)換為BCD碼,然后進行顯示輸出;將用戶以十進制方式設置的參數(shù)存入PLC內(nèi)存之前,則往往需要將該BCD碼轉(zhuǎn)換為十六進制( HEX)格式。
H1U/H2U系列PLC內(nèi)部提供了HEX與BCD兩種格式相互轉(zhuǎn)換的命令,在需要進行顯示輸出,或設置開關(guān)讀取的時候,執(zhí)行該格
式轉(zhuǎn)換指令。
人們在電腦顯示器上看到的十進制讀數(shù),都是經(jīng)過了計算機自動作BCD轉(zhuǎn)換后才顯示的;監(jiān)控時修改的參數(shù),則是電腦軟件作了HEX轉(zhuǎn)換后寫入的,無需人為干預而已。
進制轉(zhuǎn)換
一般都不要自己手動算,但是還是應該知道手動怎么算的。我們實際應用中都是使用轉(zhuǎn)換工具的,微軟自帶的計算器,就帶這個功能。下面給大家介紹一下微軟自帶的計算器如何進行數(shù)據(jù)類型轉(zhuǎn)換:
Windows鍵+R,然后輸入“calc”回車,就能打開系統(tǒng)自帶的計算器。
點擊左上角的查看,然后選擇程序員模式,就能進行各個數(shù)進制之間的轉(zhuǎn)換了。
可以自行選擇各種數(shù)據(jù)進制進行嘗試:
要將(無符號)二進制數(shù)10110101換算為十進制數(shù),則計算要復雜很多,一般這么算:
bit7bit6bit5bit4bit3bit2bit1bit0
10110101
2^72^62^52^42^32^22^12^0
1乘2^7 + 0乘2^6 + 1乘2^5 + 1乘2^4 + 0乘2^3+1乘2^2+0乘2^1 + 1乘2^0 = 181(無符號類型的算法)
如果有符號類型,最高位表示的是符號位,算法和這個不一樣,還要考慮補碼,反碼特別麻煩。。。
數(shù)據(jù)轉(zhuǎn)換手算方法在手冊P21上有詳細講解