07 EVS Time Sync
📋简介
EVS Time Sync是一个基于UDP协议的高精度时间同步解决方案,专为多设备事件相机系统设计。通过心跳机制和偏移计算,确保所有设备的时间戳保持一致,实现微秒级的时间同步精度。
📋 技术规格
系统要求
- 操作系统:Ubuntu 22.04 / CentOS / RHEL
- 编译工具:gcc, g++, build-essential
- 网络协议:UDP
- 默认端口:9999(可配置)
协议规范
- 协议文件:
time_sync_protocol.h - 协议版本:1
- 魔数:0x54535943 ("TSYNC")
- 同步精度:微秒级
🔧 依赖说明
- 必需依赖:gcc, g++, pthread, librt(通常系统自带)
- 网络库:标准socket库
🚀 快速开始
编译服务器端(PC端)
# 编译时间同步服务器
make timesync
# 编译结果:生成 time_sync_server 可执行文件在PC上运行时间同步服务器
# 运行时间同步服务器(默认端口9999)
./time_sync_server
# 或指定端口
./time_sync_server 10000程序运行截图 
清理编译文件
# 清理时间同步相关编译文件
make clean_timesync📡 通信协议
消息类型
1. 心跳消息(设备端 → 服务器)
消息类型:TIME_SYNC_MSG_HEARTBEAT = 1
结构:
typedef struct {
TimeSyncMsgHeader_t header;
uint64_t timestamp_us; // 设备当前时间戳(微秒)
uint32_t sequence; // 序列号
} TimeSyncHeartbeatMsg_t;发送频率:每秒1次
2. 偏移应答(服务器 → 设备端)
消息类型:TIME_SYNC_MSG_OFFSET_REPLY = 2
结构:
typedef struct {
TimeSyncMsgHeader_t header;
int64_t offset_us; // 推荐的时间偏移(微秒)
uint32_t reference_device_id; // 参考设备ID
uint32_t sync_quality; // 同步质量(0-100)
uint32_t sequence; // 对应的心跳序列号
} TimeSyncOffsetReplyMsg_t;发送时机:收到心跳后立即回复
3. 状态查询/应答(可选)
消息类型:
TIME_SYNC_MSG_STATUS_REQ = 3TIME_SYNC_MSG_STATUS_REPLY = 4
用途:查询服务器状态和多设备同步情况
通信流程
设备端 服务器
│ │
│──── TimeSyncHeartbeatMsg_t ───────────► │
│ (device_id=1, timestamp=12345) │
│ │
│ ├─ update_device()
│ ├─ calculate_offsets()
│ ├─ get_device_offset()
│ │
│◄─── TimeSyncOffsetReplyMsg_t ────────── │
│ (offset=-500us, quality=85) │
│ │
├─ set_offset_us(-500) │
│ │
│ ... after 1 second ... │
│ │
│──── TimeSyncHeartbeatMsg_t ───────────► │
│ (device_id=1, timestamp=13345) │
│ │🚨 故障排除
常见问题
问题1: 时间同步服务器无法启动
检查端口占用:
# 检查9999端口是否被占用
sudo netstat -anp | grep 9999
# 如果被占用,终止进程或更换端口
./time_sync_server 10000检查防火墙:
# Ubuntu/Debian
sudo ufw allow 9999/udp
# CentOS/RHEL
sudo firewall-cmd --add-port=9999/udp --permanent
sudo firewall-cmd --reload问题2: 多设备如何同步
服务器会自动选择第一个连接的设备作为参考设备,其他设备的时间戳会校准到参考设备:
设备1 (参考): offset = 0 us
设备2: offset = -1500 us (比设备1快1.5ms)
设备3: offset = +200 us (比设备1慢0.2ms)🙋 联系我们
如果你在使用 时间同步系统 过程中遇到任何问题或有任何建议,欢迎通过以下方式与我们联系: 开源硬件网站: https://www.shimetapi.cn (国内) https://www.shimetapi.com (海外) 在线技术文档:https://forum.shimetapi.cn/wiki/zh/ 在线技术社区:https://forum.shimetapi.cn 时间同步系统 - 让多设备时间同步更简单 🚀
