You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Codesys中如何设置趋势对象时间与系统时间匹配

趋势对象时间不一致问题解决方案

问题根因

三个相关模块默认读取的时钟源完全独立,未做全局统一绑定,才会出现时间不匹配:

  • 屏幕显示时间:默认读取项目指定的业务主时钟,当前配置为主板自带RTC时钟,也就是你项目实际采用的时间基准
  • 日期范围选择控件:默认读取运行项目的宿主设备(Raspberry Pi)的系统软件时钟,即Pi终端执行date命令返回的时间
  • 趋势(trend)对象:默认读取Raspberry Pi板载硬件RTC时钟,历史趋势点存储的时间戳为点写入时直接从Pi板载RTC读取的值,不会自动跟随后续系统时间调整更新

之前通过手动同步Raspberry Pi时间实现的修复只是临时对齐了三个独立时钟的数值,没有统一时钟源,一旦Pi掉电、主板RTC走时出现偏差,问题会再次出现。

配置方法(统一对齐主板时间)

  1. 配置全局时钟源
    打开项目系统参数页,找到Runtime时钟源配置项,放弃默认的本地系统时钟选项,手动指定为主板外接RTC时钟,配置后所有新增控件默认从该时钟源读取时间。
  2. 修正趋势对象配置
    选中已添加的trend趋势控件,打开属性面板找到时间轴来源项,取消使用设备本地时间的默认勾选,绑定到全局时钟源对应的时间变量;同时将趋势缓存的时间戳生成规则修改为读取全局时钟源时间戳,覆盖原本初始化时读取的Pi本地时间基准。
  3. 修正日期范围选择控件配置
    打开日期范围选择控件属性面板,找到时间基准选项,将默认的宿主OS时间切换为全局项目时钟,把控件返回的起止时间戳计算基准同步到主板时钟。
  4. 添加兜底同步逻辑
    在全局脚本中添加周期为1分钟的同步任务,定期把Pi的系统时间、板载RTC时间和主板RTC时间对齐,参考代码:
    # 可根据实际使用的组态SDK调整接口
    mainboard_time = read_mainboard_rtc()
    set_pi_system_time(mainboard_time)
    trend_ctrl.set_time_reference(mainboard_time)
    date_picker.set_time_reference(mainboard_time)
    

各模块默认时间来源说明

  • 屏幕显示时间:项目配置的业务主时钟,当前为主板RTC时钟
  • 日期范围选择控件:Raspberry Pi的系统软件时钟
  • 趋势(trend)对象:Raspberry Pi板载硬件RTC时钟

注意:如果Raspberry Pi未配置NTP时间同步、板载RTC没有备用电池,Pi的系统软件时钟和板载硬件RTC时钟本身就会存在偏差,这也是部分场景下同步了Pi系统时间、趋势时间仍然不对的核心原因——趋势模块读的是板载硬件时钟,不是系统软件时钟。

内容的提问来源于stack exchange,提问作者SGKlee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 09:54:20