可編程控制器原理及應(yīng)用(第2版)課件:特殊功能指令_第1頁
可編程控制器原理及應(yīng)用(第2版)課件:特殊功能指令_第2頁
可編程控制器原理及應(yīng)用(第2版)課件:特殊功能指令_第3頁
可編程控制器原理及應(yīng)用(第2版)課件:特殊功能指令_第4頁
可編程控制器原理及應(yīng)用(第2版)課件:特殊功能指令_第5頁
已閱讀5頁,還剩115頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

特殊功能指令中斷指令的功能應(yīng)用舉例及實訓(xùn)高速計數(shù)器指令、高速脈沖輸出指令功能及指令向?qū)У膽?yīng)用舉例及實訓(xùn)

PID指令的原理及PID控制功能的應(yīng)用及PID指令向?qū)У慕榻B時鐘指令及應(yīng)用舉例6.1中斷指令

6.1.1中斷源1.中斷源的類型中斷源即發(fā)出中斷請求的事件,又叫中斷事件。為了便于識別,系統(tǒng)給每個中斷源都分配一個編號,稱為中斷事件號。S7-200系列可編程控制器最多有34個中斷源,分為三大類:通信中斷、輸入/輸出中斷和時基中斷。(1)通信中斷在自由口通信模式下,用戶可通過編程來設(shè)置波特率、奇偶校驗和通信協(xié)議等參數(shù)。用戶通過編程控制通訊端口的事件為通信中斷。(2)I/O中斷I/O中斷包括外部輸入上升/下降沿中斷、高速計數(shù)器中斷和高速脈沖輸出中斷。S7-200用輸入(I0.0、I0.1、I0.2或I0.3)上升/下降沿產(chǎn)生中斷。高速計數(shù)器中斷指對高速計數(shù)器運行時產(chǎn)生的事件實時響應(yīng),包括當(dāng)前值等于預(yù)設(shè)值時產(chǎn)生的中斷,計數(shù)方向的改變時產(chǎn)生的中斷或計數(shù)器外部復(fù)位產(chǎn)生的中斷。脈沖輸出中斷是指預(yù)定數(shù)目脈沖輸出完成而產(chǎn)生的中斷。(3)時基中斷時基中斷包括定時中斷和定時器T32/T96中斷。定時中斷用于支持一個周期性的活動。周期時間從1毫秒至255毫秒,時基是1毫秒。使用定時中斷0,必須在SMB34中寫入周期時間;使用定時中斷1,必須在SMB35中寫入周期時間。將中斷程序連接在定時中斷事件上,若定時中斷被允許,則計時開始,每當(dāng)達(dá)到定時時間值,執(zhí)行中斷程序。定時中斷可以用來對模擬量輸入進(jìn)行采樣或定期執(zhí)行PID回路。定時器T32/T96中斷指允許對定時時間間隔產(chǎn)生中斷。這類中斷只能用時基為1ms的定時器T32/T96構(gòu)成。當(dāng)中斷被啟用后,當(dāng)前值等于預(yù)置值時,在S7-200執(zhí)行的正常1毫秒定時器更新的過程中,執(zhí)行連接的中斷程序。2.中斷優(yōu)先級和排對等候

優(yōu)先級是指多個中斷事件同時發(fā)出中斷請求時,CPU對中斷事件響應(yīng)的優(yōu)先次序。S7-200規(guī)定的中斷優(yōu)先由高到低依次是:通信中斷、I/O中斷和定時中斷。每類中斷中不同的中斷事件又有不同的優(yōu)先權(quán),如表6-2所示。一個程序中總共可有128個中斷。S7-200在各自的優(yōu)先級組內(nèi)按照先來先服務(wù)的原則為中斷提供服務(wù)。在任何時刻,只能執(zhí)行一個中斷程序。6.1.2中斷指令

LADSTLENIDISIATCHINT,EVNTDTCHEVNT操作數(shù)及數(shù)據(jù)類型無無INT:常量0-127EVNT:常量,INT/EVNT數(shù)據(jù)類型:字節(jié)EVNT:常量,數(shù)據(jù)類型:字節(jié)6.1.3中斷程序

1.中斷程序的概念中斷程序是為處理中斷事件而事先編好的程序。中斷程序不是由程序調(diào)用,而是在中斷事件發(fā)生時由操作系統(tǒng)調(diào)用。在中斷程序中不能改寫其他程序使用的存儲器,最好使用局部變量。中斷程序應(yīng)實現(xiàn)特定的任務(wù),應(yīng)“越短越好”,中斷程序由中斷程序號開始,以無條件返回指令(CRETI)結(jié)束。在中斷程序中禁止使用DISI、ENI、HDEF、LSCR和END指令。2.建立中斷程序的方法方法一:從“編輯”菜單→選擇插入(Insert)→中斷(Interrupt)。方法二:從指令樹,用鼠標(biāo)右鍵單擊“程序塊”圖標(biāo)并從彈出菜單→選擇插入(Insert)→中斷(Interrupt)。方法三:從“程序編輯器”窗口,從彈出菜單用鼠標(biāo)右鍵單擊插入(Insert)→中斷(Interrupt)。程序編輯器從先前的POU顯示更改為新中斷程序,在程序編輯器的底部會出現(xiàn)一個新標(biāo)記,代表新的中斷程序?!纠?-1】編寫由I0.1的上升沿產(chǎn)生的中斷事件的初始化程序。分析:查表6-2可知,I0.1上升沿產(chǎn)生的中斷事件號為2。所以在主程序中用ATCH指令將事件號2和中斷程序0連接起來,并全局開中斷。程序如圖6-1所示。網(wǎng)絡(luò)1LDSM0.1//首次掃描時ATCHINT_02//將INT_0和EVNT2連接ENI//并全局啟用中斷網(wǎng)絡(luò)2LDSM5.0//如果檢測到I/O錯誤DTCH2//禁用用于I0.1的上升沿中斷(本網(wǎng)絡(luò)為選項)網(wǎng)絡(luò)3LDSM5.0//當(dāng)SM5.0=1時DISI//禁用所有的中斷【例6-2】編程完成采樣工作,要求每10ms采樣一次分析:完成每10ms采樣一次,需用定時中斷,查表6-2可知,定時中斷0的中斷事件號為10。因此在主程序中將采樣周期(10ms)即定時中斷的時間間隔寫入定時中斷0的特殊存儲器SMB34,并將中斷事件10和INT-0連接,全局開中斷。在中斷程序0中,將模擬量輸入信號讀入,程序如圖6-2所示。LDI0.0MOVB10,SMB34//將采樣周期設(shè)為10毫秒ATCHINT_0,10//將事件10連接INT_0ENI//全局開中斷LDSM0.0MOVWAIW0,VW100//讀入模擬量AIW0【例6-3】利用定時中斷功能編制一個程序,實現(xiàn)如下功能:當(dāng)I0.0由OFF→ON,Q0.0亮1s,滅1s,如此循環(huán)反復(fù)直至I0.0由ON→OFF,Q0.0變?yōu)镺FF。主程序:網(wǎng)絡(luò)1LDI0.0EUATCHINT_0,21ENI網(wǎng)絡(luò)2LDNM0.0AI0.0TONT32,+1000中斷程序INT-0LDNQ0.0=Q0.0網(wǎng)絡(luò)3LDT32=M0.0網(wǎng)絡(luò)4LDI0.0EDDTCH21DISI6.1.5中斷程序編程實訓(xùn)

1.實訓(xùn)目的(1)熟悉中斷指令的使用方法。(2)掌握定時中斷設(shè)計程序的方法。2.實訓(xùn)內(nèi)容(1)利用T32定時中斷編寫程序,要求產(chǎn)生占空比為50%,周期為4s的的方波信號。(2)用定時中斷實現(xiàn)噴泉的模擬控制。3.參考程序(1)產(chǎn)生占空比為50%,周期為4s的的方波信號,主程序和中斷程序如圖所示(2)噴泉的模擬控制參考程序分析:程序中采用定時中斷0,其中斷號為10,定時中斷0的周期控制字SMB34中的定時時間設(shè)定值的范圍為1-255ms。噴泉模擬控制的移位時間為0.5s,大于定時中斷0的最大定時時間設(shè)定值255ms,所以將中斷的時間間隔設(shè)為100ms,這樣中斷執(zhí)行5次,其時間間隔為0.5s,在程序中用VB0來累計中斷的次數(shù),每執(zhí)行一次中斷,VB0在中斷程序中加1,當(dāng)VB0=5時,即時間間隔為0.5s,QB0移一位。6.2高速計數(shù)器與高速脈沖輸出

CPU22x系列最高計數(shù)頻率為30KHz,用于捕捉比CPU掃描速率更快的事件,并產(chǎn)生中斷,執(zhí)行中斷程序,完成預(yù)定的操作。高速計數(shù)器最多可設(shè)置12種不同的操作模式6.2.1占用輸入/輸出端子高速計數(shù)器使用的輸入端子HSC0I0.0,I0.1,I0.2HSC1I0.6,I0.7,I1.0,I1.1HSC2I1.2,I1.3,I1.4,I1.5HSC3I0.1HSC4I0.3,I0.4,I0.5HSC5I0.4各高速計數(shù)器不同的輸入端有專用的功能,如:時鐘脈沖端、方向控制端、復(fù)位端、起動端。6.2.2高速計數(shù)器的工作模式

1.高速計數(shù)器的計數(shù)方式(1)單路脈沖輸入的內(nèi)部方向控制加/減計數(shù)即只有一個脈沖輸入端,通過高速計數(shù)器的控制字節(jié)的第3位來控制作加計數(shù)或者減計數(shù)。該位=1,加計數(shù);該位=0,減計數(shù)。如圖6-6所示內(nèi)部方向控制的單路加/減計數(shù)。(2)單路脈沖輸入的外部方向控制加/減計數(shù)即有一個脈沖輸入端,有一個方向控制端,方向輸入信號等于1時,加計數(shù);方向輸入信號等于0時,減計數(shù)。如圖6-7所示外部方向控制的單路加/減計數(shù)。(3)兩路脈沖輸入的單相加/減計數(shù)。即有兩個脈沖輸入端,一個是加計數(shù)脈沖,一個是減計數(shù)脈沖,計數(shù)值為兩個輸入端脈沖的代數(shù)和(4)兩路脈沖輸入的雙相正交計數(shù)即有兩個脈沖輸入端,輸入的兩路脈沖A相、B相,相位互差90°(正交),A相超前B相90°時,加計數(shù);A相滯后B相90°時,減計數(shù)。在這種計數(shù)方式下,可選擇1x模式(單倍頻,一個時鐘脈沖計一個數(shù))和4x模式(四倍頻,一個時鐘脈沖計四個數(shù))。

兩路脈沖輸入的雙相正交計數(shù)4x模式2.高速計數(shù)器的工作模式

高速計數(shù)器有12種工作模式,模式0~模式2采用單路脈沖輸入的內(nèi)部方向控制加/減計數(shù);模式3~模式5采用單路脈沖輸入的外部方向控制加/減計數(shù);模式6~模式8采用兩路脈沖輸入的加/減計數(shù);模式9~模式11采用兩路脈沖輸入的雙相正交計數(shù)。S7-200CPU224有HSC0-HSC5六個高速計數(shù)器,每個高速計數(shù)器有多種不同的工作模式。每種高速計數(shù)器所擁有的工作模式和其占有的輸入端子的數(shù)目有關(guān)。HSC0和HSC4有模式0、1、3、4、6、7、9、10;HSC1和HSC2有模式0~模式11;HSC3和HSC5有模式只有模式0。HSC編號及其對應(yīng)的輸入端子HSC模式功能及說明占用的輸入端子及其功能HSC0I0.0I0.1I0.2×HSC4I0.3I0.4I0.5×HSC1I0.6I0.7I1.0I1.1HSC2I1.2I1.3I1.4I1.5HSC3I0.1×××HSC5I0.4×××0單路脈沖輸入的內(nèi)部方向控制加/減計數(shù)。控制字SM37.3=0,減計數(shù);SM37.3=1,加計數(shù)。脈沖輸入端×××1×復(fù)位端×2×復(fù)位端起動3單路脈沖輸入的外部方向控制加/減計數(shù)。方向控制端=0,減計數(shù);方向控制端=1,加計數(shù)。脈沖輸入端方向控制端××4復(fù)位端×5復(fù)位端起動6兩路脈沖輸入的單相加/減計數(shù)。加計數(shù)有脈沖輸入,加計數(shù);減計數(shù)端脈沖輸入,減計數(shù)。加計數(shù)脈沖輸入端減計數(shù)脈沖輸入端××7復(fù)位端×8復(fù)位端起動9兩路脈沖輸入的雙相正交計數(shù)。A相脈沖超前B相脈沖,加計數(shù);A相脈沖滯后B相脈沖,減計數(shù)。A相脈沖輸入端B相脈沖輸入端××10復(fù)位端×11復(fù)位端起動6.2.3高速計數(shù)器的控制字和狀態(tài)字

1.控制字節(jié)定義了計數(shù)器和工作模式之后,還要設(shè)置高速計數(shù)器的有關(guān)控制字節(jié)。每個高速計數(shù)器均有一個控制字節(jié),它決定了計數(shù)器的計數(shù)允許或禁用,方向控制(僅限模式0、1和2)或?qū)λ衅渌J降某跏蓟嫈?shù)方向,裝入當(dāng)前值和預(yù)置值。2.狀態(tài)字節(jié)每個高速計數(shù)器都有一個狀態(tài)字節(jié),狀態(tài)位表示當(dāng)前計數(shù)方向以及當(dāng)前值是否大于或等于預(yù)置值。狀態(tài)字節(jié)的0-4位不用。監(jiān)控高速計數(shù)器狀態(tài)的目的是使外部事件產(chǎn)生中斷,以完成重要的操作。表HSC的控制字節(jié)HSC0HSC1HSC2HSC3HSC4HSC5說明SM37.0SM47.0SM57.0SM147.0復(fù)位有效電平控制:0=復(fù)位信號高電平有效;1=低電平有效SM47.1SM57.1起動有效電平控制:0=起動信號高電平有效;1=低電平有效SM37.2.SM47.2SM57.2SM147.2正交計數(shù)器計數(shù)速率選擇:0=4×計數(shù)速率;1=1×計數(shù)速率SM37.3SM47.3SM57.3SM137.3SM147.3SM157.3計數(shù)方向控制位:0=減計數(shù)1=加計數(shù)SM37.4SM47.4SM57.4SM137.4SM147.4SM157.4向HSC寫入計數(shù)方向:0=無更新1=更新計數(shù)方向SM37.5SM47.5SM57.5SM137.5SM147.5SM157.5向HSC寫入新預(yù)置值:0=無更新1=更新預(yù)置值SM37.6SM47.6SM57.6SM137.6SM147.6SM157.6向HSC寫入新當(dāng)前值:0=無更新1=更新當(dāng)前值SM37.7SM47.7SM57.7SM137.7SM147.7SM157.7HSC允許:0=禁用HSC1=啟用HSC表

高速計數(shù)器狀態(tài)字節(jié)的狀態(tài)位HSC0HSC1HSC2HSC3HSC4HSC5說明SM36.5SM46.5SM56.5SM136.5SM146.5SM156.5當(dāng)前計數(shù)方向狀態(tài)位:0=減計數(shù);1=加計數(shù)SM36.6SM46.6SM56.6SM136.6SM146.6SM156.6當(dāng)前值等于預(yù)設(shè)值狀態(tài)位:0=不相等;1=等于SM36.7SM46.7SM56.7SM136.7SM146.7SM156.7當(dāng)前值大于預(yù)設(shè)值狀態(tài)位:0=小于或等于;1=大于6.2.4高速計數(shù)器指令及舉例

