DX 戴璇 · daixuan.cloud
返回精选作品
工业工程企业实践 作业测定与时间研究 MOD 动作分析 MUDA 非增值分解 AGV 物流路径规划

一汽丰田发动机产线作业测定与 AGV 物流路径重构

在发动机装配车间开展标准化作业时间观测,以秒表测时与 MOD 模特法完成工序动作分解,用山积图与节拍平衡率定位全线瓶颈;针对物料配送环节,对 AGV 运行轨迹进行路径网络建模,识别并简化交叉干涉点。改善路径分「现场测定 → 瓶颈识别 → 方案比选 → 收益测算」四步推进。

🏭 实践单位:一汽丰田发动机(长春)有限公司 🧰 岗位:工业工程 (IE) / 生产效率实习生 📅 周期:2024.09 – 2024.10 ✍️ 主研作者:戴璇
数据口径说明:本页工序工时、AGV 里程与改善收益均为基于实习期间现场作业测定方法框架整理的脱敏标定值(情景推演口径),不代表企业真实生产数据。指标定义、测定方法与测算公式与现场实际做法保持一致,用于说明改善路径与测算逻辑,不用于披露任何企业工艺参数。
6 工位
标准化作业测定覆盖
秒表测时 + MOD 动作分解
-6.7 s
瓶颈工序节拍收敛
58.7s ➔ 51.6s · 压降至客户节拍线以内
-3 处
AGV 路径交叉干涉点
双向交叉网络 ➔ 单向环形回路
-11.4%
物料配送单循环里程
套件前置化 + 路径去冗余
+8.2 pp
产线平衡率 (LBE) 提升
79.3% ➔ 87.6%(情景测算)

📌 一、 现场命题:串联流水线的瓶颈放大效应

发动机装配属于典型的高度专业化串联节奏流水线。在这种结构下,全线产出能力并不由平均工时决定,而是被耗时最长的工位(瓶颈工序)单向锁死 —— 这就是节拍管理中的木桶效应。

现场观察到的核心矛盾集中在两处:一是瓶颈工位的作业内容存在大量非增值活动(MUDA),工人反复转身取件、翻找工具、等待物料到位,这些动作并不改变产品形态却实实在在地吃掉了节拍;二是物料配送与作业节拍失配,AGV 采用「按需呼叫」模式,多条双向路径在同一通道内交叉,一旦发生会让行,配送延迟就会传导为工位停工等待。

⏱️ 阶段 1:现场作业测定

  • 秒表连续测时法,按工位逐循环记录
  • MOD 模特法拆解到动作单元级别
  • 剔除异常值并做评比系数修正

🔍 阶段 2:瓶颈识别

  • 山积图呈现各工位工时构成
  • MUDA 四类分解:等待 / 搬运 / 翻找 / 走动
  • 与客户节拍线比对,锁定超线工位

🔀 阶段 3:方案比选

  • AGV 路径网络建模,标注交叉干涉点
  • 按需取件 / 定拍巡回 / 混合三种模式比选
  • 从里程、等待率、实施成本三维打分

📈 阶段 4:收益测算

  • 平衡率与平衡损失率前后对比
  • 物流周转节拍与单循环里程测算
  • 产能释放的情景推演

⏱️ 二、 作业测定:工序工时谱与 MUDA 分解

对装配线 6 个关键工位开展连续循环测时,并将每个循环的工时拆分为增值作业时间与非增值活动时间两部分。增值部分指直接改变工件形态或装配状态的作业;非增值部分按 MUDA 口径细分为等待、搬运、翻找、走动四类。

工位 增值作业 (s) 非增值 MUDA (s) 实测总工时 (s) 非增值占比 节拍状态
OP10 缸体上线 38.2 5.1 43.3 11.8% 达标
OP20 曲轴装配 44.6 8.4 53.0 15.8% 临界超线
OP30 活塞连杆 46.8 11.9 58.7 20.3% 🚨 全线瓶颈
OP40 缸盖气门 41.5 6.7 48.2 13.9% 达标
OP50 总装终检 35.4 4.6 40.0 11.5% 余量充足
OP60 试漏检测 33.0 3.2 36.2 8.8% 余量充足

一个容易被忽略的规律是:非增值占比与工位总工时高度正相关。OP30 的非增值时间达 11.9 秒,占比 20.3%,是全线最高;而工时最短的 OP60 非增值占比仅 8.8%。这说明瓶颈不是「工人手脚慢」,而是工位布置与物料供给方式让该工位被迫承担了最多的无效动作。

