版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第第6章章 S7-200 的功能指令的功能指令 6.1 功能指令概述功能指令概述6.1.1 功能指令的類型及其學(xué)習(xí)方法功能指令的類型及其學(xué)習(xí)方法 功能指令分為較常用的指令、與數(shù)據(jù)的基本操作有關(guān)的指令、與PLC的高級(jí)應(yīng)用有關(guān)的指令和用得較少的指令。 初學(xué)功能指令時(shí),首先可以按指令的分類瀏覽所有的指令。初學(xué)者沒(méi)有必要花大量的時(shí)間去熟悉功能指令使用中的細(xì)節(jié),應(yīng)重點(diǎn)了解指令的基本功能和有關(guān)的基本概念。應(yīng)通過(guò)讀程序、編程序和調(diào)試程序來(lái)學(xué)習(xí)功能指令。6.1.2 S7-200 的指令規(guī)約的指令規(guī)約 1使能輸入與使能輸出 使能輸入端EN有能流流入方框指令時(shí),指令才能被執(zhí)行。 EN輸入端有能流且指令執(zhí)行時(shí)無(wú)錯(cuò)誤
2、,則使能輸出ENO將能流傳遞給下一個(gè)方框指令或線圈。 語(yǔ)句表用AENO指令來(lái)產(chǎn)生與方框指令的ENO相同的效果。刪除AENO指令后,方框指令將由串聯(lián)變?yōu)椴⒙?lián)。 2梯形圖中的指令 條件輸入指令必須通過(guò)觸點(diǎn)電路連接到左側(cè)母線上。不需要條件的指令必須直接連接在左側(cè)母線上。 3能流指示器 必須解決開路問(wèn)題,網(wǎng)絡(luò)才能成功編譯。ENO端的可選能流指示器表示可將其他梯形圖元件附加到該位置。它不影響編譯。 6.2 數(shù)據(jù)處理指令數(shù)據(jù)處理指令6.2.1 比較指令與數(shù)據(jù)傳送指令比較指令與數(shù)據(jù)傳送指令 1字節(jié)、整數(shù)、雙整數(shù)和實(shí)數(shù)比較指令 比較觸點(diǎn)中間的B、I、D、R、S分別表示無(wú)符號(hào)字節(jié)、有符號(hào)整數(shù)、有符號(hào)雙整數(shù)、有符
3、號(hào)實(shí)數(shù)和字符串比較。滿足比較關(guān)系式給出的條件時(shí),比較指令對(duì)應(yīng)的觸點(diǎn)接通。字符串比較指令的比較條件“x”只有=和。 整數(shù)和雙整數(shù)比較指令比較兩個(gè)有符號(hào)數(shù)。IN1在觸點(diǎn)的上面,IN2在觸點(diǎn)下面。 【例6-1】 用接通延時(shí)定時(shí)器和比較指令組成占空比可調(diào)的脈沖發(fā)生器。 M0.2和T33組成脈沖發(fā)生器,T33的當(dāng)前值按鋸齒波變化。比較指令用來(lái)產(chǎn)生脈沖寬度可調(diào)的方波,Q0.0為OFF的時(shí)間取決于比較指令第2個(gè)操作數(shù)的值。 2字符串比較指令 字符串比較指令比較ASCII碼字符串相等或不相等。常數(shù)字符串應(yīng)是比較觸點(diǎn)上面的參數(shù),或比較指令中的第一個(gè)參數(shù)。 3字節(jié)、字、雙字和實(shí)數(shù)的傳送 傳送指令助記符中最后的B、
4、W、DW(或D)和R分別表示操作數(shù)為字節(jié)、字、雙字和實(shí)數(shù)。 4字節(jié)、字、雙字的塊傳送指令 塊傳送指令將起始地址為IN的N個(gè)連續(xù)的存儲(chǔ)單元中的數(shù)據(jù),傳送到從地址OUT開始的N個(gè)存儲(chǔ)單元,字節(jié)變量N = 1255。 5字節(jié)立即讀寫指令 字節(jié)立即讀取指令MOV_BIR讀取IN指定的一個(gè)字節(jié)的物理輸入,但是并不更新對(duì)應(yīng)的過(guò)程映像輸入寄存器。 字節(jié)立即寫入指令MOV_BIW將一個(gè)字節(jié)的數(shù)值寫入OUT指定的物理輸出,同時(shí)更新對(duì)應(yīng)的過(guò)程映像輸出字節(jié)。 6字節(jié)交換指令 字節(jié)交換指令SWAP用來(lái)交換輸入字IN的高字節(jié)與低字節(jié)。應(yīng)采用脈沖執(zhí)行方式。6.2.2 移位與循環(huán)移位指令移位與循環(huán)移位指令 移位位數(shù)N的數(shù)據(jù)
5、類型為BYTE。 1右移位和左移位指令 移位指令將輸入IN中的數(shù)各位的值向右或向左移動(dòng)N位后,送給輸出OUT指定的地址。移位指令對(duì)移出位自動(dòng)補(bǔ)0,有符號(hào)的字和雙字的符號(hào)位也被移位。如果移位次數(shù)非0,“溢出”標(biāo)志位SM1.1保存最后一次被移出的位的值。 2循環(huán)右移位和循環(huán)左移位指令 循環(huán)移位指令將輸入IN中各位的值向右或向左循環(huán)移動(dòng)N位后,送給輸出OUT指定的地址。被移出來(lái)的位將返回到另一端空出來(lái)的位置。移出的最后一位的數(shù)值存放在溢出標(biāo)志位SM1.1。 如果移動(dòng)的位數(shù)N大于允許值,執(zhí)行循環(huán)移位之前先對(duì)N進(jìn)行求模運(yùn)算。例如字循環(huán)移位時(shí),將N除以16后取余數(shù),得到的有效移位次數(shù)為015。如果為0則不
6、移位。符號(hào)位也被移位。 3移位寄存器指令 下圖中的14位移位寄存器由V30.0V31.5組成,在I0.3的上升沿,I0.4的值從移位寄存器的最低位V30.0移入,寄存器中的各位左移一位,最高位V31.5的值被移到溢出標(biāo)志位SM1.1。N為14時(shí),I0.4的值從最高位V31.5移入,寄存器中的各位右移一位,從最低位V30.0移到溢出標(biāo)志位SM1.1。6.2.3 數(shù)據(jù)轉(zhuǎn)換指令數(shù)據(jù)轉(zhuǎn)換指令 1標(biāo)準(zhǔn)轉(zhuǎn)換指令 輸入?yún)?shù)IN指定的數(shù)據(jù)轉(zhuǎn)換后保存到輸出參數(shù)OUT指定的地址。BCD碼與整數(shù)相互轉(zhuǎn)換的指令中,整數(shù)的有效范圍為09999。 如果轉(zhuǎn)換后的數(shù)值超出輸出的允許范圍,溢出標(biāo)志位SM1.1被置為ON。 2段
7、碼指令 七段顯示器的D0D6段分別對(duì)應(yīng)于段碼指令輸出字節(jié)的第0位第6位,某段應(yīng)亮?xí)r輸出字節(jié)中對(duì)應(yīng)的位為1,反之為0。段碼指令很少使用。 3計(jì)算程序中的數(shù)據(jù)轉(zhuǎn)換 【例6-2】 用實(shí)數(shù)運(yùn)算求直徑為9 876mm的圓的周長(zhǎng),將結(jié)果轉(zhuǎn)換為整數(shù)。 LD I0.0ITD +9876, AC1 /將9876裝入AC1中,整數(shù)轉(zhuǎn)換為雙整數(shù)DTR AC1, AC1 /雙整數(shù)轉(zhuǎn)換為實(shí)數(shù)9876.0*R 3.1416, AC1 /乘以得31 026.44ROUND AC1, VD10 /轉(zhuǎn)換為整數(shù)31 026后,送VD10中 4解碼指令與編碼指令 解碼指令DECO根據(jù)輸入字節(jié)IN的最低4位表示的位號(hào),將輸出字OUT
8、對(duì)應(yīng)的位置為1,輸出字的其他位均為0。16#0010=2#0000 0000 0001 0000 編碼指令ENCO將輸入字IN中的最低有效位(為1的位)的位編號(hào)寫入輸出字節(jié)OUT的最低4位。16#0014=0000 0000 0001 0100。 存儲(chǔ)器填充指令FILL用輸入?yún)?shù)IN指定的字值填充從地址OUT開始的N個(gè)連續(xù)的字。6.2.5 實(shí)時(shí)時(shí)鐘指令實(shí)時(shí)時(shí)鐘指令 1用編程軟件讀取與設(shè)置實(shí)時(shí)時(shí)鐘的日期和時(shí)間 用菜單命令“PLC”“實(shí)時(shí)時(shí)鐘”打開“CPU時(shí)鐘操作對(duì)話框”??梢宰x取PC、PLC的時(shí)鐘,修改和下載日期時(shí)間。 2讀取實(shí)時(shí)時(shí)鐘指令 READ_RTC指令從CPU的實(shí)時(shí)時(shí)鐘讀取當(dāng)前日期和時(shí)間
9、,8字節(jié)時(shí)間緩沖區(qū)依次存放年的低2位、月、日、時(shí)、分、秒、0和星期的代碼,星期日為1。日期和時(shí)間的數(shù)據(jù)類型為字節(jié)型BCD碼。 3設(shè)置實(shí)時(shí)時(shí)鐘指令 SET_RTC指令將8字節(jié)時(shí)間日期值寫入CPU的實(shí)時(shí)時(shí)鐘?!纠?-3】用實(shí)時(shí)時(shí)鐘定時(shí)控制設(shè)備。LDSM0.0TODRVB70/小時(shí)分鐘值在VW73LDW= VW73, VW78/VW78中是起始時(shí)、分值A(chǔ)WVW73, VW80/VW80中是結(jié)束時(shí)、分值=Q0.2/在設(shè)置的時(shí)間范圍內(nèi), Q0.2為1狀態(tài)6.3 數(shù)學(xué)運(yùn)算指令數(shù)學(xué)運(yùn)算指令6.3.1 整數(shù)運(yùn)算指令整數(shù)運(yùn)算指令 1四則運(yùn)算指令 梯形圖IN1 + IN2 = OUT,IN1IN2 = OUT,I
10、N1 * IN2 = OUT,IN1 / IN2 = OUT 語(yǔ)句表IN1+OUT = OUT,OUTIN1 = OUT,IN1*OUT = OUT,OUT/IN1=OUT 指令影響SM1.0(零標(biāo)志)、SM1.1(溢出標(biāo)志)、SM1.2(負(fù)數(shù)標(biāo)志)和SM1.3(除數(shù)為0)。MUL將兩個(gè)16位整數(shù)相乘,產(chǎn)生一個(gè)32位乘積。DIV指令將兩個(gè)16位整數(shù)相除,運(yùn)算結(jié)果的高16位為余數(shù),低16位為商。 【例6-4】設(shè)計(jì)程序,用模擬電位器設(shè)置定時(shí)器T37的預(yù)設(shè)值為520s。 SMB28中電位器的位置對(duì)應(yīng)的數(shù)字N為0255。時(shí)間設(shè)定值為150N/255+50。用累加器來(lái)存放操作數(shù)和運(yùn)算的中間結(jié)果比較方便。
11、2遞增與遞減指令梯形圖中IN + 1 = OUT,語(yǔ)句表中OUT+1=OUT6.3.2 浮點(diǎn)數(shù)函數(shù)運(yùn)算指令浮點(diǎn)數(shù)函數(shù)運(yùn)算指令 1三角函數(shù)指令 輸入值是以弧度為單位的浮點(diǎn)數(shù),角度值乘以/180轉(zhuǎn)換為弧度值。 2自然對(duì)數(shù)和自然指數(shù)指令 3平方根指令將正實(shí)數(shù)開平方6.3.3 邏輯運(yùn)算指令邏輯運(yùn)算指令 1取反指令 取反指令將二進(jìn)制數(shù)逐位取反,各位由0變?yōu)?,由1變?yōu)?。 2邏輯運(yùn)算指令 字節(jié)、字、雙字“與”運(yùn)算時(shí),如果兩個(gè)操作數(shù)的同一位均為1,運(yùn)算結(jié)果的對(duì)應(yīng)位為1,否則為0?!盎颉边\(yùn)算時(shí)如果兩個(gè)操作數(shù)的同一位均為0,運(yùn)算結(jié)果的對(duì)應(yīng)位為0,否則為1?!爱惢颉保‥xclusive Or)運(yùn)算時(shí)如果兩個(gè)操作
12、數(shù)的同一位不同,運(yùn)算結(jié)果的對(duì)應(yīng)位為1,否則為0。 3邏輯運(yùn)算指令應(yīng)用舉例 用字節(jié)邏輯“或”運(yùn)算將QB0的第24位置為1,其余各位保持不變。 QB0的某一位與1作“或”運(yùn)算,運(yùn)算結(jié)果為1,與0作“或”運(yùn)算,運(yùn)算結(jié)果不變。16#1C的第24位為1。 IW2的低12位用來(lái)讀取3位撥碼開關(guān)的BCD碼,IW2的高4位另作他用。 16#0FFF的最高4位二進(jìn)制數(shù)為0,低12位為1。與IW2作“與”運(yùn)算后, VW2的低12位與IW2的低12位的值相同,VW2的高4位為0?!纠?-6】 求VW0中整數(shù)的絕對(duì)值,仍將結(jié)果存放在VW0中。LD I0.1 EU /在I0.1的上升沿AW VW0, 0 /如果VW0中
13、為負(fù)數(shù)INVW VW0 /VW0逐位取反INCW VW0 /加1得到原VW0中的數(shù)的絕對(duì)值6.4 程序控制指令程序控制指令6.4.1 跳轉(zhuǎn)與標(biāo)號(hào)指令跳轉(zhuǎn)與標(biāo)號(hào)指令 1跳轉(zhuǎn)與標(biāo)號(hào)指令的應(yīng)用 JMP線圈通電時(shí),跳轉(zhuǎn)條件滿足,跳轉(zhuǎn)指令使程序流程跳轉(zhuǎn)到對(duì)應(yīng)的標(biāo)號(hào)處。JMP與LBL指令的操作數(shù)n為常數(shù)0255,只能在同一個(gè)程序塊中跳轉(zhuǎn)。 I0.4的常開觸點(diǎn)斷開時(shí),跳轉(zhuǎn)條件不滿足,順序執(zhí)行下面的網(wǎng)絡(luò)。 I0.4的常開觸點(diǎn)接通時(shí),跳轉(zhuǎn)到標(biāo)號(hào)LBL 0處,不執(zhí)行第二個(gè)網(wǎng)絡(luò)。Q 0.0的線圈為灰色。 2跳轉(zhuǎn)指令對(duì)定時(shí)器的影響 在各定時(shí)器正在定時(shí)時(shí)跳轉(zhuǎn),100ms定時(shí)器停止定時(shí),當(dāng)前值保持不變。10ms和1ms定
14、時(shí)器繼續(xù)定時(shí),定時(shí)時(shí)間到時(shí)跳轉(zhuǎn)區(qū)外的觸點(diǎn)也會(huì)動(dòng)作。停止跳轉(zhuǎn)時(shí)100ms定時(shí)器繼續(xù)定時(shí)。 3跳轉(zhuǎn)對(duì)功能指令的影響 未跳轉(zhuǎn)時(shí)INC_B指令使VB0每秒加1。跳轉(zhuǎn)條件滿足時(shí)VB0的值保持不變。圖6-26 跳轉(zhuǎn)與定時(shí)器【例6-7】 用跳轉(zhuǎn)指令實(shí)現(xiàn)圖6-27中的流程圖的要求。6.4.2 循環(huán)指令循環(huán)指令 1單重循環(huán) 驅(qū)動(dòng)FOR指令的邏輯條件滿足時(shí),反復(fù)執(zhí)行FOR與NEXT之間的指令。執(zhí)行到NEXT指令時(shí),INDX的值加1,如果INDX的值小于等于結(jié)束值FINAL,返回去執(zhí)行FOR與NEXT之間的指令。如果INDX的值大于結(jié)束值,循環(huán)終止。 【例6-8】在I0.5的上升沿,求VB10 VB13這4個(gè)字節(jié)的
15、異或值,用VB14保存。首先將VB14清0,并設(shè)置地址指針AC1的初始值。 第一次循環(huán)將指針AC1所指的VB10與VB14異或,然后將指針值加1,指針指向VB11,為下一次循環(huán)的異或運(yùn)算做好準(zhǔn)備。 VB10VB13同一位中1的個(gè)數(shù)為奇數(shù)時(shí),VB14對(duì)應(yīng)位的值為1,反之為0。 2多重循環(huán) 循環(huán)最多可以嵌套8層。 在I0.1的上升沿,執(zhí)行10次外層循環(huán),如果I0.2為ON,每執(zhí)行一次外層循環(huán),將執(zhí)行8次內(nèi)層循環(huán)。執(zhí)行完后,VW6的值增加80。6.4.3 其他指令其他指令 1條件結(jié)束指令與條件停止指令 條件結(jié)束指令END的邏輯條件滿足時(shí)終止當(dāng)前的掃描周期。條件停止指令STOP使CPU從RUN模式切換
16、到STOP模式。 2監(jiān)控定時(shí)器復(fù)位指令 監(jiān)控定時(shí)器的定時(shí)時(shí)間為500ms,每次掃描它都被自動(dòng)復(fù)位,然后又開始定時(shí)。在正常工作時(shí),它不起作用。掃描周期超過(guò)500ms時(shí),CPU自動(dòng)切換到STOP模式。 可用WDR指令重新觸發(fā)監(jiān)控定時(shí)器,以擴(kuò)展允許使用的掃描時(shí)間。 3診斷LED指令 很少使用。6.5 6.5 局部變量與子程序局部變量與子程序6.5.1 局部變量局部變量 1局部變量與全局變量 每個(gè)程序組織單元(POU)均有由64字節(jié)局部(L)存儲(chǔ)器組成的局部變量。局部變量只在它被創(chuàng)建的POU中有效,全局符號(hào)在各POU中均有效。局部變量有以下優(yōu)點(diǎn): 1) 盡量使用局部變量的子程序易于移植到別的項(xiàng)目。 2
17、) 同一級(jí)POU的局部變量使用公用的存儲(chǔ)區(qū)。 3)局部變量用來(lái)在子程序和調(diào)用它的程序之間傳遞輸入?yún)?shù)和輸出參數(shù)。 2查看局部變量表 可上下拖動(dòng)分裂條,打開和關(guān)閉局部變量表。 3局部變量的類型 臨時(shí)變量(TEMP)是暫時(shí)保存在局部數(shù)據(jù)區(qū)中的變量。主程序或中斷程序只有TEMP變量。 輸入?yún)?shù) (IN) 用來(lái)將調(diào)用它的POU提供的數(shù)據(jù)值傳入子程序。 輸出參數(shù)(OUT)用來(lái)將子程序的執(zhí)行結(jié)果返回給調(diào)用它的POU。 輸入_輸出參數(shù) (IN_OUT)的初始值由調(diào)用它的POU傳送給子程序,并用同一參數(shù)將子程序的執(zhí)行結(jié)果返回給調(diào)用它的POU。 每個(gè)子程序最多可以使用16個(gè)輸入/輸出參數(shù)。 4在局部變量表中增加
18、和刪除變量 子程序中變量名稱前面的“#”表示局部變量,是軟件自動(dòng)添加的。 5局部變量的地址分配 由編程軟件自動(dòng)分配局部變量的地址。6.5.2 子程序的編寫與調(diào)用子程序的編寫與調(diào)用 1子程序的作用 子程序?qū)⒊绦蚍殖扇菀坠芾淼男K,使程序結(jié)構(gòu)簡(jiǎn)單清晰,易于查錯(cuò)和維護(hù)。可以多次調(diào)用同一個(gè)子程序,使用子程序可以減少掃描時(shí)間。 2子程序的創(chuàng)建 執(zhí)行“編輯”菜單中的命令“插入”“子程序”。 3子程序舉例 子程序的重命名,生成局部變量,編寫程序。 4子程序的調(diào)用:將指令樹中的子程序“拖”到程序編輯器中需要的位置。 如果用語(yǔ)句表編程,子程序調(diào)用指令的格式為 CALL 子程序名稱,參數(shù)1,參數(shù)2,參數(shù)nn =
19、116。 在語(yǔ)句表中調(diào)用帶參數(shù)的子程序時(shí),輸入?yún)?shù)在最前面,其次是輸入/輸出參數(shù),最后是輸出參數(shù)。梯形圖中從上到下的同類參數(shù),在語(yǔ)句表中按從左到右的順序排列。 在調(diào)用子程序時(shí),CPU保存當(dāng)前的邏輯堆棧,將棧頂值置為1,堆棧中的其他值清零,控制轉(zhuǎn)移至被調(diào)用的子程序。該子程序執(zhí)行完后,CPU將堆?;謴?fù)為調(diào)用時(shí)保存的數(shù)值,并將控制權(quán)交還給調(diào)用子程序的POU。 子程序在同一個(gè)周期內(nèi)被多次調(diào)用時(shí),子程序內(nèi)部不能使用上升沿、下降沿、定時(shí)器和計(jì)數(shù)器指令。 如果在使用子程序調(diào)用指令后修改了該子程序中的局部變量表,調(diào)用指令將變?yōu)闊o(wú)效。必須刪除無(wú)效調(diào)用,重新調(diào)用修改后的子程序。 子程序調(diào)用最多可以嵌套8級(jí),中斷程
20、序中調(diào)用的子程序不能再調(diào)用別的子程序。 5用地址指針作輸入?yún)?shù)的子程序 【例6-9】 對(duì)VB10開始的4B數(shù)據(jù)作異或運(yùn)算。 6子程序中的定時(shí)器 停止調(diào)用子程序時(shí),如果子程序中的定時(shí)器正在定時(shí),100ms定時(shí)器將停止定時(shí),當(dāng)前值保持不變,重新調(diào)用時(shí)繼續(xù)定時(shí);1ms、10ms定時(shí)器繼續(xù)定時(shí),定時(shí)時(shí)間到時(shí),其常開觸點(diǎn)可以在子程序之外起作用。 7子程序的有條件返回 子程序中的RET線圈通電時(shí),子程序被終止執(zhí)行,返回調(diào)用它的程序。 8有保持功能的電路的處理 “起動(dòng)”和“停止”為輸入?yún)?shù)。如果參數(shù)“電機(jī)”的數(shù)據(jù)類型為輸出(OUT),兩次調(diào)用子程序SBR_0,因?yàn)楸4鎱?shù)“電機(jī)”(L0.2)的存儲(chǔ)器是共用的
21、,接通I0.0外接的小開關(guān),Q0.0和Q0.1同時(shí)變?yōu)镺N。將輸出參數(shù)“電機(jī)”的變量類型改為IN_OUT,參數(shù)“電機(jī)”返回的運(yùn)算結(jié)果分別用Q0.0和Q0.1保存,解決了上述問(wèn)題。 6.6 中斷程序與中斷指令中斷程序與中斷指令6.6.1 中斷的基本概念與中斷事件中斷的基本概念與中斷事件 在中斷事件發(fā)生時(shí)由操作系統(tǒng)立即調(diào)用中斷程序。中斷程序是用戶編寫的。中斷程序不能再被中斷,中斷程序越短越好。 中斷事件號(hào)見表6-12。6.6.2 中斷指令中斷指令 1中斷允許指令與中斷禁止指令 中斷允許指令ENI允許處理所有被連接的中斷事件。 禁止中斷指令DISI禁止處理所有中斷事件。進(jìn)入RUN模式時(shí)自動(dòng)禁止中斷。
22、 2中斷連接指令、中斷分離指令與清除中斷事件指令 中斷連接指令A(yù)TCH建立中斷事件EVNT與對(duì)應(yīng)的中斷程序INT的聯(lián)系。中斷事件由中斷事件號(hào)指定,中斷程序由中斷程序號(hào)指定。 中斷分離指令DTCH斷開中斷事件與中斷程序之間的聯(lián)系。 3中斷程序的執(zhí)行 CPU自動(dòng)調(diào)用中斷程序需要滿足下列條件: 1)執(zhí)行了全局中斷允許指令ENI。 2)執(zhí)行了中斷事件對(duì)應(yīng)的ATCH指令。 3)出現(xiàn)對(duì)應(yīng)的中斷事件。 4中斷優(yōu)先級(jí)與中斷隊(duì)列溢出 中斷優(yōu)先級(jí)分組:通信(最高優(yōu)先級(jí))、I/O中斷和定時(shí)中斷。在優(yōu)先級(jí)范圍內(nèi),CPU按照先來(lái)先服務(wù)的原則處理中斷。6.6.3 中斷程序舉例中斷程序舉例 1通信端口中斷 在自由端口模式,
23、接收消息完成、發(fā)送消息完成和接收一個(gè)字符均可以產(chǎn)生中斷事件。 2I/O中斷 I/O中斷包括I0.0I0.3的上升沿、下降沿中斷;高速計(jì)數(shù)器的當(dāng)前值等于設(shè)定值、計(jì)數(shù)方向改變和計(jì)數(shù)器外部復(fù)位中斷。 【例6-10】在I0.0的上升沿通過(guò)中斷使Q0.0立即置位。在I0.1的下降沿通過(guò)中斷使Q0.0立即復(fù)位。/主程序 OB1LD SM0.1 / 第一次掃描時(shí)ATCH INT_0, 0 / I0.0上升沿時(shí)執(zhí)行0號(hào)中斷程序ATCH INT_1, 3 / I0.1下降沿時(shí)執(zhí)行1號(hào)中斷程序ENI / 允許全局中斷LD SM5.0/如果檢測(cè)到 I/O 錯(cuò)誤DTCH0/禁用I0.0的上升沿中斷DTCH3/禁用I0
24、.1的下降沿中斷 /中斷程序0(INT_0)LD SM0.0 / 該位總是為ONSIQ0.0, 1/ 使Q0.0立即置位TODRVB10/讀實(shí)時(shí)時(shí)鐘/中斷程序1(INT_1)LD SM0.0 / 該位總是為ONRIQ0.0, 1/ 使Q0.0立即復(fù)位TODRVB20/讀實(shí)時(shí)時(shí)鐘 3定時(shí)中斷 定時(shí)中斷0、1的周期為1255ms,分別寫入SMB34和SMB35。每當(dāng)定時(shí)時(shí)間到時(shí),執(zhí)行相應(yīng)的定時(shí)中斷程序。 【例6-11】用定時(shí)中斷0實(shí)現(xiàn)周期為2s的高精度定時(shí)。/ 主程序 OB1LD SM0.1 / 第一次掃描時(shí)MOVB 0, VB10 / 將中斷次數(shù)計(jì)數(shù)器清0MOVB 250, SMB34 / 設(shè)置
25、定時(shí)中斷0的中斷時(shí)間間隔為250msATCH INT_0, 10 / 指定產(chǎn)生定時(shí)中斷0時(shí)執(zhí)行0號(hào)中斷程序ENI / 允許全局中斷 / 中斷程序INT_0, 每隔250ms中斷一次LD SM0.0 / 該位總是為ONINCBVB10/ 中斷次數(shù)計(jì)數(shù)器加1LDB=8, VB10 / 如果中斷了8次(2s)MOVB 0, VB10 / 將中斷次數(shù)計(jì)數(shù)器清0INCB QB0 / 每2s將QB0加1 4定時(shí)器T32/T96中斷 【例6-12】使用T32中斷控制8位節(jié)日彩燈,每2.5s左移一位。1ms定時(shí)器T32定時(shí)時(shí)間的中斷事件號(hào)為21,最長(zhǎng)定時(shí)時(shí)間為32.767s。/主程序 OB1LD SM0.1
26、/第一次掃描時(shí)MOVB 16#F, QB0/設(shè)置彩燈的初始狀態(tài),最低4位的燈被點(diǎn)亮ATCH INT_0, 21 /指定T32定時(shí)時(shí)間到時(shí)執(zhí)行中斷程序INT_0ENI /允許全局中斷LDNM0.0/T32和M0.0組成脈沖發(fā)生器TONT32, 2500/T32 的預(yù)設(shè)值為2500msLD T32=M0.0/中斷程序INT_0LD SM0.0 RLB QB0, 1/彩燈左移1位6.7 高速計(jì)數(shù)器與高速脈沖輸出指令高速計(jì)數(shù)器與高速脈沖輸出指令6.7.1 高速計(jì)數(shù)器的工作模式與外部輸入信號(hào)高速計(jì)數(shù)器的工作模式與外部輸入信號(hào) 1增量式編碼器 高速計(jì)數(shù)器一般與增量式編碼器配合使用,單通道增量式編碼器只產(chǎn)生
27、一個(gè)脈沖序列。雙通道A、B相型編碼器提供轉(zhuǎn)速和轉(zhuǎn)軸旋轉(zhuǎn)方向的信息。三通道增量式編碼器的Z相零位脈沖用作系統(tǒng)清零信號(hào),或作為坐標(biāo)的原點(diǎn)。 2絕對(duì)式編碼器 絕對(duì)式編碼器輸出多位二進(jìn)制數(shù),反映了運(yùn)動(dòng)物體所處的絕對(duì)位置。 3高速計(jì)數(shù)器的工作模式 高速計(jì)數(shù)器HSC0HSC5有13種工作模式: 1) 無(wú)外部方向控制信號(hào)的單相加/減計(jì)數(shù)器(模式02)。 2) 帶外部方向控制信號(hào)的單相加/減計(jì)數(shù)器(模式35)。 3) 有加、減計(jì)數(shù)時(shí)鐘脈沖輸入的雙相計(jì)數(shù)器(模式68)。 4) A/B相正交計(jì)數(shù)器(模式911),兩路計(jì)數(shù)脈沖的相位互差90。 根據(jù)有無(wú)復(fù)位輸入和啟動(dòng)輸入,上述4類工作模式又可以各分為3種。 模式12
28、用HSC0、HSC3計(jì)Q0.0、Q0.1輸出的高速脈沖。圖6-41 1倍速A/B相正交計(jì)數(shù)器 A/B相正交計(jì)數(shù)器可以選擇1倍速模式和4倍速模式,1倍速模式在時(shí)鐘脈沖的每一個(gè)周期計(jì)1次數(shù),4倍速模式在兩個(gè)時(shí)鐘脈沖的上升沿和下降沿都要計(jì)數(shù)。 4高速計(jì)數(shù)器的外部輸入信號(hào)見表6-16。6.7.2 高速計(jì)數(shù)器的程序設(shè)計(jì)高速計(jì)數(shù)器的程序設(shè)計(jì) 1高速計(jì)數(shù)器指令 HDEF指令定義高速計(jì)數(shù)器的工作模式,HSC指令用來(lái)激活高速計(jì)數(shù)器。 2使用指令向?qū)筛咚儆?jì)數(shù)器的應(yīng)用程序 【例6-13】要求高速計(jì)數(shù)器HSC0用模式0的計(jì)數(shù)來(lái)周期性地控制Q0.1和Q0.2(見圖6-42),計(jì)數(shù)脈沖的周期為1ms。 第1頁(yè)選中配置
29、“HC0”,計(jì)數(shù)模式為默認(rèn)的模式0。 第2頁(yè)采用默認(rèn)的計(jì)數(shù)器初始化子程序的符號(hào)名HSC_INIT。設(shè)置計(jì)數(shù)器的預(yù)設(shè)值PV為3000,當(dāng)前值CV為默認(rèn)的0,初始計(jì)數(shù)方向?yàn)榧佑?jì)數(shù)。 第3頁(yè)(中斷)設(shè)置當(dāng)前值等于預(yù)設(shè)值時(shí)產(chǎn)生中斷,使用默認(rèn)的中斷程序符號(hào)名COUNT_EQ。本例設(shè)置為3步。 第4頁(yè)(第1步)自動(dòng)選中“連接此事件到一個(gè)新的中斷程序”,采用默認(rèn)的新的中斷程序的名稱HSC0_STEP1。設(shè)置“新PV”為6000,不更新計(jì)數(shù)當(dāng)前值和計(jì)數(shù)方向。單擊上面的“下一步”按鈕。 第5頁(yè)(第2步)自動(dòng)選中“連接此事件到一個(gè)新的中斷程序”,采用默認(rèn)的新的INT的名稱HSC0_STEP2。設(shè)置新的計(jì)數(shù)方向?yàn)闇p
30、計(jì)數(shù),更新計(jì)數(shù)當(dāng)前值為3500,新的預(yù)設(shè)值為0。單擊上面的“下一步”按鈕。 第6頁(yè)(第3步)選中“連接此事件到一個(gè)新的中斷程序”,設(shè)置新INT的名稱為COUNT_EQ。預(yù)設(shè)值更新為3000,不更新計(jì)數(shù)當(dāng)前值,新的計(jì)數(shù)方向?yàn)榧佑?jì)數(shù)。實(shí)際上是開始下一周期的計(jì)數(shù)操作。單擊下面的“下一步”按鈕。 第7頁(yè)(組件)顯示將要自動(dòng)生成的初始化計(jì)數(shù)器子程序HSC_INIT和3個(gè)中斷程序。 程序中對(duì)Q0.1和Q0.2置位和復(fù)位的指令是人工添加的。 主程序在I0.1的上升沿時(shí)調(diào)用HSC_INIT。 6.7.3 高速脈沖輸出高速脈沖輸出 1PWM發(fā)生器 占空比是脈沖寬度與脈沖周期之比。 脈沖列(PTO)功能提供周期與
31、脈沖數(shù)目可以由用戶控制的占空比為50%的方波脈沖輸出。脈沖寬度調(diào)制 (PWM) 功能提供連續(xù)的、周期與脈沖寬度可以由用戶控制的輸出。 CPU用Q0.0和Q0.1輸出脈沖,CPU 224XP的最高脈沖頻率為100kHz。 2用向?qū)гO(shè)置脈寬調(diào)制的參數(shù) 用脈沖輸出向?qū)蒔WM指令PWMx_RUN,時(shí)間基準(zhǔn)為s。輸入?yún)?shù)RUN為ON時(shí)輸出脈沖。 6.8 數(shù)據(jù)塊應(yīng)用與字符串指令數(shù)據(jù)塊應(yīng)用與字符串指令6.8.1 數(shù)據(jù)塊概述數(shù)據(jù)塊概述 1在數(shù)據(jù)塊中對(duì)地址和數(shù)據(jù)賦值 數(shù)據(jù)塊用來(lái)給V存儲(chǔ)器的字節(jié)、字和雙字地址賦初始值。 數(shù)據(jù)塊的第一行必須包含明確的地址(包括符號(hào)地址),以后的行可以不包含明確的地址。在單地址值后面鍵入多個(gè)數(shù)據(jù)或鍵入只包含數(shù)據(jù)的行時(shí),由編輯器
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度虛擬現(xiàn)實(shí)產(chǎn)業(yè)投資民間擔(dān)保借款合同4篇
- 美團(tuán)騎手2025年度服務(wù)規(guī)范與績(jī)效考核合同3篇
- 二零二五年度寧波服務(wù)業(yè)勞動(dòng)合同示范文本4篇
- 2025個(gè)人獨(dú)資企業(yè)股權(quán)轉(zhuǎn)讓及企業(yè)運(yùn)營(yíng)支持合同2篇
- 2025年度個(gè)人對(duì)個(gè)人租車合同電子支付范本
- 二零二五年度不銹鋼護(hù)欄加工與運(yùn)輸一體化服務(wù)合同3篇
- 2025年度個(gè)人與個(gè)人間藝術(shù)品修復(fù)服務(wù)合同4篇
- 2025內(nèi)衣店加盟品牌授權(quán)及區(qū)域管理服務(wù)合同范本
- 二零二五年度大型公共建筑幕墻施工專項(xiàng)合同4篇
- 二零二五年度旅游演藝接待服務(wù)合同范本2篇
- 小王子-英文原版
- 給排水科學(xué)與工程基礎(chǔ)知識(shí)單選題100道及答案解析
- 新版中國(guó)食物成分表
- 2024年山東省青島市中考生物試題(含答案)
- 河道綜合治理工程技術(shù)投標(biāo)文件
- 專題24 短文填空 選詞填空 2024年中考英語(yǔ)真題分類匯編
- 再生障礙性貧血課件
- 產(chǎn)后抑郁癥的護(hù)理查房
- 2024年江蘇護(hù)理職業(yè)學(xué)院高職單招(英語(yǔ)/數(shù)學(xué)/語(yǔ)文)筆試歷年參考題庫(kù)含答案解析
- 電能質(zhì)量與安全課件
- 工程項(xiàng)目設(shè)計(jì)工作管理方案及設(shè)計(jì)優(yōu)化措施
評(píng)論
0/150
提交評(píng)論