1.高速計數(shù)器指令(1)高速計數(shù)器定義指令HDEF。指令指定高速計數(shù)器(HSCx)的工作模式。工作模式的選擇即選擇了高速計數(shù)器的輸入脈沖、計數(shù)方向、復(fù)位和起動功能。每個高速計數(shù)器只能用一條“高速計數(shù)器定義”指令。(2)高速計數(shù)器指令HSC。根據(jù)高速計數(shù)器控制位的狀態(tài)和按照HDEF指令指定的工作模式,控制高速計數(shù)器。參數(shù)N指定高速計數(shù)器的號碼LADSTLHDEFHSC,MODEHSCN功能說明高速計數(shù)器定義指令HDEF高速計數(shù)器指令HSC操作數(shù)HSC:高速計數(shù)器的編號,為常量(0~5)數(shù)據(jù)類型:字節(jié)MODE工作模式,為常量(0~11)數(shù)據(jù)類型:字節(jié)N:高速計數(shù)器的編號,為常量(0~5)數(shù)據(jù)類型:字2.高速計數(shù)器指令的使用(1)每個高速計數(shù)器都有一個32位當(dāng)前值和一個32位預(yù)置值,當(dāng)前值和預(yù)設(shè)值均為帶符號的整數(shù)值。當(dāng)前值和預(yù)置值占用的特殊內(nèi)部標(biāo)志位存儲區(qū)如表所示。要裝入的數(shù)值HSC0HSC1HSC2HSC3HSC4HSC5新的當(dāng)前值SMD38SMD48SMD58SMD138SMD148SMD158新的預(yù)置值SMD42SMD52SMD62SMD142SMD152SMD162要設(shè)置高速計數(shù)器的新當(dāng)前值和新預(yù)置值,必須設(shè)置控制字節(jié),令其第五位和第六位為1,允許更新預(yù)置值和當(dāng)前值,新當(dāng)前值和新預(yù)置值寫入特殊內(nèi)部標(biāo)志位存儲區(qū)。然后執(zhí)行HSC指令,將新數(shù)值傳輸?shù)礁咚儆嫈?shù)器。(2)執(zhí)行HDEF指令之前,必須將高速計數(shù)器控制字節(jié)的位設(shè)置成需要的狀態(tài),否則將采用默認(rèn)設(shè)置。默認(rèn)設(shè)置為:復(fù)位和起動輸入高電平有效,正交計數(shù)速率選擇4×模式。執(zhí)行HDEF指令后,就不能再改變計數(shù)器的設(shè)置,除非CPU進(jìn)入停止模式。(3)執(zhí)行HSC指令時,CPU檢查控制字節(jié)和有關(guān)的當(dāng)前值和預(yù)置值。2.高速計數(shù)器指令的使用3.高速計數(shù)器指令的初始化步驟(1)用首次掃描時接通一個掃描周期的特殊內(nèi)部存儲器SM0.1去調(diào)用一個子程序,完成初始化操作。因為采用了子程序,在隨后的掃描中,不必再調(diào)用這個子程序,以減少掃描時間,使程序結(jié)構(gòu)更好。(2)在初始化的子程序中,根據(jù)希望的控制設(shè)置控制字(SMB37、SMB47、SMB57、SMB137、SMB147、SMB157),如設(shè)置SMB47=16#F8,則為:允許計數(shù),寫入新當(dāng)前值,寫入新預(yù)置值,更新計數(shù)方向為加計數(shù),若為正交計數(shù)設(shè)為4×,復(fù)位和起動設(shè)置為高電平有效。(3)執(zhí)行HDEF指令,設(shè)置HSC的編號(0-5),設(shè)置工作模式(0-11)。如HSC的編號設(shè)置為1,工作模式輸入設(shè)置為11,則為既有復(fù)位又有起動的正交計數(shù)工作模式。(4)用新的當(dāng)前值寫入32位當(dāng)前值寄存器(SMD38,SMD48,SMD58,SMD138,SMD148,SMD158)。如寫入0,則清除當(dāng)前值,用指令MOVD0,SMD48實現(xiàn)。(5)用新的預(yù)置值寫入32位預(yù)置值寄存器(SMD42,SMD52,SMD62,SMD142,SMD152,SMD162)。如執(zhí)行指令MOVD1000,SMD52,則設(shè)置預(yù)置值為1000。若寫入預(yù)置值為16#00,則高速計數(shù)器處于不工作狀態(tài)。(6)為了捕捉當(dāng)前值等于預(yù)置值的事件,將條件CV=PV中斷事件(事件13)與一個中斷程序相聯(lián)系。(7)為了捕捉計數(shù)方向的改變,將方向改變的中斷事件(事件14)與一個中斷程序相聯(lián)系。(8)為了捕捉外部復(fù)位,將外部復(fù)位中斷事件(事件15)與一個中斷程序相聯(lián)系。(9)執(zhí)行全局中斷允許指令(ENI)允許HSC中斷。(10)執(zhí)行HSC指令使S7-200對高速計數(shù)器進(jìn)行編程。(11)結(jié)束子程序。3.高速計數(shù)器指令的初始化步驟【例】高速計數(shù)器的應(yīng)用舉例。某設(shè)備采用位置編碼器作為檢測元件,需要高速計數(shù)器進(jìn)行位置值的計數(shù),其要求如下:計數(shù)信號為A、B兩相相位差90°的脈沖輸入;使用外部計數(shù)器復(fù)位與啟動信號,高電平有效;編碼器每轉(zhuǎn)的脈沖數(shù)為2500,在PLC內(nèi)部進(jìn)行4倍頻,計數(shù)開始值為“0”,當(dāng)轉(zhuǎn)動1轉(zhuǎn)后,需要清除計數(shù)值進(jìn)行重新計數(shù)。(1)主程序。如圖6-11所示,用首次掃描時接通一個掃描周期的特殊內(nèi)部存儲器SM0.1去調(diào)用一個子程序,完成初始化操作。LDSM0.1CALLSBR_0(2)初始化的子程序。如圖6-12所示,定義HSC1的工作模式為模式11(兩路脈沖輸入的雙相正交計數(shù),具有復(fù)位和起動輸入功能),設(shè)置SMB47=16#F8(允許計數(shù),更新新當(dāng)前值,更新新預(yù)置值,更新計數(shù)方向為加計數(shù),若為正交計數(shù)設(shè)為4×,復(fù)位和起動設(shè)置為高電平有效)。HSC1的當(dāng)前值SMD48清零,預(yù)置值SMD52=10000,當(dāng)前值=預(yù)設(shè)值,產(chǎn)生中斷(中斷事件13),中斷事件13連接中斷程序INT-0。子程序0(配置HSC1)LDSM0.1//首次掃描時MOVB16#F8SMB47//設(shè)置HSC1控制字

HDEF111//將HSC1設(shè)置為模式11MOVD+0SMD48//HSC1的當(dāng)前值清0MOVD+50SMD52//將HSC1預(yù)設(shè)值設(shè)為50ATCHINT_013//CV=PV(中斷事件13),調(diào)用中斷程序INT_0ENI//允許全局中斷HSC1//執(zhí)行HSC1指令圖6-12例6-4子程序LDSM0.0MOVD+0,SMD48//HSC1的當(dāng)前值清0MOVB16#C0,SMB47//只寫入一個新當(dāng)前值,預(yù)置值不變,計數(shù)方向不變,HSC1允許計數(shù)HSC1//執(zhí)行HSC1指令6.2.5高速計數(shù)器指令向?qū)У膽?yīng)用

(1)打開STEP7-Micro/WIN軟件,選擇主菜單“工具”

“指令向?qū)А边M(jìn)入向?qū)Ь幊添撁?。如圖所示。高速計數(shù)器指令向?qū)Ь幊添撁妫?)選擇“HSC”

點擊“下一步”,出現(xiàn)對話框如圖6-15所示。選擇計數(shù)器的編號和計數(shù)模式。在本例中選擇“HSC1”和計數(shù)模式“11”,選擇后點擊“下一步”。計數(shù)器編號和計數(shù)模式選擇頁面(3)在高速計數(shù)器初始化設(shè)定頁面中分別輸入高速計數(shù)器初始化子程序的符號名(默認(rèn)的符號名為“HSC-INIT”);高速計數(shù)器的預(yù)置值(本例輸入為10000);計數(shù)器當(dāng)前值的初始值(本例輸入“0”);初始計數(shù)方向(本例中選擇“增”);復(fù)位信號的極性(本例選擇高電平有效);啟動信號的極性(本例選擇高電平有效);計數(shù)器的倍率選擇(本例選擇4倍頻“4X”)。完成后點擊“下一步”。高速計數(shù)器初始化設(shè)定頁面(4)在完成高速計數(shù)器的初始化設(shè)定后,出現(xiàn)高速計數(shù)器中斷設(shè)置的頁面如圖所示。本例中為當(dāng)前值等于預(yù)置值時產(chǎn)生中斷,并輸入中斷程序的符號名(默認(rèn)的為COUNT-EQ)。在“您希望為HC1編程多少個步驟?”欄,輸入需要中斷的步數(shù),本例只有當(dāng)前值清零1步,選擇“1”。完成后點擊“下一步”。

高速計數(shù)器中斷設(shè)置的頁面(5)高速計數(shù)器中斷處理方式設(shè)定頁面如圖6-18所示。在本例中當(dāng)CV=PV時需要將當(dāng)前值清理,所以選擇“更新當(dāng)前值”選項,并在“新CV”欄內(nèi)輸入新的當(dāng)前值“0”。完成后點擊“下一步”。高速計數(shù)器中斷處理方式設(shè)定頁面(6)高速計數(shù)器中斷處理方式設(shè)定完成后,出現(xiàn)高速計數(shù)器編程確認(rèn)頁面,如圖所示。該頁面顯示了由向?qū)Ь幊掏瓿傻亩绦蚣笆褂谜f明,選擇“完成”結(jié)束編程。高速計數(shù)器編程確認(rèn)頁面(7)向?qū)褂猛瓿珊笤诔绦蚓庉嬈黜撁鎯?nèi)自動增加了名稱為“HSC-INIT”子程序和“COUNT-EQ”中斷程序。如圖所示。分別點擊“HSC-INIT”子程序和“COUNT-EQ”中斷程序標(biāo)簽,可見其程序.在程序編輯頁面中增加了“HSC-INIT”子程序和“COUNT-EQ”中斷程序標(biāo)簽6.2.6高速脈沖輸出

