注意: 雖然 JavaScript 不是本網站的必要組成部分,但您與內容的互動將受到限制。請啟用 JavaScript 以獲得完整體驗。

使用 Python 控制 CD/DVD 包裝硬體

簡介

這個故事講述了在自動化 CD/DVD 光碟包裝行業中應用 Python。在批發市場中,CD/DVD 光碟以 10、20 或 50 張為單位,在一個收縮包裝的散裝包裝中出售。清點這些包裝的光碟堆需要大量的人工,並且需要幾個步驟才能完成

  1. 從一大堆光碟中拿起估計數量的光碟,
  2. 使用光碟計數器驗證光碟數量的正確性,
  3. 新增或移除光碟以滿足所需數量,以及
  4. 將光碟送到包裝機

為了使包裝過程具有成本效益,使用自動 CD/DVD 光碟分配器來執行上述步驟。

Acqutek 公司Micro Image Precision Co. Ltd 的委託,為該分配器機器開發控制軟體。該專案時間緊迫,只有不到 4 個月的時間來完成工作。此外,最初沒有可用的硬性規範,並且要求隨著分配器機械設計的不斷發展而不斷變化。

為了滿足客戶的需求並管理專案的動態需求,我們需要一種快速靈活的方式來開發系統軟體。在考察了可用的技術後,我們選擇了 Python。這種面嚮物件語言的互動性質、其適用於快速原型設計以及其廣泛的標準庫使其非常適合具有快速變化要求的專案。

CD/DVD 光碟分配器的硬體

由 Micro Image Precision Co 設計的 CD/DVD 光碟分配器由六臺光碟計數和拾取機組成。每臺機器可以從輸入軸上拾取固定數量的光碟,將光碟向前移動,然後將其釋放到空的軸上。這六個軸在輸送機上的光碟計數器之間移動,輸送機將它們帶到送入包裝機的點。

Overview of CD/DVD partitioner

CD/DVD 光碟分配器的元件,其中綠色圓盤代表氣缸,用於在輸送機在下方連續移動時保持軸靜止 放大

Front of CD/CVD partitioner

CD/DVD 光碟分配器的正面 放大

Side of CD/CVD partitioner with touch screen

CD/DVD 光碟分配器的側面。觸控式螢幕控制面板位於左上角 放大

主計算機透過 RS-485 連線與六臺 CD/DVD 光碟分配器通訊,並透過數字 I/O 匯流排控制輸送機上的氣缸。

控制軟體架構

控制器軟體分為五個主要元件:中央控制邏輯、錯誤處理程式、數字 I/O 介面、RS-485 序列通訊器和圖形使用者介面 (GUI)。

控制邏輯元件負責控制、協調和監視生產過程。根據來自 GUI 的事件和來自機器其他部分的訊號,它向計數和拾取機器以及輸送機上的氣缸傳送一系列命令。

數字 I/O 介面為控制邏輯提供各種方法來訪問感測器的狀態,並控制輸送機上氣缸的上下移動。

RS-485 序列通訊器提供向光盤分配器傳送命令和接收響應的方法。

GUI 元件為操作員提供使用者介面,以設定、測試、除錯、啟動、暫停和停止機器。

Main entry menu

主入口選單。這是系統啟動後觸控面板螢幕上顯示的第一個選單。 放大

Setup operation mode menu

設定操作模式選單。操作員可以使用此控制面板來設定每個包裝要選擇的光碟數量。 放大

Operation menu

操作選單。操作員可以使用此面板來初始化、執行、暫停、重置和清除輸送機。該面板還顯示從機器其他部分發送的任何警告或錯誤訊息。 放大

Engineer mode

工程師模式。工程師可以使用此面板來獲取每個感測器的狀態,控制氣缸和輸送機電機,並向計數和拾取機發送命令以進行維護或解決問題。 放大

實施

事實證明,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 simulator

ML500 模擬器。紅色圓盤表示已載入光碟的軸。綠色圓盤表示等待載入的空軸。小的藍色垂直條表示氣缸,小的紅色方塊表示用於檢測軸位置的感測器。黑色和綠色方塊表示訊號;黑色表示訊號關閉,綠色表示訊號開啟。 放大

模擬器顯示的圖形動畫是使用 pygame 模組構建的。事實證明,該模擬器非常逼真;在其上執行的程式碼可以上傳到主計算機,幾乎無需修改。只有模擬的 I/O 模組被真實的 I/O 模組替換。

結論

CD/DVD 光碟分配器的控制軟體花費了一名開發人員大約 4 個月的時間完成。軟體開發過程幾乎與硬體開發過程並行。在專案結束時,控制軟體通過了所有現場測試,並在生產中順利執行。

該專案幾乎 100% 用 Python 開發。這表明 Python 不僅僅是一個玩具。它是解決實際問題的強大武器。

在專案開始時提出了一個擔憂:Python 的速度是否足夠快來處理生產過程的即時需求?在 CD/DVD 分配器中,只要最快的所需響應時間大於 1 毫秒,Python 和 Linux 就可以完美地工作。對於更快的應用程式,可能需要即時作業系統來提供足夠快速和精確的響應時間。

關於作者

陳昭安 (Jau-Ann Chen) 是一位為自動化行業提供服務的 Linux 顧問和系統分析師。他專注於模擬、嵌入式 Linux 和數字影像處理應用。