可以使伺服电机轴锁住(处于控制状态),但不能让伺服电机轴转动!是什么原因? 点击:6019 | 回复:13



yjchmike

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:13帖 | 10回
  • 年度积分:0
  • 历史总积分:48
  • 注册:2006年4月10日
发表于:2006-04-21 09:57:00
楼主
固高GT控制器+富士RYC101D3-VVT2伺服放大器+伺服电机

可以使伺服电机轴锁住(处于控制状态),但不能让伺服电机轴转动 ,是什么原因?
运行下面程序后,输出Status:0301  Status:0701  
#include "GT400.h"
#include "stdio.h"

void error(short eno)
{
unsigned short msg;
switch(eno)
{
case -1:
printf("Error:Communication error!\n");
break;
case 0:
/*no error*/
break;
case 1:
GT_GetCmdSts(&msg);
printf("Error: Command Error with message: %04x\n", msg);
case 2:
case 3:
case 4:
case 5:
case 7:
printf("Error: Parameter Error.\n");
break;
case 6:
printf("Error: Map is Error.\n");
break;
default:
break;
}
}
void GTInitial()
{
short rtn;
rtn = GT_Open();
error(rtn);
rtn = GT_Reset();
error(rtn);
rtn = GT_SwitchtoCardNo(0);
error(rtn);
rtn = GT_SetSmplTm(200);
error(rtn);
for(int i=1; i<3; i++)
{
rtn = GT_Axis(i);
rtn = GT_SetIntrMsk(0);
}
}

void InputCfg()
{
short rtn;
unsigned int enc_sense = 0xF;


rtn = GT_EncSns(enc_sense); error(rtn);
}

void AxisInitial()
{
short rtn;

rtn = GT_Axis(1); error(rtn); //set the current axis 
rtn =GT_LmtsOff();error(rtn);
rtn = GT_ClrSts(); error(rtn); //clear error status
rtn = GT_CtrlMode(0); error(rtn); //set the output method, voltage or pulse
rtn = GT_CloseLp(); error(rtn); //set the close loop control method
//rtn = GT_OpenLp(); error(rtn); 

rtn = GT_SetKp(20); error(rtn);
rtn = GT_SetKi(0); error(rtn);
rtn = GT_SetKd(10); error(rtn);
rtn = GT_SetKvff(0); error(rtn);
rtn = GT_SetKaff(0); error(rtn);
rtn = GT_SetMtrBias(10); error(rtn);
rtn = GT_Update(); error(rtn);
rtn = GT_AxisOn(); error(rtn);
}

void VMotion()
{
short rtn;
unsigned short status;
long pos;

rtn = GT_GetSts(&status);error(rtn);
printf("Status: %04x\n", status);
rtn = GT_GetPosErr(&status);error(rtn);
printf("Position error: %d\n", status);
rtn = GT_GetAtlPos(&pos);error(rtn);
printf("Current Position: %ld\n", pos);
   

rtn = GT_PrflV(); error(rtn);
rtn = GT_SetAcc(0.01); error(rtn);
rtn = GT_SetVel(1); error(rtn);
rtn = GT_Update(); error(rtn);

rtn = GT_GetSts(&status);error(rtn);
printf("Status: %04x\n", status);
rtn = GT_GetAtlPos(&pos);error(rtn);
printf("Current Position: %ld\n", pos);
}

void main()
{unsigned short status;
int d;
short rtn = 0;
GTInitial();
InputCfg();
AxisInitial();
VMotion();
scanf("%d", &d);
GT_AxisOff();
GT_Close();

}



刘岩利

  • [版主]
  • 精华:2帖
  • 求助:0帖
  • 帖子:16帖 | 8239回
  • 年度积分:397
  • 历史总积分:28760
  • 注册:2005年3月09日
发表于:2006-04-22 10:14:00
1楼
你还是问固高吧,这样贴源代码上来,没有几个人看得懂,C指令是比较通用的东西,可是固高的函数有多少人懂?

yjchmike

  • 精华:0帖
  • 求助:0帖
  • 帖子:13帖 | 10回
  • 年度积分:0
  • 历史总积分:48
  • 注册:2006年4月10日
发表于:2006-04-22 13:39:00
2楼
谢谢刘版主!
    我在代码里让控制器输出脉冲量.但查看伺服放大器面板上的显示:输入脉冲频率为零。是不是可以肯定控制器没有输出脉冲量,所以伺服电机轴不转动?

刘岩利

  • [版主]
  • 精华:2帖
  • 求助:0帖
  • 帖子:16帖 | 8239回
  • 年度积分:397
  • 历史总积分:28760
  • 注册:2005年3月09日
发表于:2006-04-22 13:41:00
3楼
用示波器来检查一下,才能确认是不是有脉冲输出。

