触摸屏时钟同步与校时功能
工业现场时间不一致会导致日志混乱、故障追溯困难以及多设备协同失效。确保触摸屏(HMI)与 PLC、服务器时间统一是自动化系统维护的基础任务。本指南提供从零开始配置时钟同步的完整步骤,涵盖 NTP 网络校时与寄存器读写校时两种主流方案。
1. 准备工作与硬件检查
在开始软件配置前,必须确保物理链路与基础环境满足通信要求。时间同步依赖于稳定的数据传输,网络波动会导致校时失败。
- 确认 触摸屏与控制器(PLC 或上位机)处于同一局域网段。
- 检查 网线连接状态,确保指示灯闪烁正常。
- 记录 各设备的固定 IP 地址,避免 DHCP 分配变动导致连接中断。
- 准备 编程电脑,安装对应的触摸屏组态软件及 PLC 编程软件。
- 核对 当前物理时间,以标准网络时间或原子钟时间为基准。
2. 触摸屏内部时钟配置
大多数触摸屏内置实时时钟(RTC),但默认可能未启用或电池欠压。需先在 HMI 系统层面激活时间功能。
- 进入 触摸屏系统设置菜单,通常通过启动画面角落或特定按键组合触发。
- 找到 “时间设置”或“系统时钟”选项卡。
- 点击 “启用 RTC"复选框,确保勾选状态。
- 手动 设置当前准确时间,包括年、月、日、时、分、秒。
- 保存 设置并重启触摸屏,验证断电后时间是否保持。
若触摸屏支持夏令时功能,需根据所在地区政策决定是否开启。国内项目通常禁用 夏令时自动调整,防止时间跳变引发逻辑错误。
3. 通信协议与端口配置
时间同步主要通过 NTP 协议或 Modbus 寄存器读写实现。选择哪种方式取决于现场网络架构及设备支持能力。
| 协议类型 | 默认端口 | 精度 | 适用场景 | 配置难度 |
|---|---|---|---|---|
| NTP | 123 |
高 (毫秒级) | 联网环境,有标准时间服务器 | 低 |
| Modbus TCP | 502 |
中 (秒级) | 纯内网,PL 直接对接 | 中 |
| Modbus RTU | 无 | 低 (秒级) | 串口通信,老旧设备 | 高 |
- 打开 触摸屏组态软件,进入“通信设置”或“网络配置”页面。
- 添加 新的通信驱动,选择
NTP Client或Modbus TCP。 - 输入 时间服务器 IP 地址,若使用 PLC 校时则填 PLC 的 IP。
- 设置 端口号,NTP 默认为
123,Modbus 默认为502。 - 定义 同步周期,建议设置为
3600秒(1 小时),避免频繁通信占用带宽。
4. 同步逻辑流程设计
自动校时并非简单的一次性写入,需要判断时间差是否在允许范围内。若偏差过大直接写入可能导致系统逻辑紊乱。以下流程图展示了标准的校时判断逻辑。
- 编写 后台脚本或逻辑程序,实现上述流程。
- 定义 整型变量
Delta_T用于存储时间差值。 - 使用 绝对值函数计算偏差,公式为
$ \Delta t = |t_{hmi} - t_{plc}| $。 - 设定 阈值参数,一般产线控制允许误差为
5秒,日志系统要求1秒。 - 触发 写入命令时,务必确保 PLC 处于运行状态,防止停机冲突。
5. PLC 寄存器地址映射
不同品牌的 PLC 时间寄存器地址不同。错误的地址会导致写入乱码或复位控制器。下表列出常见品牌的时间寄存器起始地址。
| 品牌 | 年份寄存器 | 分钟寄存器 | 数据类型 | 注意事项 |
|---|---|---|---|---|
| Siemens | DB1.DBD0 |
DB1.DBD4 |
DInt |
需转换时间戳格式 |
| Mitsubishi | D8013 |
D8018 |
Word |
直接 BCD 码读写 |
| Omron | A351 |
A356 |
Word |
特殊辅助继电器 |
| Modbus | 40001 |
40006 |
Int |
需自定义映射表 |
- 查阅 具体 PLC 型号的用户手册,确认特殊寄存器地址。
- 创建 对应的 HMI 变量,数据类型必须与 PLC 寄存器一致。
- 注意 字节顺序,部分设备是大端模式,部分是
小端模式。 - 测试 单个寄存器读写,验证数值是否对应正确。
- 批量 写入时,建议采用连续寄存器块传输,减少通信报文数量。
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)
- 复制 上述代码到触摸屏脚本编辑器。
- 修改
WriteRegister参数为实际的寄存器地址。 - 调整 年份计算逻辑,部分 PLC 仅需后两位年份。
- 编译 脚本并绑定到“定时触发”或“按钮点击”事件。
- 下载 工程至触摸屏,在线监控变量变化。
7. 验证与故障排查
配置完成后必须进行验证,确保长时间运行不发生漂移。若发现时间不同步,按以下顺序排查。
- 观察 触摸屏与 PLC 显示时间,记录连续
3次读数。 - 计算 平均误差,若误差随时间线性增加,检查晶振硬件。
- 检查 防火墙设置,确保
123或502端口未被拦截。 - 验证 网关配置,跨网段同步需确保路由可达。
- 重启 通信驱动,清除可能存在的缓存错误。
若使用 NTP 协议但同步失败,检查 服务器是否开启了身份验证。某些安全策略要求 NTP 请求携带密钥,需在触摸屏端配置对应的 Key ID 和 Password。若使用电池保持的 RTC 芯片,测量 电池电压,低于 2.8V 需立即更换,否则断电后时间会复位。
对于多触摸屏系统,指定 其中一台为主时钟服务器,其他设备同步该主设备,避免所有设备同时同步外部服务器造成网络风暴。主设备故障时,切换 备用设备接管时间源,确保系统时钟连续性。

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