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

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

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

一文詳解PLC子程序與子程序指令

laidenongfhs ? 來(lái)源:中泰PLC自動(dòng)化教學(xué) ? 作者:中泰PLC自動(dòng)化教學(xué) ? 2023-12-14 13:33 ? 次閱讀

子程序

編程時(shí)經(jīng)常會(huì)遇到相同的程序段需要多次執(zhí)行的情況,如圖6-39所示,程序段A要執(zhí)行兩次,編程時(shí)要寫兩段相同的程序段,這樣比較麻煩。解決這個(gè)問題的方法是將需要多次執(zhí)行的程序段從主程序中分離出來(lái),單獨(dú)寫成一個(gè)程序,這個(gè)程序稱為子程序,然后在主程序相應(yīng)的位置進(jìn)行子程序調(diào)用即可。

wKgZomV6lQGALimaAAIw4nV5FuQ811.png

圖6-39 兩種程序結(jié)構(gòu)

在編寫復(fù)雜的PLC程序時(shí),可以將全部的控制功能劃分為幾個(gè)功能塊,每個(gè)功能塊的控制功能可用子程序來(lái)實(shí)現(xiàn),這樣會(huì)使整個(gè)程序的結(jié)構(gòu)清晰簡(jiǎn)單,易于調(diào)試、查找錯(cuò)誤和維護(hù)。

子程序指令

子程序指令有兩條:子程序調(diào)用指令(CALL)和子程序條件返回指令(CRET)。

1.指令說明

子程序指令說明如表6-56所示。

表6-56 子程序指令說明

wKgZomV6lQGAIUkKAALNoHh6bKE768.png

子程序指令使用要點(diǎn):CRET指令多用于子程序內(nèi)部,該指令是否執(zhí)行取決于它前面的條件,該指令執(zhí)行的結(jié)果是結(jié)束當(dāng)前的子程序返回調(diào)用程序。子程序允許嵌套使用,即在一個(gè)子程序內(nèi)部可以調(diào)用另一個(gè)子程序,但子程序的嵌套深度最多為9級(jí)。當(dāng)子程序在一個(gè)掃描周期內(nèi)被多次調(diào)用時(shí),在子程序中不能使用上升沿、下降沿、定時(shí)器和計(jì)數(shù)器指令。在子程序中不能使用END(結(jié)束)指令。

2.子程序的建立

編寫子程序要在編程軟件中進(jìn)行,打開STEP7-Micro/WINSMART編程軟件,在程序編輯器上方有“MAIN(主程序)”“SBR_0(子程序)”“INT_0(中斷程序)”三個(gè)標(biāo)簽,默認(rèn)打開主程序編輯器。單擊“SBR_0”標(biāo)簽即可切換到子程序編輯器,如圖6-40(a)所示,在下面的編緝器中可以編寫名稱為“SBR_0”的子程序。另外,在項(xiàng)目指令樹區(qū)域雙擊“程序塊”內(nèi)的“SBR_0”,也可以在右邊切換到子程序編輯器。

如果需要編寫兩個(gè)或更多的子程序,可在“SBR_0”標(biāo)簽上右擊,在彈出的快捷菜單中選擇“插入”→“子程序”,就會(huì)新建一個(gè)名稱為“SBR_1”的子程序(在程序編輯器上方多出一個(gè)“SBR_1”標(biāo)簽),如圖6-40(b)所示。在項(xiàng)目指令樹區(qū)域的“程序塊”內(nèi)也新增了一個(gè)“SBR_1”程序塊,選中“程序塊”內(nèi)的“SBR_1”,再按鍵盤上的“Delete”鍵可將“SBR_1”程序塊刪除。

wKgaomV6lQGAF8XzAAWmcQyroLE515.png

圖6-40 切換與建立子程序

3.子程序指令使用舉例

下面以主程序調(diào)用兩個(gè)子程序?yàn)槔?,?lái)說明子程序指令的使用。先用圖6-40(b)所示的方法建立一個(gè)SBR_1子程序塊(可先不寫具體程序),這樣在項(xiàng)目指令樹區(qū)域的“調(diào)用子例程”指令包內(nèi)新增了一個(gè)調(diào)用SBR_1子程序的指令,如圖6-41(a)所示。在編寫主程序時(shí),雙擊該指令即可將其插入程序中;主程序編寫完成后,再編寫子程序。圖6-41(b)為編寫好的主程序(MAIN),圖6-41(c)、(d)分別為子程序0(SBR_0)和子程序1(SBR_1)。

