同时执行S、T坐标系下正弦曲线运动 点击:1044 | 回复:18



18328063092

    
  • 精华:0帖
  • 求助:2帖
  • 帖子:6帖 | 23回
  • 年度积分:0
  • 历史总积分:43
  • 注册:2016年3月08日
发表于:2016-11-01 11:14:34
楼主

菜鸟求助,我现在用DMC4020控制两个音圈电机作正弦运动,目前可实现单个轴在S或T坐标系下的循环运动,但是同时执行却想不出怎么实现,望各位大神指点一二!

下面是目前的程序

BR1,1

SHAB

R1=100

R2=100

VST= 10000

VSS= 10000

I=1000

J=1000

A=0

B=0

WT3000


#A

CA T;' Specify T coordinate system

VM AN;' Declare A and N-axis as S-plane

CR R1,0,360;' Generate circle with radius of 1000 counts

VE;' End Sequence

BG T;' Start motion of T-plane

#LOOA

A=A+1

CR R1,0,360

VE

#WAITA

JP#LOOA,_LMT>1

JP#WAITA,A<I

STT

AMT

CST


#B

CA S;'Specify S-plane

VM BM;'Declare B and M-axis as S-plane

CR R2,0,360;' Generate circle with radius of 1000 counts

VE;' End Sequence

BG S;'Begin movement on S-plane

#LOOB

B=B+1

CR R2,0,360

VE

#WAITB

JP#LOOB,_LMS>1

JP#WAITB,B<J

#STOP

ST;   'stops motion

AMS;  'waits for motion to complete

VE;  'ends vector mode

CSS;  'clears all sine waves out of vector buffer

MG"finished"

EN





Jenny_zy

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:0
  • 注册:2016年11月01日
发表于:2016-11-01 15:52:00
1楼
18328063092 个人主页 给TA发消息 加TA为好友 发表于:2016-11-01 11:14:34 楼主

您可以在不同的线程来运行#A和#B。可参考如下修改后的程序。


BR1,1

SHAB

R1=100

R2=100

VST= 10000

VSS= 10000

I=1000

J=1000

A=0

B=0

WT3000

XQ #A,1

XQ #B,2

EN


#A

CA T;' Specify T coordinate system

VM AN;' Declare A and N-axis as S-plane

CR R1,0,360;' Generate circle with radius of 1000 counts

VE;' End Sequence

BG T;' Start motion of T-plane

#LOOA

A=A+1

CR R1,0,360

VE

#WAITA

JP#LOOA,_LMT>1

JP#WAITA,A<I

STT

AMT

CST

EN


#B

CA S;'Specify S-plane

VM BM;'Declare B and M-axis as S-plane

CR R2,0,360;' Generate circle with radius of 1000 counts

VE;' End Sequence

BG S;'Begin movement on S-plane

#LOOB

B=B+1

CR R2,0,360

VE

#WAITB

JP#LOOB,_LMS>1

JP#WAITB,B<J

#STOP

ST;   'stops motion

AMS;  'waits for motion to complete

VE;  'ends vector mode

CSS;  'clears all sine waves out of vector buffer

MG"finished"

EN


18328063092

  • 精华:0帖
  • 求助:2帖
  • 帖子:6帖 | 23回
  • 年度积分:0
  • 历史总积分:43
  • 注册:2016年3月08日
发表于:2016-11-01 16:41:59
2楼


回复内容:

对: Jenny_zy 18328063092 个人主页 给TA发消息 加TA... 内容的回复!


按照您给的意见运行了一下,GALILTOOL提示了一个错误,不知怎么解决

?20 BG T;' Start motion of T-plane


18328063092

  • 精华:0帖
  • 求助:2帖
  • 帖子:6帖 | 23回
  • 年度积分:0
  • 历史总积分:43
  • 注册:2016年3月08日
发表于:2016-11-02 09:05:53
3楼


回复内容:

对: Jenny_zy 错误码20 表示“电机关断启动无效”,您先确定是否电机... 内容的回复


