NTP时间服务器(时钟同步设备)助力智慧农业
摘要
农产品质量安全追溯系统中各计算机设备间必须保持精确的时间同步,才能保证对农产品各种相关信息的记录准确可靠。基于简单网络时间协议(NTP/SNTP),结合农产品质量安全追溯系统的网络结构特点,设计了一种低成本、低负载、较为可靠的时间同步方案,选用 GPS 作为整个系统的时钟源,构建了中心服务器级、分区服务器级以及生产、销售企业或组织级三个级别构成的时间同步网络,并可以根据实际情况灵活调整。将时间同步的服务端和客户端的实现封装成为单独的类库,采取动态链接库的形式,便于与现有的追溯系统集成。系统各设备间时间同步的精度可以达到数十毫秒, 满足农产品质量追溯的要求。
引言
农产品质量安全追溯系统要求在农产品生产、加工、运输、销售的各个环节详细记录过程档案信息,实现源头可追溯、流向可跟踪、信息可存储、产品可召回的目标。追溯系统是促进生产信息透明化,提高食品卫生安全的重要措施。时间信息在过程档案的记录中具有十分重要的作用,整个系统的各种计算机设备之间必须保持精确的时间同步,才能保证对农产品的各种相关信息的记录存储准确有效,保证这些记录作为追溯分析依据的权威性和公信性。而追溯系统基于多种不同的计算机和网络通信设备工作,这些设备主要依靠自身的时钟振荡器工作,由于温湿度变化、电磁干扰、振荡器老化和生产调试等原因,其时钟的振荡频率和标准频率之间存在一些误差,设备与设备之间存在着一定的时间误差,这些误差初看来似乎微不足道,而在长期积累后会产生相当大的影响。同时,在追溯系统中还较多的使用了包括掌上电脑在内的嵌入式设备来读取农产品的标识,以及在现场填报过程档案数据。这些嵌入式设备多采用电池供电,其时钟不准确的现象更为突出,经常需要进行时间校准,以保证档案记录中的时间与标准时间一致。在目前的追溯系统中,设备的时间校准往往取决于使用者的习惯,手段常为参照自选的标准手工设定时钟,这种办法效率低下、准确程度较低,无法满足对农产品从生产到流通的全过程进行精确溯源、全面追踪的要求。
本文在NTP/SNTP时间同步技术的基础上,结合农产品质量安全追溯系统的网络结构特点,设计了一种低成本、低负载、较为可靠的时间同步方案,选用GPS /北斗卫星作为整个系统的时钟源,构建了中心服务器级、分区服务器级以及生产、销售企业或组织级三个级别构成的时间同步网络,可以根据实际情况灵活增减级别,并在时钟源以下的设备级别加入新的设备。整个网络稳定可靠、精度较高,能充分满足农产品质量追溯的要求。
1、NTP/SNTP 时间同步原理
时间同步是指网络各节点设备的时钟时刻和时间间隔与世界标准时间(Universal Time Coordinated, UTC)同步,保证各设备的时间信息基于 UTC 时间的误差限定在足够小的范围内。
NTP(Network Time Protocol,网络时间协议)由美国德拉瓦大学的 David L.Mills 教授于 1985 年提出,用于实现互联网上计算机的精确时间同步。SNTP(Simple Network Time Protocol)的全称是“简单网络时间同步协议”,是一个简化了的NTP服务器和NTP客户端策略,不需要实现 NTP 协议的所有功能,其功能是使网络内设备的时钟与标准的时钟源保持同步。SNTP对性能差异很大的客户端及服务器均能适用,且适用于客户端及服务器所在网络有大范围的网络延迟和抖动的情况。
SNTP协议同步系统时钟有两种工作模式:
一是广播模式(Multicast/Broadcast mode):此种工作模式适用于高速的局域网内部,服务器在固定周期向多个客户机主动发出时间信息,客户机根据此时间信息校正系统时钟; 二是客户机/服务器模式(Client/Server mode),客户机定时向授时服务器请求时间信息,根据双方交换的时间信息,实现客户机与授时服务器时钟的同步。
2、系统时间同步的设计和实现
时间同步对于农产品质量安全追溯系统有着重要的作用,为了使系统内各设备之间保持时间同步,需要解决四个方面的问题:一是尽量选取非常精确的时间源,各设备与该时间源的误差值应较小;二是自动实现时间同步,排除人工因素;三是降低系统开销,适应现有追 溯系统的网络条件,同时具备较好的扩充能力;四是尽量屏蔽异质网络和设备之间的差异。系统时间同步的设计方案将逐一讨论这些问题。
2.1网络结构
农产品质量安全追溯系统一般由多个子系统构成, 包括生产子系统、加工子系统、运输子系统、销售子系统,以及对用户权限进行配置管理的子系统等,这些子系统通过网络连结为一个整体进行工作。其中涉及的网 络多种多样, 包括以太网、 无线 WLAN 网络、GPRS/CDMA 无线网络、蓝牙/红外传输网络等。同时子系统运行的计算机软、硬件环境也存在较大的差异。 为适应现有的网络条件,使系统差异较大的网络和设备环境能顺利的协同工作,满足不同的设备进行校时的需要,设计了一个统一的与各子系统相对独立的时间同步网络,其结构如图 2 所示。
图 2 系统时间同步网络结构
整个时间同步网络结构分为三级,依次为中心服务器级、分区服务器级以及生产、销售企业或组织级。各个级别包括不同的计算机设备:中心服务器是保存中央数据库的专门计算机,是依据农产品种类或涉及的行业,而划分的特定服务器,例如肉鸡质量溯源中心服务器, 在国家或省一级设置。分区服务器是根据集中填报数据、审查数据的需要而设置的介于中心服务器和第三级设备之间的计算机。最后一级是实际供应链中的企业或集体组织的计算机,覆盖农产品生产、加工、运输、销售的各个环节,包括台式电脑、掌上电脑、标识读写仪等多种类型的设备。中心服务器和分区服务器之间使用有线的网络环境进行互联,而分区服务器和第三级设备之间既可以使用有线的网络环境,也可以使用无线网络进行通信,以充分利用现有的网络设备资源。第一级设备(中心服务器)从标准的时钟源获取准确的时间,向第二级设备授时,实现与第二级设备的时间同步,第二级设备向第三级设备授时,实现与第三级设备的时间同步。同时,第二级设备除了会向第一级设备请求校时外,还可以彼此之间进行校时,由于不同的通路其网络传输延时不同,通过从多种通路分别请求校时,大大保证了系统的可靠性和校时的准确性。同理,第三级设备向多个第二级设备请求校时,一方面可以获取更精准的时间,另一方面也可以在某一个设备出现故障时仍能正常工作。整个时间同步网络较为可靠,能稳定地实现整个网络内设备的时间同步,除非大部分的设备同时出现瘫痪,在局部计算机出现意外情况下仍能正常工作。
系统在时间同步时使用 NTP/SNTP 协议,其传输基于用户数据报协议(User Datagram Protocol, UDP),要求的资源开销和网络带宽很小,能有效地避免拥塞。同时该协 议是 TCP/IP 的应用层协议,支持 TCP/IP 的网络都可以使用这种方法进行校时。追溯系统涉及多种异质网络和 设备绝大多数都对 TCP/IP 协议提供了很好的支持,因此可以不关心异质网络和设备之间的差别,实现追溯系统 内整体的时间的同步。测试表明NTP/SNTP时间同步网络在广域网范围内可以达到几十毫秒的精度,完全可以满足追溯系统对时间同步精度的要求。
目前的农产品质量追溯系统的数据库结构包括中心数据库和并列数据库,采用的也不一定都是时间同步网络结构的三级结构,这时也可以直接将三级网络结构缩减为二级甚至一级使用,或者扩充至更多级别,只要保证选用一个稳定、可靠、成本较低的时钟源,其它设备都通过 SNTP 协议方式与该时钟源进行时间校准, 即可以实现整个系统内的时钟同步。时间同步网络结构的三级结构在设计上有较大的弹性,除了上述的可以减增级别外,还可以在时钟源以下的设备级别加入新的设备,只要该设备及其连接的网络支持TCP/IP协议,即可以构成一个完整的系统时间同步网络,实现新加入设备的时间与原有设备一致。
2.2 时间同步办法
按照时间同步网络结构来组织和提供校时服务:中心服务器作为授时服务的中心节点为整个系统提供时间同步源;第三级设备作为校时客户端向第二级设备发送NTP 包请求校时,获得基准时钟后校正本地计算机系统, 使用的是 SNTP 的客户机/服务器工作模式;第二级设备扮演两种角色,一方面作为校时客户端向中心服务器和同级的其它计算机请求并校正时间,一方面作为服务器向第三级或同级的其它计算机提供校时服务,使用的也是 SNTP 的客户机/服务器工作模式。整个时间同步网络内的设备在某一时刻都只可能是校时的客户机或服务器之一,达到了统一处理的目的。
为了使中心服务器能够提供准确时间,要为其配有准确的时钟来源,这一时间应该是国际标准时间(UTC)。授时服务器获得 UTC 的时间来源可以是原子钟、天文台或者 GPS/北斗卫星。GPS /北斗除了可以获取精准的导航定位信息,还可以获取时间偏差小于 30 ns 的实时时钟信息,且接收机成本较低,在此采用 GPS北斗卫星作为标准的时钟源。GPS北斗的校时可以使用脉冲中断和串行通信接口及网口等多种方式,脉冲方式精度高,但需要计算机加装脉冲接收装置,而串口通信方式可以直接获取绝对时间值,且普通计算机均配有串行接口,其精度达到毫秒级,因此使用这种方式获取GPS/北斗时间。中心服务器通过RS232 串口与GPS/北斗接收机相连,每隔一秒接收一次 GPS/北斗卫星的准确时钟,将自身的时钟设置为与卫星时钟保持一致。
二级设备每隔 10 min 向中心服务器和同级的其它计算机发送 NTP 包请求校时,采用加权平均的办法计算出当前的时钟偏差量。如中心服务器的权重为 0.6,其它计算机的权重为 0.4,依据实际到中心服务器或其它计算机的距离或网络延迟可以将权重设置为不同的值。时钟偏 差量=与中心服务器的时钟偏差量×中心服务器的权重 与其它计算机的时钟偏差量×其它计算机的权重,按计 算出的时钟偏差量进行时间校准。
三级设备向二级设备请求校时时,可以直接根据各 二级设备返回的时钟偏差量的均值来校准当前时间。三 级设备在启动运行后,每隔 30 min 请求进行时间校准, 并在该时间间隔内随机在 0~30 min 之间再次进行时间校准,全部校时过程都自动完成。这样既可以保证时间同步的精确性,又可以减少人为手工校时带来的干扰。
2.3 时间同步类库
为简化时间同步网络的建立过程,降低与追溯系统 其它模块的耦合性,提高校时模块的准确性与独立性, 将时间同步的服务端和客户端的实现封装为单独的类 库,采取动态链接库的形式,它们可以十分方便地与现 有的追溯系统进行集成装配,以快速搭建完整的时间同 步网络。