對于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(%);
圖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) 為浮點數。
圖2 NORM_X
SCALE_X:縮放指令
使用“縮放”指令(參照圖3所示),通過将輸入 VALUE 的值映射到指定的值範圍内以縮放該值。當執行“縮放”指令時,輸入 VALUE 的浮點值會縮放到由參數 MIN 和 MAX 定義的值範圍。縮放結果為整數,存儲在 RET_VAL 輸出中。
其中MIN 、 MAX和OUT( RET_VAL) 既可以是整數,也可以是浮點數。VALUE為浮點數。
圖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型)。
圖4 定義變量
輸出量AQ1(Int型)需要在PLC變量中定義,同時模拟量輸出的地址要與實際的接線端子地址一緻。
用SCL語言編程,如圖5所示。
圖5 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”進行相互複位操作
有話要說...