模块化易组合的自动洗车机PLC程序
2022-12-28吴焱明李晓龙冯超健朱家诚
吴焱明 李晓龙 冯超健 朱家诚
合肥工业大学 机械工程学院 合肥 230009
1 设计背景
随着汽车产业的发展与居民生活水平的提高,我国的汽车数量越来越多,截至2020年,我国民用汽车拥有量已达到27 340万辆。在此背景下,我国洗车机行业的发展突飞猛进。洗车机毛刷设计、基于机器视觉控制洗车、洗车机故障诊断、物联网自助洗车、洗车机吹风系统改进等方面都有许多研究。
针对洗车机可编程序控制器程序开发,传统的洗车机可编程序控制器程序一般是固定的几套,按照洗车的逻辑顺序编写,更新周期慢,不利于应对洗车客户多样化的需求,也给开发人员新增程序带来大而烦琐的工作量。
对此,笔者设计了一种模块化、易组合的龙门式自动洗车机可编程序控制器程序,将各种洗车中需要的功能写入三菱可编程序控制器的FB功能块,经过封装后可以调用,便于洗车机可编程序控制器程序的开发与维护。开发人员只需要关注这一套程序的作用,可以以几分钟一套的速度较快完成数十套程序的编写,从而对客户洗车的需求进行精准细分。
2 机械结构
龙门式自动洗车机机械结构主要包括龙门架、行走总成、横刷、立刷、风刀、侧吹风、电路控制柜、水路与气路控制柜,如图1所示。
▲图1 自动洗车机机械结构
龙门架是各个部件安装的基础。行走总成由电机驱动,带动整个洗车机前后移动。横刷与立刷负责仿形刷车,将车身的顶部与侧面刷干净。风刀与侧吹风负责将车身上面和侧面的水烘干,并且风刀会仿形保持与车身的距离。洗车机的两侧是控制柜,一侧是电路控制柜,负责控制整个洗车机运行,另一侧是水路与气路控制柜,负责控制气缸与水阀的通断。
3 控制原理
自动洗车机总体控制原理如图2所示。
▲图2 自动洗车机的总体控制原理
自动洗车机的运行由可编程序控制器控制,用户可以通过人机界面与可编程序控制器交互,进而对洗车机进行操作。
可编程序控制器的输入信号主要来源于实体按钮和各种传感器。输出信号经过控制元件来控制电机的旋转或者气缸等执行机构的动作。
在控制原理中,可编程序控制器、变频器、电机形成了一个反馈控制的回路。变频器既可以控制刷子的移动与旋转,又可以检测刷子转动刷车时的功率,并反馈给可编程序控制器,进而影响输出,是实现仿形刷车的关键。
可编程序控制器输入输出信号分配如图3所示。
▲图3 控制回路输入输出信号分配
选择三菱FX5U-80MR/ES可编程序控制器,辅以FX5-16EYR/ES输出扩展模块和FX5-4AD模拟量输入模块。
4 自动洗车机可编程序控制器程序
4.1 整体架构
笔者设计的自动洗车机可编程序控制器程序整体架构分为三部分,如图4所示。
▲图4 自动洗车机可编程序控制器程序整体架构
(1) 自动部分。调用功能库中的功能,拼接成多套洗车程序,对用户的洗车需求进行精准细分,满足不同时长、不同价位的洗车需求。
(2) 手动部分。用于调试与维护人员对自动洗车机进行调整测试,如位置调整、疲劳测试。
(3) 辅助功能。提供手动部分、自动部分都需要的辅助功能,如故障保护、参数设置等。
4.2 自动部分架构
自动部分的架构是自动洗车机可编程序控制器程序的核心。将面向用户的自动洗车程序拆解为面向开发人员的洗车功能,使拼接程序简单便捷。自动部分架构如图5所示。
▲图5 自动部分架构
自动部分主要分为三部分。
(1) 多套自动程序。调用上层功能库的刷车功能与衔接功能,拼接为多套自动洗车程序,提供给客户自主选择。
(2) 上层功能库。用于直接拼接洗车程序,主要包括6个刷车功能和5个衔接功能。刷车功能根据流程将洗车过程分为三类:喷清洗液、刷车、吹风烘干,为了降低编写程序的耦合,又分为往后和往前,因此共有6个刷车功能。衔接功能按照运动方向不同,主要分为到位和复位,穿插在刷车功能的前后,使6个刷车功能可以灵活组合。
(3) 下层功能库。将上层功能进一步拆解为更小的下层功能,同一个下层功能可能会被几个上层功能多次调用。
4.3 单个功能架构
设计单个功能的架构,使各个功能易于被调用组合。上、下层功能库中每个功能三层架构如图6所示。
▲图6 每个功能三层架构
(1) 封装层。对实现层的功能块进行封装,提供封装后功能的调用入口,便于开发者调用。封装层参考设计模式中的代理模式,对实现层进行代理。
(2) 实现层。按洗车顺序调用其它功能,将零散的洗车动作串接起来,是整个功能的核心。对于下层功能,只调用独立的基础层,而上层功能除了调用基础层,还可以额外调用下层功能。
(3) 基础层。使用简单的自锁程序、点动程序等,提供本功能所用到的接触器、变频器、电磁阀等部件做基本运动的调用入口,用于被实现层调用。每个功能都配有单独调用的基础层,目的是降低与其它功能的耦合,避免多线圈问题,实现模块化。
基础层中的都是本功能所需的简单运动,如横刷上升、龙门前进,而下层功能库中的是封装好的复杂功能,如横刷仿形升降、立刷仿形横移。
4.4 单个功能具体实现步骤
单个功能的三层架构与每层的作用已进行设计,以下以上层功能库中的往前刷车功能为例,详细介绍如何编写功能程序。
4.4.1 编写基础层功能块
在编写程序前,首先要明确往前刷车的步骤。往前刷车步骤为往前刷车尾,立刷换向,仿形刷车后部,刷后轮,仿形刷车中部,横刷换向,刷前轮,仿形刷车前部,这一系列过程将会在实现层中编写。其中,往前刷车尾和仿形刷车功能在下层功能库中封装完成,可直接调用。由此,可以明确在往前刷车功能的基础层中,需要配备目前缺少的运动功能,如龙门前进、横刷换向、立刷换向、轮刷伸缩、轮刷旋转等。
在三菱GX WORKS3编程软件中,新建一个FB功能块,作为往前刷车功能的封装层,在里面使用自锁程序,完成所缺基础功能的编写,如图7所示。
▲图7 往前刷车功能基础层程序
4.4.2 编写实现层功能块
新建一个FB功能块,作为往前刷车功能的实现层,在里面调用其它功能,将往前刷车的过程连贯起来,如图8所示。
▲图8 往前刷车功能实现层程序
4.4.3 编写封装层功能块
设计封装层程序分为三个步骤,重点是做好实现层的代理,为其配备所需的基础层,并管理好整个功能的启用与关闭。
(1) 新建一个封装层的功能块,使用自锁程序作为这个功能块以后被调用的入口。将往前刷车功能的实现层功能块、基础层功能块拖出来,使用自锁程序的触点作为这些功能块的启动条件。
(2) 将多次调用实现层功能块的启动信号、停止信号并联起来,再接通自锁程序中的启动和停止线圈。要调用这个功能时,只要将新增的启动信号、停止信号并联在下方,即可方便地调用往前刷车功能。
(3) 做好准备与善后工作。用自锁程序线圈的上升沿与下降沿去批量复位整个功能中用到的定时器、部分数据寄存器、中间继电器,为功能的执行做好准备,为功能的关闭做好复位。
往前刷车功能封装层程序如图9所示。
▲图9 往前刷车功能封装层程序
4.5 调用功能拼接程序
经过以上设计,上层功能库中的刷车功能、衔接功能,以及对上层功能进一步拆解得到的下层功能,都可通过三层架构进行实现与封装,最终完成上层功能库中的所有功能,供开发人员拼接洗车程序。
以下介绍如何使用这些功能快速拼接出一套洗车程序。以往后刷车、往前刷车、往后吹风、往前吹风为例,调用这四个刷车功能,然后在刷车功能的前后加上合适的衔接功能,即可完成拼接。程序拼接思路如图10所示。
▲图10 程序拼接思路
具体的功能拼接可编程序控制器程序如图11所示,其中每个功能经过封装,可以方便调用。
▲图11 功能拼接可编程序控制器程序
5 结束语
笔者设计了一种模块化、易组合的自动洗车机可编程序控制器程序,便于增加新的洗车程序和维护现有的洗车程序。模块化主要体现在洗车过程被拆解为一个个功能块,且每个功能在自身的三层架构中配备了自己独立调用的基础层,降低耦合。易组合体现在每个功能经过三层架构的封装,可以当作线圈去调用,方便使用或关闭这一功能。
设计的程序架构不仅可用于洗车机,也为其它输入输出点数多,过程步骤多,需要按照功能分模块且频繁调用,面向客户多样化需求,频繁迭代更新的可编程序控制器程序提供了参考。应用此程序架构的一般步骤如下:先将复杂的流程向下拆解为一个个较为独立的功能;然后将其中可能会被多个功能调用的公共部分向下进一步拆解为更小的功能,直到没必要继续再拆解为止;之后使用单个功能的三层架构,从下往上完成每个功能的实现与封装;最终编写好整个功能库,可以拼接任意程序。