ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-03-27 19:33:44  阅读:355  来源: 互联网

标签:simulation16.0 仿真 Plant name indexydim waitCont waitPart 零件 allOrder


目录

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

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

一、推动、拉动生产模式

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

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

二、模型搭建

在这里插入图片描述
在这里插入图片描述
软件版本:Plant Simulation 16.0

  1. 派生然后复制3种Part,3种Container,分别命名PartA、PartB、PartC、ContA、ContB、ContC;
    模型树

  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三种零件生产均为无规律时序
    

    在这里插入图片描述

  4. ContA、ContB、ContC分别由3个出料位来料,每个经过一个station工位后到各自输送线上,输送线末端有一个分流器,规则改为随机,即订单随机,部件Cont输送到 Conveyor7 上,进入生产序列,产生订单,明确需求Part零件顺序;
    在这里插入图片描述

三、仿真代码

  1. 全局变量

建立三个全局变量

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

在这里插入图片描述

  1. 数据表格

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

在这里插入图片描述

  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表单
在这里插入图片描述
waitCont表单
在这里插入图片描述
allOrder表单
在这里插入图片描述

五、总结

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

标签:simulation16.0,仿真,Plant,name,indexydim,waitCont,waitPart,零件,allOrder
来源: https://blog.csdn.net/qq_42222525/article/details/115263258

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有