0x0 导读
本文有些长,知识点有些分散,可以根据自己的需要直接跳转的对应的章节进行阅读,下面把目录给各位大佬呈上:
- 0x0 导读目录
- 0x1 PTP精准时间协议介绍
- 0x2 NTP网络时间协议介绍
- 0x3 GNSS全球导航系统介绍
- 0x4 时间Time介绍
- 0x5 PLC&PC时钟同步方案介绍
- 0x6 NEMA0183协议介绍
- 0x7 GPS信息直接读取到PLC方案
友情提示:点目录是不能自动跳转的,还需要手动往下滑。
0x1 PTP介绍
PTP不是P2P,不要想多了,跟理财没啥关系。
PTP全称是Precision Time Protocol,翻译过来就是精准时间协议,是一种高精度的时间同步协议,也可以达到亚微秒级的时间同步精度或者叫纳秒级ns的时间精度。同时PTP协议是IEEE 1588标准里定义,又叫1588-PTP协议。
PTP则采用硬件时间戳,在物理层直接产生时间戳,与上层软件无关,更加准确。但是需要网络中节点(交换机等)支持PTP协议才可以实现纳秒级同步。
IEEE1588 V2中提出了透明时钟概念,主要用于计算报文在网络设备交换的延迟,解决多级联网累积性误差问题,从而提高时钟同步精度。
1588提供两个方式E2E端到端时钟和P2P点到点透明时钟用于计算报文在网络设备内部的延迟时间。但是两者对链路的测量方式不同,不能够混用。
PTP的报文可以通过两种方式传输:
- MAC层进行传输,也就是基于以太网IEEE802.3协议实现
- 通过传输层UDP的方式传输,事件消息的UDP端口为319,普通消息的组播端口为320。

PTP协议要求有一个主时钟,又叫PTP Grandmaster,其他的需要同步时间的时钟设备都从边界时钟或者直接从主时钟获取时间。
0x2 NTP介绍
NTP是Network Time Protocol协议,也就是网络时间协议,用于计算机保持时间同步的一种协议,同步精度可以达到ms毫秒级别。
NTP也是基于UDP报文传输,端口号为123;
NTP的工作模块有四种:
- 服务器/客户端模式(server/Client)
- 对等体模式 (symmetric active/passive)
- 广播模式(broadcast server/Client)
- 组播模式(multicast server/client) 除对等体外其他的都是有server,client去请求时钟信息,对等体模式是主动体和被动体相互同步时间,如下图:

这时还有一个协议叫SNTP,是NTP协议的一个简化版本,叫Simple Network Time Protocol 简单网络时间协议,SNTP客户端可以直接与NTP的服务器进行通讯,同样NTP的客户端也可以接收SNTP服务器发送的授时信息。
NTP和SNTP的数据包格式是一样的,只是SNTP简化了算法,同时时间精度SNTP不及NTP。
PS:NTP时间戳从1900年开始记秒数,而UNIX时间戳从1970年开始记秒数
0x3 GNSS介绍
GNSS是全球导航卫星系统(Global Navigation Satellite System)的简写,反正全球所有的卫星导航系统,原来GNSS基本上是=GPS的,也就是全球定位系统。但是现在除了咱们常用的GPS协议之外。还有咱们中国大名鼎鼎的北斗卫星导航系统COMPASS和俄罗斯的Glonass格洛纳斯,欧洲的Galileo伽利略。以及区域导航日本的QZSS, 还有为了应对更高的定位需求如航空领域的精密飞机等出现的星基增强系统SBAS(Satellite-Based Augmentation System)

SBAS通过地球静止轨道(GEO)卫星搭载卫星导航增强信号转发器,可以向用户播发星历误差、卫星钟差、电离层延迟等多种修正信息,实现对于原有卫星导航系统定位精度的改进,从而成为各航天大国竞相发展的手段。

通过GNSS主要可以获取到时间,经纬度和速度,具体如GPS的测试软件图所示:
从图中可以看到通过GPS可以获取的值有
- 经度longitude
- 维度latitude
- 高度值altitude
- MSL距离海平面高度
- 速度 speed
- 方位角又叫地平经度(Azimuth angle,缩写为Az)
- 时间Time,
- PDOP 位置精度因子 Position Dilution of Precision
- H/V DOP 水平或垂直精度因子
DOP值是越小越好,值越小代表GPS的天线阻挡越小。
通过GPS的测试软件也能看到都获取到了那些GNSS的信号,如果GPS,北斗的以及伽利略和俄罗斯。
0x4 时间Time介绍
先看下面的一个聊天图:

