董 藝
(安徽電子信息職業(yè)技術(shù)學(xué)院 機(jī)電工程系,安徽 蚌埠 233030)
自動售貨機(jī)是一種目前使用較為普遍的自動化裝置.而自動售貨機(jī)的控制一般都是靠PLC來完成.從筆者掌握的相關(guān)資料可知,開發(fā)此類程序時,不論是何種型號的PLC,程序員基本上采用的都是經(jīng)驗設(shè)計法[1-2].經(jīng)驗設(shè)計法雖為最常用的編程方法,但筆者認(rèn)為這種方法既不形象也不簡潔,尤其對于梯形圖程序初學(xué)者在嘗試編寫該類程序時,有一定的困難.而順序功能圖(SFC)完全可以替代經(jīng)驗設(shè)計法作為自動售貨機(jī)類程序編制方法的首選.
筆者針對一個經(jīng)典的自動售貨機(jī)控制系統(tǒng)設(shè)計要求,選用日本三菱FX2N系列PLC,提出一種基于SFC的全新的自動售貨機(jī)類程序設(shè)計方案.
該自動售貨機(jī)控制要求為:
①該自動售貨機(jī)設(shè)有1元、5元和10元投幣口,可以接受其中的任何一種硬幣.
②當(dāng)投入的硬幣總值達(dá)到或超出8元時,綠茶指示燈亮(指示已經(jīng)可以選擇出綠茶).
③當(dāng)投入的硬幣總值達(dá)到或超出12元時,綠茶、咖啡指示燈都亮(指示既可以選擇出綠茶,也可以選擇出咖啡).
④當(dāng)綠茶指示燈亮?xí)r,如果按下綠茶按鈕,則自動售貨機(jī)通過綠茶出口出茶水,持續(xù)時長為10s.出綠茶過程中,綠茶指示燈由原先的常亮變?yōu)殚W亮.
⑤當(dāng)咖啡指示燈亮?xí)r,動作同綠茶.
⑥控制系統(tǒng)設(shè)有找錢功能,找錢時應(yīng)有指示燈進(jìn)行提示.
不論用何種方法編程,首先必須進(jìn)行I/O資源的分配,具體見表1.
表1 自動售貨機(jī)I/O資源分配表
一般來說,使用順序功能圖進(jìn)行編程設(shè)計時,首先要考慮的是針對控制要求應(yīng)該選用何種架構(gòu)的SFC.按照自動售貨機(jī)的控制要求,第一步應(yīng)該是先投幣并把投幣總值與8、12兩個數(shù)字進(jìn)行比較.錢夠了的話則可以選擇綠茶或者咖啡.所以從總體上來看,自動售貨機(jī)的SFC應(yīng)當(dāng)采用選擇序列.但是再結(jié)合細(xì)節(jié)思考的話,售貨機(jī)在出綠茶或咖啡的時候,實際上也在進(jìn)行算賬和找錢,而這又是并發(fā)序列的結(jié)構(gòu).所以自動售貨機(jī)的SFC應(yīng)當(dāng)是選擇序列之中又包含并發(fā)的結(jié)構(gòu).由于是兩種飲料,所以是對稱的,如圖1所示.
圖1 自動售貨機(jī)控制的SFC總體結(jié)構(gòu)
在確定了SFC的總體架構(gòu)之后,必須對其進(jìn)行細(xì)化.在投幣計數(shù)這一步里,首先應(yīng)對1元、5元和10元三個不同的投幣口投入的幣值進(jìn)行相加,將相加結(jié)果放入數(shù)據(jù)寄存器D0中.同時要將D0中的計數(shù)值與8、12這兩個數(shù)值進(jìn)行比較,達(dá)到條件時將相應(yīng)的綠茶或咖啡指示燈點(diǎn)亮.幣值在加入D0中的時候,需用脈沖有效型指令A(yù)DDP,以避免由于PLC自身工作在循環(huán)掃描工作方式下而導(dǎo)致投幣一次卻多次計數(shù)的情況發(fā)生.具體處理辦法見圖2.
圖2 投幣計數(shù)階段的程序設(shè)計
在錢幣數(shù)值達(dá)到要求的數(shù)值時,可以選擇綠茶,也可以選擇咖啡.售貨機(jī)在出綠茶時不能同時也出咖啡,但從流程圖程序處理的角度看,出綠茶和出咖啡的程序處理過程是高度對稱的.因此,只要分析出一種飲料的程序處理過程,另外一種的處理只要修改一下錢幣的數(shù)值,其它保持一致即可.PLC在允許顧客選擇飲料后,一旦顧客選擇了綠茶,那么PLC需立即處理兩方面的問題:一是打開閥門出綠茶,另一個是算賬找錢.這兩個任務(wù)是同時進(jìn)行的,沒有先后次序,而且在兩個任務(wù)都結(jié)束后方可回到初始狀態(tài)等待下一次的投幣及飲料選擇,因此程序必須使用并發(fā)序列.出綠茶的任務(wù)完成比較簡單,直接在一工作步中驅(qū)動電磁閥門打開,同時驅(qū)動一個定時器計時10s,到時間后此工作步結(jié)束即可.而與此并發(fā)的一路首先應(yīng)做的是從計數(shù)器D0中扣除綠茶價格對應(yīng)的數(shù)值8,然后無條件(轉(zhuǎn)移條件=1)向下一步過渡.由于顧客投入的錢幣數(shù)值有可能大于8,所以需將減過8以后的D0中的數(shù)值與0比較,判斷其大于還是等于0.如果是等于,無需找錢,程序步可直接再向下過渡;如果D0中的數(shù)值大于0,則需找錢.由于找出的是一元硬幣,一次不一定能找清,因此在此工作步中需構(gòu)造出循環(huán)體,并能發(fā)出找錢脈沖.找錢脈沖發(fā)出的同時不斷讓D0的數(shù)值減1,直至循環(huán)到D0中的數(shù)值為0.具體處理過程見圖3.
圖3 飲料選擇階段的程序設(shè)計
在投幣計數(shù)階段和飲料排出階段的程序設(shè)計完成之后,將其與圖1所確定的售貨機(jī)控制的總體結(jié)構(gòu)相配合,進(jìn)行完整的功能圖的編制.當(dāng)投幣計數(shù)階段達(dá)到自動售貨機(jī)出飲料的條件之后,可以用“指示燈亮”與“飲料選擇按鈕按下”這兩個條件相與(Y2X4、Y3X5)作為向下一步過渡的轉(zhuǎn)移條件.在兩種飲料排出階段的SFC程序結(jié)束時,需各設(shè)置一虛步S7、S13,之后匯合至S14,然后再返回初始狀態(tài),以滿足SFC設(shè)計格式規(guī)則的要求.完整的SFC程序見圖4所示.
圖4 自動售貨機(jī)的PLC控制的SFC程序
經(jīng)實驗室反復(fù)調(diào)試后可以發(fā)現(xiàn),該SFC程序在經(jīng)嚴(yán)格的步進(jìn)格式轉(zhuǎn)化之后輸入PLC,自動售貨機(jī)控制系統(tǒng)可以長期穩(wěn)定運(yùn)行.當(dāng)可選擇的飲料種類的數(shù)量或價格需要變動時,修改程序比經(jīng)驗設(shè)計法設(shè)計出的程序要方便、形象.雖然在進(jìn)行PLC的程序編制時,使用最多的是經(jīng)驗設(shè)計法[3],但筆者認(rèn)為,在能夠使用SFC的情況下,SFC應(yīng)作為首選方案,以使程序設(shè)計更加簡潔、易于修改與擴(kuò)展.
參考文獻(xiàn):
[1]郭艷萍,張海紅.電氣控制與PLC應(yīng)用[M].北京:人民郵電出版社,2013:198-203.
[2]殷慶縱,李洪群.可編程控制器原理與實踐[M].北京:清華大學(xué)出版社,2010:78-81.
[3]徐超.電氣控制與PLC技術(shù)應(yīng)用[M].北京:清華大學(xué)出版社,2009:282-286.