参阅相关示例程序 "CNCdirect.project" 基于配置文件 "softmotion.cfg"!
1. 在CNC编辑器中创建NC程序:
我们创建了一个示例程序,x在 [0,100] 范围内运动 y 在 [0,100]范围内运动。并且我们定义了路径的速度和加速度并在路径上设置了两个开关。示例:
编译模式选择 SMC_OutQueue。
还有一个比较重要的元素是 SMC_Interpolator 模块。输入端 poqDataIn 获得CNC程序的地址。除此之外 IEC- 任务循环时间必须被写成循环时间。可以使用一个常量在输入端 dwIpoTime直接输入,或者使用轴变量结构中的 dwCycle (PLC 配置),后者更有优势 – 如果你修改任务的扫描时间 – 那么当前时间将自动作为插补扫描时间的输入。
在这个示例程序中我们希望对一个并联系统进行控制。首先从函数库 SM_Trafo.lib 插入一个正向和反向变换模块实例 。正向坐标变换实例作为驱动器的一个输入 ( Z-驱动器是通过另一个变量进行分配的,而不是通过类型 AXIS_REF);反向变换模块必须获得插补的目标位置:
模块的输出,也就是说轴的坐标,必须被写到驱动器中。为了实现这个目的,功能块 SMC_ControlAxisByPos 被使用。因为我们的应用程序中不能保证插补的连续输出 (例如,结束点的坐标不同于起点的坐标),我们应该激活间隙功能 (bAvoidGaps, fGapVelocity, fGapAcceleration, fGapDeceleration),并且需要连接插补模块的 bEmergency_Stop 与插补输出并且需要连接插补输出的 iStatus 与轴控制模块的相应输入。
请注意在使用 CFC 进行程序编写时其中元素的顺序!