董 藝
(安徽電子信息職業技術學院 機電工程系,安徽 蚌埠 233030)
自動售貨機是一種目前使用較為普遍的自動化裝置.而自動售貨機的控制一般都是靠PLC來完成.從筆者掌握的相關資料可知,開發此類程序時,不論是何種型號的PLC,程序員基本上采用的都是經驗設計法[1-2].經驗設計法雖為最常用的編程方法,但筆者認為這種方法既不形象也不簡潔,尤其對于梯形圖程序初學者在嘗試編寫該類程序時,有一定的困難.而順序功能圖(SFC)完全可以替代經驗設計法作為自動售貨機類程序編制方法的首選.
筆者針對一個經典的自動售貨機控制系統設計要求,選用日本三菱FX2N系列PLC,提出一種基于SFC的全新的自動售貨機類程序設計方案.
該自動售貨機控制要求為:
①該自動售貨機設有1元、5元和10元投幣口,可以接受其中的任何一種硬幣.
②當投入的硬幣總值達到或超出8元時,綠茶指示燈亮(指示已經可以選擇出綠茶).
③當投入的硬幣總值達到或超出12元時,綠茶、咖啡指示燈都亮(指示既可以選擇出綠茶,也可以選擇出咖啡).
④當綠茶指示燈亮時,如果按下綠茶按鈕,則自動售貨機通過綠茶出口出茶水,持續時長為10s.出綠茶過程中,綠茶指示燈由原先的常亮變為閃亮.
⑤當咖啡指示燈亮時,動作同綠茶.
⑥控制系統設有找錢功能,找錢時應有指示燈進行提示.
不論用何種方法編程,首先必須進行I/O資源的分配,具體見表1.

表1 自動售貨機I/O資源分配表
一般來說,使用順序功能圖進行編程設計時,首先要考慮的是針對控制要求應該選用何種架構的SFC.按照自動售貨機的控制要求,第一步應該是先投幣并把投幣總值與8、12兩個數字進行比較.錢夠了的話則可以選擇綠茶或者咖啡.所以從總體上來看,自動售貨機的SFC應當采用選擇序列.但是再結合細節思考的話,售貨機在出綠茶或咖啡的時候,實際上也在進行算賬和找錢,而這又是并發序列的結構.所以自動售貨機的SFC應當是選擇序列之中又包含并發的結構.由于是兩種飲料,所以是對稱的,如圖1所示.

圖1 自動售貨機控制的SFC總體結構
在確定了SFC的總體架構之后,必須對其進行細化.在投幣計數這一步里,首先應對1元、5元和10元三個不同的投幣口投入的幣值進行相加,將相加結果放入數據寄存器D0中.同時要將D0中的計數值與8、12這兩個數值進行比較,達到條件時將相應的綠茶或咖啡指示燈點亮.幣值在加入D0中的時候,需用脈沖有效型指令ADDP,以避免由于PLC自身工作在循環掃描工作方式下而導致投幣一次卻多次計數的情況發生.具體處理辦法見圖2.

圖2 投幣計數階段的程序設計
在錢幣數值達到要求的數值時,可以選擇綠茶,也可以選擇咖啡.售貨機在出綠茶時不能同時也出咖啡,但從流程圖程序處理的角度看,出綠茶和出咖啡的程序處理過程是高度對稱的.因此,只要分析出一種飲料的程序處理過程,另外一種的處理只要修改一下錢幣的數值,其它保持一致即可.PLC在允許顧客選擇飲料后,一旦顧客選擇了綠茶,那么PLC需立即處理兩方面的問題:一是打開閥門出綠茶,另一個是算賬找錢.這兩個任務是同時進行的,沒有先后次序,而且在兩個任務都結束后方可回到初始狀態等待下一次的投幣及飲料選擇,因此程序必須使用并發序列.出綠茶的任務完成比較簡單,直接在一工作步中驅動電磁閥門打開,同時驅動一個定時器計時10s,到時間后此工作步結束即可.而與此并發的一路首先應做的是從計數器D0中扣除綠茶價格對應的數值8,然后無條件(轉移條件=1)向下一步過渡.由于顧客投入的錢幣數值有可能大于8,所以需將減過8以后的D0中的數值與0比較,判斷其大于還是等于0.如果是等于,無需找錢,程序步可直接再向下過渡;如果D0中的數值大于0,則需找錢.由于找出的是一元硬幣,一次不一定能找清,因此在此工作步中需構造出循環體,并能發出找錢脈沖.找錢脈沖發出的同時不斷讓D0的數值減1,直至循環到D0中的數值為0.具體處理過程見圖3.

圖3 飲料選擇階段的程序設計
在投幣計數階段和飲料排出階段的程序設計完成之后,將其與圖1所確定的售貨機控制的總體結構相配合,進行完整的功能圖的編制.當投幣計數階段達到自動售貨機出飲料的條件之后,可以用“指示燈亮”與“飲料選擇按鈕按下”這兩個條件相與(Y2X4、Y3X5)作為向下一步過渡的轉移條件.在兩種飲料排出階段的SFC程序結束時,需各設置一虛步S7、S13,之后匯合至S14,然后再返回初始狀態,以滿足SFC設計格式規則的要求.完整的SFC程序見圖4所示.

圖4 自動售貨機的PLC控制的SFC程序
經實驗室反復調試后可以發現,該SFC程序在經嚴格的步進格式轉化之后輸入PLC,自動售貨機控制系統可以長期穩定運行.當可選擇的飲料種類的數量或價格需要變動時,修改程序比經驗設計法設計出的程序要方便、形象.雖然在進行PLC的程序編制時,使用最多的是經驗設計法[3],但筆者認為,在能夠使用SFC的情況下,SFC應作為首選方案,以使程序設計更加簡潔、易于修改與擴展.
參考文獻:
[1]郭艷萍,張海紅.電氣控制與PLC應用[M].北京:人民郵電出版社,2013:198-203.
[2]殷慶縱,李洪群.可編程控制器原理與實踐[M].北京:清華大學出版社,2010:78-81.
[3]徐超.電氣控制與PLC技術應用[M].北京:清華大學出版社,2009:282-286.