第六章S7-200PLC功能指令二_第1頁(yè)
第六章S7-200PLC功能指令二_第2頁(yè)
第六章S7-200PLC功能指令二_第3頁(yè)
第六章S7-200PLC功能指令二_第4頁(yè)
第六章S7-200PLC功能指令二_第5頁(yè)
已閱讀5頁(yè),還剩155頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第六章第六章S7-200PLCS7-200PLC功能指令功能指令4 4:子程序及應(yīng)用子程序及應(yīng)用5 5:中斷程序及應(yīng)用中斷程序及應(yīng)用6 6:高速計(jì)數(shù)器功能及應(yīng)用高速計(jì)數(shù)器功能及應(yīng)用7 7:高速脈沖輸出功能及應(yīng)用高速脈沖輸出功能及應(yīng)用第四節(jié)第四節(jié) 子程序及應(yīng)用子程序及應(yīng)用一、子程序簡(jiǎn)介一、子程序簡(jiǎn)介 子程序可以對(duì)程序子程序可以對(duì)程序 進(jìn)行分塊,使用子程序?qū)⑦M(jìn)行分塊,使用子程序?qū)⒊绦蚍殖扇菀坠芾淼男K,使程序結(jié)構(gòu)簡(jiǎn)單清晰,程序分成容易管理的小塊,使程序結(jié)構(gòu)簡(jiǎn)單清晰,易于查錯(cuò)和維護(hù)。易于查錯(cuò)和維護(hù)。 子程序常用于需要多次反復(fù)執(zhí)行相同任務(wù)的子程序常用于需要多次反復(fù)執(zhí)行相同任務(wù)的地方,只需要寫一次子程序

2、,別的程序在需要的時(shí)地方,只需要寫一次子程序,別的程序在需要的時(shí)候調(diào)用它,而無需重寫該程序。候調(diào)用它,而無需重寫該程序。 子程序的調(diào)用是有條件的,未調(diào)用它時(shí)不會(huì)子程序的調(diào)用是有條件的,未調(diào)用它時(shí)不會(huì)執(zhí)行子程序中的指令,因此使用子程序可以減少執(zhí)行子程序中的指令,因此使用子程序可以減少掃描時(shí)間。掃描時(shí)間。 S7-200 CPU的控制程序由主程序、子程序和的控制程序由主程序、子程序和中斷程序組成。中斷程序組成。STEP7-Micro/WIN在程序編輯器在程序編輯器窗口里為每個(gè)窗口里為每個(gè)POU(程序組織單元)提供一個(gè)獨(dú)(程序組織單元)提供一個(gè)獨(dú)立的頁(yè)。主程序總是第立的頁(yè)。主程序總是第1頁(yè),后面是子程

3、序和中斷頁(yè),后面是子程序和中斷程序。程序。 各個(gè)程序在編輯器窗口里被分開,編譯時(shí)在各個(gè)程序在編輯器窗口里被分開,編譯時(shí)在程序結(jié)束的地方自動(dòng)加上無條件結(jié)束程序結(jié)束的地方自動(dòng)加上無條件結(jié)束/返回指令,返回指令,用戶程序可使用有條件結(jié)束用戶程序可使用有條件結(jié)束/返回指令。返回指令。二、局部變量表二、局部變量表1、局部變量與全局變量局部變量與全局變量 在在SIMATIC符號(hào)表或符號(hào)表或IEC的全局變量表中定義的的全局變量表中定義的變量為全局變量。程序中的每個(gè)變量為全局變量。程序中的每個(gè)POU(Program Organizational Unit,程序組織單元)均有自己的由,程序組織單元)均有自己的由

4、64B L存儲(chǔ)器組成的局部變量表。它們用來定義有范存儲(chǔ)器組成的局部變量表。它們用來定義有范圍限制的變量,局部變量只在它被創(chuàng)建的圍限制的變量,局部變量只在它被創(chuàng)建的POU中有效。中有效。與之相反,全局符號(hào)在各與之相反,全局符號(hào)在各POU中均有效,只能在符號(hào)中均有效,只能在符號(hào)表表/全局變量表中定義。全局符號(hào)與局部變量名稱相同全局變量表中定義。全局符號(hào)與局部變量名稱相同時(shí),在定義局部變量的時(shí),在定義局部變量的POU中,該局部變量的定義優(yōu)中,該局部變量的定義優(yōu)先,該全局定義則在其它先,該全局定義則在其它POU中使用。中使用。 局部變量?jī)?yōu)點(diǎn):局部變量?jī)?yōu)點(diǎn): 在子程序中只用局部變量,不用絕對(duì)地址或全在子

5、程序中只用局部變量,不用絕對(duì)地址或全局符號(hào),子程序可以移植到別的項(xiàng)目去。局符號(hào),子程序可以移植到別的項(xiàng)目去。 如果使用臨時(shí)變量(如果使用臨時(shí)變量(TEMP),同一片物理存),同一片物理存儲(chǔ)器可以在不同的程序中重復(fù)使用。儲(chǔ)器可以在不同的程序中重復(fù)使用。 局部變量還用來在子程序和調(diào)用它的程序之間傳局部變量還用來在子程序和調(diào)用它的程序之間傳遞輸入?yún)?shù)和輸出參數(shù)。遞輸入?yún)?shù)和輸出參數(shù)。2、局部變量的類型局部變量的類型 局部變量表中的變量類型區(qū)定義的變量有:局部變量表中的變量類型區(qū)定義的變量有: IN:傳入子程序參數(shù),由調(diào)用它的:傳入子程序參數(shù),由調(diào)用它的POU提供的提供的輸入?yún)?shù)。輸入?yún)?shù)。 OUT:

6、傳出子程序參數(shù),將從子程序來的結(jié)果:傳出子程序參數(shù),將從子程序來的結(jié)果值返回到指定參數(shù)的位置。值返回到指定參數(shù)的位置。 IN/OUT:傳入:傳入/傳出子程序參數(shù)。傳出子程序參數(shù)。 TEMP:暫時(shí)變量,只能在子程序內(nèi)部暫時(shí)存:暫時(shí)變量,只能在子程序內(nèi)部暫時(shí)存儲(chǔ)數(shù)據(jù)。不能用來傳遞參數(shù)。儲(chǔ)數(shù)據(jù)。不能用來傳遞參數(shù)。 注意:注意: 只有在執(zhí)行該只有在執(zhí)行該P(yáng)OU時(shí),定義的臨時(shí)變量才被使時(shí),定義的臨時(shí)變量才被使用,用,POU執(zhí)行完后,不再使用臨時(shí)變量的數(shù)值。在主執(zhí)行完后,不再使用臨時(shí)變量的數(shù)值。在主程序或中斷程序中,局部變量表只包含程序或中斷程序中,局部變量表只包含TEMP變量。變量。3、局部變量的賦值局

7、部變量的賦值 在局部變量表中賦值時(shí),只需指定局部變量的在局部變量表中賦值時(shí),只需指定局部變量的類型(類型(TEMP、IN、IN_OUT或或OUT)和數(shù)據(jù)類型,)和數(shù)據(jù)類型,不用指定存儲(chǔ)器地址,程序編輯器按照子程序指令不用指定存儲(chǔ)器地址,程序編輯器按照子程序指令的調(diào)用順序,將參數(shù)值分配給局部變量存儲(chǔ)器,起的調(diào)用順序,將參數(shù)值分配給局部變量存儲(chǔ)器,起始地址是始地址是L0.0;8個(gè)連續(xù)位的參數(shù)值分配一個(gè)字節(jié),個(gè)連續(xù)位的參數(shù)值分配一個(gè)字節(jié),從從LX.0到到LX.7。 4、在、在局部變量表中增加新的變量局部變量表中增加新的變量 對(duì)于主程序與中斷程序,局部變量表顯示一組對(duì)于主程序與中斷程序,局部變量表顯示

8、一組已被預(yù)先定義為已被預(yù)先定義為TEMP變量的行。要在表中增加行,變量的行。要在表中增加行,只需用右鍵單擊表中的某一行,在彈出的菜單中執(zhí)只需用右鍵單擊表中的某一行,在彈出的菜單中執(zhí)行行“插入插入”“行行”命令,在所選行的上部插入新命令,在所選行的上部插入新的行。執(zhí)行菜單命令的行。執(zhí)行菜單命令“插入插入”“下一行下一行” 在所在所選行的下部插入新的行。選行的下部插入新的行。 對(duì)于子程序,局部變量表顯示數(shù)據(jù)類型被預(yù)先對(duì)于子程序,局部變量表顯示數(shù)據(jù)類型被預(yù)先定義為定義為IN、IN_OUT、OUT和和TEMP的一系列行,的一系列行,不能改變它們的順序。如果要增加新的局部變量,不能改變它們的順序。如果要

