當數(shù)據(jù)用規(guī)定的格式輸入后,在西門子的內(nèi)部存儲器中均需要以二進制的形式存儲,二進制格式與實際數(shù)據(jù)間的關系較復雜,它常常會給程序的調(diào)試與檢查帶來困難,為了更清楚地說明數(shù)據(jù)的使用方法與存儲形式,舉例如下。
【例1】利用數(shù)據(jù)裝載指令(指令代碼l),將各種十進制、十六進制數(shù)據(jù)讀入到累加器accu1。
程序指令如下:
①l+27 ,/將單字長(16位)的十進制常數(shù)27讀入到累加器l中;
②l1#一1 //將雙字長(32位)的十進制常數(shù)一l讀入到累加器l中:
③l2#1010 0000 0010 0001 //將單字長(16位)的二進制數(shù)1010 0000 0010 0001讀入到累
加器l中;
④ldw#16# aofl_bcd4 //將雙字長(32位)的十六進制常數(shù)aofl bcd4讀入到累加器l中;
⑤l-2.5 //將雙字長(32位)的浮點數(shù)“-2.5”讀入到累加器l中(有關浮點數(shù)c1勺存
儲格式見后述)。
【例2】利用數(shù)據(jù)裝載指令(指令代碼l),將ascii字符“end”讀入到累加器1中,并確定其執(zhí)行結果。
程序指令如下:
lfend. ∥將ascii字符“end”讀入到累加器l中
對照表8-5.2“ascii代碼表”可知,e=45;n=4e d=44,所以本字符在累加器1中的執(zhí)行結果為:“454e44”。
【例3】利用數(shù)據(jù)裝載指令(指令代碼l),將定時器時間值、計數(shù)器計數(shù)值讀入到累加器1中,并確定其執(zhí)行結果。
程序指令如下:
①lt#500ms ∥將定時器時間值(500ms)讀入到累加器l中;
②lc#100 //將計數(shù)器計數(shù)值(100)讀入到累加器l中;
定時器時間值、計數(shù)器計數(shù)值以常數(shù)形式存儲,因此,累加器l的執(zhí)行結果分別為500與100。
【例4】利用數(shù)據(jù)裝載指令(指令代碼l),將2字節(jié)(16位)的常數(shù)100、20分別讀入到累加器1的高、低字節(jié)中,并確定其執(zhí)行結果。
程序指令如下:
lb# (100,20) //將2字節(jié)(16位)的常數(shù)讀入到累加器l中;
本指令與常數(shù)讀入指令“l(fā)+27”的區(qū)別在于:
l +27指令:執(zhí)行指令是將常數(shù)27轉(zhuǎn)換為二進制后存儲于累加器1,因為27=(1b) 16,所以累加器l的執(zhí)行結果為“00 1b”。常數(shù)值的范圍為0~65535(即o—ffff)。
l b# (100,20)指令:執(zhí)行指令是將2個十進制常數(shù)轉(zhuǎn)換為二進制后,分別存儲于存儲器的高字節(jié)與低字節(jié)中,因為100=(64)16;20=(14) 16,所以累加器1的執(zhí)行結果為“64 14”。指令中括號內(nèi)的常數(shù)值的范圍為0~255(即o~ff)。
相關指令:
lb# (100,20,12,15) //將4字節(jié)(32位)的常數(shù)讀入到累加器l中。
【例5】利用數(shù)據(jù)裝載指令(指令代碼l),將4字節(jié)(32位)的地址數(shù)據(jù)10.2、m10.2分別讀入到累加器1中,并確定其執(zhí)行結果。
程序指令如下:
①lp#10.2 /,將雙字長(32位)的地址數(shù)據(jù)讀入到累加器l中;
②lp#m10.2 //將雙字長(32位)的地址數(shù)據(jù)讀入到累加器l中;
注意:地址數(shù)據(jù)在s7中的存儲格式如下:

地址位(bit31):“0”指針寄存器不含地址符,地址符bit24~bit26應為0;“l(fā)”指針寄存器含地址符,地址符由bit24~bit26指定。
地址符(bit24~bit26):地址位(bit31)為“1”時用于指定存儲器地址,地址的編碼如下:
000:地址p:
001:,地址i;
010:地址q;
011:地址m;
100:地址dbx;
101:地址dix;
110:地址l:
111:地址vl。
因此,在累加器1中,指令“l(fā) p#10.2”的執(zhí)行結果為“0000 0052”;指令“l(fā) p#10.2”的執(zhí)行結果為“8300 0052”。
【例6】利用數(shù)據(jù)裝載指令(指令代碼l),將日期數(shù)據(jù)2006-11-18讀入到累加器1中,并確定其執(zhí)行結果。
程序指令如下:
ld#2006_ll—l8 //將雙字長(32位)的日期讀入到累加器l中;
注意:日期在plc中的存儲格式為表格數(shù)據(jù),且以1990年1月1日作為起點“o”;以后每天增加1,1990年1月2日為“l(fā)”。因此,2006年11月18日對應累加器l的日期存儲數(shù)據(jù)為:6165;而2007年11月18日對應累加器1的日期存儲數(shù)據(jù)為:6165+365= 6530。
【例7】利用數(shù)據(jù)裝載指令(指令代碼l),將時間數(shù)據(jù)13:20:33.125s讀入到累加器1中,并確定其執(zhí)行結果。
程序指令如下:
ltod#13:20:33.125 ∥將雙字長(32位)的對閱讀入到累加器l中。
注意:時間在plc中的存儲格式為以ms為單位的數(shù)據(jù),如:
13:20:33.125s =(13×3600 +20×60+ 33.125)s= 48033125 ms
因此,執(zhí)行本指令后累加器1的時間存儲數(shù)據(jù)為:48033125。










