刘工:
您好。
之前有请教过您,也得到了回复。非常有帮助,非常感谢。现在我这又遇到一个问题,想请教一下您。
galil的以太网控制器DMC-1846,控制转台,不带位置反馈时,反馈回的数据没问题,利用“DP,0”,“TP,Y”,指令。但是用命令"DE,0", "TD,Y",应该反馈回来是0或者是很小的一个数,但是现在也没有其他的指令,反馈回来的数很大,并且是一直累加的。转台的编码器是HEIDENHEIN的RON-886.不知道是哪里出了问题。这个编码器也是前不久才返到HEIDENHEIN那边检修的。应该不是编码器的问题吧。
大致就是这样一个现象。谢谢。
刘老师,今天又出现一个问题了。不知道怎么回事。编码器是辅编码器,反馈回来的1°对应20000脉冲数。电机编码器是主编码器,1°对应100/360*8192个脉冲数 。
如果直接在DMC-terminal里编辑
DE,0
AC,5000
DC,5000
SP,5000
PR,100/360*8192*10 ‘(对应的转台转动10°)
BGY
TDY
反馈回来的脉冲数是199980。
但是在VB编程里也是这样编写的,如:
Dim rc As String
Dim hDmc As Long
Dim Response As String * 256
Dim val2 As String
Private Sub Command1_Click()
rc = DMCCommand(hDmc, "DE,0", Response, 256)
val2 = "PR," & Str(100 / 360 * 8192 * 10)
rc = DMCCommand(hDmc, val2, Response, 256)
rc = DMCCommand(hDmc, "BGY", Response, 256)
rc = DMCCommand(hDmc, "AMY", Response, 256)
rc = DMCCommand(hDmc, "TDY", Response, 256)
Text1.Text = Str(Val(Response))
End Sub
Private Sub Form_Load()
Controller = 1
rc = DMCOpen(Controller, 0, hDmc)
End Sub
Private Sub Form_Unload(Cancel As Integer)
rc = DMCClose(hDmc)
End Sub
这样text里显示的数值是177550,相差太大了。为什么会这样呢,按道理来讲,命令是一样的,反馈回来的数值应该也一样啊。是不是长度定义有问题?
希望刘老师能帮我看看,谢谢了。
抱歉,昨天还真没仔细看您的VB程序。
程序确实有点问题,问题就在rc = DMCCommand(hDmc, "AMY", Response, 256)上。
1、AMY并不意味着电机运动真正的结束,只是意味着它应该结束了。实际电机的动作与这个“应该”多少总是有点不一致的,通常是滞后。也就是说,您在VB程序中读TDY反馈时,电机还没走到位置。从数据的差异来看您的电机滞后不少,建议增加KP、KI等增益参数。
换成相应的延时.
Dim rc As String
Dim hDmc As Long
Dim Response As String * 256
Dim val2 As String
Private Sub Command1_Click()
rc = DMCCommand(hDmc, "DE,0", Response, 256)
val2 = "PR," & Str(100 / 360 * 8192 * 10)
rc = DMCCommand(hDmc, val2, Response, 256)
rc = DMCCommand(hDmc, "BGY", Response, 256)
End Sub
Private Sub Timer1_Timer()
rc = DMCCommand(hDmc, "TDY", Response, 256)
Text1.Text = Str(Val(Response))
End Sub
Private Sub Form_Load()
Controller = 1
rc = DMCOpen(Controller, 0, hDmc)
End Sub
Private Sub Form_Unload(Cancel As Integer)
rc = DMCClose(hDmc)
End Sub
刘老师,现在有个问题想请教您。
之前我跟您说过,我们的驱动是安川的,控制卡是DMC-1846,互联模块是PICM-3900S。
之前驱动是速度控制,连接方式是半闭环控制。反馈是从驱动模块CN1出来连接到互联模块输出口Y上的。这种方式运动没什么问题。
现在我们将连接方式改成全闭环了。反馈是从外置圆编码器RON886直接连到互联模块输出口Y上,驱动还是速度控制。各种参数也没改。用上位机命令JG,5000;BGY.相比之前的连接方式,同样的指令。速度变的很慢,并且现在做试验,在转台的固定的两个点上有窜动,不知道什么原因。还请刘老师给分析一下。谢谢。