前面學(xué)習(xí)了高速計數(shù)器的內(nèi)容,緊接著我們就來學(xué)習(xí)一下高速脈沖輸出的內(nèi)容,高速脈沖輸出一般是用在運動控制里面,用來控制步進(jìn)或伺服,高速脈沖輸出也是比較重要的一部分,我們必須得掌握好它。
在S7-200中有兩個PTO/PWM高速脈沖發(fā)生器,可以產(chǎn)生高速脈沖串(PTO)或脈寬調(diào)制信號波形(PWM)。在S7-200中有脈沖輸出指令PLS,它用來控制在高速脈沖輸出(Q0.0和Q0.1)中提供的高速脈沖串輸出(PTO)和脈寬調(diào)制(PWM)功能。
PTO/PWM與數(shù)字量輸出過程映像區(qū)共用輸出點Q0.0和Q0.1,當(dāng)在Q0.0或Q0.1上激活了PTO/PWM功能時,是會禁止普通輸出點功能的,這時Q0.0或Q0.1的輸出波形是不受過程映像區(qū)狀態(tài)、輸出點強制值或者立即輸出指令的影響的,我們使用狀態(tài)表或趨勢圖是監(jiān)控不了的。
要做高速脈沖輸出,我們應(yīng)該選用24VDC晶體管輸出的CPU,而不能選用繼電器輸出的CPU,這是我們要注意的。高速脈沖輸出一般是用在運動控制里面,用來控制步進(jìn)或伺服。利用高速脈沖輸出實現(xiàn)運動控制,除了有PTO、PWM,還有EM253定位模塊,這三種方式都可以實現(xiàn)運動控制,不過要注意的是PTO和PWM可以使用脈沖輸出指令PLS和向?qū)韺崿F(xiàn),而且PTO方式的甚至還可以使用運動控制庫指令來實現(xiàn),而使用EM253定位模塊的話就只能通過向?qū)韺崿F(xiàn),而不能使用PLS指令或運動控制庫指令。
我們先看一下脈沖串操作PTO,PTO是按照給定的脈沖個數(shù)和周期輸出一串方波(占空比50%)。在使用時,我們要設(shè)定其脈沖個數(shù)和周期,我們要注意的是設(shè)定是周期數(shù)應(yīng)該是偶數(shù),如果設(shè)定的周期數(shù)為奇數(shù)的話,是會引起占空比失真的。而脈寬調(diào)制PWM,它是產(chǎn)生一個占空比變化周期固定的脈沖輸出的,我們可以設(shè)定其周期和脈寬,我們要注意的是當(dāng)設(shè)定的脈寬等于周期時,輸出是一直為ON的,當(dāng)設(shè)定的脈寬等于0時,輸出是斷開的。

一般來說,使用脈沖串PTO會比較多,所以后面學(xué)習(xí)時也是重點學(xué)習(xí)脈沖串PTO的。除此之外,我們還要學(xué)習(xí)脈沖輸出指令PLS以及指令的應(yīng)用,并且主要針對脈沖串PTO的學(xué)習(xí),這是脈沖輸出學(xué)習(xí)的重點,我們必須要掌握好它。
前面有說到脈沖輸出指令PLS用于控制在高速脈沖輸出(Q0.0和Q0.1)中提供的脈沖串輸出PTO和脈寬調(diào)制PWM功能。在S7-200中有兩個PTO/PWM發(fā)生器,而每臺PTO/PWM發(fā)生器都有一個控制字節(jié)的,SMB67控制的是Q0.0的PTO/PWM發(fā)生器,而SMB77控制的是Q0.1的PTO/PWM發(fā)生器,這個我們要知道的。
脈沖輸出指令是會從系統(tǒng)存儲器SM(包括控制字節(jié))中讀取數(shù)據(jù),從而控制PTO/PWM發(fā)生器,這樣我們就可以通過修改控制字節(jié),然后執(zhí)行PLS指令,來更改PTO或PWM信號波形。以下就附上PTO/PWM控制寄存器的SM標(biāo)志表和PTO/PWM控制字節(jié)參考表。


我們要注意的是,我們在使用PLS指令時一般是有步驟的。第一步,我們在使能PTO/PWM之前,要對Q0.0、Q0.1的過程映像區(qū)清零;第二步,定義控制字節(jié),Q0.0對應(yīng)SMB67,Q0.1對應(yīng)SMB77。第三步,寫入PTO/PWM相關(guān)寄存器的數(shù)據(jù),比如SMW68對應(yīng)的是PTO/PWM周期值(2-65525ms),SMD72對應(yīng)的是PTO脈沖計數(shù)值。第四步,就是連接中斷事件和中斷程序,并允許中斷這步是根據(jù)實際情況決定要還是不要的;第五步,執(zhí)行PLS指令,激活某個脈沖輸出,更新控制字節(jié)。
當(dāng)然我們也可以禁止PTO/PWM波形,我們將控制字節(jié)的使能位(SMB67.7/
SMB77.7)清零,然后執(zhí)行PLS指令就可以了。我們也可以對周期值、脈寬值和脈沖數(shù)進(jìn)行修改,我們把相應(yīng)的系統(tǒng)存儲器位置1,然后再把修改數(shù)據(jù)寫入到相應(yīng)的系統(tǒng)存儲器里,然后執(zhí)行PLS指令就可以。
下面就舉個PLS指令應(yīng)用的例子,來更好的掌握PLS指令的使用。
主程序:

高速脈沖輸出子程序:

高速計數(shù)器子程序:

以上的程序,在主程序的網(wǎng)絡(luò)一中,首先用SM0.1首次掃描驅(qū)動高速計數(shù)器子程序進(jìn)行高速計數(shù)初始化,同時對Q0.0的過程映像區(qū)清零。在高速計數(shù)器子程序中,首先傳送16#F8到SMB47定義控制字節(jié)定義為更新當(dāng)前值加計數(shù),然后執(zhí)行HEDF指令定義高速計數(shù)模式12和選擇高速計數(shù)器0,最后是激活高速計數(shù)器,執(zhí)行HSC指令。
在主程序的網(wǎng)絡(luò)二中,用I0.2的上升沿才驅(qū)動高速脈沖輸出子程序,用I0.2的下降沿來驅(qū)動一個傳送指令,傳送0到SMB67,并同時驅(qū)動一個PLS指令。在高速脈沖輸出子程序中,首先傳送16#85到SMB67中定義控制字節(jié),這里選擇的是PTO模式、單段、1us/周期、裝入周期和脈沖數(shù)的情況(控制字節(jié)的定義可以參考PTO/PWM控制字節(jié)表),并傳送100到SMW68中寫入周期值,傳送100到SMD72中寫入脈沖數(shù),最后執(zhí)行PLS指令。
那么程序會在I0.2接通的上升沿執(zhí)行周期為100us,100個脈沖數(shù)的高速脈沖輸出,會在I0.2斷開的下降沿禁止PTO波形的輸出。