发动机装配线各工位增值与非增值工时山积图 六个工位的横向堆叠条形图,深色段为增值作业时间,琥珀色段为非增值 MUDA 时间,虚线为客户节拍 52 秒,OP30 活塞连杆总工时 58.7 秒超出节拍线成为瓶颈。 各工位工时构成(山积图)· 单位:秒 0 20 40 60 OP10 缸体上线 43.3 OP20 曲轴装配 53.0 OP30 活塞连杆 58.7 OP40 缸盖气门 48.2 OP50 总装终检 40.0 OP60 试漏检测 36.2 客户节拍 52.0s 增值作业时间 非增值 MUDA 时间 客户需求节拍线
图 1 · 发动机装配线 6 工位增值 / 非增值工时山积图与客户节拍比对
💡 现场洞察:OP30 总工时 58.7 秒,超出客户节拍 52.0 秒达 6.7 秒;同时它的非增值时间 11.9 秒是全线最高。这意味着只要把 OP30 的非增值动作压掉一半以上,就能把它拉回节拍线以内 —— 不需要动任何工艺参数或增加设备投入,改善目标由此明确。

非增值活动 (MUDA) 四类构成

对 OP30 的 11.9 秒非增值时间做进一步拆解,可以看清改善的着力点究竟在哪一类动作上:

OP30 非增值时间 = 11.9 s 的构成分解
  ├─ 翻找与拿取工具(工具架布置不合理,需转身二次定位)  4.6 s  38.7%
  ├─ 等待物料到位(AGV 配送延迟传导的停工等待)         3.4 s  28.6%
  ├─ 工件搬运与台面间转移                                    2.5 s  21.0%
  └─ 工位内走动(跨台位取标准件)                               1.4 s  11.8%

翻找工具与等待物料两项合计占 67.3%,且都不属于「操作者技能」范畴,而是工装布置与物流供给方式导致的系统性浪费。改善方向因此收敛为两条:工位定置化管理 + 物料配送模式重构。

🔀 三、 方案比选:AGV 物流路径网络重构

物料配送的等待问题,根因在多条 AGV 双向路径共用同一通道。把工位抽象为节点、AGV 行驶通道抽象为边,绘制路径网络后可以清晰看到:按需呼叫模式下的双向路径产生了 3 处交叉干涉点,每次会让行都会给配送引入随机延迟,而延迟又直接转化为瓶颈工位的停工等待。

AGV 路径网络改善前后对比 左图为改善前的双向交叉路径网络,四条路径产生三处交叉干涉点;右图为改善后的单向环形回路,交叉干涉点降为零。 改善前:双向按需取件路径网络 改善后:单向定拍巡回回路 4 条双向路径 · 3 处交叉干涉点 4 条单向回路 · 0 处交叉干涉点
图 2 · AGV 物料配送路径网络改善前后对比(节点 = 装配工位,边 = AGV 行驶通道)
💡 路径规划要点:改善的本质不是「把 AGV 开得更快」,而是把双向共用通道改为单向回路。单向化之后,路径之间不再存在需要会让行的交叉点,配送延迟从随机变量变为可预测的固定周期 —— 这才是定拍巡回能够成立的前提。

三种配送模式比选

配送模式 交叉干涉点 单循环里程 (m) 线旁齐套等待率 实施成本 综合评价
方案 A · 按需呼叫取件
(现场现状)
3 186 8.6% 基准 不可控延迟传导
方案 B · 单台套箱定拍巡回 0 164.8 0% 路径重划 + 料箱改造 ✅ 采纳
方案 C · 混合(A + B) 2 178 3.2% 路径重划 改造不彻底

选型逻辑:方案 C 看似折中,但由于保留了部分按需呼叫路径,交叉干涉点只从 3 处降到 2 处,等待率仍达 3.2%,改善收益被「残余干涉」稀释。方案 B 虽然需要同步改造料箱(由零件箱改为单台套件箱),但一次性把干涉点清零,等待率归零,因此被采纳。

配套工位改善举措

🧰 1. 工位定置化管理

按动作经济原则重新布置 OP30 活塞装配台的工具架,把高频取用工具移到双手自然作业域内,消除转身与二次定位,压缩「翻找与拿取」4.6 秒中的大部分。

🤖 2. AGV 套件配送前置化

