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

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

3天內不再提示

CASE:創建多路分支

機器人及PLC自動化應用 ? 來源:機器人及PLC自動化應用 ? 2023-06-27 11:46 ? 次閱讀

CASE:創建多路分支

說明

使用“創建多路分支”指令,可以根據表達式的值執行多個指令序列中的一個。

表達式的值必須為整數或位字符串。執行 CASE 指令時,會將表達式(變量)的值與多個常數的值進行比較。如果表達式(變量)的值等于某個常數的值,則滿足條件且將執行緊跟在該常數后編寫的指令。常數可以為不同值:

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

CASE OF

: ;

: ;

<常量 X>: <指令 X>; // X >= 3

ELSE ;

END_CASE;

參數

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

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

有關有效數據類型的更多信息,請參見“另請參見”。

如果表達式的值等于第一個常數(<常數 1>)的值,則將執行緊跟在該常數后編寫的指令(<指令 1>)。程序將從 END_CASE 后繼續執行。

如果表達式的值不等于第一個常量(<常量 1>)的值,則會將該值與下一個設定的常量值進行比較。以這種方式執行 CASE 指令直至比較的值相等為止。如果表達式的值與所有設定的常數值均不相等,則將執行 ELSE 后編寫的指令(<指令 0>)。ELSE 是一個可選的語法部分,可以省略。

此外,CASE 指令也可通過使用 CASE 替換一個指令塊來進行嵌套。END_CASE 表示 CASE 指令結束。

示例

以下示例說明了該指令的工作原理

SCL
CASE "Tag_Value" OF
0 :
"Tag_1" := 1;
1,3,5 :
"Tag_2" := 1;
6...10 :
"Tag_3" := 1;
16,17,20...25 :
"Tag_4" := 1;
ELSE
"Tag_5" := 1;
END_CASE;

下表將通過具體的操作數值對該指令的工作原理進行說明:

操作數
Tag_Value 0 1、3、5 6、7、8、9、10 16, 17, 20, 21, 22, 23, 24, 25 2
Tag_1 1 - - - -
Tag_2 - 1 - - -
Tag_3 - - 1 - -
Tag_4 - - - 1 -
Tag_5 - - - - 1
1:操作數的信號狀態將設置為“1”。
-:操作數的信號狀態將保持不變。

CASE語句用來選擇幾個分支程序部分之一。選擇是基于選擇表達式當前值的。 使用“創建多路分支”指令,可以根據數字表達式的值執行多個指令序列中的一個。 表達式的值必須為整數。執行該指令時,會將表達式的值與多個常數的值進行比較。如果表達式的值等 于某個常數的值,則將執行緊跟在該常數后編寫的指令。常數可以為以下值: ? 整數(例如,5) ? 整數的范圍(例如,15..20) ? 由整數和范圍組成的枚舉(例如,10、11、15..20) CASE語句按下列規則執行: ·選擇表達式必須返回一個整數類型的值。 ·當CASE語句被處理時,程序檢查是否選擇表達式的值包含在指定的值表之中。如果找到匹配項,列表指定的語句部分將被執行。 ·如果沒有發現匹配項,程序選擇ELSE后面的語句,或者如果ELSE分支不存在則無語句可執行。 如果表達式的值等于第一個常數(<常數 1="">)的值,則將執行緊跟在該常數后編寫的指令(<指令 1="">)。程序將從 END_CASE 后繼續執行。如果表達式的值不等于第一個常數(<常數 1="">)的值,則會將該值與下一個設定的常數值進行比較。以這種方式執行 CASE 指令直至比較的值相等為止。如果表達式的值與所有設定的常數值均不相等,則將執行 ELSE 后編寫的指令(<指令 0="">)。ELSE 是一個可選的語法部分,可以省略。此外,CASE 指令也可通過使用 CASE 替換一個指令塊來進行嵌套。END_CASE 表示 CASE 指令結束。 73c32718-1408-11ee-962d-dac502259ad0.png 根據管角value輸入數來決定OUT1輸出的數 ? FUNCTION FC1 : INT? ?建立FC1程序,輸出反饋值得屬性是INT整數 VAR_input ??? value:INT; END_VAR ? VAR_outPUT ??? OUT1:INT; END_VAR ? VAR_TEMP ??? END_VAR ? ??? CASE?value OF ??????? 1?: ???????????????????? OUT1:=1? ; ??????? 2?: ??????????????????? OUT1:=2??? ; ??????? 3?: ?????????????????? OUT1:=3???? ; ??????? 4?: ????????????????? ? OUT1:=4??? ; ??????? 5?: ?????????????????? OUT1:=5???? ; ??????? 6?: ??????????????????? OUT1:=6???? ; ? ??? ELSE:?? 不是1-6?就輸出99 ?????????????? OUT1:=99? ; ??? END_CASE; ? ????? FC1?:= OUT1;??FC1的反饋值和OUT1值一致. END_FUNCTION??

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

    關注

    1

    文章

    1691

    瀏覽量

    51118
  • 指令
    +關注

    關注

    1

    文章

    583

    瀏覽量

    35420
  • 字符串
    +關注

    關注

    1

    文章

    553

    瀏覽量

    20266

