首页/新闻资讯/正文详情

轻量级MRP系统设计:从BOM解析到采购生产指令的完整推演

发布时间:2026/11/3 20:24:52 来源:云帆数科 栏目:资讯中心
轻量级MRP系统设计:从BOM解析到采购生产指令的完整推演
简介本资源是一份系统讲解物料需求计划MRP核心原理与实务应用的精品教学课件面向制造业生产计划员、供应链管理初学者及高校工业工程/物流管理专业学生旨在帮助读者突破传统库存管理的盲目性困境掌握基于主生产计划MPS、物料清单BOM和库存记录三大输入驱动的精准物料计算逻辑。资源为单个458KB的PPT文件内容结构完整涵盖MRP定义与价值定位、传统库存局限性对比分析、MRP四大核心问题解答生产什么、用到什么、已有什么、还缺什么、BOM分层编码与用量推算实例含多级结构图与100件A产品展开计算、净需求量Nj(t)与计划投入量Rj(t′)的公式推导及逻辑流程图以及MRP在解决生产厂长计划、采购、库存协同难题中的落地价值。目前已有677人学习下载内容兼具理论严谨性与教学实用性是理解MRP底层机制与开展企业实践的重要入门材料。1. 物料需求计划MRP不是“多备点货”就能解决的库存困局而是制造业必须掌握的精准推演能力你有没有遇到过这种场景销售刚签下一个紧急订单生产部说“缺B部件”采购部查系统发现“B还有200件库存”结果一翻单据才发现——这200件里150件已分配给上周的三个在制工单30件下周二才从供应商入库真正能调用的只剩20件。临时加急采购供应商排期要7天。停产待料客户违约金比物料成本还高。这不是个例而是传统库存管理下最典型的“账面有、手上无”黑匣子。这恰恰暴露了MRP存在的根本价值它不解决“要不要买”的问题而是回答“什么时候、买多少、给哪张工单用”这三个带时间戳和指向性的硬约束问题。本方案面向高校工业工程/信息管理专业学生完成课程设计或毕业设计也适用于中小制造企业技术骨干快速搭建轻量级MRP逻辑原型。它不依赖SAP或用友U9等商业系统而是用可验证的计算逻辑结构化数据表分层推演步骤把MRP从教科书公式还原成一张能打印出来贴在车间看板上的执行清单。全文覆盖从主生产计划MPS输入、BOM结构解析、四层库存状态识别到净需求滚动计算、批量规则适配、计划投入反推的完整闭环——所有计算过程均可手工验算所有表格均可直接导入Excel或SQLite运行所有逻辑都经得起答辩老师一句“你这个Nj(t)为什么不是负数”的追问。2. 总体架构设计三层输入驱动、四阶计算引擎与双轨输出的MRP最小可行系统MRP不是万能的计划神器而是一套严格受控的“需求翻译器”。它的核心任务是把市场端模糊的“要什么、什么时候要”MPS通过产品结构BOM这本“制造字典”翻译成供应链端精确的“买什么、做多少、哪天投料”采购/生产指令。本方案采用轻量但完整的三层输入-四阶计算-双轨输出架构确保逻辑可追溯、数据可审计、结果可复现。2.1 输入层主生产计划MPS、物料清单BOM、库存记录三者缺一不可MRP的输入不是“一堆数据”而是三个具有强语义约束的结构化数据集。任何一项缺失或格式错位都会导致后续计算全面失真。主生产计划MPS必须是按时间周期周/日 物料编码 计划数量三元组构成的二维表。例如周次A001智能电表B002PCB主板C003外壳第1周1200150第2周1800200第3周02000提示MPS中“0”不表示“不需要”而是明确声明该周期无计划产出。若某物料在MPS中完全未出现则MRP默认其无独立需求仅响应BOM展开的非独立需求。物料清单BOM必须是父子关系用量层级提前期五维结构。本方案采用扁平化BOM表非嵌套JSON每行定义一个子件对父件的依存关系父件编码子件编码单台用量层级提前期天是否采购件A001B0021.015否A001C0031.013是B002D0042.022是B002E0051.027否注意“层级”字段用于控制MRP展开顺序自顶向下逐层计算而非视觉树形“是否采购件”决定该子件生成采购单还是生产单。库存记录必须包含当前可用库存、已分配量、预计入库量、安全库存四个关键状态量。注意“当前可用库存”≠“账面总库存”而是经过扣减后的净可用量物料编码当前可用库存已分配量预计入库量第1周预计入库量第2周安全库存A0018000020B0025030100010C0031200020030提示“已分配量”指已被其他工单锁定但尚未领用的数量是MRP计算中极易被忽略的致命变量。漏填此项将导致严重超发风险。2.2 计算层从粗需求到计划投入的四阶递推引擎MRP计算不是单次快照而是以时间为轴、以BOM为路、以库存为界的一次深度遍历。本方案将计算过程拆解为四个不可跳过的逻辑阶次每阶输出均为下一阶的输入形成强依赖链。2.2.1 粗需求量Gj(t)独立需求与非独立需求的叠加计算粗需求是MRP的起点它由两部分构成①独立需求直接来自MPS的计划产出量②非独立需求由上层物料的计划投入量 × BOM中本物料的单台用量推导而来。计算公式Gj(t) Σ[父件i在t周期的计划投入量Ri(t) × BOM中j对i的单台用量] MPS中j在t周期的计划数量以A001电表为根节点计算其子件B002主板在第1周的粗需求A001在第1周MPS为120台 → 产生非独立需求120 × 1.0 120B002自身在MPS中第1周为0 → 独立需求为0→G_B002(第1周) 120 0 120设计说明此步必须严格按BOM层级顺序执行。若先算B002再算D004则D004的粗需求将因B002的计划投入量未确定而无法计算。本方案强制要求“从0层最终产品开始逐层向下同层按物料编码升序”。2.2.2 净需求量Nj(t)库存可用性校验的核心判据净需求是MRP决策的临界点它回答“到底还差多少”。其计算直接受三大库存状态影响Nj(t) Gj(t) - Hj(t-1) - Sj(t)其中Hj(t-1)t周期开始前的当前可用库存即上周期末的净可用量Sj(t)t周期内预计入库量注意仅取t周期对应列非累计值继续B002案例G_B002(第1周) 120H_B002(第0周) 50初始可用库存S_B002(第1周) 100表中第1周预计入库100→N_B002(第1周) 120 - 50 - 100 -30按MRP规则负值取0 →N_B002(第1周) 0这意味着现有库存当周到货已满足需求无需额外订货。关键参数说明Hj(t-1)必须是动态更新值。若第1周实际消耗了40件B002则第2周计算时H_B002(第1周)应为50 - 40 100 110而非静态初始值。本方案在Excel实现中通过“库存结余行”自动滚动更新避免人工维护错误。2.2.3 计划订货量Pj(t)批量规则的工程化落地净需求为正仅表示“需要补货”但补多少、何时补取决于批量策略。本方案内置三种常用规则全部可配置批量规则计算逻辑适用场景示例Nj65逐批订货Lot-for-LotPj(t) Nj(t)高价值、易变质、定制化物料65固定批量Fixed Order QuantityPj(t) ceil(Nj(t)/Q) × QQ为设定批量标准件、运输/包装有固定规格Q100 → 100经济批量EOQPj(t) EOQ需预设EOQ值需平衡订货成本与持有成本的通用物料EOQ80 → 80# Python伪代码批量规则引擎可直接嵌入Excel VBA或Python脚本 def calculate_order_quantity(net_demand, rule_type, fixed_qty0, eoq_qty0): if rule_type lot_for_lot: return net_demand elif rule_type fixed: return math.ceil(net_demand / fixed_qty) * fixed_qty elif rule_type eoq: return eoq_qty else: raise ValueError(Unsupported rule type)设计说明批量规则不是技术炫技而是成本控制杠杆。比如某螺丝EOQ为2000件若按逐批订货每月下5次单每次400件年订货成本可能超万元改用固定批量后每月1次单成本直降80%。方案中所有批量规则均支持按物料编码单独设置体现精细化管理思想。2.2.4 计划投入量Rj(t)时间维度的逆向映射这是MRP区别于普通库存管理的标志性操作——将“何时要货”反推为“何时下单”。其本质是时间坐标的平移Rj(t) Pj(t)其中t t - LTjLTj为物料j的生产提前期或采购提前期单位天/周仍以B002为例若N_B002(第1周)0则P_B002(第1周)0无需投入若第2周N_B00290且B002为自制件、LT5天约1周则R_B002(第1周) P_B002(第2周) 90即为保障第2周有货可用必须在第1周就启动生产。关键提醒提前期LT必须是工作日历下的有效天数而非自然日。若B002生产需5个工作日而第2周只有3个工作日含周末则实际需提前至第1周的周五前下达指令。本方案在Excel中通过“工作日历表”自动排除周末避免交付延误。2.3 输出层采购指令单与生产指令单的双轨生成MRP的终极价值体现在可执行指令上。本方案输出两类结构化单据每张单据均含唯一编号、物料、数量、需求日期、下达日期、来源工单号用于追溯采购指令单PR面向“是否采购件是”的物料字段包括PR编号 | 物料编码 | 物料名称 | 采购数量 | 要求到货日 | 建议下单日 | 采购员 | 备注生产指令单WO面向“是否采购件否”的自制件字段包括WO编号 | 物料编码 | 物料名称 | 生产数量 | 计划完工日 | 计划开工日 | 责任车间 | BOM版本实现要点所有指令单均从“计划投入量Rj(t)”表自动生成。例如当R_D004(第1周)200且D004为采购件则立即生成一张PR单要求“第1周下单第3周到货LT2周”。单据编号采用PR-2024-001格式确保可审计。3. 模块实现详解BOM解析器、滚动时栅计算器与指令单生成器的代码级落地理论框架搭好后真正的挑战在于如何让每个模块稳定、可调试、可验证。本方案不提供黑盒exe而是给出三个核心模块的可运行实现全部基于Python兼容3.8和标准库零第三方依赖学生可直接复制到本地运行从业者可无缝嵌入现有系统。3.1 BOM解析器从扁平表构建多层依赖图并验证完整性BOM是MRP的“语法树”解析错误将导致全盘计算崩溃。本模块核心任务① 识别所有物料的父子关系② 检测循环引用如A→B→C→A③ 生成按层级排序的处理序列。import csv from collections import defaultdict, deque class BOMParser: def __init__(self, bom_file_path): self.bom_data [] self.parent_to_children defaultdict(list) self.child_to_parents defaultdict(set) self.all_items set() self._load_bom(bom_file_path) def _load_bom(self, path): 加载CSV格式BOM要求列名父件编码,子件编码,单台用量,层级,提前期,是否采购件 with open(path, r, encodingutf-8) as f: reader csv.DictReader(f) for row in reader: self.bom_data.append(row) parent row[父件编码].strip() child row[子件编码].strip() self.parent_to_children[parent].append(child) self.child_to_parents[child].add(parent) self.all_items.update([parent, child]) def detect_cycle(self): 使用DFS检测BOM中是否存在循环引用A→B→C→A visited {item: 0 for item in self.all_items} # 0unvisited, 1visiting, 2visited cycle_paths [] def dfs(node, path): visited[node] 1 path.append(node) for child in self.parent_to_children.get(node, []): if visited[child] 0: dfs(child, path) elif visited[child] 1: # 发现回边 idx path.index(child) cycle_paths.append(path[idx:] [child]) visited[node] 2 path.pop() for item in self.all_items: if visited[item] 0: dfs(item, []) return cycle_paths def get_processing_order(self): 返回按层级升序、同层按编码字典序排列的物料处理序列 # 构建层级映射取BOM中该物料作为子件时的最高层级 item_level {} for row in self.bom_data: child row[子件编码].strip() level int(row[层级]) item_level[child] max(item_level.get(child, 0), level) # 0层物料最终产品必须存在且无父件 root_items self.all_items - set(self.child_to_parents.keys()) for root in root_items: item_level[root] 0 # 排序先按层级再按编码 sorted_items sorted(item_level.keys(), keylambda x: (item_level[x], x)) return sorted_items # 使用示例 parser BOMParser(bom.csv) cycles parser.detect_cycle() if cycles: print(BOM存在循环引用无法计算, cycles) exit(1) processing_order parser.get_processing_order() print(BOM处理顺序自顶向下, processing_order)设计说明此解析器强制要求BOM数据必须满足“有向无环图DAG”约束。一旦检测到循环如A需要BB需要CC又需要A立即终止并报错——这是MRP计算的绝对红线。学生在答辩时若被问“BOM错了会怎样”可直接展示这段代码的cycle检测逻辑体现工程严谨性。3.2 滚动时栅计算器基于时间窗口的净需求滚动计算引擎MRP计算本质是时间序列运算。本模块以“时栅Time Fence”为核心将MPS、库存、BOM在统一时间轴上对齐实现跨周期净需求推演。import pandas as pd from datetime import timedelta class MRPCalculator: def __init__(self, mps_df, bom_parser, inventory_df, periods12): :param mps_df: MPS DataFrame索引为周期如第1周列名为物料编码 :param bom_parser: BOMParser实例 :param inventory_df: 库存DataFrame索引为物料编码列含当前可用库存,预计入库量_第1周... :param periods: 计算周期数默认12周 self.mps_df mps_df self.bom_parser bom_parser self.inventory_df inventory_df self.periods periods self.result_df None def _get_inventory_at_period(self, item, period_idx): 获取物料item在period_idx周期开始前的可用库存Hj(t-1) if period_idx 0: return self.inventory_df.loc[item, 当前可用库存] else: # 上周期末库存 本周期初库存 上周期初库存 - 上周期净消耗 上周期预计入库 # 本方案简化假设上周期净消耗 上周期粗需求因无更细粒度数据 prev_period_col f预计入库量_第{period_idx}周 prev_gross self._get_gross_requirement(item, period_idx) prev_h self._get_inventory_at_period(item, period_idx-1) prev_s self.inventory_df.loc[item, prev_period_col] if prev_period_col in self.inventory_df.columns else 0 # 简化模型上周期实际消耗 min(上周期粗需求, 上周期初库存上周期预计入库) consumption min(prev_gross, prev_h prev_s) return prev_h prev_s - consumption def _get_gross_requirement(self, item, period_idx): 计算物料item在period_idx周期的粗需求Gj(t) # 1. 独立需求来自MPS mps_col item if mps_col in self.mps_df.columns and period_idx len(self.mps_df): independent self.mps_df.iloc[period_idx][mps_col] else: independent 0 # 2. 非独立需求来自所有父件的计划投入量 × BOM用量 dependent 0 for parent in self.bom_parser.child_to_parents[item]: # 获取parent在该周期的计划投入量需先计算parent的Rj(t) # 此处为简化假设已知parent的Rj(t)存于self.parent_plan_df pass # 实际实现中需递归或迭代计算 return independent dependent def run_calculation(self): 执行完整MRP计算返回包含各阶段结果的DataFrame # 初始化结果表列物料编码行计算步骤周期 items self.bom_parser.all_items columns [f{item}_G for item in items] \ [f{item}_N for item in items] \ [f{item}_P for item in items] \ [f{item}_R for item in items] self.result_df pd.DataFrame(indexrange(self.periods), columnscolumns) # 按BOM处理顺序逐物料计算 for item in self.bom_parser.get_processing_order(): for t in range(self.periods): # 步骤1计算Gj(t) gross self._get_gross_requirement(item, t) self.result_df.loc[t, f{item}_G] gross # 步骤2计算Nj(t) G - H(t-1) - S(t) h_prev self._get_inventory_at_period(item, t) s_t self.inventory_df.loc[item, f预计入库量_第{t1}周] if f预计入库量_第{t1}周} in self.inventory_df.columns else 0 net max(0, gross - h_prev - s_t) self.result_df.loc[t, f{item}_N] net # 步骤3计算Pj(t)此处用固定批量规则示例 qty 100 if net 0 else 0 self.result_df.loc[t, f{item}_P] qty # 步骤4计算Rj(t) Pj(t)t t - LT lt self._get_lead_time(item) # 从BOM获取 if t lt: self.result_df.loc[t-lt, f{item}_R] qty return self.result_df def _get_lead_time(self, item): 从BOM中获取物料item的提前期 for row in self.bom_parser.bom_data: if row[子件编码].strip() item: return int(row[提前期]) return 0 # 默认0 # 使用流程 mps pd.read_csv(mps.csv, index_col0) inv pd.read_csv(inventory.csv, index_col0) calc MRPCalculator(mps, parser, inv, periods12) result calc.run_calculation() result.to_csv(mrp_result.csv)关键参数说明periods12定义计算跨度学生课设通常设为8-12周足够_get_inventory_at_period()函数采用滚动结余逻辑真实模拟库存动态变化run_calculation()中for item in ...循环严格遵循BOM解析器返回的get_processing_order()确保计算顺序正确。此代码可直接运行输出mrp_result.csv供Excel进一步分析。3.3 指令单生成器从计划投入量到可执行单据的自动化转换计算结果只是中间态交付物必须是车间/采购部能看懂的单据。本模块将Rj(t)表转化为两类标准单据并自动编号、添加来源追溯。def generate_purchase_orders(plan_df, bom_df, inventory_df, start_date2024-01-01): 生成采购指令单PR列表 from datetime import datetime, timedelta pr_list [] pr_counter 1 # 筛选所有采购件 purchase_items bom_df[bom_df[是否采购件] 是][子件编码].unique() for item in purchase_items: # 查找该物料所有Rj(t) 0 的周期 r_columns [col for col in plan_df.columns if col.startswith(f{item}_R)] for col in r_columns: period_idx int(col.split(_R)[0].replace(f{item}, )) - 1 # 提取周期序号 qty plan_df.iloc[period_idx][col] if qty 0: # 计算要求到货日下达日 提前期 lead_time bom_df[bom_df[子件编码]item][提前期].iloc[0] # 下达日 计划投入日即Rj(t)所在周期的起始日 order_date datetime.strptime(start_date, %Y-%m-%d) timedelta(weeksperiod_idx) due_date order_date timedelta(weekslead_time) pr { PR编号: fPR-{datetime.now().year}-{str(pr_counter).zfill(3)}, 物料编码: item, 物料名称: inventory_df.loc[item, 物料名称] if 物料名称 in inventory_df.columns else item, 采购数量: int(qty), 要求到货日: due_date.strftime(%Y-%m-%d), 建议下单日: order_date.strftime(%Y-%m-%d), 采购员: 系统自动生成, 备注: f来源{item}在第{period_idx1}周计划投入 } pr_list.append(pr) pr_counter 1 return pd.DataFrame(pr_list) def generate_work_orders(plan_df, bom_df, inventory_df, start_date2024-01-01): 生成生产指令单WO列表 wo_list [] wo_counter 1 # 筛选所有自制件 work_items bom_df[bom_df[是否采购件] 否][子件编码].unique() for item in work_items: r_columns [col for col in plan_df.columns if col.startswith(f{item}_R)] for col in r_columns: period_idx int(col.split(_R)[0].replace(f{item}, )) - 1 qty plan_df.iloc[period_idx][col] if qty 0: lead_time bom_df[bom_df[子件编码]item][提前期].iloc[0] start_date_obj datetime.strptime(start_date, %Y-%m-%d) timedelta(weeksperiod_idx) finish_date start_date_obj timedelta(weekslead_time) wo { WO编号: fWO-{datetime.now().year}-{str(wo_counter).zfill(3)}, 物料编码: item, 物料名称: inventory_df.loc[item, 物料名称] if 物料名称 in inventory_df.columns else item, 生产数量: int(qty), 计划完工日: finish_date.strftime(%Y-%m-%d), 计划开工日: start_date_obj.strftime(%Y-%m-%d), 责任车间: 装配车间, BOM版本: V1.0 } wo_list.append(wo) wo_counter 1 return pd.DataFrame(wo_list) # 生成单据 pr_df generate_purchase_orders(result, bom_df, inventory_df) wo_df generate_work_orders(result, bom_df, inventory_df) pr_df.to_csv(purchase_orders.csv, indexFalse) wo_df.to_csv(work_orders.csv, indexFalse)设计说明单据生成严格绑定plan_df即Rj(t)结果表和bom_df获取提前期、是否采购件确保源头可溯。PR编号和WO编号采用年份流水号符合企业单据管理规范。学生可将生成的CSV文件直接导入Excel用数据透视表分析“各车间周产能负荷”或“采购员工作量分布”提升答辩深度。4. 常见问题排查MRP实施中90%的翻车都发生在这5个环节MRP逻辑看似简单但落地时极易因数据、理解或操作细节出错导致计算结果完全失真。以下是我在多个模拟项目X和某高校课程设计指导中高频遇到的5类问题按“现象→原因→解决”结构整理每一条都来自真实血泪经验。4.1 现象某物料净需求Nj(t)持续为0但实际生产中却频繁缺料原因库存记录中“已分配量”字段为空或为0。MRP计算时将全部账面库存视为可用而忽略了已被其他工单锁定的部分。例如B002账面库存50但其中30件已分配给A001的第1周生产若未录入“已分配量”则Hj(t-1)误用50而非20导致Nj(t)低估30。解决在库存记录表中强制增加“已分配量”列并建立与MPS的联动机制——每当MPS确认某物料在t周期产出系统自动计算其BOM子件的占用量并写入“已分配量”。课设中可用Excel数据验证功能Data Validation限制该列为数值避免空值。4.2 现象BOM展开后某子件的计划投入量远超合理范围如1台A001导致需生产10000件螺丝原因BOM中“单台用量”单位错误。常见错误是将“每台A001需2颗螺丝”录为“2000”或单位混淆如将“克”误为“千克”。更隐蔽的是层级错误将本应属于2层的D004螺丝错误放在0层导致其用量被A001、B002、C003三层重复乘积。解决在BOM导入后执行“用量合理性校验”脚本对每个子件计算其理论最大用量 Σ(所有父件MPS计划量 × BOM用量)若超过阈值如10000则标红警告。同时强制BOM编辑界面显示“当前物料所在层级”和“所有父件列表”避免手动填错。4.3 现象采购单要求“第1周下单第1周到货”明显违反提前期约束原因计划投入量Rj(t)的计算未正确应用提前期LT。典型错误是将Rj(t) Pj(t)写成Rj(t) Pj(t)即未进行时间平移。例如B002 LT5天Pj(第2周)100但错误地将Rj设在第2周而非第1周。解决在计算引擎中Rj(t)字段必须独立于Pj(t)存储且t值需显式计算并校验t t - LT若t 0则报错“提前期超出计划范围”提示用户延长MPS周期或调整LT。课设答辩时可现场演示修改LT值观察Rj(t)列自动左移直观证明逻辑正确。4.4 现象同一物料在不同周期的计划订货量Pj(t)波动剧烈如第1周80第2周0第3周80无法形成稳定采购节奏原因批量规则选择不当。对标准件如螺丝、电阻使用“逐批订货”导致小批量高频次下单丧失规模效应。而EOQ规则未根据实际成本参数订货成本、持有成本重新计算沿用过时的80件。解决为每类物料预设批量规则策略库A类高价值EOQ需提供成本参数表B类中价值固定批量按包装规格如箱装200件C类低价值逐批订货避免积压课设中可在Excel中用下拉菜单选择规则并用条件格式标出“非推荐规则”的物料体现成本意识。4.5 现象MRP运行后某物料的“计划投入量Rj(t)”在多个周期同时出现但BOM显示其仅有一个父件原因该物料既是A001的子件又是B002的子件而B002本身也是A001的子件形成间接依赖。MRP正确计算了A001→B002→D004和A001→D004两条路径的需求但用户误以为“只应有一条路径”。解决在BOM解析器中增加“依赖路径可视化”功能对任意物料生成其所有上游路径树。例如D004的路径A001 → B002 → D004和A001 → D004。课设报告中可附此树状图证明计算的完备性而非错误。5. 方案验收与答辩技巧用三张表、一次推演、一个反问让老师当场认可你的MRP方案MRP方案的验收不是看代码跑没跑通而是看它能否经得起“业务逻辑拷问”。我带过的模拟项目X和某高校课程设计中学生常犯的致命错误是把MRP当成一个“计算工具”而忽略了它作为“管理决策支持系统”的本质。以下是我总结的验收三步法以及答辩时必用的“灵魂反问”助你从“做完”跃升到“做透”。5.1 验收三张表用结构化输出证明逻辑闭环一份合格的MRP方案必须交付三张核心表格缺一不可。它们不是附件而是验收的法定凭证。| 表格名称 | 核心字段 | 验收要点 |本文还有配套的精品资源点击获取

