ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

智能制造信息化项目技术方案拆解:从架构分层到设备联网落地

智能制造信息化项目技术方案拆解:从架构分层到设备联网落地 简介这份《智能制造信息化项目技术方案》PPT73页面向制造企业信息化负责人、智能工厂规划人员及售前解决方案工程师系统讲解从建设目标到落地实施的完整路径。内容涵盖制造业数字化转型背景、项目总体架构设计、系统分层建设思路、实施方案与项目管理、售后服务等核心模块并融入碳排放数字化建设与数字化驾驶舱方案既有以信息化结合工业化制造的建设思路也有基于SOA架构的高内聚低耦合平台设计原则能够为智能车间或智能工厂的顶层规划提供直接参考。资源共1个文件格式为pptx压缩包大小约7.72MB可直接打开编辑用于方案汇报、项目申报或需求梳理。当前已有67人学习下载。方案在架构设计上给出了决策层、管理层、执行层、设备终端层的分层框架覆盖MES、设备管理、AGV监测、RFID、数据采集与可视化驾驶舱等典型应用场景并强调高性能、高并发、高可靠性的平台要求对组织内部评审和外部项目投标均具有较高的借鉴价值。1. 智能制造信息化项目技术方案这份材料到底在定什么在制造企业做信息化立项常见到一份《智能制造信息化项目技术方案》PPT页数做到六七十页内容又全又碎。这类材料本质上不是给开发看的接口说明书而是给决策层看的“技术赌约”设备要连到什么程度MES 覆盖哪些车间ERP 对接做到哪一层改造完能换回什么管理收益。写方案的人如果只堆功能模块评审会开完大概率被业务挑刺采集范围、工单闭环、物料追溯、设备 OEE每一条都要有可执行的路径。正因为它不是说明书而是承诺书拆解这件事的顺序就很重要先定架构分层再定设备联网边界再定 MES 业务闭环最后把坑标出来。这篇笔记就按这个顺序把一个常见智能制造信息化项目技术方案该有的骨头拆出来讲清楚怎么做、参数怎么设、为什么这么设。2. 架构分层与系统边界把 73 页方案拆成三层骨架2.1 四层结构解决“数据从哪来、归谁管”常规制造企业信息化落地的拓扑差不多是四层设备层传感器、PLC、机器人控制器、边缘采集层网关、SCADA、实时数据库、业务管理层MES、QMS、EAM、企业经营层ERP、APS。每一层的数据契约和实时性要求完全不同方案里如果不分层会出现一个最尴尬的局面设备组说毫秒级MES 说秒级ERP 说小时级各说各话接口评审会开成吵架会。我一般会在方案里把四层的主责直接写死用一张表格表达评审时没人能再含糊层级典型系统实时性要求核心职责设备层 L0/L1PLC、传感器、机器人毫秒到秒级产生原始信号与状态边缘层 L2采集网关、SCADA秒级数据接力、协议转换、断网缓冲管理层 L3MES、QMS、EAM、WMS秒到分钟工单、质量、设备、库存闭环经营层 L4ERP、APS小时到天订单、计划、财务核算这张表要解决的不是技术选型是组织归属。数据从设备上来归边缘层负责业务规则落在管理层的 MES到了 ERP 只有单据交互不直接读 PLC。边界画清楚后面所有接口设计才有依据。方案里这一段通常占四五页 PPT但价值最大因为后面所有的争议都能追溯回这张表。2.2 MES、SCADA、ERP 的边界一旦模糊后面全是撕扯边界问题最常见的翻车点ERP 下发了生产订单但 MES 里查不到或者 MES 报了完工ERP 库存没有联动。看起来是接口没做好本质是方案没定义“谁对哪个动作负责”。以离散制造为例我把边界规则固定成三条。第一ERP 只负责生产订单的创建和关闭不下发到工序、不管线边库存是否扫码工序级指令交给 MES。第二MES 负责工单拆解、工序流转、报工、质量判定和追溯但 MES 不维护财务账也不做采购入库。第三WMS 管理库位和账实同步MES 只通过托盘码、批次码和 WMS 做物料交接。这三条一写死评审会上的系统归属争论基本就停了。有一个细节我会专门写进方案报工数据以 MES 为准。现场经常出现 MES 和 ERP 两套系统都有完工记录月底对不上账。方案里明确“生产执行记录以 MES 报工时间为准ERP 只读取 MES 的完工确认结果”从数据流上杜绝双写。很多项目最后扯皮都是因为这个没写死。2.3 数据链路时序把 SLA 从口号变成可验收的指标智能制造信息化项目方案里最容易写虚的是性能指标。“保证实时性”“秒级响应”这种话等于没说。我会在方案里给一条完整的数据链路时序按实际车间规模举例写清楚每一跳的时延和承诺值。以一个 30 台注塑机的车间为例PLC 采集到设备循环完成信号时间记为 t0边缘网关在 t02 秒内完成一次读操作并盖上本地时间戳网关把数据推到消息队列MES 在 t010 秒内消费到该条消息写入工单工序表电子看板在 t015 秒内刷新。这四个时间点写进方案后实施团队就有了验收硬指标看板数据超过 15 秒就是链路异常直接定位是采集慢、队列积压还是 MES 消费慢。类似的 SLA 我会直接量化设备数据采集时延 ≤ 2 秒全天采集链路的数据完整率 ≥ 99.5%MES 订单查询响应 ≤ 3 秒追溯查询单次 ≤ 5 秒。这些数字看着朴素但比“高可用”“实时”有效得多。做方案的人应当明白越具体的数字越有验收价值模棱两可的词反而是以后扯皮的空间。2.4 用数据量算基础设施采集点、存储和网关数量很多方案在 IT 基础设施章节爱堆“超融合”“双活”但没算过到底需要多少存储。设备采集数据的体量是可以精确算的一条状态记录含时间戳、设备编码、状态枚举、计数器值打包成 JSON 大约 128 字节。不算不知道一算吓一跳。下面是我常用的一套估算口径采集点数采集频率原始数据量/天压缩后存储/月约3倍压缩边缘网关数量建议500 点5 秒约 864 万条约 1.1 GB约 11 GB2~3 台2000 点5 秒约 3456 万条约 4.4 GB约 44 GB4~6 台5000 点5 秒约 8640 万条约 11 GB约 110 GB8~10 台注意左边这张表按 5 秒周期算的如果采集频率提升到 1 秒数据量翻五倍存储和网络带宽全部要重算。这也是为什么我总是先定采集频率再定硬件顺序反了方案里的服务器配置基本靠猜。边缘网关的数量按每台覆盖 30~50 台设备且留 30% 性能余量来定不要一台网关接全车间出故障时影响面太大。3. 设备联网与数据采集方案里最容易卡住的第一公里3.1 协议选择的现实约束OPC UA、Modbus、私有 SDK 的混战现场永远协议扎堆新设备走 OPC UA老旧仪表走 Modbus RTU机器人控制器走私有 SDK。方案里最怕写“接口方式待定”的设备清册评审时看不出来问题实施时全卡在这。做设备联网规划的第一步应当是出一份《设备接入清册》逐台列明接口方式、采集频率、寄存器范围或 SDK 版本。常见选型路数大概是这样西门子 S7-1500/1200 走 OPC UA 或 S7 协议S7-300 老型号只能用 S7 协议国产 PLC 大多支持 Modbus TCP第三方仪表普遍支持 Modbus RTU。机器人发那科、ABB、库卡走官方 SDK 或 OPC UA 服务器因为寄存器地址表根本拿不全。注塑机、压铸机这类专用设备很多走厂商私有协议方案里应当直接注明“需安装厂商提供的 OPC 服务器或 SDK”提前约厂商技术支持否则工期全耗在逆向协议上。那一页设备清册表要包含五个字段设备型号、数量、控制器型号、通信协议与版本、预计采集点数。清册不对齐后面一切数据建模都是空中楼阁。3.2 Modbus 轮询周期怎么算40 台设备 5 秒一圈的调参记录Modbus RTU 是问答式协议一台串口网关在一条总线上同一时刻只能和一个 Slave 对话。设备一多轮询周期是按乘法增长的。很多项目第一次翻车就翻在这设备接上了但轮询一圈要 30 秒数据完全是滞后的看板的实时刷新根本做不到。我一般按这个公式估算轮询周期单台设备读取耗时按 200ms 预估9600 波特率下读 10 个保持寄存器连带报文头尾差不多这个量级轮询一圈耗时 设备台数 × 单台耗时 × 1.5 的余量系数。40 台设备就是 40 × 0.2 × 1.5 12 秒。如果车间要求 5 秒内刷新一次Modbus RTU 单总线就扛不住了必须拆分成多路网关或改用 Modbus TCP 并发读。下面这段是 Modbus TCP 读取循环的最小骨架用 pymodbus 写的逻辑很简单但参数都是现场调过的from pymodbus.client import ModbusTcpClient import time devices [ {ip: 192.168.10.21, uid: 1, regs: [(40101, 10)]}, {ip: 192.168.10.22, uid: 1, regs: [(40101, 10)]}, # 按设备接入清册逐台展开 ] def read_registers(dev): 读取保持寄存器40101 对应报文地址 100 client ModbusTcpClient(dev[ip], timeout2) if not client.connect(): return None data {} for addr, length in dev[regs]: resp client.read_holding_registers(addr - 40001, length, unitdev[uid]) if resp.isError(): client.close() return None data[addr] resp.registers client.close() return data if __name__ __main__: loop_interval 5 # 秒由设备台数×单台耗时×余量算出来 while True: for dev in devices: val read_registers(dev) if val is not None: # 这里把数据发到 MQTT 或写入本地时序库 print(dev[ip], val) time.sleep(0.05) # 只是避免线程空转不是轮询周期 time.sleep(loop_interval)这段代码要注意两点。一是 timeout 设 2 秒老 PLC 在程序繁忙时响应超过 2 秒很正常设太短会误报设备离线设太长又会让读取线程挂死2 秒是经验平衡点。二是读取和上报一定要拆成两个线程用队列解耦不然某台设备超时会把整条数据链卡住。3.3 断网缓存与重放边缘网关不丢数据的底线车间网络抖动是常态交换机重启、施工挖断光缆、无线 AP 漫游都会造成断连。方案里如果不做断网缓存回看数据就会发现时间轴上全是豁口。这是数据完整率 99.5% 这个指标能不能兑现的关键。常见做法是在边缘网关本地跑一个 SQLite 或轻量级时序库断网时照常写本地恢复后按序补发到 MQTT 或 Kafka。缓存设计要算好保留窗口按 500 个采集点、5 秒周期、单条 128 字节算三天原始数据约 3.3GB压缩后不到 1GB。所以边缘网关配 256GB NVMe 硬盘非常充裕保留窗口按 72 小时设计足够覆盖大多数断网场景。一个需要特别小心的点是重放时的幂等性。如果消息队列是 QoS 1重连后重放消息可能出现重复投递消费端必须按主键去重。下面这段是网关上缓存回放的最简实现import sqlite3, time import paho.mqtt.client as mqtt db_path edge_cache.db MQTT_BROKER 192.168.20.10 def cache_to_local(topic, payload): 断网期间写入本地 SQLite重连后回放 conn sqlite3.connect(db_path) conn.execute( INSERT INTO raw_cache (ts, topic, payload) VALUES (?, ?, ?), (time.time(), topic, payload), ) conn.commit() conn.close() def replay_cache(): 网络恢复后按顺序补发并清空已回放的记录 conn sqlite3.connect(db_path) rows conn.execute(SELECT id, topic, payload FROM raw_cache ORDER BY id).fetchall() client mqtt.Client() client.connect(MQTT_BROKER, 1883, 60) for row_id, topic, payload in rows: client.publish(topic, payload, qos1) time.sleep(0.05) # 限制重放速率避免打满带宽 conn.execute(DELETE FROM raw_cache WHERE id ?, (rows[-1][0],)) conn.commit() client.disconnect()重放速率限制很重要我吃过亏一次断网 10 分钟恢复瞬间网关把几百兆数据一口气往消息队列怼直接把上游打挂了。后来强制每条间隔 50ms 重放宁可恢复慢一点也要保证链路平滑。缓存表要配一个容量上限比如超过 100 万条自动丢弃最老记录防止边缘网关硬盘写满导致彻底宕机。3.4 数据字典和时间戳规范上线前一天才对齐字段的教训设备接上了、数据入库了MES 显示出来的却是乱码和错位这场景在联调阶段天天上演。根因基本是同一个数据字典没在方案阶段对齐。比如“设备状态”在 PLC 侧是枚举值 1/2/3运行/停机/故障到了 MES 数据表里被映射成 0/1运行/停止中间没有转换逻辑看板数据全错。方案阶段就应该产出《数据字典初稿》至少包含这些字段设备编码、工序编码、采集时间戳、状态枚举、计数器值、工艺参数值、单位、质量标志位。每个字段写清楚类型、取值范围、更新频率、来源系统。这份文档不要求全但框架要先立住后续实施往里面填内容比到时候推倒重来省事得多。时间戳规范特别容易被忽略。统一的规则是一律记录本地时间标识并带 UTC 偏移格式用 ISO 8601比如2026-05-20T13:45:00.50008:00。不要图省事只存裸的时间戳夜间跨天对账时时区偏移会直接把凌晨的数据归到前一天质量报表和产量报表对不上查问题要浪费大半天。4. MES 业务闭环设计从工单下发到物料追溯的关键路径4.1 工艺建模先行没有工艺路线工单就是空中楼阁很多刚接触 MES 的方案喜欢先画工单流转但落地时发现根本推不动因为产品没有工艺路线数据。工单从 ERP 下来后MES 必须知道这个产品要经过哪些工序、每道工序的标准工时、由哪些设备执行。没有工艺路线工单只能停留在“下发了”的状态后端的报工、追溯全部瘫痪。方案里至少要有两个基础主数据物料主数据和工艺路线主数据。物料主数据管产品编码、名称、单位重量、默认批次规则工艺路线管产品与工序的对应关系、每道工序的序列号、标准工时、可用设备组。这两个表在项目启动第一天就要建哪怕先只建试点产品线的也不能等到联调再补。工艺路线还有一个现实作用决定报工节点在哪道工序。压铸车间报工在“压铸完成”机加工车间报工在“CNC 完工”装配车间在“包装完成”。节点定错了采集信号对着错工序发数据全成了脏数据。这个决策要由工艺部门签字确认不能让 IT 部门想当然。4.2 工单下发与报工用扫码和完工信号替代手工录入工单下发链路没什么神秘的ERP 创建生产订单 → 中间件同步到 MES → MES 按工艺路线拆分成工序任务 → 下发到对应工序工位。真正决定 MES 能不能用起来的是报工环节。很多项目上线后员工不愿意报工因为录入界面太繁琐最后数据又回到 Excel 手工统计。方案阶段就应当把报工设计成扫码触发或信号触发而不是表单录入。员工扫一眼料箱上的条码或者 PLC 发出一个工序完成信号系统自动记录报工时间、数量、设备编号、操作员。这是 MES 能不能落地的分水岭。下面这段代码是完工事件处理的最小状态校验逻辑def handle_completion_event(work_order, operation, equipment, ts): # 状态机校验只有“生产中”的工序允许报工 if operation.status ! in_progress: raise ValueError(f工单 {work_order.order_id} 工序 {operation.code} 状态异常拒绝报工) db.execute( INSERT INTO work_report (order_id, op_id, equip_id, qty, report_time) VALUES (?, ?, ?, ?, ?), (work_order.order_id, operation.code, equipment.code, operation.planned_qty, ts), ) operation.status reported operation.report_time ts operation.reported_qty operation.planned_qty operation.save()这段逻辑的关键不是“插入一条记录”而是前面的状态校验。没有状态校验重复扫码就会重复报工错序报工会直接污染成本归集。还要注意良品数、返工数不要混在完工事件里处理分开建质量判定流程否则报工链路会被质量规则拖慢一个节拍才几十秒数据库事务等不起。4.3 配方下发与参数版本换型防错的关键动作设备联网之后的第一个高价值应用就是配方下发和参数互锁。换型时不用人工在触摸屏上一个个敲参数MES 把工艺参数推给 PLC设备自动校验后确认。这部分做得好换型时间能压掉一半。标准流程分三跳MES 发起配方下发请求带上设备编码、工序编码、配方编号和参数集采集网关把参数写到 PLC 对应的数据块地址PLC 回读确认参数版本号MES 校验一致后才允许设备启动。这里最容易被忽略的是“回读确认”很多实施只写不读参数到底生效没有全靠猜。配方参数必须做版本管理。同一款产品同一副模具工艺参数会不断优化没有版本号就无法追溯。我在方案里通常用一张简单的配方版本表字段示例说明配方编号FORMULA-A-001全局唯一版本号3每次修改递增生效起始时间2026-05-01 00:00:00该版本开始生效生效结束时间2026-05-15 12:00:00通常 9999-12-31参数内容JSON 字符串完整的参数键值对生效时间区间一定要有否则旧配方还在覆盖新配方现场设备参数一会被打回旧版本质量事故排查时完全不知道哪版参数是实际用的。参数版本号与工单关联追溯才有意义。4.4 OEE 计算需要的最小信号集与公式每个方案里都会写 OEE但一追问怎么算就含糊了。OEE 不是报表指标它是一个采集指标要求设备层给出准确的状态信号。我一般只依赖三个来自 PLC 的信号自动运行中、循环完成、报警状态。“自动运行中”必须是 PLC 程序里的一个明确状态位含义是设备处于自动模式且未急停“循环完成”是每生产一件或一模产生一个脉冲“报警状态”接设备报警灯信号。这三个信号缺一个OEE 就算不准。计算逻辑用伪代码表达def calculate_oee(signals, cycle_time_std, total_time): signals: 时间序列记录含 auto_running / cycle_done / passed cycle_time_std: 理论节拍单位秒 total_time: 班次标准时长单位秒 uptime sum(s[auto_running] for s in signals) / len(signals) * total_time generated_ideal_qty uptime / cycle_time_std product_qty sum(int(s[cycle_done]) for s in signals) good_qty sum(int(s[passed]) for s in signals if s.get(passed)) availability uptime / total_time performance product_qty / generated_ideal_qty if generated_ideal_qty else 0 quality good_qty / product_qty if product_qty else 0 return {availability: availability, performance: performance, quality: quality, oee: availability * performance * quality}一个容易踩的坑是performance 长期低于 60%第一反应是设备慢但真实原因可能是信号采集时间粒度太粗。比如设备实际节拍 30 秒一件采集程序 5 秒一个采样点正好没采到循环脉冲的高电平计数就丢了。这时候优先查采集周期和信号脉宽的匹配关系而不是怀疑设备效率真的那么差。4.5 物料追溯的最小闭环条码、批次与序列化追溯模块是最容易被写虚的。写得天花乱坠真到验收时发现只能查批号查不到序列号等于白做。设计目标先说清楚拿一盒有质量问题的产品能在 30 分钟内定位到原料批次、设备、工艺参数版本、操作员。达不到这条线追溯就算没成功。核心是有四个关联点投料时扫原料批次条码绑定到工单生产时每个循环产生一个序列号或批次号包装时把序列号关联到成品箱码检验系统把质量判定结果挂在序列号维度。方案需要明确这几张关联表的保存粒度我常用下面这个简化表结构投料记录表工单号、物料批次、投料数量、操作员工序加工表工单号、工序号、设备编码、开始/结束时间、参数版本号装箱关联表箱码、序列号或批次号、包装时间质量判定表序列号、检验项目、合格标志、检出处做追溯最头疼的是节拍太快扫不过来。应对办法无非三种条码改二维码提高扫码成功率工位前加缓存区缓冲扫码失败PLC 自动把节拍号关联序列号减少人工扫码动作。方案里写一句“扫码失败设备不放行”管理层立刻明白这是硬约束。5. 技术方案避坑指南从 PPT 到产线实测的五个高频雷区5.1 设备已接入记录数与周期理论值对不上现象MES 看板看一个班次的数据记录数明显偏少设备明明一直在跑库里数据只有理论值的六成。原因采集周期和上层聚合窗口不匹配。网关按 5 秒采集MES 看板按分钟快照去查明细表每分钟窗口内 12 条记录聚合后只留 1 条数据没了。也可能是定时归档任务在零点清数据时序顺序写反了。解决MES 展示层不直接查采集明细表单独建分钟聚合表由定时任务生成。采集链路加“心跳信号”网关每 30 秒发一条存活消息连续 3 分钟没心跳就判定断线并在大屏标红。验收时用理论计数对账期望条数 采集点数 ×统计时长/采集周期× 在线设备数。5.2 MES 显示已下发PLC 侧没有反应现象页面提示“参数已下发”但设备触摸屏上参数还是旧值。业务人员重复下发设备突然开始执行了新参数和旧参数混在一起。原因MES 数据库更新后没等网关写 PLC 的 ACK 就返回了成功。网关侧只写了数据块但没有校验 PLC 是否成功写入超时后也没重试形成了“假成功”。解决把下发拆成三步状态机下发中 → 网关 ACK → PLC 确认。MES 数据库里状态置为“下达中”后必须收到 PLC 侧的回读版本号一致才改成“已下达”。任一环节失败就回滚为“下发失败”。这条规则写死杜绝假成功。5.3 OEE 统计口径不一致生产经理说数据骗鬼现象车间 OEE 报表显示 92%生产经理直接拍桌子说设备每天停那么久怎么可能 92%。一查口径里“运行时间”用的是设备上电时间不是自动运行时间。原因数据字典里没有定义“自动运行”的准确含义实施方图省事用了最容取到的信号。上电和自动运行可能差出 20% 的时间OEE 自然虚高。解决数据字典里按设备类型明确定义“自动运行中”的状态位写清楚是“PLC 自动模式且无急停且无故障”。报表页脚显示统计口径版本号一旦口径调整所有历史报表重新计算避免新旧数据混在一起。5.4 追溯查询越来越慢数据库成了瓶颈现象上线头两周追溯很快一个月后查询要二三十秒最后直接超时。业务人员放弃使用追溯形同虚设。原因追溯要联表查投料、工序加工、装箱、质量四张表随着时间推移数据量线性增长。没有强制时间范围筛选一次查询扫全表。解决追溯查询页面强制默认筛选最近一个月时间范围必填对 order_id、material_batch、serial_no、date_tag 建复合索引追溯数据每日增量同步到 Elasticsearch查询走 ES 不直接打业务数据库。验收标准定为单次查询 ≤ 5 秒用压力测试压过才算过。5.5 边缘网关运行一周后假死现象采集程序跑了几天网关完全不响应重启后恢复。过几天又死循环往复。原因第三方 SDK 的回调线程内部抛异常没被捕获异常堆积把 CPU 占满或者某个设备持续超时采集线程阻塞后没有超时保护整个进程卡住。解决每次设备通讯强制设 timeout我习惯统一 3 秒采集任务放进独立线程池线程数按设备台数 1.2 倍配置每 30 分钟检查一次网关的 CPU 和线程数超阈值自动重启采集进程。自动重启看着不够优雅但现场维护条件有限这是最可靠的后手。6. 验证信息化方案是否落地先跑三天试运行方案评审通过不意味着可以上线。我习惯在上线前安排三天试运行不做全量业务只验证四件事。第一件事数据链路完整性。让采集程序连续跑 72 小时每天零点对账统计当天的记录数和理论期望值比较误差要求在半百分点内。对账必须按小时分段查只看日均会被平均掩盖凌晨断网的问题。第二件事工单闭环验证。拿真实工单走三遍正常流程一遍异常流程换模、返工、加单一遍设备断电恢复后再走一遍。每一次比对系统状态和实际状态差异归零才算通过。第一遍就走偏的话九成是枚举值映射没对齐回到数据字典去改而不是在代码里打补丁。第三件事权限与追溯抽查。随机抽三个序列号从成品往前倒推看能否定位到原料批次和参数版本。同时检查操作日志里能否查到账号在哪个时刻改过配方。没有审计记录的系统等于黑匣子质量事故一旦发生谁改的参数都查不出来这个题跑不掉。第四件事断网演练。把车间交换机的上行网线拔掉保持现场的“断网缓存”10 分钟后恢复。数一遍中间产生的记录数和缓存日志是否一致再看恢复瞬间网关的 CPU 有没有冲高。网络重放的瞬间是最容易出现性能尖峰的放过这一关正式运行必炸。我做过几个项目都是靠这次试运行救回来的。有一次就是因为 OEE 的“自动运行”信号借错了位看板显示设备利用率 95%实际车间停机了一上午。这些矛盾在画 PPT 时不会露头只有联调现场才现原形。所以我现在做方案的习惯是先画链路和数据流再背SLA 数字再拿设备清册逐台核对协议最后留一页“风险与未决问题”清单把对不齐的地方明明白白列出来不用“后续完善”四个字糊弄过去。刨掉含糊的表达剩下的才是真正能交付的部分。希望这篇拆解对你做同类型方案有参考价值也希望你别在同样的地方多花三个月工期。本文还有配套的精品资源点击获取
返回列表