|
文 ❤沙鷗 2018-7-15 成都
最近因?yàn)橐粋(gè)清洗機(jī)設(shè)備控制器電路板開發(fā)項(xiàng)目(業(yè)務(wù)QQ 2531263726)的需要,要用兩種水液(水液1和水2)交替沖洗,如水液1清洗X分鐘,水2清洗Y分鐘,到達(dá)總時(shí)間Z后停止沖洗,兩種水液共用一個(gè)水泵,用電磁閥V1和V2分別控制兩種水液的通斷。
圖 1 沖洗順序控制邏輯
最初客戶的需求和設(shè)計(jì)是水液1和水液2清洗的時(shí)間固定,分別是3分鐘和5分鐘,總時(shí)間也是固定為15分鐘。這樣就很好做,定義一個(gè)總運(yùn)行時(shí)間變量T,在定時(shí)器中斷里對(duì)T自增加操作進(jìn)行系統(tǒng)總運(yùn)行時(shí)間計(jì)時(shí),首先判斷當(dāng)T在0-3分鐘內(nèi)時(shí)水液1清洗3分鐘,3-8分鐘水液2清洗5分鐘,8-11水液1清洗3分鐘,11-15分鐘水液2清洗4分鐘,這樣就達(dá)到15分鐘停機(jī),順序控制的邏輯是固定不變的,只需要按照這個(gè)邏輯切換閥門和控制水泵啟停即可。
可是后來,客戶有新的要求,需要水液1清洗時(shí)間X,水液2清洗時(shí)間Y和總時(shí)間Z能夠用戶自定義設(shè)置,這樣就增加了編程的難度,圖 1的時(shí)間控制曲線將變得不再唯一而有多種的變化,看起來難辦的樣子,筆者花了十幾分鐘幾經(jīng)周折冥思苦想,終于想到了一個(gè)可行的辦法,編程思路如下:
1) 在定義了水液1清洗時(shí)間X, 水液2清洗時(shí)間Y和總時(shí)間Z, 總運(yùn)行時(shí)間變量T時(shí)間的基礎(chǔ)上,還需要定義一個(gè)分段運(yùn)行時(shí)間變量T2,T2也表示運(yùn)行時(shí)間,在定時(shí)器中斷中自增加計(jì)時(shí),不過只是標(biāo)識(shí)沖洗某種特定水液的運(yùn)行時(shí)間,當(dāng)從水液1切換到水液2,或者從水液2切換到水液1的時(shí)候,T2會(huì)清零。
還需要定義一個(gè)標(biāo)志位W1_W2,當(dāng)W1_W2==1時(shí)表示水液1正在沖洗,當(dāng)W1_W2=2時(shí)表示水液2正在沖洗。
2) 變量X,Y,Z是用戶可以自己設(shè)置的,如通過按鍵設(shè)置。
3) 程序運(yùn)行邏輯可以是這樣的:
① 初始化:將W1_W2賦值到馬上要沖洗的標(biāo)志位,本處以馬上要沖洗水液1為例,就需要令W1_W2=1;
將分段運(yùn)行時(shí)間T2清零,T2=0;
② 當(dāng)T2<X并且W1_W2=1時(shí),控制閥門和水泵用水液1沖洗,T2計(jì)時(shí);
當(dāng)T2=X時(shí),將W1_W2賦值為即將沖洗水液的標(biāo)志位,例如即將用水液2沖洗,令W1_W2=2。
將分段運(yùn)行時(shí)間T2清零,T2=0;
③ 當(dāng)T2<Y并且W1_W2=2時(shí),控制閥門和水泵用水液2沖洗,T2計(jì)時(shí);
當(dāng)T2=Y時(shí),將W1_W2賦值為即將沖洗水液的標(biāo)志位,例如即將用水液1沖洗,令W1_W2=1。
將分段運(yùn)行時(shí)間T2清零,T2=0;
如此②-③步驟就進(jìn)入了交替循環(huán)的模式,依次X時(shí)間水液1、Y時(shí)間水液2,再回到X時(shí)間水液1沖洗的循環(huán)。
④ 當(dāng)總運(yùn)行時(shí)間變量T=Z時(shí),表示總的清洗時(shí)間到,清洗機(jī)停機(jī)。
以上的程序方法就實(shí)現(xiàn)了本文需求的兩種水液可變運(yùn)行時(shí)間交替沖洗的目的。如有不足,歡迎指正。
歡迎關(guān)注微信公眾號(hào):永珂在線
|
評(píng)分
-
查看全部評(píng)分
|