在數(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í)鐘,寫(xiě)入到一個(gè)長(zhǎng)時(shí)間類(lèi)型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開(kāi)始計(jì)算),是無(wú)法被32位整數(shù)容納的,因此,此處僅計(jì)算其相對(duì)時(shí)間。起始時(shí)間"timeMeasure".timeNowULIntStart在開(kāi)始通訊,或者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)注
5016文章
13383瀏覽量
464740 -
數(shù)據(jù)采集
+關(guān)注
關(guān)注
39文章
6243瀏覽量
113910 -
上位機(jī)
+關(guān)注
關(guān)注
27文章
945瀏覽量
54939 -
S7-1500
+關(guān)注
關(guān)注
3文章
300瀏覽量
6489
原文標(biāo)題:西門(mén)子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)先 登錄
相關(guān)推薦
評(píng)論