原文標題:西門子博途 SCL--CASE:創建多路分支

文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    一起學LabVIEW——Case結構

    名稱內時按下Shift同時每按一下回車鍵就會自動添加一個分支(Shift+Enter)。同樣為選擇器為數值類型等的Case結構創建方法亦是如此。對于Case來說選擇器有個特殊的類型,那
    發表于 03-02 11:21

    關于case分支名的求助

    各位:1.我的case條件輸入是枚舉量因此,各個分支名應怎樣設置枚舉常量?????大俠們,求助呀!
    發表于 03-23 20:07

    煉獄傳奇-if_else與case之戰

    //內層else語句41.case分支控制語句case分支語句是另一種用來實現多路分支控制的
    發表于 03-31 09:51

    想問問設計RS485中繼器難嗎?要求是多路分支

    想問問設計RS485中繼器難嗎?要求是多路分支
    發表于 05-07 10:46

    求問關于中斷case結構的問題?。。?!

    我的case結構中有一個分支事件,這個分支進行完需要一分鐘的時間,我想設計一個中斷按鈕,當點擊中斷按鈕的時候可以中斷這個分支事件,程序重新回到cas
    發表于 04-02 16:47

    優化技巧:提前if判斷幫助CPU分支預測

    摘要: 在stackoverflow上有一個非常有名的問題:為什么處理有序數組要比非有序數組快?,可見分支預測對代碼運行效率有非常大的影響。要提高代碼執行效率,一個重要的原則就是盡量避免CPU把
    發表于 06-13 16:27

    Linux Shell系列教程之(十三)Shell分支語句case … esac教程

      一、Shell分支語句case···esac語法  case 值 in  模式1)  command1  command2  command3  ;;  模式2)  command1
    發表于 09-07 16:31

    新人求教關于case的語法問題:case里2個端口是什么意思?

    四選一多路選擇器其中一部分case ({S1, S0})2'b00: out=io;2'b01: out=i1;2'b10: out=i2;2'b11: out=i3;case里2個端口是什么意思? 是s1=s0=2'b00嗎?
    發表于 09-18 12:07

    第十二課 C51開關分支語句

    學習了條件語句,用多個條件語句能實現多方向條件分支,但是能發現使用過多的 條件語句實現多方向分支會使條件語句嵌套過多,程序冗長,這樣讀起來也很不好讀。這個時候 使用開關語句同樣能達到處理多分支選擇
    發表于 11-22 12:43 ?583次閱讀

    C語言的switch case分支選擇語句的詳細資料說明

    1、switch-case開關語句是一種多分支選擇語句,用來實現多方向條件分支。雖然采用if-else條件判斷語句也可以實現多方向條件分支,但是當
    發表于 07-12 17:39 ?1次下載
    C語言的switch <b class='flag-5'>case</b>多<b class='flag-5'>分支</b>選擇語句的詳細資料說明

    CASE創建多路分支

    如果表達式的值等于第一個常數()的值,則將執行緊跟在該常數后編寫的指令()。程序將從 END_CASE 后繼續執行。如果表達式的值不等于第一個常數()的值
    的頭像 發表于 09-04 16:55 ?2546次閱讀

    CASE語句的執行規則是什么?

    CASE語句用來選擇幾個分支程序部分之一。選擇是基于選擇表達式當前值的。
    的頭像 發表于 10-09 09:26 ?5058次閱讀
    <b class='flag-5'>CASE</b>語句的執行規則是什么?

    詳解Python里的分支代碼

    Python 支持最為常見的 if/else 條件分支語句,不過它缺少在其他編程語言中常見的 switch/case 語句。
    的頭像 發表于 04-21 15:20 ?1442次閱讀

    PLC-SCL CASE練習方法

    CASE語句用來選擇幾個分支程序部分之一。選擇是基于選擇表達式當前值的。
    發表于 03-28 09:43 ?512次閱讀

    java switch case的語法規則

    在Java中,switch case語句是一種用于多分支選擇的控制流語句。它允許根據某個表達式的值來執行不同的代碼塊。下面是關于switch case語法規則的詳細解釋。 基本語法 switch語句
    的頭像 發表于 11-30 14:40 ?500次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>