CNC 示例 1: 直接创建 OutQueue

参阅相关示例程序 "CNCdirect.project" 基于配置文件 "softmotion.cfg"!

1. 在CNC编辑器中创建NC程序:

我们创建了一个示例程序,x在 [0,100] 范围内运动 y 在 [0,100]范围内运动。并且我们定义了路径的速度和加速度并在路径上设置了两个开关。示例:

 插图 90: CNC 程序应用中的 CNCdirect

编译模式选择 SMC_OutQueue。

2. 驱动器接口,PLC 配置:

定义了两个线性驱动器数据结构;并定义最大速度等参数。

 插图 91: CNCdirect 的设备树

3. 创建 IEC 程序:

首先我们需要通过 MC_Power 模块激活驱动器。

 插图 92: 位于 lpo对象中的 MCpower 功能块

还有一个比较重要的元素是 SMC_Interpolator 模块。输入端 poqDataIn 获得CNC程序的地址。除此之外 IEC- 任务循环时间必须被写成循环时间。可以使用一个常量在输入端 dwIpoTime直接输入,或者使用轴变量结构中的 dwCycle (PLC 配置),后者更有优势 – 如果你修改任务的扫描时间 – 那么当前时间将自动作为插补扫描时间的输入。

 插图 93: 正向转换模块

在这个示例程序中我们希望对一个并联系统进行控制。首先从函数库 SM_Trafo.lib 插入一个正向和反向变换模块实例 。正向坐标变换实例作为驱动器的一个输入 ( Z-驱动器是通过另一个变量进行分配的,而不是通过类型 AXIS_REF);反向变换模块必须获得插补的目标位置:

 插图 94: 正向变换模块
 插图 95: 反向变换模块

模块的输出,也就是说轴的坐标,必须被写到驱动器中。为了实现这个目的,功能块 SMC_ControlAxisByPos 被使用。因为我们的应用程序中不能保证插补的连续输出 (例如,结束点的坐标不同于起点的坐标),我们应该激活间隙功能 (bAvoidGaps, fGapVelocity, fGapAcceleration, fGapDeceleration),并且需要连接插补模块的 bEmergency_Stop 与插补输出并且需要连接插补输出的 iStatus 与轴控制模块的相应输入。

 插图 96: 连接 lpo对象中必须的功能块

请注意在使用 CFC 进行程序编写时其中元素的顺序!

4. 创建操作并测试接口:

创建一个新的可视化界面并插入两个可视化元素 'Visualization'。第一个为插补元素,第二个是转换元素。将它们通过占位符功能分别与对应的功能块实例连接 (在这里为 Ipo.smci 以及 Ipo.trafof)。

5. 启动

如果程序编译没有错误,那么久可以启动。在插补模块的Execute-输入被置位的同时,将开始处理CNC程序。在程序完全的处理结束之后,Execute-的另一个上升沿将会导致一个新CNC程序的运行。

注意路径的开关功能,也会在插补模块的可视化元素中进行显示。