1.概念及作用輸出頻率可達(dá)20KHz,用于PTO(脈沖串輸出,輸出一個頻率可調(diào),占空比為50%的脈沖)和PWM(脈寬調(diào)制輸出,輸出占空比可調(diào)的脈沖)。PTO(脈沖串輸出)多用于帶有位置控制功能的步進(jìn)驅(qū)動器或伺服驅(qū)動器,通過輸出脈沖的個數(shù),作為位置給定值的輸入,以實現(xiàn)定位控制功能。通過改變定位脈沖的輸出頻率,可以改變運動的速度。PWM(脈寬調(diào)制輸出)用于直接驅(qū)動調(diào)速系統(tǒng)或運動控制系統(tǒng)的輸出級,控制逆變主回路。2.高速脈沖輸出占用的輸出端子S7-200晶體管輸出型的PLC(如CPU224DC/DC/DC)有PTO、PWM兩臺高速脈沖發(fā)生器。一臺發(fā)生器指定給數(shù)字輸出點Q0.0,一臺發(fā)生器則指定給數(shù)字輸出點Q0.1。3.脈沖輸出(PLS)指令脈沖輸出(PLS)指令功能為:使能有效時,檢查用于脈沖輸出(Q0.0或Q0.1)的特殊存儲器位(SM),然后執(zhí)行特殊存儲器位定義的脈沖操作。LADSTL操作數(shù)及數(shù)據(jù)類型PLSQQ:常量(0或1)數(shù)據(jù)類型:字2.用于脈沖輸出(Q0.0或Q0.1)的特殊存儲器(1)控制字節(jié)和參數(shù)的特殊存儲器。每個PTO/PWM發(fā)生器都有:一個控制字節(jié)(8位)、一個脈沖計數(shù)值(無符號的32位數(shù)值)一個周期時間和脈寬值(無符號的16位數(shù)值)。這些值都放在特定的特殊存儲區(qū)(SM),如表6-12所示。執(zhí)行PLS指令時,S7-200讀這些特殊存儲器位(SM),然后執(zhí)行特殊存儲器位定義的脈沖操作,即對相應(yīng)的PTO/PWM發(fā)生器進(jìn)行編程。表

脈沖輸出(Q0.0或Q0.1)的特殊存儲器Q0.0和Q0.1對PTO/PWM輸出的控制字節(jié)Q0.0Q0.1說明SM67.0SM77.0PTO/PWM刷新周期值 0:不刷新; 1:刷新SM67.1SM77.1PWM刷新脈沖寬度值 0:不刷新; 1:刷新SM67.2SM77.2PTO刷新脈沖計數(shù)值 0:不刷新; 1:刷新SM67.3SM77.3PTO/PWM時基選擇 0:1μs;1:1msSM67.4SM77.4PWM更新方法0:異步更新;1:同步更新SM67.5SM77.5PTO操作0:單段操作;1:多段操作SM67.6SM77.6PTO/PWM模式選擇0:選擇PTO1:選擇PWMSM67.7SM77.7PTO/PWM允許 0:禁止;1:允許Q0.0和Q0.1對PTO/PWM輸出的周期值Q0.0Q0.1說明SMW68SMW78 PTO/PWM周期時間值(范圍:2至65535)Q0.0和Q0.1對PTO/PWM輸出的脈寬值Q0.0Q0.1說明SMW70SMW80PWM脈沖寬度值(范圍:0至65535)Q0.0和Q0.1對PTO脈沖輸出的計數(shù)值Q0.0Q0.1說明SMD72SMD82PTO脈沖計數(shù)值(范圍:1至4294967295)Q0.0和Q0.1對PTO脈沖輸出的多段操作Q0.0Q0.1說明SMB166SMB176段號(僅用于多段PTO操作),多段流水線PTO運行中的段的編號SMW168SMW178包絡(luò)表起始位置,放包絡(luò)表的首地址Q0.0和Q0.1的狀態(tài)位Q0.0Q0.1說明SM66.4SM76.4PTO包絡(luò)由于增量計算錯誤異常終止0:無錯; 1:異常終止SM66.5SM76.5PTO包絡(luò)由于用戶命令異常終止

0:無錯; 1:異常終止SM66.6SM76.6PTO流水線溢出 0:無溢出;1:溢出SM66.7SM76.7PTO空閑(用來指示脈沖序列輸出結(jié)束)

0:運行中;1:PTO空閑(2)狀態(tài)字節(jié)的特殊存儲器。程序運行時,根據(jù)運行狀態(tài)使某些位自動置位??梢酝ㄟ^程序來讀取相關(guān)位的狀態(tài),用此狀態(tài)作為判斷條件,實現(xiàn)相應(yīng)的操作?!纠吭O(shè)置控制字節(jié)。用Q0.0作為高速脈沖輸出,對應(yīng)的控制字節(jié)為SMB67,如果希望定義的輸出脈沖操作為PTO操作,允許脈沖輸出,多段PTO脈沖串輸出,時基為ms,設(shè)定周期值和脈沖數(shù),則應(yīng)向SMB67寫入2#10101101,即16#AD。通過修改脈沖輸出(Q0.0或Q0.1)的特殊存儲器SM區(qū)(包括控制字節(jié)),既更改PTO或PWM的輸出波形,然后再執(zhí)行PLS指令。注意:所有控制位、周期、脈沖寬度和脈沖計數(shù)值的默認(rèn)值均為零。向控制字節(jié)(SM67.7或SM77.7)的PTO/PWM允許位寫入零,然后執(zhí)行PLS指令,將禁止PTO或PWM波形的生成。3.對輸出的影響PTO/PWM生成器和輸出映像寄存器共用Q0.0和Q0.1。在Q0.0或Q0.1使用PTO或PWM功能時,PTO/PWM發(fā)生器控制輸出,并禁止輸出點的正常使用,輸出波形不受輸出映像寄存器狀態(tài)、輸出強(qiáng)制、執(zhí)行立即輸出指令的影響;在Q0.0或Q0.1位置沒有使用PTO或PWM功能時,輸出映像寄存器控制輸出,所以輸出映像寄存器決定輸出波形的初始和結(jié)束狀態(tài),即決定脈沖輸出波形從高電平或低電平開始和結(jié)束,使輸出波形有短暫的不連續(xù),為了減小這種不連續(xù)有害影響,應(yīng)注意:可在起用PTO或PWM操作之前,將用于Q0.0和Q0.1的輸出映像寄存器設(shè)為0。4.PTO的使用PTO是可以指定脈沖數(shù)和周期的占空比為50%的高速脈沖串的輸出。狀態(tài)字節(jié)中的最高位(空閑位)用來指示脈沖串輸出是否完成??稍诿}沖串完成時起動中斷程序,若使用多段操作,則在包絡(luò)表完成時起動中斷程序。(1)周期和脈沖數(shù)。周期范圍從50微秒至65,535微秒或從2毫秒至65,535毫秒,為16位無符號數(shù),時基有μs和ms兩種,通過控制字節(jié)的第三位選擇。注意:如果周期小于2個時間單位,則周期的默認(rèn)值為2個時間單位。周期設(shè)定奇數(shù)微秒或毫秒(例如75毫秒),會引起波形失真。脈沖計數(shù)范圍從1至4,294,967,295,為32位無符號數(shù),如設(shè)定脈沖計數(shù)為0,則系統(tǒng)默認(rèn)脈沖計數(shù)值為1。(2)PTO的種類及特點。PTO功能可輸出多個脈沖串,現(xiàn)用脈沖串輸出完成時,新的脈沖串輸出立即開始。這樣就保證了輸出脈沖串的連續(xù)性。PTO功能允許多個脈沖串排隊,從而形成流水線。流水線分為兩種:單段流水線和多段流水線。單段流水線是指:流水線中每次只能存儲一個脈沖串的控制參數(shù),初始PTO段一旦起動,必須按照對第二個波形的要求立即刷新SM,并再次執(zhí)行PLS指令,第一個脈沖串完成,第二個波形輸出立即開始,重復(fù)此這一步驟可以實現(xiàn)多個脈沖串的輸出。單段流水線中的各段脈沖串可以采用不同的時間基準(zhǔn),但有可能造脈沖串之間的不平穩(wěn)過渡。輸出多個高速脈沖時,編程復(fù)雜。多段流水線是指在變量存儲區(qū)V建立一個包絡(luò)表。包絡(luò)表存放每個脈沖串的參數(shù),執(zhí)行PLS指令時,S7–200PLC自動按包絡(luò)表中的順序及參數(shù)進(jìn)行脈沖串輸出。包絡(luò)表中每段脈沖串的參數(shù)占用8個字節(jié),由一個16位周期值(2字節(jié))、一個16位周期增量值Δ(2字節(jié))和一個32位脈沖計數(shù)值(4字節(jié))組成。包絡(luò)表的格式如表6所示。表