yjchmike

  • 精华:0帖
  • 求助:0帖
  • 帖子:13帖 | 10回
  • 年度积分:0
  • 历史总积分:48
  • 注册:2006年4月10日
发表于:2006-04-24 20:28:00
4楼
刘老师:
   我用示波器来检查了,有脉冲输出。但伺服放大器面板上的显示:输入脉冲频率为零。 我找不出什么原因!

刘岩利

  • [版主]
  • 精华:2帖
  • 求助:0帖
  • 帖子:16帖 | 8239回
  • 年度积分:397
  • 历史总积分:28760
  • 注册:2005年3月09日
发表于:2006-04-24 21:53:00
5楼
接线是否正确?信号的电压、电流是否匹配?信号的格式(脉冲/方向、CW/CCW、正交方波)?

李劲松

  • 精华:0帖
  • 求助:0帖
  • 帖子:12帖 | 448回
  • 年度积分:0
  • 历史总积分:585
  • 注册:2005年12月11日
发表于:2006-05-15 22:15:00
6楼
“我用示波器来检查了,有脉冲输出。但伺服放大器面板上的显示:输入脉冲频率为零。 我找不出什么原因!”

你用rtn = GT_CtrlMode(0);,输出就被设置成模拟电压输出,你自然量不到脉冲(后面你又量到脉冲我很奇怪,除非你改了代码没贴出来。

电机轴能锁住,说明电机驱动器工作了,也没报警。不动的原因可能是你接错线,也有可能输出脉冲模式不对,比如固高卡默认的是方向加脉冲,而你的驱动器设置成了双脉冲。

沈阳老宋

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 778回
  • 年度积分:0
  • 历史总积分:823
  • 注册:2004年9月30日
发表于:2006-05-15 22:26:00
7楼
小李对固高挺专业啊,哈哈
TO:张杰:你的富士伺服是在哪个公司购买的?您在那里?对于富士伺服的问题,或许我能帮你。

李劲松

  • 精华:0帖
  • 求助:0帖
  • 帖子:12帖 | 448回
  • 年度积分:0
  • 历史总积分:585
  • 注册:2005年12月11日
发表于:2006-05-15 22:52:00
8楼
不能说专业,偶的一个产品上用过他的卡。
有段时间没跟老宋联系了!你上次寄给我的PMAC卡有没有再详细点的资料?

yjchmike

  • 精华:0帖
  • 求助:0帖
  • 帖子:13帖 | 10回
  • 年度积分:0
  • 历史总积分:48
  • 注册:2006年4月10日
发表于:2006-05-16 12:41:00
9楼
TO沈阳老宋 沙边小李 刘版主:
  谢谢你们!电机可以转了!我在浙江,富士伺服在上海买的
     

沈阳老宋

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 778回
  • 年度积分:0
  • 历史总积分:823
  • 注册:2004年9月30日
发表于:2006-05-16 21:12:00
10楼
TO: 张杰:
您的这个项目是做什么用的,我看电机很小,富士伺服我比较了解,有问题可以交流,我邮箱:shenyang@bjservo.com
TO:小李
今天发过一个邮件给你的ljs1384@yahoo.com.cn
不知道收到没有,PMAC卡,明天我在看看有没有其他资料。PMAC卡我给你的光盘资料是最全面的,不过内容比较多,需要你花时间仔细研究,回头我在给你这个邮箱发点东西。6月12日北京有个展会,如果你能来就最好拉,我也会去,我们公司有展位。

yjchmike

  • 精华:0帖
  • 求助:0帖
  • 帖子:13帖 | 10回
  • 年度积分:0
  • 历史总积分:48
  • 注册:2006年4月10日
发表于:2006-05-17 10:53:00
11楼
 TO藏心阁:不要在我的帖子里发广告! 

TO沙边小李: 
你有没有分别在固高两块板上的轴做插补的VC++程序?
如果有,请发给我一个  谢谢 yjchmike@sina.com

入门小子

  • 精华:0帖
  • 求助:0帖
  • 帖子:29帖 | 141回
  • 年度积分:0
  • 历史总积分:0
  • 注册:2004年6月09日
发表于:2006-05-17 14:18:00
12楼
你用什么编的。你在AxisOff 前面加个延时看看.

李劲松

  • 精华:0帖
  • 求助:0帖
  • 帖子:12帖 | 448回
  • 年度积分:0
  • 历史总积分:585
  • 注册:2005年12月11日
发表于:2006-05-17 21:49:00
13楼
你是在同一主板上插2块卡吗,要使两块卡上的某个轴与另一块板卡上的某个轴插补运动?

热门招聘
相关主题

官方公众号

智造工程师