9、增加新的局部變量,必須用鼠標(biāo)右鍵單擊已有的行,并用彈出菜單在所必須用鼠標(biāo)右鍵單擊已有的行,并用彈出菜單在所擊行的上面或下面插入相同類型的另一局部變量。擊行的上面或下面插入相同類型的另一局部變量。 5、局部變量數(shù)據(jù)類型檢查局部變量數(shù)據(jù)類型檢查 局部變量作為參數(shù)向子程序傳遞時(shí),在該子局部變量作為參數(shù)向子程序傳遞時(shí),在該子程序的局部變量表中指定的數(shù)據(jù)類型必須與調(diào)用它程序的局部變量表中指定的數(shù)據(jù)類型必須與調(diào)用它的的POU中的數(shù)據(jù)類型值匹配。中的數(shù)據(jù)類型值匹配。 例如:在主程序例如:在主程序OB1中調(diào)用子程序中調(diào)用子程序SBR0,使用名,使用名為為INPUT1的全局符號(hào)作為子程序的輸入?yún)?shù)。在的全局符號(hào)

10、作為子程序的輸入?yún)?shù)。在SBR0的局部變量表中,已經(jīng)定義了一個(gè)名為的局部變量表中,已經(jīng)定義了一個(gè)名為FIRST的局部變量作為該輸入?yún)?shù)。當(dāng)?shù)木植孔兞孔鳛樵撦斎雲(yún)?shù)。當(dāng)OB1調(diào)用調(diào)用SBR0時(shí),時(shí),INPUT1的數(shù)值被傳入的數(shù)值被傳入FIRST,INPUT1和和FIRST的數(shù)據(jù)類型必須完全匹配。的數(shù)據(jù)類型必須完全匹配。三、建立子程序三、建立子程序在在“編輯編輯”菜單中執(zhí)行命令菜單中執(zhí)行命令“插入插入”“子程序子程序”;在程序編輯器視窗中點(diǎn)擊鼠標(biāo)右鍵,從彈出的菜單中在程序編輯器視窗中點(diǎn)擊鼠標(biāo)右鍵,從彈出的菜單中執(zhí)行命令執(zhí)行命令“插入插入”“子程序子程序”; 新建的子程序,默認(rèn)的程序名是新建的子程序

11、,默認(rèn)的程序名是SBR_n,編號(hào),編號(hào)n從從0(063)開始按遞增順序生成。開始按遞增順序生成。用鼠標(biāo)右鍵點(diǎn)用鼠標(biāo)右鍵點(diǎn)擊指令樹中的子程序的圖標(biāo),在彈出的菜單中選擇擊指令樹中的子程序的圖標(biāo),在彈出的菜單中選擇“重新命名重新命名”,可以修改它們的名稱。,可以修改它們的名稱。注意:注意:CPU226的項(xiàng)目中最多可以創(chuàng)建的項(xiàng)目中最多可以創(chuàng)建128個(gè)子程序個(gè)子程序。四、子程序的調(diào)用(四、子程序的調(diào)用(CALLCALL指令)指令) 可以帶參數(shù)或不帶參數(shù)調(diào)用子程序。每個(gè)子可以帶參數(shù)或不帶參數(shù)調(diào)用子程序。每個(gè)子程序必須以無條件返回(程序必須以無條件返回(RET)指令作結(jié)束,)指令作結(jié)束,STEP7-Mici

12、o/WIN編程軟件為每個(gè)子程序自動(dòng)加編程軟件為每個(gè)子程序自動(dòng)加入無條件返回(入無條件返回(RET)指令。有條件子程序返回)指令。有條件子程序返回(CRET)指令,在控制條件有效時(shí),終止子程)指令,在控制條件有效時(shí),終止子程序(序(n)。子程序執(zhí)行完畢,控制程序回到主程序)。子程序執(zhí)行完畢,控制程序回到主程序中子程序調(diào)用(中子程序調(diào)用(CALL)指令的下一條指令。)指令的下一條指令。 主程序可以用子程序調(diào)用(主程序可以用子程序調(diào)用(CALL)指令來)指令來調(diào)用一個(gè)子程序。子程序調(diào)用(調(diào)用一個(gè)子程序。子程序調(diào)用(CALL)指令把)指令把程序控制權(quán)交給子程序(程序控制權(quán)交給子程序(n)。子程序結(jié)束后

13、,)。子程序結(jié)束后,必須返回主程序。必須返回主程序。子程序被調(diào)用時(shí),系統(tǒng)會(huì)保存當(dāng)前的邏輯堆棧。子程序被調(diào)用時(shí),系統(tǒng)會(huì)保存當(dāng)前的邏輯堆棧。保存后再置棧頂值為保存后再置棧頂值為1,堆棧的其他值為零,把控制,堆棧的其他值為零,把控制權(quán)交給被調(diào)用的子程序。子程序執(zhí)行完畢,通過返權(quán)交給被調(diào)用的子程序。子程序執(zhí)行完畢,通過返回指令自動(dòng)恢復(fù)邏輯堆棧原調(diào)用點(diǎn)的值,把控制權(quán)回指令自動(dòng)恢復(fù)邏輯堆棧原調(diào)用點(diǎn)的值,把控制權(quán)交還給調(diào)用程序。交還給調(diào)用程序。因?yàn)槔奂悠骺稍谡{(diào)用程序和被調(diào)用程序之間自由因?yàn)槔奂悠骺稍谡{(diào)用程序和被調(diào)用程序之間自由傳遞數(shù)據(jù),所以累加器的值在子程序調(diào)用開始時(shí)不傳遞數(shù)據(jù),所以累加器的值在子程序調(diào)用開

14、始時(shí)不需要另外保存,在子程序調(diào)用結(jié)束時(shí)也不用恢復(fù)。需要另外保存,在子程序調(diào)用結(jié)束時(shí)也不用恢復(fù)。說明:說明:在中斷程序、子程序中也可調(diào)用子程序;主程序在中斷程序、子程序中也可調(diào)用子程序;主程序中可以嵌套調(diào)用子程序,嵌套深度為中可以嵌套調(diào)用子程序,嵌套深度為8層。中斷程層。中斷程序中,不能嵌套調(diào)用子程序。序中,不能嵌套調(diào)用子程序。 五、帶參數(shù)子程序的調(diào)用五、帶參數(shù)子程序的調(diào)用1、子程序參數(shù)、子程序參數(shù) 由不超過由不超過23個(gè)字符的字母和數(shù)字組成,但第一個(gè)字符的字母和數(shù)字組成,但第一個(gè)字符必須是字母。個(gè)字符必須是字母。2、變量名、變量名 在子程序帶參數(shù)調(diào)用時(shí)可以使用在子程序帶參數(shù)調(diào)用時(shí)可以使用4種變

15、量類型。種變量類型。3、變量類型、變量類型ININ類型(傳入子程序)類型(傳入子程序)IN/OUTIN/OUT類型(傳入傳出子程序)類型(傳入傳出子程序)OUTOUT類型(傳出子程序)類型(傳出子程序)TEMPTEMP類型(暫時(shí)型)類型(暫時(shí)型) 子程序在帶參數(shù)調(diào)用時(shí),最多可以帶子程序在帶參數(shù)調(diào)用時(shí),最多可以帶16個(gè)參個(gè)參數(shù),每個(gè)參數(shù)包含變量名、變量類型和數(shù)據(jù)類型。數(shù),每個(gè)參數(shù)包含變量名、變量類型和數(shù)據(jù)類型。這些參數(shù)在子程序的局部變量表中進(jìn)行定義。這些參數(shù)在子程序的局部變量表中進(jìn)行定義。4、使用局部變量表、使用局部變量表 當(dāng)給子程序傳遞數(shù)據(jù)時(shí),這些參數(shù)被存放在子當(dāng)給子程序傳遞數(shù)據(jù)時(shí),這些參數(shù)被

16、存放在子程序的局部變量存儲(chǔ)器中,當(dāng)調(diào)用子程序時(shí),輸入程序的局部變量存儲(chǔ)器中,當(dāng)調(diào)用子程序時(shí),輸入?yún)?shù)被拷貝到子程序的局部變量存儲(chǔ)器中,當(dāng)子程參數(shù)被拷貝到子程序的局部變量存儲(chǔ)器中,當(dāng)子程序完成時(shí),從局部變量存儲(chǔ)器拷貝輸出參數(shù)到指定序完成時(shí),從局部變量存儲(chǔ)器拷貝輸出參數(shù)到指定的輸出參數(shù)地址。的輸出參數(shù)地址。 局部變量表使用局部變量存儲(chǔ)器局部變量表使用局部變量存儲(chǔ)器L L,CPUCPU在執(zhí)行在執(zhí)行子程序時(shí),自動(dòng)分配給每個(gè)子程序子程序時(shí),自動(dòng)分配給每個(gè)子程序6464個(gè)局部變量存?zhèn)€局部變量存儲(chǔ)器單元,在進(jìn)行子程序參數(shù)調(diào)用時(shí),將調(diào)用參數(shù)儲(chǔ)器單元,在進(jìn)行子程序參數(shù)調(diào)用時(shí),將調(diào)用參數(shù)按照變量類型按照變量類型I

