PLC數據裝載指令讀入累加器程序
發(fā)布于2022-12-21 14:24
36
2
標簽:PLC數據
當數據用規(guī)定的格式輸入后,在PLC的內部存儲器中均需要以二進制的形式存儲,二進制格式與實際數據間的關系較復雜,它常常會給程序的調試與檢查帶來困難,為了更清楚地說明數據的使用方法與存儲形式,現舉例如下。
【例3-12】 利用數據裝載指令(指令代碼L),將各種十進制、十六進制數據讀入到累加器ACCU1。其程序指令如下:
①L 27 //將單字長(16位)的十進制常數27讀入到累加器1中;
②L L#-1 //將雙字長(32位)的十進制常數-1讀入到累加器1中;
③L 2#1010 0000 0010 0001 //將單字長(16位)的二進制數1010 0000 00100001讀入到累加器1中;
④L DW # 16 # AOF1_BCD4 //將雙字長(32位)的十六進制常數讀入到累加器1中;
⑤L -2.5 //將雙字長(32位)的浮點數"-2.5"讀入到累加器1中(有關浮點數的存儲格式見后述)。
【例3-13】利用數據裝載指令(指令代碼L),將ASCII字符"END"讀入到累加器1 中,并確定其執(zhí)行結果。其程序指令如下:
L 'END' //將ASCII字符"END"讀入到累加器1中;
對照表3-5“ASCII代碼表”可知,E=45;N=4E;D=44,所以本字符在累加器1中的執(zhí)行結果為“454E44”。
【例3-14】利用數據裝載指令(指令代碼L),將定時器時間值、計數器計數值讀入到累加器1中,并確定其執(zhí)行結果。其程序指令如下:
①L T#500ms //將定時器時間值(500ms)讀入到累加器1中;
②L C#100 //將計數器計數值(100)讀入到累加器1中;
定時器時間值、計數器計數值均以常數形式存儲,因此,累加器1的執(zhí)行結果分別為500與100。
【例3-15】 利用數據裝載指令(指令代碼L),將2字節(jié)(16位)的常數100、20分別讀入到累加器1的高、低字節(jié)中,并確定其執(zhí)行結果。其程序指令如下:
L B#(100,20) //將2字節(jié)(16位)的常數讀入到累加器1中;本指令與常數讀入指令“L 27”的區(qū)別如下。
L 27指令:執(zhí)行指令是將常數27轉換為二進制后存儲于累加器1,因為27=(1B)s,所以累加器1的執(zhí)行結果為“001B”。常數值的范圍為0~65535(即0~FFF)。
LB#(100,20)指令:執(zhí)行指令是將2個十進制常數轉換為二進制后,分別存儲于存儲器的高字節(jié)與低字節(jié)中,因為100=(64)16,20=(14)16,所以累加器1的執(zhí)行結果為"6414"。指令中括號內的常數值的范圍為0~255(即0~FF)。其相關指令:
①L P#10.2 //將雙字長(32位)的地址數據讀入到累加器1中;
②L P#M10.2 //將雙字長(32位)的地址數據讀入到累加器1中;
注意:地址數據在S7中的存儲格式見圖3-21及其說明。
因此,在累加器1中,指令"L P#10.2"的執(zhí)行結果為"0000 0052";指令"L P =M10.2"的執(zhí)行結果為"83000052"。
【例3-16】 利用數據裝載指令(指令代碼L),將日期數據2006-11-18讀入到累加器1 中,并確定其執(zhí)行結果。其程序指令如下:
L D#2006_11_18 //將雙字長(32位)的日期讀入到累加器1中;
注意:日期在PLC中的存儲格式為表格數據,且以1990年1月1日作為起點"0";以后每天增加1,1990年1月2日為"1"。因此,2006年11月18日對應累加器1的日期存儲數據為6165;而2007年11月18日對應累加器1的日期存儲數據為6165 365=6530?!纠?-17】利用數據裝載指令(指令代碼L),將時間數據13:20:33.125讀入到累加器1中,確定其執(zhí)行結果。其程序指令如下:
L TOD#13:20:33.125 //將雙字長(32位)的時間讀入到累加器1中。注意:時間在PLC中的存儲格式為以ms為單位的數據,如:13:20:33.125=(13×3600 20×60 33.125)s=48033125ms 因此,執(zhí)行本指令后累加器1的時間存儲數據為:48033125。