版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第六章SPLC功能指令二第1頁(yè),共157頁(yè),2023年,2月20日,星期一4:子程序及應(yīng)用5:中斷程序及應(yīng)用6:高速計(jì)數(shù)器功能及應(yīng)用7:高速脈沖輸出功能及應(yīng)用第2頁(yè),共157頁(yè),2023年,2月20日,星期一第四節(jié)子程序及應(yīng)用一、子程序簡(jiǎn)介
子程序可以對(duì)程序進(jìn)行分塊,使用子程序?qū)⒊绦蚍殖扇菀坠芾淼男K,使程序結(jié)構(gòu)簡(jiǎn)單清晰,易于查錯(cuò)和維護(hù)。
子程序常用于需要多次反復(fù)執(zhí)行相同任務(wù)的地方,只需要寫一次子程序,別的程序在需要的時(shí)候調(diào)用它,而無(wú)需重寫該程序。
子程序的調(diào)用是有條件的,未調(diào)用它時(shí)不會(huì)執(zhí)行子程序中的指令,因此使用子程序可以減少掃描時(shí)間。第3頁(yè),共157頁(yè),2023年,2月20日,星期一S7-200CPU的控制程序由主程序、子程序和中斷程序組成。STEP7-Micro/WIN在程序編輯器窗口里為每個(gè)POU(程序組織單元)提供一個(gè)獨(dú)立的頁(yè)。主程序總是第1頁(yè),后面是子程序和中斷程序。
各個(gè)程序在編輯器窗口里被分開(kāi),編譯時(shí)在程序結(jié)束的地方自動(dòng)加上無(wú)條件結(jié)束/返回指令,用戶程序可使用有條件結(jié)束/返回指令。第4頁(yè),共157頁(yè),2023年,2月20日,星期一二、局部變量表1、局部變量與全局變量
在SIMATIC符號(hào)表或IEC的全局變量表中定義的變量為全局變量。程序中的每個(gè)POU(ProgramOrganizationalUnit,程序組織單元)均有自己的由64BL存儲(chǔ)器組成的局部變量表。它們用來(lái)定義有范圍限制的變量,局部變量只在它被創(chuàng)建的POU中有效。與之相反,全局符號(hào)在各POU中均有效,只能在符號(hào)表/全局變量表中定義。全局符號(hào)與局部變量名稱相同時(shí),在定義局部變量的POU中,該局部變量的定義優(yōu)先,該全局定義則在其它POU中使用。第5頁(yè),共157頁(yè),2023年,2月20日,星期一局部變量?jī)?yōu)點(diǎn):①在子程序中只用局部變量,不用絕對(duì)地址或全局符號(hào),子程序可以移植到別的項(xiàng)目去。②如果使用臨時(shí)變量(TEMP),同一片物理存儲(chǔ)器可以在不同的程序中重復(fù)使用。局部變量還用來(lái)在子程序和調(diào)用它的程序之間傳遞輸入?yún)?shù)和輸出參數(shù)。第6頁(yè),共157頁(yè),2023年,2月20日,星期一2、局部變量的類型
局部變量表中的變量類型區(qū)定義的變量有:
IN:傳入子程序參數(shù),由調(diào)用它的POU提供的輸入?yún)?shù)。
OUT:傳出子程序參數(shù),將從子程序來(lái)的結(jié)果值返回到指定參數(shù)的位置。
IN/OUT:傳入/傳出子程序參數(shù)。
TEMP:暫時(shí)變量,只能在子程序內(nèi)部暫時(shí)存儲(chǔ)數(shù)據(jù)。不能用來(lái)傳遞參數(shù)。
第7頁(yè),共157頁(yè),2023年,2月20日,星期一注意:
只有在執(zhí)行該P(yáng)OU時(shí),定義的臨時(shí)變量才被使用,POU執(zhí)行完后,不再使用臨時(shí)變量的數(shù)值。在主程序或中斷程序中,局部變量表只包含TEMP變量。3、局部變量的賦值
在局部變量表中賦值時(shí),只需指定局部變量的類型(TEMP、IN、IN_OUT或OUT)和數(shù)據(jù)類型,不用指定存儲(chǔ)器地址,程序編輯器按照子程序指令的調(diào)用順序,將參數(shù)值分配給局部變量存儲(chǔ)器,起始地址是L0.0;8個(gè)連續(xù)位的參數(shù)值分配一個(gè)字節(jié),從LX.0到LX.7。
第8頁(yè),共157頁(yè),2023年,2月20日,星期一4、在局部變量表中增加新的變量
對(duì)于主程序與中斷程序,局部變量表顯示一組已被預(yù)先定義為TEMP變量的行。要在表中增加行,只需用右鍵單擊表中的某一行,在彈出的菜單中執(zhí)行“插入”→“行”命令,在所選行的上部插入新的行。執(zhí)行菜單命令“插入”→“下一行”
在所選行的下部插入新的行。對(duì)于子程序,局部變量表顯示數(shù)據(jù)類型被預(yù)先定義為IN、IN_OUT、OUT和TEMP的一系列行,不能改變它們的順序。如果要增加新的局部變量,必須用鼠標(biāo)右鍵單擊已有的行,并用彈出菜單在所擊行的上面或下面插入相同類型的另一局部變量。
第9頁(yè),共157頁(yè),2023年,2月20日,星期一5、局部變量數(shù)據(jù)類型檢查
局部變量作為參數(shù)向子程序傳遞時(shí),在該子程序的局部變量表中指定的數(shù)據(jù)類型必須與調(diào)用它的POU中的數(shù)據(jù)類型值匹配。
例如:在主程序OB1中調(diào)用子程序SBR0,使用名為INPUT1的全局符號(hào)作為子程序的輸入?yún)?shù)。在SBR0的局部變量表中,已經(jīng)定義了一個(gè)名為FIRST的局部變量作為該輸入?yún)?shù)。當(dāng)OB1調(diào)用SBR0時(shí),INPUT1的數(shù)值被傳入FIRST,INPUT1和FIRST的數(shù)據(jù)類型必須完全匹配。第10頁(yè),共157頁(yè),2023年,2月20日,星期一三、建立子程序在“編輯”菜單中執(zhí)行命令“插入”→“子程序”;在程序編輯器視窗中點(diǎn)擊鼠標(biāo)右鍵,從彈出的菜單中執(zhí)行命令“插入”→“子程序”;新建的子程序,默認(rèn)的程序名是SBR_n,編號(hào)n從0(0~63)開(kāi)始按遞增順序生成。用鼠標(biāo)右鍵點(diǎn)擊指令樹(shù)中的子程序的圖標(biāo),在彈出的菜單中選擇“重新命名”,可以修改它們的名稱。注意:CPU226的項(xiàng)目中最多可以創(chuàng)建128個(gè)子程序。第11頁(yè),共157頁(yè),2023年,2月20日,星期一四、子程序的調(diào)用(CALL指令)
可以帶參數(shù)或不帶參數(shù)調(diào)用子程序。每個(gè)子程序必須以無(wú)條件返回(RET)指令作結(jié)束,STEP7-Micio/WIN編程軟件為每個(gè)子程序自動(dòng)加入無(wú)條件返回(RET)指令。有條件子程序返回(CRET)指令,在控制條件有效時(shí),終止子程序(n)。子程序執(zhí)行完畢,控制程序回到主程序中子程序調(diào)用(CALL)指令的下一條指令。主程序可以用子程序調(diào)用(CALL)指令來(lái)調(diào)用一個(gè)子程序。子程序調(diào)用(CALL)指令把程序控制權(quán)交給子程序(n)。子程序結(jié)束后,必須返回主程序。第12頁(yè),共157頁(yè),2023年,2月20日,星期一第13頁(yè),共157頁(yè),2023年,2月20日,星期一②子程序被調(diào)用時(shí),系統(tǒng)會(huì)保存當(dāng)前的邏輯堆棧。保存后再置棧頂值為1,堆棧的其他值為零,把控制權(quán)交給被調(diào)用的子程序。子程序執(zhí)行完畢,通過(guò)返回指令自動(dòng)恢復(fù)邏輯堆棧原調(diào)用點(diǎn)的值,把控制權(quán)交還給調(diào)用程序。③因?yàn)槔奂悠骺稍谡{(diào)用程序和被調(diào)用程序之間自由傳遞數(shù)據(jù),所以累加器的值在子程序調(diào)用開(kāi)始時(shí)不需要另外保存,在子程序調(diào)用結(jié)束時(shí)也不用恢復(fù)。說(shuō)明:①在中斷程序、子程序中也可調(diào)用子程序;主程序中可以嵌套調(diào)用子程序,嵌套深度為8層。中斷程序中,不能嵌套調(diào)用子程序。第14頁(yè),共157頁(yè),2023年,2月20日,星期一五、帶參數(shù)子程序的調(diào)用1、子程序參數(shù)
由不超過(guò)23個(gè)字符的字母和數(shù)字組成,但第一個(gè)字符必須是字母。2、變量名
在子程序帶參數(shù)調(diào)用時(shí)可以使用4種變量類型。3、變量類型①IN類型(傳入子程序)②IN/OUT類型(傳入傳出子程序)③OUT類型(傳出子程序)④TEMP類型(暫時(shí)型)子程序在帶參數(shù)調(diào)用時(shí),最多可以帶16個(gè)參數(shù),每個(gè)參數(shù)包含變量名、變量類型和數(shù)據(jù)類型。這些參數(shù)在子程序的局部變量表中進(jìn)行定義。第15頁(yè),共157頁(yè),2023年,2月20日,星期一4、使用局部變量表
當(dāng)給子程序傳遞數(shù)據(jù)時(shí),這些參數(shù)被存放在子程序的局部變量存儲(chǔ)器中,當(dāng)調(diào)用子程序時(shí),輸入?yún)?shù)被拷貝到子程序的局部變量存儲(chǔ)器中,當(dāng)子程序完成時(shí),從局部變量存儲(chǔ)器拷貝輸出參數(shù)到指定的輸出參數(shù)地址。局部變量表使用局部變量存儲(chǔ)器L,CPU在執(zhí)行子程序時(shí),自動(dòng)分配給每個(gè)子程序64個(gè)局部變量存儲(chǔ)器單元,在進(jìn)行子程序參數(shù)調(diào)用時(shí),將調(diào)用參數(shù)按照變量類型IN,IN/OUT,0UT和TEMP的順序依次存入局部變量表中。第16頁(yè),共157頁(yè),2023年,2月20日,星期一5、將參數(shù)值指定給子程序中的局部?jī)?nèi)存時(shí)應(yīng)遵守下列規(guī)則:③字節(jié)、字和雙字?jǐn)?shù)值被指定給局部?jī)?nèi)存,位于字節(jié)邊界(LBx、LWx或LDx)位置。在帶參數(shù)的“調(diào)用子程序”指令中,參數(shù)必須與子程序局部變量表中定義的變量完全匹配。參數(shù)順序必須以輸入?yún)?shù)開(kāi)始,其次是輸入/輸出參數(shù),然后是輸出參數(shù)。②一至八個(gè)連續(xù)位參數(shù)值被指定給從Lx.0開(kāi)始持續(xù)至Lx.7的單字節(jié)。
①參數(shù)值指定給局部?jī)?nèi)存的順序由CALL指定,參數(shù)從L0.0開(kāi)始。第17頁(yè),共157頁(yè),2023年,2月20日,星期一例:帶參數(shù)的子程序調(diào)用如下所示。第18頁(yè),共157頁(yè),2023年,2月20日,星期一第19頁(yè),共157頁(yè),2023年,2月20日,星期一注釋:Micro/WIN保留L內(nèi)存的最上方的4個(gè)字節(jié)(LB60-LB63),用于調(diào)用參數(shù)數(shù)據(jù)。//L內(nèi)存被用于保存布爾輸入?yún)?shù)狀態(tài),//此類參數(shù)在LAD和FBD中被顯示為使能位輸入。//從而允許本網(wǎng)絡(luò)在LAD、FBD和STL編輯器中顯示。第20頁(yè),共157頁(yè),2023年,2月20日,星期一名為“模擬量計(jì)算”的子程序如下圖所示,在該子程序的局部變量表中,定義了名為“轉(zhuǎn)換值”、“系數(shù)1”和“系數(shù)2”的輸入(IN)變量,名為“模擬值”的輸出(OUT)變量,和名為“暫存”的臨時(shí)(TEMP)變量。局部變量表最左邊的一列是每個(gè)參數(shù)在局部存儲(chǔ)器(L)中的地址。#表示局部變量,軟件自動(dòng)添加。第21頁(yè),共157頁(yè),2023年,2月20日,星期一如果用語(yǔ)句表編程,子程序調(diào)用指令的格式為:
CALL子程序號(hào),參數(shù)1,參數(shù)2,……參數(shù)n,n=1~16。上梯形圖對(duì)應(yīng)的語(yǔ)句表程序?yàn)椋篖DI0.1CALL模擬量計(jì)算,AIW2,VW20,+2356,VD40第22頁(yè),共157頁(yè),2023年,2月20日,星期一六、子程序中定時(shí)器的使用調(diào)用子程序時(shí),子程序中的定時(shí)器正常計(jì)時(shí);停止調(diào)用子程序時(shí),線圈在子程序內(nèi)的位元件的ON/OFF狀態(tài)保持不變。如果在停止調(diào)用時(shí)子程序中的定時(shí)器正在定時(shí),100ms定時(shí)器將停止定時(shí),當(dāng)前值保持不變,重新調(diào)用時(shí)繼續(xù)定時(shí);但1ms和10ms定時(shí)器將繼續(xù)定時(shí),定時(shí)時(shí)間到時(shí),它們的定時(shí)器位變?yōu)?狀態(tài),且可以在子程序之外起作用。第23頁(yè),共157頁(yè),2023年,2月20日,星期一七、子程序應(yīng)用舉例例1:用兩個(gè)子程序分別控制兩臺(tái)電動(dòng)機(jī)的啟停,主程序中調(diào)用子程序?qū)崿F(xiàn)控制。OB1SBR0SBR1方案一:無(wú)參數(shù)傳遞第24頁(yè),共157頁(yè),2023年,2月20日,星期一OB1方案二:帶參數(shù)傳遞LDI0.0=L60.0LDI0.1=L63.7LDI0.2=L63.6LDL60.0CALLSBR_0:SBR0,L63.7,L63.6,Q0.0LDI1.0=L60.0LDI1.1=L63.7LDI1.2=L63.6LDL60.0CALLSBR_0:SBR0,L63.7,L63.6,Q1.0第25頁(yè),共157頁(yè),2023年,2月20日,星期一SBR0方案二:帶參數(shù)傳遞LD#啟動(dòng):L0.0O#電機(jī):L0.2AN#停止:L0.1=#電機(jī):L0.2第26頁(yè),共157頁(yè),2023年,2月20日,星期一例2:設(shè)計(jì)一記錄設(shè)備運(yùn)行時(shí)間的子程序,符號(hào)名為“運(yùn)行時(shí)間”。設(shè)備運(yùn)行時(shí)I0.0為ON,用I0.0的常開(kāi)觸點(diǎn)調(diào)用子程序。OB1第27頁(yè),共157頁(yè),2023年,2月20日,星期一SBR0第28頁(yè),共157頁(yè),2023年,2月20日,星期一第五節(jié)中斷程序及應(yīng)用一、中斷程序簡(jiǎn)介
中斷程序可以為PLC內(nèi)部或外部的特殊事件提供快速反應(yīng),在PLC控制系統(tǒng)中,對(duì)于不定期產(chǎn)生的繼續(xù)處理事件,常通過(guò)采用中斷處理技術(shù)來(lái)完成。
中斷程序不是由程序調(diào)用,而是在中斷事件發(fā)生時(shí)由系統(tǒng)調(diào)用。
當(dāng)CPU響應(yīng)中斷請(qǐng)求后,會(huì)暫時(shí)停止當(dāng)前正在執(zhí)行的程序,進(jìn)行現(xiàn)場(chǎng)保護(hù),然后轉(zhuǎn)到相應(yīng)的中斷服務(wù)程序中去處理。第29頁(yè),共157頁(yè),2023年,2月20日,星期一
一旦中斷程序處理結(jié)束,立即恢復(fù)現(xiàn)場(chǎng),將保存起來(lái)的現(xiàn)場(chǎng)數(shù)據(jù)和狀態(tài)重新裝入,返回到源程序繼續(xù)執(zhí)行。
在S7-200中,中斷服務(wù)程序的調(diào)用和處理由中斷指令來(lái)完成。一般中斷程序都較為短小和簡(jiǎn)明扼要,這樣可以加快中斷程序執(zhí)行的速度,使其他程序不會(huì)受到長(zhǎng)時(shí)間的延誤。第30頁(yè),共157頁(yè),2023年,2月20日,星期一二、中斷源及中斷事件1、中斷源及種類
中斷源,即中斷事件發(fā)出中斷請(qǐng)求的來(lái)源。S7-200PLC具有最多可達(dá)34個(gè)中斷源,每個(gè)中斷源都分配一個(gè)編號(hào)用以識(shí)別,稱為中斷事件號(hào)。這些中斷源大致分為三大類:通信中斷、輸入輸出中斷和時(shí)基中斷。S7-200中,過(guò)程中斷分為通信中斷和輸入輸出中斷。通信中斷包括通信口0和通信口1產(chǎn)生的中斷;輸入輸出中斷包括外部輸入中斷、高速計(jì)數(shù)器中斷和高速脈沖串輸出中斷。第31頁(yè),共157頁(yè),2023年,2月20日,星期一1)通信中斷:是指S7-200的串行通信口可以通過(guò)梯形圖或語(yǔ)句表編程的方法來(lái)設(shè)置波特率、奇偶校驗(yàn)和通信協(xié)議等參數(shù),對(duì)通信口的這種操作方式,又稱為自由口通信。利用接收和發(fā)送中斷可簡(jiǎn)化程序?qū)νㄐ诺目刂啤?)外部輸入中斷:來(lái)自過(guò)程中斷的信息可通過(guò)I0.0,I0.1,I0.2,I0.3的上升沿或下降沿輸入到PLC中。3)高速計(jì)數(shù)器中斷:應(yīng)用高速計(jì)數(shù)器場(chǎng)合,當(dāng)其當(dāng)前值等于設(shè)定值時(shí),或當(dāng)計(jì)數(shù)方向發(fā)生改變時(shí),或當(dāng)其外部復(fù)位時(shí),都可能使其向CPU提出中斷請(qǐng)求。第32頁(yè),共157頁(yè),2023年,2月20日,星期一S7-200中,時(shí)基中斷分為定時(shí)中斷和定時(shí)器中斷。4)高速脈沖串輸出中斷:當(dāng)PLC完成輸出給定數(shù)量的高速脈沖串時(shí),可引起中斷。1)定時(shí)中斷:定時(shí)中斷響應(yīng)周期性的事件,周期時(shí)間以1ms為計(jì)量單位,最小周期為5ms,最大周期為255ms。
定時(shí)中斷有兩種類型:定時(shí)中斷0和定時(shí)中斷1。對(duì)于定時(shí)中斷0,把周期時(shí)間寫入特殊繼電器SMB34;對(duì)于定時(shí)中斷1,把周期時(shí)間寫入特殊繼電器SMB35。利用定時(shí)中斷可以設(shè)定采樣周期,實(shí)現(xiàn)對(duì)模擬量的數(shù)據(jù)采樣。第33頁(yè),共157頁(yè),2023年,2月20日,星期一2)定時(shí)器中斷:定時(shí)器中斷是利用指定的定時(shí)器設(shè)定的時(shí)間產(chǎn)生中斷。在S7-200中,指定的定時(shí)器為1ms的通電延時(shí)定時(shí)器T32和斷電延時(shí)定時(shí)器T96。S7-200的CPU中可響應(yīng)最多34個(gè)中斷事件,見(jiàn)下表。事件號(hào)中斷事件描述優(yōu)先級(jí)別CPU221CPU222CPU224CPU2260I0.0上升邊沿中斷
2YYYY1I0.0下降邊沿中斷6YYYY2I0.1上升邊沿中斷3YYYY3I0.1下降邊沿中斷7YYYY第34頁(yè),共157頁(yè),2023年,2月20日,星期一事件號(hào)中斷事件描述優(yōu)先級(jí)別CPU221CPU222CPU224CPU2264I0.2上升邊沿中斷4YYYY5I0.2下降邊沿中斷8YYYY6I0.3上升邊沿中斷6YYYY7I0.3下降邊沿中斷9YYYY8端口0:接收字符0YYYY9端口0:傳輸完成0YYYY10定時(shí)中斷00YYYY11定時(shí)中斷11YYYY12HSC0,CV=PV10YYYY第35頁(yè),共157頁(yè),2023年,2月20日,星期一事件號(hào)中斷事件描述優(yōu)先級(jí)別CPU221CPU222CPU224CPU22613HSC1,CV=PV13YY14HSC1方向改變14YY15HSC1外部復(fù)原15YY16HSC2,CV=PV16YY17HSC2方向改變17YY18HSC2外部復(fù)原18YY19PTO0完成中斷0YYYY20PTO1完成中斷1YYYY21定時(shí)器T32,CT=PT中斷2YYYY第36頁(yè),共157頁(yè),2023年,2月20日,星期一事件號(hào)中斷事件描述優(yōu)先級(jí)別CPU221CPU222CPU224CPU22622定時(shí)器T96,CT=PT中斷2YYYY23端口0:接收信息完成0YYYY24端口1:接收信息完成1Y25端口1:接收字符
1Y26端口1:傳輸完成1Y27HSC0方向改變11YYYY28HSC0外部復(fù)原12YYYY29HSC4,CV=PV20YYYY30HSC4方向改變21YYYY第37頁(yè),共157頁(yè),2023年,2月20日,星期一2、中斷優(yōu)先級(jí)
中斷優(yōu)先級(jí)由高到低依次是:通信中斷、輸入輸出中斷、時(shí)基中斷。每種中斷中的不同中斷事件又有不同的優(yōu)先權(quán)。主機(jī)中的所有中斷事件及優(yōu)先級(jí)參照上表所示。事件號(hào)中斷事件描述優(yōu)先級(jí)別CPU221CPU222CPU224CPU22631HSC4外部復(fù)原22YYYY32HSC3,CV=PV19YYYY33HSC5,CV=PV23YYYY第38頁(yè),共157頁(yè),2023年,2月20日,星期一在PLC中,CPU一般在指定的優(yōu)先級(jí)內(nèi)按照先來(lái)先服務(wù)的原則響應(yīng)中斷事件的中斷請(qǐng)求,在任何時(shí)刻,CPU只執(zhí)行一個(gè)中斷程序。當(dāng)CPU按照中斷優(yōu)先級(jí)響應(yīng)并執(zhí)行一個(gè)中斷程序時(shí),就不會(huì)響應(yīng)其他中斷事件的中斷請(qǐng)求(盡管此時(shí)可能會(huì)有更高級(jí)別的中斷事件發(fā)出中斷請(qǐng)求),直到將當(dāng)前的中斷程序執(zhí)行結(jié)束。在CPU執(zhí)行中斷程序期間,對(duì)新出現(xiàn)的中斷事件仍然按照中斷性質(zhì)和優(yōu)先級(jí)的順序分別進(jìn)行排隊(duì),形成中斷隊(duì)列。CPU22x系列的中斷隊(duì)列的長(zhǎng)度如下表所示。如果超過(guò)規(guī)定的中斷隊(duì)列長(zhǎng)度,則產(chǎn)生溢出,使特殊繼電器置位。第39頁(yè),共157頁(yè),2023年,2月20日,星期一中斷隊(duì)列CPU221CPU222CPU224CPU226溢出位通信中斷4個(gè)4個(gè)4個(gè)8個(gè)SM4.0I/O中斷16個(gè)16個(gè)16個(gè)16個(gè)SM4.1時(shí)基中斷8個(gè)8個(gè)8個(gè)8個(gè)SM4.2表中斷隊(duì)列的長(zhǎng)度及溢出位CPU型號(hào)CPU221CPU222CPU224CPU226可連接中斷事件數(shù)253134可連接中斷事件號(hào)0~12,19~23,27~330~23,27~330~33表中斷數(shù)量及事件第40頁(yè),共157頁(yè),2023年,2月20日,星期一三、中斷程序的相關(guān)指令中斷允許(ENI)指令,全局地開(kāi)放所有被連接的中斷事件,允許CPU接收所有中斷事件。1、中斷允許指令ENI和中斷禁止指令DISI中斷禁止(DISI)指令,全局地關(guān)閉所有被連接的中斷事件,禁止CPU接收各個(gè)中斷事件的中斷請(qǐng)求。執(zhí)行DISI指令后,出現(xiàn)的中斷事件就進(jìn)入中斷隊(duì)伍排隊(duì)等候,直到ENI指令重新允許中斷。第41頁(yè),共157頁(yè),2023年,2月20日,星期一CPU進(jìn)入RUN模式時(shí),系統(tǒng)自動(dòng)禁止了中斷。在RUN模式執(zhí)行ENI指令后,開(kāi)放所有中斷。中斷允許指令ENI、中斷禁止指令DISI以線圈的形式編程,無(wú)操作數(shù)。第42頁(yè),共157頁(yè),2023年,2月20日,星期一2、中斷連接指令(ATCH)
中斷連接(ATCH)指令,用來(lái)建立某個(gè)中斷事件(EVNT)和某個(gè)中斷程序(INT)之間的聯(lián)系。并允許這個(gè)中斷事件。
在調(diào)用一個(gè)中斷程序前,必須用中斷連接指令,建立某中斷事件與中斷程序的連接,當(dāng)把某個(gè)中斷事件和中斷程序建立連接后,該中斷事件發(fā)生時(shí)會(huì)自動(dòng)
執(zhí)行中斷。多個(gè)中斷事件可調(diào)用同一個(gè)中斷程序,但一個(gè)中斷事件不能同時(shí)與多個(gè)中斷程序建立連接,否則,在中斷允許且某個(gè)中斷事件發(fā)生時(shí),系統(tǒng)默認(rèn)執(zhí)行與該事件建立連接的最后一個(gè)中斷程序。第43頁(yè),共157頁(yè),2023年,2月20日,星期一3、中斷分離指令(DTCH)
中斷分離(DTCH)指令,用來(lái)解除某個(gè)中斷事件(EVNT)和某個(gè)中斷程序之間的聯(lián)系,并禁止該中斷事件。指令操作數(shù)EVNT的數(shù)據(jù)類型均為BYTE。
可以用DTCH指令截?cái)嘀袛嗍录椭袛喑绦蛑g的聯(lián)系,以單獨(dú)禁止某中斷事件。DTCH指令使中斷回到不激活或無(wú)效狀態(tài)。第44頁(yè),共157頁(yè),2023年,2月20日,星期一4、中斷返回指令(RETI)、(CRETI)
中斷返回指令的功能是,當(dāng)中斷結(jié)束時(shí),通過(guò)中斷返回指令退出中斷服務(wù)程序,返回到主程序。RETI是無(wú)條件返回指令,CRETI是有條件返回指令。第45頁(yè),共157頁(yè),2023年,2月20日,星期一指令使用舉例:程序?qū)崿F(xiàn)的功能是調(diào)用I0.1輸入點(diǎn)的上升沿中斷,若發(fā)現(xiàn)I/O錯(cuò)誤,則禁止本中斷,用外部條件可以禁止全局中斷。第46頁(yè),共157頁(yè),2023年,2月20日,星期一四、中斷應(yīng)用舉例例1:利用定時(shí)中斷指令實(shí)現(xiàn)對(duì)模擬量的等間隔采樣第47頁(yè),共157頁(yè),2023年,2月20日,星期一OB1: LDSM0.1 CALLSBR_0:SBR0SBR0:
LDSM0.0 MOVB100,SMB34 ATCHINT_0:INT0,10 ENIINT0: LDSM0.0 MOVWAIW4,VW100第48頁(yè),共157頁(yè),2023年,2月20日,星期一例2:在I0.0的上升沿通過(guò)中斷使Q0.0立即置位;在I0.1的下降沿通過(guò)中斷使Q0.0立即復(fù)位。第49頁(yè),共157頁(yè),2023年,2月20日,星期一//主程序OB1LDSM0.1//第一次掃描時(shí)ATCHINT_0,0//I0.0上升沿執(zhí)行0號(hào)中斷程序ATCHINT_1,3//I0.1下降沿執(zhí)行1號(hào)中斷程序ENI//允許全局中斷//中斷程序0(INT_0)LDSM0.0//常ONSIQ0.0,1//使Q0.0立即置位//中斷程序1(INT_1)LDSM0.0RIQ0.0,1//使Q0.0立即復(fù)位第50頁(yè),共157頁(yè),2023年,2月20日,星期一例3:定時(shí)中斷的定時(shí)時(shí)間最長(zhǎng)為255ms,如何用定時(shí)中斷1實(shí)現(xiàn)周期為2s的高精度定時(shí)?第51頁(yè),共157頁(yè),2023年,2月20日,星期一//主程序OB1LDSM0.1//第一次掃描時(shí)MOVB0,VB10//中斷次數(shù)計(jì)數(shù)器清零MOVB250,SMB34//設(shè)定中斷0時(shí)間間隔為250msATCHINT_0,10//指定定時(shí)中斷0執(zhí)行0號(hào)中斷程序ENI//允許全局中斷//中斷程序0(INT_0),每隔250ms中斷一次LDSM0.0//常ONINCBVB10//中斷次數(shù)計(jì)數(shù)器加1LDB=8,VB10//比較,如果中斷8次(2s)MOVB0,VB10//中斷次數(shù)計(jì)數(shù)器清零INCBQB0//每2s將QB0加1第52頁(yè),共157頁(yè),2023年,2月20日,星期一例4:出現(xiàn)事故時(shí),I0.0的上升沿產(chǎn)生中斷,使輸出Q1.0立即置位,同時(shí)將事故發(fā)生的日期和時(shí)間保存在VB10~VB17中。第53頁(yè),共157頁(yè),2023年,2月20日,星期一//主程序OB1 LD SM0.1//第一次掃描 ATCH0,0//指定在I0.0上升沿 //執(zhí)行中斷程序0 ENI//開(kāi)中斷//中斷程序INT0 LD SM0.0 SI Q1.0,1//使Q1.0立即置位 TODRVB10//讀實(shí)時(shí)時(shí)鐘第54頁(yè),共157頁(yè),2023年,2月20日,星期一例5:使用定時(shí)中斷的彩燈控制程序,控制8個(gè)彩燈循環(huán)左移。
定時(shí)中斷0的中斷號(hào)為10,SMB34中的定時(shí)時(shí)間為1~255ms。彩燈移位的延時(shí)時(shí)間一般大于255ms,將中斷的時(shí)間間隔設(shè)為250ms,用VB0做中斷次數(shù)計(jì)數(shù)器,在中斷服務(wù)程序中將VB0加1,然后用比較觸點(diǎn)指令判斷VB0是否等于設(shè)置的次數(shù)N。若相等則將QB0循環(huán)左移一位,同時(shí)VB0清零。移位時(shí)間間隔為0.25N(s)。第55頁(yè),共157頁(yè),2023年,2月20日,星期一第56頁(yè),共157頁(yè),2023年,2月20日,星期一第57頁(yè),共157頁(yè),2023年,2月20日,星期一主程序OB1LDSM0.1CALLSBR_0:SBR0子程序SBR0LDSM0.0MOVB16#07,QB0MOVB0,VB0MOVB250,SMB34ATCHINT_0:INT0,10ENI中斷程序INT0LDSM0.0INCBVB0LDB=VB0,4RLBQB0,1MOVB0,VB0第58頁(yè),共157頁(yè),2023年,2月20日,星期一例6:使用T32中斷的彩燈控制程序,控制8個(gè)彩燈循環(huán)左移。1ms定時(shí)器T32和T96的定時(shí)時(shí)間到時(shí)可以產(chǎn)生中斷,中斷號(hào)分別為21和22,最長(zhǎng)定時(shí)時(shí)間為32.767s。對(duì)于分辨率為1ms和10ms的定時(shí)器,不能使用定時(shí)器本身觸點(diǎn)作為自復(fù)位控制,應(yīng)使用下面主程序方法。第59頁(yè),共157頁(yè),2023年,2月20日,星期一第60頁(yè),共157頁(yè),2023年,2月20日,星期一主程序OB1LDSM0.1CALLSBR_0:SBR0LDNM0.0TONT32,+500LDT32=M0.0子程序SBR0LDSM0.0MOVB7,QB0ATCHINT_0:INT0,21ENI中斷程序INT0LDSM0.0RLBQB0,1第61頁(yè),共157頁(yè),2023年,2月20日,星期一總結(jié)(1)中斷程序構(gòu)成中斷程序必須由三部分構(gòu)成:中斷程序標(biāo)號(hào)、中斷程序指令和無(wú)條件返回指令。(2)編程要求①用中斷程序的標(biāo)號(hào)來(lái)區(qū)別每個(gè)中斷程序。②中斷服務(wù)程序越短越好,以減少中斷程序執(zhí)行時(shí)間。③在中斷程序中不能使用ENI、DISI、HDEF、LSCR、END指令。④中斷服務(wù)程序的最后一條指令一定是RETI或CRETI(其中RETI指令會(huì)由編程軟件自動(dòng)添加)。第62頁(yè),共157頁(yè),2023年,2月20日,星期一第六節(jié)高速計(jì)數(shù)器功能及應(yīng)用一、高速計(jì)數(shù)器概述PLC的普通計(jì)數(shù)器的計(jì)數(shù)過(guò)程與掃描工作方式有關(guān),CPU通過(guò)每一個(gè)掃描周期讀取一次被測(cè)信號(hào)的方法來(lái)捕捉被測(cè)信號(hào)的上升沿,被測(cè)信號(hào)的頻率較高時(shí),會(huì)丟失計(jì)數(shù)脈沖,因此普通計(jì)數(shù)器的工作頻率很低,一般僅有幾十赫茲。高速計(jì)數(shù)器可以對(duì)普通計(jì)數(shù)器無(wú)能為力的事件進(jìn)行計(jì)數(shù),S7-200有6個(gè)高速計(jì)數(shù)器HSC0~HSC5,可以設(shè)置多達(dá)12中不同的操作模式。第63頁(yè),共157頁(yè),2023年,2月20日,星期一1、高速計(jì)數(shù)器的數(shù)量及編號(hào)高速計(jì)數(shù)器在程序中使用時(shí)的地址編號(hào)用HSCn來(lái)表示,HSC表編程元件名稱為高速計(jì)數(shù)器,n(n=0~5)為編號(hào)。每個(gè)高速計(jì)數(shù)器的計(jì)數(shù)結(jié)果都對(duì)應(yīng)有一個(gè)當(dāng)前值寄存器。編程時(shí)可通過(guò)地址HCx(x=0~5)來(lái)讀取高速計(jì)數(shù)器的當(dāng)前值。不同型號(hào)的PLC主機(jī),高速計(jì)數(shù)器的數(shù)量對(duì)應(yīng)如下表所示。第64頁(yè),共157頁(yè),2023年,2月20日,星期一2、高速計(jì)數(shù)器的外部輸入信號(hào)每個(gè)高速計(jì)數(shù)器對(duì)它所支持的時(shí)鐘、方向控制、復(fù)位和啟動(dòng)都有專用的輸入點(diǎn),通過(guò)中斷控制完成預(yù)定的操作。每個(gè)高速計(jì)數(shù)器所需的外部輸入點(diǎn)如下圖所示。第65頁(yè),共157頁(yè),2023年,2月20日,星期一3、高速計(jì)數(shù)器相關(guān)的中斷事件
高速計(jì)數(shù)器的計(jì)數(shù)和動(dòng)作可采用中斷方式進(jìn)行控制,與CPU的掃描周期關(guān)系不大,各種型號(hào)的PLC可用的高速計(jì)數(shù)器的中斷事件大致分為3類:當(dāng)前值等于預(yù)設(shè)值中斷、輸入方向改變中斷和外部復(fù)位中斷。所有高速計(jì)數(shù)器都支持當(dāng)前值等于預(yù)設(shè)值中斷。第66頁(yè),共157頁(yè),2023年,2月20日,星期一每個(gè)高速計(jì)數(shù)器的3種中斷的優(yōu)先級(jí)由高到低,不同高速計(jì)數(shù)器之間的優(yōu)先級(jí)又按編號(hào)順序由高到低。具體對(duì)應(yīng)關(guān)系如下表所示。高速計(jì)數(shù)器當(dāng)前值=預(yù)設(shè)值中斷計(jì)數(shù)方向改變中斷外部信號(hào)復(fù)位中斷事件號(hào)優(yōu)先級(jí)事件號(hào)優(yōu)先級(jí)事件號(hào)優(yōu)先級(jí)HSC0121027112812HSC1131314141515HSC2161617171818HSC33219無(wú)無(wú)無(wú)無(wú)HSC4292030213122HSC53323無(wú)無(wú)無(wú)無(wú)第67頁(yè),共157頁(yè),2023年,2月20日,星期一4、高速計(jì)數(shù)器的狀態(tài)字節(jié)與控制字節(jié)在特殊存儲(chǔ)器(SM)區(qū),每個(gè)高速計(jì)數(shù)器都有一個(gè)狀態(tài)字節(jié)、一個(gè)設(shè)置參數(shù)用的控制字節(jié)、一個(gè)32位預(yù)置值寄存器和一個(gè)32位當(dāng)前值寄存器。第68頁(yè),共157頁(yè),2023年,2月20日,星期一狀態(tài)字節(jié)給出了當(dāng)前計(jì)數(shù)方向和當(dāng)前值是否大于或等于預(yù)置值等信息。只有在執(zhí)行高速計(jì)數(shù)器的中斷程序時(shí),狀態(tài)位才有效??刂谱止?jié)的各位用來(lái)設(shè)置高速計(jì)數(shù)器的屬性。第69頁(yè),共157頁(yè),2023年,2月20日,星期一高速計(jì)數(shù)器的狀態(tài)字節(jié)表HSC0HSC1HSC2HSC3HSC4HSC5描述SM36.0SM46.0SM56.0SM136.0SM146.0SM156.0不用SM36.1SM46.1SM56.1SM136.1SM146.1SM156.1不用SM36.2SM46.2SM56.2SM136.2SM146.2SM156.2不用SM36.3SM46.3SM56.3SM136.3SM146.3SM156.3不用SM36.4SM46.4SM56.4SM136.4SM146.4SM156.4不用SM36.5SM46.5SM56.5SM136.5SM146.5SM156.5計(jì)數(shù)方向狀態(tài)0減;1增SM36.6SM46.6SM56.6SM136.6SM146.6SM156.6當(dāng)前值=設(shè)定值0≠;1=SM36.7SM46.7SM56.7SM136.7SM146.7SM156.7當(dāng)前值>設(shè)定值0≤;1>第70頁(yè),共157頁(yè),2023年,2月20日,星期一高速計(jì)數(shù)器的控制字節(jié)表第71頁(yè),共157頁(yè),2023年,2月20日,星期一高速計(jì)數(shù)器的當(dāng)前值和設(shè)定值寄存器第72頁(yè),共157頁(yè),2023年,2月20日,星期一二、高速計(jì)數(shù)器的工作模式S7-200的高速計(jì)數(shù)器有4類工作模式,共有12種。每個(gè)模式各有不同,可通過(guò)編程,使用定義高速計(jì)數(shù)器指令HDEF來(lái)選定工作模式。1、高速計(jì)數(shù)器的工作模式第73頁(yè),共157頁(yè),2023年,2月20日,星期一第74頁(yè),共157頁(yè),2023年,2月20日,星期一第75頁(yè),共157頁(yè),2023年,2月20日,星期一第76頁(yè),共157頁(yè),2023年,2月20日,星期一2、高速計(jì)數(shù)器的工作模式說(shuō)明從各個(gè)高速計(jì)數(shù)器的工作模式的描述可知:6個(gè)高速計(jì)數(shù)器具有不完全相同的功能,最多可能有12種工作模式,可分為四種類型。下面以HC1的工作模式為例加以說(shuō)明。①具有內(nèi)部方向控制的單相增/減計(jì)數(shù)器(模式0~2)用高速計(jì)數(shù)器的控制字節(jié)的第3位來(lái)控制加計(jì)數(shù)或減計(jì)數(shù)。該位為1時(shí)為加計(jì)數(shù),為0時(shí)為減計(jì)數(shù)。第77頁(yè),共157頁(yè),2023年,2月20日,星期一第78頁(yè),共157頁(yè),2023年,2月20日,星期一②具有外部方向控制的單相增/減計(jì)數(shù)器(模式3~5)方向輸入信號(hào)為1時(shí)為加計(jì)數(shù),為0時(shí)為減計(jì)數(shù)。第79頁(yè),共157頁(yè),2023年,2月20日,星期一③具有增/減計(jì)數(shù)脈沖輸入的雙向計(jì)數(shù)器(模式6~8)第80頁(yè),共157頁(yè),2023年,2月20日,星期一若加計(jì)數(shù)脈沖和減計(jì)數(shù)脈沖的上升沿出現(xiàn)的時(shí)間間隔不到0.3ms,高速計(jì)數(shù)器認(rèn)為這兩個(gè)事件是同時(shí)發(fā)生的,當(dāng)前值不變,也不會(huì)有計(jì)數(shù)方向變化的指示。反之,高速計(jì)數(shù)器能捕捉到每一個(gè)獨(dú)立事件。④A/B相正交計(jì)數(shù)器(模式9~11)正交:是指A、B兩相輸入脈沖相位互差90°。當(dāng)A相脈沖超前B相脈沖90°時(shí),計(jì)數(shù)為增計(jì)數(shù);當(dāng)A相脈沖滯后B相脈沖90°時(shí),計(jì)數(shù)為減計(jì)數(shù)。第81頁(yè),共157頁(yè),2023年,2月20日,星期一正交計(jì)數(shù)器有兩種工作狀態(tài):
一種是輸入1個(gè)計(jì)數(shù)脈沖時(shí),當(dāng)前值計(jì)1個(gè)數(shù),此時(shí)的計(jì)數(shù)倍率為1。
另一種工作狀態(tài)是輸入1個(gè)計(jì)數(shù)脈沖時(shí),當(dāng)前值計(jì)4個(gè)數(shù),此時(shí)的計(jì)數(shù)倍率為4。第82頁(yè),共157頁(yè),2023年,2月20日,星期一1倍率正交計(jì)數(shù)器時(shí)序圖第83頁(yè),共157頁(yè),2023年,2月20日,星期一4倍率正交計(jì)數(shù)器時(shí)序圖第84頁(yè),共157頁(yè),2023年,2月20日,星期一三、高速計(jì)數(shù)器指令1、高速計(jì)數(shù)器定義指令HDEF使能輸入有效時(shí),為指定的高速計(jì)數(shù)器分配一種工作模式,即用來(lái)建立高速計(jì)數(shù)器與工作模式之間的聯(lián)系。梯形圖指令盒中有兩個(gè)數(shù)據(jù)輸入端:HSC,高速計(jì)數(shù)器編號(hào),為0~5的常數(shù),字節(jié)型;MODE,工作模式,為0~11的常數(shù),字節(jié)型。第85頁(yè),共157頁(yè),2023年,2月20日,星期一2、高速計(jì)數(shù)器指令HSC使能輸入有效時(shí),根據(jù)高速計(jì)數(shù)器特殊存儲(chǔ)器位的狀態(tài),并按照HDEF指令指定的工作模式,設(shè)置高速計(jì)數(shù)器并控制其工作。梯形圖指令盒數(shù)據(jù)輸入端N:高速計(jì)數(shù)器編號(hào),為0~5的常數(shù),字型。第86頁(yè),共157頁(yè),2023年,2月20日,星期一四、高速計(jì)數(shù)器的使用使用高速計(jì)數(shù)器時(shí),每個(gè)高速計(jì)數(shù)器只能用一條HDEF指令,可以用首次掃描存儲(chǔ)器位SM0.1,在第一個(gè)掃描周期調(diào)用包含HDEF指令的子程序來(lái)定義高速計(jì)數(shù)器。1、設(shè)置的一般步驟①選擇計(jì)數(shù)器及工作模式
②設(shè)置控制字節(jié)
③執(zhí)行HDEF指令
④設(shè)定當(dāng)前值和預(yù)設(shè)值
⑤設(shè)置中斷事件并全局開(kāi)中斷
⑥執(zhí)行HSC指令
第87頁(yè),共157頁(yè),2023年,2月20日,星期一2、應(yīng)用舉例例1:要對(duì)一高速事件精確控制,通過(guò)對(duì)脈沖信號(hào)進(jìn)行增計(jì)數(shù),計(jì)數(shù)當(dāng)前值達(dá)到24產(chǎn)生中斷,重新從0計(jì)數(shù),對(duì)中斷次數(shù)進(jìn)行累計(jì)。計(jì)數(shù)方向用一個(gè)外部信號(hào)控制,并能實(shí)現(xiàn)外部復(fù)位。所用的主機(jī)型號(hào)為CPU221。設(shè)計(jì)步驟:①選擇高速計(jì)數(shù)器HSC0,并確定工作方式4;②令SM37=16#F8;
③執(zhí)行HDEF指令,輸入端HSC為0,MODE為4;④裝入當(dāng)前值,令SMD38=0;⑤裝入設(shè)定值,令SMD42=24;⑥執(zhí)行中斷連接ATCH指令,輸入端INT為INT0,EVNT為12。第88頁(yè),共157頁(yè),2023年,2月20日,星期一第89頁(yè),共157頁(yè),2023年,2月20日,星期一五、旋轉(zhuǎn)編碼器在工業(yè)控制中的某些場(chǎng)合,PLC高速計(jì)數(shù)器輸入的高速脈沖信號(hào)一般可通過(guò)旋轉(zhuǎn)編碼器獲得。
1、增量式編碼器光電增量式編碼器的碼盤上有均勻刻制的光柵。碼盤旋轉(zhuǎn)時(shí),輸出與轉(zhuǎn)角的增量成正比的脈沖,需要用計(jì)數(shù)器來(lái)計(jì)脈沖數(shù)。根據(jù)輸出信號(hào)的個(gè)數(shù),有三種增量式編碼器:第90頁(yè),共157頁(yè),2023年,2月20日,星期一①單通道增量式編碼器單通道增量式編碼器內(nèi)部只有一對(duì)光耦合器,只能產(chǎn)生一個(gè)脈沖序列。②雙通道增量式編碼器雙通道增量式編碼器又稱為A、B相型編碼器,內(nèi)部有兩對(duì)光耦合器,能輸出相位差為90°的兩組獨(dú)立脈沖序列。正轉(zhuǎn)和反轉(zhuǎn)時(shí)兩路脈沖的超前和滯后關(guān)系剛好相反(如下圖),如果使用A、B相型編碼器,PLC可以識(shí)別出轉(zhuǎn)抽旋轉(zhuǎn)的方向。第91頁(yè),共157頁(yè),2023年,2月20日,星期一③三通道增量式編碼器編碼器內(nèi)部除了有雙通道增量式編碼器的兩對(duì)光耦合器外,在脈沖碼盤的另外一個(gè)通道有一個(gè)透光段,每轉(zhuǎn)一圈,輸出一個(gè)脈沖,該脈沖稱為Z相零位脈沖,用作系統(tǒng)清零信號(hào),或坐標(biāo)的原點(diǎn),以減少測(cè)量的積累誤差。A相B相A相B相a)正轉(zhuǎn)b)反轉(zhuǎn)第92頁(yè),共157頁(yè),2023年,2月20日,星期一
N位絕對(duì)式編碼器有N個(gè)碼道,最外層的碼道對(duì)應(yīng)編碼的最低位。每一碼道有一個(gè)光耦合器,用來(lái)讀取該碼道的0、1數(shù)據(jù)。絕對(duì)式編碼器輸出的N位二進(jìn)制數(shù)反映了運(yùn)動(dòng)物體所處的絕對(duì)位置,根據(jù)位置的變化情況,可以判別出旋轉(zhuǎn)的方向。2、絕對(duì)式編碼器第93頁(yè),共157頁(yè),2023年,2月20日,星期一例2:控制要求包裝箱用傳送帶輸送,當(dāng)箱體到達(dá)檢測(cè)傳感器A時(shí),開(kāi)始計(jì)數(shù)。計(jì)數(shù)到2000個(gè)脈沖時(shí),箱體剛好到達(dá)封箱機(jī)下進(jìn)行封箱,此時(shí)傳送帶并沒(méi)有停下,而是繼續(xù)運(yùn)轉(zhuǎn)。則在封箱過(guò)程中,箱體還在前行。假設(shè)封箱過(guò)程共用300個(gè)脈沖,然后封箱機(jī)停止工作。繼續(xù)前行,當(dāng)計(jì)數(shù)脈沖又累加到1500個(gè)碼時(shí),開(kāi)始噴碼,噴碼機(jī)開(kāi)始工作,假設(shè)噴碼機(jī)共用5秒鐘進(jìn)行噴碼,噴碼結(jié)束后,整個(gè)工作過(guò)程結(jié)束。第94頁(yè),共157頁(yè),2023年,2月20日,星期一第95頁(yè),共157頁(yè),2023年,2月20日,星期一第96頁(yè),共157頁(yè),2023年,2月20日,星期一主程序第97頁(yè),共157頁(yè),2023年,2月20日,星期一子程序第98頁(yè),共157頁(yè),2023年,2月20日,星期一注意:使用高速計(jì)數(shù)器時(shí),需要根據(jù)有關(guān)的特殊存儲(chǔ)器的意義來(lái)編寫初始化程序和中斷程序。這些程序的編寫繁瑣,容易出錯(cuò)。
STEP7-Micro/WIN的向?qū)Чδ芎軓?qiáng),使用向?qū)?lái)完成某些功能的編程既簡(jiǎn)單方便,又不容易出錯(cuò)。使用指令向?qū)芎?jiǎn)化高速計(jì)數(shù)器的編程過(guò)程。第99頁(yè),共157頁(yè),2023年,2月20日,星期一例3:用指令向?qū)筛咚儆?jì)數(shù)器HSC0的初始化程序和中斷程序,HSC0為無(wú)外部方向輸入信號(hào)的單相加/減計(jì)數(shù)器(模式0),計(jì)數(shù)值為10000~20000時(shí)Q4.0輸出1。執(zhí)行菜單命令“工具”→“指令向?qū)А保聪旅娴牟襟E設(shè)置高速計(jì)數(shù)器的參數(shù):1)在第1頁(yè)選擇“HSC”(配置高速計(jì)數(shù)器),每次操作完成后點(diǎn)擊“下一步>”按鈕。2)在第2頁(yè)選擇HSC0和模式0。第100頁(yè),共157頁(yè),2023年,2月20日,星期一3)在第3頁(yè)設(shè)置計(jì)數(shù)器的預(yù)置值為10000,當(dāng)前值為0,初始計(jì)數(shù)方向?yàn)榧樱ㄔ觯┯?jì)數(shù)。使用默認(rèn)的初始化子程序符號(hào)名HSC_INIT。4)在第4頁(yè)設(shè)置當(dāng)前值等于預(yù)置值時(shí)產(chǎn)生中斷(中斷事件編號(hào)為12),使用默認(rèn)的中斷程序符號(hào)名COUNT_EQ。
向?qū)г试S高速計(jì)數(shù)器按多個(gè)步驟進(jìn)行計(jì)數(shù),即在中斷程序中修改某些參數(shù),例如修改計(jì)數(shù)器的計(jì)數(shù)方向、當(dāng)前值和預(yù)置值,并將另一個(gè)中斷程序連接至相同的中斷事件。第101頁(yè),共157頁(yè),2023年,2月20日,星期一
本例設(shè)置編程2步,在中斷程序COUNT_EQ中,修改預(yù)置值為20000,計(jì)數(shù)當(dāng)前值和計(jì)數(shù)方向不變。完成設(shè)置后自動(dòng)生成下述的初始化子程序HSC_INIT、中斷程序COUNT_EQ和HSC0_STEP1。在主程序中,首次掃描時(shí)調(diào)用HSC_INIT,中斷程序中對(duì)Q4.0置位和復(fù)位的語(yǔ)句是用戶添加的。最后一個(gè)步驟可以重新連接第一個(gè)中斷程序,使計(jì)數(shù)過(guò)程循環(huán)進(jìn)行。第102頁(yè),共157頁(yè),2023年,2月20日,星期一①主程序 LD SM0.1 CALL HSC_INIT②初始化子程序HSC_INIT LD SM0.0 MOVB 16#F8,SMB37 MOVD +0,SMD38 MOVD +10000,SMD42 HDEF 0,0 ATCH COUNT_EQ,12 ENI HSC 0第103頁(yè),共157頁(yè),2023年,2月20日,星期一③中斷程序COUNT_EQ LD SM0.0 MOVB 16#A0,SMB37 MOVD +20000,SMD42 ATCH HSC0_STEP1,12 HSC 0 SI Q4.0,1 //用戶添加第104頁(yè),共157頁(yè),2023年,2月20日,星期一④中斷程序HSC0_STEP1 LD SM0.0 MOVB 16#80,SMB37 DTCH 12 HSC 0 RI Q4.0,1 //用戶添加第105頁(yè),共157頁(yè),2023年,2月20日,星期一第七節(jié)高速脈沖輸出功能及應(yīng)用一、高速脈沖輸出概述
小型PLC的脈沖量輸出一般都采用晶體管輸出形式,用于支持位置控制功能。位置控制功能的目的是通過(guò)速度的設(shè)定將物體從當(dāng)前位置準(zhǔn)確轉(zhuǎn)移到預(yù)設(shè)位置。當(dāng)連接到不同的伺服驅(qū)動(dòng)裝置或步進(jìn)電動(dòng)機(jī)控制裝置時(shí),可通過(guò)脈沖信號(hào)控制位置的高精確度,如下圖:第106頁(yè),共157頁(yè),2023年,2月20日,星期一1、高速脈沖輸出的形式
高速脈沖輸出有兩種輸出形式:高速脈沖序列(高速脈沖串)輸出PTO和脈沖寬度調(diào)制輸出PWM,可通過(guò)特殊繼電器來(lái)定義輸出形式。第107頁(yè),共157頁(yè),2023年,2月20日,星期一①脈沖串輸出PTO可以輸出一串脈沖(占空比為50%),用戶可以控制脈沖的周期和個(gè)數(shù)。第108頁(yè),共157頁(yè),2023年,2月20日,星期一②脈沖調(diào)制輸出PWM可以輸出連續(xù)的、占空比可以調(diào)制的脈沖串,用戶可以控制脈沖的周期和脈寬。第109頁(yè),共157頁(yè),2023年,2月20日,星期一2、輸出端子的確定
在S7-200中,只有輸出繼電器Q0.0和Q0.1具有高速脈沖輸出功能,如果不需要進(jìn)行高速脈沖輸出時(shí),Q0.0和Q0.1可以作為普通的數(shù)字量輸出點(diǎn)使用。一旦需要使用高速脈沖輸出功能時(shí),必須通過(guò)Q0.0和Q0.1輸出高速脈沖。
在使用PTO和PWM操作之前,需要將兩者的過(guò)程映像寄存器清零。第110頁(yè),共157頁(yè),2023年,2月20日,星期一3、脈沖輸出指令
高速脈沖輸出指令在梯形圖中以功能框的形式編程,指令名稱是PLS,其功能是當(dāng)允許輸入EN有效時(shí),檢測(cè)各個(gè)相關(guān)特殊繼電器的狀態(tài),激活由控制字節(jié)定義的高速脈沖輸出操作。PLS指令只有一個(gè)輸入端Q,字型數(shù)據(jù),只能取常數(shù)0或1,對(duì)應(yīng)從Q0.0或Q0.1輸出高速脈沖。第111頁(yè),共157頁(yè),2023年,2月20日,星期一4、相關(guān)的寄存器每個(gè)高速脈沖發(fā)生器對(duì)應(yīng)一定數(shù)量特殊標(biāo)志寄存器,這些寄存器包括控制字節(jié)寄存器、狀態(tài)字節(jié)寄存器和參數(shù)數(shù)值寄存器,用以控制高速脈沖的輸出形式、反映輸出狀態(tài)和參數(shù)值。各寄存器分配如下表所示。第112頁(yè),共157頁(yè),2023年,2月20日,星期一①狀態(tài)字節(jié)狀態(tài)字節(jié)在程序運(yùn)行時(shí)根據(jù)運(yùn)行狀況自動(dòng)使某些位置位,可以通過(guò)程序來(lái)讀相關(guān)位的狀態(tài),用以作為判斷條件實(shí)現(xiàn)相應(yīng)的操作。狀態(tài)字節(jié)中各狀態(tài)位的功能如下表所示。第113頁(yè),共157頁(yè),2023年,2月20日,星期一②控制字節(jié)通過(guò)對(duì)控制字節(jié)中指定位的編程,根據(jù)操作要求設(shè)置字節(jié)中各控制位,如脈沖輸出允許、PTO/PWM模式選擇、單段/多段選擇、更新方式、時(shí)間基準(zhǔn)、允許更新等。控制字節(jié)中各控制位的功能如下表所示。第114頁(yè),共157頁(yè),2023年,2月20日,星期一二、高速脈沖串輸出(PTO)
脈沖寬度與脈沖周期之比稱為占空比,脈沖序列(PTO)功能提供周期與脈沖數(shù)目可以有用戶控制的占空比為50%的方波脈沖輸出。第115頁(yè),共157頁(yè),2023年,2月20日,星期一脈沖計(jì)數(shù)范圍用雙字長(zhǎng)無(wú)符號(hào)數(shù)表示,脈沖數(shù)的取值范圍是1~4294967295。如果編程時(shí)指定脈沖數(shù)為0,則系統(tǒng)默認(rèn)脈沖數(shù)為1個(gè)。PTO可提供單脈沖串或多脈沖串(脈沖輪廓)。用戶可以指定脈沖數(shù)和周期(以微妙或毫秒遞增),周期范圍為10~65535μm或2~65535ms。周期值一般設(shè)定為偶數(shù),若指定周期值為奇數(shù)(如75ms)會(huì)引起占空比的輕微失真。1、周期和脈沖數(shù)第116頁(yè),共157頁(yè),2023年,2月20日,星期一PTO方式中,如果要輸出多個(gè)脈沖串,每個(gè)脈沖串的周期和脈沖數(shù)可以不同。當(dāng)需要輸出多個(gè)脈沖串時(shí),允許脈沖串進(jìn)行排隊(duì),形成管線,當(dāng)前輸出的脈沖串完成之后,立即輸出新脈沖串,這保證了脈沖串順序輸出的連續(xù)性。單段管線多段管線2、PTO輸出方式第117頁(yè),共157頁(yè),2023年,2月20日,星期一①單段管線PTO
在單段管線PTO輸出時(shí),管線中只能存放1個(gè)脈沖串的控制參數(shù)(入口地址)。在當(dāng)前脈沖串輸出期間,就要對(duì)與下一個(gè)脈沖串相關(guān)的特殊繼電器進(jìn)行更新,待當(dāng)前的脈沖串輸出完成后,通過(guò)執(zhí)行PLS指令,就可以立即輸出新的脈沖串,實(shí)現(xiàn)多段脈沖串的連續(xù)輸出。
采用單段管線PTO的優(yōu)點(diǎn)是:各個(gè)脈沖串的時(shí)間基準(zhǔn)可以不同。
采用單段管線PTO的缺點(diǎn)是:編程復(fù)雜且煩瑣,當(dāng)參數(shù)設(shè)置不當(dāng)時(shí),會(huì)造成各個(gè)脈沖串連接的不平滑。第118頁(yè),共157頁(yè),2023年,2月20日,星期一②多段管線PTO
當(dāng)采用多段管線PTO輸出高速脈沖串時(shí),需要在變量存儲(chǔ)器區(qū)(V)中建立一個(gè)包絡(luò)表,在包絡(luò)表中存儲(chǔ)各個(gè)脈沖串的參數(shù),當(dāng)執(zhí)行PTO指令時(shí),CPU自動(dòng)按順序從包絡(luò)表中調(diào)出各個(gè)脈沖串的入口地址,連續(xù)輸出各個(gè)脈沖串。
采用多段管線PTO的優(yōu)點(diǎn)是:編程簡(jiǎn)單,可按照程序設(shè)定的周期增量值自動(dòng)增減脈沖周期。
采用多段管線PTO的缺點(diǎn)是:所有脈沖串的時(shí)間基準(zhǔn)必須一致,當(dāng)執(zhí)行PLS指令時(shí),包絡(luò)表中的所有參數(shù)均不能改變。第119頁(yè),共157頁(yè),2023年,2月20日,星期一③PTO包絡(luò)表
包絡(luò)表由包絡(luò)段數(shù)和各段構(gòu)成。每段長(zhǎng)度為8個(gè)字節(jié),包括:脈沖周期值(16位);
周期增量值(16位);脈沖計(jì)數(shù)值(32位)。以3段包絡(luò)的包絡(luò)表為例,包絡(luò)表的結(jié)構(gòu)如下表所示。第120頁(yè),共157頁(yè),2023年,2月20日,星期一第121頁(yè),共157頁(yè),2023年,2月20日,星期一3、中斷事件類型
高速脈沖串輸出可以采用中斷方式進(jìn)行控制,各種型號(hào)的PLC可用的高速脈沖串輸出的中斷事件有兩個(gè),如下表所示。第122頁(yè),共157頁(yè),2023年,2月20日,星期一4、PTO的使用使用高速脈沖串輸出時(shí),要按以下步驟進(jìn)行:①確定脈沖發(fā)生器及工作模式
②設(shè)置控制字節(jié)③寫入周期值、周期增量值和脈沖數(shù)④裝入包絡(luò)的首地址⑤設(shè)置中斷事件并全局開(kāi)中斷⑥執(zhí)行PLS指令第123頁(yè),共157頁(yè),2023年,2月20日,星期一三、高速脈沖串輸出應(yīng)用舉例1、控制要求步進(jìn)電機(jī)轉(zhuǎn)動(dòng)過(guò)程中,要從A點(diǎn)加速到B點(diǎn)后恒速運(yùn)行,又從C點(diǎn)開(kāi)始減速到D點(diǎn),完成這一過(guò)程時(shí)用指示燈顯示。電機(jī)的轉(zhuǎn)動(dòng)受脈沖控制,A點(diǎn)和D點(diǎn)的脈沖頻率為2kHz,B點(diǎn)和C點(diǎn)的頻率為10kHz,加速過(guò)程的脈沖數(shù)為400個(gè),恒速轉(zhuǎn)動(dòng)的脈沖數(shù)為4000個(gè),減速過(guò)程脈沖數(shù)為200個(gè)。工作過(guò)程如下圖所示。第124頁(yè),共157頁(yè),2023年,2月20日,星期一第125頁(yè),共157頁(yè),2023年,2月20日,星期一2、分析確定脈沖發(fā)生器及工作模式
設(shè)置控制字節(jié)
寫入周期值、周期增量值和脈沖數(shù)
裝入包絡(luò)表首地址
中斷調(diào)用
執(zhí)行PLS指令
第126頁(yè),共157頁(yè),2023年,2月20日,星期一①確定脈沖發(fā)生器及工作模式選擇由Q0.0輸出,由上圖選擇3段管線(AB段、BC段、CD段)PTO的輸出形式。②設(shè)置控制字節(jié)確定周期值的時(shí)基單位,由于在BC段輸出的頻率最大為10kHz,對(duì)應(yīng)的周期值為100μs,因此選擇時(shí)基單位μs,向SMB67寫入控制字16#A0。第127頁(yè),共157頁(yè),2023年,2月20日,星期一③確定周期初始值、周期增量值Ⅰ、初始值確定較為容易,只需將每段初始頻率轉(zhuǎn)換為時(shí)間即可:AB段為500μs,BC段為100μs,CD段為100μs。Ⅱ、周期增量值的確定:Tn+1:該段結(jié)束的周期時(shí)間;Tn:該段開(kāi)始的周期時(shí)間;N:該段的脈沖數(shù)。第128頁(yè),共157頁(yè),2023年,2月20日,星期一④建立包絡(luò)表設(shè)包絡(luò)表的首地址為VB400,包絡(luò)表如下:V變量存儲(chǔ)器參數(shù)參數(shù)值VB400總段數(shù)3VW401加速段初始周期值500μsVW403周期增量值-1μsVD405輸出脈沖數(shù)400VW409恒速段初始周期值100μsVW411周期增量值0μsVD413輸出脈沖數(shù)4000VW417減速段初始周期值100μsVW419周期增量值2μsVD421輸出脈沖數(shù)200第129頁(yè),共157頁(yè),2023年,2月20日,星期一⑤確定中斷
PTO0高速脈沖串輸出完成中斷事件19,對(duì)應(yīng)中斷程序中設(shè)置控制指示燈的輸出點(diǎn)置位。⑥程序?qū)崿F(xiàn)本控制系統(tǒng)主程序、初始化子程序SBR_1、包絡(luò)表子程序及中斷程序如下:第130頁(yè),共157頁(yè),2023年,2月20日,星期一第131頁(yè),共157頁(yè),2023年,2月20日,星期一第132頁(yè),共157頁(yè),2023年,2月20日,星期一第133頁(yè),共157頁(yè),2023年,2月20日,星期一第134頁(yè),共157頁(yè),2023年,2月20日,星期一三、寬度可調(diào)脈沖輸出(PWM)
脈沖寬度調(diào)制功能提供連續(xù)的、周期與脈沖寬度可以由用戶控制的輸出。時(shí)間基準(zhǔn)可設(shè)置為μm或ms,周期范圍為10~65535μm或2~65535ms,脈沖寬度的變化為0~65535μm或0~65535ms。
當(dāng)指定的脈沖寬度值大于周期值時(shí),占空比為100%,輸出連續(xù)接通;當(dāng)脈沖寬度為0時(shí),占空比為0%,輸出斷開(kāi)。PWM的高頻輸出波形經(jīng)濾波后可以得到與占空比成正比的模擬量輸出電壓。1、周期和脈沖寬度第135頁(yè),共157頁(yè),2023年,2月20日,星期一2、更新方式
同步更新:PWM的典型操作是當(dāng)周期時(shí)間保持常數(shù)時(shí)變化脈沖寬度。所以不需要改變時(shí)間基準(zhǔn)。不改變時(shí)間基準(zhǔn),就可以進(jìn)行同步更新。同步更新時(shí),波形特性的變化發(fā)生在周期邊沿,可提供平滑過(guò)渡。
異步更新:若需改變PWM發(fā)生器的時(shí)間基準(zhǔn),就要使用異步更新。異步更新會(huì)造成PWM功能被瞬時(shí)禁止,和PWM輸出波形不同步。這會(huì)引起被控設(shè)備的振動(dòng)。因此,建議選擇一個(gè)適合于所有周期時(shí)間的時(shí)間基準(zhǔn)來(lái)采用PWM同步更新。第136頁(yè),共157頁(yè),2023年,2月20日,星期一3、PWM指令
執(zhí)行菜單命令“工具”→“位置控制向?qū)А?,打開(kāi)位置控制向?qū)?。在?頁(yè)選擇“配置S7-200PLC內(nèi)置PTO/PWM操作”。在第2頁(yè)選擇組態(tài)Q0.0或Q0.
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度特種設(shè)備安全責(zé)任書標(biāo)準(zhǔn)范本
- 2024年酒店消防工程升級(jí)改造施工合同
- 2024年離婚雙方子女教育援助及監(jiān)護(hù)責(zé)任協(xié)議3篇
- 2024年重慶市法定離婚合同標(biāo)準(zhǔn)格式
- 二零二五年度供應(yīng)鏈融資反擔(dān)保合同樣本3篇
- 2024汽車銷售與服務(wù)一體化合同范本3篇
- 2024年直播平臺(tái)品牌合作與市場(chǎng)推廣服務(wù)合同3篇
- 2025版搬運(yùn)工社會(huì)保險(xiǎn)繳納合同規(guī)范3篇
- 2025年LED控制與驅(qū)動(dòng)產(chǎn)品項(xiàng)目發(fā)展計(jì)劃
- 成都體育學(xué)院《小學(xué)音樂(lè)教學(xué)論》2023-2024學(xué)年第一學(xué)期期末試卷
- DS12C887電子時(shí)鐘(附程序)
- 新產(chǎn)品試制流程管理辦法
- 王牌電話交換機(jī)說(shuō)明書
- 列管式換熱器-換熱面積計(jì)算
- 10個(gè)地基基礎(chǔ)工程質(zhì)量通病及防治措施
- 25m預(yù)應(yīng)力混凝土簡(jiǎn)支T梁橋設(shè)計(jì)(共30頁(yè))
- 籃球校本課程教案
- 高一學(xué)生文理分班意向表
- 高等傳熱學(xué)部分答案
- 地球物理學(xué)進(jìn)展投稿須知
- 機(jī)床精度檢驗(yàn)標(biāo)準(zhǔn) VDI3441 a ISO230-2
評(píng)論
0/150
提交評(píng)論