Python 控制 CD/DVD 包裝硬體
引言
本文講述了在自動化 CD/DVD 光碟包裝行業中應用 Python 的案例。在批發市場中,CD/DVD 光碟以每包 10、20 或 50 張為單位進行收縮膜包裝銷售。為這些包裝數出光碟堆是一個勞動密集型過程,需要經過幾個步驟才能完成:
- 從一大堆光碟中取出估計數量的光碟,
- 使用光碟計數器驗證光碟數量的準確性,
- 增加或移除光碟以達到所需數量,以及
- 將光碟送入包裝機。
為了使包裝過程具有成本效益,使用了自動 CD/DVD 光碟分揀機來執行上述步驟。
Acqutek 公司受 Micro Image Precision Co. Ltd 委託開發該分揀機的控制軟體。該專案時間緊迫,留給完成工作的時間不到 4 個月。此外,最初沒有硬性規範,並且隨著分揀機機械設計的同步演進,需求也時常變化。
為了滿足客戶的需求並管理專案不斷變化的需求,我們需要一種快速靈活的方式來開發系統軟體。在考察了現有技術後,我們選擇了 Python。這種面嚮物件語言的互動性、其適用於快速原型開發的特點以及其豐富的標準庫使其成為一個需求快速變化專案的理想選擇。
CD/DVD 光碟分揀機的硬體
由 Micro Image Precision Co 設計的 CD/DVD 光碟分揀機由六臺光碟計數和拾取機組成。每臺機器都可以從輸入軸上拾取固定數量的光碟,將光碟向前移動,然後將其釋放到一個空的軸上。六個軸透過傳送帶在光碟計數器之間移動,將它們帶到送入包裝機的位置。
CD/DVD 光碟分揀機的元件,其中綠色圓盤代表用於在傳送帶連續移動時將軸固定住的氣缸 放大
CD/DVD 光碟分揀機的前部 放大
CD/DVD 光碟分揀機的側面。觸控式螢幕控制面板位於左上角 放大
主計算機透過 RS-485 連線與六個 CD/DVD 光碟分揀機通訊,並透過數字 I/O 匯流排控制傳送帶上的氣缸。
控制軟體架構
控制器軟體分為五個主要元件:中央控制邏輯、錯誤處理程式、數字 I/O 介面、RS-485 序列通訊器和圖形使用者介面 (GUI)。
控制邏輯元件負責控制、協調和監控生產過程。根據來自 GUI 的事件和來自機器其他部分的訊號,它向計數和拾取機以及傳送帶上的氣缸傳送一系列命令。
數字 I/O 介面為控制邏輯提供各種方法來訪問感測器的狀態,並控制傳送帶上氣缸的上下運動。
RS-485 序列通訊器提供傳送命令和接收來自光碟分揀機響應的方法。
GUI 元件為操作員提供使用者介面,用於設定、測試、除錯、啟動、暫停和停止機器。
主入口選單。這是系統啟動後觸控式螢幕上顯示的第一個選單。 放大
設定操作模式選單。操作員可以使用此控制面板設定每個包裝要選擇的光碟數量。 放大
操作選單。操作員可以使用此面板初始化、執行、暫停、重置和清空傳送帶。該面板還顯示來自機器其他部分的任何警告或錯誤訊息。 放大
工程師模式。工程師可以使用此面板獲取每個感測器的狀態,控制氣缸和傳送帶電機,並向計數和拾取機發送命令以進行維護或故障排除。 放大
實施
Python 的 threading 模組被證明是處理控制邏輯中併發程序的一個非常重要的工具。執行緒用於同時監控生產過程、監視來自 GUI 的事件,以及檢測來自機器其他部分的錯誤訊息。
數字 I/O 介面和 RS-485 序列通訊器是使用 C 語言編寫的庫。SWIG 用於快速使其可以從 Python 程式碼中呼叫。
CD/DVD 分揀機的 GUI 元件是使用 Tkinter 構建的,它提供了一個簡單但非常可靠的 GUI 開發工具包。
cx_Freeze 用於將 Python 控制軟體打包成可執行檔案。
在硬體層面,使用了一張JUKI-740E(K6 400MHz CPU 和 64M RAM)CPU 卡作為主計算機。作業系統是Linux 核心 2.4.18,系統軟體包括 BusyBox、精簡的 X11 視窗伺服器、觸控式螢幕守護程式和網路驅動程式。
所有這些都安裝在一個 64MB 的快閃記憶體盤上。雖然有可能進一步減小根檔案系統的大小,但對於這個專案來說沒有必要。
模擬器
在專案早期,實際機器尚未可用時,開發了一個模擬器。它為開發人員提供了主軸、氣缸運動和感測器狀態的圖形動畫。
模擬器允許軟體開發人員在硬體設計和組裝完成之前開始構建控制軟體。它還充當了除錯和壓力測試控制軟體的便捷方式。
ML500 模擬器。紅色圓盤代表裝載有光碟的主軸。綠色圓盤代表等待裝載的空主軸。小的藍色垂直條代表氣缸,小的紅色方塊代表用於檢測主軸位置的感測器。黑色和綠色方塊代表訊號;黑色表示訊號關閉,綠色表示訊號開啟。 放大
模擬器顯示的圖形動畫是使用 pygame 模組構建的。該模擬器被證明非常逼真;在其上執行的程式碼只需很少修改即可上傳到主計算機。只有模擬的 I/O 模組被真實的 I/O 模組替換。
結論
CD/DVD 光碟分揀機的控制軟體由一名開發人員在大約 4 個月內完成。軟體開發過程幾乎與硬體開發過程並行。在專案結束時,控制軟體通過了所有現場測試,並在生產中平穩執行。
該專案幾乎 100% 使用 Python 開發。這表明 Python 不僅僅是一個玩具。它是解決實際問題的強大武器。
專案開始時曾有一個擔憂:Python 是否足夠快以應對生產過程的即時需求?在 CD/DVD 分揀機中,只要所需的最快響應時間大於 1 毫秒,Python 和 Linux 就能完美執行。對於更快的應用程式,可能需要即時作業系統來提供足夠快和精確的響應時間。
關於作者
Jau-Ann Chen 是一位自動化行業的 Linux 顧問和系統分析師。他專注於模擬、嵌入式 Linux 和數字影像處理應用。
