公司主營:西門子數(shù)控,S7-200CN.S7-200smart.S7-300.S7-400.S7-1200.6ES5 ET200 人機界面,變頻器,DP總線,MM變頻器,6SE70交流工程調(diào)速變頻器6RA70等系列產(chǎn)品。
產(chǎn)品簡介
詳細(xì)介紹
西門子屏6AV2181-4DB20-0AX0
SIEMENS 交、直流傳動裝置
控制語句是 SCL 表達(dá)式的一種類型,可用于執(zhí)行以下任務(wù):
● 程序分支
● 重復(fù) SCL 編程代碼的某些部分
● 跳轉(zhuǎn)到 SCL 程序的其它部分
● 按條件執(zhí)行
SCL 控制語句包括 IF-THEN、CASE-OF、FOR-TO-DO、WHILE-DO、REPEAT-
UNTIL、CONTINUE、GOTO 和 RETURN。
一條語句通常占一行代碼??梢栽谝恍兄休斎攵鄺l語句,或者可將一條語句斷開成多行代碼以使代碼易于閱讀。分隔符(如制表符、換行符和多余空格)在語法檢查期間會被忽略
。END 語句可終止控制語句。
以下示例顯示的是 FOR-TO-DO 控制語句。(兩種形式的代碼在語法上均有效。)
FOR x := 0 TO max DO sum := sum + value(x); END_FOR;
FOR x := 0 TO max DO
sum := sum + value(x); END_FOR;
還可以為控制語句提供標(biāo)簽。用語句前的逗點將標(biāo)簽隔開:
Label: <Statement>;
有關(guān)完整的 SCL 編程語言參考,請參見 STEP 7 在線幫助。
條件
條件是一個比較表達(dá)式或邏輯表達(dá)式,其結(jié)果為 BOOL 類型(值為 TRUE 或
FALSE)。以下示例顯示了各種類型的條件:
#Temperature > 50
#Counter <= 100 #CHAR1 < 'S'
關(guān)系表達(dá)式
(#Alpha <> 12) AND NOT #Beta 比較和邏輯表達(dá)式
5 + #Alpha 算術(shù)表達(dá)式
條件可以使用算術(shù)表達(dá)式:
● 如果結(jié)果是非零的任何值,則表達(dá)式的條件為 TRUE。
● 如果結(jié)果為零,則表達(dá)式的條件為 FALSE。
從 SCL 程序中調(diào)用其它代碼塊
要調(diào)用用戶程序中的其它代碼塊,只需使用參數(shù)輸入 FB 或 FC
的名稱(或地址)。對于 FB,還必須提供 FB 待調(diào)用的背景數(shù)據(jù)塊。
<DB 名稱> (參數(shù)列表) 作為單個背景調(diào)用
<#背景名稱> (參數(shù)列表) 作為多重背景調(diào)用
"MyDB"(MyInput:=10, MyInOut:="Tag1");
<FC 名稱> (參數(shù)列表) 調(diào)用
<操作數(shù)>:=<FC 名稱> (參數(shù)列表) 在表達(dá)式中調(diào)用
"MyFC"(MyInput:=10, MyInOut:="Tag1");
還可將塊從導(dǎo)航樹中拖動到 SCL 程序編輯器中,然后完成參數(shù)分配。
將塊注釋添加到 SCL 代碼
可通過在 (* 和 *) 之間加入注釋文本,將塊注釋添加到 SCL 代碼中。可在 (* 和 *) 之間添加任意數(shù)目的注釋行。SCL 程序塊可能包括多個塊注釋。為方便編程,SCL 編輯器包括一個塊注釋按鈕和通用控制語句:
尋址
與 LAD 和 FBD 一樣,SCL
允許用戶在用戶程序中使用變量地址(符號尋址)或地址。SCL
還允許使用變量作為數(shù)組索引。
尋址
%I0.0 在地址之前加上“%"符號。沒有“%",STEP 7
將在編譯時生成未定義的變量錯誤。
符號尋址
"PLC_Tag_1" PLC 變量表中的變量
"Data_block_1".Tag_1 數(shù)據(jù)塊中的變量
"Data_block_1".MyArray[#i] 數(shù)據(jù)塊數(shù)組中的數(shù)組元素
7.5.3.1 使用 PEEK 和 POKE 指令進行索引尋址
SCL 提供 PEEK 和 POKE 指令,可用來從數(shù)據(jù)塊、I/O
或存儲器中讀取內(nèi)容或是向其中寫入內(nèi)容。而您提供操作中具體字節(jié)偏移量或位偏移量的參數(shù)。
說明
與數(shù)據(jù)塊一起使用 PEEK 和 POKE
指令時,必須使用(未的)數(shù)據(jù)塊。同時需要注意 PEEK 和 POKE
指令僅用于傳輸數(shù)據(jù)。它們無法識別地址中的數(shù)據(jù)類型。
PEEK(area:=_in_,
dbNumber:=_in_, byteOffset:=_in_);
PEEK_WORD(area:=_in_,
dbNumber:=_in_, byteOffset:=_in_);
PEEK_DWORD(area:=_in_,
dbNumber:=_in_, byteOffset:=_in_);
PEEK_BOOL(area:=_in_,
dbNumber:=_in_, byteOffset:=_in_, bitOffset:=_in_);
讀取引用數(shù)據(jù)塊、I/O 或存儲區(qū)中由
byteOffset 引用的字節(jié)。
引用數(shù)據(jù)塊示例:
%MB100 := PEEK(area:=16#84,
dbNumber:=1, byteOffset:=#i);
引用 IB3 輸入示例:
%MB100 := PEEK(area:=16#81,
dbNumber:=0, byteOffset:=#i); // when #i = 3
讀取引用數(shù)據(jù)塊、I/O 或存儲區(qū)中由
byteOffset 引用的字。
示例:
%MW200 := PEEK_WORD(area:=16#84,
dbNumber:=1, byteOffset:=#i);
讀取引用數(shù)據(jù)塊、I/O 或存儲區(qū)中由
byteOffset 引用的雙字。
示例:
%MD300 := PEEK_DWORD(area:=16#84,
dbNumber:=1, byteOffset:=#i);
讀取引用數(shù)據(jù)塊、I/O 或存儲區(qū)中由
bitOffset 和 byteOffset 引用的布爾值。
示例:
%MB100.0 := PEEK_BOOL(area:=16#84,
dbNumber:=1, byteOffset:=#ii, bitOffset:=#j);
下一篇:西門子觸摸屏6AV2144-8MC10-0AA0