全球FlexSim系统仿真中文论坛

标题: [官网翻译]如何调试FlexSim崩溃模型 [打印本页]

作者: 漂吧    时间: 2016-12-7 12:41
标题: [官网翻译]如何调试FlexSim崩溃模型
原帖网址:https://answers.flexsim.com/ques ... -flexsim-model.html
关键词:奔溃、调试、建议、可复验的

Shankar Narayan问:
        像机械钟一样准时,在仿真时间7800秒,我的FlexSim模型突然奔溃了。
        然而,非常抱歉,我无法附上具体模型。尽管如此,任何关于调试FlexSim模型奔溃方面的建议,都将令我受益匪浅,在此,我真诚地表示感谢。

Ben Wilson 答:
        以下是标准化处理步骤:
        1)清理常见的问题或错误。在系统控制台中,是否显示了任何警告或例外?如果有,那么请基于提示信息进行跟踪追查并对其修正。此外,基于内部关联性,应对所有的错误加以修正,这其中包括与此次主题不相关的错误。
        2)将模型设置为可复验的。根据FlexSim的主菜单,打开Statistics > Repeat Random Streams。基于此功能打开的前提下,对您的模型进行保存。基于此功能,若您的模型每次奔溃的时刻并不一致,那么您的模型是不可复验的。此时,您需要根据用户手册(FlexSim Concepts / Model Repeatability)中的相关建议,去设置您的模型,最终,使得您的模型具备可复验性。
        3)寻找仿真奔溃时间。首先,您需要再次打开模型;其次,您需要设置一个仿真停止时刻(在奔溃时刻之前);最后,通过降低速度,使得模型当前运行时刻无限逼近模型奔溃时刻。
        4)达到仿真奔溃时间。根据前文找到的仿真奔溃时刻,您需要设置一个合理的仿真停止时间。举个例子,假使您的仿真奔溃时刻为7800.00,那么设置您的仿真停止时间为7799.99。当模型运行至仿真停止时刻时,您需要打开Debug > Event List,去查看一系列即将发生的事件。
        5)分步调试每一个奔溃事件。通过使用run controls' Step button,对每一个预置事件进行调试,并对执行列表中的每一个事件进行仔细观察。
        6)留意奔溃事件。在这一系列事件中,一定会存在一个引起仿真奔溃的事件。因此,希望您能够足够仔细地对其加以辨认。
        7)找到原事件(引起仿真奔溃的事件)并进行调试。重复步骤4)—5),直到定位于原事件前的一个事件。具体如何进行调试呢?如果有关于原事件的定制代码,那么请在代码中,使用断点,从而进行代码调试。
        8)追踪一个隐藏问题。如果关于这个原事件,不存在定制代码,那么请检查由此事件引发的其他事件是否存在制定代码?比如,“进入暂存区,离开暂存区,进入下一个对象流”,这一事件可以视为同一事件。请尝试同时跟踪引起FlexSim奔溃的执行路径,并回答如下问题:在同一时间,这一事件是否触发了其他事件?在这一执行路径上,是否存在定制代码?
       
        当您尝试以上步骤之后,即使您仍然没有找到问题原因,但是,您一定会对问题有一个更为细致的了解。此外,您仍然可以通过尝试将问题单独抽象成一个小模型,并将其进行发布,从而得到更为广泛的帮助。
作者: 慧娴亚伦    时间: 2016-12-10 14:29
非常有帮助的解决模型错误的提示,希望能够推广开来。
作者: wangchangping    时间: 2021-1-6 17:22
收藏了




欢迎光临 全球FlexSim系统仿真中文论坛 (http://www.flexsimasia.com/) Powered by Discuz! X3.3