提示的20表示的应该不是错代码,应该是错误所处的行号,刚才试了一下,两电机是使能的。若单独运行XQ#A,1或者XQ#B,2,A电机或B电机是可以单独运行的。

刘岩利

  • [版主]
  • 精华:2帖
  • 求助:0帖
  • 帖子:17帖 | 8240回
  • 年度积分:397
  • 历史总积分:28760
  • 注册:2005年3月09日
发表于:2016-11-02 10:11:58
4楼

BR1,1
SHAB

R1=100

R2=100

VST= 10000

VSS= 10000

I=1000

J=1000

A=0

B=0

WT3000

XQ #A,1

XQ #B,2

EN


#A

CA T;VM AN;CR R1,0,360;BG T

#LOOA

A=A+1

CAT;CR R1,0,360

#WAITA

JP#LOOA,_LMT>1

JP#WAITA,A<I

CAT;VE

AMT

CST

EN
#B

CA S;VM BM;CR R2,0,360;BG S

#LOOB

B=B+1

CAS;CR R2,0,360

#WAITB

JP#LOOB,_LMS>1

JP#WAITB,B<J

CAS;VE

AMS;  'waits for motion to complete

CSS;  'clears all sine waves out of vector buffer

MG"finished"

EN

如果用单一线程的话,处理有点麻烦

BR1,1

SHAB

R1=100

R2=100

VST= 10000

VSS= 10000

I=1000

J=1000

A=0

B=0

WT3000

CA T

VM AN

CR R1,0,360

CA S

VM BM

CR R2,0,360

BG ST;

#LOOP

IFA<I

IF_LMT>1

A=A+1

CAT

CR R1,0,360

ENDIF

ELSE

IFA=I

A=A+1

CAT

VE

ENDIF

ENDIF

IF B<J

IF_LMS>1

B=B+1

CAS

CR R2,0,360

ENDIF

ELSE

IFB=J

B=B+1

CA S

VE 

ENDIF

ENDIF

JP#LOOP,(A<=I)|(B<=J)

AM ST

CS ST

MG"finished"

EN

 

刘岩利

  • [版主]
  • 精华:2帖
  • 求助:0帖
  • 帖子:17帖 | 8240回
  • 年度积分:397
  • 历史总积分:28760
  • 注册:2005年3月09日
发表于:2016-11-02 10:14:18
5楼

上面程序中的CS命令是多余的,忘记删掉了。

18328063092

  • 精华:0帖
  • 求助:2帖
  • 帖子:6帖 | 23回
  • 年度积分:0
  • 历史总积分:43
  • 注册:2016年3月08日
发表于:2016-11-02 11:06:07
6楼


回复内容:

对: 刘岩利 BR1,1SHABR1=100R2=100VST= 1... 内容的回复!

可以实现运行了,感谢刘工以及您同事的帮助!

刘岩利

  • [版主]
  • 精华:2帖
  • 求助:0帖
  • 帖子:17帖 | 8240回
  • 年度积分:397
  • 历史总积分:28760
  • 注册:2005年3月09日
发表于:2016-11-02 14:21:10
7楼

    前面回帖的程序,问题就在于,没有把CA T(S)和对于T(S)的定义内容方在同一行里。

 

    GALIL的多线程,本质上是分时轮流执行的。轮流执行,每次是以一个程序行为单位。也就是说,#A开始的程序和#B开始的程序,是你一行我一行交错执行的。而且GALIL中不存在线程的保护,比如局部变量之类的,单一线程中的指令都会影响到其它线程的相关状态。

 

    所以,在执行了CAT之后,立刻就执行了CAS,所以,无论是CR R1,0,360还是CR R2,0,360,都是针对S的定义,T中没有定义任何内容,这样在执行BGT时,就会产生错误,因为T中没有定义任何运动轨迹,没有运动可以开始。

18328063092

  • 精华:0帖
  • 求助:2帖
  • 帖子:6帖 | 23回
  • 年度积分:0
  • 历史总积分:43
  • 注册:2016年3月08日
发表于:2016-11-10 10:33:15
8楼


回复内容:

