此次我們的任務是設計一個分撿器,控制難度逐漸加深,會用上我們以前的所有技術。任務參考《IEC 61131-3編程語言及應用基礎》第281頁,但我們使用了更好的設計方案。控制任務摘抄如下:
為分選不同大小的工件,可采用分選器。它從大的工件中選出小工件,將大的工件送到右側,小工件送到左側。從結構觀點看,它是由兩個集成的基本單元-皮帶傳動機和旋轉平台組成。
電動機驅動傳送皮帶,將被檢盒狀工件前移至旋轉平台。該電動機停轉,直到旋轉平台准備對下一個工件進行分揀。旋轉平台由兩個電動機交替操作:一個電動機帶動平台旋轉,使該旋轉平台接收被撿工件和選擇工件往哪個出口方向送出。另一個傳送電動機則移動輥道確保送入工件定位在平台的中間位置,並在確定工件的出口方向后將其推至已選定的出口。當選擇平台上無工件,或工件越出平台進給邊界時,這兩個電動機停轉,並將選擇平台的方向對准於中間位置,准備接受新的工件。
工件的大小和位置選用適當的光電傳感器來識別。左向出口和右向出口分別設有檢測傳感器LP和RP,用來確認工件是否達到所選定的方向。
當工件從傳送帶進入選擇平台的邊界,光電檢測元件IPh檢測到工件進入選擇平台的事件,接着工件被送入選擇平台,開始加載。這時選擇平台上的輥道傳送電動機啟動,把工件移至平台中間。定位信號由位置傳感器BS檢測。當該傳感器確認工件已處在中間位置,立即選擇平台上的輥道傳送電動機停轉。
由光電傳感器元件SPh檢測工件的高度,並按此信號選擇出口方向。此時啟動平台旋轉電機,根據被選擇的方向電機正轉或反轉,當到達所選的方向,並由傳感器(LP或RP)檢測到,立即停止選擇電動機,啟動輥道傳送電動機,把工件推移至選擇的出口方向。當相關的出口限位開關(OutLS或OutRS)動作,表示工件離開平台,卸載完成,平台的輥道傳送電動機停止,而選擇電動機重新啟動,將平台選擇到中央位置,中央位置由CP傳感器檢測。
下面是信號描述:
變量名
數據類型
描述
IPh
BOOL
檢測有無工件的光電傳感器
SPh
BOOL
檢測工件大小(高度)的光電傳感器
BS
BOOL
工件處於平台中間的位置傳感器
LP
BOOL
工件左出口位置傳感器
RP
BOOL
工件右出口的位置傳感器
CP
BOOL
平台轉向中間位置的位置傳感器
OutLS
BOOL
工件已移出左出口的位置傳感器
OutRS
BOOL
工件已移出右出口的位置傳感器
MP
BOOL
工件在IPh和BS之間的中間位置傳感器
ConveyorRun
BOOL
傳送帶電機
RollingRun
BOOL
平台輥道電機
RotationR
BOOL
平台旋轉電機右轉
RotationL
BOOL
平台旋轉電機左轉
下面是我們設計的分揀器,當其中電機在每一步超過設定的時間,就報警。按復位按鈕后恢復工作。
簡要介紹一下:
我們這里把傳送帶和旋轉平台分開設計,這么做是為了簡化程序。它們兩個狀態之間的聯系主要用了兩個條件:in(Platform.Normal.RollingRun1)和in(Conveyor.ConveyorRun2),從而把它們關聯起來。
在Conveyor狀態中,包含ConveyorRun1和ConveyorRun2,這兩個狀態是控制傳送帶電機的。在Normal狀態中,也有RollingRun1和RollingRun2,也都是控制輥道電機的。那為啥同一控制對像要分兩個狀態呢,主要是方便狀態機建模,這種方法會經常使用。在Conveyor中,我們考慮為了提高效率,加入ConveyorStop。這個步不控制任何東西,主要是為了,當旋轉平台上有工件時,IPh沒有檢測到工件,傳送帶此時可以同步送料,當IPh檢測到工件,進入ConveyorStop狀態,傳送帶停止。當旋轉平台清空后,旋轉到位,CP點亮。此時ConveyorRun2激活。傳送帶繼續傳送工件給旋轉平台。在Normal狀態下,RollingRun1/2和RotationR/L,它們內部多了時間條件[after(3, sec)]{rlErr = true;},作用是當這些狀態激活時間超過設定時間后,認為動作超時,從而把rrErr,rlErr,run1Err,run2Err其中之一置“1",從而把Normal狀態切換到Alarm,產生一個報警。此時按reset鍵可以恢復工作,這里我們用了歷史狀態。
下面我們比較書上原來的設計:
書上的很復雜把,功能上還沒有我們的強大。此狀態機缺點就是沒有把傳送帶和旋轉平台分開,加深復雜度,如果在加入其它控制任務,最終的程序會很凌亂,對以后的維護帶來不便。
下次我們把狀態機寫成LAD。