= 3 ELSE ; END_CASE; 參數(shù) 下表列出了該指令的參數(shù): 參數(shù) 數(shù)據(jù)類型 存儲區(qū) 說明 位" />
0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

CASE:創(chuàng)建多路分支

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

CASE:創(chuàng)建多路分支

說明

使用“創(chuàng)建多路分支”指令,可以根據(jù)表達式的值執(zhí)行多個指令序列中的一個。

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

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

CASE OF

: ;

: ;

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

ELSE ;

END_CASE;

參數(shù)

下表列出了該指令的參數(shù):

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

有關(guān)有效數(shù)據(jù)類型的更多信息,請參見“另請參見”。

如果表達式的值等于第一個常數(shù)(<常數(shù) 1>)的值,則將執(zhí)行緊跟在該常數(shù)后編寫的指令(<指令 1>)。程序?qū)?END_CASE 后繼續(xù)執(zhí)行。

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

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

示例

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

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;

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

操作數(shù)
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:操作數(shù)的信號狀態(tài)將設(shè)置為“1”。
-:操作數(shù)的信號狀態(tài)將保持不變。

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)字
    +關(guān)注

    關(guān)注

    1

    文章

    1693

    瀏覽量

    51252
  • 指令
    +關(guān)注

    關(guān)注

    1

    文章

    606

    瀏覽量

    35617
  • 字符串
    +關(guān)注

    關(guān)注

    1

    文章

    575

    瀏覽量

    20470

原文標(biāo)題:西門子博途 SCL--CASE:創(chuàng)建多路分支

文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    一起學(xué)LabVIEW——Case結(jié)構(gòu)

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

    關(guān)于case分支名的求助

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

    煉獄傳奇-if_else與case之戰(zhàn)

    //內(nèi)層else語句41.case分支控制語句case分支語句是另一種用來實現(xiàn)多路分支控制的
    發(fā)表于 03-31 09:51

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

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

    求問關(guān)于中斷case結(jié)構(gòu)的問題?。。?!

    我的case結(jié)構(gòu)中有一個分支事件,這個分支進行完需要一分鐘的時間,我想設(shè)計一個中斷按鈕,當(dāng)點擊中斷按鈕的時候可以中斷這個分支事件,程序重新回到cas
    發(fā)表于 04-02 16:47

    優(yōu)化技巧:提前if判斷幫助CPU分支預(yù)測

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

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

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

    第十二課 C51開關(guān)分支語句

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

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

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

    CASE創(chuàng)建多路分支

    如果表達式的值等于第一個常數(shù)()的值,則將執(zhí)行緊跟在該常數(shù)后編寫的指令()。程序?qū)?END_CASE 后繼續(xù)執(zhí)行。如果表達式的值不等于第一個常數(shù)()的值
    的頭像 發(fā)表于 09-04 16:55 ?2692次閱讀

    CASE語句的執(zhí)行規(guī)則是什么?

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

    詳解Python里的分支代碼

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

    PLC-SCL CASE練習(xí)方法

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

    Switch case中的case順序

    Switch case中的case順序 Switch 可能轉(zhuǎn)化成多種不同算法的代碼。其中最常見的是跳轉(zhuǎn)表和比較鏈/樹。當(dāng)switch用比較鏈的方式轉(zhuǎn)化時,編譯器會產(chǎn)生if-else-if的嵌套代碼
    的頭像 發(fā)表于 11-20 18:16 ?760次閱讀

    java switch case的語法規(guī)則

    在Java中,switch case語句是一種用于多分支選擇的控制流語句。它允許根據(jù)某個表達式的值來執(zhí)行不同的代碼塊。下面是關(guān)于switch case語法規(guī)則的詳細解釋。 基本語法 switch語句
    的頭像 發(fā)表于 11-30 14:40 ?2077次閱讀