对: 刘岩利     前面回帖的程序,问题就在于,没有把CA T(S... 内容的回复!

恩,大概明白您讲的了。现在又遇到一个问题,我现在要把A和B轴的电机设置频率相同,但是B轴电机的幅值是A电机的两倍,我是通过把R2和VSS均设为R1和VST的两倍,但是随着电机的运行,两电机之间的位移关系会发生变化,B轴电机会逐渐超前A电机。

刘岩利

  • [版主]
  • 精华:2帖
  • 求助:0帖
  • 帖子:17帖 | 8240回
  • 年度积分:397
  • 历史总积分:28760
  • 注册:2005年3月09日
发表于:2016-11-11 08:54:11
9楼

如果您希望两轴的动作协调一致。那么,不建议用两个独立的插补。

BR1,1
SHAB

R1=100

VSS= 10000

I=1000

A=0

B=0

WT3000

GR0,0

GA,CA

GR,2

CAS

VM AN

CR R1,0,360

BG S

BG S

#LOOA

A=A+1

CR R1,0,360

#WAITA

JP#LOOA,_LMT>1

JP#WAITA,A<I

VE

AM S

MG"finished"

EN

18328063092

  • 精华:0帖
  • 求助:2帖
  • 帖子:6帖 | 23回
  • 年度积分:0
  • 历史总积分:43
  • 注册:2016年3月08日
发表于:2016-11-11 09:21:55
10楼


回复内容:

对: 刘岩利 如果您希望两轴的动作协调一致。那么,不建议用两个独立的... 内容的回复!

之前想到过,用电子齿轮命令,但是如果我要任意设置B轴的频率和幅值,这种方法就可能没办法实现。我昨天按之前您讲的多线程程序和单一线程调试过,如果没有TM指令,且半径R不大于150的情况下是可以实现的,但是没有TM指令后,galiltool采集保存的文件时间采样周期大约2ms,较大了。请问刘工还有没有其他方法实现我这种运动结果?

刘岩利

  • [版主]
  • 精华:2帖
  • 求助:0帖
  • 帖子:17帖 | 8240回
  • 年度积分:397
  • 历史总积分:28760
  • 注册:2005年3月09日
发表于:2016-11-11 14:57:49
11楼

如果不用同步,只用两个独立的插补来实现,原则上应该也没有问题。你所遇到的问题,我不太确定是由什么原因引起的,也许与数据和运算误差有关。您把您的完整程序,以及会带来问题的数据(包括TM)都贴上来方便么?

18328063092

  • 精华:0帖
  • 求助:2帖
  • 帖子:6帖 | 23回
  • 年度积分:0
  • 历史总积分:43
  • 注册:2016年3月08日
发表于:2016-11-12 11:32:10
12楼


回复内容:

对: 刘岩利 如果不用同步,只用两个独立的插补来实现,原则上应该也没... 内容的回复!

BR1,1

SHAB

R1=100

R2=200

VST= 5000

VSS= 20000

I=10000

J=10000

VA16414000,16414000

VD16414000,16414000

A=0

B=0

WT3000

KP30,30

KD135,135

KI0,0

TM200

DM TIME[1500],TDA[1500]

RA TIME[],TDA[]

RD TIME,_TDA

RC1

            

XQ #A,1

XQ #B,2


EN


#A

CA T;VM AN;CR R1,0,360;BG T

#LOOA

A=A+1

CAT;CR R1,0,360

#WAITA

JP#LOOA,_LMT>1

JP#WAITA,A<I

CAT;VE

AMT

CST

EN


#B

CA S;VM BM;CR R2,0,360;BG S

#LOOB

B=B+1

CAS;CR R2,0,360

#WAITB

JP#LOOB,_LMS>1

JP#WAITB,B<J

CAS;VE

AMS

CSS

EN


RPA RPB分别是A电机和B电机的参考位置曲线,下面三图分别是三个不同时刻采集到的数据,可以看出RPA和RPB的相对位置关系发生变化,而我设置的程序中,B的频率是A的两倍,理论上讲相对位置关系不会发生变化。


刘岩利

  • [版主]
  • 精华:2帖
  • 求助:0帖
  • 帖子:17帖 | 8240回
  • 年度积分:397
  • 历史总积分:28760
  • 注册:2005年3月09日
发表于:2016-11-12 15:22:37
13楼

手头没有卡,没法测试。您尝试一下下面的参数组合

TM250

VST=504

VSS=2016

或者

TM125

VST=512

VSS=2048


刘岩利

  • [版主]
  • 精华:2帖
  • 求助:0帖
  • 帖子:17帖 | 8240回
  • 年度积分:397
  • 历史总积分:28760
  • 注册:2005年3月09日
发表于:2016-11-12 15:31:02
14楼

GALIL的指令手册中,针对VS指令的分辨率没有太详细的说明,但是在SP指令中说明了,在不同的TM设置下,速度的设置分辨率是不同的,如果忽略了这一点,会 导致实际设置的速度与您写的数字有微小差异,那么相应的倍数关系就可能不准了。VS的设置,应该也会有类似的情况。


是否还会有其它的因素,我暂时还没有想到。 

18328063092

  • 精华:0帖
  • 求助:2帖
  • 帖子:6帖 | 23回
  • 年度积分:0
  • 历史总积分:43
  • 注册:2016年3月08日
发表于:2016-11-13 10:04:31
15楼

回复内容:

对:刘岩利 手头没有卡,没法测试。您尝试一下下面的参数组合TM250VST=504VSS=2016或者TM125VST=512VSS=2048     内容的回复:

您提供的这两组参数,是可行的,相对位置关系没有发生变化

刘岩利

  • [版主]
  • 精华:2帖
  • 求助:0帖
  • 帖子:17帖 | 8240回
  • 年度积分:397
  • 历史总积分:28760
  • 注册:2005年3月09日
发表于:2016-11-13 20:27:55
16楼

既然问题解决了,那应该就是这个因素了,我明天就不试了。

至于其它的TM值,您自己算一个合适的速度值吧。当TM值是默认的1000时,速度只要是偶数,就可以。

对于其它的TM值,速度设置值的分辨率,是2*1000/_TM。另外,TM的设置也是有一定分辨率的,不是随便设置的,比如您设置的TM200,就不会是一个准确的有效的值。对于TM的分辨率,您看一下手册就行了。

18328063092

  • 精华:0帖
  • 求助:2帖
  • 帖子:6帖 | 23回
  • 年度积分:0
  • 历史总积分:43
  • 注册:2016年3月08日
发表于:2016-11-14 09:19:03
17楼

回复内容:

对:刘岩利 既然问题解决了,那应该就是这个因素了,我明天就不试了。至于其它的TM值,您自己算一个合适的速度值吧。当TM值是默认的1000时,速度只要是偶数,就可以。对于其它的TM值,速度设置值的分辨率,是2*1000/_TM。另外,TM的设置也是有一定分辨率的,不是随便设置的,比如您设置的TM200,就不会是一个准确的有效的值。对于TM的分辨率,您看一下手册就行了。     内容的回复:

我现在TM值没有设置,R1=100,R2=200,VST=10000,VSS=20000  运行后依然会发生变化,而在同样的速度之下,我当把R1=50,R2=100后,不会发生变化,大概试了几组参数R值都设定为小于150时,不发生变化,我在想是不是R值的影响。

刘岩利

  • [版主]
  • 精华:2帖
  • 求助:0帖
  • 帖子:17帖 | 8240回
  • 年度积分:397
  • 历史总积分:28760
  • 注册:2005年3月09日
发表于:2016-11-14 09:37:37
18楼

半径也是会有影响的,但是这个大概就很难找到明确的规律了。给定半径计算圆周长,必然也是存在着误差的。当半径在某个区段内,误差是一致的,比如都是忽略了尾数0.00001和0.00002。而半径在不同区段内,误差就是不一致的,比如一个忽略了0.00004,另一个是把0.00008进成了0.0001。

圆周率是个无理数,是不能准确的用数字表达的,这个宇宙中是谁对此都不会有办法的,除非您不用这种方式实现正弦波,而是用PVT的方式自己来构造。


热门招聘
相关主题

官方公众号

智造工程师