產(chǎn)品簡介
詳細介紹
公司主營:數(shù)控,S7-200PLC S7-300PLC S7-400PLC S7-1200PLC 6ES5 ET200 西門子屏,變頻器,西門子DP電纜 變頻器 6SE70交流工程調(diào)速變頻器6RA70直流調(diào)速裝置 SITOP電源,電線電纜,數(shù)控備件,伺服電機等工控產(chǎn)品.系統(tǒng)及伺服電機,力矩電機,直線電機,伺服驅(qū)動備件等等。主營產(chǎn)品或服務(wù):西門子PLC,西門子變頻器,西門子數(shù)控系統(tǒng),西門子伺服電機,西門子人機界面,西門子軟啟動器,西門子觸摸屏,西門子工業(yè)以太網(wǎng),西門子LOGO!
自動化科技電子(杭州)有限公司
6AG1214-1AG40-2XB0西門子S7-1200PLC模塊SIPLUS S7-1200 CPU 1214C 直流/直流/直流 -40....+70°C 帶防腐蝕涂層 根據(jù) 6ES7214-1AG40-0XB0 . 緊湊型 CPU,DC/DC/DC, 機載 I/O: 14 個數(shù)字輸入 24VDC 10 個數(shù)字輸出 24VDC 2 個模擬輸入 0-10VDC, 電源:直流 20.4-28.8V
SCL 表達式和運算
構(gòu)造 SCL 表達式
SCL 表達式是用于計算值的公式。表達式由操作數(shù)和運算符(如 *、/、+ 或 -
)組成。操作數(shù)可以是變量、常量或表達式。
表達式的計算按一定的順序進行,具體由以下因素決定:
● 每個運算符均具有預(yù)定義的優(yōu)先級,首先執(zhí)行優(yōu)先級高的運算。
● 按從左至右的順序處理優(yōu)先級相同的運算符。
● 可使用圓括號要一起計算的一系列運算符。
表達式的結(jié)果可用于將值分配給程序使用的變量、用作由控制語句使用的條件、用作其它
SCL 指令的參數(shù)或者用于調(diào)用代碼塊。
表格 7- 2 SCL 中的運算符
類型 操作 操作員 優(yōu)先級
圓括號 (表達式) ( , ) 1
數(shù)學(xué) 乘方 ** 2
符號(一元加號) + 3
符號(一元減號) - 3
倍增 * 4
除法 / 4
取模 MOD 4
加法 + 5
減法 - 5
比較 小于 < 6
小于或等于 <= 6
大于 > 6
大于或等于 >= 6
等于 = 7
不等于 <> 7
位邏輯 取反(一元) NOT 3
AND 邏輯運算 AND 或 & 8
6AG1214-1AG40-2XB0西門子S7-1200PLC模塊SIPLUS S7-1200 CPU 1214C 直流/直流/直流 -40....+70°C 帶防腐蝕涂層 根據(jù) 6ES7214-1AG40-0XB0 . 緊湊型 CPU,DC/DC/DC, 機載 I/O: 14 個數(shù)字輸入 24VDC 10 個數(shù)字輸出 24VDC 2 個模擬輸入 0-10VDC, 電源:直流 20.4-28.8V
類型 操作 操作員 優(yōu)先級
異或邏輯運算 XOR 9
OR 邏輯運算 OR 10
賦值 賦值 := 11
作為一種高級編程語言,SCL 使用標(biāo)準(zhǔn)語句實現(xiàn)基本任務(wù):
● 賦值語句::=
● 算術(shù)功能:+、-、* 和 /
● 全局變量的尋址:"<變量名稱>"(變量名稱或數(shù)據(jù)塊名稱括在雙引號內(nèi))
● 局部變量的尋址:#<變量名稱>(在變量名稱前加“#”符號)
以下示例顯示了用法不同的各種表達式:
"C" := #A+#B; 將兩個局部變量之和賦值給一個變量
"Data_block_1".Tag := #A; 為數(shù)據(jù)塊變量賦值
IF #A > #B THEN "C" := #A; IF-THEN語句的條件
"C" := SQRT (SQR (#A) + SQR (#B)); SQRT指令的參數(shù)
算術(shù)運算符可以處理各種數(shù)值數(shù)據(jù)類型。結(jié)果的數(shù)據(jù)類型取決于高有效操作數(shù)的數(shù)據(jù)類
型。例如,使用 INT 操作數(shù)和 REAL 操作數(shù)的乘法運算會產(chǎn)生 REAL 結(jié)果值。
控制語句是 SCL 表達式的一種類型,可用于執(zhí)行以下任務(wù):
● 程序分支
● 重復(fù) SCL 編程代碼的某些部分
● 跳轉(zhuǎn)到 SCL 程序的其它部分
● 按條件執(zhí)行
SCL 控制語句包括 IF-THEN、CASE-OF、FOR-TO-DO、WHILE-DO、REPEATUNTIL、CONTINUE、GOTO 和 RETURN。
一條語句通常占一行代碼。可以在一行中輸入多條語句,或者可將一條語句斷開成多行代
碼以使代碼易于閱讀。分隔符(如制表符、換行符和多余空格)在語法檢查期間會被忽略
。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 在線幫助。
條件
條件是一個比較表達式或邏輯表達式,其結(jié)果為 BOOL 類型(值為 TRUE 或
FALSE)。以下示例顯示了各種類型的條件:
#Temperature > 50
#Counter <= 100
#CHAR1 < 'S'
關(guān)系表達式
(#Alpha <> 12) AND NOT #Beta 比較和邏輯表達式
5 + #Alpha 算術(shù)表達式
條件可以使用算術(shù)表達式:
● 如果結(jié)果是非零的任何值,則表達式的條件為 TRUE。
● 如果結(jié)果為零,則表達式的條件為 FALSE。
6AG1214-1AG40-2XB0西門子S7-1200PLC模塊SIPLUS S7-1200 CPU 1214C 直流/直流/直流 -40....+70°C 帶防腐蝕涂層 根據(jù) 6ES7214-1AG40-0XB0 . 緊湊型 CPU,DC/DC/DC, 機載 I/O: 14 個數(shù)字輸入 24VDC 10 個數(shù)字輸出 24VDC 2 個模擬輸入 0-10VDC, 電源:直流 20.4-28.8V
從 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ù)列表) 標(biāo)準(zhǔn)調(diào)用
<操作數(shù)>:=<FC 名稱> (參數(shù)列表) 在表達式中調(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
將在編譯時生成未定義的變量錯誤。
使用 PEEK 和 POKE 指令進行索引尋址
SCL 提供 PEEK 和 POKE 指令,可用來從數(shù)據(jù)塊、I/O
或存儲器中讀取內(nèi)容或是向其中寫入內(nèi)容。而您提供操作中具體字節(jié)偏移量或位偏移量的
參數(shù)。
說明
與數(shù)據(jù)塊一起使用 PEEK 和 POKE
指令時,必須使用標(biāo)準(zhǔn)(未優(yōu)化的)數(shù)據(jù)塊。同時需要注意 PEEK 和 POKE
指令僅用于傳輸數(shù)據(jù)。它們無法識別地址中的數(shù)據(jù)類型。
PEEK(area:=_in_,
dbNumber:=_in_,
byteOffset:=_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
PEEK_WORD(area:=_in_,
dbNumber:=_in_,
byteOffset:=_in_);
讀取引用數(shù)據(jù)塊、I/O 或存儲區(qū)中由
byteOffset 引用的字。
示例:
%MW200 := PEEK_WORD(area:=16#84,
dbNumber:=1, byteOffset:=#i);
PEEK_DWORD(area:=_in_,
dbNumber:=_in_,
byteOffset:=_in_);
讀取引用數(shù)據(jù)塊、I/O 或存儲區(qū)中由
byteOffset 引用的雙字。
示例:
%MD300 := PEEK_DWORD(area:=16#84,
dbNumber:=1, byteOffset:=#i);
PEEK_BOOL(area:=_in_,
dbNumber:=_in_,
byteOffset:=_in_,
bitOffset:=_in_);
讀取引用數(shù)據(jù)塊、I/O 或存儲區(qū)中由
bitOffset 和 byteOffset 引用的布爾值。
示例:
%MB100.0 := PEEK_BOOL(area:=16#84,
dbNumber:=1, byteOffset:=#ii,
bitOffset:=#j);