高下勞動
級別: 探索解密
|
這是我把修改的程序部分如圖所示:原程序中d14和d16是 分開的,分別控制兩段行程。后來我把d14和d16做了一個加法運算放d58.出現了一個問題。運行一一天 就會偶而出現那么一兩次y0脈沖數據還沒有 達到伺服就莫名停止了工作。y0前面的 點都是接通的。 想不 明白造成程序部 不 穩定的 因素在 哪里 |
---|---|
|
gufan8099663
級別: 略有小成
|
DMUL是雙字節乘法通道互相干涉,程序會把D178,D179的值乘以K200放在D14,D15,D16,D17里面,所以D16,D17被雙重占用,如果數值小沒有發生溢出就沒問題,數值一大通道就打架了 |
---|---|
|
二手工控電器
且行且珍惜
級別: 工控俠客
|
這應該是犯了最低級的數據寄存器使用間隔錯誤! |
|
---|---|---|
|
理論初學者
有需要才有進步,俺不管啥都會滿足你!
級別: 家園常客
|
那原來程序也是這樣使用為什么不打架呢?只是在下面做了個加運算就打架有點說不過去吧。 |
---|---|
|
高下勞動
級別: 探索解密
|
果然是 一語驚醒夢中。 原來是 一直以為32位只帶兩個寄存器,沒往這里 想沒仔細看手冊吃了 虧。 不過原作也是 這樣程序用了好久都沒 問題 ,因為用的32位 數值也排除溢出的 可能。我 只用dadd把d14和d16相加怎么就變得 不 穩定呢 ? 再次請教 |
---|---|
|