文/劉月紅
為了實現作業單自動導入,筆者構建了掃描系統,系統由工控機、掃描槍、集線器和PLC(控制加工設備)組成,其中在工控機和掃描槍之間使用串行通信方式,工控機和PLC之間使用以太網連接方式。工控機(下面統稱主機)中的軟件主要包括三個部分:主機讀取掃描槍串口數據程序、主機讀寫PLC的CPU模塊的軟元件存儲器程序、掃描系統狀態轉換程序。
當掃描槍掃描到作業單上二維碼得到其中包含的ASCII字符串后,掃描槍將數據經USB口線傳送到主機,主機安裝了USB轉換串口程序,從而主機可以使用串口讀取程序接收經主機USB口的數據線上傳進的數據。串口讀取程序使用SerialPort控件,在Mdi容器Form的定時器處理程序中不斷查詢、提示、連接掃描槍;并在SerialPort控件的數據接收事件處理器中讀取ASCII字符串,再根據事先制定的二維碼中數據格式解析掃描信息,得到各項加工參數(例如切割直徑、切割長度、切割類型、棒材形狀、棒材根數等信息),程序還將作業單參數放入用戶界面的加工作業表單中,使作業單直觀地呈現;這樣就無差錯、快捷地將作業單輸入到了主機。
當主機使用串口讀取程序讀到一批待加工的作業單后,用戶需將其上傳寫入到加工設備的PLC的CPU模塊軟元件存儲器中;并且為了確認上傳到PLC的CPU模塊軟元件存儲器中數據的正確性,需要隨即對剛上傳到PLC的CPU模塊軟元件存儲器中的數據進行讀取并比對,以確認上傳數據成功與否;除此之外,主機還需實時獲取與PLC的通信控制信號(如:“加工指令可接受”、“加工中”、“指令取消完成”、“外部指令取消完成”)和其它反饋信息(如:上傳到PLC的參數是否存在異常等),在主機端需將作業單“寫入完成”、“指令取消”等信號寫入PLC的CPU模塊軟元件存儲器中供PLC的程序查詢;所以主機中需要有PLC的CPU模塊軟元件讀寫程序。

