菜鸟求助,我现在用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
-
引用 sweect 2017/9/22 8:29:55 发表于2楼的内容
-
-
swy 发表于 2017/9/24 16:21:48
前面回帖的程序,问题就在于,没有把CA T(S)和对于T(S)的定义内容方在同一行里。
GALIL的多线程,本质上是分时轮流执行的。轮流执行,每次是以一个程序行为单位。也就是说,#A开始的程序和#B开始的程序,是你一行我一行交错执行的。而且GALIL中不存在线程的保护,比如局部变量之类的,单一线程中的指令都会影响到其它线程的相关状态。
所以,在执行了CAT之后,立刻就执行了CAS,所以,无论是CR R1,0,360还是CR R2,0,360,都是针对S的定义,T中没有定义任何内容,这样在执行BGT时,就会产生错误,因为T中没有定义任何运动轨迹,没有运动可以开始。
引用 swy 2017/9/24 16:21:48 发表于3楼的内容
-
引用 a1123 2017/9/24 17:05:28 发表于4楼的内容