17、NIN,IN/OUTIN/OUT,0UT0UT和和TEMPTEMP的順序依次的順序依次存入局部變量表中。存入局部變量表中。5、將參數(shù)值指定給子程序中的局部?jī)?nèi)存時(shí)應(yīng)、將參數(shù)值指定給子程序中的局部?jī)?nèi)存時(shí)應(yīng)遵守下列規(guī)則:遵守下列規(guī)則: 字節(jié)、字和雙字?jǐn)?shù)值被指定給局部?jī)?nèi)存,位于字節(jié)、字和雙字?jǐn)?shù)值被指定給局部?jī)?nèi)存,位于字節(jié)邊界(字節(jié)邊界(LBx、LWx或或LDx)位置。在帶參數(shù)的)位置。在帶參數(shù)的“調(diào)用子程序調(diào)用子程序”指令中,參數(shù)必須與子程序局部變量指令中,參數(shù)必須與子程序局部變量表中定義的變量完全匹配。參數(shù)順序必須以輸入?yún)?shù)表中定義的變量完全匹配。參數(shù)順序必須以輸入?yún)?shù)開始,其次是輸入輸出參數(shù),然后

18、是輸出參數(shù)。開始,其次是輸入輸出參數(shù),然后是輸出參數(shù)。 一至八個(gè)連續(xù)位參數(shù)值被指定給從一至八個(gè)連續(xù)位參數(shù)值被指定給從Lx.0開始開始持續(xù)至持續(xù)至Lx.7的單字節(jié)。的單字節(jié)。 參數(shù)值指定給局部?jī)?nèi)存的順序由參數(shù)值指定給局部?jī)?nèi)存的順序由CALL指定,指定,參數(shù)從參數(shù)從L0.0開始。開始。例:帶參數(shù)的子程序調(diào)用如下所示。例:帶參數(shù)的子程序調(diào)用如下所示。注釋:注釋:Micro/WIN保留保留L內(nèi)存的最上方的內(nèi)存的最上方的4個(gè)字節(jié)個(gè)字節(jié)(LB60-LB63),用于調(diào)用參數(shù)數(shù)據(jù)。),用于調(diào)用參數(shù)數(shù)據(jù)。/ L內(nèi)存被用于保存布爾輸入?yún)?shù)狀態(tài),內(nèi)存被用于保存布爾輸入?yún)?shù)狀態(tài),/ 此類參數(shù)在此類參數(shù)在LAD和和FB

19、D中被顯示為使能位輸入。中被顯示為使能位輸入。/ 從而允許本網(wǎng)絡(luò)在從而允許本網(wǎng)絡(luò)在LAD、FBD和和STL編輯器中顯示。編輯器中顯示。 名為名為“模擬量計(jì)算模擬量計(jì)算”的子程序如下圖所示,在該子的子程序如下圖所示,在該子程序的局部變量表中,定義了名為程序的局部變量表中,定義了名為“轉(zhuǎn)換值轉(zhuǎn)換值”、“系數(shù)系數(shù)1 1”和和“系數(shù)系數(shù)”的輸入(的輸入(ININ)變量,名為)變量,名為“模擬值模擬值”的輸?shù)妮敵觯ǔ觯∣UTOUT)變量,和名為)變量,和名為“暫存暫存”的臨時(shí)(的臨時(shí)(TEMPTEMP)變量。)變量。局部變量表最左邊的一列是每個(gè)參數(shù)在局部存儲(chǔ)器(局部變量表最左邊的一列是每個(gè)參數(shù)在局部存儲(chǔ)

20、器(L L)中的地址。中的地址。 # #表示局部變量,軟件自動(dòng)添加表示局部變量,軟件自動(dòng)添加。如果用語句表編程,子程序調(diào)用指令的格式為:如果用語句表編程,子程序調(diào)用指令的格式為: CALL 子程序號(hào),參數(shù)子程序號(hào),參數(shù)1,參數(shù),參數(shù)2,參數(shù)參數(shù)n, n=116。上梯形圖對(duì)應(yīng)的語句表程序?yàn)椋荷咸菪螆D對(duì)應(yīng)的語句表程序?yàn)椋篖D I0.1CALL 模擬量計(jì)算,模擬量計(jì)算,AIW2,VW20,+2356,VD40六、子程序中定時(shí)器的使用六、子程序中定時(shí)器的使用 調(diào)用子程序時(shí),子程序中的定時(shí)器正常計(jì)時(shí);調(diào)用子程序時(shí),子程序中的定時(shí)器正常計(jì)時(shí);停止調(diào)用子程序時(shí),線圈在子程序內(nèi)的位元件的停止調(diào)用子程序時(shí),線圈

21、在子程序內(nèi)的位元件的ON/OFF狀態(tài)保持不變。如果在停止調(diào)用時(shí)子程序狀態(tài)保持不變。如果在停止調(diào)用時(shí)子程序中的定時(shí)器正在定時(shí),中的定時(shí)器正在定時(shí),100ms定時(shí)器將停止定時(shí),定時(shí)器將停止定時(shí),當(dāng)前值保持不變,重新調(diào)用時(shí)繼續(xù)定時(shí);但當(dāng)前值保持不變,重新調(diào)用時(shí)繼續(xù)定時(shí);但1ms和和10ms定時(shí)器將繼續(xù)定時(shí),定時(shí)時(shí)間到時(shí),它們的定時(shí)器將繼續(xù)定時(shí),定時(shí)時(shí)間到時(shí),它們的定時(shí)器位變?yōu)槎〞r(shí)器位變?yōu)?狀態(tài),且可以在子程序之外起作用。狀態(tài),且可以在子程序之外起作用。七、子程序應(yīng)用舉例七、子程序應(yīng)用舉例例例1:用兩個(gè)子程序分別控制兩臺(tái)電動(dòng)機(jī)的啟停,:用兩個(gè)子程序分別控制兩臺(tái)電動(dòng)機(jī)的啟停,主程序中調(diào)用子程序?qū)崿F(xiàn)控制。

22、主程序中調(diào)用子程序?qū)崿F(xiàn)控制。OB1SBR0SBR1方案一:無參數(shù)傳遞方案一:無參數(shù)傳遞OB1方案二:帶參數(shù)傳遞方案二:帶參數(shù)傳遞LD I0.0= L60.0LD I0.1= L63.7LD I0.2= L63.6LD L60.0CALL SBR_0:SBR0, L63.7, L63.6, Q0.0LD I1.0= L60.0LD I1.1= L63.7LD I1.2= L63.6LD L60.0CALL SBR_0:SBR0, L63.7, L63.6, Q1.0SBR0方案二:帶參數(shù)傳遞方案二:帶參數(shù)傳遞LD #啟動(dòng)啟動(dòng):L0.0O #電機(jī)電機(jī):L0.2AN #停止停止:L0.1= #電機(jī)電

23、機(jī):L0.2例例2:設(shè)計(jì)一記錄設(shè)備運(yùn)行時(shí)間的子程序,符號(hào)名:設(shè)計(jì)一記錄設(shè)備運(yùn)行時(shí)間的子程序,符號(hào)名為為“運(yùn)行時(shí)間運(yùn)行時(shí)間”。設(shè)備運(yùn)行時(shí)。設(shè)備運(yùn)行時(shí)I0.0為為ON,用,用I0.0的的常開觸點(diǎn)調(diào)用子程序。常開觸點(diǎn)調(diào)用子程序。OB1SBR0第五節(jié)第五節(jié) 中斷程序及應(yīng)用中斷程序及應(yīng)用一、中斷程序簡(jiǎn)介一、中斷程序簡(jiǎn)介 中斷程序可以為中斷程序可以為PLC內(nèi)部或外部的特殊事件內(nèi)部或外部的特殊事件提供快速反應(yīng),在提供快速反應(yīng),在PLC控制系統(tǒng)中,對(duì)于不定期控制系統(tǒng)中,對(duì)于不定期產(chǎn)生的繼續(xù)處理事件,常通過采用中斷處理技術(shù)產(chǎn)生的繼續(xù)處理事件,常通過采用中斷處理技術(shù)來完成。來完成。 中斷程序不是由程序調(diào)用,而是在