包絡(luò)表的格式從包絡(luò)表起始地址的字節(jié)偏移段說明VBn段數(shù)(1~255);數(shù)值0產(chǎn)生非致命錯誤,無PTO輸出VBn+1段1初始周期(2至65535個時基單位)VBn+3每個脈沖的周期增量Δ(符號整數(shù):-32768至32767個時基單位)VBn+5脈沖數(shù)(1至4294967295)VBn+9段2初始周期(2至65535個時基單位)VBn+11每個脈沖的周期增量Δ(符號整數(shù):-32768至32767個時基單位)VBn+13脈沖數(shù)(1至4294967295)VBn+17段3初始周期(2至65535個時基單位)VBn+19每個脈沖的周期增量值Δ(符號整數(shù):-32768至32767個時基單位)VBn+21脈沖數(shù)(1至4294967295)注意:周期增量值Δ為整數(shù)微秒或毫秒多段流水線的特點是編程簡單,能夠通過指定脈沖的數(shù)量自動增加或減少周期,周期增量值Δ為正值會增加周期,周期增量值Δ為負(fù)值會減少周期,若Δ為零,則周期不變。在包絡(luò)表中的所有的脈沖串必須采用同一時基,在多段流水線執(zhí)行時,包絡(luò)表的各段參數(shù)不能改變。多段流水線常用于步進(jìn)電機(jī)的控制?!纠扛鶕?jù)控制要求列出PTO包絡(luò)表。步進(jìn)電機(jī)的控制要求如圖所示。從A點到B點為加速過程,從B到C為恒速運行,從C到D為減速過程。流水線可以分為3段,需建立3段脈沖的包絡(luò)表。起始和終止脈沖頻率為2kHz,最大脈沖頻率為10kHz,所以起始和終止周期為500μs,與最大頻率的周期為100μs。1段:加速運行,應(yīng)在約200個脈沖時達(dá)到最大脈沖頻率;2段:恒速運行,約(4000-200-200)=3600個脈沖;3段:減速運行,應(yīng)在約200個脈沖時完成。某一段每個脈沖周期增量值Δ用以下式確定:周期增量值Δ=(該段結(jié)束時的周期時間-該段初始的周期時間)/該段的脈沖數(shù)用該式,計算出1段的周期增量值Δ為-2μs,2段的周期增量值Δ為0,3段的周期增量值Δ為2μs。假設(shè)包絡(luò)表位于從VB200開始的V存儲區(qū)中,包絡(luò)表如下。V變量存儲器地址段號參數(shù)值說明VB2003段數(shù)VB201段1500μs初始周期VB203-2μs每個脈沖的周期增量ΔVB205200脈沖數(shù)VB209段2100μs初始周期VB2110每個脈沖的周期增量ΔVB2133600脈沖數(shù)VB217段3100μs初始周期VB2192μs每個脈沖的周期增量ΔVB221200脈沖數(shù)(3)多段流水線PTO初始化和操作步驟。用一個子程序?qū)崿F(xiàn)PTO初始化,首次掃描(SM0.1)時從主程序調(diào)用初始化子程序,執(zhí)行初始化操作。初始化操作步驟如下:1)首次掃描(SM0.1)時將輸出Q0.0或Q0.1復(fù)位(置0),并調(diào)用完成初始化操作的子程序。2)在初始化子程序中,根據(jù)控制要求設(shè)置控制字并寫入SMB67或SMB77特殊存儲器。如寫入16#A0(選擇微秒遞增)或16#A8(選擇毫秒遞增),兩個數(shù)值表示允許PTO功能、選擇PTO操作、選擇多段操作、以及選擇時基(微秒或毫秒)。3)將包絡(luò)表的首地址(16位)寫入在SMW168(或SMW178)。4)在變量存儲器V中,寫入包絡(luò)表的各參數(shù)值。一定要在包絡(luò)表的起始字節(jié)中寫入段數(shù)。在在變量存儲器V中建立包絡(luò)表的過程也可以在一個子程序中完成,在此只須調(diào)用設(shè)置包絡(luò)表的子程序。5)設(shè)置中斷事件并全局開中斷。如果想在PTO完成后,立即執(zhí)行相關(guān)功能,則須設(shè)置中斷,將脈沖串完成事件(中斷事件號19)連接一中斷程序。6)執(zhí)行PLS指令,使S7-200為PTO/PWM發(fā)生器編程,高速脈沖串由Q0.0或Q0.1輸出。7)退出子程序?!纠縋TO指令應(yīng)用實例。編程實現(xiàn)例6-6中的步進(jìn)電機(jī)的控制。分析:編程前首先選擇高速脈沖發(fā)生器為Q0.0,并確定PTO為3段流水線。設(shè)置控制字節(jié)SMB67為16#A0表示允許PTO功能、選擇PTO操作、選擇多段操作、以及選擇時基為微秒,不允許更新周期和脈沖數(shù)。建立3段的包絡(luò)表,并將包絡(luò)表的首地址裝入SMW168。PTO完成調(diào)用中斷程序,使Q1.0接通。PTO完成的中斷事件號為19。用中斷調(diào)用指令A(yù)TCH將中斷事件19與中斷程序INT-0連接,并全局開中斷。執(zhí)行PLS指令,退出子程序。本例題的主程序,初始化子程序,和中斷程序如圖所示。主程序LDSM0.1//首次掃描時,將Q0.0復(fù)位RQ0.01CALLSBR_0//調(diào)用子程序0子程序0//寫入PTO包絡(luò)表網(wǎng)絡(luò)1LDSM0.0MOVB3VB200//將包絡(luò)表段數(shù)設(shè)為3

//段1:MOVW+500VW201//段1的初始周期設(shè)為500μsMOVW-2VW203//段1的Δ設(shè)為-2μsMOVD+200VD205//段1的脈沖數(shù)設(shè)為200

//段2:MOVW+100VW209//段2的初始周期設(shè)為100μsMOVW+0VW211//段2的Δ設(shè)為0μsMOVD+3600VD213//段2中的脈沖數(shù)設(shè)為3600//段3:MOVW+100VW217//段3的初始周期設(shè)為100μsMOVW+1VW219//段3的Δ設(shè)為1μsMOVD+200VD221//段3中的脈沖數(shù)設(shè)為200網(wǎng)絡(luò)2LDSM0.0MOVB16#A0,SMB67//設(shè)置控制字節(jié)MOVW+200,SMW168//將包絡(luò)表起始

地址指定為V200ATCHINT_0,19//設(shè)置中斷ENI//全局開中斷PLS0//起動PTO,由Q0.0輸出中斷程序0LDSM0.0//PTO完成時,輸出Q1.0=Q1.05.PWM的使用

PWM是脈寬可調(diào)的高速脈沖輸出,通過控制脈寬和脈沖的周期,實現(xiàn)控制任務(wù)。(1)周期和脈寬。周期和脈寬時基為:微秒或毫秒,均為16位無符號數(shù)。周期的范圍從50~65,535微秒,或從2~65,535毫秒。若周期小于兩個時基,則系統(tǒng)默認(rèn)為兩個時基。脈寬范圍從0~65,535微秒或從0~65,535毫秒。若脈寬大于等于周期,占空比等于100%,輸出連續(xù)接通。若脈寬等于0,占空比為0%,則輸出斷開。(2)更新方式。有兩種改變PWM波形的方法:同步更新和異步更新。同步更新:不需改變時基時,可以用同步更新。執(zhí)行同步更新時,波形的變化發(fā)生在周期的邊緣,形成平滑轉(zhuǎn)換。異步更新:需要改變PWM的時基時,則應(yīng)使用異步更新。異步更新使高速脈沖輸出功能被瞬時禁用,與PWM波形不同步。這樣可能造成控制設(shè)備震動。盡量使用同步更新。(3)PWM初始化和操作步驟1)用首次掃描位(SM0.1)使輸出位復(fù)位為0,并調(diào)用初始化子程序。這樣可減少掃描時間,程序結(jié)構(gòu)更合理。2)在初始化子程序中設(shè)置控制字節(jié)。如將16#D3(時基微秒)或16#DB(時基毫秒)寫入SMB67或SMB77,控制功能為:允許PTO/PWM功能、選擇PWM操作、設(shè)置更新脈沖寬度和周期數(shù)值、以及選擇時基(微秒或毫秒)。3)在SMW68或SMW78中寫入一個字長的周期值。4)在SMW70或SMW80中寫入一個字長的脈寬值。5)執(zhí)行PLS指令,使S7-200為PWM發(fā)生器編程,并由Q0.0或Q0.1輸出。6)可為下一輸出脈沖預(yù)設(shè)控制字。在SMB67或SMB77中寫入16#D2(微秒)或16#DA(毫秒)控制字節(jié)中將禁止改變周期值,允許改變脈寬。以后只要裝入一個新的脈寬值,不用改變控制字節(jié),直接執(zhí)行PLS指令就可改變脈寬值。7)退出子程序?!纠縋WM應(yīng)用舉例。設(shè)計程序,從PLC的Q0.0輸出高速脈沖。該串脈沖脈寬的初始值為0.1s,周期固定為1s,其脈寬每周期遞增0.1s,當(dāng)脈寬達(dá)到設(shè)定的0.9s時,脈寬改為每周期遞減0.1s,直到脈寬減為0。以上過程重復(fù)執(zhí)行。分析:因為每個周期都有操作,所以須把Q0.0接到I0.0,采用輸入中斷的方法完成控制任務(wù),并且編寫兩個中斷程序,一個中斷程序?qū)崿F(xiàn)脈寬遞增,一個中斷程序?qū)崿F(xiàn)脈寬遞減,并設(shè)置標(biāo)志位,在初始化操作時使其置位,執(zhí)行脈寬遞增中斷程序,當(dāng)脈寬達(dá)到0.9s時,使其復(fù)位,執(zhí)行脈寬遞減中斷程序。在子程序中完成PWM的初始化操作,選用輸出端為Q0.0,控制字節(jié)為SMB67,控制字節(jié)設(shè)定為16#DA(允許PWM輸出,Q0.0為PWM方式,同步更新,時基為ms,允許更新脈寬,不允許更新周期)。程序如圖所示。6.2.7高速脈沖輸出指令向?qū)У膽?yīng)用

高速脈沖輸出的程序可以用編程軟件的指令向?qū)?。如前例所示用步進(jìn)電機(jī)實現(xiàn)的位置控制,為多速定位,包絡(luò)表的起始地址為VB200,脈沖輸出形式為PTO,脈沖輸出端為Q0.0。用指令向?qū)У木幊滩襟E如下:(1)打開STEP7-Mirco/WIN的程序編輯的頁面,選擇“工具”菜單

“位置控制向?qū)А保鐖D所示。位置控制向?qū)В?)選擇“配置S7-200PLC內(nèi)置PTO/PWM操作”,并點擊“下一步”,如圖所示。(3)指定脈沖發(fā)生器的輸出地址,如圖6-27所示。本例選擇Q0.0。并點擊“下一步”(4)在圖6-28所示頁面選擇PTO或PWM選擇欄中選擇“線性脈沖串輸出(PTO)”輸出形式。并點擊“下一步”。(5)在圖中所示對話框中輸入最高電機(jī)速度(MAX-SPEED)和啟動/停止的速度(SS-SPEED)。并點擊“下一步”。MAX_SPEED:在電機(jī)扭矩能力范圍內(nèi)的最佳工作速度。驅(qū)動負(fù)載所需的轉(zhuǎn)矩由摩擦力、慣性和加速/減速時間決定。SS_SPEED:在電機(jī)的能力范圍內(nèi)輸入一個數(shù)值,以低速驅(qū)動負(fù)載。如果SS_SPEED數(shù)值過低,電機(jī)和負(fù)載可能會在運動開始和結(jié)束時顫動或跳動。如果SS_SPEED數(shù)值過高,電機(jī)可能在啟動時丟失脈沖,并且在嘗試停止時負(fù)載可能過度驅(qū)動電機(jī)。并且負(fù)載在試圖停止時會使電機(jī)超速。通常,SS-SPEED值是(MAX-SPEED)值的5%~15%。MIN-SPEED值由計算得出,用戶不能輸入。(6)在圖6-30中以毫秒為單位指定設(shè)定電機(jī)的加速、減速時間。加速時間(ACCEL_TIME):電機(jī)從SS_SPEED加速至MAX_SPEED所需要的時間。減速時間(DECEL_TIME):電機(jī)從MAX_SPEED減速至SS_SPEED所需要的時間。加速時間和減速時間的默認(rèn)設(shè)置均為1000ms。通常,電機(jī)所需時間不到1000ms。電機(jī)加速和減速時間由反復(fù)試驗決定。在開始時輸入一個較大的數(shù)值。逐漸減少時間值直至電機(jī)開始失速。(7)創(chuàng)建運動包絡(luò)。如圖6-31,點擊“新包絡(luò)”,出現(xiàn)對話框,選擇“是”。(8)配置運動包絡(luò)界面。如圖所示。該界面需要選擇操作模式、步的目標(biāo)速度、結(jié)束位置及該包絡(luò)的符號名。從0包絡(luò)0步開始。設(shè)置完成點擊“繪制包絡(luò)”按鈕,便可看到圖中的運動包絡(luò)曲線。本例中只有一個包絡(luò),這個包絡(luò)只有一步。為該包絡(luò)選擇操作模式(相對位置或單速連續(xù)旋轉(zhuǎn)),并根據(jù)操作模式配置此包絡(luò)。相對位置模式指的是運動的終點位置是從起點側(cè)開始計算脈沖數(shù)量,如圖a所示。單速連續(xù)轉(zhuǎn)動則不需要提供運動的終點位置,PTO一直持續(xù)輸出脈沖,直至停止命令發(fā)出,如圖b所示。如果一個包絡(luò)中,有幾個不同的目標(biāo)速度和對應(yīng)的移動距離,則需要為包絡(luò)定義“步”。如果有不止一個步,請單擊"新步"按鈕,然后為包絡(luò)的每個步輸入信息。每個“步”包括目標(biāo)速度和結(jié)束位置,每“步”移動的固定距離,包括加速時間和減速時間在內(nèi)所走過的距離。每個包絡(luò)最多可有29個單獨步。圖6-34所示為一步、兩步、三步、四步包絡(luò)??梢钥闯?,一步包絡(luò)只有一個目標(biāo)速度,兩步包絡(luò)有兩個目標(biāo)速度,依次類推,步的數(shù)目與包絡(luò)中的目標(biāo)速度的數(shù)目是一致的。一個包絡(luò)設(shè)置完成可以單擊“新包絡(luò)”,根據(jù)位置控制的需要設(shè)置新的包絡(luò)。(9)如圖所示,在變量存儲器地址中設(shè)定表中設(shè)定包絡(luò)表的起始地址。本例中包絡(luò)表的起始地址為“VB200”,編程軟件可以自動計算出包絡(luò)表的結(jié)束地址為VB269。點擊“下一步”(10)設(shè)定完成后出現(xiàn)下圖所示的界面,進(jìn)行設(shè)定確認(rèn),確認(rèn)設(shè)定無誤后點擊“完成”。(11)通過向?qū)Ь幊探Y(jié)束后,會自動生成PTO0-CTRL(控制)、PTO0-RUN(運行)、PTO0-MAN(手動模式)三個加密的帶參數(shù)的子程序。如圖所示。向?qū)傻娜齻€子程序I_STOP(立即停止)輸入:開關(guān)量輸入,高電平有效,當(dāng)此輸入為高電平時,PTO立即終止脈沖的發(fā)出。D_STOP(減速停止)輸入:開關(guān)量輸入,高電平有效,當(dāng)此輸入為高電平時,PTO會產(chǎn)生將電機(jī)減速至停止的脈沖串。Done(完成):開關(guān)量輸出。當(dāng)執(zhí)行PTO操作時,被復(fù)位為“0”,當(dāng)PTO操作完成時被置位為“1”。Error(錯誤):字節(jié)型數(shù)據(jù),當(dāng)Done位為“1”時,Error字節(jié)會報告錯誤代碼,“0”=無錯誤。C-Pos:雙字型數(shù)據(jù),顯示正在執(zhí)行的段數(shù)。如果PTO向?qū)У腍SC計數(shù)器功能已啟用,C-Pos參數(shù)包含用脈沖數(shù)目表示的模塊;否則此數(shù)值始終為零。1)PTOx-CTRL(控制)子程序:初始化和控制PTO操作,用SM0.0作為EN的輸入,作為子程序調(diào)用,在程序中只使用一次。2)PTOx-RUN(運行包絡(luò)):當(dāng)定義了一個或多個運動包絡(luò)后,該子程序用于執(zhí)行指定的運動包絡(luò)。EN位:使能位。用SM0.0作為EN的輸入。START:包絡(luò)執(zhí)行的起動信號。為了確保僅發(fā)送一個命令,使用邊緣觸發(fā)指令以脈沖方式開啟START參數(shù)。Profile(包絡(luò)):字節(jié)型數(shù)據(jù),輸入需要執(zhí)行的運動包絡(luò)號。Abort(終止):開關(guān)量輸入,高電平有效,當(dāng)該位為“1”時,取消包絡(luò)運行命令,并減速至電機(jī)停止。Done(完成):開關(guān)量輸出。當(dāng)本子程序執(zhí)行時,被復(fù)位為“0”,當(dāng)本子程序執(zhí)行完成時被置位為“1”。Error(錯誤):字節(jié)型數(shù)據(jù),輸出本子程序執(zhí)行結(jié)果的錯誤信息,無錯誤時輸出0。C-Profile(當(dāng)前包絡(luò)):字節(jié)型數(shù)據(jù),輸出當(dāng)前執(zhí)行的包絡(luò)號。C-Step(當(dāng)前步):字節(jié)型數(shù)據(jù),輸出目前執(zhí)行的包絡(luò)的步號。3)PTOx-MAN(手動模式):將PTO輸出置于手動模式。這允許電機(jī)啟動、停止和按不同的速度運行。當(dāng)PTOx-MAN子程序已啟用時,除PTOx-CTRL外,任何其他PTO子程序都無法執(zhí)行。EN位:使能位。用SM0.0作為EN的輸入。RUN(運行/停止):啟用RUN(運行/停止)參數(shù),命令PTO加速至指定速度(Speed(速度)參數(shù)),可以在電機(jī)運行中更改Speed參數(shù)的數(shù)值;停用RUN參數(shù):命令PTO減速至電機(jī)停止。Speed(速度參數(shù)):DINT(雙整數(shù))值,輸入目標(biāo)速度值,當(dāng)RUN已啟用時,Speed參數(shù)決定著速度。可以在電機(jī)運行中更改此參數(shù)。Error(錯誤)參數(shù):包含本子程序的結(jié)果?!?”=無錯誤。C-Pos(當(dāng)前位置):如果PTO向?qū)У腍SC計數(shù)器功能已啟用,C-Pos參數(shù)包含用脈沖數(shù)目表示的模塊;否則此數(shù)值始終為零。6.2.8高速輸入、高速輸出指令編程實訓(xùn)

1.實訓(xùn)目的(1)掌握高速處理類指令的組成、相關(guān)特殊存儲器的設(shè)置、指令的輸入及指令執(zhí)行后的結(jié)果,進(jìn)一步熟悉指令的作用和使用方法。(2)通過實訓(xùn)的編程、調(diào)試練習(xí)觀察程序執(zhí)行的過程,分析指令的工作原理,熟悉指令的具體應(yīng)用,掌握編程技巧和能力。(3)熟悉指令向?qū)У氖褂谩?.實訓(xùn)內(nèi)容用脈沖輸出指令PLS和高速輸出端子Q0.0給高速計數(shù)器HSC提供高速計數(shù)脈沖信號,因為要使用高速脈沖輸出功能,必須選用直流電源型的CPU模塊:CPU224/DC/DC/DC。輸入側(cè)的公共端與輸出側(cè)的公共端相連,高速輸出端Q0.0接到高速輸入端I0.0,24V電源正端與輸出側(cè)的1L+端子相連。有脈沖輸出時Q0.0與I0.0對應(yīng)的LED亮。在子程序0中,把中斷程序0與中斷事件12(CV=PV時產(chǎn)生中斷)連接起來。主程序LDSM0.1//首次掃描時SM0.1=1CALLSBR_0//調(diào)用子程序0,初始化高速輸出和HSC0子程序0LDSM0.0//設(shè)置PLS0的控制字節(jié):允許單段PTO功能MOVB16#8D,SMB67//時基ms,可更新脈沖數(shù)和周期RQ0.0,1//復(fù)位脈沖輸出Q0.0的輸出映像寄存器MOVW+2,SMW68//輸出脈沖的周期為2msMOVD+12000,SMD72//產(chǎn)生12000個脈沖(共24秒)PLS0//起動PLS0,從輸出端Q0.0輸出脈沖SQ0.1,1//在第一段時間內(nèi)(4s)

Q0.1為1MOVB16#F8,SMB37//HSC0初始化,可更新CV,PV和計數(shù)方向,加計數(shù)MOVD+0,SMD38//HSC0的當(dāng)前值清0MOVD+2000,SMD42//HSC0的第一次設(shè)定值為2000(延時4s)HDEF0,0//定義HSC0為模式0ATCHINT_0,12//定義HSC0的CV=PV

執(zhí)行中斷程序0ENI//允許全局中斷HSC0//起動HSC0中斷程序0當(dāng)HSC0的計數(shù)值加到第一設(shè)定值2000時(經(jīng)過4s),調(diào)用中斷程序0。在中斷程序0中將HSC0改為減計數(shù),中斷程序1分配給中斷事件12LDSM0.0//SM0.0總是為ONRQ0.1,1//復(fù)位Q0.1SQ0.2,1//復(fù)位Q0.2MOVB16#B0,SMB37//重新設(shè)置

HSC0的控制位,改為減計數(shù)MOVD+1000,SMD42//HSC0的第2

設(shè)定值為1000ATCHINT_1,12//中斷程序1,分配給中斷事件12HSC0//起動HSC0,裝入新的設(shè)定值和計數(shù)方向中斷程序1當(dāng)HSC0的當(dāng)計數(shù)值減到第二設(shè)定值1000時(經(jīng)過了2s),調(diào)用中斷程序1。在中斷程序1中HSC0改為加計數(shù),重新把中斷程序0分配給中斷事件12,當(dāng)總脈沖數(shù)達(dá)到SMD72中規(guī)定的個數(shù)時,(經(jīng)過了24s),脈沖輸出終止。LDSM0.0//SM0.0總是為0RQ0.2,1//復(fù)位Q0.2SQ0.1,1//置位Q0.1MOVB16#F8,SMB37//重新設(shè)置

HSC0的控制位,改為加計數(shù)MOVD+0,SMD38//HSC0的當(dāng)前值復(fù)位MOVD+2000,SMD42//HSC0的設(shè)定置為2000ATCHINT_0,12//把中斷程序0

分配給中斷事件HSC0//重新起動HSC06.3模擬量處理及PID控制

6.3.1PID指令6.3.1PID控制及PID指令1.PID控制在工業(yè)生產(chǎn)過程控制中,常常用閉環(huán)控制方式實現(xiàn)溫度、壓力、流量等連續(xù)變化的模擬量的控制。過程控制系統(tǒng)在對模擬量進(jìn)行采樣的基礎(chǔ)上,進(jìn)行PID(比例+積分+微分)運算,并根據(jù)運算結(jié)果,形成對模擬量的控制作用。PID控制的結(jié)構(gòu)如圖所示

