news 2026/10/22 21:03:05

离散制造智能制造落地四锚点:PLC接口、时间同步、ID编码与闭环验证

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
离散制造智能制造落地四锚点:PLC接口、时间同步、ID编码与闭环验证

简介:本资源是一份面向离散制造业企业技术负责人、智能制造系统规划师及工业自动化工程师的36页专业PPT,系统阐述智能制造在汽车、电子、航空航天等典型离散场景下的整体落地路径。内容紧扣行业痛点,覆盖工业4.0政策背景、数据驱动/物物互通/人机互动/虚实互联四大核心愿景,并详解智能化生产控制中心、MES执行管控、AGV物流调度、数字孪生应用、预测性维护等八大模块构成的端到端解决方案,含架构图、技术栈对比与市场规模数据支撑。资源为单个2.83MB的pptx文件,结构清晰、图文并茂,适合作为内部培训材料、方案汇报底稿或项目前期技术论证参考。目前已有88人学习下载,内容涵盖从顶层规划到设备层集成的完整逻辑链,可直接用于智能工厂立项汇报、技术选型比对及跨部门协同沟通。

1. 离散制造业场景智能制造整体解决方案:不是PPT堆砌,而是可拆解、可落地的工艺-数据-控制闭环

你手头刚收到一份标着“离散制造业场景智能制造整体解决方案(36页 PPT).pptx”的文件——标题很硬,但打开后大概率是架构图套架构图、模块名叠模块名、箭头连箭头,最后一页写着“实现降本增效提质”。这不是个例。真实产线里,某汽车零部件厂曾花三个月部署一套标称“支持柔性排程+设备预测性维护”的系统,结果上线后调度仍靠Excel人工拉表,设备报警延迟27分钟,OEE统计口径和车间日报对不上。问题不在PPT画得不美,而在于离散制造的“离散”二字本身:工序非连续、BOM多变体、设备异构、订单小批量多批次、人机料法环数据割裂。这份36页PPT若不能映射到具体机床的PLC寄存器地址、MES工单的字段逻辑、质检图像的标注规范、AGV路径规划的约束条件,它就只是个沟通载体,不是解决方案。本文不讲宏观蓝图,只聚焦一线工程师能立刻动手验证的四个锚点:如何把PPT里的“智能仓储”落到WMS与PLC的Modbus TCP交互上;怎么让“数字孪生”真正驱动现场看板,而不是仅渲染一个旋转的3D模型;为什么90%的“AI质检”项目卡在缺陷样本不足而非算法不准;以及最关键的——所有模块必须共享同一套时间戳基准与设备ID编码规则,否则数据融合就是空中楼阁。适合正在推进产线数字化改造的工艺工程师、自动化集成商技术负责人、以及被PPT带跑偏后急需找回落地支点的项目经理。

2. 从PPT架构图到产线可执行动作:拆解“智能制造”四大核心模块的物理接口

PPT里常出现“工业互联网平台”“边缘计算网关”“数字孪生体”等术语,但产线工程师真正要操作的是IP地址、寄存器地址、JSON字段名、数据库表结构。我们以某电机壳体加工车间为蓝本,将PPT中高频出现的四大模块逐层剥开,给出每个模块在物理层必须定义的3个关键接口参数。这些参数不是选填项,而是后续所有数据贯通的前提。

2.1 设备联网与数据采集:PLC到边缘网关的“心跳协议”必须明确定义

离散制造设备品牌杂(发那科、西门子、三菱、国产信捷)、协议多(Modbus TCP/RTU、Profinet、EtherNet/IP),但PPT从不提“心跳包间隔设多少”。实际调试中,某车间用默认5秒心跳导致网关误判12台CNC离线,而将心跳设为1.2秒又引发交换机ARP表溢出。正确做法是分层定义:

# 边缘网关配置文件片段(以开源EdgeX Foundry为例) # /etc/edgexfoundry/res/device-profiles/PLC_FANUC_01.yaml deviceResources: - name: "machine_status" description: "主轴运行状态:0=停机,1=运行,2=报警" attributes: primaryTable: "HoldingRegister" # 必须明确寄存器类型 startingAddress: "40001" # 必须写十进制地址,非0x9C41 wordCount: 1 # 单字节读取,避免跨字节错位 - name: "heartbeat_timestamp" description: "PLC本地毫秒级时间戳,用于校准网关时钟" attributes: primaryTable: "InputRegister" startingAddress: "30001" wordCount: 2 # 32位整数需占2个寄存器

