SCL編程語言學習(3.1)-通過TON控制氣缸運動距離

有些工程項目需要控制氣缸的運動距離,實現的方式有很多種,本文承接上一篇文章 的內容,講講如何通過控制氣缸的通/斷時間來控制氣缸的運動距離(對位置精度要求不高的場合)。

本文為了簡化程序,只考慮一種額定載荷的情況(同時運動機構摩擦係數、供氣壓力保持恆定),載荷不變,流量開度相同的情況下,運動的速度基本相同,通過控制氣缸運動時間,即可控制氣缸運動距離。

在上一篇文章 中已經實現的上升和下降,在此基礎上,使用TON接通延時指令,通過設定時間,轉換流量開度值實現氣缸停止。同時由於氣缸攜帶負載,要考慮負載自身重量,停止在某一位置是需要氣缸具有持續上升力抵消載荷重力,保持在某一位置。所以停止時,氣缸控制閥的流量開度不是0,具體開度值需要根據載荷大小而定。

首先需要了解一下“接通延時”指令的相關知識。


TON: 接通延時

使用“接通延時”指令將 Q 輸出的設置延時 PT 指定的一段時間。當參數 IN 的邏輯運算結果 (RLO) 從“0”變為“1”(信號上升沿)時,啟動該指令。指令啟動時,預設的時間 PT 即開始計時。超出時間值 PT 之後,Q 參數的信號狀態將變為“1”。只要啟動輸入 IN 仍為“1”,參數 Q 就保持置位。啟動輸入的信號狀態從“1”變為“0”時,將復位參數 Q。在啟動輸入檢測到新的信號上升沿時,該定時器功能將再次啟動。

可以在 ET 輸出上查詢當前時間值。該定時器值從 T#0s 開始,達到時間值 PT 時結束。只要參數 IN 的信號狀態變為“0”,就立即復位 ET 參數。

每次調用“接通延時”指令,都必須為其分配一個 IEC 定時器用以存儲該指令的數據。IEC 定時器是一個 IEC_TIMER、IEC_LTIMER、TON_TIME 或 TON_LTIME 數據類型的結構,可如下聲明:

  • 聲明為一個系統數據類型為 IEC_TIMER 或 IEC_LTIMER 的數據塊(例如,“MyIEC_TIMER”)
  • 聲明為塊中“Static”部分的 TON_TIME、TON_LTIME、IEC_TIMER 或 IEC_LTIMER 類型的局部變量(例如,#MyIEC_TIMER)

該指令的參數見表1所示。

SCL編程語言學習(3.1)-通過TON控制氣缸運動距離

表1 TON指令的參數

該指令執行操作的脈衝時序圖如圖1所示。

SCL編程語言學習(3.1)-通過TON控制氣缸運動距離

圖1 TON時序圖


明確了實現方式,瞭解了TON的使用規範。接下來定義變量,根據【每次調用“接通延時”指令,都必須為其分配一個 IEC 定時器用以存儲該指令的數據】的要求,首先定義一個IEC定時器,同時定義其運行所需的變量,所有變量彙總如圖2所示(藍色區域為新定義的變量)。

SCL編程語言學習(3.1)-通過TON控制氣缸運動距離

圖2 定義的變量

採用SCL語言編程,具體程序如圖3所示。

SCL編程語言學習(3.1)-通過TON控制氣缸運動距離

圖3 SCL程序

有“//”標識的部分為新編寫程序,具體每個行程序釋義如下:

  • 第6行程序是將“keep_rate”標準化為0.0~1.0範圍內的值;
  • 第7行程序是將“NORM_keep_rate”縮放到PLC能夠執行的整數範圍,具體上一篇文章有解釋。
  • 第10~13行程序如果“rise_command”信號狀態從“0”變為“1”時,PT 參數預設的時間開始計時,在ET 中顯示實時的時間值,達到預設的時間1000ms,“timer_Q”變為TRUE,具體可參照圖1時序圖理解。
  • 第15~17行程序如果“timer_Q””為TRUE,則將則將縮放過的值“SCALE_keep_rate”賦值給輸出變量AQ1,該值與載荷重量相抵,維持在某一位置。直到接到“fall_command”指令進行動作。


分享到:


相關文章: