PWM脈沖是一種占空比和周期都可調的脈沖。
PWM脈沖的周期范圍為10~65535μs或2~65535ms,在設置脈沖周期時,如果周期小于兩個時間單位,系統會默認周期值為兩個時間單位;PWM脈寬時間為0~65535μs或0~65535ms,若設定的脈寬等于周期(即占空比為100%),輸出一直接通,設定脈寬等于0(即占空比為0%),輸出斷開。
1.波形改變方式
PWM脈沖的波形改變方式有兩種:同步更新和異步更新。同步更新。如果不需改變時間基準,則可以使用同步更新方式。利用同步更新,信號波形特性的變化發生在周期邊沿,使波形能平滑轉換。異步更新。如果需要改變PWM發生器的時間基準,就要使用異步更新。異步更新會使PWM功能被瞬時禁止, PWM信號波形過渡不平滑,這會引起被控設備的振動。
由于異步更新生成的PWM脈沖有較大的缺陷,一般情況下盡量使用脈寬變化、周期不變的PWM脈沖,這樣可使用同步更新。
2.產生PWM脈沖的編程方法
要讓高速脈沖發生器產生PWM脈沖,可按以下步驟編程。根據需要設置控制字節SMB67(Q0.0)、SMB77(Q0.1)或SMB567(Q0.3)。根據需要設置脈沖的周期值和脈寬值。周期值在SMW68、SMW78或SMB568中設置,脈寬值在SMW70、SMW80或SMW570中設置。執行高速脈沖輸出PLS指令,系統則會讓高速脈沖發生器按設置從Q0.0、Q0.1或Q0.3端子輸出PWM脈沖。
3.產生PWM脈沖的編程實例
圖1所示是一個產生PWM脈沖的程序,其實現的功能是:讓PLC從Q0.0端子輸出PWM脈沖,要求PWM脈沖的周期固定為5s,初始脈寬為0.5s,每周期脈寬遞增0.5s,當脈寬達到4.5s后開始遞減,每周期遞減0.5s,直到脈寬為0。以后重復上述過程。
圖1 產生PWM脈沖的程序
該程序由主程序、SBR_0子程序和INT_0、INT_1兩個中斷程序組成,SBR_0子程序為PWM初始化程序,用來設置脈沖控制字節和初始脈沖參數,INT_0中斷程序用于實現脈寬遞增,INT_1中斷程序用于實現脈寬遞減。由于程序采用中斷事件0(I0.0上升沿中斷)產生中斷,因此要將脈沖輸出端子Q0.0與I0.0端子連接,這樣在Q0.0端子輸出脈沖上升沿時,I0.0端子會輸入脈沖上升沿,從而觸發中斷程序,實現脈沖遞增或遞減。
程序工作過程說明如下。
在主程序中,PLC上電首次掃描時SM0.1觸點接通一個掃描周期,子程序調用指令執行,轉入執行SBR_0子程序。在子程序中,先將M0.0線圈置1,然后設置脈沖的控制字節和初始參數,再允許所有的中斷,最后執行高速脈沖輸出PLS指令,讓高速脈沖發生器按設定的控制字節和參數產生并從Q0.0端子輸出PWM脈沖,同時從子程序返回到主程序網絡2。由于網絡2、3指令條件不滿足,程序執行網絡4,M0.0常開觸點閉合(在子程序中M0.0線圈被置1),中斷連接ATCH指令執行,將INT_0中斷程序與中斷事件0(I0.0上升沿中斷)連接起來。當Q0.0端子輸出脈沖上升沿時,I0.0端子輸入脈沖上升沿,中斷事件0馬上發出中斷請求,系統響應該中斷而執行INT_0中斷程序。
在INT_0中斷程序中,ADD_I指令將脈沖寬度值增加0.5s,再執行PLS指令,讓Q0.0端子輸出完前一個PWM脈沖后按新設置的寬度輸出下一個脈沖,接著執行中斷分離DTCH指令,將中斷事件0與INT_0中斷程序分離,然后從中斷程序返回主程序。在主程序中,又執行中斷連接ATCH指令,又將INT_0中斷程序與中斷事件0連接起來,在Q0.0端子輸出第二個PWM脈沖上升沿時,又會產生中斷而再次執行INT_0中斷程序,將脈沖寬度值再增加0.5s,然后執行PLS指令讓Q0.0端子輸出的第三個脈沖寬度增加0.5s。以后INT_0中斷程序會重復執行,直到SMW70單元中的數值增加到4500。
當SMW70單元中的數值增加到4500時,主程序中的“SMW70|>=I|4500”觸點閉合,將M0.0線圈復位;網絡4中的M0.0常開觸點斷開,中斷連接ATCH指令無法執行,INT_0中斷程序也無法執行;網絡5中的M0.0常閉觸點閉合,中斷連接ATCH指令執行,將INT_1中斷程序與中斷事件0連接起來。當Q0.0端子輸出脈沖上升沿(I0.0端子輸入脈沖上升沿)時,中斷事件0馬上發出中斷請求,系統響應該中斷而執行INT_1中斷程序。
在INT_1中斷程序中,將脈沖寬度值減0.5s,再執行PLS指令,讓Q0.0端子輸出PWM脈沖寬度減小0.5s,接著執行中斷分離DTCH指令,分離中斷,然后從中斷程序返回主程序。在主程序中,又執行網絡5中的中斷連接ATCH指令,又將INT_1中斷程序與中斷事件0連接起來,在Q0.0端子輸出PWM脈沖上升沿時,又會產生中斷而再次執行INT_1中斷程序,將脈沖寬度值再減0.5s。以后INT_1中斷程序會重復執行,直到SMW70單元中的數值減小到0。
當SMW70單元中的數值減小到0時,主程序中的“SMW70|==I|0”觸點閉合,子程序調用指令執行,轉入執行SBR_0子程序,又進行PWM初始化操作。
以后程序重復上述工作過程,從而使Q0.0端子輸出先遞增0.5s、后遞減0.5s、周期為5s連續的PWM脈沖。
審核編輯:湯梓紅
-
PWM
+關注
關注
114文章
5059瀏覽量
212219 -
編程
+關注
關注
88文章
3521瀏覽量
93276 -
波形
+關注
關注
3文章
375瀏覽量
31376 -
PWM脈沖
+關注
關注
0文章
8瀏覽量
7812
發布評論請先 登錄
相關推薦
評論