一:序言
?????? 比较输出看似是一个简单的问题,但是如果用的比较深入的话,有许多的细节需要注意,否则,就可能出现一些奇怪的现象。
二:DO的输出模式介绍
输出 nOUT7/DSND, nOUT6/ASND, nOUT5/CMPM, 及nOUT4/CMPP 是发自MCX314,且在系统重置后,每一个输出讯号状态为OFF。
通用输出与一般DO输出用法相同,功能相同,一般用作下面的信号:
?????? 马达驱动器使用的通用输出讯号,可用作xx错误计数器、重置警报、关闭感知器、等……或选择驱动加速/减速、位置计数器、及驱动中的输出比对缓存器。
??? 驱动状态比较输出的触发及逻辑电平关系如下表:
DO
|
描述
|
OUT4
|
Hi: if logical/real position counter >= COMP+ register
Low: if logical/real position counter < COMP+ register |
OUT5
|
Hi: if logical/real position counter < COMP- register
Low: if logical/real position counter >= COMP- register |
OUT6
|
When the driving command is engaged, the level becomes Hi once the driving status is in acceleration.
|
OUT7
|
When the driving command is engaged, the level becomes Hi once the driving status is in deceleration.
|
?通用输出电路图:
?
?
三:DO的模式配置
1)? 通用输出的时候:可以用P1240SetOutputType或者写寄存器的方式写SW3;
2)? 驱动状态指示输出:比较功能分五步来设定;
a)???????? 首先设定为驱动状态输出,方法与1)相同;
b)??????? 禁掉软限位,写寄存器SW2的相关位;如果双向比较的话,正负软限位都要禁掉;
c)???????? 设定比较的数据源来自Logical位置寄存器还是Real实际位置寄存器;
d)??????? 设定中断,正向运动设定>=COMP+,负向运动设定为<COMP-时触发;
e)???????? CompTable默认与COMP+寄存器捆绑,SpeedTable默认与COMP-寄存器捆绑,正向的时候,设定CompTable表,负向的时候设定SpeedTable;
注:正负换向的时候,必须重新设定中断与比较表,这一点必须非常清晰,否则一定不会得到期望的结果。
SW2与SW3见下图,具体设法参考另一篇关于寄存器细节的文章;
?
?
四:比较输出的驱动设计
?????? 根据需要设定板卡的比较跳线(仅仅对1240U,1240只支持单向比较)来设定单向比较还是双向比较;具体方式见下表:
?
当JP10跳在CMP时,其实1240的XOUT4引脚输出的是COMP+输出逻辑或上COMP-的输出。 XOUT4 = COMP+|| COMP-;
???????? COMP+状态输出: ? 当位置计数 < COMP+????? ??OUT4 = 0
当位置计数 >= COMP+????? OUT4 = 1
???????? COMP-状态输出: ?? 当位置计数 < COMP-????? ??OUT5 = 1
当位置计数 >= COMP-????? OUT5 = 0
???????? 正反向的上升沿触发功能需要同时使用COMP+,COMP-;
???????? 当正向运动时,让COMP-状态输出为0,此时用COMP+做Comptable功能。如果要想比较结束后保证电平为低可以在Comptable{zh1}再添加一位大于终点的数值。
???????? 当反向运动时,让COMP+状态输出为0,此时用COMP-做Speedtable功能。也同样在{zh1}添加一个小于起点的数值。
五:注意事项
在系统{dy}次运行的时候,虽然{dy}个比较点还没有到,可能仍然触发一个上升沿,原因是:P1240MotDevOpen之后,OUT4输出低电平,此时当前位置=0,COMP+的初始值为0,当位置计数 >= COMP+时OUT4 = 1,所以产生了一个上升沿,解决这个问题的办法是:在没有设定OUT输出模式为驱动状态指示输出之前,先给COMP+一个初始值,这样就不会出现没有比较就相等了。