0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

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

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

PLC編程中循環(huán)語(yǔ)句FOR和WHILE如何選擇

autozhineng ? 來(lái)源:PLC與自控設(shè)備 ? 2023-01-30 17:45 ? 次閱讀

迭代語(yǔ)句主要用于重復(fù)執(zhí)行的程序,在 CoDeSys 中,常見(jiàn)的迭代語(yǔ)句有 FOR,REPEAT 及WHILE 語(yǔ)句。

FOR 循環(huán)

FOR 循環(huán)語(yǔ)句用于計(jì)算一個(gè)初始化序列,當(dāng)某個(gè)條件為 TRUE 時(shí),重復(fù)執(zhí)行嵌套語(yǔ)句并計(jì)算一個(gè)迭代表達(dá)式序列,如果為 FALSE,則終止循環(huán),具體格式如下。

FOR <變量> := <初始值> TO <目標(biāo)值> {BY <步長(zhǎng)>} DO

<語(yǔ)句內(nèi)容>

END_FOR;

FOR 循環(huán)的執(zhí)行順序如下:

計(jì)算<變量>是否在<初始值>與<目標(biāo)值>的范圍內(nèi);

當(dāng)<變量>小于<目標(biāo)值>,執(zhí)行<語(yǔ)句內(nèi)容>;

當(dāng)<變量>大于<目標(biāo)值>,則不會(huì)執(zhí)行<語(yǔ)句內(nèi)容>;

當(dāng)每次執(zhí)行<語(yǔ)句內(nèi)容>時(shí),<變量>總是按照指定的步長(zhǎng)增加其值。步長(zhǎng)可以是任意的整數(shù)值。

如果不指定步長(zhǎng),則其缺省值是 1。當(dāng)<變量>大于<目標(biāo)值>時(shí),退出循環(huán)。

示例:使用 FOR 循環(huán)實(shí)現(xiàn) 2 的五次方計(jì)算。

45092f2a-980d-11ed-bfe3-dac502259ad0.jpg

假設(shè) Var1 的初始值是 1,那么循環(huán)結(jié)束后,Var1的值的為 32。

WHILE 循環(huán)

WHILE 循環(huán)與 FOR 循環(huán)使用方法類(lèi)似。二者的不同之處是,WHILE 循環(huán)的結(jié)束條件可以是任意的邏輯表達(dá)式。即可以指定一個(gè)條件,當(dāng)滿足該條件時(shí),執(zhí)行循環(huán),具體格式如下。

WHILE <布爾表達(dá)式>

<語(yǔ)句內(nèi)容> ;

END_WHILE;

WHILE 循環(huán)的執(zhí)行順序如下:

? 計(jì)算<布爾表達(dá)式>的返回值。

? 當(dāng)<布爾表達(dá)式>的值為 TRUE 時(shí),重復(fù)執(zhí)行<語(yǔ)句內(nèi)容>。

? 當(dāng)<布爾表達(dá)式>初始值為 FALSE,那么指令<語(yǔ)句內(nèi)容>不會(huì)被執(zhí)行,跳轉(zhuǎn)至 WHILE 語(yǔ)句的結(jié)尾。

451a8af4-980d-11ed-bfe3-dac502259ad0.jpg

注意:

如果<布爾表達(dá)式>的值始終為 TRUE,那么將會(huì)產(chǎn)生死循環(huán),應(yīng)當(dāng)避免死循環(huán)的產(chǎn)生。可以通過(guò)改變循環(huán)指令的條件來(lái)避免死循環(huán)的產(chǎn)生。例如:利用可增減的計(jì)數(shù)器避免死循環(huán)的產(chǎn)生。

示例:只要計(jì)數(shù)器不為零,則始終執(zhí)行循環(huán)體內(nèi)的程序。

4528cae2-980d-11ed-bfe3-dac502259ad0.jpg

在一定的意義上,WHILE 循環(huán)比 FOR 循環(huán)的功能更加強(qiáng)大,這是因?yàn)樵趫?zhí)行循環(huán)之前,

