关于ADD_DAC的问题,在这里已经为你做了解答。
关于上面这个问题,实际上是你对Trio控制器的程序执行的理解问题。在Trio控制器内编写程序时需要特别注意“运动指令”和“普通指令”的处理过程区别,“普通指令”(例如参数赋值,数值计算,逻辑判断等)是按照程序顺序依次执行的,而“运动指令”的处理则要复杂一些,简单说,用户程序只是去触发运动指令,而不是去执行运动指令,这样在触发到实际执行之间就会有一个时间差,正是这个时间差造成你有很多的疑惑。就拿你上面这个例子来说,当程序去“触发”move指令后,move指令会在系统内核的调度下,传递到对应轴上开始运动,但你的用户程序则在“触发”完move指令后,立刻开始去执行wait until remain<10,此时move指令还在传递过程中,remain参数还未因为这个move指令而被赋值(remain此时还是0),所以你的程序一判断,remain<10条件成立,则接下来去执行speed=1,所以你会看到电机从开始到结束都是speed=1。至于改成while语句后为什么就可以的原因,其实也很简单,因为while语句的逻辑判断所需要的CPU执行时间要稍微长一些,而此时move指令正好已经被轴装载开始执行了,所以好像没有问题,实际上这样同样存在程序的隐患。
正确的做法,在运动指令后面加上一句话“wait loaded ”,这句话的意思等待运动指令开始被执行,这样就会彻底根除你程序内的隐患。
对于运动指令从触发到被执行的系统内核处理的逻辑过程,请参考这里
回复内容:
对:zlzxw 关于 eledesigner@yeah.ent ,楼上兄台给我发一份,THANKS A LOT. 内容的回复:
邮箱地址留错了~~~
域名不存在,或者您写错了对方的邮箱域名,所以无法发送成功。