CNC 实例 02:带变量的在线解码
见 CNC02_online.project
安装目录下的示例工程 CODESYS 在下面 ..\CODESYS SoftMotion\Examples
.
该示例显示了如何 使用变量 解码 CNC 程序。
在 CNC 编辑器中创建 NC 程序
创建一个
CNCOnline
程序与 SoftMotion 控制器。创建一个全局变量列表并声明两个变量。
VAR_GLOBAL g_x: REAL:=100; g_y:REAL:=50; END_VAR
插入一个 数控程序 命名的对象
Example
.选择 执行
Din66025
和 编译模式SMC_CNC_REF
.此模式是必需的,因为您在程序中使用了变量。指定以下运动块:
数控编辑器:
创建驱动接口和 PLC 配置
定义驱动结构(例如 CNCdirect
)。
创建 IEC 程序
添加名为的 POU (CFC)
Path
到应用程序。OUTQUEUE 的 NC 程序解码和速度检查发生在
Path
程序。打电话
SMC_CheckVelocities
是必须的。氟氯化碳:
添加名为的 POU (CFC)
Ipo
到应用程序。这个程序几乎与
CNCdirect
示例项目。但是,插补器的数据输入与 CNC 程序名称(ADR(Example)
),但是到路径预处理功能块的 OutQueue 输出 (checkVel.poqDataOut
)。
为路径预处理创建任务
因为你选择了编译模式 SMC_CNC_REF
,必须在IEC程序中进行解码和路径预处理。这个计算很耗时。它不必在插值器循环中执行,因为每次解码器调用都会生成一个路径对象,并且该对象通常用于许多插值器调用。您应该将此操作替换为优先级较低且调用频率较低的任务。
创建一个
PathTask
任务。定义以下参数:
优先事项: 10
间隔: T#30ms
添加
Path
POU 到任务。

在慢速任务中,最初每个周期大约生成一个 GEOINFO 对象。该对象存储在解码器功能块的 OUTQUEUE 结构中。如果 OUTQUEUE 已满,则慢任务的功能块将暂停,直到 OUTQUEUE 不再满为止。一旦快速任务处理第一个 GEOINFO 对象并将其从 OUTQUEUE 中删除,就会发生这种情况。
然后慢任务的功能块再次激活并填充 OUTQUEUE 结构。
在快速任务中,来自 OUTQUEUE 结构的路径点,
DataIn
输入指向,在每个循环中被计算和处理。因为一个 GEOINFO 对象通常由多个路径点组成,所以在第一个 GEOINFO 对象被内插器自动处理和删除之前需要几个周期。由于 GEOINFO 对象的处理持续几个周期而不是它的创建,因此慢任务的调用频率可以低于快速任务。
但是,必须选择任务时间,以便在慢速任务的最后一个 OUTQUEUE 中始终存储足够的 GEOINFO 对象,从而防止发生任何数据欠载。当没有更多 GEOINFO 对象可用于来自 DataIn 的内插器,并且尚未到达路径末端时,就会发生这种情况。在这种情况下,内插器会减慢速度并停止,直到新的数据元素再次可用。
创建操作界面和测试界面
可视化对应于 CNCdirect.project
示例项目。将附加模板添加到新功能块 (SMC_NCDecoder
和 SMC_CheckVelocities
)。也为全局变量创建一个显示 g_x
和 g_y
以便您可以在以后调试时检查它们的功能。
调试
编译并启动创建的程序。程序一执行 CNC 运动 Execute
解码器和内插器的输入已设置。如果更改全局变量的值,则在重新启动解码器并相应地调整路径时将使用它们。监控功能 Append
解码器的输入也是如此。