前面一章節,我們介紹了沿指令的運用以及如何自寫沿指令,這一章節我們來說一說另外一種常用指令---定時器。在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語言中常用的定時器指令,大家可以多多練習,這一章節就到這裡,
感謝閱讀!
,