色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

西門子SCL語言編程常用指令

PLC技術圈 ? 來源:PLC技術圈 ? 2020-09-07 17:33 ? 次閱讀

指令

SCL作為一種編程語言,可以實現LAD/FBD所有的功能,大多數的指令與LAD/FBD都是相同的,只是在編輯器中的外形不同。只有一些指令使用是不太一樣的甚至LAD/FBD沒有的,這里只介紹這些不同的。

SCL特殊的指令有以下幾種,如圖1-3紅框中的指令:

圖1 讀寫存儲器

圖2 轉換操作

圖3 程序控制指令

在這三部分中,讀寫存儲器的PEEK POKE指令可以參考鏈接,轉換操作可以參考鏈接,這里只介紹圖3的程序控制指令。

程序控制指令

程序控制指令見以下表格。

程序控制語句 說明
選擇 IF-THEN語句 用將程序執行轉移到兩個備選分支之一(取決于條件為 True 還是 False)
CASE語句 用于選擇執行 n 個備選分支之一(取決于變量值)
循環 FOR語句 只要控制變量在指定值范圍內,就重復執行某一語句序列
WHILE-DO語句 只要仍滿足執行條件,就重復執行某一語句序列
REPEAT-UNTIL語句 重復執行某一語句序列,直到滿足終止條件為止
程序跳轉 CONTINUE語句 停止執行當前循環迭代
EXIT語句 無論是否滿足終止條件,都會隨時退出循環
GOTO語句 使程序立即跳轉到指定標簽
RETURN語句 使程序立刻退出正在執行的塊,返回到調用塊

程序控制指令是SCL編程的基礎,接近高級語言的指令,雖然這些功能通過LAD/FBD也可以實現,但使用SCL編寫會更加方便,邏輯條理也更加清晰。

IF:條件執行

說明:使用"條件執行"指令,可以根據條件控制程序流的分支。該條件是結果為布爾值(True 或 False)的表達式。可以將Bool變量、邏輯表達式或比較表達式作為條件。

執行該條件執行指令時,將對指定的表達式進行運算。如果表達式的值為 True,則表示滿足該條件;如果其值為 False,則表示不滿足該條件。

參數

根據分支的類型,可以對以下形式的指令進行編程:

IF...THEN... 分支:

IF <條件>

THEN <語句1>

END_IF;

圖4 IF...THEN... 分支

如果滿足該條件,則將執行 THEN 后編寫的指令。如果不滿足該條件,則程序將從 END_IF 后的下一條指令開始繼續執行。

IF...THEN... ELSE...分支:

IF <條件>

THEN <語句1>

ELSE <語句2>

END_IF;

圖5 IF...THEN... ELSE...分支

如果滿足該條件,則將執行 THEN 后編寫的語句。如果不滿足該條件,則將執行 ELSE 后編寫的語句。不論執行哪一個語句,之后都將從 END_IF 后的下一條指令開始繼續執行。

IF...THEN... ELSIF...分支:

IF <條件1>

THEN <語句1>

ELSIF <條件2>

THEN <語句2>

END_IF;

圖6 IF...THEN... ELSIF...分支

如果滿足條件1,則將執行 THEN 后的語句1,執行這些語句后,程序將從 END_IF 后繼續執行。

如果不滿足條件1,則將檢查條件2。如果滿足條件2,則將執行 THEN 后的語句2。執行這些語句后,程序將從 END_IF 后繼續執行。

如果不滿足任何條件,則直接執行 END_IF 后的程序部分。

在 IF 指令內可以嵌套任意多個 ELSIF 和 THEN 組合。可以選擇對 ELSE 分支進行編程。

參數

下表列出了該指令的參數:

參數 數據類型 存儲區 說明
<條件> BOOL I、Q、M、D、L 待求值的表達式。
<語句> - 在滿足條件時,要執行THEN后的語句。如果不滿足條件,則執行 ELSE 后編寫的語句。

示例

圖7 IF示例

下表展示了不同的操作數數值對目標變量的影響:

操作數
"Tag_1" True False False False
"Tag_2" False True False False
"Tag_3" False False True False
"Tag_Value" 10 20 30 0

CASE:創建多路分支

說明:使用"創建多路分支"指令,可以根據數字表達式的值執行多個指令序列中的一個。

按如下方式聲明此指令:

CASE <變量> OF

<常數1>: <語句1>;

<常數2>: <語句2>;

......

<常數n>: <語句n>;

ELSE <語句>;

END_CASE;

圖8 CASE語句

參數

下表列出了該指令的參數:

參數 數據類型 存儲區 說明
<變量> 整數、位序列* I、Q、M、D、L 與設定的常數值進行比較的值。
<常數> 位序列 - 若為位序列,則常數可以為以下值:
二進制數(例如,2#10)
八進制數(例如,8#77)
十六進制數(例如,16#AD
未定型的常數(例如,1000)
整數 作為指令序列執行條件的常數值。常數可以為以下值:
整數(例如,5)
整數范圍(例如,15 到 20)
由整數和范圍組成的枚舉(例如,10、11、15 到 20)
<語句> - - 當表達式的值等于某個常數值時,將執行該常數后的各種指令。如果不滿足條件,則執行 ELSE 后編寫的指令。如果兩個值不相等,則執行這些指令。

* TIA PORTAL V16開始支持位序列數據類型的變量

示例

圖9 CASE示例

下表展示了不同的操作數數值對目標變量的影響:

操作數
"Tag_Value" 0 1,3,5 6,7,8,9,10 16,17,20,21,22,23,24,25 其他
"Tag_1" 1 - - - -
"Tag_2" - 1 - - -
"Tag_3" - - 1 - -
"Tag_4" - - - 1 -
"Tag_5" - - - - 1

FOR:在計數循環中執行

說明:使用"在計數循環中執行"指令,重復執行程序循環,直至運行變量不在指定的取值范圍內。

也可以嵌套程序循環。在程序循環內,可以編寫包含其它運行變量的其它程序循環。

通過指令"復查循環條件"(Continue),可以終止當前正在運行的程序循環。通過指令"立即退出循環"(Exit)終止整個循環的執行。

注意:

有關運行次數和運行變量的信息

程序運行時無法更改運行次數。出于性能原因,應在塊接口的"Temp"部分中聲明運行變量。在循環中,該運行變量無法更改。

按如下方式聲明此指令:

FOR <運行變量> := <起始值> TO <結束值> BY <增量> DO

<語句>;

END_FOR;

如果增量為1,可以簡寫為:

FOR <運行變量> := <起始值> TO <結束值> DO

<語句>;

END_FOR;

圖10 FOR語句

下表列出了該指令的參數:

參數 數據類型 存儲區 說明
<運行變量> 有符號整數、無符號整數* I、Q、M、D、L 執行循環時會計算其值的操作數。執行變量的數據類型將確定其它參數的數據類型。
<起始值> I、Q、M、D、L 表達式,在運行變量首次執行循環時,將為運行變量分配該表達式的值。
<結束值> I、Q、M、D、L 表達式,在運行程序最后一次循環時會為運行變量分配該表達式的值。在每個循環后都會檢查運行變量的值:
未達到結束值:
執行符合 DO 的語句
達到結束值:
最后執行一次 FOR 語句
超出結束值:
完成 FOR 循環
執行該指令期間,不允許更改結束值。
<增量> I、Q、M、D、L 表達式,根據增量表達式的值,執行變量在每次循環后都會遞增(正增量)或遞減(負增量)自身變量值。
如果未指定增量,則在每次循環后執行變量的值加 1。
執行該指令期間,不允許更改增量。
<語句> - 只要運行變量的值在取值范圍內,每次循環都就會執行的語句。取值范圍由起始值和結束值定義。

*TIA PORTAL V16開始支持無符號整數類型的變量

示例

圖11 FOR示例

Tag_Value 操作數乘以b_array 數組變量的元素 (2, 4, 6, 8)。并將計算結果讀入到a_array 數組變量的元素 (2, 4, 6, 8) 中。

下表展示了給定 Tag_Value 與 b_array[i] 的值得到 a_array[i] 的結果:

設定 Tag_Value
5
設定 b_array[2] b_array[4] b_array[6] b_array[8]
3 5 7 9
結果 a_array[2] a_array[4] a_array[6] a_array[8]
15 25 35 45

WHILE:滿足條件時執行

說明:使用"滿足條件時執行"指令可以重復執行程序循環,直至不滿足執行條件為止。該條件是結果為布爾值(True 或 False)的表達式。可以將邏輯表達式或比較表達式作為條件。

執行該指令時,將對指定的表達式進行運算。如果表達式的值為 True,則表示滿足該條件;如果其值為 False,則表示不滿足該條件。

也可以嵌套程序循環。在程序循環內,可以編寫包含其它運行變量的其它程序循環。

通過指令"復查循環條件"(Continue),可以終止當前連續運行的程序循環。通過指令"立即退出循環"(Exit)終止整個循環的執行。

可按如下方式聲明此指令:

WHILE <條件>

DO <語句>;

END_WHILE;

圖12 WHILE語句

參數

下表列出了該指令的參數:

參數 數據類型 存儲區 說明
<條件> BOOL I、Q、M、D、L 表達式,每次執行循環之前都需要進行求值。
<語句> - 在滿足條件時,要執行的語句。如果不滿足條件,則程序將從 END_WHILE 后繼續執行。

示例

圖13 WHILE示例

下表展示了循環初始和循環結束時變量值的變化

初始 循環結束
Tag_2 5
Tag_1 0 5

REPEAT:不滿足條件時執行

說明:使用"不滿足條件時執行"指令可以重復執行程序循環,直至不滿足執行條件為止。該條件是結果為布爾值(True 或 False)的表達式。可以將邏輯表達式或比較表達式作為條件。

執行該指令時,將對指定的表達式進行運算。如果表達式的值為 True,則表示滿足該條件;如果其值為 False,則表示不滿足該條件。

即使滿足終止條件,至少也會執行一次循環內的語句。

也可以嵌套程序循環。在程序循環內,可以編寫包含其它運行變量的其它程序循環。

通過指令"復查循環條件"(Continue),可以終止當前連續運行的程序循環。通過指令"立即退出循環"(Exit)終止整個循環的執行。

可按如下方式聲明此指令:

REPEAT <語句>;

UNTIL <條件>

END_REPEAT;

圖14 REPEAT語句

參數

下表列出了該指令的參數:

參數 數據類型 存儲區 說明
<語句> - 在設定條件的值為 False 時執行的指令。即使滿足終止條件,此指令也執行一次。
<條件> BOOL I、Q、M、D、L 表達式,每次執行循環之后都需要進行求值。如果表達式的值為 False,則將再次執行程序循環。如果表達式的值為 True,則程序循環將從 END_REPEAT 后繼續執行。

示例

圖15 REPEAT示例

下表展示了循環初始和循環結束時變量值的變化

初始 循環結束
Tag_2 5
Tag_1 0 6

CONTINUE:復查循環條件

說明:使用"復查循環條件"指令,可以結束 FOR、WHILE 或 REPEAT 循環的當前程序運行。

執行該指令后,將再次計算繼續執行程序循環的條件。該指令將影響其所在的程序循環。

圖16 CONTINUE用在FOR循環

圖17 CONTINUE用在WHILE循環

圖18 CONTINUE用在REPEAT循環

示例

圖19 CONTINUE示例

下表展示了計算結果:

變量 計算結果
"DB10".Test[0] -
"DB10".Test[1] -
"DB10".Test[2] -
"DB10".Test[3] -
"DB10".Test[4] -
"DB10".Test[5] 1
"DB10".Test[6] 1
"DB10".Test[7] 1

如果滿足條件 i < 5,則不執行后續值分配 ("DB10".Test[i] := 1)。運行變量 (i) 以增量"1"遞增,然后檢查其當前值是否在設定的循環取值范圍內。如果執行變量在循環取值范圍內,則將再次計算 IF 的條件。

如果不滿足條件 i < 5,則將執行后續值分配 ("DB10".Test[i] := 1) 并開始一個新循環。在這種情況下,執行變量也會以增量"1"進行遞增并接受檢查。

EXIT:立即退出循環

說明:使用"立即退出循環"指令,可以隨時取消 FOR、WHILE 或 REPEAT 循環的執行,而無需考慮是否滿足條件,并在循環結束(END_FOR、END_WHILE 或 END_REPEAT)后繼續執行程序。

該指令將影響其所在的程序循環。

圖20 EXIT語句

示例

圖21 EXIT示例

下表展示了計算結果:

變量 計算結果
"DB10".Test[0] 1
"DB10".Test[1] 1
"DB10".Test[2] 1
"DB10".Test[3] 1
"DB10".Test[4] 1
"DB10".Test[5] 1
"DB10".Test[6] -
"DB10".Test[7] -

如果滿足條件 i > 5,則將取消循環執行。程序將從 END_FOR 后繼續執行。

如果不滿足條件 i <= 5,則將執行后續值分配 ("DB10".Test[i] :=1) 并開始一個新循環。將運行變量 (i) 以 1 進行遞增,并進行檢查該變量的當前值是否在程序中設定的循環取值范圍之內。如果執行變量 (i) 在循環取值范圍內,則將再次計算 IF 的條件。

GOTO:跳轉

說明:使用"跳轉"指令,可以從標注為跳轉標簽的指定點開始繼續執行程序。

跳轉標簽和"跳轉"指令必須在同一個塊中。在一個塊中,跳轉標簽的名稱只能指定一次。每個跳轉標簽可以是多個跳轉指令的目標。不允許從"外部"跳轉到程序循環內,但允許從循環內跳轉到"外部"。

注意:

LAD/FBD語言內的SCL段,不能使用GOTO指令。

跳轉標簽遵循以下語法規則:

字母(a 至 z,A 至 Z)

字母和數字組合;請必須字母為開始

可按如下方式聲明此指令:

GOTO <跳轉標簽>;

...

<跳轉標簽>: <語句>

示例

圖22 GOTO示例

下表展示了每個操作數數值對目標變量的變化影響:

操作數
Tag_Value 1 2 3 其他
初始值 結束值 初始值 結束值 初始值 結束值 初始值 結束值
Tag_1 0 1 0 0 0 0 0 0
Tag_2 0 1 0 1 0 0 0 0
Tag_3 0 1 0 1 0 1 0 0
Tag_4 0 1 0 1 0 1 0 1

根據"Tag_Value"操作數的值,程序將從對應的跳轉標簽標識點開始繼續執行。例如,如果"Tag_Value"操作數的值為 2,則程序將從跳轉標簽"MyLABEL2"開始繼續執行。在這種情況下,將跳過"MyLABEL1"跳轉標簽所標識的程序行。

RETURN:退出塊

說明:使用"退出塊"指令,可以終止當前處理塊中的程序執行,并在調用塊中繼續執行。

如果該指令出現在塊結尾處,則可以跳過。

圖23 RETURN語句

示例

圖24 RETURN示例

如果"Tag_Error"操作數的信號狀態不為 0,則將終止當前處理塊中的程序執行。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 西門子
    +關注

    關注

    94

    文章

    3041

    瀏覽量

    115958
  • 編程語言
    +關注

    關注

    10

    文章

    1945

    瀏覽量

    34773
  • SCL
    SCL
    +關注

    關注

    1

    文章

    239

    瀏覽量

    17100

原文標題:西門子SCL語言編程,常用指令介紹

文章出處:【微信號:xue_PLC,微信公眾號:PLC技術圈】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    西門子plc200編程實例詳解

    S7-200系列包括多種不同型號的CPU模塊和擴展模塊,可以根據具體的應用需求進行選擇和配置。其主要特點包括:高性能的CPU、豐富的指令集、強大的網絡通信功能以及易于使用的編程軟件等。 在編程方面,
    的頭像 發表于 10-22 14:38 ?748次閱讀

    西門子plc怎么連接電腦怎樣設置

    西門子PLC(可編程邏輯控制器)是工業自動化領域中常用的控制器,用于控制和管理各種機械設備。連接電腦并進行設置是實現PLC編程、調試和監控的基礎。 1. 準備工作 在開始之前,請確保您
    的頭像 發表于 09-05 09:57 ?1898次閱讀

    西門子PLC的復位操作

    西門子PLC(Programmable Logic Controller,可編程邏輯控制器)是一種廣泛應用于工業自動化領域的控制設備。在實際應用過程中,有時需要對PLC進行復位操作,以解決一些程序
    的頭像 發表于 08-16 17:46 ?3400次閱讀

    西門子移位指令怎么用在順序控制

    西門子的PLC(可編程邏輯控制器)廣泛應用于工業自動化領域,其指令集豐富,能夠滿足各種控制需求。在順序控制中,移位指令是一種非常有用的指令
    的頭像 發表于 08-16 17:08 ?974次閱讀

    西門子plc溫度模塊怎么編程

    西門子PLC溫度模塊編程是一個相對復雜的過程,涉及到硬件選擇、接線、配置和編程等多個方面。 一、概述 西門子PLC(Programmable Logic Controller,可
    的頭像 發表于 07-25 09:43 ?1475次閱讀

    西門子PLC與ABB變頻器通訊怎么實現

    在現代工業自動化領域中,西門子PLC(Programmable Logic Controller,可編程邏輯控制器)與ABB變頻器之間的通訊是實現高效、穩定控制的關鍵環節。西門子PLC以其強大的
    的頭像 發表于 06-19 15:29 ?3178次閱讀

    西門子S7-1200 PLC的指令介紹

    西門子S7-1200 PLC,作為西門子自動化控制產品中的一款緊湊型控制器,憑借其強大的功能和易用性,在工業控制領域得到了廣泛的應用。S7-1200 PLC不僅具備標準的PLC功能,還融入
    的頭像 發表于 06-18 14:52 ?2870次閱讀

    西門子PLC的發展歷史

    西門子,作為全球知名的工業自動化和數字化企業,其PLC(可編程邏輯控制器)產品的發展歷程是工業自動化領域的重要篇章。從早期的二進制控制器到如今的智能化、網絡化控制系統,西門子PLC的發展歷程充滿了
    的頭像 發表于 06-15 11:26 ?1977次閱讀

    西門子PLC總線故障怎么解決

    在工業自動化領域,西門子PLC(Programmable Logic Controller,可編程邏輯控制器)以其高可靠性、強穩定性和豐富的功能而備受青睞。然而,在實際應用中,PLC總線故障時有發生
    的頭像 發表于 06-13 18:18 ?2418次閱讀

    西門子模塊型號都代表什么意思

    西門子(Siemens)是一家德國跨國公司,其產品涵蓋了工業自動化、能源、醫療、交通等多個領域。在工業自動化領域,西門子提供了各種模塊化產品,包括PLC(可編程邏輯控制器)、HMI(人機界面
    的頭像 發表于 06-11 16:20 ?5007次閱讀

    西門子plc模塊型號詳解

    西門子PLC(Programmable Logic Controller,可編程邏輯控制器)是工業自動化領域中非常重要的一種設備,其模塊化的設計使得其應用范圍非常廣泛。本文將詳細介紹西門子PLC
    的頭像 發表于 06-11 16:18 ?6117次閱讀

    非夕科技與西門子達成戰略合作協議,正式加入西門子Xcelerator生態

    近日,Flexiv非夕科技與西門子達成戰略合作協議,正式加入西門子 Xcelerator 生態,雙方將聯合打造面向多行業的自適應機器人應用解決方案。
    的頭像 發表于 05-24 14:49 ?797次閱讀

    三菱or西門子品牌PLC的區別

    三菱PLC是日系品牌,編程直觀易懂,學習起來會比較輕松,但指令較多。而西門子PLC是德國品牌,指令比較抽象,學習難度較大,但指令較少,所以學
    發表于 02-20 14:09 ?560次閱讀

    西門子PLC和三菱PLC哪個好?如何進行數據采集?

    西門子PLC和三菱PLC是工業現場中常見的自動化控制設備。西門子PLC是德國品牌,編程簡單、指令比較抽象、學習難度較大,但在市場中占據主流;三菱PLC則是日本品牌,
    的頭像 發表于 02-06 10:34 ?819次閱讀

    西門子SCL PLC高級編程教程

    借助SCL,可以簡化控制技術領域復雜的計算、算法、數據管理和數據組織等編程工作。
    發表于 01-22 10:27 ?737次閱讀
    <b class='flag-5'>西門子</b><b class='flag-5'>SCL</b> PLC高級<b class='flag-5'>編程</b>教程
    主站蜘蛛池模板: 99视频精品国产在线视频| 坠落的丝袜美人妻| 魔乳 堕乳漫画acg产卵| 狠狠色狠狠色综合| 国产精品久久久久久久久爆乳 | 亚洲AV国产国产久青草| 色窝窝777欧美午夜精品影院| 欧美亚洲日本日韩在线| 欧美zzzoooxxx| 女人18毛片| 欧美日韩在线成人看片a| 欧美高清videossexo| 女人高潮特级毛片| 暖暖日本大全免费观看| 年轻的的小婊孑2中文字幕| 男女无遮挡吃奶gift动态图| 免费精品美女久久久久久久久久| 美女坐脸vk| 青柠在线观看免费全集| 日本三级按摩推拿按摩| 手机在线亚洲日韩国产| 香蕉久久夜色精品国产小优| 亚洲刺激视频| 永久adc视频年龄确认| 2022年国产精品久久久久| av亚洲2017色天堂| 成人在线不卡视频| 国产精品久久久久久久人热| 国产无遮挡又黄又爽在线视频 | 亚洲 在线 日韩 欧美| 亚洲成 人a影院青久在线观看 | 久久精品亚洲精品国产欧美| 麻豆XXXX乱女少妇精品| 男生插女生下体| 日韩成人性视频| 亚洲2023无矿砖码砖区| 一边吃奶一边啪啪真舒服| 757一本到午夜宫| ppypp午夜限制不卡影院私人| 富婆夜店找黑人猛男BD在线| 国产伊人自拍|