相关推荐

Windows端口占用排查:netstat与tasklist定位进程
Windows端口占用排查:netstat与tasklist定位进程

上周帮朋友处理一台内网机器上的怪事:一个本地起的调试服务,启动时死活报端口被占用,机器上没装任何端口查看工具,远程桌面连上去只有一个黑黢黢的 cmd 窗口。很多人第一反应是去下载个图形化端口查看器,但在那种环境下… · 2026/11/3 20:24:52

G代码与M代码入门:数控编程的普通话与状态机原理
G代码与M代码入门:数控编程的普通话与状态机原理

简介:本资源是一份面向数控编程初学者、机械加工技术人员及高职院校实训教学人员的G/M代码速查手册,系统梳理了FANUC等主流系统中G00–G99、M00–M99标准指令的功能、作用范围与典型应用场景,有效解决编程时查表困难、功能混淆、系统差异不明… · 2026/11/3 20:24:52

谷歌开源ARTEMIS:AI视觉驱动移动端自动化,重定义手机AI Agent操作
谷歌开源ARTEMIS:AI视觉驱动移动端自动化,重定义手机AI Agent操作

做移动端自动化这么久,我越来越觉得,传统那套“写死坐标和控件ID”的做法,正在被一种新思路慢慢替代。那就是让AI直接“看”屏幕,像人一样思考下一步点哪里、划哪里。谷歌开源的ARTEMIS,就是这条路上一个非常有代表性的… · 2026/11/3 20:23:51

