18禁免费观看完整版高清-毛片重口味女人的逼-99精品毛片免费播放高潮-2020年国产新视频

當(dāng)前位置: 首頁 >應(yīng)用方案 >技術(shù)應(yīng)用 >

「詳解」基于NTP的HMI校準(zhǔn)服務(wù)

一、NTP協(xié)議簡(jiǎn)介

NTP網(wǎng)絡(luò)時(shí)間協(xié)議TCP/IP協(xié)議族里的一個(gè)應(yīng)用層協(xié)議,常用于客戶端服務(wù)器進(jìn)行時(shí)鐘同步,提供高精度的時(shí)間校準(zhǔn),由于該服務(wù)存在并發(fā)量大對(duì)丟包也沒有要求,所以傳輸層一般使用UDP報(bào)文,而TCP存在確認(rèn)、重傳、阻塞等機(jī)制導(dǎo)致傳輸速率也不如UDP,一般情況系統(tǒng)默認(rèn)使用123端口作為NTP端口。

NTP服務(wù)可用于網(wǎng)絡(luò)管理、計(jì)費(fèi)系統(tǒng)、銀行授時(shí)、協(xié)同處理、系統(tǒng)時(shí)間、安全認(rèn)證等場(chǎng)景,這些場(chǎng)景一般對(duì)時(shí)間精度有較高的要求,比如心知天氣使用私鑰加公鑰,為了私鑰安全還引入時(shí)間戳有效判斷機(jī)制,通過時(shí)間戳約束公鑰有效期,不知心知天氣API采用這種通訊機(jī)制,很多的網(wǎng)絡(luò)通訊為了安全都會(huì)對(duì)系統(tǒng)時(shí)間進(jìn)行校驗(yàn),因此有一個(gè)統(tǒng)一的標(biāo)準(zhǔn)時(shí)間對(duì)于網(wǎng)絡(luò)而言意義重大。

基于NTP的HMI校準(zhǔn)服務(wù)

NTP就是用來同步網(wǎng)絡(luò)中各個(gè)主機(jī)時(shí)鐘的一種協(xié)議,他將全球各大授時(shí)中心的準(zhǔn)確時(shí)間分享給設(shè)備,其精度在內(nèi)網(wǎng)內(nèi)可達(dá)1毫秒內(nèi),在互聯(lián)網(wǎng)上可以達(dá)到幾十毫秒以內(nèi)。

分享一些國內(nèi)常用的NTP服務(wù)器:

