PTO指令及其步進(jìn)電機(jī)控制系統(tǒng)中應(yīng)用
引言
步進(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)的控制器,通過(guò)執(zhí)行PTO指令控制輸出脈沖的周期和個(gè)數(shù):步進(jìn)電機(jī)驅(qū)動(dòng)器接受來(lái)自PLC的脈沖信號(hào),進(jìn)行功率放大和分配,用以驅(qū)動(dòng)步進(jìn)電機(jī),步進(jìn)電機(jī)的方向由PLC的方向信號(hào)控制,通過(guò)改變分配給步進(jìn)電機(jī)繞組的脈沖相序來(lái)改變轉(zhuǎn)向:步進(jìn)電機(jī)接受一個(gè)脈沖信號(hào)會(huì)產(chǎn)生一個(gè)步距角的位移。
2PTO指令介紹
2.1功能
PTO(PulseTrain0utput)是脈沖串輸出的簡(jiǎn)稱(chēng)。PTO指令可以控制00.0或00.l端輸出占空比為50%、周期和脈沖數(shù)可以指定的脈沖串,用以控制步進(jìn)電機(jī)的速度和位移。
2.2特殊存儲(chǔ)區(qū)
CPU224中有兩個(gè)高速脈沖發(fā)生器,每個(gè)高速脈沖發(fā)生器都有一個(gè)8位控制字、一個(gè)32位脈沖計(jì)數(shù)值、一個(gè)16位的周期值和一個(gè)l6位的脈寬值,這些值都放在特定的特殊存儲(chǔ)區(qū)中。例如,00.l端對(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為加速過(guò)程,從B到C為恒速運(yùn)行,從C到D為減速過(guò)程。
根據(jù)控制要求,PLC需要輸出3段脈沖,這3段脈沖的參數(shù)分別為A一B段:200個(gè)脈沖,頻率從2kHz到l0kHz均勻增加,周期從500μs到l00μs均勻減小,周期增量為-2μs:B一C段:3600個(gè)脈沖,脈沖頻率和周期不變化:C一D段:頻率從l0kHz到2kHz均勻減小,周期從l00μs增加到500μs,周期增量為2μs。
包絡(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程序及說(shuō)明
3.2.2.1主程序
LDsM0.l//sM0.l的常開(kāi)觸點(diǎn)在首次掃描時(shí)接通一個(gè)掃描周期:
R00.0,l//首次掃描時(shí)復(fù)位00.0:
CALLsBR0:sBR0//首次掃描時(shí)調(diào)用子程序sBR0,設(shè)置PTO控制字和中斷。
3.2.2.2子程序
LDsM0.0//sM0.0常開(kāi)觸點(diǎn)在PLC運(yùn)行期間接通:
M0VB3,VB200//VB200中存放的是脈沖串包絡(luò)表的段數(shù),這里設(shè)為3:
M0Vw+500,Vw20l//第l段的初始周期設(shè)為500μs:M0Vw2,Vw203//第l段的脈沖周期增量為-2μs:
MoVD200,VD205DD第1段的脈沖個(gè)數(shù)設(shè)為200:MoVw+100,Vw209DD第2段的初始周期設(shè)為100μs:MoVw+0,Vw211DD第2段的脈沖周期增量為0:MoVD+3600,VD213DD第2段的脈沖個(gè)數(shù)設(shè)為3600:MoVw+100,Vw217DD第3段的初始周期設(shè)為100μs:MoVw+2,Vw219DD第3段的脈沖周期增量為2μs:MoVD+200,VD221DD第3段的脈沖個(gè)數(shù)設(shè)為200:LDsM0.0DDPLC運(yùn)行期間接通:
MoVB16/A5,sMB67DDPTo的控制字設(shè)為A5:其含義為允許PTo操作,多段操作,時(shí)基為微秒,脈沖周期和計(jì)數(shù)值刷新:
MoVw+200,sMw168DD包絡(luò)表的起始地址設(shè)為200:
ATCHINT0:INT0,19DD將中斷INT0和PTo0脈沖串輸出完成事件的聯(lián)系:
∶NIDD允許中斷:
PLs0DD按上述PTo控制字設(shè)置啟動(dòng)內(nèi)部脈沖發(fā)生器工作并輸出脈沖。
3.2.2.3中斷程序
LDsM0.0DDPLC運(yùn)行期間接通:
=o1.0DD當(dāng)中斷發(fā)生時(shí),o1.0有輸出,表示3段脈沖串輸出完成。
4結(jié)語(yǔ)
s7#200PLC的高速脈沖輸出指令PTo,通過(guò)設(shè)置控制字和包絡(luò)表,可以方便地實(shí)現(xiàn)多段脈沖串的周期和脈沖個(gè)數(shù)的控制,從而實(shí)現(xiàn)對(duì)步進(jìn)電機(jī)的速度和位移的多段控制。