|
SCL語(yǔ)言是由Pascal而生的結(jié)構(gòu)化程序語(yǔ)言,與梯形圖相(LAD)比,SCL語(yǔ)言的靈活程度更高,易于編寫(xiě)控制算法。
本教程雖然使用的是S7-1500系列的PLC,但實(shí)際上是面向S7-1200的用戶,在1500系列的PLC中,筆者更希望使用STL來(lái)對(duì)應(yīng)他優(yōu)越的計(jì)算處理能力。在程序段中直接右擊插入即可,但是插入的程序段并不能完全使用SCL語(yǔ)法,GOTO等跳轉(zhuǎn)指令就不能使用。在SCL中一般不能使用絕對(duì)地址進(jìn)行變量地址的訪問(wèn),變量表中的變量一般使用變量名稱進(jìn)行訪問(wèn)。
創(chuàng)建的SCL塊兒可以在觀測(cè)欄中顯示變量的地址,如下,為示例程序:
1.png (22.08 KB, 下載次數(shù): 108)
下載附件
2020-8-1 11:47 上傳
在SCL中,:= 表示賦值。
二、常量,變量及相關(guān)指令
(1)常量及變量的聲明
在博圖中,可以在代碼區(qū)進(jìn)行變量的聲明,也可以在程序塊內(nèi)部進(jìn)行變量聲明。具體如下圖:
變量聲明區(qū)有如下區(qū)別:
無(wú)論是FC還是FB塊,都是函數(shù)塊
條件語(yǔ)句
IF語(yǔ)句
使用“條件執(zhí)行”指令,可以根據(jù)條件控制程序流的分支。該條件是結(jié)果為布爾值(TRUE 或 FALSE)的表達(dá)式。可以將邏輯表達(dá)式或比較表達(dá)式作為條件。
執(zhí)行該指令時(shí),將對(duì)指定的表達(dá)式進(jìn)行運(yùn)算。如果表達(dá)式的值為 TRUE,則表示滿足該條件;如果其值為 FALSE,則表示不滿足該條件。
根據(jù)分支的類型,可以對(duì)以下形式的指令進(jìn)行編程:
IF 分支:
IF <condition> THEN <instructions>END_IF;
如果滿足該條件,則將執(zhí)行 THEN 后編寫(xiě)的指令。如果不滿足該條件,則程序?qū)?END_IF 后的下一條指令開(kāi)始繼續(xù)執(zhí)行。
IF 和 ELSE 分支:
IF <condition> THEN <instructions1>ELSE <Instructions0>END_IF;
如果滿足該條件,則將執(zhí)行 THEN 后編寫(xiě)的指令。如果不滿足該條件,則將執(zhí)行 ELSE 后編寫(xiě)的指令。程序?qū)?END_IF 后的下一條指令開(kāi)始繼續(xù)執(zhí)行。IF、ELSIF 和 ELSE 分支:
IF <condition1> THEN <instructions1>ELSIF <condition2> THEN <instruction2>ELSE <Instructions0>END_IF;
如果滿足第一個(gè)條件(<條件 1>),則將執(zhí)行 THEN 后的指令(<指令 1>)。執(zhí)行這些指令后,程序?qū)?END_IF 后繼續(xù)執(zhí)行。如果不滿足第一個(gè)條件,則將檢查第二個(gè)條件(<條件 2>)。如果滿足第二個(gè)條件(<條件 2>),則將執(zhí)行 THEN 后的指令(<指令 2>)。執(zhí)行這些指令后,程序?qū)?END_IF 后繼續(xù)執(zhí)行。如果不滿足任何條件,則先執(zhí)行 ELSE 后的指令(<指令 0>),再執(zhí)行 END_IF 后的程序部分。在 IF 指令內(nèi)可以嵌套任意多個(gè) ELSIF 和 THEN 組合。可以選擇對(duì) ELSE 分支進(jìn)行編程。IF 指令的語(yǔ)法如下所示:
IF "Tag_1" = 1THEN "Tag_Value" := 10;ELSIF "Tag_2" = 1THEN "Tag_Value" := 20;ELSIF "Tag_3" = 1THEN "Tag_Value" := 30;ELSE "Tag_Value" := 0;END_IF;
后續(xù)帖子會(huì)慢慢講述指令的運(yùn)用
|
|