wKgaomV6lQGAX-jxAAWdKrE4ADE966.png

圖6-41 子程序指令使用舉例

主、子程序執(zhí)行的過程是:

當(dāng)主程序(MAIN)中的I0.0觸點(diǎn)閉合時(shí),調(diào)用SBR_0指令執(zhí)行,轉(zhuǎn)入執(zhí)行子程序SBR_0。在SBR_0程序中,如果I0.1觸點(diǎn)閉合,則將Q0.0線圈置位,然后又返回主程序,開始執(zhí)行調(diào)用SBR_0指令的下一條指令(即程序段2)。當(dāng)程序運(yùn)行到程序段3時(shí),如果I0.3觸點(diǎn)閉合,則調(diào)用子程序SBR_1指令執(zhí)行,轉(zhuǎn)入執(zhí)行SBR_1程序;如果I0.3觸點(diǎn)斷開,則執(zhí)行程序段4的指令,不會(huì)執(zhí)行SBR_1。若I0.3觸點(diǎn)閉合,轉(zhuǎn)入執(zhí)行SBR_1后,如果SBR_1程序中的I0.5觸點(diǎn)處于閉合狀態(tài),則條件返回指令執(zhí)行,提前從SBR_1返回主程序,SBR_1中的程序段2的指令無(wú)法執(zhí)行。

6.12.3 帶參數(shù)的子程序調(diào)用指令子程序調(diào)用指令可以帶參數(shù),使用帶參數(shù)的子程序調(diào)用指令可以擴(kuò)大子程序的使用范圍。在子程序調(diào)用時(shí),如果存在數(shù)據(jù)傳遞,通常要求子程序調(diào)用指令帶有相應(yīng)的參數(shù)。

1.參數(shù)的輸入

子程序調(diào)用指令默認(rèn)是不帶參數(shù)的,也無(wú)法在指令梯形圖符號(hào)上直接輸入?yún)?shù),使用子程序編輯器下方的變量表可給子程序調(diào)用指令設(shè)置參數(shù)。

子程序調(diào)用指令參數(shù)的設(shè)置方法是:打打開STEP 7-Micro/WIN SMART編程軟件,單擊程序編輯器上方的“SBR_0”標(biāo)簽,切換到SBR_0子程序編輯器,在編輯器下方有一個(gè)空變量表,如圖6-42(a)所示;如果變量表被關(guān)閉,可執(zhí)行菜單命令“視圖”→“組件”→“變量表”打開變量表,再按圖6-42(b)所示在變量表內(nèi)填寫輸入、輸出參數(shù)的符號(hào)并選擇數(shù)據(jù)類型。輸入型參數(shù)要填寫在變量類型為IN的行內(nèi),輸入/輸出型參數(shù)要填寫在變量類型為IN_OUT類型的行內(nèi),輸出型參數(shù)要填寫在變量類型為OUT的行內(nèi),表中參數(shù)的地址LB0、LB1等是自動(dòng)生成的。在變量表的左上角有“插入行”和“刪除行”兩個(gè)工具,可以對(duì)變量表進(jìn)行插入行和刪除行操作。變量表填寫后,切換到主程序編輯器,在主程序中輸入子程序調(diào)用指令,該子程序調(diào)用指令自動(dòng)按變量表生成輸入/輸出參數(shù),如圖6-42(c)所示。

wKgaomV6lQGAKpVlAAKNxiXYFtw988.png

圖6-42 子程序調(diào)用指令參數(shù)的設(shè)置

2.指令參數(shù)說明

子程序調(diào)用指令最多可以設(shè)置16個(gè)參數(shù),每個(gè)參數(shù)包括變量名(又稱符號(hào))、變量類型、數(shù)據(jù)類型和注釋四部分,注釋部分不是必需的。

1)變量名

變量名在局部變量表中稱作符號(hào),它需要直接輸入,變量名最多可用23個(gè)字符表示,并且第一個(gè)字符不能為數(shù)字。

2)變量類型

變量類型是根據(jù)參數(shù)傳遞方向來(lái)劃分的,它可分為四種類型:IN(傳入子程序)、IN_OUT(傳入和傳出子程序)、OUT(傳出子程序)和TEMP(暫變量)。參數(shù)的四種變量類型詳細(xì)說明如表6-57所示。

表6-57 參數(shù)的四種變量類型詳細(xì)說明

wKgZomV6lQGAfqxPAAGOzQBkOBo217.png

3)數(shù)據(jù)類型

