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