提示:startingAddress必须按PLC手册的十进制地址填写。西门子S7-1200的DB块地址在TIA Portal里显示为DB1.DBW10,对应Modbus TCP地址是40011(DB1起始地址40001 + 偏移10),而非直接写DBW10。这是90%初学者首次调试失败的根源。

2.2 MES与APS系统对接:工单字段必须与车间作业指导书强绑定

PPT里“高级计划排程APS”常配一张甘特图,但没说清楚“计划开始时间”字段到底指什么。某电子厂曾因MES传给APS的planned_start_time是工单创建时间而非首道工序设备就绪时间,导致排程结果与实际产能偏差达38%。必须在接口文档中明确定义:

字段名数据类型物理含义车间验证方式典型值示例
work_order_idStringERP下发的唯一工单号,不可修改对照纸质工单右上角条形码"WO-2024-08765"
first_operation_deviceString首道工序指定设备ID,必须存在于设备台账查看设备铭牌或PLC标签"CNC-LINE2-03"
material_ready_timeDateTime物料送达工位的精确时间(含毫秒)扫描物料箱RFID标签触发"2024-06-15T08:22:15.342Z"

注意:material_ready_time必须由现场扫码枪或AGV载具传感器触发写入,禁止APS系统自行计算。离散制造中物料齐套率波动大,预估时间毫无意义。

2.3 视觉质检系统集成:缺陷标注规范直接决定模型泛化能力

PPT中“AI视觉质检”常展示99.9%准确率,但未说明标注规则。某五金件厂训练的划痕检测模型,在产线实测漏检率达23%,复盘发现标注人员将长度<0.5mm的划痕全标为“正常”,而客户验收标准是0.3mm。必须制定《缺陷标注白皮书》并嵌入PPT方案:

# 标注工具配置文件(label-studio config.xml) <View> <Image name="img" value="$image" zoom="true"/> <!-- 关键:强制标注最小像素尺寸 --> <RectangleLabels name="labels" toName="img"> <Label value="Scratch" background="#FF0000" min_width_px="6" # 0.3mm在600万像素相机下约6像素 min_height_px="3"/> <Label value="Dent" background="#00FF00" min_width_px="8" min_height_px="8"/> </RectangleLabels> </View>

血泪经验:min_width_px参数必须根据产线相机分辨率、镜头焦距、工件距离反向推算。某项目用2000万像素相机拍0.5m×0.5m工件,标注人员凭感觉设为10像素,结果模型在新批次工件上完全失效——因为新工件摆放位置偏移3cm,成像比例变化导致10像素实际对应0.35mm而非原定0.28mm。

2.4 数字孪生体构建:3D模型必须携带可编程的设备属性节点

PPT中的“数字孪生”常是静态3D模型,但真实需求是点击模型上的CNC机床,弹出实时主轴温度、当前加工程序号、最近一次换刀时间。这要求3D模型文件(glTF格式)内嵌设备属性节点:

// model.gltf 片段 { "nodes": [ { "name": "CNC-MACHINE-01", "extensions": { "KHR_materials_unlit": {}, "custom_device_attrs": { // 自定义扩展,非标准字段但必须存在 "device_id": "CNC-LINE1-01", "data_source": "modbus://192.168.10.101:502/holding/40001", "refresh_interval_ms": 500, "status_mapping": { "0": "IDLE", "1": "RUNNING", "2": "ALARM" } } } } ] }

玄学提醒:refresh_interval_ms设为500ms是经过产线实测的平衡点——设为100ms导致WebGL渲染卡顿,设为2000ms则无法满足“实时监控”需求。这个值必须写进PPT方案的技术规格页,而非藏在实施文档里。

3. 数据贯通的生死线:时间戳同步、设备ID编码、BOM版本管理三大避坑指南

PPT方案里“数据中台”“统一数据湖”等词高频出现,但90%的数据融合失败源于三个看似基础却极易被忽略的细节:时间不同步、ID不唯一、BOM版本混乱。这些坑不解决,所有上层应用都是沙上筑塔。

3.1 时间戳不同步:产线数据对齐的“隐形杀手”