24、中斷事件中斷程序不是由程序調(diào)用,而是在中斷事件發(fā)生時(shí)由系統(tǒng)調(diào)用。發(fā)生時(shí)由系統(tǒng)調(diào)用。 當(dāng)當(dāng)CPU響應(yīng)中斷請(qǐng)求后,會(huì)暫時(shí)停止當(dāng)前響應(yīng)中斷請(qǐng)求后,會(huì)暫時(shí)停止當(dāng)前正在執(zhí)行的程序,進(jìn)行現(xiàn)場(chǎng)保護(hù),然后轉(zhuǎn)到相應(yīng)正在執(zhí)行的程序,進(jìn)行現(xiàn)場(chǎng)保護(hù),然后轉(zhuǎn)到相應(yīng)的中斷服務(wù)程序中去處理。的中斷服務(wù)程序中去處理。 一旦中斷程序處理結(jié)束,立即恢復(fù)現(xiàn)場(chǎng),將一旦中斷程序處理結(jié)束,立即恢復(fù)現(xiàn)場(chǎng),將保存起來的現(xiàn)場(chǎng)數(shù)據(jù)和狀態(tài)重新裝入,返回到源保存起來的現(xiàn)場(chǎng)數(shù)據(jù)和狀態(tài)重新裝入,返回到源程序繼續(xù)執(zhí)行。程序繼續(xù)執(zhí)行。 在在S7-200中,中斷服務(wù)程序的調(diào)用和處理由中,中斷服務(wù)程序的調(diào)用和處理由中斷指令來完成。一般中斷程序都較為短小和簡(jiǎn)中斷

25、指令來完成。一般中斷程序都較為短小和簡(jiǎn)明扼要,這樣可以加快中斷程序執(zhí)行的速度,使明扼要,這樣可以加快中斷程序執(zhí)行的速度,使其他程序不會(huì)受到長(zhǎng)時(shí)間的延誤。其他程序不會(huì)受到長(zhǎng)時(shí)間的延誤。二、中斷源及中斷事件二、中斷源及中斷事件1、中斷源及種類、中斷源及種類 中斷源中斷源,即中斷事件發(fā)出中斷請(qǐng)求的來源。,即中斷事件發(fā)出中斷請(qǐng)求的來源。S7-200PLC具有最多可達(dá)具有最多可達(dá)34個(gè)中斷源,每個(gè)中斷源都分個(gè)中斷源,每個(gè)中斷源都分配一個(gè)編號(hào)用以識(shí)別,稱為配一個(gè)編號(hào)用以識(shí)別,稱為中斷事件號(hào)中斷事件號(hào)。這些中斷。這些中斷源大致分為三大類:源大致分為三大類:通信中斷通信中斷、輸入輸出中斷輸入輸出中斷和和時(shí)時(shí)基

26、中斷基中斷。 S7-200中,過程中斷分為通信中斷和輸入輸中,過程中斷分為通信中斷和輸入輸出中斷。通信中斷包括通信口出中斷。通信中斷包括通信口0和通信口和通信口1產(chǎn)生的中產(chǎn)生的中斷;輸入輸出中斷包括外部輸入中斷、高速計(jì)數(shù)器斷;輸入輸出中斷包括外部輸入中斷、高速計(jì)數(shù)器中斷和高速脈沖串輸出中斷。中斷和高速脈沖串輸出中斷。1)通信中斷:是指)通信中斷:是指S7-200的串行通信口可以通過的串行通信口可以通過梯形圖或語句表編程的方法來設(shè)置波特率、奇偶校梯形圖或語句表編程的方法來設(shè)置波特率、奇偶校驗(yàn)和通信協(xié)議等參數(shù),對(duì)通信口的這種操作方式,驗(yàn)和通信協(xié)議等參數(shù),對(duì)通信口的這種操作方式,又稱為自由口通信。利

27、用接收和發(fā)送中斷可簡(jiǎn)化程又稱為自由口通信。利用接收和發(fā)送中斷可簡(jiǎn)化程序?qū)νㄐ诺目刂?。序?qū)νㄐ诺目刂啤?)外部輸入中斷:來自過程中斷的信息可通過)外部輸入中斷:來自過程中斷的信息可通過I0.0,I0.1,I0.2,I0.3的上升沿或下降沿輸入到的上升沿或下降沿輸入到PLC中中。3)高速計(jì)數(shù)器中斷:應(yīng)用高速計(jì)數(shù)器場(chǎng)合,當(dāng)其當(dāng))高速計(jì)數(shù)器中斷:應(yīng)用高速計(jì)數(shù)器場(chǎng)合,當(dāng)其當(dāng)前值等于設(shè)定值時(shí),或當(dāng)計(jì)數(shù)方向發(fā)生改變時(shí),或當(dāng)前值等于設(shè)定值時(shí),或當(dāng)計(jì)數(shù)方向發(fā)生改變時(shí),或當(dāng)其外部復(fù)位時(shí),都可能使其向其外部復(fù)位時(shí),都可能使其向CPU提出中斷請(qǐng)求。提出中斷請(qǐng)求。S7-200中,時(shí)基中斷分為定時(shí)中斷和定時(shí)器中斷。中,時(shí)

28、基中斷分為定時(shí)中斷和定時(shí)器中斷。4)高速脈沖串輸出中斷:當(dāng))高速脈沖串輸出中斷:當(dāng)PLC完成輸出給定數(shù)完成輸出給定數(shù)量的高速脈沖串時(shí),可引起中斷。量的高速脈沖串時(shí),可引起中斷。1)定時(shí)中斷:定時(shí)中斷響應(yīng)周期性的事件,周期)定時(shí)中斷:定時(shí)中斷響應(yīng)周期性的事件,周期時(shí)間以時(shí)間以1ms為計(jì)量單位,最小周期為為計(jì)量單位,最小周期為5ms,最大周,最大周期為期為255ms。 定時(shí)中斷有兩種類型:定時(shí)中斷定時(shí)中斷有兩種類型:定時(shí)中斷0和定時(shí)中斷和定時(shí)中斷1。對(duì)于定時(shí)中斷對(duì)于定時(shí)中斷0,把周期時(shí)間寫入特殊繼電器,把周期時(shí)間寫入特殊繼電器SMB34;對(duì)于定時(shí)中斷;對(duì)于定時(shí)中斷1,把周期時(shí)間寫入特殊繼,把周期時(shí)

29、間寫入特殊繼電器電器SMB35。利用定時(shí)中斷可以設(shè)定采樣周期,實(shí)。利用定時(shí)中斷可以設(shè)定采樣周期,實(shí)現(xiàn)對(duì)模擬量的數(shù)據(jù)采樣?,F(xiàn)對(duì)模擬量的數(shù)據(jù)采樣。2)定時(shí)器中斷:定時(shí)器中斷是利用指定的定時(shí)器)定時(shí)器中斷:定時(shí)器中斷是利用指定的定時(shí)器設(shè)定的時(shí)間產(chǎn)生中斷。在設(shè)定的時(shí)間產(chǎn)生中斷。在S7-200中,指定的定時(shí)器中,指定的定時(shí)器為為1ms的通電延時(shí)定時(shí)器的通電延時(shí)定時(shí)器T32和斷電延時(shí)定時(shí)器和斷電延時(shí)定時(shí)器T96。S7-200的的CPU中可響應(yīng)最多中可響應(yīng)最多34個(gè)中斷事件,見下表。個(gè)中斷事件,見下表。事件事件號(hào)號(hào)中斷事件描述中斷事件描述優(yōu)先優(yōu)先級(jí)別級(jí)別CPU221CPU222CPU224CPU2260I0

30、.0上升邊沿中斷上升邊沿中斷2 2Y YY YY YY Y1I0.0下降邊沿中斷下降邊沿中斷6 6Y YY YY YY Y2I0.1上升邊沿中斷上升邊沿中斷3 3Y YY YY YY Y3I0.1下降邊沿中斷下降邊沿中斷7 7Y YY YY YY Y事件事件號(hào)號(hào)中斷事件描述中斷事件描述優(yōu)先優(yōu)先級(jí)別級(jí)別CPU221CPU222CPU224CPU2264I0.2上升邊沿中斷上升邊沿中斷4 4Y YY YY YY Y5I0.2下降邊沿中斷下降邊沿中斷8 8Y YY YY YY Y6I0.3上升邊沿中斷上升邊沿中斷6 6Y YY YY YY Y7I0.3下降邊沿中斷下降邊沿中斷9 9Y YY YY Y

31、Y Y8端口端口 0:接收字符:接收字符0 0Y YY YY YY Y9端口端口0:傳輸完成:傳輸完成0 0Y YY YY YY Y10定時(shí)中斷定時(shí)中斷00 0Y YY YY YY Y11定時(shí)中斷定時(shí)中斷11 1Y YY YY YY Y12HSC0,CV=PV1010Y YY YY YY Y事件事件號(hào)號(hào)中斷事件描述中斷事件描述優(yōu)先優(yōu)先級(jí)別級(jí)別CPU221CPU222CPU224CPU22613HSC1,CV=PV1313Y YY Y14HSC1方向改變方向改變1414Y YY Y15HSC1外部復(fù)原外部復(fù)原1515Y YY Y16HSC2,CV=PV1616Y YY Y17HSC2方向改變方向

32、改變1717Y YY Y18HSC2外部復(fù)原外部復(fù)原1818Y YY Y19PTO 0完成中斷完成中斷0 0Y YY YY YY Y20PTO 1完成中斷完成中斷1 1Y YY YY YY Y21定時(shí)器定時(shí)器T32,CT=PT中斷中斷2 2Y YY YY YY Y事件事件號(hào)號(hào)中斷事件描述中斷事件描述優(yōu)先優(yōu)先級(jí)別級(jí)別CPU221CPU222CPU224CPU22622定時(shí)器定時(shí)器T96,CT=PT中斷中斷2 2Y YY YY YY Y23端口端口0:接收信息完成:接收信息完成0 0Y YY YY YY Y24端口端口1:接收信息完成:接收信息完成1 1Y Y25端口端口1:接收字符:接收字符1

33、1Y Y26端口端口1:傳輸完成:傳輸完成1 1Y Y27HSC0方向改變方向改變1111Y YY YY YY Y28HSC0外部復(fù)原外部復(fù)原1212Y YY YY YY Y29HSC4,CV=PV2020Y YY YY YY Y30HSC4方向改變方向改變2121Y YY YY YY Y2、中斷優(yōu)先級(jí)、中斷優(yōu)先級(jí) 中斷優(yōu)先級(jí)由高到低依次是:通信中斷、輸入中斷優(yōu)先級(jí)由高到低依次是:通信中斷、輸入輸出中斷、時(shí)基中斷。每種中斷中的不同中斷事件輸出中斷、時(shí)基中斷。每種中斷中的不同中斷事件又有不同的優(yōu)先權(quán)。又有不同的優(yōu)先權(quán)。 主機(jī)中的所有中斷事件及優(yōu)先級(jí)參照上表所示。主機(jī)中的所有中斷事件及優(yōu)先級(jí)參照上

34、表所示。事件事件號(hào)號(hào)中斷事件描述中斷事件描述優(yōu)先優(yōu)先級(jí)別級(jí)別CPU221CPU222CPU224CPU22631HSC4外部復(fù)原外部復(fù)原2222Y YY YY YY Y32HSC3,CV=PV1919Y YY YY YY Y33HSC5,CV=PV2323Y YY YY YY Y 在在PLC中,中,CPU一般在指定的優(yōu)先級(jí)內(nèi)按照先一般在指定的優(yōu)先級(jí)內(nèi)按照先來先服務(wù)的原則響應(yīng)中斷事件的中斷請(qǐng)求,在任何時(shí)來先服務(wù)的原則響應(yīng)中斷事件的中斷請(qǐng)求,在任何時(shí)刻,刻,CPU只執(zhí)行一個(gè)中斷程序。當(dāng)只執(zhí)行一個(gè)中斷程序。當(dāng)CPU按照中斷優(yōu)按照中斷優(yōu)先級(jí)響應(yīng)并執(zhí)行一個(gè)中斷程序時(shí),就不會(huì)響應(yīng)其他中先級(jí)響應(yīng)并執(zhí)行一個(gè)中

35、斷程序時(shí),就不會(huì)響應(yīng)其他中斷事件的中斷請(qǐng)求(盡管此時(shí)可能會(huì)有更高級(jí)別的中斷事件的中斷請(qǐng)求(盡管此時(shí)可能會(huì)有更高級(jí)別的中斷事件發(fā)出中斷請(qǐng)求),直到將當(dāng)前的中斷程序執(zhí)行斷事件發(fā)出中斷請(qǐng)求),直到將當(dāng)前的中斷程序執(zhí)行結(jié)束。在結(jié)束。在CPU執(zhí)行中斷程序期間,對(duì)新出現(xiàn)的中斷執(zhí)行中斷程序期間,對(duì)新出現(xiàn)的中斷事件仍然按照中斷性質(zhì)和優(yōu)先級(jí)的順序分別進(jìn)行排隊(duì),事件仍然按照中斷性質(zhì)和優(yōu)先級(jí)的順序分別進(jìn)行排隊(duì),形成中斷隊(duì)列。形成中斷隊(duì)列。CPU22x系列的中斷隊(duì)列的長(zhǎng)度如下系列的中斷隊(duì)列的長(zhǎng)度如下表所示。如果超過規(guī)定的中斷隊(duì)列長(zhǎng)度,則產(chǎn)生溢出,表所示。如果超過規(guī)定的中斷隊(duì)列長(zhǎng)度,則產(chǎn)生溢出,使特殊繼電器置位。使特殊

36、繼電器置位。中斷隊(duì)列中斷隊(duì)列CPU221CPU222CPU224CPU226溢出位溢出位通信中斷通信中斷4個(gè)個(gè)4個(gè)個(gè)4個(gè)個(gè)8個(gè)個(gè)SM4.0I/O中斷中斷16個(gè)個(gè)16個(gè)個(gè)16個(gè)個(gè)16個(gè)個(gè)SM4.1時(shí)基中斷時(shí)基中斷8個(gè)個(gè)8個(gè)個(gè)8個(gè)個(gè)8個(gè)個(gè)SM4.2表中斷隊(duì)列的長(zhǎng)度及溢出位表中斷隊(duì)列的長(zhǎng)度及溢出位CPU型號(hào)型號(hào)CPU221CPU222CPU224CPU226可連接中斷事件數(shù)可連接中斷事件數(shù)253134可連接中斷事件號(hào)可連接中斷事件號(hào)012,1923,2733023,2733033表中斷數(shù)量及事件表中斷數(shù)量及事件三、中斷程序的相關(guān)指令三、中斷程序的相關(guān)指令 中斷允許(中斷允許(ENI)指令,全局地開放

37、所有被連接)指令,全局地開放所有被連接的中斷事件,允許的中斷事件,允許CPU接收所有中斷事件。接收所有中斷事件。1、中斷允許指令中斷允許指令ENI和中斷禁止指令和中斷禁止指令DISI 中斷禁止(中斷禁止(DISI)指令,全局地關(guān)閉所有被連)指令,全局地關(guān)閉所有被連接的中斷事件,禁止接的中斷事件,禁止CPU接收各個(gè)中斷事件的中斷接收各個(gè)中斷事件的中斷請(qǐng)求。請(qǐng)求。 執(zhí)行執(zhí)行DISI指令后,出現(xiàn)的中斷事件就進(jìn)入中斷指令后,出現(xiàn)的中斷事件就進(jìn)入中斷隊(duì)伍排隊(duì)等候,直到隊(duì)伍排隊(duì)等候,直到ENI指令重新允許中斷。指令重新允許中斷。 CPU進(jìn)入進(jìn)入RUN模式時(shí),系統(tǒng)自動(dòng)禁止了中斷。模式時(shí),系統(tǒng)自動(dòng)禁止了中斷。