參數(shù)的數(shù)據(jù)類型有布爾型(BOOL)、字節(jié)型(BYTE)、字型(WORD)、雙字型(DWORD)、整數(shù)型(INT)、雙整數(shù)型(DINT)、實(shí)數(shù)型(REAL)和字符型(STRING)。

指令使用注意事項(xiàng)

在使用帶參數(shù)子程序調(diào)用指令時(shí),要注意以下事項(xiàng)。常數(shù)參數(shù)必須指明數(shù)據(jù)類型。例如,輸入一個(gè)無(wú)符號(hào)雙字常數(shù)12345時(shí),該常數(shù)必須指定為DW#12345,如果遺漏常數(shù)的數(shù)據(jù)類型,該常數(shù)可能會(huì)當(dāng)作不同的類型使用。輸入或輸出參數(shù)沒有自動(dòng)數(shù)據(jù)類型轉(zhuǎn)換功能。例如,局部變量表明一個(gè)參數(shù)為實(shí)數(shù)型,而在調(diào)用時(shí)使用一個(gè)雙字,子程序中的值就是雙字。在帶參數(shù)調(diào)用的子程序指令中,參數(shù)必須按照一定順序排列,參數(shù)排列順序依次是:輸入、輸入/輸出、輸出和暫變量。如果用語(yǔ)句表編程,CALL指令的格式是:

CALL 子程序號(hào),參數(shù)1,參數(shù)2,…,參數(shù)n

4.指令使用舉例

帶參數(shù)的子程序調(diào)用指令的使用如圖6-43所示,圖6-43(a)為主程序,圖6-43(b)為子程序及局部變量表,主、子程序可以實(shí)現(xiàn)Y=(X+20)×3÷8運(yùn)算。

程序執(zhí)行過程為:在主程序中,常ON觸點(diǎn)SM0.0處于閉合狀態(tài),首先執(zhí)行第一個(gè)帶參數(shù)子程序調(diào)用指令,轉(zhuǎn)入執(zhí)行子程序,同時(shí)將VW0單元中的數(shù)據(jù)作為X值傳入子程序的LW0單元(局部變量存儲(chǔ)器)。在子程序中,ADD_I指令先將LW0中的值+20,結(jié)果存入LW10中;然后MUL_I指令將LW10中的值×3,結(jié)果存入LW12中;DIV_I指令再將LW12中的值÷8,結(jié)果存入LW2中;最后子程序結(jié)束返回主程序,同時(shí)子程序LW2中的數(shù)據(jù)作為Y值被傳入主程序的VW10單元中。子程序返回主程序后,接著執(zhí)行主程序中的第二個(gè)帶參數(shù)子程序調(diào)用指令,又將VW2中的數(shù)據(jù)作為X值傳入子程序進(jìn)行(X+20)×3÷8運(yùn)算,運(yùn)算結(jié)果作為Y值返回到VW20單元中。

wKgaomV6lQGAN39hAAJFl4rXSQM582.png

圖6-43 帶參數(shù)的子程序調(diào)用指令的使用

審核編輯:湯梓紅

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

    關(guān)注

    5011

    文章

    13299

    瀏覽量

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

    關(guān)注

    1

    文章

    607

    瀏覽量

    35716
  • 程序
    +關(guān)注

    關(guān)注

    117

    文章

    3787

    瀏覽量

    81060
  • 編輯器
    +關(guān)注

    關(guān)注

    1

    文章

    806

    瀏覽量

    31176

原文標(biāo)題:PLC子程序與子程序指令