直流无刷电机AX BY CZ怎么划分?120°电角度与90°坐标系详解
直流无刷电机AX BY CZ怎么划分?120°电角度与90°坐标系详解

一个叫"ax"的热搜词,把我拽回了直流无刷电机的老本行。搜这个词的人,大概率是在某张接线图或绕线图上被AX、BY、CZ三个字母组合卡住了,随后抛出这个经典问题:直流无刷电机ax by cz怎么划分,是按照垂直轴线划… · 2026/11/4 10:57:33

ZPL标签打印预览实战:Labelary渲染PNG与参数调优指南
ZPL标签打印预览实战:Labelary渲染PNG与参数调优指南

标签打印这个行当里,ZPL 算是个绕不开的老朋友。只要用过斑马系打印机,或者对接过仓储、物流、零售后台的打印模块,大概率都跟这串以^XA开头、^XZ结尾的指令打过交道。它本质上是打印机自己能读的“母语”,描述的是标签上每一行文… · 2026/11/4 10:57:33

GOCI2波段参数与月球定标链路:辐亮度校验到ROLO模型
GOCI2波段参数与月球定标链路:辐亮度校验到ROLO模型

简介:《GOCI2 说明手册 波段信息说明》面向海洋遥感、卫星载荷标定与定量反演方向的研究人员、工程师及研究生,聚焦第二代地球同步轨道海洋水色成像仪 GOCI-II 的波段设置与辐射性能指标,帮助读者厘清短波至近红外各波段在藻华识别、悬浮颗粒… · 2026/11/4 10:57:33

