注意: 虽然 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 和数字图像处理应用。