T LD8 調整數(shù)據(jù)塊存儲地址指針,指向下一存儲地址
L LW0 將循環(huán)次數(shù)計數(shù)器LW0的值裝入累加器1
LOOP NEXT 若累加器1的值不為0,將累加器減1繼續(xù)循環(huán);若累加
器為0,則結束
在FC100中,寄存器間接尋址指令OP NDB[LW0]使用了臨時本地數(shù)據(jù)LW0,變量表中定義的臨時變量雖然也在L堆棧中,但不能用于存儲器間接尋址,從這里也可看出臨時本地數(shù)據(jù)與臨時變量的區(qū)別。程序中LW2、LD4和LD8起的作用也可用臨時變量替代。
下面舉例說明如何使用FC100。在某應用中,機架0的4號槽位安裝了一個8模入模塊(地址256開始),若要將前6個模入模塊信號讀回,存入DB50.DBW10開始的6個字單元中,可按下列形式調用FC100:
CALL FC100
PIW_Add:= 256
CH_LEN:= 6
DB_No:= 50
DBW_Addr:= 10
數(shù)據(jù)塊
數(shù)據(jù)塊定義在S7 CPU存儲器中,用戶可在存儲器中建立一個或多個數(shù)據(jù)塊。每個數(shù)據(jù)塊可大可小,但CPU對數(shù)據(jù)塊數(shù)量及數(shù)據(jù)總量有限制,如對于CPU314,用作數(shù)據(jù)塊的存儲器多為8 KB(8192 B),用戶定義的數(shù)據(jù)總量不能超出這個限制。對數(shù)據(jù)塊必須遵循先定義后使用的原則,否則,將造成系統(tǒng)錯誤。
1. 定義數(shù)據(jù)塊
在編程階段和運行程序中都能定義數(shù)據(jù)塊。大多數(shù)數(shù)據(jù)塊是在編程階段用STEP 7開發(fā)軟件包定義的,定義內容包括數(shù)據(jù)塊號及塊中的變量(包括變量符號名、數(shù)據(jù)類型以及初始值等),定義完成后,數(shù)據(jù)塊中變量的順序及類型決定了數(shù)據(jù)塊的數(shù)據(jù)結構,變量的數(shù)量決定了數(shù)據(jù)塊的大小。數(shù)據(jù)塊在使用前,必須作為用戶程序的一部分下載到CPU中。
如果確實需要,還可以在程序運行中動態(tài)定義一個數(shù)據(jù)塊。動態(tài)定義時,數(shù)據(jù)塊號是自動產(chǎn)生的,數(shù)據(jù)塊在存儲器中的位置是動態(tài)分配的。由于要定義的數(shù)據(jù)塊有可能大于CPU存儲器(用于數(shù)據(jù)塊的部分)的剩余空間,因此動態(tài)定義過程有可能失敗
2.訪問數(shù)據(jù)塊
在用戶程序中可能定義了許多數(shù)據(jù)塊,而每個數(shù)據(jù)塊中又有許多不同類型的數(shù)據(jù),因此,訪問時需要明確數(shù)據(jù)塊號和數(shù)據(jù)塊中的數(shù)據(jù)類型與位置。根據(jù)明確數(shù)據(jù)塊號的不同方法,可以用多種方法訪問數(shù)據(jù)塊中的數(shù)據(jù)。
直接在訪問指令中寫明數(shù)據(jù)塊號,如:
L DB5.DBW10
T DB10.DBW20
L Motor_1.Speed 符號地址
另一種方法是“先打開后訪問”。在訪問某數(shù)據(jù)塊中的數(shù)據(jù)前,先“打開”這個數(shù)據(jù)塊,也就是將數(shù)據(jù)塊號(數(shù)據(jù)塊的起始地址)裝入數(shù)據(jù)塊寄存器。這樣,存放在數(shù)據(jù)塊中的數(shù)據(jù)就可利用數(shù)據(jù)塊起始地址加偏移量的方法來訪問。如:
OPN DB5
L DBW10
OPN DB10
T DBW20
在打開一個數(shù)據(jù)塊時,先打開的數(shù)據(jù)塊會自動關閉(沒有專門的數(shù)據(jù)塊關閉指令)。由于有兩個數(shù)據(jù)塊寄存器(DB和DI寄存器),因此,多可同時打開兩個數(shù)據(jù)塊。一個作為背景數(shù)據(jù)塊,數(shù)據(jù)塊的起始地址存儲在DI寄存器中;另一個作為共享數(shù)據(jù)塊,數(shù)據(jù)塊的起始地址存儲在DB寄存器中。打開背景數(shù)據(jù)塊,在調用FB時可以自動實現(xiàn)。由于調用FB時使用DI寄存器,因此,一般不在FB程序中用OPN DI n指令打開數(shù)據(jù)塊。
3. 背景數(shù)據(jù)塊和共享數(shù)據(jù)塊
背景數(shù)據(jù)塊和共享數(shù)據(jù)塊有不同的用途。任何FB、FC或OB均可讀寫存放在共享數(shù)據(jù)塊中的數(shù)據(jù)。背景數(shù)據(jù)塊是FB運行時的工作存儲區(qū),它存放FB的部分運行變量。調用FB時,必須一個相關的背景數(shù)據(jù)塊。作為規(guī)則,只有FB塊才能訪問存放在背景數(shù)據(jù)塊中的數(shù)據(jù)。
日期-時間 DATE_AND_TIME 長度為8 B(64位)。按BCD碼格式順序存儲以下信息:年(字節(jié)0)、月(字節(jié)1)、日(字節(jié)2)、小時(字節(jié)3)、分(字節(jié)4)、秒(字節(jié)5)、毫秒(字節(jié)6和7的高半字節(jié))、星期(字節(jié)7的低半字節(jié))
字符串 STRING 字符串是一組ASCII碼,一個串內可定義多254個字符,占用256 B內存。串中每個字符占用1 B,內存中頭兩個字節(jié)存儲串的長度信息。*個字節(jié)存放此串的定義長度(默認值為254個字符),第二個字節(jié)存放字符串實際長度。例如,String[7]定義長度為7的字符串,占用內存9 B(2+7)。若不定義長度,則默認為254個字符
茂名西門子觸摸屏代理商 茂名西門子觸摸屏代理商