|
本帖最后由 S$MULATE 于 2017-3-23 22:17 编辑
我们推出SIMIO系统仿真软件使用小贴士(DAILY BITS项目),每天或每两天提供和SIMIO使用相关功能函数,小技巧和诀窍,敬请关注! 今天我为大家讲解“模型实体无处遁形”。
【DAILYBITS-0008】模型实体无处遁形(遍历)
“希望是隐藏在群山后的星星,探索是人生道路上倔执的旅人”——布拉赫。
在SIMIO系统模型中,为了模型纠错的需要,有时候需搜到模型实体所在的位置(实体追踪),确保模型实体没有被异常的销毁或者堵塞在某些地方,我们必须使用一些技巧来搜索及可视化模型实体的位置,除了常用方法,如将ModelEntity的颜色改成比较显著的颜色、将Connector换成Path、将Allow Passing改成False、将输入节点的Initial Traveller Capacity设成1、检查所有的连线是否连接好、为模型实体添加动态标签Dynamic Label Text,在Trace里面按ModelEntity名字来过滤追踪记录等等,今天我给大家讲述使用Process过程来判断所有ModelEntity分别在哪个位置的简单方法。请跟着我进行一步一步操作。
一、在Animation菜单下,点击Button,创建一个按钮对象。
二、在Definitions视图的Events标签页,点击Event创建一个自定义事件Event1
三、回到模型,选中Button,设定其触发事件名为Event1
四、在Processes视图,点击Create Process创建一个新过程,
五、在新过程的右侧属性窗口定义TriggeringEvent Name为Event1
六、在Definitions的Elements窗口,在UserDefined下拉菜单下选择File,创建文件元素File1。
七、保存模型,在这个模型保存的目录下建一个Csv格式的Excel空文件,名为EntityLocations.csv
八、回到刚才创建的文件元素File1那边,定义File1的文件属性FilePath为EntityLocations.csv
九、在Definitions的States窗口,创建一个状态变量,选择上面的Object Reference下拉菜单,选择Entity类型,创建一个实体对象引用变量,取名为EntRef1,Dimension Type为Vector,Rows=2
十、回到Processes窗口,创建如图的过程。
十一、第一个Decide判断条件为DefaultEntity.Population.NumberInSystem>0,即系统中的实体对象个数大于0。
十二、Search的CollectionType设定为EntityPopulation,Entity Type为您模型里面的模型实体名(如DefaultEntity),Search Type:Forward(向前搜索);Limit属性设为Infinity。
十三、Search的Found分支连接Assign步骤。Assign步骤的属性定义为:State Variable Name:EntRef1;Row=1,New Value=ModelEntity。
十四、五个Decide中依次判断它当前所有可能存在的位置不为空,分别是
ModelEntity.CurrentTransporter!=Nothing;(在运输器上)
ModelEntity.IsBatchMember==True (在合并队列中)
ModelEntity.CurrentStation!=Nothing(在站点中)
ModelEntity.CurrentLink!=Nothing(在连接/路径上)
ModelEntity.CurrentNode!=Nothing(在节点上)
十五、紧跟Decide后面,创建Write步骤(在左侧Process Step面板的User Defined中有)
十六、这五个Write步骤分别对应于刚才第十四步中的每个判断语句。
十七、在Write步骤的属性窗口中,File属性则引用上文创建的自定义File1元素;在Item属性项目中,点击|...|进入重复属性编辑器,定义需要写入到刚才那个csv文件中的信息。
十八、第一个Write中,重复属性编辑器里点击Add,分别建立6个子项目。每个子项目的右侧属性窗口中的Expression属性依次输入TimeNow;ModelEntity.Name;ModelEntity.Location.X, ModelEntity.Location.Y, ModelEntity.Location.Z;ModelEntity.CurrentTransporter.Name
十九、第二个Write中,重复属性编辑器里点击Add,分别建立6个子项目。每个子项目的右侧属性窗口中的Expression属性依次输入TimeNow;ModelEntity.Name;ModelEntity.Location.X, ModelEntity.Location.Y, ModelEntity.Location.Z,Entity.BatchParent.Name
二十、第三个Write中,重复属性编辑器里点击Add,分别建立6个子项目。每个子项目的右侧属性窗口中的Expression属性依次输入TimeNow;ModelEntity.Name;ModelEntity.Location.X, ModelEntity.Location.Y, ModelEntity.Location.Z,ModelEntity.CurrentStation.Name
二十一、第四个Write中,重复属性编辑器里点击Add,分别建立6个子项目。每个子项目的右侧属性窗口中的Expression属性依次输入TimeNow;ModelEntity.Name;ModelEntity.Location.X, ModelEntity.Location.Y, ModelEntity.Location.Z,ModelEntity.CurrentLink.Name
二十二、 第五个Write中,重复属性编辑器里点击Add,分别建立6个子项目。每个子项目的右侧属性窗口中的Expression属性依次输入TimeNow;ModelEntity.Name;ModelEntity.Location.X, ModelEntity.Location.Y, ModelEntity.Location.Z,ModelEntity.CurrentNode.Name
二十三、第六个Write中,重复属性编辑器里点击Add,分别建立6个子项目。每个子项目的右侧属性窗口中的Expression属性依次输入TimeNow;ModelEntity.Name;ModelEntity.Location.X, ModelEntity.Location.Y, ModelEntity.Location.Z,String.ToUpper("In Free Space")
二十四、在每个Write后面加个EndRun步骤。
二十五、运行模型时,在需要的时刻点击Button按钮,过程逻辑会将这些输出写入到CSV表格中,然后您用EXCEL软件打开csv文件(如下图)。至此,我们已经可以获取每个实体所在的位置信息了,每个实体无所遁形(Bingo!)。
希望对您有所帮助!如有问题或索取模型请咨询我们的工程师,或在此留言。 “每日进步一点点,DAILY BITS您的SIMIO小助手!”
[img][/img]
[无锡迅合信息科技有限公司,美国SIMIO LLC中国区独家授权代理] 原创内容未经许可请勿转载和复制使用。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|