文章出處:【微信號(hào):中泰PLC自動(dòng)化教學(xué),微信公眾號(hào):中泰PLC自動(dòng)化教學(xué)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    51單片機(jī)浮點(diǎn)子程序庫(kù)

    子程序庫(kù)的使用方法如下:1.將子程序庫(kù)全部?jī)?nèi)容鏈接在應(yīng)用程序之后,統(tǒng)編譯即可。優(yōu)點(diǎn)是簡(jiǎn)單方便,缺點(diǎn)是程序太長(zhǎng),大量無(wú)關(guān)
    發(fā)表于 12-21 15:52 ?44次下載

    子程序

    子程序又稱為過程,它相當(dāng)于高級(jí)語(yǔ)言中的過程和函數(shù)。在個(gè)程序的不同部分,往往要用到類似的程序段,這些程序段的功能和結(jié)構(gòu)形式都相同,只是某些變
    發(fā)表于 06-30 10:43 ?831次閱讀

    ALTERA官方例子程序

    ALTERA官方例子程序,最規(guī)范的程序。入門必備
    發(fā)表于 10-29 10:46 ?47次下載

    匯編語(yǔ)言學(xué)習(xí)課件_子程序與宏指令設(shè)計(jì)

    第六章 子程序與宏指令設(shè)計(jì) 6.1 子程序結(jié)構(gòu)及設(shè)計(jì)方法 6.2 子程序參數(shù)傳遞 6.3 嵌套與遞歸子程序 6.4 宏 指
    發(fā)表于 12-31 10:41 ?0次下載

    子程序的創(chuàng)建與調(diào)用

    【LabVIEW從入門到精通】2.5 子程序的創(chuàng)建與調(diào)用
    發(fā)表于 01-08 15:43 ?0次下載

    三菱FX系列PLC條件跳轉(zhuǎn)和子程序指令的應(yīng)用_赫煥麗

    三菱FX系列PLC條件跳轉(zhuǎn)和子程序指令的應(yīng)用。
    發(fā)表于 05-18 10:42 ?3次下載

    子程序(函數(shù))傳遞

    易語(yǔ)言是門以中文作為程序代碼編程語(yǔ)言學(xué)習(xí)例程:子程序(函數(shù))傳遞
    發(fā)表于 06-07 10:41 ?3次下載

    PMC功能指令程序控制指令

    程序控制指令: 7.SP(子程序:SUB 71) 功能指令SP用于生成子程序子程序號(hào)作為子程序
    發(fā)表于 09-29 13:08 ?0次下載
    PMC功能<b class='flag-5'>指令</b>:<b class='flag-5'>程序控制指令</b>

    中斷處理和子程序調(diào)用概念解析

    子程序組可以公用的指令序列,只要給出子程序的入口地址就能從主程序轉(zhuǎn)入子程序。
    發(fā)表于 11-16 11:12 ?1w次閱讀
    中斷處理和<b class='flag-5'>子程序</b>調(diào)用概念解析

    plc如何停止子程序調(diào)用_具體操作解析

    進(jìn)入子程序請(qǐng)使用CALL指令,即是FUN67指令,在子程序中要使用標(biāo)簽:LBL指令即FUN65,子程序
    發(fā)表于 11-16 11:35 ?1.5w次閱讀
    <b class='flag-5'>plc</b>如何停止<b class='flag-5'>子程序</b>調(diào)用_具體操作解析

    點(diǎn)陣液晶顯示模塊字符通用子程序

    1、逐字依次寫入方式子程序。2、光標(biāo)左移寫入方式子程序。3、光標(biāo)右移寫入方式子程序。4、畫面左滾動(dòng)寫入方式子程序。
    發(fā)表于 03-13 14:53 ?1408次閱讀
    點(diǎn)陣液晶顯示模塊字符通用<b class='flag-5'>子程序</b>

    SMART常用的運(yùn)動(dòng)控制子程序的應(yīng)用詳解

    前我們講解過SMART運(yùn)動(dòng)控制向?qū)У慕M態(tài)應(yīng)用,組態(tài)好向?qū)Ш笞詣?dòng)生成運(yùn)動(dòng)子程序,只需調(diào)用對(duì)應(yīng)功能的子程序進(jìn)行編程即可,那么今天我們分別學(xué)習(xí)下常用的子程序的應(yīng)用。
    的頭像 發(fā)表于 03-24 11:16 ?1.3w次閱讀
    SMART常用的運(yùn)動(dòng)控制<b class='flag-5'>子程序</b>的應(yīng)用<b class='flag-5'>詳解</b>

    西門子PLC子程序介紹

    STEP7-Micro/Win在程序編輯器窗口中為每個(gè)POU提供單獨(dú)的頁(yè)面。主程序總是第1頁(yè),后面是子程序或中斷程序。由于每個(gè)程序在編輯器窗
    發(fā)表于 12-13 16:28 ?3880次閱讀

    帶參數(shù)子程序的參數(shù)傳遞過程

    程序中建立多個(gè)子程序,每個(gè)子程序完成相對(duì)比較獨(dú)立的功能。而子程序也是圍繞主程序的要求,并且還
    的頭像 發(fā)表于 10-17 09:50 ?2775次閱讀

    PLC創(chuàng)建庫(kù)文件與帶參數(shù)子程序功能該如何使用

    在S7-200SMART系列PLC子程序中,子程序可以分為兩類,類為不帶參數(shù)的子程序,另
    的頭像 發(fā)表于 10-28 11:06 ?4022次閱讀