圖1
PLC的CPU模塊可以通過以太網接口模塊與主機進行以太網連接,主機程序使用TCPClient提供的方法,在同步阻止模式下通過網絡來連接、發送和接收流數據。該部分程序,除了主線程,另外還創建了兩個子線程,一個是TCP連接子線程,另一個子線程則負責實時地讀取PLC數據。主線程在需要的時候對PLC執行寫入。主機讀寫PLC數據利用SLMP(Seamless Message Protocol)的以太網通信用3Ε幀,通信數據使用二進制代碼,與利用ASCII代碼的數據進行的通信相比,利用二進制代碼進行的通信的通信數據量僅約為一半,因此能夠縮短通信時間。為了從主機側對PLC的CPU模塊軟元件存儲器進行數據讀取/寫入請求,發送指令報文;PLC的CPU模塊根據在每個掃描周期結束的ΕND處理中主機請求的內容,讀取/寫入數據,將含有處理結果的響應報文(響應)發送給提出請求的主機。采用半雙工通信,訪問PLC時,在相對于前一個指令報文的發送,接收到來自PLC模塊側的響應報文后,發送下一個指令報文(在完成響應報文的接收前,不能發送下一個指令報文)。所以在軟件實現時,為了避免主線程讀取PLC數據與子線程讀取PLC數據之間以及子線程PLC讀取和主線程PLC寫入之間的沖突,需對發送報文、接收響應的函數實行線程阻止。
在“發送指令”與“接收響應”之間需要等待的時間,其應大于SLMP進行通信的最小處理時間(批量讀取、批量寫入的情況下)Tfs,Tfs的計算公式為:
Tfs=Ke+ (Kdt*Df)+Scr*處理所需的掃描次數+主機的ACK處理時間
Tfs:從接收主機的請求數據到PLC的CPU模塊完成處理的時間(單位:ms)
Ke、 Kdt:常數(Ke=1,Kdt=0.001)
Df:請求數據字數+響應數據字數(應用數據部)
Scr:掃描時間
PLC的CPU模塊掃描時間約40ms,指令處理所需的掃描次數為1,所以本系統選擇了此等待時間為50ms。
由于進行對來自于外部設備的請求的處理,PLC的CPU模塊的掃描時間將會延長,因此應加以注意。為了減少掃描時間的延長對控制的影響,應以較少的點數分多次進行訪問。在這種情況下,在接收完響應解除線程阻止后,可以將讀到的數據塊直接放入用于放置所有讀到數據的全局二維數組中互不沖突的對應的元素塊中。也可以將讀到的數據拷貝到局部數組變量(作為過渡)再將該數據放到用于放置所有讀到數據的全局二維數組中互不沖突的對應的元素塊中;但需注意的是,不能使用相同的一維全局數組變量作為過渡,否則會產生數據沖突而發生數據讀取錯誤。
系統主機軟件含有三個狀態:掃描、上傳和加工監控;通過該部分程序在這三個狀態之間自動切換并循環,從而實現自動化的生產監控過程。狀態圖如圖1所示。
系統初始狀態為“掃描”,系統通過用戶界面上的按鍵“掃描”、“上傳”以及讀取PLC發來的控制信號,在三個狀態之間自動切換。系統利用按鍵“掃描”、“上傳”背景顏色高亮或另一個標簽“加工監控”的背景顏色高亮呈現系統目前所處的狀態,系統始終處于這三個狀態之一,所以任何時刻按鍵“掃描”、“上傳”和標簽“加工監控”只有一個是高亮的。
系統有時是通過PLC發來的信號事件來轉換狀態的。如前所述主機中的軟件創建了子線程用于實時讀取PLC的CPU的軟元件存儲器,而PLC的信號數據(通信控制信號)和切割參數數據一樣都存于PLC的CPU的軟元件存儲器中;在此基礎上,主機軟件創建定時器,在定時器事件處理程序中定時地檢測判斷子線程中實時讀到的PLC中信號數據(如:“加工指令可接受”、“加工中”、“指令取消完成”、“外部指令取消完成”等),這樣就可以實現狀態的及時轉換。
在掃描狀態下,主機軟件將掃描槍掃描到的作業單錄入,而在非掃描狀態下忽略掃描槍的輸入。當系統處于上傳狀態時表明作業單參數已被正確設入PLC的CPU模塊的軟元件存儲器中,此時如果用戶還想繼續掃描或編輯作業參數,可以按擊按鍵“掃描”回到掃描狀態。不管系統狀態處于掃描還是上傳狀態,如果檢測到PLC的表示設備“加工中”的信號,系統的狀態都會自動轉入“加工監控”狀態,而后主機軟件顯示切割的進度和完成情況。因為主機軟件從上傳狀態返回掃描狀態時對已上傳作業單表進行了備份,所以如果在掃描狀態下PLC控制的設備開啟切割,主機軟件會直接轉入加工監控狀態,并將之前備份的已上傳作業單表恢復到當前的作業單表中。
設入錯誤是指在試圖上傳參數到PLC時,主機軟件將上傳參數與實時讀取的參數數據進行比對發現讀寫不一致的情況,從而停留在掃描狀態;而PLC發來作業單數據異常信號是指上傳參數已經比對成功,但PLC程序發現所上傳的參數數據不在合理范圍之內而在PLC的CPU模塊軟元件存儲器中設置異常標志,系統主機軟件檢測到此異常后,會快速返回掃描狀態,使用戶能夠編輯修改。
該掃描系統主機軟件實現了作業單的自動錄入、自動上傳、加工監控的主要功能,實現了掃描槍的掃描與加工設備的協同工作。