38、在在RUN模式執(zhí)行模式執(zhí)行ENI指令后,開放所有中斷。指令后,開放所有中斷。 中斷允許指令中斷允許指令ENI、中斷禁止指令、中斷禁止指令DISI以線圈以線圈的形式編程,無操作數(shù)。的形式編程,無操作數(shù)。2、中斷連接指令(中斷連接指令(ATCH) 中斷連接(中斷連接(ATCH)指令,用來建立某個(gè)中斷事)指令,用來建立某個(gè)中斷事件(件(EVNT)和某個(gè)中斷程序()和某個(gè)中斷程序(INT)之間的聯(lián)系。)之間的聯(lián)系。并允許這個(gè)中斷事件。并允許這個(gè)中斷事件。 在調(diào)用一個(gè)中斷程序前,必須用中斷連接指令,在調(diào)用一個(gè)中斷程序前,必須用中斷連接指令,建立某中斷事件與中斷程序的連接,當(dāng)把某個(gè)中斷事建立某中斷事件與中

39、斷程序的連接,當(dāng)把某個(gè)中斷事件和中斷程序建立連接后,該中斷事件發(fā)生時(shí)會(huì)自動(dòng)件和中斷程序建立連接后,該中斷事件發(fā)生時(shí)會(huì)自動(dòng) 執(zhí)行中斷。執(zhí)行中斷。多個(gè)中斷事件可調(diào)用同一個(gè)中斷程序,但多個(gè)中斷事件可調(diào)用同一個(gè)中斷程序,但一個(gè)中斷事件不能同時(shí)與多個(gè)中斷程序建立連接,否一個(gè)中斷事件不能同時(shí)與多個(gè)中斷程序建立連接,否則,在中斷允許且某個(gè)中斷事件發(fā)生時(shí),系統(tǒng)默認(rèn)執(zhí)則,在中斷允許且某個(gè)中斷事件發(fā)生時(shí),系統(tǒng)默認(rèn)執(zhí)行與該事件建立連接的最后一個(gè)中斷程序。行與該事件建立連接的最后一個(gè)中斷程序。3、中斷分離指令(中斷分離指令(DTCH) 中斷分離(中斷分離(DTCH)指令,用來解除某個(gè)中斷事)指令,用來解除某個(gè)中斷事件

40、(件(EVNT)和某個(gè)中斷程序之間的聯(lián)系,并禁止該)和某個(gè)中斷程序之間的聯(lián)系,并禁止該中斷事件。指令操作數(shù)中斷事件。指令操作數(shù)EVNT的數(shù)據(jù)類型均為的數(shù)據(jù)類型均為BYTE。 可以用可以用DTCH指令截?cái)嘀袛嗍录椭袛喑绦蛑g指令截?cái)嘀袛嗍录椭袛喑绦蛑g的聯(lián)系,以單獨(dú)禁止某中斷事件。的聯(lián)系,以單獨(dú)禁止某中斷事件。DTCH指令使中斷指令使中斷回到不激活或無效狀態(tài)。回到不激活或無效狀態(tài)。4、中斷中斷返回返回指令(指令(RETI)、(、(CRETI) 中斷返回指令的功能是,當(dāng)中斷結(jié)束時(shí),通過中斷返回指令的功能是,當(dāng)中斷結(jié)束時(shí),通過中斷返回指令退出中斷服務(wù)程序,返回到主程序。中斷返回指令退出中斷服務(wù)程

41、序,返回到主程序。RETI是無條件返回指令,是無條件返回指令,CRETI是有條件返回指令。是有條件返回指令。指令使用舉例:指令使用舉例:程序?qū)崿F(xiàn)的功能是程序?qū)崿F(xiàn)的功能是調(diào)用調(diào)用I0.1輸入點(diǎn)的輸入點(diǎn)的上升沿中斷,若上升沿中斷,若發(fā)現(xiàn)發(fā)現(xiàn)I/O錯(cuò)誤,則錯(cuò)誤,則禁止本中斷,用禁止本中斷,用外部條件可以禁外部條件可以禁止全局中斷。止全局中斷。四、中斷應(yīng)用舉例四、中斷應(yīng)用舉例例例1:利用定時(shí)中斷指令實(shí)現(xiàn)對(duì)模擬量的等間隔采樣:利用定時(shí)中斷指令實(shí)現(xiàn)對(duì)模擬量的等間隔采樣OB1:LD SM0.1CALL SBR_0:SBR0SBR0:LD SM0.0MOVB 100, SMB34ATCH INT_0:INT0

42、, 10ENIINT0:LD SM0.0MOVW AIW4, VW100例例2:在:在I0.0的上升沿通過中斷使的上升沿通過中斷使Q0.0立即置位;在立即置位;在I0.1的下降沿通過中斷使的下降沿通過中斷使Q0.0立即復(fù)位。立即復(fù)位。/主程序主程序OB1LD SM0.1 /第一次掃描時(shí)第一次掃描時(shí)ATCH INT_0,0 /I0.0上升沿執(zhí)行上升沿執(zhí)行0號(hào)中斷程序號(hào)中斷程序ATCH INT_1,3 /I0.1下降沿執(zhí)行下降沿執(zhí)行1號(hào)中斷程序號(hào)中斷程序ENI /允許全局中斷允許全局中斷/中斷程序中斷程序0(INT_0)LD SM0.0 /常常ONSI Q0.0,1 /使使Q0.0立即置位立即置位

43、/中斷程序中斷程序1(INT_1)LD SM0.0RI Q0.0,1 /使使Q0.0立即復(fù)位立即復(fù)位例例3:定時(shí)中斷的定時(shí)時(shí)間最長(zhǎng)為:定時(shí)中斷的定時(shí)時(shí)間最長(zhǎng)為255ms,如何用定,如何用定時(shí)中斷時(shí)中斷1實(shí)現(xiàn)周期為實(shí)現(xiàn)周期為2s的高精度定時(shí)?的高精度定時(shí)?/主程序主程序OB1LD SM0.1 /第一次掃描時(shí)第一次掃描時(shí)MOVB 0,VB10 /中斷次數(shù)計(jì)數(shù)器清零中斷次數(shù)計(jì)數(shù)器清零MOVB 250,SMB34 /設(shè)定中斷設(shè)定中斷0時(shí)間間隔為時(shí)間間隔為250msATCH INT_0,10 /指定定時(shí)中斷指定定時(shí)中斷0執(zhí)行執(zhí)行0號(hào)中斷程序號(hào)中斷程序ENI /允許全局中斷允許全局中斷/中斷程序中斷程序0

44、(INT_0),每隔),每隔250ms中斷一次中斷一次LD SM0.0 /常常ONINCB VB10 /中斷次數(shù)計(jì)數(shù)器加中斷次數(shù)計(jì)數(shù)器加1LDB= 8,VB10 /比較,如果中斷比較,如果中斷8次(次(2s)MOVB 0,VB10 /中斷次數(shù)計(jì)數(shù)器清零中斷次數(shù)計(jì)數(shù)器清零INCB QB0 /每每2s將將QB0加加1例例4:出現(xiàn)事故時(shí),:出現(xiàn)事故時(shí),I0.0的上升沿產(chǎn)生中斷,使輸?shù)纳仙禺a(chǎn)生中斷,使輸出出Q1.0立即置位,同時(shí)將事故發(fā)生的日期和時(shí)間立即置位,同時(shí)將事故發(fā)生的日期和時(shí)間保存在保存在VB10VB17中。中。/主程序主程序OB1LD SM0.1 /第一次掃描第一次掃描ATCH 0,0 /

45、指定在指定在I0.0上升沿上升沿 /執(zhí)行中斷程序執(zhí)行中斷程序0ENI /開中斷開中斷/中斷程序中斷程序INT0LD SM0.0SI Q1.0,1 /使使Q1.0立即置位立即置位TODR VB10 /讀實(shí)時(shí)時(shí)鐘讀實(shí)時(shí)時(shí)鐘例例5:使用定時(shí)中斷的彩燈控制程序,控制:使用定時(shí)中斷的彩燈控制程序,控制8個(gè)彩個(gè)彩燈循環(huán)左移。燈循環(huán)左移。 定時(shí)中斷定時(shí)中斷0的中斷號(hào)為的中斷號(hào)為10,SMB34中的定時(shí)時(shí)中的定時(shí)時(shí)間為間為1255ms。彩燈移位的延時(shí)時(shí)間一般大于。彩燈移位的延時(shí)時(shí)間一般大于255ms,將中斷的時(shí)間間隔設(shè)為,將中斷的時(shí)間間隔設(shè)為250ms,用,用VB0做做中斷次數(shù)計(jì)數(shù)器,在中斷服務(wù)程序中將中斷次

46、數(shù)計(jì)數(shù)器,在中斷服務(wù)程序中將VB0加加1,然,然后用比較觸點(diǎn)指令判斷后用比較觸點(diǎn)指令判斷VB0是否等于設(shè)置的次數(shù)是否等于設(shè)置的次數(shù)N。若相等則將若相等則將QB0循環(huán)左移一位,同時(shí)循環(huán)左移一位,同時(shí)VB0清零。移清零。移位時(shí)間間隔為位時(shí)間間隔為0.25N(s)。)。主程序主程序OB1LD SM0.1CALL SBR_0:SBR0子程序子程序SBR0LD SM0.0MOVB 16#07, QB0MOVB 0, VB0MOVB 250, SMB34ATCH INT_0:INT0, 10ENI中斷程序中斷程序INT0LD SM0.0INCB VB0LDB= VB0, 4RLB QB0, 1MOVB 0

