PTO指令及其在步進(jìn)電機(jī)控制系統(tǒng)中的應(yīng)用
0引言
步進(jìn)電機(jī)用于控制機(jī)電設(shè)備上平動(dòng)體或轉(zhuǎn)動(dòng)體的位移、速度和方向。S7-200PLC的高速脈沖輸出指令PTO可產(chǎn)生占空比為50%、周期和個(gè)數(shù)可控的脈沖信號(hào),進(jìn)而控制步進(jìn)電機(jī)的速度和位移。本文結(jié)合實(shí)例,介紹PTO指令在步進(jìn)電機(jī)控制系統(tǒng)中的實(shí)際應(yīng)用。
1系統(tǒng)組成
步進(jìn)電機(jī)控制系統(tǒng)由CPU224、步進(jìn)電機(jī)驅(qū)動(dòng)器、步進(jìn)電機(jī)、電源等組成,如圖1所示。
其中,CPU224PLC是步進(jìn)電機(jī)控制系統(tǒng)的控制器,通過執(zhí)行PTO指令控制輸出脈沖的周期和個(gè)數(shù):步進(jìn)電機(jī)驅(qū)動(dòng)器接受來自PLC的脈沖信號(hào),進(jìn)行功率放大和分配,用以驅(qū)動(dòng)步進(jìn)電機(jī),步進(jìn)電機(jī)的方向由PLC的方向信號(hào)控制,通過改變分配給步進(jìn)電機(jī)繞組的脈沖相序來改變轉(zhuǎn)向:步進(jìn)電機(jī)接受一個(gè)脈沖信號(hào)會(huì)產(chǎn)生一個(gè)步距角的位移。
2PTO指令介紹
2.1功能
PTO(PulSeTrain0utput)是脈沖串輸出的簡稱。PTO指令可以控制00.0或00.1端輸出占空比為50%、周期和脈沖數(shù)可以指定的脈沖串,用以控制步進(jìn)電機(jī)的速度和位移。
2.2特殊存儲(chǔ)區(qū)
CPU224中有兩個(gè)高速脈沖發(fā)生器,每個(gè)高速脈沖發(fā)生器都有一個(gè)8位控制字、一個(gè)32位脈沖計(jì)數(shù)值、一個(gè)16位的周期值和一個(gè)16位的脈寬值,這些值都放在特定的特殊存儲(chǔ)區(qū)中。例如,00.1端對(duì)應(yīng)的控制字存在SMB67中,脈沖周期值存在SMw68中,脈沖計(jì)數(shù)值存在SMD72中。
在程序中設(shè)置好這些存儲(chǔ)區(qū)值,執(zhí)行脈沖輸出指令PLS,CPU就會(huì)讀取這些值,并執(zhí)行特殊存儲(chǔ)區(qū)所定義的操作,輸出相應(yīng)的高速脈沖。
2.3包絡(luò)表
如果需要輸出多個(gè)脈沖串,可以在存儲(chǔ)區(qū)中建立包絡(luò)表,包絡(luò)表中存放多個(gè)脈沖串的參數(shù)。建立包絡(luò)表后,執(zhí)行PLS指令,PLC就會(huì)從包絡(luò)表中讀取參數(shù)值,按照參數(shù)定義控制脈沖串的輸出。包絡(luò)表中每段脈沖串的參數(shù)需用8個(gè)字節(jié),其中包含2個(gè)字節(jié)的周期值、2個(gè)字節(jié)的周期增量值、4個(gè)字節(jié)的脈沖計(jì)數(shù)值。
3PTO指令在程序中的應(yīng)用
3.1控制要求
步進(jìn)電機(jī)控制要求如圖2所示,從A到B為加速過程,從B到C為恒速運(yùn)行,從C到D為減速過程。
根據(jù)控制要求,PLC需要輸出3段脈沖,這3段脈沖的參數(shù)分別為A一B段:200個(gè)脈沖,頻率從2kHz到10kHz均勻增加,周期從500uS到100uS均勻減小,周期增量為-2uS:B一C段:3600個(gè)脈沖,脈沖頻率和周期不變化:C一D段:頻率從10kHz到2kHz均勻減小,周期從100uS增加到500uS,周期增量為2uS。
包絡(luò)表的起始字節(jié)存放段數(shù)范圍為(1~255),本例中脈沖串為3段,包絡(luò)表初始字節(jié)設(shè)為VB200。
3.2程序編制
3.2.1編程思路
本例程序由主程序、子程序和中斷程序組成。其中,主程序中調(diào)用初始化子程序,復(fù)位00.0:在子程序中完成控制字設(shè)置及包絡(luò)表的建立,并啟動(dòng)脈沖串的輸出,建立中斷程序的連接:當(dāng)脈沖串完成時(shí),執(zhí)行中斷程序,這里用00.0輸出作為完成標(biāo)志。
3.2.2程序及說明
3.2.2.1主程序
LDSM0.1//SM0.1的常開觸點(diǎn)在首次掃描時(shí)接通一個(gè)掃描周期:
R00.0,1//首次掃描時(shí)復(fù)位00.0:
CALLSBR0:SBR0//首次掃描時(shí)調(diào)用子程序SBR0,設(shè)置PTO控制字和中斷。
3.2.2.2子程序
LDSM0.0//SM0.0常開觸點(diǎn)在PLC運(yùn)行期間接通:
M0VB3,VB200//VB200中存放的是脈沖串包絡(luò)表的段數(shù),這里設(shè)為3:
M0Vw+500,Vw201//第+段的初始周期設(shè)為500uS:M0Vw2,Vw203//第1段的脈沖周期增量為-2uS:
MoVD200,VD205//第1段的脈沖個(gè)數(shù)設(shè)為200:MoVw+100,Vw209//第2段的初始周期設(shè)為100u+:MoVw+0,Vw211//第2段的脈沖周期增量為0:MoVD+S600,VD21S//第2段的脈沖個(gè)數(shù)設(shè)為S600:MoVw+100,Vw217//第S段的初始周期設(shè)為100u+:MoVw+2,Vw219//第S段的脈沖周期增量為2u+:MoVD+200,VD221//第S段的脈沖個(gè)數(shù)設(shè)為200:LDSM0.0//PLC運(yùn)行期間接通:
MoVB16#A5,SMB67//PTo的控制字設(shè)為A5:其含義為允許PTo操作,多段操作,時(shí)基為微秒,脈沖周期和計(jì)數(shù)值刷新:
MoVw+200,SMw168//包絡(luò)表的起始地址設(shè)為200:
ATCHINT0:INT0,19//將中斷INT0和PTo0脈沖串輸出完成事件的聯(lián)系:
∶NI//允許中斷:
PLS0//按上述PTo控制字設(shè)置啟動(dòng)內(nèi)部脈沖發(fā)生器工作并輸出脈沖。
S.2.2.S中斷程序
LDSM0.0//PLC運(yùn)行期間接通:
E=1.0//當(dāng)中斷發(fā)生時(shí),=1.0有輸出,表示S段脈沖串輸出完成。
4結(jié)語
S7-200PLC的高速脈沖輸出指令PTo,通過設(shè)置控制字和包絡(luò)表,可以方便地實(shí)現(xiàn)多段脈沖串的周期和脈沖個(gè)數(shù)的控制,從而實(shí)現(xiàn)對(duì)步進(jìn)電機(jī)的速度和位移的多段控制。