在數(shù)據(jù)采集時(shí),精準(zhǔn)的相對(duì)時(shí)間是非常重要的。尤其是高速采集時(shí),上位機(jī)的軟件(尤其是windows系統(tǒng)里的軟件)很難精準(zhǔn)地確定信息的時(shí)刻。這時(shí)候,如果PLC能夠在提供數(shù)據(jù)時(shí),同時(shí)提供一個(gè)精準(zhǔn)的時(shí)間標(biāo)志(時(shí)間戳),將能極大地提高數(shù)據(jù)采集的計(jì)時(shí)準(zhǔn)確性,并降低采集系統(tǒng)的復(fù)雜性。
下面將介紹獲取一個(gè)精確到微秒的Uint32時(shí)間戳的方法。雖然S7-1500已經(jīng)支持64位的整型,但是,考慮到低端的PLC還不支持64位的整型,因此,此處選擇相對(duì)通用的32位無(wú)符號(hào)整型。
PART01 完整程序
程序在準(zhǔn)備工作結(jié)束后,進(jìn)行一次時(shí)間戳計(jì)算,包括了時(shí)鐘獲取、轉(zhuǎn)換等過(guò)程。
PART02 將時(shí)鐘轉(zhuǎn)換成整型數(shù)
首先讀取時(shí)鐘,寫入到一個(gè)長(zhǎng)時(shí)間類型LDT,然后,轉(zhuǎn)成64位無(wú)符號(hào)整型ULInt。這個(gè)轉(zhuǎn)化是無(wú)損失的,"timeMeasure".timeNowULInt精確到納秒(ns)。
PART03 獲取相對(duì)時(shí)間
精確到納秒的時(shí)間位數(shù)很長(zhǎng)(從1970-1-1開始計(jì)算),是無(wú)法被32位整數(shù)容納的,因此,此處僅計(jì)算其相對(duì)時(shí)間。起始時(shí)間"timeMeasure".timeNowULIntStart在開始通訊,或者PLC啟動(dòng)時(shí)獲取。
PART04 轉(zhuǎn)成微秒(μs),并轉(zhuǎn)成32位無(wú)符號(hào)整數(shù)
此處截取微秒的部分,并強(qiáng)制轉(zhuǎn)化成32位無(wú)符號(hào)整數(shù)"dbGen_1024".stamp。
PART05 翻轉(zhuǎn)的問(wèn)題
用32位無(wú)符號(hào)整數(shù)表達(dá)微秒的時(shí)間戳?xí)r,由于32位無(wú)符號(hào)整數(shù)的最大值是4_294_967_295,大概1.2小時(shí)就會(huì)溢出而自然翻轉(zhuǎn)到0,因此,采集軟件必須注意處理翻轉(zhuǎn)的問(wèn)題。
PART06 有時(shí)間戳采集時(shí)的對(duì)時(shí)機(jī)制
由于PLC的對(duì)時(shí)(調(diào)表)不是很方便,因此,PLC里的絕對(duì)時(shí)間很可能是原始的時(shí)間,因此,我們只利用其準(zhǔn)確的相對(duì)時(shí)間來(lái)生成時(shí)間戳。
在采集軟件里要進(jìn)行對(duì)時(shí)操作(PLC-Recorder是在收到第一個(gè)完整電文時(shí),讀取電文內(nèi)的時(shí)間戳和系統(tǒng)時(shí)間,完成對(duì)時(shí),后續(xù)都用相對(duì)時(shí)間來(lái)處理,實(shí)際工作時(shí),還要考慮PLC初始化、網(wǎng)絡(luò)中斷等很多其他因素)。
審核編輯:劉清
-
plc
+關(guān)注
關(guān)注
5031文章
13847瀏覽量
473259 -
數(shù)據(jù)采集
+關(guān)注
關(guān)注
40文章
7076瀏覽量
116106 -
上位機(jī)
+關(guān)注
關(guān)注
27文章
963瀏覽量
55701 -
S7-1500
+關(guān)注
關(guān)注
3文章
301瀏覽量
6796
原文標(biāo)題:西門子PLC S7-1500產(chǎn)生精確時(shí)間戳及各種數(shù)據(jù)處理的方法
文章出處:【微信號(hào):PLC與自控設(shè)備,微信公眾號(hào):PLC與自控設(shè)備】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
時(shí)間同步獲取時(shí)間戳
如何查詢時(shí)間戳
請(qǐng)問(wèn)RX23T如何獲取系統(tǒng)時(shí)鐘,以便獲取類似時(shí)間戳,如何獲取此段代碼運(yùn)行時(shí)間?
1個(gè)Uint16和1個(gè)Uint32總共占用3字,實(shí)際上sizeof返回值為4是為什么?
ulog里現(xiàn)在默認(rèn)的時(shí)間戳是從哪里獲取的呢?
求助,求一個(gè)時(shí)間戳的RTC示例
如何在tilebox上獲取時(shí)間戳?
可由CR設(shè)定數(shù)微秒~數(shù)十秒時(shí)間的通用定時(shí)器

UNIX時(shí)間戳和北京時(shí)間的相互轉(zhuǎn)換

GD32精確延時(shí)和時(shí)間戳

uCOS-III(2) 時(shí)間戳

西門子PLC S7-1500如何獲取精確Uint32時(shí)間戳

西門子PLC S7-1500產(chǎn)生精確時(shí)間戳及各種數(shù)據(jù)處理的方法

西門子S7-1500產(chǎn)生精確時(shí)間戳的方法

評(píng)論