47、, VB0例例6:使用:使用T32中斷的彩燈控制程序,控制中斷的彩燈控制程序,控制8個(gè)彩個(gè)彩燈循環(huán)左移。燈循環(huán)左移。 1ms定時(shí)器定時(shí)器T32和和T96的定時(shí)時(shí)間到時(shí)可以產(chǎn)生的定時(shí)時(shí)間到時(shí)可以產(chǎn)生中斷,中斷號(hào)分別為中斷,中斷號(hào)分別為21和和22,最長(zhǎng)定時(shí)時(shí)間為,最長(zhǎng)定時(shí)時(shí)間為32.767s。對(duì)于分辨率為。對(duì)于分辨率為1ms和和10ms的定時(shí)器,不的定時(shí)器,不能使用定時(shí)器本身觸點(diǎn)作為自復(fù)位控制,應(yīng)使用下能使用定時(shí)器本身觸點(diǎn)作為自復(fù)位控制,應(yīng)使用下面主程序方法。面主程序方法。主程序主程序OB1LD SM0.1CALL SBR_0:SBR0LDN M0.0TON T32, +500LD T32= M

48、0.0子程序子程序SBR0LD SM0.0MOVB 7, QB0ATCH INT_0:INT0, 21ENI中斷程序中斷程序INT0LD SM0.0RLB QB0, 1總總 結(jié)結(jié)(1)中斷程序構(gòu)成)中斷程序構(gòu)成 中斷程序必須由三部分構(gòu)成:中斷程序標(biāo)號(hào)、中斷程序必須由三部分構(gòu)成:中斷程序標(biāo)號(hào)、中斷程序指令和無條件返回指令。中斷程序指令和無條件返回指令。(2)編程要求)編程要求用中斷程序的標(biāo)號(hào)來區(qū)別每個(gè)中斷程序。用中斷程序的標(biāo)號(hào)來區(qū)別每個(gè)中斷程序。中斷服務(wù)程序越短越好,以減少中斷程序執(zhí)行時(shí)間。中斷服務(wù)程序越短越好,以減少中斷程序執(zhí)行時(shí)間。在中斷程序中不能使用在中斷程序中不能使用ENIENI、DIS

49、IDISI、HDEFHDEF、LSCRLSCR、ENDEND指令。指令。中斷服務(wù)程序的最后一條指令一定是中斷服務(wù)程序的最后一條指令一定是RETIRETI或或CRETICRETI(其中(其中RETIRETI指令會(huì)由編程軟件自動(dòng)添加)。指令會(huì)由編程軟件自動(dòng)添加)。第六節(jié)第六節(jié) 高速計(jì)數(shù)器功能及應(yīng)用高速計(jì)數(shù)器功能及應(yīng)用一、高速計(jì)數(shù)器概述一、高速計(jì)數(shù)器概述 PLC的普通計(jì)數(shù)器的計(jì)數(shù)過程與掃描工作方式的普通計(jì)數(shù)器的計(jì)數(shù)過程與掃描工作方式有關(guān),有關(guān),CPU通過每一個(gè)掃描周期讀取一次被測(cè)信號(hào)通過每一個(gè)掃描周期讀取一次被測(cè)信號(hào)的方法來捕捉被測(cè)信號(hào)的上升沿,被測(cè)信號(hào)的頻率的方法來捕捉被測(cè)信號(hào)的上升沿,被測(cè)信號(hào)的

50、頻率較高時(shí),會(huì)丟失計(jì)數(shù)脈沖,因此普通計(jì)數(shù)器的工作較高時(shí),會(huì)丟失計(jì)數(shù)脈沖,因此普通計(jì)數(shù)器的工作頻率很低,一般僅有幾十赫茲。高速計(jì)數(shù)器可以對(duì)頻率很低,一般僅有幾十赫茲。高速計(jì)數(shù)器可以對(duì)普通計(jì)數(shù)器無能為力的事件進(jìn)行計(jì)數(shù),普通計(jì)數(shù)器無能為力的事件進(jìn)行計(jì)數(shù),S7-200有有6個(gè)高速計(jì)數(shù)器個(gè)高速計(jì)數(shù)器HSC0HSC5,可以設(shè)置多達(dá),可以設(shè)置多達(dá)12中不中不同的操作模式。同的操作模式。1、高速計(jì)數(shù)器的數(shù)量及編號(hào)、高速計(jì)數(shù)器的數(shù)量及編號(hào) 高速計(jì)數(shù)器在程序中使用時(shí)的地址編號(hào)用高速計(jì)數(shù)器在程序中使用時(shí)的地址編號(hào)用HSCn來表示,來表示,HSC表編程元件名稱為高速計(jì)數(shù)器,表編程元件名稱為高速計(jì)數(shù)器,n(n=05)為

51、編號(hào)。為編號(hào)。 每個(gè)高速計(jì)數(shù)器的計(jì)數(shù)結(jié)果都對(duì)應(yīng)有一個(gè)當(dāng)前值寄存器。每個(gè)高速計(jì)數(shù)器的計(jì)數(shù)結(jié)果都對(duì)應(yīng)有一個(gè)當(dāng)前值寄存器。編程時(shí)可通過地址編程時(shí)可通過地址HCx(x=05)來讀取高速計(jì)數(shù)器的當(dāng)前值。)來讀取高速計(jì)數(shù)器的當(dāng)前值。不同型號(hào)的不同型號(hào)的PLC主機(jī),高速計(jì)數(shù)器的數(shù)量對(duì)應(yīng)如下表所示。主機(jī),高速計(jì)數(shù)器的數(shù)量對(duì)應(yīng)如下表所示。2、高速計(jì)數(shù)器的外部輸入信號(hào)、高速計(jì)數(shù)器的外部輸入信號(hào) 每個(gè)高速計(jì)數(shù)器對(duì)它所支持的時(shí)鐘、方向控每個(gè)高速計(jì)數(shù)器對(duì)它所支持的時(shí)鐘、方向控制、復(fù)位和啟動(dòng)都有專用的輸入點(diǎn),通過中斷控制制、復(fù)位和啟動(dòng)都有專用的輸入點(diǎn),通過中斷控制完成預(yù)定的操作。每個(gè)高速計(jì)數(shù)器所需的外部輸入完成預(yù)定的操作

52、。每個(gè)高速計(jì)數(shù)器所需的外部輸入點(diǎn)如下圖所示。點(diǎn)如下圖所示。3、高速計(jì)數(shù)器相關(guān)的中斷事件、高速計(jì)數(shù)器相關(guān)的中斷事件 高速計(jì)數(shù)器的計(jì)數(shù)和動(dòng)作可采用中斷方式進(jìn)行高速計(jì)數(shù)器的計(jì)數(shù)和動(dòng)作可采用中斷方式進(jìn)行控制,與控制,與CPU的掃描周期關(guān)系不大,各種型號(hào)的的掃描周期關(guān)系不大,各種型號(hào)的PLC可用的高速計(jì)數(shù)器的中斷事件大致分為可用的高速計(jì)數(shù)器的中斷事件大致分為3類:類:當(dāng)前值等于預(yù)設(shè)值中斷當(dāng)前值等于預(yù)設(shè)值中斷、輸入方向改變中斷輸入方向改變中斷和和外部外部復(fù)位中斷復(fù)位中斷。所有高速計(jì)數(shù)器都支持當(dāng)前值等于預(yù)設(shè)。所有高速計(jì)數(shù)器都支持當(dāng)前值等于預(yù)設(shè)值中斷。值中斷。 每個(gè)高速計(jì)數(shù)器的每個(gè)高速計(jì)數(shù)器的3種中斷的優(yōu)先級(jí)

53、由高到低,種中斷的優(yōu)先級(jí)由高到低,不同高速計(jì)數(shù)器之間的優(yōu)先級(jí)又按編號(hào)順序由高到不同高速計(jì)數(shù)器之間的優(yōu)先級(jí)又按編號(hào)順序由高到低。具體對(duì)應(yīng)關(guān)系如下表所示。低。具體對(duì)應(yīng)關(guān)系如下表所示。高速計(jì)高速計(jì)數(shù)器數(shù)器當(dāng)前值當(dāng)前值=預(yù)設(shè)值中斷預(yù)設(shè)值中斷計(jì)數(shù)方向改變中斷計(jì)數(shù)方向改變中斷外部信號(hào)復(fù)位中斷外部信號(hào)復(fù)位中斷事件號(hào)事件號(hào)優(yōu)先級(jí)優(yōu)先級(jí)事件號(hào)事件號(hào)優(yōu)先級(jí)優(yōu)先級(jí)事件號(hào)事件號(hào)優(yōu)先級(jí)優(yōu)先級(jí)HSC0121027112812HSC1131314141515HSC2161617171818HSC33219無無無無無無無無HSC4292030213122HSC53323無無無無無無無無4、高速計(jì)數(shù)器的狀態(tài)字節(jié)與控制字節(jié)、高速

