关于Plant simulation16.0中按订单配件仿真模型实验——拉动生产模式

目录

Plant simulation16.0中输送线按订单配件仿真模型

简介:现在工厂生产制造中,主要分推动和拉动两种模式。下面用Plant simulation16.0软件简单仿真实现下拉动生产模式。本人非专业人士,仅业余爱好,模型或代码有更好实现方式,欢迎交流。

一、推动、拉动生产模式

  1. 推动式生产(Push Production):每一工序都根据生产计划,尽其所能地生产,尽快完成生产任务,不管下一工序当时是否需要,传统的生产系统一般为推进式生产。

  2. 拉动式生产(Pull Production):相对于推动式生产,前一作业将零件生产出来“推给”后一作业加工,在拉式生产中,是后一作业根据需要加工多少产品,要求前一作业制造正好需要的零件。

二、模型搭建

关于Plant simulation16.0中按订单配件仿真模型实验——拉动生产模式
关于Plant simulation16.0中按订单配件仿真模型实验——拉动生产模式
软件版本:Plant Simulation 16.0

  1. 派生然后复制3种Part,3种Container,分别命名PartA、PartB、PartC、ContA、ContB、ContC;
    关于Plant simulation16.0中按订单配件仿真模型实验——拉动生产模式

  2. 三种零件PartA、PartB、PartC分别为部件ContA、ContB、ContC的装配部件,为区分显示,修改Part和Cont颜色;

    PartA对应ContA 红色
    
    PartB对应ContB 绿色
    
    PartC对应ContC 蓝色
    
  3. PartA、PartB、PartC分别由3个出料位来料,每个经过一个station工位后到各自输送线上,输送线有一个Sensor,均用 Method:Part_Stop 控件控制 Sensor 触发动作,判断后端 Cont 需要哪类 Part,然后输送到 Conveyor3,根据订单来的Part再由机器人抓取装配到Cont上;

    PartA、PartB、PartC三种零件生产均为无规律时序
    

    关于Plant simulation16.0中按订单配件仿真模型实验——拉动生产模式

  4. ContA、ContB、ContC分别由3个出料位来料,每个经过一个station工位后到各自输送线上,输送线末端有一个分流器,规则改为随机,即订单随机,部件Cont输送到 Conveyor7 上,进入生产序列,产生订单,明确需求Part零件顺序;
    关于Plant simulation16.0中按订单配件仿真模型实验——拉动生产模式

三、仿真代码

  1. 全局变量

建立三个全局变量

CurrentPart //当前零件,表示当前订单零件,防止后续零件插队 Object型
Contlist //waitCont表格有是否有内容标志符 Boolean型
Parttlist //waitPart表格有是否有内容标志符 Boolean型

关于Plant simulation16.0中按订单配件仿真模型实验——拉动生产模式

  1. 数据表格

WaitPart——零件生产表单
WaitCont——部件上线订单
allOrder——所有匹配下线产品记录表单

关于Plant simulation16.0中按订单配件仿真模型实验——拉动生产模式

  1. Method

Plantsimulation语言:Simtalk2.0

Part输送线传感器Metod:Part_Stop

param SensorID: integer, Front: boolean, BookPos: boolean

var PartType:string:=strrcopy(@.name,1)   //获取触发传感器的零件型号:A或B或C
@.stopped:=true               //零件在输送线上停止
waituntil Contlist=true prio 2 //等待订单产生后再执行

if  CurrentPart = void     //如果不堵塞
	if PartType=strrcopy(waitCont["name",1],1)  //零件型号刚好和部件型号匹配,直接匹配到,不登记到waitPart表单,推动模式
			CurrentPart:=@               //当前零件登记到CurrentPart
			CurrentPart.stopped:=false   //零件继续输送
			waitCont.cutrow(1)           //删除匹配到的订单
			if waitCont.indexydim=0  
				Contlist:=false
			end
	else
			waitPart["MUlist",waitPart.indexydim+1]:=@  //如果不是匹配订单的零件,零件存到waitPart表单内
			waitPart["name",waitPart.indexydim]:=@.name
			waitPart["times",waitPart.indexydim]:=root.eventController.simTime
			Partlist:=true
	end
else                  //如果堵塞直接存表单
	waitPart["MUlist",waitPart.indexydim+1]:=@
	waitPart["name",waitPart.indexydim]:=@.name
	waitPart["times",waitPart.indexydim]:=root.eventController.simTime
	Partlist:=true
	return

end

Cont输送线传感器Metod:Cont_list

param SensorID: integer, Front: boolean, BookPos: boolean

@.stopped:=true           //记录订单
waitCont["MUlist",waitCont.indexydim+1]:=@
waitCont["name",waitCont.indexydim]:=@.name
waitCont["times",waitCont.indexydim]:=root.eventController.simTime
Contlist:=true
@.stopped:=false

waituntil CurrentPart = void
if Partlist then
for var i:=1 to waitPart.ydim       //搜索零件表单内第一个匹配的零件,放行零件
	if strrcopy(waitPart["name",i],1)=strrcopy(@.name,1)
		waitCont.cutrow(1)
		CurrentPart:=waitPart["MUlist",i]
		CurrentPart.stopped:=false
		waitPart.cutrow(i)
		if waitPart.ydim=0  --no part is waiting false
			Partlist:=false
			end
		exitloop

	end

next
else
	waituntil Partlist prio 1
end

Conveyor3传感器Metod:Cont_list

param SensorID: integer, Front: boolean, BookPos: boolean

CurrentPart:=void    
//到主线上,清空CurrentPart,后续订单继续匹配零件。
//这里到主线清空是因为如果提前清空,输送线长度不一,零件输送时间不一,可能会被插队。
//另外我们可以把传感器设置在线体末端,这里只是仿真模型设置问题

allOrder表单Metod:Cont_list

allOrder["MUlist_Part",allOrder.indexydim+1]:=obj_to_str(@.cont)  //记录所有生产下线表单
allOrder["name_Part",allOrder.indexydim]:=@.cont.name
allOrder["MUlist_Cont",allOrder.indexydim]:=obj_to_str(@)
allOrder["name_Cont",allOrder.indexydim]:=@.name
allOrder["times",allOrder.indexydim]:=root.eventController.simTime

Metod:Reset

waitPart.delete({0,1}..{3,*})
waitCont.delete({0,1}..{3,*})
allOrder.delete({0,1}..{5,*})
Contlist:=false
Partlist:=false

四、演示效果

效果视频

<iframe allowfullscreen="true" data-mediaembed="bilibili" id="xLGz5KGl-1616843803046" src="https://player.bilibili.com/player.html?aid=374844991"></iframe>

关于Plant simulation16.0中按订单配件仿真模型实验——拉动生产模式

waitPart表单
关于Plant simulation16.0中按订单配件仿真模型实验——拉动生产模式
waitCont表单
关于Plant simulation16.0中按订单配件仿真模型实验——拉动生产模式
allOrder表单
关于Plant simulation16.0中按订单配件仿真模型实验——拉动生产模式

五、总结

此模型是在学习其他老师教学后,为了深入理解拉动生产而做仿真实验,所用软件为西门子Plantsimulation 16.0 为正版软件。另外仿真非本人专业,仅业余爱好,欢迎大家多多交流。

上一篇:Django分页器的设置


下一篇:PHP数组