曲轴轴瓦、活塞销等标准件由「按需取件」改为「单台套箱定拍巡回配送」,线旁齐套等待率由 8.6% 降为 0,直接消除「等待物料到位」的 3.4 秒。

⚖️ 3. 跨工位工步转移

利用 OP60 试漏检测工位(36.2 秒,余量充足)吸收 OP30 的连杆螺栓二次标记工步,实现全线负荷平顺化,避免瓶颈改善后出现新的次瓶颈。

📈 四、 量化收益与产能释放测算

产线平衡率衡量的是各工位负荷的均衡程度,其定义为各工位工时之和与「工位数 × 瓶颈工时」之比:

产线平衡率 LBE = [ Σ T_i / ( k × max(T_i) ) ] × 100%    (k = 工位数 = 6)

改善前:ΣT_i = 279.4 s,max(T_i) = 58.7 s(OP30)
  LBE_before = 279.4 / (6 × 58.7) = 79.3%  ➔  平衡损失率 20.7%

改善后:ΣT_i = 271.1 s,max(T_i) = 51.6 s(瓶颈已转移至 OP20)
  LBE_after = 271.1 / (6 × 51.6) = 87.6%  ➔  平衡损失率 12.4%

平衡率净跃升:+8.2 个百分点

一个值得记录的副产品 —— 瓶颈漂移:OP30 从 58.7 秒压到 47.6 秒之后,全线的约束点并没有停在 OP30,而是转移到了原本「临界超线」的 OP20(51.6 秒)。这说明改善不能只盯着当前瓶颈改:如果不把 OP20 一并纳入改善范围,OP30 压得再狠,产出也只会被 OP20 卡住。改善后新瓶颈 51.6 秒已进入客户节拍 52.0 秒以内,约束才真正解除。

指标 改善前 改善后 变化 口径
瓶颈工序节拍 58.7 s(OP30) 51.6 s(OP20) -7.1 s (-12.1%) 实测均值
产线平衡率 LBE 79.3% 87.6% +8.2 pp 情景测算
AGV 交叉干涉点 3 处 0 处 -3 处 路径网络拓扑
物料单循环里程 186 m 164.8 m -11.4% 路径里程测算
线旁齐套等待率 8.6% 0% -8.6 pp 现场抽样
日理论装配产能 约 429 台 约 488 台 +13.8% 情景推演

产能测算口径:单班有效工作时间 420 分钟(已扣除点检与休息),日理论产能 = 420 × 60 / 瓶颈节拍。改善前 420 × 60 / 58.7 ≈ 429 台;改善后 420 × 60 / 51.6 ≈ 488 台,日理论产能提升约 +13.8%。

需要说明的是:理论产能提升不等于实际产出提升。实际产出还受设备综合效率 (OEE)、换型频次、来料质量波动等因素制约。本页给出的产能数字是在瓶颈消除这一单一变量下的情景推演值,用于说明改善动作的量级,不能直接等同于现场实际产量增量。

💻 五、 测算脚本(Python)

以下脚本把平衡率计算、MUDA 分解与 AGV 路径里程测算整合为可复现流程,替换 STATIONS 与 PATHS 即可复用到其他产线场景:

line_balance_agv.py
"""发动机装配线平衡率与 AGV 路径里程测算(脱敏标定数据口径)"""

# ---------- 1. 工位工时谱:(增值作业, 非增值 MUDA) ----------
STATIONS = {
    "OP10 缸体上线": (38.2, 5.1),
    "OP20 曲轴装配": (44.6, 8.4),
    "OP30 活塞连杆": (46.8, 11.9),   # 瓶颈工位
    "OP40 缸盖气门": (41.5, 6.7),
    "OP50 总装终检": (35.4, 4.6),
    "OP60 试漏检测": (33.0, 3.2),
}
TAKT = 52.0   # 客户需求节拍

def total(t): return t[0] + t[1]

print("=== 工序工时谱 ===")
for op, (va, muda) in STATIONS.items():
    tt = total((va, muda))
    flag = "  <-- 超出节拍线" if tt > TAKT else ""
    print(f"{op:<12} 增值 {va:>5.1f}s | MUDA {muda:>4.1f}s | 合计 {tt:>5.1f}s "
          f"| 非增值占比 {muda / tt:>5.1%}{flag}")

# ---------- 2. 产线平衡率 LBE = ΣT_i / (k × max T_i) ----------
def lbe(stations):
    times = [total(v) for v in stations.values()]
    return sum(times) / (len(times) * max(times))

before = lbe(STATIONS)

# 改善情景:OP30 定置化 + 套件前置压缩非增值;OP20 同步微调;一个工步转移至 OP60
after_stations = dict(STATIONS)
after_stations["OP20 曲轴装配"] = (44.6, 7.0)   # MUDA 8.4 -> 7.0(临界超线一并处理)
after_stations["OP30 活塞连杆"] = (42.6, 5.0)   # MUDA 11.9 -> 5.0,且转出 4.2s 工步
after_stations["OP60 试漏检测"] = (37.2, 3.2)   # 吸收 OP30 转出的连杆螺栓二次标记工步
after = lbe(after_stations)

print(f"\n=== 产线平衡率 ===")
print(f"改善前 LBE = {before:.2%} | 瓶颈节拍 = {max(total(v) for v in STATIONS.values()):.1f}s")
print(f"改善后 LBE = {after:.2%} | 瓶颈节拍 = {max(total(v) for v in after_stations.values()):.1f}s")
print(f"平衡率提升 +{(after - before) * 100:.1f} 个百分点")

# 注意:改善后瓶颈由 OP30 转移到 OP20 —— 瓶颈漂移,说明不能只改当前瓶颈

# ---------- 3. AGV 路径网络:交叉干涉点检测 ----------
def seg_intersect(p1, p2, p3, p4):
    """返回两线段交点(不含共端点情形),无交点返回 None"""
    d1 = (p2[0] - p1[0], p2[1] - p1[1])
    d2 = (p4[0] - p3[0], p4[1] - p3[1])
    den = d1[0] * d2[1] - d1[1] * d2[0]
    if abs(den) < 1e-9:
        return None                       # 平行或共线
    t = ((p3[0] - p1[0]) * d2[1] - (p3[1] - p1[1]) * d2[0]) / den
    u = ((p3[0] - p1[0]) * d1[1] - (p3[1] - p1[1]) * d1[0]) / den
    if 1e-6 < t < 1 - 1e-6 and 1e-6 < u < 1 - 1e-6:
        return (p1[0] + t * d1[0], p1[1] + t * d1[1])
    return None                           # 交点在端点 = 共用工位,不算干涉

def count_crossings(paths):
    hits, keys = [], list(paths)
    for i in range(len(keys)):
        for j in range(i + 1, len(keys)):
            pt = seg_intersect(*paths[keys[i]], *paths[keys[j]])
            if pt:
                hits.append((keys[i], keys[j], tuple(round(v, 1) for v in pt)))
    return hits

# 平面坐标(无量纲,仅用于拓扑交叉检测,非厂区实测坐标)
NODES = {"L1": (0, 0), "L2": (0, 40), "L3": (0, 80),
         "R1": (52, 0), "R2": (52, 40), "R3": (52, 80)}

PATHS_BEFORE = {
    "L1->R3": (NODES["L1"], NODES["R3"]),
    "L2->R1": (NODES["L2"], NODES["R1"]),
    "L3->R2": (NODES["L3"], NODES["R2"]),
    "L1->R2": (NODES["L1"], NODES["R2"]),
}
# 改善后:单向环形回路(每条边方向唯一,不再有对向交叉)
PATHS_AFTER = {
    "N1->N2": ((26, 0), (52, 20)),
    "N2->N3": ((52, 20), (26, 40)),
    "N3->N4": ((26, 40), (0, 20)),
    "N4->N1": ((0, 20), (26, 0)),
}

print("\n=== AGV 路径网络(拓扑层)===")
print(f"改善前交叉干涉点:{len(count_crossings(PATHS_BEFORE))} 处")
for a, b, pt in count_crossings(PATHS_BEFORE):
    print(f"   - {a} × {b} @ {pt}")
print(f"改善后交叉干涉点:{len(count_crossings(PATHS_AFTER))} 处")

# ---------- 4. 配送里程(现场路径实测,单位:米) ----------
# 注意:里程不能由上面的无量纲坐标推算,必须用现场实测的路线距离
ROUTE_BEFORE, ROUTE_AFTER = 186.0, 164.8
print(f"\n=== 配送里程(实测口径)===")
print(f"单循环里程:{ROUTE_BEFORE:.1f} m -> {ROUTE_AFTER:.1f} m "
      f"({(ROUTE_AFTER - ROUTE_BEFORE) / ROUTE_BEFORE:+.1%})")

🎓 六、 方法沉淀与口径边界

🔗 相关作品

代码已复制到剪贴板