在步进电机位置控制中采用了工控机通过数据采集卡6126和8316向步进电机控制器发脉冲来控制步进电机的运动,可有几个问题我一直想不明白,想向各位大侠请教一下。
原始的控制程序如下:
Private Sub xdd_Click()
Dim kAs Integer
Dim iAs Integer
Do While i <= 1024
i = i + 1
k = W_6126_DO(DO_LOW_BYTE, 5)
k = W_6126_DO(DO_LOW_BYTE, 5)
k = W_6126_DO(DO_LOW_BYTE, 5)
k = W_6126_DO(DO_LOW_BYTE, 5)
i = i + 1 - 1
k = W_6126_DO(DO_LOW_BYTE, 4)
k = W_6126_DO(DO_LOW_BYTE, 4)
k = W_6126_DO(DO_LOW_BYTE, 4)
i = i
i = i
Loop
k = W_6126_DO(DO_LOW_BYTE, 16)
End Sub
第一个问题是:
对于原始程序根据我的理解是工控机向步进电机控制器发了1024个脉冲,然后我根据步进电机的相关参数计算出步进电机应该运行40um,可我用激光干涉仪测得的实际距离只有2um左右。我想问一下各位大侠,数据卡向步进电机发脉冲的原理是怎样的,这段程序向步进电机驱动器具体发送了多少个脉冲?步进电机按照这个脉冲数准确的运动距离应该是多少?
第二个问题是:
在程序中为什么要重复的给数据卡的数字输出口写入控制字?我曾经试着改变重复写入的次数,发现只写入一次时,步进电机无法运行。我想问一下,只写一次为什么不行呢?
请各位大虾赐教,谢谢各位大侠了
|