PID運算中的比例作用可對系統(tǒng)偏差做出及時響應(yīng);積分作用可以消除系統(tǒng)的靜態(tài)誤差,提高對系統(tǒng)參數(shù)變化的適應(yīng)能力;微分作用可以克服慣性滯后,提高抗干擾能力和系統(tǒng)的穩(wěn)定性,改變系統(tǒng)動態(tài)響應(yīng)速度。因此,對于速度、位置、溫度等過程,PID都具有良好的實際效果。若能將3種作用的強(qiáng)度作適當(dāng)?shù)呐浜?,可以使PID回路快速、平穩(wěn)、準(zhǔn)確地運行,從而獲得滿意的控制效果。2.PID指令在工業(yè)生產(chǎn)過程控制中,模擬信號PID(由比例、積分、微分構(gòu)成的閉合回路)調(diào)節(jié)是常見的一種控制方法。運行PID控制指令,S7-200將根據(jù)參數(shù)表中的輸入測量值、控制設(shè)定值及PID參數(shù),進(jìn)行PID運算,求得輸出控制值。參數(shù)表中有9個參數(shù),全部為32位的實數(shù),共占用36個字節(jié)。PID控制回路的參數(shù)表如表所示。典型的PID算法包括三項:比例項、積分項和微分項。即:輸出=比例項+積分項+微分項。計算機(jī)在周期性地采樣并離散化后進(jìn)行PID運算,算法如下:Mn=Kc*(SPn-PVn)+Kc*(Ts/Ti)*(SPn-PVn)+Mx+Kc*(Td/Ts)*(PVn-1-PVn)表6PID控制回路的參數(shù)表地址偏移量參數(shù)數(shù)據(jù)格式參數(shù)類型說明0過程變量當(dāng)前值PVn雙字,實數(shù)輸入必須在0.0至1.0范圍內(nèi)。4給定值SPn雙字,實數(shù)輸入必須在0.0至1.0范圍內(nèi)8輸出值Mn雙字,實數(shù)輸入/輸出在0.0至1.0范圍內(nèi)12增益Kc雙字,實數(shù)輸入比例常量,可為正數(shù)或負(fù)數(shù)16采樣時間Ts雙字,實數(shù)輸入以秒為單位,必須為正數(shù)20積分時間Ti雙字,實數(shù)輸入以分鐘為單位,必須為正數(shù)。24微分時間Td雙字,實數(shù)輸入以分鐘為單位,必須為正數(shù)。28上一次的積分值Mx雙字,實數(shù)輸入/輸出0.0和1.0之間(根據(jù)PID運算結(jié)果更新)32上一次過程變量PVn-1雙字,實數(shù)輸入/輸出最近一次PID運算值比例項Kc*(SPn-PVn):能及時地產(chǎn)生與偏差(SPn-PVn)成正比的調(diào)節(jié)作用,比例系數(shù)Kc越大,比例調(diào)節(jié)作用越強(qiáng),系統(tǒng)的穩(wěn)態(tài)精度越高,但Kc過大會使系統(tǒng)的輸出量振蕩加劇,穩(wěn)定性降低。積分項Kc*(Ts/Ti)*(SPn-PVn)+Mx:與偏差有關(guān),只要偏差不為0,PID控制的輸出就會因積分作用而不斷變化,直到偏差消失,系統(tǒng)處于穩(wěn)定狀態(tài),所以積分的作用是消除穩(wěn)態(tài)誤差,提高控制精度,但積分的動作緩慢,給系統(tǒng)的動態(tài)穩(wěn)定帶來不良影響,很少單獨使用。從式中可以看出:積分時間常數(shù)增大,積分作用減弱,消除穩(wěn)態(tài)誤差的速度減慢。微分項Kc*(Td/Ts)*(PVn-1-PVn):根據(jù)誤差變化的速度(既誤差的微分)進(jìn)行調(diào)節(jié)具有超前和預(yù)測的特點。微分時間常數(shù)Td增大時,超調(diào)量減少,動態(tài)性能得到改善,如Td過大,系統(tǒng)輸出量在接近穩(wěn)態(tài)時可能上升緩慢。3.PID控制回路選項(1)如果不需要積分回路(即在PID計算中無“I”),則應(yīng)將積分時間Ti設(shè)為無限大。由于積分項Mx的初始值,雖然沒有積分運算,積分項的數(shù)值也可能不為零。(2)如果不需要微分運算(即在PID計算中無“D”),則應(yīng)將微分時間Td設(shè)定為0.0。(3)如果不需要比例運算(即在PID計算中無“P”),但需要I或ID控制,則應(yīng)將增益值Kc指定為0.0。因為Kc是計算積分和微分項公式中的系數(shù),將循環(huán)增益設(shè)為0.0會導(dǎo)致在積分和微分項計算中使用的循環(huán)增益值為1.0。4.回路輸入量的轉(zhuǎn)換和標(biāo)準(zhǔn)化每個回路的給定值和過程變量都是實際數(shù)值,其大小、范圍和工程單位可能不同。在PLC進(jìn)行PID控制之前,必須將其轉(zhuǎn)換成標(biāo)準(zhǔn)化浮點表示法。步驟如下:(1)將實際從16位整數(shù)轉(zhuǎn)換成32位浮點數(shù)或?qū)崝?shù)。XORDAC0,AC0//將AC0清0ITD AIW0,AC0 //將輸入數(shù)值轉(zhuǎn)換成雙字DTRAC0,AC0 //將32位整數(shù)轉(zhuǎn)換成實數(shù)(2)將實數(shù)轉(zhuǎn)換成0.0至1.0之間的標(biāo)準(zhǔn)化數(shù)值。用下式:實際數(shù)值的標(biāo)準(zhǔn)化數(shù)值=實際數(shù)值的非標(biāo)準(zhǔn)化數(shù)值或原始實數(shù)/取值范圍+偏移量其中:取值范圍=最大可能數(shù)值-最小可能數(shù)值=32000(單極數(shù)值)或64000(雙極數(shù)值)偏移量:對單極數(shù)值取0.0,對雙極數(shù)值取0.5單極(0~32000),雙極(-32000~32000)如將上述AC0中的雙極數(shù)值(間距為64,000)標(biāo)準(zhǔn)化:/R 64000.0,AC0 //使累加器中的數(shù)值標(biāo)準(zhǔn)化+R 0.5,AC0 //加偏移量0.5MOVR AC0,VD100 //將標(biāo)準(zhǔn)化數(shù)值寫入PID回路參數(shù)表中。5.PID回路輸出轉(zhuǎn)換為成比例的整數(shù)程序執(zhí)行后,PID回路輸出0.0和1.0之間的標(biāo)準(zhǔn)化實數(shù)數(shù)值,必須被轉(zhuǎn)換成16位成比例整數(shù)數(shù)值,才能驅(qū)動模擬輸出。PID回路輸出成比例實數(shù)數(shù)值=(PID回路輸出標(biāo)準(zhǔn)化實數(shù)值-偏移量)*取值范圍程序如下:MOVR VD108,AC0 //將PID回路輸出送入AC0。-R 0.5,AC0 //雙極數(shù)值減偏移量0.5*R 64000.0,AC0 //AC0的值*取值范圍,變?yōu)槌杀壤龑崝?shù)數(shù)值ROUND AC0,AC0 //將實數(shù)四舍五入取整,變?yōu)?2位整數(shù)DTI AC0,AC0//32位整數(shù)轉(zhuǎn)換成16位整數(shù)MOVW AC0,AQW0 //16位整數(shù)寫入AQW06.PID指令PID指令:使能有效時,根據(jù)回路參數(shù)表(TBL)中的輸入測量值、控制設(shè)定值及PID參數(shù)進(jìn)行PID計算。格式如表6-16所示。說明:(1)程序中可使用八條PID指令,分別編號0~7,不能重復(fù)使用。(2)使ENO=0的錯誤條件:0006(間接地址),SM1.1(溢出,參數(shù)表起始地址或指令中指定的PID回路指令號碼操作數(shù)超出范圍)。(3)PID指令不對參數(shù)表輸入值進(jìn)行范圍檢查。必須保證過程變量和給定值積分項前值和過程變量前值在0.0和1.0之間。LADSTL說明PIDTBL,LOOPTBL:參數(shù)表起始地址VB,數(shù)據(jù)類型:字節(jié)LOOP:回路號,常量(0~7),數(shù)據(jù)類型:字節(jié)6.3.2PID控制功能的應(yīng)用

1.控制任務(wù)一恒壓供水水箱,通過變頻器驅(qū)動的水泵供水,維持水位在滿水位的70%。過程變量PVn為水箱的水位(由水位檢測計提供),設(shè)定值為70%,PID輸出控制變頻器,即控制水箱注水調(diào)速電機(jī)的轉(zhuǎn)速。要求開機(jī)后,先手動控制電機(jī),水位上升到70%時,轉(zhuǎn)換到PID自動調(diào)節(jié)。2.恒壓供水PID控制參數(shù)表地址參數(shù)數(shù)值VB100過程變量當(dāng)前值PVn水位檢測計提供的模擬量經(jīng)A/D轉(zhuǎn)換后的標(biāo)準(zhǔn)化數(shù)值VB104給定值SPn0.7VB108輸出值MnPID回路的輸出值(標(biāo)準(zhǔn)化數(shù)值)VB112增益Kc0.3VB116采樣時間Ts0.1VB120積分時間Ti30VB124微分時間Td0(關(guān)閉微分作用)VB128上一次積分值Mx根據(jù)PID運算結(jié)果更新VB132上一次過程變量PVn-1最近一次PID的變量值2.程序分析(1)I/O分配手動/自動切換開關(guān)I0.0模擬量輸入AIW0

模擬量輸出AQW0(2)程序結(jié)構(gòu)由主程序,子程序,中斷程序構(gòu)成。主程序用來調(diào)用初始化子程序,子程序用來建立PID回路初始參數(shù)表和設(shè)置中斷,由于定時采樣,所以采用定時中斷(中斷事件號為10),設(shè)置周期時間和采樣時間相同(0.1s

溫馨提示

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

最新文檔

評論

0/150

提交評論