文章目录

触摸屏时钟同步与校时功能

发布于 2026-03-31 02:54:44 · 浏览 7 次 · 评论 0 条

触摸屏时钟同步与校时功能

工业现场时间不一致会导致日志混乱、故障追溯困难以及多设备协同失效。确保触摸屏(HMI)与 PLC、服务器时间统一是自动化系统维护的基础任务。本指南提供从零开始配置时钟同步的完整步骤,涵盖 NTP 网络校时与寄存器读写校时两种主流方案。


1. 准备工作与硬件检查

在开始软件配置前,必须确保物理链路与基础环境满足通信要求。时间同步依赖于稳定的数据传输,网络波动会导致校时失败。

  1. 确认 触摸屏与控制器(PLC 或上位机)处于同一局域网段。
  2. 检查 网线连接状态,确保指示灯闪烁正常。
  3. 记录 各设备的固定 IP 地址,避免 DHCP 分配变动导致连接中断。
  4. 准备 编程电脑,安装对应的触摸屏组态软件及 PLC 编程软件。
  5. 核对 当前物理时间,以标准网络时间或原子钟时间为基准。

2. 触摸屏内部时钟配置

大多数触摸屏内置实时时钟(RTC),但默认可能未启用或电池欠压。需先在 HMI 系统层面激活时间功能。

  1. 进入 触摸屏系统设置菜单,通常通过启动画面角落或特定按键组合触发。
  2. 找到 “时间设置”或“系统时钟”选项卡。
  3. 点击 “启用 RTC"复选框,确保勾选状态。
  4. 手动 设置当前准确时间,包括年、月、日、时、分、秒。
  5. 保存 设置并重启触摸屏,验证断电后时间是否保持。

若触摸屏支持夏令时功能,需根据所在地区政策决定是否开启。国内项目通常禁用 夏令时自动调整,防止时间跳变引发逻辑错误。


3. 通信协议与端口配置

时间同步主要通过 NTP 协议或 Modbus 寄存器读写实现。选择哪种方式取决于现场网络架构及设备支持能力。

协议类型 默认端口 精度 适用场景 配置难度
NTP 123 高 (毫秒级) 联网环境,有标准时间服务器
Modbus TCP 502 中 (秒级) 纯内网,PL 直接对接
Modbus RTU 低 (秒级) 串口通信,老旧设备
  1. 打开 触摸屏组态软件,进入“通信设置”或“网络配置”页面。
  2. 添加 新的通信驱动,选择 NTP ClientModbus TCP
  3. 输入 时间服务器 IP 地址,若使用 PLC 校时则填 PLC 的 IP。
  4. 设置 端口号,NTP 默认为 123,Modbus 默认为 502
  5. 定义 同步周期,建议设置为 3600 秒(1 小时),避免频繁通信占用带宽。

4. 同步逻辑流程设计

自动校时并非简单的一次性写入,需要判断时间差是否在允许范围内。若偏差过大直接写入可能导致系统逻辑紊乱。以下流程图展示了标准的校时判断逻辑。

graph TD Start["开始:系统上电初始化"] ReadTime["读取:HMI 与 PLC 当前时间"] CalcDiff["计算:时间差 Delta T"] CheckLimit["判断:Delta T 是否大于 5 秒"] WritePLC["写入:更新 PLC 时间寄存器"] WriteHMI["写入:更新 HMI 系统时间"] LogRecord["记录:校时操作日志"] End["结束:等待下一周期"] Start --> ReadTime ReadTime --> CalcDiff CalcDiff --> CheckLimit CheckLimit -- "是 (偏差大)" --> WritePLC CheckLimit -- "否 (偏差小)" --> End WritePLC --> WriteHMI WriteHMI --> LogRecord LogRecord --> End
  1. 编写 后台脚本或逻辑程序,实现上述流程。
  2. 定义 整型变量 Delta_T 用于存储时间差值。
  3. 使用 绝对值函数计算偏差,公式为 $ \Delta t = |t_{hmi} - t_{plc}| $
  4. 设定 阈值参数,一般产线控制允许误差为 5 秒,日志系统要求 1 秒。
  5. 触发 写入命令时,务必确保 PLC 处于运行状态,防止停机冲突。

5. PLC 寄存器地址映射

不同品牌的 PLC 时间寄存器地址不同。错误的地址会导致写入乱码或复位控制器。下表列出常见品牌的时间寄存器起始地址。

品牌 年份寄存器 分钟寄存器 数据类型 注意事项
Siemens DB1.DBD0 DB1.DBD4 DInt 需转换时间戳格式
Mitsubishi D8013 D8018 Word 直接 BCD 码读写
Omron A351 A356 Word 特殊辅助继电器
Modbus 40001 40006 Int 需自定义映射表
  1. 查阅 具体 PLC 型号的用户手册,确认特殊寄存器地址。
  2. 创建 对应的 HMI 变量,数据类型必须与 PLC 寄存器一致。
  3. 注意 字节顺序,部分设备是大端模式,部分是小端模式
  4. 测试 单个寄存器读写,验证数值是否对应正确。
  5. 批量 写入时,建议采用连续寄存器块传输,减少通信报文数量。

6. 脚本代码实现示例

对于支持脚本的触摸屏,可使用类 C 语言或 Python 脚本处理时间转换。以下示例展示如何将 HMI 时间戳转换为 PLC 可识别的格式。

# 获取 HMI 当前时间戳
current_time = GetSystemTime()

# 定义 PLC 时间结构体
plc_time = {
    "year": current_time.Year - 2000,
    "month": current_time.Month,
    "day": current_time.Day,
    "hour": current_time.Hour,
    "minute": current_time.Minute,
    "second": current_time.Second
}

# 写入 PLC 寄存器地址
WriteRegister(40001, plc_time["year"])
WriteRegister(40002, plc_time["month"])
WriteRegister(40003, plc_time["day"])
WriteRegister(40004, plc_time["hour"])
WriteRegister(40005, plc_time["minute"])
WriteRegister(40006, plc_time["second"])

# 触发校时完成标志位
WriteBit(100, 1)
  1. 复制 上述代码到触摸屏脚本编辑器。
  2. 修改 WriteRegister 参数为实际的寄存器地址。
  3. 调整 年份计算逻辑,部分 PLC 仅需后两位年份。
  4. 编译 脚本并绑定到“定时触发”或“按钮点击”事件。
  5. 下载 工程至触摸屏,在线监控变量变化。

7. 验证与故障排查

配置完成后必须进行验证,确保长时间运行不发生漂移。若发现时间不同步,按以下顺序排查。

  1. 观察 触摸屏与 PLC 显示时间,记录连续 3 次读数。
  2. 计算 平均误差,若误差随时间线性增加,检查晶振硬件。
  3. 检查 防火墙设置,确保 123502 端口未被拦截。
  4. 验证 网关配置,跨网段同步需确保路由可达。
  5. 重启 通信驱动,清除可能存在的缓存错误。

若使用 NTP 协议但同步失败,检查 服务器是否开启了身份验证。某些安全策略要求 NTP 请求携带密钥,需在触摸屏端配置对应的 Key IDPassword。若使用电池保持的 RTC 芯片,测量 电池电压,低于 2.8V 需立即更换,否则断电后时间会复位。

对于多触摸屏系统,指定 其中一台为主时钟服务器,其他设备同步该主设备,避免所有设备同时同步外部服务器造成网络风暴。主设备故障时,切换 备用设备接管时间源,确保系统时钟连续性。

评论 (0)

暂无评论,快来抢沙发吧!

扫一扫,手机查看

扫描上方二维码,在手机上查看本文