概述
在數(shù)據(jù)采集時(shí),精準(zhǔn)的相對時(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í)間戳的詳細(xì)步驟。雖然S7-1500已經(jīng)支持64位的整型,但是,考慮到低端的PLC還不支持64位的整型,因此,此處選擇相對通用的32位無符號整型。PART01完整程序 程序在準(zhǔn)備工作結(jié)束后,進(jìn)行一次時(shí)間戳計(jì)算,包括了時(shí)鐘獲取、轉(zhuǎn)換等過程。
PART02將時(shí)鐘轉(zhuǎn)換成整型數(shù)
首先讀取時(shí)鐘,寫入到一個(gè)長時(shí)間類型LDT,然后,轉(zhuǎn)成64位無符號整型ULInt。這個(gè)轉(zhuǎn)化是無損失的,"timeMeasure".timeNowULInt精確到納秒(ns)。
PART03獲取相對時(shí)間
精確到納秒的時(shí)間位數(shù)很長(從1970-1-1開始計(jì)算),是無法被32位整數(shù)容納的,因此,此處僅計(jì)算其相對時(shí)間。起始時(shí)間"timeMeasure".timeNowULIntStart在開始通訊,或者PLC啟動(dòng)時(shí)獲取。
PART04轉(zhuǎn)成微秒(μs),并轉(zhuǎn)成32位無符號整數(shù) 此處截取微秒的部分,并強(qiáng)制轉(zhuǎn)化成32位無符號整數(shù)"dbGen_1024".stamp。
PART05翻轉(zhuǎn)的問題 用32位無符號整數(shù)表達(dá)微秒的時(shí)間戳?xí)r,由于32位無符號整數(shù)的最大值是4_294_967_295,大概1.2小時(shí)就會溢出而自然翻轉(zhuǎn)到0,因此,采集軟件必須注意處理翻轉(zhuǎn)的問題。
PART06有時(shí)間戳采集時(shí)的對時(shí)機(jī)制
由于PLC的對時(shí)(調(diào)表)不是很方便,因此,PLC里的絕對時(shí)間很可能是原始的時(shí)間,因此,我們只利用其準(zhǔn)確的相對時(shí)間來生成時(shí)間戳。
在采集軟件里要進(jìn)行對時(shí)操作(PLC-Recorder是在收到第一個(gè)完整電文時(shí),讀取電文內(nèi)的時(shí)間戳和系統(tǒng)時(shí)間,完成對時(shí),后續(xù)都用相對時(shí)間來處理,實(shí)際工作時(shí),還要考慮PLC初始化、網(wǎng)絡(luò)中斷等很多其他因素)。
審核編輯 :李倩
-
plc
+關(guān)注
關(guān)注
5013文章
13345瀏覽量
464382 -
西門子
+關(guān)注
關(guān)注
94文章
3055瀏覽量
116143 -
數(shù)據(jù)采集
+關(guān)注
關(guān)注
39文章
6200瀏覽量
113831 -
S7-1500
+關(guān)注
關(guān)注
3文章
300瀏覽量
6473
原文標(biāo)題:西門子S7-1500產(chǎn)生精確時(shí)間戳的方法
文章出處:【微信號:工控PLC學(xué)習(xí),微信公眾號:工控PLC學(xué)習(xí)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論