技术文章

CODESYS教程:如何获取当前任务的实际循环周期——TIME()函数与CmpIecTask库两种方法对比

CODESYS(Controller Development System)是一套符合IEC 61131-3工业标准的自动化技术软件开发环境,在制造业、能源和交通运输等领域广泛用于创建各类过程控制系统。在包括CODESYS在内的自动化控制系统中,监控任务循环周期至关重要——理解这一指标对于优化性能、确保任务高效完成、识别可能拖慢系统的潜在问题以及促进过程同步均不可或缺。

什么是任务循环周期?

任务循环周期是指控制系统中完成特定任务或操作所需的时间段,从任务启动开始到任务完成为止。在CODESYS中,任务循环周期是一项关键参数——通过监控和分析此参数,可以深入理解系统内特定过程或功能的行为特征。

然而,准确测量CODESYS中的任务循环周期也存在一定挑战。系统负载变化、网络延迟和硬件性能波动都可能影响测量的准确性。配置不当或对系统内在机制的理解不足也可能导致读数偏差。测量任务循环周期需要仔细考量系统架构、正确使用CODESYS工具,并对被测任务有清晰的认识。

方法一:TIME() 函数

TIME()函数是最简单直观的测量方式——在任务开始时调用一次TIME()获取起始时间戳,在任务结束时再调用一次获取结束时间戳,二者相减即得循环周期。示例任务的循环周期范围通常在6到8毫秒之间。您可以添加一个Trace来监控该变量,从而获得关于循环周期的更多可视化洞见——在示例中,循环周期偶尔会跳升至10毫秒。如果您定义了周期为4毫秒或更短的软运动任务,超出该周期可能导致异常。

TIME()方法的优势:

  • 使用简单直观,即使CODESYS初学者也能快速上手
  • 代码量极少,可快速集成到现有项目中

TIME()方法的局限:

  • 分辨率仅为毫秒级,对于需要更高精度的任务或要求微秒级精确度的应用场景可能力不从心

方法二:CmpIecTask 库

CODESYS内置的CmpIecTask库提供了访问IEC任务管理器的函数接口。将此库添加到CODESYS项目后,初始化过程十分简单——仅需几行代码即可完成。初始化后,您可以访问一个包含详细任务信息的结构体,其中包括任务循环周期和平均循环周期等指标。

CmpIecTask库的优势:

  • 代码可放置在程序中的任意位置,在控制系统的不同部分实现灵活的集成
  • 库自动处理循环周期的记录和计算,无需手动追踪,简化流程并降低人为误差的可能性
  • 循环周期以微秒级分辨率计算,精度远超TIME()函数获得的毫秒级数值

CmpIecTask库的注意事项:

  • 需要在CODESYS项目中额外添加一个库文件,但对于其提供的便利性和精度提升而言,这个代价几乎可以忽略不计

如何选择?

对于大多数常规监控场景,TIME()函数的毫秒级精度已足够使用,且集成成本最低。但当您需要诊断微秒级的时序问题——例如高精度运动控制或高速I/O处理——CmpIecTask库提供的微秒级分辨率是不可替代的。两种方法各有适用场景,掌握二者将使您在CODESYS系统优化和故障排查中拥有更完整的工具箱。

News

shopify 产品商店
email Email

邮箱: xs1001@dustry.ltd

添加微信
添加微信
售前客服

售前客服:159 2107 8430

分享本页
返回顶部
广泛的工业自动化零部件供应商,每个行业有超过70万种产品                                                                                                                                           售前客服电话:159 2107 8430