54、計(jì)數(shù)器的狀態(tài)字節(jié)與控制字節(jié) 在特殊存儲(chǔ)器(在特殊存儲(chǔ)器(SM)區(qū),每個(gè)高速計(jì)數(shù)器都)區(qū),每個(gè)高速計(jì)數(shù)器都有一個(gè)狀態(tài)字節(jié)、一個(gè)設(shè)置參數(shù)用的控制字節(jié)、一有一個(gè)狀態(tài)字節(jié)、一個(gè)設(shè)置參數(shù)用的控制字節(jié)、一個(gè)個(gè)32位預(yù)置值寄存器和一個(gè)位預(yù)置值寄存器和一個(gè)32位當(dāng)前值寄存器。位當(dāng)前值寄存器。 狀態(tài)字節(jié)給出了當(dāng)前計(jì)數(shù)方向和當(dāng)前值是否大狀態(tài)字節(jié)給出了當(dāng)前計(jì)數(shù)方向和當(dāng)前值是否大于或等于預(yù)置值等信息。只有在執(zhí)行高速計(jì)數(shù)器的于或等于預(yù)置值等信息。只有在執(zhí)行高速計(jì)數(shù)器的中斷程序時(shí),狀態(tài)位才有效。中斷程序時(shí),狀態(tài)位才有效。 控制字節(jié)的各位用來設(shè)置高速計(jì)數(shù)器的屬性。控制字節(jié)的各位用來設(shè)置高速計(jì)數(shù)器的屬性。高速計(jì)數(shù)器的狀態(tài)字節(jié)

55、表高速計(jì)數(shù)器的狀態(tài)字節(jié)表HSC0HSC1HSC2HSC3HSC4HSC5描描 述述SM36.0 SM46.0 SM56.0SM136.0SM146.0SM156.0不用不用SM36.1 SM46.1 SM56.1SM136.1SM146.1SM156.1不用不用SM36.2 SM46.2 SM56.2SM136.2SM146.2SM156.2不用不用SM36.3 SM46.3 SM56.3SM136.3SM146.3SM156.3不用不用SM36.4 SM46.4 SM56.4SM136.4SM146.4SM156.4不用不用SM36.5 SM46.5 SM56.5SM136.5SM146.5

56、SM156.5計(jì)數(shù)方向狀態(tài)計(jì)數(shù)方向狀態(tài)0減;減;1增增SM36.6 SM46.6 SM56.6SM136.6SM146.6SM156.6當(dāng)前值當(dāng)前值=設(shè)定值設(shè)定值0;1=SM36.7 SM46.7 SM56.7SM136.7SM146.7SM156.7當(dāng)前值當(dāng)前值設(shè)定值設(shè)定值0;1高速計(jì)數(shù)器的控制字節(jié)表高速計(jì)數(shù)器的控制字節(jié)表高速計(jì)數(shù)器的當(dāng)前值和設(shè)定值寄存器高速計(jì)數(shù)器的當(dāng)前值和設(shè)定值寄存器二、高速計(jì)數(shù)器的工作模式二、高速計(jì)數(shù)器的工作模式 S7-200的高速計(jì)數(shù)器有的高速計(jì)數(shù)器有4類工作模式,共有類工作模式,共有12種。每個(gè)模種。每個(gè)模式各有不同,可通過編程,使用定義高速計(jì)數(shù)器指令式各有不同,可通

57、過編程,使用定義高速計(jì)數(shù)器指令HDEF來來選定工作模式。選定工作模式。1、高速計(jì)數(shù)器的工作模式、高速計(jì)數(shù)器的工作模式2、高速計(jì)數(shù)器的工作模式說明、高速計(jì)數(shù)器的工作模式說明 從各個(gè)高速計(jì)數(shù)器的工作模式的描述可知:從各個(gè)高速計(jì)數(shù)器的工作模式的描述可知:6個(gè)個(gè)高速計(jì)數(shù)器具有不完全相同的功能,最多可能有高速計(jì)數(shù)器具有不完全相同的功能,最多可能有12種種工作模式,可分為四種類型。下面以工作模式,可分為四種類型。下面以HC1的工作模式的工作模式為例加以說明。為例加以說明。具有內(nèi)部方向控制的單相增具有內(nèi)部方向控制的單相增/ /減計(jì)數(shù)器(模式減計(jì)數(shù)器(模式02) 用高速計(jì)數(shù)器的控制字節(jié)的第用高速計(jì)數(shù)器的控制字

58、節(jié)的第3位來控制加計(jì)數(shù)位來控制加計(jì)數(shù)或減計(jì)數(shù)。該位為或減計(jì)數(shù)。該位為1時(shí)為加計(jì)數(shù),為時(shí)為加計(jì)數(shù),為0時(shí)為減計(jì)數(shù)。時(shí)為減計(jì)數(shù)。具有外部方向控制的單相增具有外部方向控制的單相增/ /減計(jì)數(shù)器(模式減計(jì)數(shù)器(模式35) 方向輸入信號(hào)為方向輸入信號(hào)為1時(shí)為加計(jì)數(shù),為時(shí)為加計(jì)數(shù),為0時(shí)為減計(jì)數(shù)。時(shí)為減計(jì)數(shù)。具有增具有增/ /減計(jì)數(shù)脈沖輸入的雙向計(jì)數(shù)器(模式減計(jì)數(shù)脈沖輸入的雙向計(jì)數(shù)器(模式68) 若加計(jì)數(shù)脈沖和減計(jì)數(shù)脈沖的上升沿出現(xiàn)的時(shí)若加計(jì)數(shù)脈沖和減計(jì)數(shù)脈沖的上升沿出現(xiàn)的時(shí)間間隔不到間間隔不到0.3ms,高速計(jì)數(shù)器認(rèn)為這兩個(gè)事件是同,高速計(jì)數(shù)器認(rèn)為這兩個(gè)事件是同時(shí)發(fā)生的,當(dāng)前值不變,也不會(huì)有計(jì)數(shù)方向變化

59、的指時(shí)發(fā)生的,當(dāng)前值不變,也不會(huì)有計(jì)數(shù)方向變化的指示。反之,高速計(jì)數(shù)器能捕捉到每一個(gè)獨(dú)立事件。示。反之,高速計(jì)數(shù)器能捕捉到每一個(gè)獨(dú)立事件。A/BA/B相正交計(jì)數(shù)器(模式相正交計(jì)數(shù)器(模式911) 正交:是指正交:是指A、B兩相輸入脈沖相位互差兩相輸入脈沖相位互差90。當(dāng)當(dāng)A相脈沖超前相脈沖超前B相脈沖相脈沖90時(shí),計(jì)數(shù)為增計(jì)數(shù);時(shí),計(jì)數(shù)為增計(jì)數(shù);當(dāng)當(dāng)A相脈沖滯后相脈沖滯后B相脈沖相脈沖90時(shí),計(jì)數(shù)為減計(jì)數(shù)。時(shí),計(jì)數(shù)為減計(jì)數(shù)。 正交計(jì)數(shù)器有兩種工作狀態(tài):正交計(jì)數(shù)器有兩種工作狀態(tài): 一種是輸入一種是輸入1個(gè)計(jì)數(shù)脈沖時(shí),當(dāng)前值計(jì)個(gè)計(jì)數(shù)脈沖時(shí),當(dāng)前值計(jì)1個(gè)數(shù),此個(gè)數(shù),此時(shí)的計(jì)數(shù)倍率為時(shí)的計(jì)數(shù)倍率為1。

60、 另一種工作狀態(tài)是輸入另一種工作狀態(tài)是輸入1個(gè)計(jì)數(shù)脈沖時(shí),當(dāng)前值個(gè)計(jì)數(shù)脈沖時(shí),當(dāng)前值計(jì)計(jì)4個(gè)數(shù),此時(shí)的計(jì)數(shù)倍率為個(gè)數(shù),此時(shí)的計(jì)數(shù)倍率為4。1倍率正交計(jì)數(shù)器時(shí)序圖倍率正交計(jì)數(shù)器時(shí)序圖4倍率正交計(jì)數(shù)器時(shí)序圖倍率正交計(jì)數(shù)器時(shí)序圖三、高速計(jì)數(shù)器指令三、高速計(jì)數(shù)器指令1、高速計(jì)數(shù)器定義指令、高速計(jì)數(shù)器定義指令HDEF 使能輸入有效時(shí),為指定的高速計(jì)數(shù)器分配一種使能輸入有效時(shí),為指定的高速計(jì)數(shù)器分配一種工作模式,即用來建立高速計(jì)數(shù)器與工作模式之間的工作模式,即用來建立高速計(jì)數(shù)器與工作模式之間的聯(lián)系。梯形圖指令盒中有兩個(gè)數(shù)據(jù)輸入端:聯(lián)系。梯形圖指令盒中有兩個(gè)數(shù)據(jù)輸入端:HSC,高速計(jì)數(shù)器編號(hào),為,高速計(jì)數(shù)器

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論