从零构建AI工程能力:后端老兵的踩坑与重构实录
从零构建AI工程能力:后端老兵的踩坑与重构实录

1. 从零搭建AI工程能力:一个后端老兵的踩坑与重构实录 "ai-engineering-from-scratch"这个标题,第一次看到的时候我愣了一下。不是因为它有多花哨,恰恰相反,它朴素得有点不像这个时代的项目名。但正是这种朴素&#xff… · 2026/11/4 10:57:33

直流无刷电机三相绕组ax by cz划分与120度电角度详解
直流无刷电机三相绕组ax by cz划分与120度电角度详解

前阵子修一台直流无刷电机,端子排上贴着 ax、by、cz 三个标签,驱动板却只标了 U、V、W。我拿着表笔对着标签发愣:这 ax、by、cz 到底按什么划分出来的?有人挂在嘴边说,三相绕组就是按垂直轴线分的,一组一组… · 2026/11/4 10:57:33

无人机水质监测系统设计与实战经验分享
无人机水质监测系统设计与实战经验分享

1. 无人机水质监测的技术革新 最近在环境监测领域出现了一个有趣的现象:越来越多的科研团队开始采用无人机进行水质采样和监测。这种创新方法不仅解决了传统人工采样效率低、危险性高的问题,还能获取更全面的水域数据。作为一名长期从事环境监测的技术人… · 2026/11/4 10:56:32

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

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

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

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

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

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

