一种自动绘制线平衡墙的方法
2022-09-06龚龙强杨娜刘露郭维夏徐友谊
龚龙强 杨娜 刘露 郭维夏 徐友谊
上汽通用五菱汽车股份有限公司重庆分公司 重庆市 401320
1 传统的线平衡墙绘制方法
传统线平衡墙的绘制是由班段长在excel 中进行手工绘制,对照SOS/ 工艺流程要素工时表挨个进行要素的识别复制信息手工选择excel 单元格进行要素填写单元格的合并边框绘制,及区分增值、非增值、步行时间后的颜色填充,存在严重的工作效率低、花费时间久、一致性差等问题,成为使用线平衡墙改进工具的一大障碍。
2 利用Python 实现线平衡目视图自动绘制
Python 由荷兰数学和计算机科学研究学会的Guido van Rossum 于1990 年代初设计,作为一门叫做ABC 语言的替代品。Python 提供了高效的高级数据结构,还能简单有效地面向对象编程。Python 语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。
openpyxl 模块是一个读写 Excel(部分更早格式不支持)文档的 Python 库,不仅能够同时读取和修改 Excel 文档,而且可以对Excel 文件内单元格进行详细设置,包括单元格样式等内容。使用 openpyxl可以读写xltm、 xltx、 xlsm、 xlsx 等类型的文件,且可以处理数据量较大的Excel 文件,跨平台处理大量数据是其它模块没法相比的。因此openpyxl 成为处理 Excel 复杂问题的首选库函数。本文对python 及其模块的安装和基本使用不作详细阐述。
2.1 基础数据收集与整理
绘制线平衡墙的基础准备工作就是工作要素及其时间的统计工作,根据不同的要求标准结合自身情况可多次测量选用平均值或最低重复值等数据。完成数据的测量后,按工位号、工作要素、操作时间、步行时间等不同类型时间对数据进行统计整理及汇总至excel 文件形成基础数据源,部分成熟企业该数据属于常规工艺数据可稍作适应性修改即可。
2.2 程序开发逻辑及实现
2.2.1 编程开篇引入模块:引入打开及创建excel 文件的模块:from openpyxl import load_workbook, Workbook;引入时间与系统模块:import time, os;引入格式相关模块:from openpyxl.styles import PatternFill, Alignment, Side, Border, Font。
图1 线平衡模板说明
图2 数据源整理
2.2.2 读取数据源:使用load_workbook()、active、datas=ws.iter_rows(values_only=True)等函数方法读取数据源信息。运用for 循环遍历所有数据并通过if 判断筛选剔除表头等非要素信息内容,将剩余内容append()为新的列表或字典数据源备用。
2.2.3 格 式 准 备: 通 过align = Alignment(horizontal='center', vertical='center') # 定义对齐样式横向居中纵向居中;side = Side('thin') # 定义边样式为细条;border = Border(bottom=side, left=side, right=side, top=side)#定义上下左右边框为细条;red = PatternFill('solid', fgColor='FF0000') # 定义红色;yellow = PatternFill('solid',fgColor='FFFF00')# 定 义黄 色;green = PatternFill('solid', fgColor='008000') # 定义绿色。边框及颜色等填充可以根据自己需求自行调整。
2.2.4 起始点初始值赋值:定义并赋值绘图左右区(绘图时根据左右工位分别绘制在左右侧)起始位置值、周期时间、加权时间、工位号、车型等基础数据的初始值,如左侧列起始值2:s_coll = 2;周期时间0:ct = 0;工位号起始值0:station = 0。
2.2.5 循环数据开始绘图:wb1 = load_workbook(path)/ Workbook()打开模板表格或新建表格后获取活动表 ws1 = wb1.active,通过for 循环遍历之前准备的列表或字典数据源,读取要素内容、操作时间、步行时间信息,并通过if 逐一判定是否为上个循环工位、左侧或右侧工位,是否有步行时间等选择,并根据上一步累加后的单元格位置cell(行, 列)开始填写操作要素ws1.cell(s_rowl-ot, s_coll).value = ‘要素内容’、合并单元格ws1.merge_cells(start_row, start_column, end_row, end_column),填涂颜色ws1.cell(s_rowl,s_coll).fill = red、格式设置等操作,计算下个循环的行列初始值、周期时间累加、加权时间累等下个循环准备工作。待循环至出现下一个工位时补充最终加权时间,并开始新的工位循环逐一填绘,直至循环完成。
2.2.6 生成的线平衡墙的保存,for 循环后,通过input 输入或默认保存地址并通过save() 函数保存最终自动绘制的线平衡墙表格。
2.2.7 exe 的 转 换:Python 编 写的程序代码在无python 环境的电脑上不能正常使用,在创建了APP 后可以使用 PyInstaller 模块将 Python 程序生成可直接运行的程序;常用命令格式为“pyinstaller -F name.py”, 将 名 为name.py 的python 程序转化为exe 格式app。这个程序就可以被分发到对应的 Windows 或 Mac OS X 平台上运行使用。如果需要更美观的界面也可使用PYQT5 等界面模块进行开发界面,本文不再描述。至此线平衡墙的自动绘制编程基本完成。保存后的线平衡可根据最终需求自行增加指示线、备注说明等内容。
图3 绘制整体流程逻辑
图4 自动绘制线平衡效果
3 线平衡墙分析及改进
主要改进方法及目标包括:通过工位间的要素互换和增减来减少瓶颈工位的工作量,达到所有工位都能在节拍内完成工作或是减少团队成员工作量的差距;通过工位间的要素互换和增减来提高生产效率为削减工位或提高线速提供依据;通过动作研究等方法进行一些CIP 活动寻找最经济有效的工作方法减少等待时间、非增值时间和步行时间,消除浪费。目标可包括且不限于没有瓶颈工位(所有工位周期时间都在实际单件工时内)、没有多余等待(每个工位等待时间少)、线平衡率在90% 以上、线平衡效率在95%以上等。
图5 APP 使用教程
图6 线平衡率&线平衡效率举例
4 总结
前后对比效率提升,手工绘制单一车型累计需要约20-30 小时不等,自动绘制仅需约1 分钟。除此之外自动绘制程序可完全解决要素内容信息、格式、填涂等一致性不足问题。
通过学习与使用python 及其模块编程开发软件,实现自动化线平衡墙绘制功能替代低效率的手工绘,让计算机替代人工重复性工作,大大提升线平衡墙工具的使用效率及准确率,为改善改进工作提供了有力保障与支持。通过持续的改善提升活动,降低企业生产运行成本、提升效率,持续增加企业竞争力。