01 定义
集权式安排:生产计划人员把相应的生产任务排到具体的每个点。颗粒度到具体到设备、具体到机台;生产的管理人员只需要按计划做执行了;
分权式安排:生产计划人员把排程排到各车间对应的管理人员,由对应的管理人员再进行二次分解,根据相关的图纸、工艺安排在每台机器、设备上面;
02 优点
集权式安排:因集权式安排已经到具体的机台设备,所以这样的模式下,对于订单的各工序控制点都能够控制到,生产是一个执行部门。集权式下的安排可以多部门协调,而不是站在某一个独立的车间来看,而是看整体效率;
集权式安排下会对在手订单和预测订单一起进行产能负荷协调,根据价值流分析,做出符合公司经营的最佳生产平衡点;
分权式安排:分权式的安排只到生产管理的班组,由班组进行排程,对排程人员的要求相对低,不需要生产计划具备专业的工艺知识,只需要以拉动式倒排即可;
03 缺点
集权式安排:因集权式安排的精度相当高,所以对生产计划排程人员需要能力相对比较高:
- 丰富的实际现场经验
- 现场管理与计划能力
- 对制程工艺的熟悉,对模具的熟悉,对设备的熟悉;
- 熟悉机器负荷、操作工分布、线平衡;
- 对价值流分析有一定的基础,通过分析可以推出并单原则、拆单原则,也就是最小上机量;
如果以上不熟悉的话,排程出来的生产计划,生产相关的管理人员是无法执行的;
分权式安排:分权式安排是由生产管理人员进行排程,由于每个工序都是班组长或车间主任决定,各组长、各车间彼此之间缺乏必要的协调。各制程对应的工序很有可能是,上工序做了下工序不需要的半成品,下工序需要的,上工序又没有;
车间的班组长的计算机水平以及ERP逻辑水平相对比较弱弱,在具体到机台设备的排程中的排程负荷量预计只有1天到3天,超过3天以上的全工序零件的整合平衡计划是排程不出来的;
04 工作内容
集权式安排: 根据订单需求排程出对应的全制程工序计划;
输出报表:
- 《组装成品生产计划》:在手订单全部排程,按组装标准工时拉动式分解,需要30天就排程30天,需要60天就排程60天
- 《组装成品T+7天计划》在长线计划中分解出来的7天具体计划;
- 《组装成品日计划》按7天计划分解的具体日计划;
- 《设备负荷预警表》
-
《人员负荷预警表》
上面排程组装计划的约束条件需要综合考虑各制程的约束,特别是瓶颈资源;
对应组装的零件假定有注塑件、五金件、印刷件、缝制件;对应的输出报表需要与成品计划一致;以注塑件为例:
- 《注塑机台对应的长线计划》《T+7天》计划 《日计划》
- 《注塑模具对应月度最大产能报表》
- 《注塑模具切换时间明细报表》
输入报表:
上面需要输出报表需要对应各职能部门提供相关报表,计划才能输出对应的排程表,举例说明:
- 《标准工时报表》
- 《模具明细表》
- 《设备明细表》
- 《人员明细表》
- 《瓶颈工艺定义表》
-
……
分权式安排: 分权式安排只需要按交期倒排到具体的时间,然后转各对应的装配车间、注塑车间、CNC车间,由车间分解,一般情况下,车间分解都是具体的1到2天的排程,每天的的工作内容就是处理急单。;
05 总结
最后用一张表来看下,由你们决定什么模式;
名称 | 集权式 | 分权式 |
定义 | 计划排到机台 | 计划排到班组 |
优点 | 有效控制、全局协调、综合平衡 | 推行简单,对生产计划人员工艺技能要求低 |
缺点 | 推行复杂,人员要求高,基础数据要健全 | 各工序制程孤岛、协调困难、库存难以控制 |
工作内容 | 排出全部订单(在手+预测)的对应线体、机台、人员的计划 | 排程到班组,班组按天排程 |
目前的我了解的企业大部分是分权式的,这样的模式的特点是排程人员为跟单,生产人员是计划,因为生产人员的强项是在生产,所以计划一般不是很强,造成异常多,库存高,工序之间经常发生,我要你没有,我不要的你生产一大堆……。
我建议,最后还是向集权式计划推进,相关部门把基础数据完善与健全;
关于生产计划排程经验总结:
-
图例:一维排程
-
图例:二维排程
-
主计划:
-
S&OP计划:销售与运营计划
-
信息更新方便 数据更新可以多表更新,如更新库存信息,更新采购信息,更新入库信息,数据分析也能够自动同步到PPT。 -
数据分析快速 数据可以根据设计的科目,快速按产品别、型号别、日期别、数据别不同维度分析; -
排程转换方便 排程可以实现一维排程快速的转成二维排程,也可以从二维排程转换成一维排程,可以从月计划转成周计划,也可以周计划转成三日计划以及日计划; -
排程调整方便 排程可以快速换线、可以快速的调整顺序,可以快速按标准工时排程; -
公式简单高效 为了减少学习成本,尽量不用VBA,尽量不用数组函数;
01 信息更新方便
PMC在工作中需要更新的信息比较多,基本上都是围绕着资源来管理的,这些资源对应的信息如何快速更新到排程表,是这个模块重点考虑的事情。以下的资源信息将整合到排程表中作为约束条件之一;
-
订单信息:以业务下达的销售订单为准;ERP系统中导出未结案销售订单明细
- 工单信息:销售订单转成的自制生产任务;对应ERP中的生产任务明细表;
- 采购信息:采购订单明细表
- 库存信息:成品库存及原料库存;现存量明细表;
- 生产日报:一般指Excel上报的生产信息,因为账务的滞后性,有些工厂以Excel日报最为准确和快速。特别是没有上MES前,Excel的日报非常重要;
02 开始设计
明确目标和方向,开始动手,打开一个Excel工作簿,按F12,另存为指定的文件夹,同时命名为:生产排程表1.0; 在第1面Sheet页面,对此页重命名为:01 订单池;
订单池 页面说明:
定义:以ERP系统中未结案的生产任务为基准建立
更新频率:每天
导出全部未结案的生产任务明细表,如下图所示:
注意上图中标记框框处,这里是有问题的地方,这也是大部分ERP的的导出初始问题;
- 导出的格式为兼容模式,后缀为*.xls; 兼容模式一般情况文件比较大,打开速度慢,
-
工单日期为文本,不能按月筛选,具体看下图
- 同时数量也是文本,不能求和;
所以导出来的数据最好是打开后,直接复制数值过来,再用公式转换一下就可以了;
我们在订单排程表中,新建一个页面:命名为:02 复制生产订单,再把导出的数据复制→粘贴数值到这个表上,这样就把问题1解决,直接转成高版本了,因为订单排程表就是*.xlsx;
文本型日期问题的解决思路:用日期函数转换
- DATE(year,month,day) 根据指定的年份、月份和具体日期返回表示特定日期的连续序列号
- YEAR(serial_number) 返回某日期对应的年份
- MONTH(serial_number) 返回某日期对应的月份,用整数 1 到 12 表示
-
DAY(serial_number) 返回以序列号表示的某日期的天数,用整数 1 到 31 表示
对于问题2:我们这个页面的边上把原数据的标题复制到边上,然后在下方录入公式:就解决了问题2,下拉填充实现动态引用,
,
对于问题3:文本型数值,只需要对其减负运算就可以变成数值,录入--D2,向右填充→向下填充
最后一步,选中全部数据,按下Ctrl+T 转换成超级表
并对标题进行颜色填充和窗口冻结
- 灰色代表复制数据,从其它地方复制过来的
-
黄色代表公式数据,设置好了原则上不变了
完成这一步后,把填充颜色为黄色的数据复制到订单排程表的表1
选中数据→Ctrl+C→切换到表1的01订单池A1→选择性粘贴→粘贴列宽→粘贴数值→粘贴格式→选中数据→Ctrl+T→转成超级表→设置格式
完成后如上图所示;
这个设计思路的大纲如下,古哥希望能够慢慢的更新,争取能逻辑以及Excel技术一次性讲明白,为了不跑题,还是把设计大纲置顶;
订单池已经通过生产任务未结案明细中的任务创建好了,接下来就是要更新了,我们昨天的日期是昨日的生产任务未结案明细,今天如果再导出未结案明细就是今天的生产任务,为了好理解,我们定义今天为T天,其中T为Today的首字母; 昨天为T-1天;
更新的原则如下:
-
T天的未结案工单明细与T-1天的明细进行VLOOKUP函数匹配,如果匹配不到的就是新增的
- T-1天未结案工单与T天对比,匹配不到的,就是工单已经结案
- T-1天入库数量与T天的进行匹配,更新T天的入库记录;
接下来,回到报表中,我们把T天的未结案工单复制到“02 复制生产订单”,这里注意,一定是粘贴数值,因为是超级表的原因,只要粘贴数值可以自动更新格式的;
注意上方标记处,这是新增加的,我们写一个匹配公式
=XLOOKUP([@制令单号3],表1[[#全部],[制令单号3]],表1[[#全部],[未完工量7]],"新增加")
函数释义:
-
通过制令单号去表1找制令单号对应的未完工数量,找不到返回新增加
我们只需要复制公式区中数值就可以了
粘贴到表1就可以自动填充公式
接下更新表1中结案数量以及完工数量;
录入公式:
=XLOOKUP([@制令单号3],表2[[#全部],[制令单号]],表2[[#全部],[已缴库量]],"已结案")
我们把已结案的生产任务复制到一个新建一张表3,命名为 03 已结案,同时把表1的已结案订单复制到这里后,再把表1的已经结案的删除
复制的最快速方法:
-
全选Ctrl+A→切换到表3→Ctrl+Alt+V选择性粘贴→粘贴列宽→粘贴数值→Ctrl+T转换成超级表;
接下来就要更新缴库数据
在表1的数据已经缴库的数据在录入引用公式
下拉填充公式得到下图,这样就完成订单池的新增加,更新入库数量了。
更新完成后的数量,表1与表2的数量应该是完全一致的。也就是T的未结案工单的订单数量,缴库数量都是和T-1天的一致;
当然有同学会问,为什么要这样复杂的更新,不能更新用这张表做订单池吗?这个问题问得好,如果直接用这张表的话,原来在表1更新的一些订单备注信息就无法一一对应了,相当于每次都覆盖式更新;
更新完后,我筛选未完工为0的订单还有很多,为什么不直接转到结案处呢?
这里就是涉及到结案与完工的定义了
-
完工,系统判断产品已经完工,从财务的角度来说,成本还没有核销;
- 结案,系统判断财务已经核销完了,相当于领料完成,入库完成,成本也没有太大差异;有些工单虽然完工了,但是结案不了,可能成本超了,如超领太多,或者成本少了,有料没有发完等等;
开始设计第二个模块,就是如何设计排程表可以数据快速分析;
根据前文,我们已经把工单明细表转成订单池的设计完成。每天只需要把未结案的生产任务更新到订单池中就可以了,有了订单就可以排程了吗?什么都考虑的情况下,是可以的。但是排程不是简单的按某一个单一的约束条件来排程的,排程前我们需要准备一些数据,方便我们快速在排程中做出决策;
01 订单交期:
每个工单都会对应一个需求,占比最大的是销售订单需求,除了销售订单的需求,也有一些其它的需求而产生的工单,如返工,样品,等,就成品级的工单的话,一般都是销售需求单号和工单的需求号一一对应的;需要注意的就是一个订单需求号可以对应多工单,工单号就是唯一的号;这个订单交期是业务也是客户的第一交期;对应的KIP绩效就是客户订单准时交付率;这个指标根据内销和行业平均值,一般90%-95%;
02 评审交期:
对于客户的日期,是需要经过评审回复交期的,如果能够满足,订单交期就是评审交期;不能满足就是需要经过主计划排程后评估后得出的交期,这就是评审的交期,对应的KIP绩效指标就是订单一次评审准时交付率:这个指标需要和订单周期指标对应起来,不然评审只需要把客户的交期评审的宽放放进去,很容易做到100%;所以需要加上订单周期指标,订单周期指标根据公司的战略来定,从20天到40天不等;原则上订单一次评审的准时交付率需要95%到100%之间,同时订单周期指标小于30天;
03 资料确认;
对于家电行业来说,印刷品相关的一些配置订单的资料确认的及时非常重要,这个也需要加到订单池中,对应KPI绩效就是资料提供的准时率,这个指标需要主计划统计收集业务部门的配置资料是否按时提供;常见的家电配置资料有:
- 印刷品相关:彩盒、外箱、贴纸、说明书等;
- 外观相关:外观颜色、丝印位置;
- 配件相关:是做简版还是高配版本等;
04 工单信息;
工单的状态、工单领料情况、工单的齐套情况,可以说工单的信息对于主计划来说非常重要,所以在排程中要特别注意工单管理,特别是工单的“资源”情况,相关对应的KPI绩效有:
- 工单准时结案率;成品工单的结案周期一般为30天
- 工单一次齐套率;T+1天,100%;T+2天 80%, T+3 天 70%;
- 工单准时领料率;上线前全部完成领料;
05 其它信息
排程中如果ERP的一些信息不方便分析,主计划需要思考自己创建一些科目来分析,如按产品一级分类、二级分类,按产品的性能的一级分类、二级分类,分类的越详细,对排程的决策越有用;
如:产品大类小家电:一级分类:电饭煲、二级分类:按外观有:方煲、圆煲;按功能有:电子式;机械式;按客户分:内销、外销;按功率分:大功率、小功率;按销售渠道分:线上、线下;等等;
06 开始设计
铺垫了这样多,我们开始设计,01到03的大部分信息都是在销售订单里面,所以我们需要导出销售订单明细表,这里导出的表还是兼容模式,我们还是把它转成高版本的格式,同时转成超级表,命名为:“04 销售订单明细”
为了方便大家记忆,我们现在已经创建了4个超级表了,按一下Ctrl+F3,就可以看见了
我们为了快速排程,我们把订单的信息可以快速的引用到订单池中,方便我们做数据分析,注意表1订单池的顺序保持不变,统计按下单日期升序排序;都是未结案的;在引用销售订单号的时候,我们发现ERP系统这边没有带出对应工单号;所以这里没办法直接引用;
还有就是在引用销售订单号的时候我们发现无法一一对应,因一个销售订单号有多个项次,我们如果只匹配销售订单号的时候,就会工单对应的销售需求号就会一对多了;
以上两个问题我们的解决方案是,统计叫信息化部门加上去,有时候信息化部门办事效率太低,我们思考如何用Excel快速引用;
通过观察发现,只需要把品号和下单数量两个条件一起判断,就大概率可以找到销售订单号;录入公式=[@品号]&[@受订数量]
然后在表1订单池录入公式:
=XLOOKUP([@品号4]&[@数量5],表4[[#全部],[辅助列品号+数量]],表4[[#全部],[销售订单号]],"找不到")
这里用XLOOKUP,不用VLOOKUP的原因,是因为VLOOKUP不支持向左引用,只支持向右引用,出现错误找不到还需要额外写公式;
录入完成后,我们发现有些找不到的需要人工排查一下,是什么原因,是挪单了还是结案了?
引用完销售订单号,我们发现一个销售单号会对应多个订单号,我们还要让工单实现单单对应,就是保证一个工单对应 一个销售需求号,我们再把公式做一个变形;
=XLOOKUP([@品号4]&[@数量5],表4[[#全部],[辅助列品号+数量]],表4[[#全部],[销售订单号]],"找不到")&"-"&XLOOKUP([@品号4]&[@数量5],表4[[#全部],[辅助列品号+数量]],表4[[#全部],[项次]],"找不到")
公式看起来很长,其实非常好理解,就是再次引用一个项次号,用文本连接符号把它们串联起来,完成后的效果如下:
当订单池带上项次号后,就实现了一一对应,也就是单单对应了;
根据前文,我们在订单中,已经把销售订单号匹配过来了,现在需要快速分析,就需要创建一些字段,如时间、型号等这也是分析中常见的一种手段;
我们把销售订单中的预交期、客户、业务员引用过来,方便排程时候快速索引;
分别录入公式:
=XLOOKUP([@品号4]&[@数量5],表4[[#全部],[辅助列品号+数量]],表4[[#全部],[预交日期]],"找不到")
=XLOOKUP([@品号4]&[@数量5],表4[[#全部],[辅助列品号+数量]],表4[[#全部],[客户简称]],"找不到")
=XLOOKUP([@品号4]&[@数量5],表4[[#全部],[辅助列品号+数量]],表4[[#全部],[业务员]],"找不到")
注意这几个公式基本都一样,只需要更改XLOOKUP的返回参数的名称:如把客户简称替换成业务员就可以了
因为定义了名称表,所以公式显示的都是中文名称,这样的好处是,方便解释公式定义;
有了这些字段,我们就可以通过数据透视表快速转成我需要分析的数据了;
01 时间别分析;
按接单时间分析,各个时间段的接单情况,同时看预交期的时间分布,看一下是否平衡;
依次点表设计→透视表→插入透视表;这里看到引用范围就是表1,定义好的名称,这样的好处就是可以动态引用,当数据有增加的时候,不需要再次更新数据引用范围了;
这里可以按客户维度分析:
数据透视表非常简单,简单地把格式拖拽到对应的透视表字段中,就可以实现不同维度的分析;
当然也可以按品号的角度分析:
02 数量分析;
这是分析订单数量的结构,例如大订单占比多少?小订单占比多少等;
我们新建一个透视表,命名为 06 数量分析;
操作步骤:把数量最先拖拽到行字段列表,如下图所示
然后依次点数据透视表分析→分组选择→在弹出的对话框中起始录入0→终止于录入5000→步长1000
简单理解就是按1000一个维度分析,超过5000以上就不详细分析了
按下确认可以看到,基本上都集中在0到2000的数量范围下单;大订单比较少;
换成500的范围 后分析 如下图:
分析这些数量的目的就是为了看订单结构对排程的影响;举例说明:如果某个时间段全部是小订单,排程的压力就会很大,很可能切换就会非常多;如果某个时间段大订单较多,相对来说会好一点,无论切换还是生产效率都相对好掌握;
同时也分析哪些客户经常下小单,产值不高,要求又高,这样的客户是不是要排在优先级最高?也是作为在销大于产的时候,排产逻辑的一个依据;
03 展开分析;
知道了字段对于排程的重要性,我们可以通过数据透视不同的组合方式,分析出很多结果,注意没有字段就自己创建字段;
按业务与客户组合数量分析;
按业务与客户组合数量分析再加上日期维度分析;
按客户加上数量分析,计算出每单订单的平均数量;
排程中需要考虑的约束条件比较多,是否专线等,然后根据效率最优原则,一级一级筛选,直到综合效率最高。
01 判断是否专线
我们在排程表中增加一列,可生产线体,录入公式下拉:
=VLOOKUP([@品号],'08 对应线体'!A:B,2,0)
这一步的目的是筛选专用线体,只能专线生产。,筛选数字1的,录入公式
=VLOOKUP([@品号],'08 对应线体'!A:C,3,0)
上图中代表为专线生产,我们再筛选空白,执行同样的操作。再匹配一次;
02 判断线体是否超负荷
录入完公式,我们在分析表中录入公式汇总排程表中各线体的负荷
=SUMIFS('09 T+7 排程'!K:K,'09 T+7 排程'!M:M,A2)
可以看出,8线和10线明显超了,而1线和3线及6线明显少了,所以返回排程,重新分配,此时我们再用函数匹配第2优先线体,我们先筛选8线,把超负荷的工时删除了
同理,也把9线,10线,2线超负荷的删除.,然后分别匹配第2、第3、第4优先级,最终在考虑平衡约束的条件下,把工时平均分配到各个线体;
03 开始排程
已经是最优线体后,我们需要考虑约束最为重要的就是交期,所以按交期排序,同时同个线体的尽量同类型的一起装配,在考虑物料齐套,换线约束等情况下排出各线体的订单顺序;
确定开工日期和和开工时间,我们就可以设计公式了
-
确定日产能
录入公式:=[@未完工量]/[@线体人数]*[@PPH]*10
-
转换成天:
录入公式:=[@未完工量]/[@日产能] 转成天是为了时间加减 - 录入开工日期
4. 开工日期:
录入公式: =IF(P2<>P1,$V$1,R1) 下拉填充 这个好好理解一下,这是一维排程的重点函数
5.完工日期:
录入公式:=[@开工时间]+[@转成天]
6. 一维转二维排程
接上文,已经把排程根据标准PPH转成一维排程,同时也通过数据透视表把相应的二维排程。只是上文排程中没有考虑切换时间,也没有考虑宽放时间,也没有考虑人员对效率的影响,我们需要把这些约束一起加上去。
01 加上切换时间
切换的定义为产品品号有切换的时候需要预留半小时的切换时间,所以我们需要写一个公式自动判断是否有切换。
上图中标记红框处表示切换了,我们录入公式:
=IF(D2<>D3,1/24,0)
公式释义:当与下方的型号作对比时,不一样时,返回1小时。其中1/24 代表1小时,因为1代表1天,除24就是1小时;
然后在边上的完工时间上加上这时间:
=[@开工时间]+[@转成天]+[@切换时间]
02 宽放时间
实际排程中,为了确保评审交期的准确,也为了预留一些意外产能,可以加上一些宽放时间。这样的话可以应对产量延期:举例说明:
- 紧急订单和临时插单造成的;
- 制造效率不达标造成的
- 品质工艺异常造成的
- 物料欠料造成的
-
其它异常造成的
增加了这个宽放时间后,同时在完工时间也需要把这个时间加上
03 快速调整
刚刚是在1张页表的排程,相当于把几十条线放在一页,这样的话,排的天数越多,行数越多,信息量非常大,有时候可以想办法把线体分开的排程设计。这时候我们可以用一个函数 FILTER 可以快速筛选结果;
操作步骤:
新线一个页面:命名为 “12 组装1线”,同时把 "09 T+7 排程"的标题复制过来。再录入以下函数,就可以把组装01线快速放到一张新页中;
A2=FILTER(表9[[制令单号]:[宽放时间]],表9[线体]="组装01#线")
同理我们可以复制公式把2、3、线分别建立对应的排程报表;
A2=FILTER(表9[[制令单号]:[宽放时间]],表9[线体]="组装02#线")
A2=FILTER(表9[[制令单号]:[宽放时间]],表9[线体]="组装03#线")
A2=FILTER(表9[[制令单号]:[宽放时间]],表9[线体]="组装01#线")
……
这几张表都是自动生成的,我们需要调整的时候只需要在 09 T+7 排程 调整就可以了;
04 插入目录
当工作表比较多的时候,我们需要插入目录来实现,我们可以通过:
表格目录→生成目录→新建一个页面→创建自动目录
并对每一个模块做说明:
01 订单池 :计划员工作订单主表,订单池总表
02 复制生产订单 : 每日复制ERP生产单
03 已结案 : 结案归档处
04 销售订单明细 : 每日复制销售订单
05 订单时间分析 : 自动报表
06 数量分析 : 自动报表
07 标准工时 : 工程提供,有变动时需要更新
08 对应线体 :排程数据库,颗粒度到品号
09 T+7 排程 :核心排程;
10 负荷分析 : 自动报表
11 透视转二维 :自动报表
12 组装1线 : 自动报表
13 组装2线 : 自动报表
……
完成后的效果如下:
好了,这就是排程报表的全部内容。