一、 中國科學(xué)院國家授時(shí)中心(ntp.ntsc.ac.cn:123

二、 騰訊云NTP授時(shí)服務(wù)(ntp.tencent.com:123

三、 阿里云NTP授時(shí)服務(wù)(ntp.aliyun.com:123

四、 教育網(wǎng)NTP授時(shí)服務(wù)(time.edu.cn:123

二、實(shí)例分析

NTP報(bào)文

部分HMI本身沒有對(duì)NTP服務(wù)進(jìn)行集成,應(yīng)該必須對(duì)NTP報(bào)文有一定的了解才能正確使用NTP對(duì)時(shí)服務(wù)器,下面將通過分析NTPv3了解NTP報(bào)文格式。

下面是一個(gè)發(fā)送實(shí)例,注意遠(yuǎn)程主機(jī)必須使用域名,我這里實(shí)際使用的是ntp.ntsc.ac.cn:123,軟件在發(fā)送后自動(dòng)DNS并覆蓋了我的輸入,重要的事說三遍,必須使用域名!??!必須使用域名?。?!

NTP報(bào)文

這里將發(fā)送時(shí)間和內(nèi)容都進(jìn)行記錄,也對(duì)NTP服務(wù)器返回時(shí)間與數(shù)據(jù)進(jìn)行記錄,后面分析應(yīng)當(dāng)配置的準(zhǔn)確會(huì)用到日志和數(shù)據(jù)收到的時(shí)間。

[2022-08-12 11:47:50.805]# SEND HEX TO 114.118.7.163 :123>

1B 00 04 FA 00 01 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

[2022-08-12 11:47:50.853]# RECV HEX FROM 114.118.7.163 :123>

1C 02 04 EA 00 00 05 CF 00 00 15 6C 7B 8B 21 03 E6 A0 44 42 42 72 91 0E 00 00 00 00 00 00 00 00 E6 A0 4B E8 11 B7 C8 3E E6 A0 4B E8 11 B8 9C 4D

這里統(tǒng)計(jì)計(jì)算時(shí)間的方法,NTP報(bào)文中使用的是時(shí)間戳機(jī)制,我們將發(fā)送時(shí)間2022-08-12 11:47:50.805與接收時(shí)間2022-08-12 11:47:50.853也轉(zhuǎn)換為時(shí)間戳方便后續(xù)使用,通過網(wǎng)上搜索的時(shí)間戳轉(zhuǎn)換工具精選轉(zhuǎn)換發(fā)送時(shí)間(1660276070)與接收時(shí)間(1660276070)。

這篇文章不對(duì)協(xié)議進(jìn)行分析僅對(duì)部分位進(jìn)行說明,NTP協(xié)議報(bào)文可以參考這篇文章(https://www.jianshu.com/p/8bb29838ae1b

NTP報(bào)文使用長(zhǎng)度為64 Bits無符號(hào)數(shù)存儲(chǔ)一個(gè)時(shí)間戳,前32 Bits表示整數(shù)部分, 32 Bits表示小數(shù)部分, 理論分辨率 2^?32s,由于HMI精度只能到秒,小數(shù)位對(duì)于本項(xiàng)目是沒有任何用處,不分析小數(shù)部分,將接收?qǐng)?bào)文記錄離開NTP服務(wù)的時(shí)間戳從報(bào)文中分離(E6 A0 4B E8 11 B8 9C 4D),提取前四個(gè)字節(jié)(HEX:E6 A0 4B E8àDEC:3869264872,與發(fā)送日志的1660276070805相差甚遠(yuǎn),這里就是NTP報(bào)文最坑的地方,時(shí)間戳0表示的是1970-01-01 08:00:00開始計(jì)算,而NTP服務(wù)的時(shí)間戳是從1900-01-01 00:00:00開始計(jì)算,因此兩種時(shí)間戳需要通過減去一個(gè)系數(shù)才能轉(zhuǎn)換2208988800= (70 * 365 + 17) * 24 * 60 * 60

服務(wù)器返回的時(shí)間戳(3869264872-2208988800=1660276072),可見設(shè)備發(fā)送日志與實(shí)際時(shí)間相差2s

實(shí)際上NTP對(duì)時(shí)服務(wù)在計(jì)算精確時(shí)間是有一個(gè)推薦公式。

客戶端與服務(wù)端的時(shí)間系統(tǒng)的偏移定義為θ、網(wǎng)絡(luò)的往返延遲定義為δ,基于此,可以對(duì)t2進(jìn)行精確的修正,已達(dá)到相關(guān)精度要求,它們的計(jì)算公式如下:

公式

公式中:

t0是請(qǐng)求數(shù)據(jù)包傳輸?shù)目蛻舳藭r(shí)間戳

t1是請(qǐng)求數(shù)據(jù)包回復(fù)的服務(wù)器時(shí)間戳

t2是響應(yīng)數(shù)據(jù)包傳輸?shù)姆?wù)器時(shí)間戳

t3是響應(yīng)數(shù)據(jù)包回復(fù)的客戶端時(shí)間戳

實(shí)際寫入的時(shí)間t2加上網(wǎng)絡(luò)延時(shí)δ的一半就可以了(t2+δ/2

移植到HMI

經(jīng)過上面原理的學(xué)習(xí),對(duì)NTP有了一定的了解,現(xiàn)在根據(jù)HMI的要求將業(yè)務(wù)流程復(fù)制到腳本中實(shí)現(xiàn)。

新建變量,使用透?jìng)鞯哪J降脑O(shè)備驅(qū)動(dòng),主要是學(xué)習(xí)腳本,以前關(guān)于MQTT協(xié)議的文章有講過怎樣配置驅(qū)動(dòng),變量表如下圖,由于NTP協(xié)議使用16進(jìn)制收發(fā)數(shù)據(jù),也就需要對(duì)應(yīng)調(diào)整收發(fā)數(shù)據(jù)模式:

移植到HMI

使用按鍵關(guān)聯(lián)發(fā)送腳本如下:

COM1_WRITE_BUFF_CACHE="1B0004FA0001000000010000000000000000000000000000000000000000000000000000000000000000000000000000"

!SetDevice(system_time,6,"Write(COM1_WRITE_BUFF_CACHE, COM1_READ_BUFF_CACHE)")

t0=!TimeGetCurrentTime()

使用事件策略關(guān)聯(lián)接收狀態(tài)變量COM1_READ_RUN_STATE”,在電平跳變時(shí)觸發(fā)“數(shù)據(jù)解析”與“時(shí)間配置”腳本:

“數(shù)據(jù)解析”,將NTP服務(wù)返回的數(shù)據(jù)保存到t1_strt2_str,在轉(zhuǎn)換成時(shí)間戳存儲(chǔ)在t1t2,

IF !len(COM1_READ_BUFF_CACHE)=96 THEN

t3=!TimeGetCurrentTime()

t1_str=!mid(COM1_READ_BUFF_CACHE,65,8)

t1=!Hex2I(t1_str)-2208988800

t2_str=!mid(COM1_READ_BUFF_CACHE,80,8)

t2=!Hex2I(t2_str)-2208988800

set_time=t2+((t3-t0)-(t1-t1))/2

ENDIF

“時(shí)間配置”,利用計(jì)算得到的時(shí)間戳配置HMI系統(tǒng)時(shí)間:

!SetTime(!TimeGetYear(set_time),!TimeGetMonth(set_time),!TimeGetDay(set_time),!TimeGetHour(set_time),!TimeGetMinute(set_time),!TimeGetSecond(set_time))

查看技術(shù)文章和免費(fèi)咨詢技術(shù)問題可以訪問我司官網(wǎng)及各官方平臺(tái):

微信號(hào):cdebyte

今日頭條:億佰特

新浪微博:成都億佰特

成都億佰特--物聯(lián)網(wǎng)應(yīng)用專家,隨時(shí)在身邊,時(shí)刻準(zhǔn)備為您服務(wù)!




點(diǎn)擊撥打: 億佰特官網(wǎng) 4000-330-990