在CODESYS的例程中,有一个例程演示了如何控制delta机械手从一个移动的转盘中拾取一个工件(ring,圆环),然后放到移动的传送带上的托盘(cone,圆锥)中。这个例程在【C:\Program Files (x86)\CODESYS 3.5.19.40\CODESYS\CODESYS SoftMotion\Examples\Tutorial】里面。此例程还没用到电子凸轮功能。
估计是为了演示坐标的精准性,例程使用的是工件是圆环,托盘是圆锥,也就是把转盘中的圆环拾取起来,然后放置到圆锥上,套在上面。如下图所示:
主要难点是从一个运动的系统中拾取东西,然后放到另外一个运动的系统中。
需要特别注意的是,此例程中三个运动的主体:转盘、delta机械手、传送带,他们都是由CODESYS控制的。只有这样,他们之间才能快速地通讯、变换、同步。(主要是信息的同步,假如三个不是都由CODESYS控制,应该也是可以的,但是保证各个工件、设备的位置、速度等因素能够及时同步)。
这里先介绍用到的一些关键的功能块。
此功能块的主要作用是将传送带上工件的坐标系与机械手的PCS坐标系进行绑定(或者叫映射)。
其输入输出参数为:
AxisGroup:与机械手关联的轴组
ConveyorBelt:与传送带关联的轴
Execute:在上升沿执行
ConveyorBeltOrigin:指明传送带坐标系在世界坐标中的位置以及姿态。其中此坐标系的X轴必须指向传送带的运动方向。
InitialObjectPosition:指明被跟踪的物体(更准确的描述可能是物体的坐标原点)的初始位置及姿态(在传送带坐标系下)
CoordSystem:指明使用哪个产品坐标系(PCS_1或者PCS_2,只分配了两个,一般一个是用来拾取、一个是用来放下)
Done:此变换已经被成功设置。
Busy:此功能块还未执行完成。
InUse:表示轴组是否仍然需要引用的动态坐标系统。假如这个值为true,然后Execute上出现一个上升沿的话,会出现【SMC_AXIS_GROUP_PCS_STILL_IN_USE】错误;为了保持这个输出值为最新,此功能块需要放在连续执行的地方(哪怕Done已经为true);在到达用另外的坐标系表示的坐标之前,这个值会一直为True。
Error:表示功能块是否出现了错误
ErrorID:具体的错误id。
在手册中,有提到一个使用流程:
工件是放置在传送带上,传送带以速度Vcb运行。
可能会让人感到疑惑的是,在t1-t2时间中,机械臂是如何跟随着工件相对静止地操作的。
在例程中,其实并没有使用跟随(相对静止移动)这一个功能。而是:到达圆锥上方–立马下降放置工件–立马上升离开圆锥–立马返回等待点。可能是因为这一连串动作都是在PCS坐标系下操作,从某个角度看起来就像相对静止?
在此功能块执行完( Execute的上升沿为开始,Done为True为结束)之后,传送带上工件的坐标系会被关联至机械手上PCS坐标系中。关联之后,这个坐标系可能还会绑定了传送带的位移之类,成为一个动态坐标系。
当机械手需要走到工件的上方时,只需要在调用MC_MoveLinearAbsolute等运动功能块时,指定目标位置的坐标系统使用PCS即可。
总而言之,这个功能块是用来绑定工件的坐标系到机械臂的PCS坐标系的(或者说跟踪?)。
这个和前面的MC_TrackConveyorBelt功能块差不多。只不过这个功能块是处理圆盘的。