8個點位任兩個點位得電就有輸出,PLC用什麼指令?
沒有合適的指令。得自己寫程序。
之前做過一個,是關於水泵的。超過n台設備有請求時,啟動兩台水泵,否則只開一台。
題主沒說是什麼PLC,姑且用三菱說一下吧。品牌是其次的,主要是方法和思想。
1,用計數器。
計數器的用法,是Y0為on,加1,Y0為off,減1。說到這裡,題主自然知道,得用加減雙向計數器了。
2,求和,算總數。
Y0為off,則D0賦值為0; 為on,則D0賦值為1。
……
……
Y7為off,則D7賦值為0; 為on,則D7賦值為1。
然後把D0到D7加起來。
和≥2,就執行某動作。
方法3,排列組合。
當然,我估計,題主也是面對排列組合的複雜度絕望,才上知乎提問的。
方法1,是最簡單的,但是寫程序的時候,一定要寫明白,考慮明白加減的條件,否則容易出錯。
方法2,依然很麻煩,一來,要賦值,而來,要做加法。但是啰嗦歸啰嗦,但是不容易出錯。
上述方法,不僅僅可以用於解決題主的問題,而且,還可以有其他的用途。
比如,我上面說的,根據請求信號的數量,開啟1個水泵,2個水泵,3個水泵。
您沒說是哈型號的plc呀。三菱里有個sum指令,西門子的就用scl寫一個for循環一樣就可以呀。
>=(8個點位 K2)----(Y0)
不知道你看懂了沒
while(1){
if((1||3||5||7) (2||4||6||8))
Temp1 = 1;
if((1||2||3||4) (5||6||7||8))
Temp2 = 1;
if((1||5||2||6) (3||7||4||8))
Temp3 = 1;
if((1||6||3||8)(5||2||7||4))
Temp4 = 1;
if( Temp1 || Temp2 || Temp3 || Temp4)
output = 1;}
不知道這樣行不行?有重複的,但是不影響輸出。
循環檢測8個點
推薦閱讀: