前面一章節,我們介紹了沿指令的運用以及如何自寫沿指令,這一章節我們來說一說另外一種常用指令---定時器。在SCL中常用的定時器指令有:
TP 生成脈衝
TON 接通延時
TOF 關斷延時
TONR 時間累加器
RESET_TIMER 復位定時器
PRESET_TIMER 載入持續時間
下面我們一一介紹這些指令的含義以及它們的用法。
1、TP 生成脈衝
指令的功能含義:
當引數IN檢測到訊號上升沿時,指令啟動,預設時間PT開始計時,隨後不管輸入IN如何變化,引數Q都會持續導通PT所預設的時間。
參考下面的時序圖可以加深你對該指令的理解:
TP時序圖
案例:
透過一個例子來說明指令的運用,要求:收到觸發脈衝訊號後,讓指示燈亮3S,然後熄滅。
分析下:呼叫我們上節課學習到的上升沿指令,作為TP定時器IN介面的引數,TP預設時間3S,當DATA。TP_IN上升沿訊號觸發後,R_TRIG_DB。Q輸出一個掃描週期的脈衝訊號,TP定時器啟動,此時定時器輸出Q有輸出,即DATA。TP。Q為1,持續時間3S,3S後輸出為0。
TP_SCL例子
2、TON 接通延時
指令的功能含義:
當引數 IN 的邏輯運算結果 (RLO) 從“0”變為“1”(訊號上升沿)時,啟動該指令。指令啟動時,預設的時間 PT 即開始計時。超過持續時間 PT 時,引數 Q 的訊號狀態變為“1”。只要啟動輸入仍為“1”,引數 Q 就保持置位。如果 IN 引數的訊號狀態從“1”變為“0”,則復位引數 Q。當在引數 IN 上檢測到一個新的訊號上升沿時,將重新啟動定時器功能。
參考下面的時序圖可以加深你對該指令的理解:
TON時序圖
案例:
透過TON指令實現對某電機的延時啟動;TON延遲指令很簡單也很好理解,這裡主要是看下在SCL程式設計環境中是如何去運用的。
TON例子
3、TOF 關斷延時
指令的功能含義:
當引數 IN 的邏輯運算結果 (RLO) 從“0”變為“1”(訊號上升沿)時,置位引數 Q。當引數 IN 的訊號狀態更改回“0”時,預設的時間 PT 開始計時。只要時間 PT 正在計時,引數 Q 就保持置位狀態。超過時間 PT 時,將復位引數 Q。如果引數 IN 的訊號狀態在超出時間值 PT 之前變為“1”,則將復位定時器。引數 Q 的訊號狀態保持置位為“1”。
參考下面的時序圖可以加深你對該指令的理解:
TOF時序圖
案例:
透過TOF指令完成對某訊號的延遲關斷,TOF指令與TON指令使用上面基本相同,只是功能相反,TOF是IN接通後Q立即輸出,當IN訊號關斷後,PT開始計時,待達到設定時間後Q點停止輸出,
需要注意的是,在PT計時過程中,若IN有變為1,則定時器復位,Q點任為1。
TOF例子
4、TONR 時間累加器(保持時間定時器)
指令的功能含義:
引數 IN 的訊號狀態變為“1”時,執行該指令並且從 PT 設定的時間開始計時。時間 PT 計時過程中,如果 IN 引數訊號狀態為“1”,則記錄的時間值將進行累加。累加後的時間將在引數 ET 中輸出以供查詢。達到時間 PT 時,引數 Q 的訊號狀態變為“1”。即使 IN 引數的訊號狀態變為“0”,Q 引數仍將保持置位為“1”。
不論引數 IN 的訊號狀態如何,引數 R 都將復位引數 ET 和 Q。
參考下面的時序圖可以加深你對該指令的理解:
TONR時序圖
案例
:當IN狀態為1時,定時器開始計時,時間累加儲存在ET中,若中途IN斷開,則ET保持當前數值,待IN恢復導通後,繼續開始計時,直至到PT預設時間後,Q導通。只有R訊號觸發才能復位Q與ET。
TONR例子
5、RESET_TIMER 復位定時器
指令的功能含義:
使用“復位定時器”指令,可將 IEC 定時器復位為“0”。將指定資料塊中定時器的結構元件復位為“0”。該指令不會影響 RLO。
該指令必須在 IF 指令中程式設計。
案例:
運用Reset_timer指令對貨物傳輸超時做報警監控,變數設定如下:
說明:
當啟動脈衝觸發後,Transfer訊號置位,累加定時器PT開始計時,當傳輸完成光電佔位且貨物佔位光電未佔位,傳輸完成Transfer_OUT置位,此時復位累加定時器,若在PT計時時間內,未完成傳輸則觸發TimeOUT超時報警,此時只有Alarm_reset可以復位。
變數
型別
說明
Start
Bool
啟動訊號
Transfer
Bool
傳輸執行訊號
Transfer_OUT
Bool
傳輸完成
Transfer_PE
Bool
傳輸完成PE
NO_PE
Bool
佔位光電
Alarm_reset
Bool
報警復位
Reset_timer例子
6、PRESET_TIMER 載入持續時間
指令的功能含義:
可以使用“載入持續時間”指令為 IEC 定時器設定時間。如果該指令輸入邏輯運算結果 (RLO) 的訊號狀態為“1”,則每個週期都執行該指令。該指令將指定時間寫入指定 IEC 定時器的結構中。
如果在指令執行時指定 IEC 定時器正在計時,指令將覆蓋該指定 IEC 定時器的當前值。這將更改 IEC 定時器的定時器狀態。
案例:
接著上一個案例,我們定時器的PT時間預設可以用這一條指令來給定,下面我們演示一下。
Preset_timer例子
以上就是我們在SCL語言中常用的定時器指令,大家可以多多練習,這一章節就到這裡,
感謝閱讀!