现象:MES记录某工单完工时间为2024-06-15 14:22:15,而同一时刻PLC日志显示主轴停机时间为2024-06-15 14:22:18,质检系统图像时间戳却是2024-06-15 14:22:16。三套系统时间差最大3秒,导致“设备停机-工单报工-缺陷图像”无法关联分析。

原因:

  • PLC使用内部晶振计时,年漂移±2分钟;
  • MES服务器依赖NTP,但车间防火墙屏蔽了UDP 123端口;
  • 工业相机固件未启用PTP(精确时间协议)。

解决:

  1. 强制所有设备接入PTP主时钟:在车间机柜部署一台支持IEEE 1588v2的工业交换机作为Grandmaster Clock,所有PLC、IPC、相机通过PTP协议同步,精度≤100ns;
  2. 在数据采集层注入统一时间戳:边缘网关读取PLC数据时,不采用PLC自带时间,而是用自身PTP同步后的时间打标;
  3. 数据库字段强制约束:在时序数据库(如InfluxDB)中,time字段必须为纳秒级Unix时间戳,且写入前校验与PTP主时钟偏差>1ms则丢弃该条数据。

3.2 设备ID编码混乱:数据血缘追踪的“断点”

现象:同一台发那科ROBOT M-10iA在PPT架构图中标为“ROBOT-ASM-01”,在MES设备台账中叫“ASM-ROBOT-001”,PLC程序里变量名是“Rbt_Assembly_01”,而设备铭牌编号是“FANUC-2023-88765”。当需要追溯某次焊接缺陷的机器人轨迹时,工程师要手动比对四套编码体系。

原因:

  • 设备采购时未统一分配ID;
  • 不同系统管理员按各自习惯命名;
  • 缺乏ID注册中心(ID Registry)。

解决:

  1. 采用ISO/IEC 11179标准定义ID结构:{域}-{产线}-{设备类型}-{序列号},例如ASM-LINE3-ROBOT-007;
  2. 在设备交付时即刻注册:由自动化集成商将ID刻印在设备铭牌,并同步录入中央ID Registry(可用轻量级PostgreSQL表实现);
  3. 所有系统对接时强制校验:MES调用设备API时,必须传入标准ID,若返回404则立即告警,而非用别名兜底。

3.3 BOM版本管理失控:生产执行与设计变更的“时间差陷阱”

现象:设计部门在PLM系统中已发布BOM V2.3(新增一颗M3×8螺丝),但车间MES仍在执行V2.1版本,导致装配线上缺少该螺丝,返工率上升15%。

原因:

  • PLM与MES之间无BOM版本自动同步机制;
  • MES未校验工单对应的BOM版本有效性;
  • 操作工在终端看到的BOM清单未标注版本号。

解决:

  1. BOM发布即触发Webhook:PLM发布新BOM时,自动调用MES API/bom/version/update,传入bom_id、version、effective_date;
  2. MES工单生成时强制绑定BOM版本:创建工单接口增加bom_version字段,若为空则拒绝创建;
  3. 车间终端显示双版本对比:在工位平板上,当前执行BOM与最新BOM的差异项高亮显示(如“V2.1无M3×8螺丝,V2.3新增”)。

4. “智能仓储”不是堆AGV:WMS与PLC协同的最小可行闭环验证

PPT中“智能仓储”章节常配AGV车队穿梭动画,但真实价值在于WMS指令与PLC执行的毫秒级闭环。我们跳过所有3D渲染,直接用最简方式验证这个闭环是否成立——只需一台AGV、一台货架升降机、一个WMS测试接口。

4.1 构建最小闭环:WMS指令→PLC解析→AGV执行→状态回传

目标:WMS下发“将货架A-03移至工位L2-05”,PLC控制升降机升起货架,AGV驶入定位,升降机下降,AGV驶离,WMS收到完成确认。整个过程从指令发出到状态回传≤8秒。

