我都用最笨的辦法,整個(gè)程序中每個(gè)軸只有一處脈沖驅(qū)動(dòng)指令(手動(dòng)不算,手動(dòng)是單寫的),通過(guò)管理寄存器的值和啟動(dòng)條件進(jìn)行位置切換。
最愚蠢的辦法就是
ld GoPos1 D200=位置1,D202=速度1
ld GoPos2 D200=位置2,D202=速度2
ld GoPos3 D200=位置3,D202=速度3
.。。。
ld GoPosn D200=位置n,D202=速度n
然后GoPos1~GoPosn是嚴(yán)格互斥的,任意時(shí)刻只有一個(gè)被置位,位置多了專門用一個(gè)D寫索引做數(shù)值比較也是可以的(還可以用間接尋址,更方便)
任意posn置位后會(huì)同步輸出 act,類似于 GoPos1 or GoPos2 or GoPos3.。。or GoPosn out Act 然后
ld Act DDRVA D200 D202 Y0 Y4
同時(shí)運(yùn)動(dòng)結(jié)束觸點(diǎn)輸出到EndPosn
ld m8029 and GoPos1 set EndPos1
and GoPos2 set EndPos2
and GoPos2 set EndPos2
。。。
and GoPosn set EndPosn
然后程序里面就超級(jí)簡(jiǎn)單了,要去哪個(gè)位置直接置位,比如說(shuō)去位置1直接set GoPos1,然后等著EndPos1來(lái)進(jìn)入下一步,基本上把伺服當(dāng)氣缸用~