WHILE 循環(huán)不需要知道循環(huán)的次數(shù)。因此,如果清楚地知道了循環(huán)的次數(shù),那么 FOR 循環(huán)更好,因?yàn)?FOR 循環(huán)可以避免產(chǎn)生死循環(huán)。

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

    關(guān)注

    0

    文章

    44

    瀏覽量

    15784
  • CoDeSys
    +關(guān)注

    關(guān)注

    10

    文章

    39

    瀏覽量

    18622

原文標(biāo)題:PLC編程中循環(huán)語(yǔ)句FOR和WHILE該怎么選呢?

文章出處:【微信號(hào):PLC與自控設(shè)備,微信公眾號(hào):PLC與自控設(shè)備】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    聊聊MCU死循環(huán),用for(;;)還是while(1)?

    首先,問(wèn)大家一個(gè)問(wèn)題:你們寫(xiě)單片機(jī)程序【死循環(huán)】時(shí),喜歡用for(;;)還是while(1)?快來(lái)為你喜歡用的【死循環(huán)】打call,評(píng)論區(qū)等你哦~一位工程師發(fā)現(xiàn),國(guó)外工程師在給demo在做死
    的頭像 發(fā)表于 04-29 08:10 ?1138次閱讀
    聊聊MCU死<b class='flag-5'>循環(huán)</b>,用for(;;)還是<b class='flag-5'>while</b>(1)?

    stm32g030優(yōu)化等級(jí)高于optimize for debug時(shí),main函數(shù)里的while()循環(huán)出現(xiàn)if()內(nèi)語(yǔ)句不能正常執(zhí)行的原因?

    芯片使用G030,優(yōu)化等級(jí)高于optimize for debug時(shí),就會(huì)出現(xiàn) main函數(shù)里的while()循環(huán)出現(xiàn)if()內(nèi)語(yǔ)句不能正常執(zhí)行的問(wèn)題
    發(fā)表于 03-26 06:24

    什么是PLC循環(huán)移位指令 PLC循環(huán)移位的特點(diǎn)

    PLC循環(huán)移位指令包括循環(huán)左移指令和循環(huán)右移指令。在循環(huán)移位過(guò)程,移出的位并不會(huì)丟失,而是會(huì)放
    的頭像 發(fā)表于 03-07 16:57 ?1908次閱讀
    什么是<b class='flag-5'>PLC</b><b class='flag-5'>循環(huán)</b>移位指令 <b class='flag-5'>PLC</b><b class='flag-5'>循環(huán)</b>移位的特點(diǎn)

    verilogrepeat必須用begin和end嗎

    在Verilog,repeat語(yǔ)句不需要使用begin和end塊。repeat語(yǔ)句是一種循環(huán)控制語(yǔ)句,允許重復(fù)執(zhí)行一個(gè)代碼塊指定的次數(shù)。它
    的頭像 發(fā)表于 02-23 10:14 ?1055次閱讀

    arduinowhile循環(huán)怎么跳出

    執(zhí)行某段代碼的情況。然而,如何在合適的時(shí)機(jī)跳出 while 循環(huán)是一個(gè)需要注意的問(wèn)題。本文將詳細(xì)介紹 Arduino while 循環(huán)
    的頭像 發(fā)表于 02-14 16:22 ?2278次閱讀

    plc編程語(yǔ)言與c語(yǔ)言的聯(lián)系 c語(yǔ)言和PLC有什么區(qū)別

    語(yǔ)言,主要用于開(kāi)發(fā)各種應(yīng)用程序。盡管PLC編程語(yǔ)言和C語(yǔ)言有一些相似之處,但它們之間也存在一些明顯的區(qū)別。 首先,PLC編程語(yǔ)言和C語(yǔ)言都是基于結(jié)構(gòu)化
    的頭像 發(fā)表于 02-05 14:21 ?3749次閱讀

    單片機(jī)for語(yǔ)句的運(yùn)用

    單片機(jī)的for語(yǔ)句是一種常見(jiàn)的循環(huán)控制結(jié)構(gòu),用于重復(fù)執(zhí)行一段代碼塊,可以簡(jiǎn)化程序的編寫(xiě)和減少代碼量。本文將詳細(xì)介紹單片機(jī)for語(yǔ)句的運(yùn)用
    的頭像 發(fā)表于 01-05 14:02 ?2056次閱讀

    plc編程軟件的監(jiān)視功能怎么用

    PLC(可編程邏輯控制器)編程軟件的監(jiān)視功能是用于實(shí)時(shí)監(jiān)視PLC系統(tǒng)的運(yùn)行狀態(tài)、各個(gè)信號(hào)的輸入輸出情況以及程序的執(zhí)行情況。本文將詳細(xì)介紹
    的頭像 發(fā)表于 12-08 16:30 ?3547次閱讀

    python怎么設(shè)置循環(huán)次數(shù)

    在Python,可以使用循環(huán)語(yǔ)句來(lái)重復(fù)執(zhí)行一段代碼多次。要設(shè)置循環(huán)次數(shù),可以使用循環(huán)的計(jì)數(shù)器來(lái)控制循環(huán)
    的頭像 發(fā)表于 11-23 15:50 ?4913次閱讀

    while和if一起用的例子c語(yǔ)言

    一、 在C語(yǔ)言中,while和if是兩個(gè)非常常用的控制語(yǔ)句。while用于創(chuàng)建循環(huán)結(jié)構(gòu),使得程序可以重復(fù)執(zhí)行一段代碼塊,而if則是用于條件判斷,根據(jù)不同的條件執(zhí)行不同的代碼塊。當(dāng)這兩個(gè)
    的頭像 發(fā)表于 11-22 10:09 ?3960次閱讀

    c語(yǔ)言在while嵌套if循環(huán)

    C語(yǔ)言是一種廣泛使用的面向過(guò)程編程語(yǔ)言,它提供了許多控制結(jié)構(gòu)來(lái)幫助程序員實(shí)現(xiàn)復(fù)雜的邏輯和流程控制。其中,while循環(huán)和if語(yǔ)句是非常常見(jiàn)和重要的控制結(jié)構(gòu)。本文將詳細(xì)介紹C語(yǔ)言中在
    的頭像 發(fā)表于 11-22 10:09 ?5382次閱讀

    while與if嵌套如何使用

    嵌套是編程中常用的一種技術(shù),它可以使代碼在特定條件下執(zhí)行不同的操作。在Python,while循環(huán)和if條件語(yǔ)句經(jīng)常被嵌套使用,以實(shí)現(xiàn)更復(fù)
    的頭像 發(fā)表于 11-22 10:06 ?3625次閱讀

    pythonwhile的用法例子

    Pythonwhile循環(huán)是一種重復(fù)執(zhí)行代碼塊的結(jié)構(gòu),只有在指定條件為真時(shí)才會(huì)執(zhí)行。當(dāng)條件變?yōu)榧贂r(shí),循環(huán)停止。 下面是一些使用while
    的頭像 發(fā)表于 11-22 10:04 ?1676次閱讀

    while循環(huán)用法格式

    True,那么就執(zhí)行循環(huán)的代碼,然后再次判斷條件表達(dá)式的值。如果條件表達(dá)式仍然為T(mén)rue,那么再次執(zhí)行循環(huán)的代碼,如此循環(huán),直到條件
    的頭像 發(fā)表于 11-22 10:02 ?1660次閱讀

    PLC編程循環(huán)語(yǔ)法使用方法

    不管什么CPU,什么編程語(yǔ)言,都有循環(huán)語(yǔ)法,可以用于實(shí)現(xiàn)循環(huán)。當(dāng)然,很多時(shí)候,語(yǔ)言對(duì)循環(huán)支持的并不夠理想。通常還要有指針,間接尋址等配合。所以在PL
    發(fā)表于 11-13 15:30 ?1039次閱讀
    <b class='flag-5'>PLC</b><b class='flag-5'>編程</b><b class='flag-5'>循環(huán)</b>語(yǔ)法使用方法