步骤:

  1. WMS侧构造JSON指令(调用WMS测试API):
{ "task_id": "WMS-TASK-20240615-001", "action": "move_shelf", "source_location": "A-03", "target_location": "L2-05", "priority": 1, "timestamp": "2024-06-15T14:22:15.123Z" // 必须带毫秒 }
  1. PLC程序解析逻辑(以西门子S7-1200为例,TIA Portal代码片段):
// 在OB1中循环执行 IF WMS_Instruction_Received THEN // 通过TCP接收WMS JSON // 解析JSON,提取source_location = "A-03" Shelf_ID := GET_STRING_FROM_JSON(WMS_Buffer, 'source_location'); // 查找货架A-03在升降机上的物理位置(预存于DB100) DB100.Position_Index := FIND_SHELF_POSITION(Shelf_ID); // 返回1~8 // 启动升降机电机 Lift_Motor_Start := TRUE; Lift_Target_Position := DB100.Position_Index * 1200; // 每层1200mm END_IF; // 升降机到位后触发AGV任务 IF Lift_At_Target_Position AND NOT AGV_Task_Sent THEN // 通过Modbus TCP向AGV控制器写入任务 AGV_Controller_IP := '192.168.10.200'; MODBUS_WRITE(AGV_Controller_IP, 502, 40001, 1); // 写入任务ID 1 AGV_Task_Sent := TRUE; END_IF;
  1. AGV控制器响应(伪代码):
// AGV固件中监听Modbus地址40001 if (modbus_register[40001] == 1) { navigate_to("L2-05"); // 调用内置路径规划 while (!at_target()) { delay(100); } // 每100ms检查一次 send_modbus_response(40002, 1); // 地址40002写入1表示完成 }
  1. WMS状态轮询(Python脚本验证):
import requests, time start_time = time.time() while time.time() - start_time < 10: # 最长等待10秒 resp = requests.get("http://wms-api/task/status?task_id=WMS-TASK-20240615-001") if resp.json()["status"] == "completed": print(f"闭环成功!耗时{time.time()-start_time:.3f}秒") break time.sleep(0.5) else: print("闭环超时,检查PLC与AGV网络连通性")

关键参数说明:Lift_Target_Position计算中1200是升降机每层高度(mm),必须与机械设计图纸一致;delay(100)是AGV定位检查间隔,设为100ms是为平衡响应速度与CPU负载,低于50ms会导致AGV主控过热。

4.2 闭环失败的三类高频原因及快速定位法

现象定位命令原因解决
WMS指令发出后PLC无响应tcpdump -i eth0 port 502WMS与PLC间防火墙拦截Modbus TCP(502端口)在PLC所在网段交换机上开放TCP 502入站规则
PLC启动升降机但AGV不移动modbus_poll -m tcp -p 502 -a 1 -r 40001 -c 1 192.168.10.200AGV控制器Modbus地址40001未配置为“任务触发寄存器”修改AGV固件配置,将40001映射为任务ID输入区
AGV到达L2-05但WMS状态不更新curl "http://wms-api/task/log?task_id=WMS-TASK-20240615-001"PLC未按约定向WMS回调URL发送POST请求检查PLC中HTTP客户端块的URL拼写,确认末尾有/callback

5. “数字孪生看板”不是炫技:用Three.js实现产线状态实时驱动的实战技巧

PPT里“数字孪生看板”常是精美3D渲染,但产线工人真正需要的是:一眼看出哪台设备报警、哪个工位缺料、当前订单还剩多少件。我们放弃Unity等重型引擎,用Three.js+WebSocket实现轻量级看板,重点在于状态驱动而非模型美观。

5.1 看板核心逻辑:设备状态→材质颜色→文字标签的三级映射

不渲染复杂模型,只用基础几何体(BoxGeometry)代表设备,状态变化通过材质(Material)和文字(TextGeometry)实时更新:

// 初始化设备立方体 const machineMesh = new THREE.Mesh( new THREE.BoxGeometry(2, 1.5, 1), new THREE.MeshStandardMaterial({ color: 0x4CAF50, // 默认绿色:运行中 roughness: 0.7, metalness: 0.2 }) ); scene.add(machineMesh); // WebSocket接收设备状态 const socket = new WebSocket('ws://edge-gateway:8080/status'); socket.onmessage = (event) => { const data = JSON.parse(event.data); if (data.device_id === 'CNC-LINE1-01') { // 一级映射:状态码→颜色 const statusColor = { 'RUNNING': 0x4CAF50, // 绿 'IDLE': 0xFFC107, // 黄 'ALARM': 0xF44336, // 红 'MAINTENANCE': 0x2196F3 // 蓝 }[data.status] || 0x9E9E9E; // 灰色:未知 // 二级映射:状态码→文字内容 const statusText = { 'RUNNING': '加工中', 'IDLE': '待机', 'ALARM': `报警:${data.alarm_code}`, 'MAINTENANCE': `保养:${data.maint_hours}h` }[data.status] || '未知'; // 应用映射 machineMesh.material.color.setHex(statusColor); updateLabelText(statusText); // 更新悬浮文字 } };

后悔药技巧:updateLabelText()函数中,文字使用TextGeometry而非HTML Overlay,因为后者在3D旋转时会失真。但TextGeometry生成慢,所以预先缓存4种状态的文字几何体:

const textCache = {}; ['RUNNING','IDLE','ALARM','MAINTENANCE'].forEach(s => { textCache[s] = new THREE.TextGeometry(statusTextMap[s], { font, size: 0.2 }); });

5.2 性能优化:千台设备看板不卡顿的关键参数

当产线设备超500台时,Three.js默认设置会严重掉帧。必须调整以下三个参数:

参数默认值推荐值作用验证方法
renderer.setPixelRatio(window.devicePixelRatio)1Math.min(2, window.devicePixelRatio)防止高分屏过度渲染浏览器开发者工具Performance面板查看FPS
renderer.shadowMap.enabledtruefalse离散制造看板无需阴影,关闭提升50%帧率检查场景中light.castShadow = false
mesh.frustumCulledtruefalse设备模型小,裁剪收益低,关闭避免频繁计算监控GPU内存占用,降低30%

翻车现场:某项目将pixelRatio设为window.devicePixelRatio(MacBook Pro为2),导致渲染分辨率高达3840×2160,GPU内存爆满。改为Math.min(2, ...)后,同等设备数下帧率从12fps升至48fps。

5.3 看板与真实产线的“最后一米”:扫码枪直连看板的零配置方案

工人不记得设备ID,但能扫铭牌二维码。我们让扫码枪成为看板的输入设备:

// 看板页面监听扫码事件(扫码枪输出为键盘输入) document.addEventListener('keypress', (e) => { if (e.key === '\r' && currentScanBuffer.length > 5) { // 扫码结束,currentScanBuffer如"CNC-LINE1-01" highlightDeviceOn3D(currentScanBuffer); playSound('beep'); // 播放提示音 currentScanBuffer = ''; } else if (e.key.length === 1) { currentScanBuffer += e.key; } }); function highlightDeviceOn3D(deviceId) { // 在场景中找到对应设备mesh const targetMesh = scene.children.find(m => m.userData.id === deviceId); if (targetMesh) { // 临时放大并闪烁 targetMesh.scale.set(1.2, 1.2, 1.2); setTimeout(() => { targetMesh.scale.set(1, 1, 1); // 同时在右侧信息面板显示该设备详情 showDeviceDetailPanel(deviceId); }, 1000); } }

玄学参数:setTimeout设为1000ms而非500ms,是因为工人扫码后需要0.8秒左右反应时间看清高亮效果。这个数值来自某实验室对23名产线工人的眼动实验平均值。

6. 验证方案有效性的“三把尺子”:不靠PPT,而靠产线真实指标

再完美的PPT方案,最终必须回答三个问题:有没有减少人工干预?有没有缩短异常响应时间?有没有提升一次合格率?我坚持用这三把尺子丈量所有智能制造项目,它们比任何KPI仪表盘都真实。

6.1 尺子一:人工干预次数统计(替代“自动化率”虚指标)

PPT常写“自动化率提升至95%”,但“自动化率”无法量化。真实指标是每班次人工介入次数,必须定义清晰:

  • 人工介入:操作工主动点击HMI按钮、手动修改MES工单、用万用表测量PLC输出电压、重启边缘网关;
  • 统计方式:在HMI系统日志中过滤关键词"manual_override"、"force_start"、"reboot_edge",每日导出CSV;
  • 基线值:某齿轮厂改造前,白班平均人工介入27次(含12次设备重启、8次工单修正、7次参数重设);
  • 目标值:方案上线后第30天,白班人工介入≤5次,且其中≥3次为计划内维护操作。

我的习惯:每周五下午,我会带着打印好的人工介入日志去车间,和班组长一起圈出每一条记录的原因。不是问责,而是找出哪些是系统缺陷(如PLC通信超时未自动重连),哪些是流程缺陷(如物料齐套检查未嵌入MES开工校验)。这个动作比看100页PPT都有用。

6.2 尺子二:异常响应时间(替代“实时监控”空概念)

PPT说“实现设备异常实时监控”,但“实时”是毫秒级还是分钟级?真实指标是从异常发生到首个人员收到通知的时间:

异常类型发生时刻通知时刻响应时间通知方式是否达标
CNC主轴温度超限14:22:15.32114:22:15.892571ms企业微信+声光报警是(<1s)
AGV电量低于15%14:22:16.00114:22:17.2031.2s企业微信是(<2s)
质检图像模糊14:22:18.44414:22:22.1053.66sMES弹窗否(>3s)

血泪教训:质检图像模糊通知超时,查出是图像上传服务用了HTTP而非WebSocket,每次通知需建立新连接。改成WebSocket后,通知时间压至210ms。这说明“实时性”必须分解到每个技术组件,不能笼统归因于“网络延迟”。

6.3 尺子三:一次合格率(OQC)提升幅度(替代“质量提升”模糊表述)

PPT写“AI质检提升质量”,但质量提升必须体现在客户拒收率上。真实指标是OQC一次合格率(First Pass Yield),且必须排除人为干预:

  • 计算公式:FPY = (检验合格数 - 人工复检后合格数) / 投入检验数
    (减去人工复检合格数,是因为这部分是传统质检能力,非新方案贡献);
  • 数据源:必须来自OQC检验系统原始数据库,禁止MES或Excel二次加工;
  • 案例:某电机厂轴承压装工序,FPY从82.3%提升至89.7%,提升7.4个百分点。其中5.2个百分点来自视觉系统拦截早期压装偏移,2.2个百分点来自设备振动监测提前更换磨损轴承。

我的原则:如果方案上线3个月后,FPY没有提升≥3个百分点,或者提升部分无法归因到新系统(如同期换了新供应商),我就认为方案未达预期。宁可承认方案失败,也不把偶然波动包装成成果。希望帮到你。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/22 21:03:04

风电并网频率动态特性分析:惯量、一次调频与机电暂态仿真

简介&#xff1a;一份PDF格式的电力系统专业资料&#xff0c;聚焦风电接入后电网频率动态响应问题&#xff0c;面向电力系统研究人员、电气工程专业学生及规划运行工程师。资料基于PSAT电力系统分析工具&#xff0c;建立恒速异步风电机组与双馈变速风电机组数学模型&#xff0c…

作者头像 李华
网站建设 2026/10/22 21:00:04

ThreeJS-3D可视化y轴和z轴

ThreeJS-3D可视化y轴和z轴 本博客地址&#xff1a;https://gitee.com/enzoism/html_threejs_demo1 1-3D坐标绘制 参考博客地址&#xff1a;https://blog.csdn.net/2301_77717148/article/details/168559364 ) 2-为什么代码中要把y和z轴进行调换 1-先回答下面的问题 肯定不是上坡…

作者头像 李华
网站建设 2026/10/22 21:00:02

C++补充(二)--包装器:std::function 与 std::bind

前言前面我们学习了 lambda 表达式&#xff0c;lambda 本质是编译器自动生成的仿函数&#xff0c;属于可调用对象。C 里面可调用对象种类很多&#xff1a;普通函数、函数指针、仿函数、lambda、类成员函数。它们类型各不相同&#xff0c;直接统一管理很麻烦。C11 在 <functi…

作者头像 李华
网站建设 2026/10/22 20:57:11

实拍+AIGC双轨的虚实融合:一条跨国宣传片的工程化交付

2026 年&#xff0c;AI 视频的一个清晰趋势是虚实融合——不再纠结"AI 能不能全部替代实拍"&#xff0c;而是判断"什么必须真实拍、什么用 AI 更快更好"。 这个趋势已经被数据验证&#xff1a;据行业观察&#xff0c;2026 年上半年已有多条"真人实拍为…

作者头像 李华
网站建设 2026/10/22 20:32:06

Bible Strong Avatar Lab 用户指南:用 3D 风格几何原语搭建你的角色身体

【免费下载链接】bible-strong-avatar-lab 项目地址&#xff1a; https://gitcode.com/gh_mirrors/bib/bible-strong-avatar-lab 点击查看 免费下载 Bible Strong Avatar Lab 是一款基于浏览器的程序化头像创作工作室。本指南面向新手&#xff0c;教你用 3D 风格几何原语快速搭…

作者头像 李华
网站建设 2026/10/22 20:29:33

PJ85718DM与PIC18LF47K40双通道温度采集方案实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华