亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種高效的工業(yè)控制系統(tǒng)時間戳壓縮算法

        2022-07-02 14:48:31孫景樂許元元
        電腦知識與技術(shù) 2022年15期

        孫景樂 許元元

        摘要:該文針對工業(yè)控制系統(tǒng)的數(shù)據(jù)特點(diǎn),提出一種時間戳壓縮算法,僅使用參考時間和數(shù)據(jù)時間戳的秒和毫秒數(shù)值即可記錄完整的時間戳信息。該算法可以使工業(yè)控制系統(tǒng)中的時間戳數(shù)據(jù)壓縮為原來的四分之一。該時間戳壓縮算法有效減少網(wǎng)絡(luò)數(shù)據(jù)傳輸量,提升了工業(yè)控制系統(tǒng)的系統(tǒng)效率和容量。

        關(guān)鍵詞:時間戳;壓縮;工業(yè)控制系統(tǒng)

        中圖分類號:TP311? ? ? ? 文獻(xiàn)標(biāo)識碼:A

        文章編號:1009-3044(2022)15-0063-00

        1前言

        在工業(yè)控制系統(tǒng)中,數(shù)據(jù)一般包含三個基本要素:數(shù)值、時間戳和質(zhì)量碼。數(shù)據(jù)指傳感器采集的實(shí)際數(shù)值,例如溫度為300攝氏度,壓力為1.5兆帕;時間戳用來記錄采集數(shù)據(jù)的時刻,精度一般毫秒即可;質(zhì)量碼用來表征數(shù)據(jù)的可信度。關(guān)于工業(yè)控制系統(tǒng)的數(shù)據(jù)壓縮的算法[1-2]比較多,但基本都是基于數(shù)值的。時間戳在數(shù)據(jù)的三要素中占用很大比例,如何在不丟失時間信息的前提下,減少時間戳的數(shù)據(jù)量是工業(yè)控制系統(tǒng)需要解決問題。

        工業(yè)控制系統(tǒng)中數(shù)據(jù)采集都是周期性的,采集周期一般在秒或毫秒級別。采集頻率較高時,為了提高網(wǎng)絡(luò)數(shù)據(jù)傳輸效率,一般將多個采集周期的數(shù)據(jù)打包后傳輸?shù)缴蠈討?yīng)用,傳輸周期一般在500毫秒以上。在一個傳輸周期內(nèi),數(shù)據(jù)包會包含多個采集周期的數(shù)據(jù),但同一個數(shù)據(jù)包內(nèi)的數(shù)據(jù)的時間戳差別僅體現(xiàn)在秒或毫秒級別上,其中“年月日時分”的數(shù)值都是相同的。如果有1萬個監(jiān)測點(diǎn),那么就有1萬次重復(fù)的“年月日時分”,這樣造成傳輸數(shù)據(jù)量增加,網(wǎng)絡(luò)負(fù)荷增加。本文提出一種簡化時間戳壓縮算法,可以極大減少時間戳的數(shù)據(jù)量,有效降低網(wǎng)絡(luò)通信的數(shù)據(jù)量,提高系統(tǒng)效率。

        2時間戳壓縮算法

        2.1簡化時間戳的定義

        無論是Windows系統(tǒng)使用的FILETIME①結(jié)構(gòu),還是Linux平臺使用struct timeval②結(jié)構(gòu),都至少需要8個字節(jié)才能表示一個完整的時間戳[3-5]。對于重復(fù)的“年月日時分”部分,可以只保留一份,秒的最大數(shù)值為59,占用1個字節(jié),毫秒的最大數(shù)值為999,需要2個字節(jié),所以保留秒和毫秒信息仍然需要3個字節(jié)。本文提出的簡化時間戳僅需要2個字節(jié)即可表示一個數(shù)據(jù)時間戳的秒和毫秒的信息,且時間信息不丟失,可還原完整時間戳。使用簡化時間戳記錄數(shù)據(jù)時的基本步驟如下。

        1)數(shù)據(jù)采集時只記錄采集時刻的秒和毫秒數(shù)值。

        2)用總毫秒數(shù)表示秒和毫秒的數(shù)值,即總毫秒數(shù)=秒數(shù)值×1000+毫秒數(shù)值。

        1分鐘有60秒,所以該數(shù)值最大值不超過6000,一個無符號16位整數(shù)的表示范圍為0~65535,所以使用無符號16位整數(shù)即可記錄該時間戳數(shù)值。無符號16位數(shù)僅占用2個字節(jié)(1字節(jié)包含8個比特位)。

        3)數(shù)據(jù)包中包含一個完整的時間戳作為參考時間,一般采用數(shù)據(jù)打包的時刻。該時間戳作為參考時間,用于應(yīng)用層面還原數(shù)據(jù)的完整時間戳。

        下面給出使用簡化時間戳記錄數(shù)據(jù)時間戳的示例:

        示例1:

        假如數(shù)據(jù)1采集時刻為“2022-1-9 13:21:15.368”(數(shù)值和質(zhì)量碼不在本文的討論范圍,僅考慮時間戳),數(shù)據(jù)1的采集時刻可以記為:15368毫秒(15秒×1000+368),占用2個字節(jié)。

        數(shù)據(jù)2采集時刻為“2022-1-9 13:20:56.039”,則其簡化時間戳為56039秒。后續(xù)數(shù)據(jù)3、數(shù)據(jù)4都按照此方法記錄。

        在“2022-1-9 13:21:16.368”時刻數(shù)據(jù)打包并通過網(wǎng)絡(luò)發(fā)送。那么打包時刻 “2022-1-9 13:21:16.368” 即可作為的參考時間(占8個字節(jié))。

        2.2 數(shù)據(jù)量降低效果分析

        按照常規(guī)時間戳定義數(shù)據(jù)格式如表1所示。而采用簡化時間戳后的數(shù)據(jù)格式定義如表2所示。對比兩個表中的灰度背景的行可知,每個數(shù)據(jù)減少2個字節(jié),但多出一個8字節(jié)(表1中斜體部分)。

        常規(guī)時間戳表示方法需要8個字節(jié),采用簡化時間戳僅需要2個字節(jié),是常規(guī)時間戳的四分之一。一個采集數(shù)據(jù)點(diǎn)可節(jié)約6個字節(jié)。

        在進(jìn)行數(shù)據(jù)采集時,根據(jù)點(diǎn)的類型不同,數(shù)據(jù)采集周期也不同,開關(guān)量一般在50毫秒到500毫秒之間,模擬量一般在200毫秒到1秒之間。數(shù)據(jù)采集后并不是立刻發(fā)送,而是需要累積一段時間再發(fā)送到二層,這個周期稱為發(fā)送周期,發(fā)送周期一般為500毫秒到2秒。對于同一個采集點(diǎn),一個發(fā)送周期的數(shù)據(jù)包中包含了多次的采集數(shù)據(jù)。對于大型工業(yè)控制系統(tǒng),數(shù)據(jù)采集點(diǎn)可達(dá)10萬個,那么一個數(shù)據(jù)包可包含大約40萬個采集數(shù)據(jù)。1萬點(diǎn)則可節(jié)省6萬個字節(jié),對于整個數(shù)據(jù)包可節(jié)約240萬字節(jié),約2.3M數(shù)據(jù)量,壓縮效果非??捎^。參考時間雖然需要占用8個字節(jié),但是整個數(shù)據(jù)包中僅需要一個參考時間,可忽略不計。所以簡化時間戳對于降低時間戳數(shù)據(jù)量效果非常明顯。

        2.3設(shè)計約束

        簡化時間戳僅適用于數(shù)據(jù)的時間戳變化范圍在1分鐘之內(nèi)的應(yīng)用場景,如圖 1所示,L表示基準(zhǔn)時間左邊的調(diào)節(jié)范圍,R表示基準(zhǔn)時間右邊的調(diào)節(jié)范圍,且L+R=60秒。工業(yè)控制系統(tǒng)的數(shù)據(jù)采集周期一般都在500毫秒到5秒范圍內(nèi),所以一次數(shù)據(jù)傳輸中,所有數(shù)據(jù)的變化范圍一定在60秒以內(nèi),是可以使用簡化時間戳表示。如果變化范圍超過1分鐘,則無法正確還原原始時間戳。原因就是每分鐘都會有某個時刻的秒和毫秒時間,如果不限定一分鐘內(nèi),則無法確定是哪個分鐘的秒和毫秒。時間戳還原方法在后續(xù)章節(jié)詳細(xì)介紹。

        3時間戳還原算法

        3.1簡化時間戳還原算法

        還原算法的基本思路是,根據(jù)實(shí)際應(yīng)用場景,確定L的值,根據(jù)約束等式L+R = 60,如圖 1所示,R即可確定。假設(shè)Tb為基準(zhǔn)參考時間,Tb1為基準(zhǔn)時間的“年月日時分“部分的數(shù)值③,Tb2表示為基準(zhǔn)時間的”秒毫秒“部分的數(shù)值,Ts表示簡化時間戳的總毫秒數(shù)值,用Tr表示還原后的完整時間戳。詳細(xì)步驟如下:0903A774-C8CA-488F-964C-45596FCBF1E3

        1)計算分離Ts中的秒Ts_s和毫秒數(shù)值Ts_ms;

        Ts_s =? Ts÷1000 ?,此處為向下取整運(yùn)算。

        Ts_ms = Ts mod 1000 ,此處為取模運(yùn)算

        2)取出基準(zhǔn)時間中的“年月日時分“部分的數(shù)值Tb1;

        3)用Tb1、Ts_s和Ts_ms組合成一個新的臨時完整時間戳Tt,并讓Tr=Tt;

        4)取出基準(zhǔn)時間Tb中的秒和毫秒的數(shù)值,并轉(zhuǎn)化為毫秒數(shù)Tb2;

        Tb2 = 秒×1000+毫秒

        5)修正Tr的結(jié)果

        如果Tb2 < Ts,且 (Ts – Tb2) ≥ R×1000,則

        Tr=Tt – 60秒

        如果Tb2 > Ts,且 (Tb2 - Ts) > L×1000,則

        Tr=Tt+60秒

        6)輸出Tr為最終還原的完整時間戳

        下面通過示例講述簡化時間戳的還原過程。

        示例3:

        本示例以示例1中的數(shù)據(jù)為輸入,即Ts為15368毫秒,Tb為“2022-1-9 13:21:16.368”。此時,Tb1為2022-1-9 13:21,Tb2為16368毫秒。假定L=50秒,那么R=10秒。那么還原過程為:

        根據(jù)步驟1)可得到,Ts_s=? 15368÷1000 ? =15秒,Ts_ms=15368 mod 1000=368毫秒;

        根據(jù)步驟2)可得Tb1=“2022-1-9 13:21”;

        根據(jù)步驟3),將Tb1與Ts_s、Ts_ms合并為一個新的完整時間Tr=Tt=“2022-1-9 13:21:15.368”;

        按照步驟4)可計算得到Tb2=16×1000+368=16368毫秒;

        步驟5)中,由于兩個條件都不滿足,不需要修正。最終還原的完整時間戳為“2022-1-9 13:21:15.368”。

        對于數(shù)據(jù)2的時間戳,Ts=56039毫秒,在還原的時候,步驟1)到步驟4)的計算過程都一樣,步驟4)執(zhí)行完成后,Tr=Tt=“2022-1-9 13:21:56.039”,實(shí)際原始時間戳為“2022-1-9 13:20:56.039”,分鐘數(shù)值多了一分鐘,與實(shí)際不符合。該錯誤可在步驟5)中得到糾正。前面的步驟可計算Tb2=16368毫秒,滿足Tb2

        3.2 L和R取值討論

        前面討論過,該簡化方法使用于數(shù)據(jù)波動時間范圍小于1分鐘,L與R的取值需要視具體的使用場景進(jìn)行調(diào)整。示例2中設(shè)置L=50秒,是考慮到數(shù)據(jù)都是在打包時刻之前進(jìn)行采集的,所以L值可設(shè)定偏大一些。如果數(shù)據(jù)是在設(shè)置好參考時間后進(jìn)行采集,那么數(shù)據(jù)的時間戳偏差都在參考時間右邊,此種場景則可設(shè)置L=10秒,那么R=50秒。所以L和R的值不是固定不變的,需要根據(jù)實(shí)際情況靈活調(diào)整。

        4結(jié)論

        本文根據(jù)工業(yè)控制系統(tǒng)數(shù)據(jù)采集的特點(diǎn),提出簡化時間戳方法,并給出時間戳還原的詳細(xì)步驟。使用簡化時間戳,可以使時間戳數(shù)據(jù)變?yōu)樵瓉淼乃姆种?,大大減少了網(wǎng)絡(luò)數(shù)據(jù)傳輸量,提高了工業(yè)控制系統(tǒng)的系統(tǒng)效率。

        注釋:

        ① Windows平臺的時間格式中的一種,使用一個64位整數(shù)(分為低32位和高32位)記錄距離1601年1月1日零時零分零秒時刻的100納秒數(shù).

        ② Linux平臺使用的時間格式,分為兩部分,其中tv_sec是有符號32位整數(shù),記錄距離1970年1月1日的秒數(shù),tv_usec是有符號32位整數(shù),記錄相對于tv_sec下的微秒數(shù).

        ③ 此處為了敘述方便,使用更直觀的“年月日時分”敘述,實(shí)際編程實(shí)現(xiàn)時使用的是對應(yīng)平臺的時間格式(FILETIME或struct timeval).

        參考文獻(xiàn):

        [1] 李煥,劉海濤.DCS模擬量數(shù)據(jù)的分部壓縮方法[J].電子測試,2013(12):52-53.

        [2] 龍海軍,姚光霖.核電站DCS系統(tǒng)歷史數(shù)據(jù)壓縮算法的研究[J].科技資訊,2013,11(8):29-30.

        [3] 巧用Unix的時間戳[J].計算機(jī)與網(wǎng)絡(luò),2012(11):32.

        [4] 陳開渠.十進(jìn)制時間戳協(xié)議[J].中國科學(xué)院研究生院學(xué)報,2001,18(2):144-148.

        [5] 張科偉,唐曉波.時間戳協(xié)議研究[J].計算機(jī)應(yīng)用研究,2004,21(10):100-103.

        【通聯(lián)編輯:聞翔軍】0903A774-C8CA-488F-964C-45596FCBF1E3

        免费国产h视频在线观看86| 人人妻人人澡人人爽欧美一区双| 精品国产成人一区二区不卡在线 | 欧美在线不卡视频| 免费无码黄网站在线观看| 亚洲精品国产av成拍| 美女视频黄a视频全免费网站色| 精品久久久久久综合日本| 强开少妇嫩苞又嫩又紧九色| 一本一道av无码中文字幕| 亚洲色欲Aⅴ无码一区二区| 中文字幕中乱码一区无线精品| 亚洲一区二区三区日本久久九| 国产成人亚洲精品无码青| 亚洲熟妇无码一区二区三区导航| 色妺妺视频网| av无码电影一区二区三区| 日本一区二区不卡二区| 国产va免费精品观看精品| 久久无码av三级| 国产精品美女一级在线观看| 国产性色av一区二区| 国产精品妇女一二三区| 亚洲av无码不卡久久| 亚洲欧美在线观看一区二区| 热综合一本伊人久久精品| 精人妻无码一区二区三区| 国产亚洲一区二区手机在线观看 | 免费在线国产不卡视频| 国产人妻大战黑人20p| 国产亚洲婷婷香蕉久久精品| 国产男女做爰猛烈视频网站| 亚洲97成人在线视频| 欧美人与动牲交a精品| 激情五月天伊人久久| 国产精品久久熟女吞精| 精品无码一区二区三区的天堂| 一本一道波多野结衣一区| 99日本亚洲黄色三级高清网站| 日本久久精品视频免费| 97夜夜澡人人双人人人喊|