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