西門子S7-200SMART模塊遼寧代理價(jià)格
西門子PLC的PWM脈沖的產(chǎn)生與使用
PWM脈沖是一種占空比和周期都可調(diào)節(jié)的脈沖。PWM脈沖的周期范圍為10~ 65535μs或2~65535ms,為16位無(wú)符號(hào)數(shù),在設(shè)置脈沖周期時(shí),如果周期小于兩個(gè)時(shí)間單位,系統(tǒng)會(huì)默認(rèn)周期值為兩個(gè)時(shí)間單位;PWM脈寬時(shí)間為0~65535μs或0~65535ms,為16位無(wú)符號(hào)數(shù),若設(shè)定的脈寬等于周期(即占空比為*),輸出一直接通,若設(shè)定脈寬等于0(即占空比為0),輸出斷開(kāi)。
1.波形改變方式
PWM脈沖的波形改變方式有兩種:同步更新和異步更新。
(1)同步更新
如果不需改變時(shí)間基準(zhǔn),可以使用同步更新方式,利用同步更新,信號(hào)波形特性的變化發(fā)生在周期邊沿,使波形能平滑轉(zhuǎn)換。
(2)異步更新
如果需要改變PWM發(fā)生器的時(shí)間基準(zhǔn),就要使用異步更新,異步更新會(huì)使PWM功能被瞬時(shí)禁止,PWM信號(hào)波形過(guò)渡不平滑,這會(huì)引起被控設(shè)備的振動(dòng)。
由于異步更新生成的PWM脈沖有較大的缺陷,一般情況下盡量使用脈寬變化、周期不變的PWM脈沖,這樣可使用同步更新。
2.產(chǎn)生PWM脈沖的編程方法
要讓高速脈沖發(fā)生器產(chǎn)生PWM脈沖,可按以下步驟編程:
1)根據(jù)需要設(shè)置控制字節(jié)SMB67或SMB68。
2)根據(jù)需要設(shè)置脈沖的周期值和脈寬值。周期值在SMW68或SMW78中設(shè)置,詠寬值在SMW70或SMW80中設(shè)置。
3)執(zhí)行高速脈沖輸出PLS指令,系統(tǒng)則會(huì)讓高速脈沖發(fā)生器按設(shè)置從Q0.0或Q0.1端子輸出PWM脈沖。
3.產(chǎn)生PWM脈沖的編程實(shí)例
圖5-50是一個(gè)產(chǎn)生PWM脈沖的程序,其實(shí)現(xiàn)的功能是:讓PLC從Q0.0端子輸出PWM脈沖,要求PWM脈沖的周期固定為5s,初始脈寬為0.5s,每周期脈寬遞增0.5s,當(dāng)脈寬達(dá)到4. 5s后開(kāi)始遞減,每周期遞減0.5s,直到脈寬為0。以后重復(fù)上述過(guò)程。
該程序由主程序、SBR_0子程序和INT_0、INT_1兩個(gè)中斷程序組成,SBR_0子程序?yàn)?/span>PWM初始化程序,用來(lái)設(shè)置脈沖控制字節(jié)和初始脈沖參數(shù),INT_0中斷程序用于實(shí)現(xiàn)脈寬遞增,INT_1中斷程序用于實(shí)現(xiàn)脈寬遞減。由于程序采用中斷事件0(I0.0上升沿中斷)產(chǎn)生中斷,因此要將脈沖輸出端子Q0.0與10.0端子連接,這樣在QO.0端子輸出脈沖上升沿時(shí),I0.0端子會(huì)輸入脈沖上升沿,從而觸發(fā)中斷程序,實(shí)現(xiàn)脈沖遞增或遞減.
程序工作過(guò)程說(shuō)明如下:
在主程序中,PLC上電*掃描時(shí),SM0.1觸點(diǎn)接通一個(gè)掃描周期,子程序調(diào)用指令執(zhí)行,轉(zhuǎn)入執(zhí)行SBR_0子程序。在子程序中,先將M0.0線圈置1,然后設(shè)置脈沖的控制字節(jié)和初始參數(shù),再允許所有的中斷,后執(zhí)行高速脈沖輸出PLS指令,讓高速脈沖發(fā)生器按設(shè)定的控制字節(jié)和參數(shù)產(chǎn)生并從Q0.0端子輸出PWM脈沖,同時(shí)從子程序返回到主程序網(wǎng)絡(luò)2,由于網(wǎng)絡(luò)2、3指令條件不滿足,程序執(zhí)行網(wǎng)絡(luò)4,M0.0常開(kāi)觸點(diǎn)閉合(在子程序中M0.0線圈被置1),中斷連接ATCH指令執(zhí)行,將INT_0中斷程序與中斷事件0(I0.0上升沿中斷)連接起來(lái)。當(dāng)Q0.0端子輸出脈沖上升沿時(shí),I0.0端子輸入脈沖上升沿,中斷事件0馬上發(fā)出中斷請(qǐng)求,系統(tǒng)響應(yīng)該中斷而執(zhí)行INT_0中斷程序。
在INT_0中斷程序中,ADD_I指令將脈沖寬度值增加0.5s,再執(zhí)行PLS指令,讓Q0.0端子輸出完前一個(gè)PWM脈沖后,按新設(shè)置的寬度輸出下一個(gè)脈沖,接著執(zhí)行中斷分離DTCH指令,將中斷事件O與INT_0中斷程序分離,然后從中斷程序返回主程序。在主程序中,又執(zhí)行中斷連接ATCH指令,又將INT_0中斷程序與中斷事件0連接起來(lái),在Q0.0端子輸出第二個(gè)PWM脈沖上升沿時(shí),又會(huì)產(chǎn)生中斷而再次執(zhí)行INT_0中斷程序,將脈沖寬度值再增加0.5s,然后執(zhí)行PLS指令讓Q0.0端子輸出的第三個(gè)脈沖寬度增加0.5s。以后,INT_0中斷程序會(huì)重復(fù)執(zhí)行,直到SMW70單元中的數(shù)值增加到4500。
當(dāng)SMW70單元中的數(shù)值增加到4500時(shí),主程序中的“SMW70|>=I| 4500”觸點(diǎn)閉合,將M0.0線圈復(fù)位,網(wǎng)絡(luò)4中的M0.0常開(kāi)觸點(diǎn)斷開(kāi),中斷連接ATCH指令無(wú)法執(zhí)行,INT_0中斷程序也無(wú)法執(zhí)行,網(wǎng)絡(luò)5中的M0.0常閉觸點(diǎn)閉合,中斷連接ATCH指令執(zhí)行,將INT_1中斷程序與中斷事件0連接起來(lái)。當(dāng)Q0.0端子輸出脈沖上升沿(I0.0端子輸入脈沖上升沿)時(shí),中斷事件0馬上發(fā)出中斷請(qǐng)求,系統(tǒng)響應(yīng)該中斷而執(zhí)行INT_1中斷程序。
在INT_1中斷程序中,將脈沖寬度值減0.5s,再執(zhí)行PLS指令,讓Q0.0端子輸出PWM脈沖寬度減0.5s,接著執(zhí)行中斷分離DTCH指令,分離中斷,然后從中斷程序返回主程序。在主程序中,又執(zhí)行網(wǎng)絡(luò)5中的中斷連接ATCH指令,又將INT_1中斷程序與中斷事件0連接起來(lái),在Q0.0端子輸出PWM脈沖上升沿時(shí),又會(huì)產(chǎn)生中斷而再次執(zhí)行INT_1中斷程序,將脈沖寬度值再減0.5s。以后INT_1中斷程序會(huì)重復(fù)執(zhí)行,直到SMW70單元中的數(shù)值減少到0。
當(dāng)SMW70單元中的數(shù)值減少到0時(shí),主程序中的“SMW70 |==I| 0”觸點(diǎn)閉合,子程序調(diào)用指令執(zhí)行,轉(zhuǎn)入執(zhí)行SBR_0子程序,又進(jìn)行PWM初始化操作。
以后,程序重復(fù)上述工作過(guò)程,從而使Q0.0端子輸出先遞增0.5s、后遞減0.5s、周期為5s連續(xù)的PWM脈沖。
PTO脈沖是一種占空比為50%、周期可調(diào)節(jié)的方波脈沖。PTO脈沖的周期范圍為10~65535μs或2~65535ms,為16位無(wú)符號(hào)數(shù);PTO脈沖數(shù)范圍為1~4294967295,為32位無(wú)符號(hào)數(shù)。
在設(shè)置脈沖個(gè)數(shù)時(shí),若將脈沖個(gè)數(shù)設(shè)為0,系統(tǒng)會(huì)默認(rèn)為個(gè)數(shù)為1;在設(shè)置脈沖周期時(shí),如果周期小于兩個(gè)時(shí)間單位,系統(tǒng)會(huì)默認(rèn)周期值為兩個(gè)時(shí)間單位,如時(shí)間單位為ms,周期設(shè)為1.3ms,系統(tǒng)會(huì)默認(rèn)周期為2ms,另外,如果將周期值設(shè)為奇數(shù)值(如75ms),產(chǎn)生的脈沖波形會(huì)失真。
PTO脈沖可分為單段脈沖串和多段脈沖串,多段脈沖串由多個(gè)單段脈沖串組成。
1.單段脈沖串的產(chǎn)生
要讓Q0.0或Q0.1端子輸出單段脈沖串,需先對(duì)相關(guān)的控制字節(jié)和參數(shù)進(jìn)行設(shè)置,再執(zhí)行高速脈沖輸出PLS指令。
圖5-47所示為一段用來(lái)產(chǎn)生單段脈沖串的程序。在PLC*掃描時(shí),SMO.1觸點(diǎn)閉合一個(gè)掃描周期,復(fù)位指令將Q0.0輸出映像寄存器(即Q0.0線圈)置0,以便將Q0.0端子用作高速脈沖輸出;當(dāng)I0.1觸點(diǎn)閉合時(shí),上升沿P觸點(diǎn)接通一個(gè)掃描周期,MOV_B、MOV_W和MOV_DW依次執(zhí)行,對(duì)高速脈沖發(fā)生器的控制字節(jié)和參數(shù)進(jìn)行設(shè)置,然后執(zhí)行高速脈沖輸出PLS指令,讓高速脈沖發(fā)生器按設(shè)置產(chǎn)生單段PTO脈沖串并從Q0.0端子輸出。在PTO脈沖串輸出期間,如果I0.2觸點(diǎn)閉合,MOV_B、MOV_DW依次執(zhí)行,將控制字節(jié)設(shè)為禁止脈沖輸出、脈沖個(gè)數(shù)設(shè)為0,然后執(zhí)行PLS指令,高速脈沖發(fā)生器馬上按新的設(shè)置工作,即停止從Q0.0端子輸出脈沖。單段PTO脈沖串輸出完成后,狀態(tài)位SM66.7會(huì)置1,表示PTO脈沖輸出結(jié)束。
若網(wǎng)絡(luò)2中不使用邊沿P觸點(diǎn),那么在單段PTO脈沖串輸出完成后如果I0.1觸點(diǎn)仍處于閉合,則會(huì)在前一段脈沖串后面繼續(xù)輸出相同的下一段脈沖串。
2.多段脈沖串的產(chǎn)生
多段脈沖串有兩種類型:?jiǎn)味喂艿烂}沖串和多段管道脈沖串。
(1)單段管道脈沖串
單段管道脈沖串是由多個(gè)單段脈沖串組成,每個(gè)單段脈沖串的參數(shù)可以不同,但單段脈沖串中的每個(gè)脈沖參數(shù)要相同。
由于控制單元參數(shù)只能對(duì)單段脈沖串產(chǎn)生作用,因此在輸出單段管道脈沖串時(shí),要求執(zhí)行PLS指令產(chǎn)生首段脈沖串后,馬上按第二段脈沖串要求刷新控制參數(shù)單元,并再次執(zhí)行PLS指令,這樣首段脈沖串輸出完成后,會(huì)接著按新的控制參數(shù)輸出第二段脈沖串。單段管道脈沖串的每個(gè)脈沖串可采用不同參數(shù),這樣易出現(xiàn)脈沖串之間連接不平穩(wěn),在輸出多個(gè)參數(shù)不同的脈沖串時(shí),變成也很復(fù)雜:
(2)多段管道脈沖串
多段管道脈沖串也由多個(gè)單段脈沖串組成,每個(gè)單段脈沖串的參數(shù)可以不同,單段脈沖串中的每個(gè)脈沖參數(shù)也可以不同。
1)參數(shù)設(shè)置包絡(luò)表:由于多段管道脈沖串的各個(gè)脈沖串允許有較復(fù)雜的變化,無(wú)法用產(chǎn)生單段管道脈沖串的方法來(lái)輸出多段管道脈沖串,S7-200系列PLC采用在變量存儲(chǔ)區(qū)建立一個(gè)包絡(luò)表,由該表來(lái)設(shè)置多段管道脈沖串中的各個(gè)脈沖串的參數(shù):多段管道脈沖串的參數(shù)設(shè)置包絡(luò)表見(jiàn)表5-20。從包絡(luò)表可以看出,每段脈沖串的參數(shù)占用8個(gè)字節(jié),其中2個(gè)字節(jié)為16位初始周期值,2個(gè)字節(jié)為16位周期增量值,4個(gè)字節(jié)為32位脈沖數(shù)值,可以通過(guò)編程的方式使脈沖的周期自動(dòng)增減,在周期增量處輸入一個(gè)正值會(huì)增加周期,輸入一個(gè)負(fù)值會(huì)減少周期,輸入0將不改變周期。
在多段管道模式下,系統(tǒng)仍使用特殊存儲(chǔ)器區(qū)的相應(yīng)控制字節(jié)和狀態(tài)位,每個(gè)脈沖串的參數(shù)則從包絡(luò)表的變量存儲(chǔ)器區(qū)讀出。在多段管道編程時(shí),必須將包絡(luò)表的變量存儲(chǔ)器起始地址(即包絡(luò)表中的n值)裝入SMW168或SMW178中,在包絡(luò)表中的所有周期值必須使用同一個(gè)時(shí)間單位,而且在運(yùn)行時(shí)不能改變包絡(luò)表中的內(nèi)容,執(zhí)行PLS指令來(lái)啟動(dòng)多段管道操作。
2)多段管道脈沖串的應(yīng)用舉例。多段管道脈沖串常用于步進(jìn)電動(dòng)機(jī)的控制。圖5-48是一個(gè)步進(jìn)電動(dòng)機(jī)的控制包絡(luò)線,包絡(luò)線分3段:第1段(AB段)為加速運(yùn)行,電動(dòng)機(jī)的起始頻率為2kHz(周期為500μS),終止頻率為10kHz(周期為100μs),要求運(yùn)行脈沖數(shù)目為200個(gè);第2段(BC段)為恒速運(yùn)行,電動(dòng)機(jī)的起始和終止頻率均為10kHz(周期為100μS),要求運(yùn)行脈沖數(shù)目為3600個(gè);第3段(CD段)為減速運(yùn)行,電動(dòng)機(jī)的起始頻率為10kHz(周期為100μs),終止頻率為2kHz (500μs),要求運(yùn)行脈沖數(shù)目為200個(gè)。
列包絡(luò)表除了要知道段脈沖的起始周期和脈沖數(shù)目外,還需知道每個(gè)脈沖的周期增量,周期增量可用下面公式計(jì)算獲得:
周期增量值=(段終止脈沖周期值-段起始脈沖周期值)/該段脈沖數(shù)
例如,AB段周期增量值=(100μs - 500μs)/200=-2μs。
根據(jù)包絡(luò)表可編寫出步進(jìn)電動(dòng)機(jī)的控制程序,程序如圖5-49所示,該程序由主程序、SBR_0子程序和INT_0中斷程序組成。
在主程序中,PLC*掃描時(shí),SM0.1觸點(diǎn)閉合一個(gè)掃描周期,先將Q0.0端子輸出映像寄存器置0,以便將該端子用作高速脈沖輸出,然后執(zhí)行子程序調(diào)用指令轉(zhuǎn)入SBR_0子程序。在SBR_0子程序中,網(wǎng)絡(luò)1用于設(shè)置多段管道脈沖串的參數(shù)包絡(luò)表(段數(shù)、第1段參數(shù)、第2段參數(shù)和第3段參數(shù)),網(wǎng)絡(luò)2先設(shè)置脈沖輸出的控制字節(jié),并將包絡(luò)表起始單元地址號(hào)送入SMW168單元,然后用中斷連接指令將INT_0中斷程序與中斷事件19(PTO 0脈沖串輸出完成產(chǎn)生中斷)連接起來(lái),再用ENI指令允許所有的中斷,后執(zhí)行PLS指令,讓高速脈沖發(fā)生器按設(shè)定的控制方式和參數(shù)(由包絡(luò)表設(shè)置)工作,即從Q0.0端子輸出多段管道脈沖串,去驅(qū)動(dòng)步進(jìn)電動(dòng)機(jī)按加速、恒速和減速順序運(yùn)行。當(dāng)Q0.0端子的多管道PTO脈沖輸出完成后,馬上會(huì)向系統(tǒng)發(fā)出中斷請(qǐng)求,系統(tǒng)則執(zhí)行INT_0中斷程序,Q1.0線圈得電。
西門子S7-200SMART模塊遼寧代理價(jià)格