当我聊完后我修改完时间发现不对啊,我这里明明是刚睡醒怎么就又得睡觉了呢。
这里的问题就是大家平常说的时间都是本地时间。所以就造成了这个尴尬。
首先GPS的时间是原子时间:IAT(international atomic time)
它的时间基准是1980年1月6日0点与世界协调时刻相一致,以后按原子时秒长累积计时。
然后协调世界时是UTC(Universal Coordinated Time) 以原子时秒长为基础,在时刻上尽量接近于世界时的一种时间计量系统。又称世界统一时间,世界标准时间,国际协调时间。是现在的世界标准时间。
格林尼治标准时间GMT(Greenwich Mean Time) 是指位于伦敦郊区的皇家格林尼治天文台的标准时间,是前世界标准时间。
国际原子时的准确度为每日数纳秒,而世界时的准确度为每日数毫秒。
GMT和UTC一般视为无差别,utc是以原子时计时,更加精准,适应现代社会的精确计时。不过一般使用不需要精确到秒时,视为等同。每年格林尼治天文台会发调时信息,基于utc。
由于世界各国家与地区经度不同,地方时也有所不同,因此会划分为不同的时区(time zone)。正式的时区划分包括24个时区,每一时区由一个英文字母表示。每隔经度15°划分一个时区。时区从格林尼治天文台(本初子午线)往东分别为东一区~东12区,往西分别为西一区到西12区。
同时有的地方还有夏令时时间,夏时令DST(Daylight Saving Time:DST),据说是为了省电费,人为的把时间给调快1个小时,本来你正常7点起床的,结果告诉现在8点了,那你是不是得更早起一个小时,早睡一个小时啊。
我们中国就使用北京时间,北京在东八区,粗略可以认为北京时间=UTC+8=GMT+8的时间。
所以之前的那个微信聊天就得换算下时区才能拿到正确的时间。
0x5 PLC&PC时钟同步方案
前面介绍了那么多终于到了本文章的第一个重点了,如果PLC系统想实现时钟同步或者想获取位置以及速度信息的话得怎么办呢。
Prosoft刚刚又上线了一个新产品,可以完美的解决这个问题,支持的时间同步协议1588-PTP以及NTP网络时间协议都支持。先放一个模块的拓扑图吧!

从图片可以看出能满足PC,PLC以及其他的需要时间同步的设备的时间同步需求。
跟AB的PLC的话可以直接采用Ethernet/IP协议将时间和速度等信息直接放在控制器标签中,
同时还可以支持传统的PLC5,SLC500等PLC的时间同步需求。
如果需要ModbusTCP的接口的时间数据,那么模块也没问题,可以安排的。
模块也可以用来获取位置和速度的应用场景:

可以支持的GNSS全球定位系统有的类型包含北斗导航卫星哦,具体有:
- GPS/ QZSS
- GLONASS
- SBAS
- BeiDou 北斗
说了这么多来一个高清大图:

模块随机自带一根GPS天线和3米的延长线,满足一般的项目应用。GPS还是27db的有源天线,
模块的其他主要特点如下:
- 支持传统的PLC5/SLC500的PLC
- 可以作为Grand master PTP的主时间源
- PTP支持UDP方式和MAC地址访问方式
- NTP Master or Slave主或从
- 高精度时间同步 60ns
- 隔离的GPS接收机
- 可以读取位置,速度和里程值
0x6 NEMA0183介绍
NMEA是National Marine Electronics Association 的缩写,是美国国家海洋电子协会的简称,目前已成了GPS导航设备统一的RTCM(Radio Technical Commission for Maritime services)标准协议。实际上应为NMEA0183。
常用的命令有:
- $GPGGA 卫星定位信息
- $GPGSA 卫星PRN数据
- $GPGSV 可视卫星信息
- $GPRMC 推荐定位信息
- $GPVTG 地面速度信息
- $GPGLL 地理定位信息
- $GPZDA UTC时间和日期
0x7 GPS信号直接读取到PLC方案
如果你目前系统已经有了GPS设备了,可以输出NEMA0183的报文,那么上面的模块可能就没必要了,可以用下面的
这个模块直接来读取GPS的NEMA报文信息然后把速度和位置信息直接就可以放在PLC的标签里了。
同时也可以输出Modbus TCP协议的数据。
同时还可以提供位置精度和状态信息

从上图可以看到有两个移动设备,每个移动上有一个GPS的设备,分别可以输出NMEA的报文,
加上Prosoft公司推出的X-Position模块就可以在AB的控制器里看到这两个设备的位置和速度信息了。
X-position模块支持的高精度定位设备有:
- GPS 设备
- 导航设备
- 支持NMEA Over Ethernet的设备
往期文件推荐:
刚刚 Controlnet 设备 升级方案 上新了
AB控制系统与Profinet耦合器通讯设置
一款Ethernet/IP和Modbus TCP转OPC UA产品
如何让Profibus DP从站通讯更多数据