SCL編程語言學習(3)-通過模擬量控制氣缸升起和下降

對於PLC的輸入輸出,分數字量和模擬量兩種。數字量很好理解,就是在時間和數量上都離散的物理量,比如啟/停按鈕,行程開關,電磁閥通/斷,這些都是數字量。數字量對應PLC存儲就是1位,即1比特(binary digit,縮寫bit),作為信息的最小單位,只有兩種狀態:0(低電平)和1(高電平),也表示為FALSE和TRUE。模擬量是在時間或數值上都連續的物理量,常見的如溫度、氧含量、壓力等。

模擬量使用起來不太方便,不是有多難,而是在程序上需要做必要的處理,本文通過實例,講一講如何通過模擬量控制氣缸升起和下降。

通過模擬量輸出控制運動對象動作,要先確定運動對象的信號類型和量程等參數。信號類型常見的有電流4~20mA和電壓0~5V/10V等;量程是設備自身的參量,比如氣缸控制閥流量開度為0~100%,K型熱電偶測溫範圍0~1300℃等。

本文選用的氣缸控制閥控制特性如圖1所示,可以看出信號類型4~20mA,4~12mA對應的1通2,流量開度q對應100~0(%);12~20mA對應的1通4,流量開度q對應0~100(%);

SCL編程語言學習(3)-通過模擬量控制氣缸升起和下降

圖1 氣缸控制閥控制特性

處理模擬量信號需要兩個指令,NORM_X:標準化和SCALE_X:縮放指令。


NORM_X:標準化

使用“標準化”指令(參照圖2所示),通過將輸入 VALUE 中變量的值映射到線性標尺對其進行標準化。可以使用參數 MIN 和 MAX 定義(應用於該標尺的)值範圍的限值。輸出OUT( RET_VAL) 中的結果經過計算並存儲為浮點數,這取決於要標準化的值在該值範圍中的位置。

如果要標準化的值等於輸入 MIN 中的值,則輸出 OUT 將返回值“0.0”。如果要標準化的值等於輸入 MAX 的值,則輸出 OUT 需返回值“1.0”。

其中MIN 、 MAX和VALUE既可以是整數,也可以是浮點數。OUT( RET_VAL) 為浮點數。

SCL編程語言學習(3)-通過模擬量控制氣缸升起和下降

圖2 NORM_X

SCALE_X:縮放指令

使用“縮放”指令(參照圖3所示),通過將輸入 VALUE 的值映射到指定的值範圍內以縮放該值。當執行“縮放”指令時,輸入 VALUE 的浮點值會縮放到由參數 MIN 和 MAX 定義的值範圍。縮放結果為整數,存儲在 RET_VAL 輸出中。

其中MIN 、 MAX和OUT( RET_VAL) 既可以是整數,也可以是浮點數。VALUE為浮點數。

SCL編程語言學習(3)-通過模擬量控制氣缸升起和下降

圖3 SCALE_X


接下來在FB中定義各變量,如圖4所示。變量有升起和降落的指令rise_command、fall_command,數據類型均為Bool型;升起和降落的開度百分比rise_rate、fall_rate,此處數據類型均定義為Int型;以及標準化和縮放的變量,NORM_rise_rate(Real型)、NORM_fall_rate_1(Real型)、NORM_fall_rate_2(Real型)、SCALE_rise_rate(Int型)、SCALE_fall_rate(Int型)。

SCL編程語言學習(3)-通過模擬量控制氣缸升起和下降

圖4 定義變量

輸出量AQ1(Int型)需要在PLC變量中定義,同時模擬量輸出的地址要與實際的接線端子地址一致,如圖5所示。

SCL編程語言學習(3)-通過模擬量控制氣缸升起和下降

圖5 定義變量

用SCL語言編程,如圖6所示。

SCL編程語言學習(3)-通過模擬量控制氣缸升起和下降

圖6 SCL程序

  • 第1行程序是將“rise_rate”標準化為0.0~1.0範圍內的值;
  • 第2行程序是將“NORM_rise_rate”縮放到PLC能夠執行的整數範圍,這裡需要了解PLC自身模擬量模塊電流測量模擬值的範圍,需要查找該模擬量模塊的手冊,本文使用的模擬量模塊4~20mA電流測量範圍為0~27648,中間值12mA對應的值為13824(該值需自己計算)。
  • 第3行程序是將“fall_rate”標準化為0.0~1.0範圍內的值;
  • 第4行程序是一次轉換,由於控制閥4~12m對應的是100~0,不太符合常規的表達邏輯。
  • 第5行程序是將“NORM_fall_rate_2”縮放為PLC能夠執行的整數方位,解釋同第2行。
  • 第6~8行程序是進行指令的判斷,如果升起指令“rise_command”為真,則將縮放過的值“SCALE_rise_rate”賦值給輸出變量AQ1,實現氣缸升起;
  • 第9~10行程序是進行指令的判斷,如果下降指令為真,則將縮放過的值“SCALE_fall_rate”賦值給輸出變量AQ1,實現氣缸下降;
  • 注意:這裡為了簡化程序,程序裡沒有進行“rise_rate”和“fall_rate”進行相互復位操作,將其放在HMI屏幕的按鍵上操作(後期有時間再系統講HMI的相關內容)。


分享到:


相關文章: