TwinCAT3中GetSystemTime()功能块使用
GETSYSTEMTIME功能塊的使用
功能塊調用:
首先需要實例化功能塊:然后就可以調用了,很簡單。
GETSYSTEMTIME(timeLoDW=> , timeHiDW=> );
功能塊講解:
此功能塊可以讀取操作系統的時間戳(time stamp),這個time stamp 是一個64位整形數據,精度是100ns,每當TwinCAT3 plc 調用此功能塊,就會更新此time stamp。
其中最主要的兩個用法是:1,用于給某項任務定時。2,用于計算時間,比如給氣缸運行時間,電機運行時間計時等。請注意一個最小單位是100ns(納秒)。
下面給出在此功能塊中納米和毫秒的具體轉換公式:
convert to ms :
SystemTime.timeLoDW is time in 100ns?
SystemTime.timeHiDW is time in 4294967295 * 100 ns?
使用例子:
首先創建一個函數叫F_GetSysTime, 返回值類型為ULINT。
變量聲明如下:
FUNCTION F_GetSysTime : ULINT VAR_INPUT END_VAR VARGetSystemTime: GETSYSTEMTIME; END_VAR 函數主代碼如下: GetSystemTime(timeLoDW=> , timeHiDW=> ); F_GetSysTime := UDINT_TO_ULINT(GetSystemTime.timeHiDW)*4294967296 + UDINT_TO_ULINT(GetSystemTime.timeLoDW)/10000;這樣就可以在main程序里應用上邊這個函數了,以下代碼段是main程序的變量聲明和主代碼。 PROGRAM MAIN VARbStart:BOOL;bEnd:BOOL;StartTime,EndTime:ULINT;ElapseTime:ULINT;END_VARIF bStart THENStartTime:= F_GetSysTime(); END_IFIF bEnd THENEndTime := F_GetSysTime(); END_IF ElapseTime := EndTime - StartTime;然后我在TwinCAT3的Visualization里邊分別鏈接了這幾個變量,用來演示上邊的例子。
Start button 鏈接了MAIN.bStart 變量,
End button-->MAIN.bEnd
StartTime Label -->MAIN.StartTime, text 屬性設置為:StartTime: %d ms
EndTime ? Label-->MAIN.EndTime, text 屬性設置為:EndTime: %d ms
Elapsetime ? Label-->MAIN.ElapseTime, text 屬性設置為:ElapseTime: %d ms
在下圖中,我首先點擊Start button,然后點擊End button, 就可以看到ElapseTime的值為4040ms, 即我點擊start button 和End Button 中間的間隔是4040ms。
總結
以上是生活随笔為你收集整理的TwinCAT3中GetSystemTime()功能块使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux flash擦除命令,Linu
- 下一篇: 开源中国部分源代码分享