我以前做這種項目都是用上位機來做調度的,好處是可用用配置文件或者設置界面的方式動態(tài)調整各種調度條件和需要收集的數(shù)據(jù)點。不過上位機調度需要通信時間開銷,做的不好的話會有明顯的等待時間,這方面需要一定的實戰(zhàn)經(jīng)驗和技巧。
只靠PLC解決,主要還是把思路梳理清楚以后把調度算法抽象出來,并建立數(shù)據(jù)結構來支撐這個調度算法,包括輸入的,輸出的和中間變量都放到數(shù)據(jù)結構中去。最終效果就是所謂的面向對象,只要把這個對象定義清楚了,就不是什么大問題。
這里隨便舉個例子:
PLC的調度邏輯實際上非常簡單,你這里后面沒有掃描了,默認產品都是順序流動的。用上面的數(shù)據(jù)解構建立一個先進先出的FIFO,首站上線push一個元素到FIFO中,開始往后流轉,每個站觸發(fā)以后在FIFO進行搜索,把FIFO中當前站號=當前站的上一站的的那個數(shù)據(jù)結構中的當前站編號字段改成本站的編號,并在加工結束后給所有站狀態(tài)這個字段中代表本站的位寫入結果,比如合格寫1不合格寫0;如果當前站 有檢測結果要記錄,那么寫入對應的過程參數(shù)n,因為是全局的,所以把一個產品所有可能用到的參數(shù)都列出來。當一個產品依次走完所有的站后,在最后一個站檢查所有站結果是不是都為1,是就報OK,不是就報NG。處理完成后(如果NG品要隔離的話),在FIFO中刪除這個元素。
這個只是一種簡單的搞法,實際項目會更復雜,比如說所有結果這個字段很多時候只用bool類型是不行的,即不止有好和不好,還要更細化的分類,這個時候就變通一下就行了。
你這里最大的問題是后面沒有掃碼了,整個產線搞成了類似多工位轉盤那種思路,這就要求中間絕對不能亂,一亂了就數(shù)據(jù)和實物就對不上了,但是好處就是其實可以更簡單,比如上面的FIFO,你可以不用,甚至把產品數(shù)據(jù)結構的地址定死都行,因為你的調度和工藝是嚴格綁定的,就長這個樣子了。我們以前會在每個站都裝掃碼,可以在工位間隨意加buffer,瓶頸工位也可以加雙工位,都很簡單,因為把工藝和調度解耦開了以后,就可以非常自由的進行調度了。