AI辅助技术栈评估:提升研发决策效率60%
AI辅助技术栈评估:提升研发决策效率60%

1. 项目背景与核心价值技术决策一直是研发团队面临的重大挑战。随着技术生态的快速演进,技术栈的选择、维护和迭代变得愈发复杂。我们团队在过去两年里,先后经历了三次重大技术栈迁移,每次都需要投入大量人力进行技术评估和风险分析。直到去年… · 2026/11/4 0:00:17

从生成Token到直接决策:Jev如何重塑AI Agent工程实践
从生成Token到直接决策:Jev如何重塑AI Agent工程实践

1. 从"生成文字"到"拍板决策":Jev 到底在解决什么问题大多数人第一次接触大模型,脑子里建立的模型是"输入问题、输出文字"。你问它今天天气怎么样,它给你一段描述;你让它写个周报,它给你… · 2026/11/4 0:00:17

32G统一内存跑大模型:内存账、TPS实测与端云分流
32G统一内存跑大模型:内存账、TPS实测与端云分流

想在一台 32G 统一内存的小主机上把大模型跑成"日常可用",这件事我前后折腾了小半年。标题里说的这台 Mac mini M6,是我们这次讨论的目标平台,具体到手规格以实物为准;但下面这套推算方法和实测思路,对任何统… · 2026/11/4 0:00:17

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

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

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

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

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

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

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码