




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Flexsim仿真軟件介紹從1993年起,Flexsim軟件產(chǎn)品就進(jìn)入了仿真軟件市場(chǎng)并且建立了自己的咨詢 業(yè)務(wù)。經(jīng)過(guò)十多年在仿真行業(yè)的經(jīng)驗(yàn)積累以及高新軟件技術(shù)的應(yīng)用,我們已經(jīng)開(kāi)發(fā)出了一個(gè)全新的面向?qū)ο蟮姆抡娼9ぞ逨lexsim。它是迄今為止世界上惟一一個(gè)在圖形建模環(huán)境中集成了 C+IDE和編譯器的仿真軟件。在這個(gè)軟件環(huán)境, C+不但能夠直接用來(lái)定義模型,而且不會(huì)在編譯中出現(xiàn)任何問(wèn)題。這樣,就 不再需要傳統(tǒng)的動(dòng)態(tài)鏈接庫(kù)和用戶定義變量的復(fù)雜鏈接。Flexsim有很廣闊的應(yīng)用范圍,還能應(yīng)用在更高層次的仿真工程上。歡迎大家使用Flexsim ,它一定會(huì) 令你耳目一新!Flexsim能應(yīng)用于建模、仿真
2、以及實(shí)現(xiàn)業(yè)務(wù)流程可視化。下面我們簡(jiǎn)單地介紹一 下Flexsim仿真軟件。一、建模Flexsim應(yīng)用深層開(kāi)發(fā)對(duì)象,這些對(duì)象代表著一定的活動(dòng)和排序過(guò)程。要想利用 模板里的某個(gè)對(duì)象,只需要用鼠標(biāo)把該對(duì)象從庫(kù)里拖出來(lái)放在模型視窗即可。每 一個(gè)對(duì)象都有一個(gè)坐標(biāo)(x,y,z )、速度(x,y,z ),旋轉(zhuǎn)以及一個(gè)動(dòng)態(tài)行為(時(shí) 間)。對(duì)象可以創(chuàng)建、刪除,而且可以彼此嵌套移動(dòng),它們都有自己的功能或繼 承來(lái)自其他對(duì)象的功能。這些對(duì)象的參數(shù)可以把任何制造業(yè)、物料處理和業(yè)務(wù)流程的快速、輕易、高效建模的主要特征描述出來(lái)。下圖是一個(gè)倉(cāng)庫(kù)的模型:Flexsim中的對(duì)象參數(shù)可以表示幾乎所有存在的實(shí)物對(duì)象。像機(jī)器、操作員、傳
3、送帶、叉車、倉(cāng)庫(kù)、交通燈、儲(chǔ)罐、箱子、貨盤(pán)、集裝箱等等都可以用Flexsim中的模型表示,同時(shí)數(shù)據(jù)信息也可以輕松地用 Flexsim豐富的模型庫(kù)表示出來(lái)。 層次結(jié)構(gòu)Flexsim可以讓建模者使模型構(gòu)造更具有層次結(jié)構(gòu)。在組建客戶對(duì)象的時(shí)候,每一組件都使用了繼承的方法,在建模中使用繼承結(jié)構(gòu)可以節(jié)省開(kāi)發(fā)時(shí)間。Flexsim 可以使用戶充分利用 Microsoft Visual C+的層次體系特性。用戶化目前在市場(chǎng)上,還沒(méi)有其他任何仿真軟件能像Flexsim這樣有更多的用戶化設(shè)定。對(duì)使用者來(lái)說(shuō),軟件的每一個(gè)方面都是開(kāi)放式的。對(duì)象、視窗、圖形用戶界 面、菜單、選擇列表和對(duì)象參數(shù)等都是非常直觀的。你可以在
4、對(duì)象中根據(jù)自己的想法改變已經(jīng)存在的 代碼,刪除不需要的代碼,甚至還可以創(chuàng)建全新的對(duì)象。 值 得一提的是,不論是你設(shè)定的還是新創(chuàng)建的對(duì)象都可以放入庫(kù)中,而且可以應(yīng)用 在別的模型中。最重要的是,在 Flexsim中可以用C+語(yǔ)言創(chuàng)建和修改對(duì)象, 同時(shí),利用C+可以控制對(duì)象的行為活動(dòng)。Flexsim的界面、按鈕條、菜單、 圖形用戶界面等都是由預(yù)編譯的 C+庫(kù)來(lái)控制的。可移植性由于Flexsim中的對(duì)象都是開(kāi)放的,因此這些對(duì)象可以在不同的用戶、庫(kù)和模 型之間進(jìn)行交換,同時(shí)結(jié)合對(duì)象的高度可自定義性,可以大大提高建模的速度。 當(dāng)用戶自定義的對(duì)象加入庫(kù)中時(shí),就可以非常方便的在別的模型中使用該對(duì)象。 由此可見(jiàn)
5、,用戶化和可移植性擴(kuò)展了對(duì)象和模型的生命周期。二、仿真Flexsim中有一個(gè)效率非常高的仿真引擎,該引擎可同時(shí)運(yùn)行仿真和模型視窗(可視化),但可以通過(guò)關(guān)閉模型視窗來(lái)加速仿真的運(yùn)行速度。同時(shí)當(dāng)仿真運(yùn)行時(shí),利用該引擎和flexscript語(yǔ)言可以改變模型的部分屬性。下圖是仿真原材料的傳輸過(guò)程:Flexsim還可以用試驗(yàn)的形式來(lái)仿真假定的情節(jié),而且它可以自動(dòng)運(yùn)行并把結(jié)果 存在報(bào)告、圖表中。這樣我們可以非常方便地利用豐富的預(yù)定義和自定義的行為 指示器,像用處、生產(chǎn)量、研制周期、費(fèi)用等來(lái)分析每一個(gè)情節(jié)。而且也很容易 將結(jié)果導(dǎo)入到別的應(yīng)用程序像 Microsoft Word 和Excel等,利用ODBC
6、(開(kāi) 放式數(shù)據(jù)庫(kù)連接)和DDEC (動(dòng)態(tài)數(shù)據(jù)交換連接)可以直接輸入仿真數(shù)據(jù)。三、可視化如果一幅圖能夠表達(dá)上千的文字,那么 Flexsim的虛擬現(xiàn)實(shí)動(dòng)畫(huà)以及模型瀏覽 窗口就表達(dá)了無(wú)限的容量。Flexsim把所有最新的虛擬現(xiàn)實(shí)博奕圖形整合在個(gè)人 計(jì)算機(jī)上。Flexsim 中有可以直接導(dǎo)入 3DS (3D Studio), VRML,3D DXF and STL等類型文件的選項(xiàng),而其他仿真軟件中沒(méi)有這項(xiàng)功能。Flexsim內(nèi)置了虛擬現(xiàn)實(shí)瀏覽窗口,可以讓用戶添加光源、霧以及虛擬現(xiàn)實(shí)立體技術(shù)。用戶定義的“ FlyThroughs ”可以被定義為藝術(shù)模型狀態(tài)顯示出來(lái)。AVI文件可以通過(guò)Flexsim的AV
7、I錄制器快速生成。任何模型都能被錄制、拷貝到CD,以及發(fā)送 到任何人的實(shí)時(shí)查看器中。七、輸入和輸出1)輸出:Flexsim具有強(qiáng)力的商務(wù)圖表功能,海圖(Charts)、餅圖、直線圖表 和3D文書(shū)能盡情地表現(xiàn)模型的情報(bào),需要的結(jié)果可以隨時(shí)提出。 Flexsim的 open architecture 允許用戶連接OBDC數(shù)據(jù)源、進(jìn)行讀和寫(xiě),可以實(shí)時(shí)的連 接Word和Excel。對(duì)于Flexsim 模型,為便于在Flexsim 系統(tǒng)之外觀看和演示,系統(tǒng)提供了 AVI轉(zhuǎn)換功能:可以將模型的3D效果轉(zhuǎn)換成AVI格式。2)輸入:Flexsim 的模型中的3D圖形可以是所有符合 OpenGL規(guī)范的3D圖 形
8、,比如:*wrl; *3ds; *dxf; *.stl等。八、應(yīng)用領(lǐng)域Flexsim是一款建模應(yīng)用軟件,可以用于對(duì)任何商業(yè)流程,包括制造、物流、 管 理等等的仿真和可視化。尤其適合于流水線(研發(fā)、生產(chǎn)制造、銷售展示、工程 規(guī)劃、生產(chǎn)管理分析)、物流設(shè)備(研發(fā)、生產(chǎn)制造、銷售展示、工程規(guī)劃、性 能分析)、物流與配送(工程布局規(guī)劃、性能分析)等。Flexsim的理念就是柔性。無(wú)論是建模對(duì)象、視圖、圖形用戶界面,還是你能想 到的許許多多其他構(gòu)件,在 Flexsim中都可以完全用戶化。1 Flexsim系統(tǒng)仿真軟件概況Flexsim 是PC Base的數(shù)字虛擬企業(yè)的仿真系統(tǒng),來(lái)建立各種經(jīng) 營(yíng)、管理、制
9、造等模型,并且可在微軟公司的 Windows2000、Windows XP及Vista等不同作業(yè)平臺(tái)上執(zhí)行的全窗口化3D專業(yè)仿真軟件。Flexsim是新一代的面向?qū)ο蟮姆抡娼9ぞ?,它是迄今為止世界?唯一一個(gè)在圖形建模環(huán)境中集成了C+IDE和編譯器的仿真軟件。在這個(gè)軟件環(huán)境,C+不但能夠直接用來(lái)定義模型,而且不會(huì)在編譯中 出現(xiàn)任何問(wèn)題。這樣就不再需要傳統(tǒng)的動(dòng)態(tài)鏈接庫(kù)和用戶定義變量的 復(fù)雜鏈接。它能使決策者輕易地在個(gè)人電腦中建構(gòu)及監(jiān)控任何工業(yè)及 企業(yè)的分散式流程。透過(guò)Flexsim我們可以率先找出未來(lái)工業(yè)及企業(yè) 流程的模式。Flexsim基礎(chǔ)架構(gòu)設(shè)計(jì)不只是要滿足使用者現(xiàn)今的需求, 其架構(gòu)的概念
10、更是為了企業(yè)的未來(lái)而準(zhǔn)備。Flexsim就是幫助工程師,經(jīng)理和決策者形象化地在動(dòng)態(tài)三維 虛擬現(xiàn)實(shí)環(huán)境中檢測(cè)新提議的操作, 流程或是系統(tǒng)。 這對(duì)于創(chuàng)建那些 可能出現(xiàn)崩潰, 發(fā)生中斷或是產(chǎn)生瓶頸的復(fù)雜系統(tǒng)是必不可少的。 通 過(guò)預(yù)先創(chuàng)建系統(tǒng)模型, 可以考察各種假設(shè)的場(chǎng)景, 同時(shí)不會(huì)產(chǎn)生改變 實(shí)際系統(tǒng)時(shí)所面臨的中斷,成本和風(fēng)險(xiǎn)。Flexsim 不僅已應(yīng)用于工業(yè)自動(dòng)化仿真、物流中心配送仿真、 交通運(yùn)輸仿真、交通流量管制仿真、醫(yī)療管理研究、醫(yī)院動(dòng)線規(guī)劃仿 真等民用工程, 也已經(jīng)應(yīng)用于先進(jìn)國(guó)防戰(zhàn)略仿真、 航天制程仿真等大 型研究方向。主要的應(yīng)用領(lǐng)域:制造業(yè): 半導(dǎo)體芯片制造、肉食包裝工廠中的牛肉處理、鋼鐵制
11、造、果醬成 品的罐裝,標(biāo)簽,包裝,發(fā)貨、電子器件制造、倉(cāng)儲(chǔ)和配送: 港口集裝箱船只的裝卸、配送中心操作、訂單取貨、傳輸帶系統(tǒng) 和布局、物流貨架、傳送帶和堆垛機(jī)。運(yùn)輸: 高速路交界處的交通流、火車站中人群和列車的移動(dòng)、河流中駁 船的往來(lái)穿梭、國(guó)際邊防路口的交通堵塞其他:礦石開(kāi)采和加工、快餐店中食物準(zhǔn)備和客戶服務(wù)、參觀者在娛樂(lè) 場(chǎng)所內(nèi)的活動(dòng)、噴氣式飛機(jī)引擎的拆卸,翻新和更換、醫(yī)院中病 人和食物的處理、共享的網(wǎng)絡(luò)存儲(chǔ)器中數(shù)據(jù)的流動(dòng)、銀行處理中心中支票的處理2 Flexsim仿真功能2.1 Flexsim建模的功能1) Flexsim具有離散型和連續(xù)型的混合建模功能。軟件本身 更多的是離散型仿真方面應(yīng)
12、用,但它支持連續(xù)型生產(chǎn)建 模,它有專門(mén)的流體部件庫(kù),有很多應(yīng)用于煉鋼廠、塗料 生產(chǎn)廠及石油輸送的成功案例。圖-1 Flexsim 連續(xù)型生產(chǎn)模型之一2) Flexsim提供平面與三維建模窗口,可以直接將AutoCAD的平面布置圖導(dǎo)入建模窗口,可完全遵循平面布置圖的距離關(guān)系建立平面模型,平面模型只要換一個(gè)窗口,或換一個(gè)角度就是三維模型,建立二維模型的同時(shí),同步自動(dòng)生成三維模型,不需要將二維模型轉(zhuǎn)為三維模型的操作。同樣,也可以直接在三維建模窗口建立模型,二維模型同步自動(dòng)生成。二/三維建模完全同步關(guān)聯(lián)。圖-2 AutoCAD的平面布置圖上建模3) Flexsim提供的部件具有相當(dāng)?shù)娜犴g性,部件的參數(shù)
13、設(shè)定可適應(yīng)于不同層次的使用者,對(duì)于剛?cè)腴T(mén)的使用者,F(xiàn)lexsim提供了制造業(yè)和物流業(yè)常見(jiàn)策略,用戶只需要選擇和修改 數(shù)據(jù),就可以實(shí)現(xiàn)先進(jìn)先出、先進(jìn)后出、隨機(jī)出入、百分 比出入、統(tǒng)計(jì)概率出入、最長(zhǎng)隊(duì)列出入、最短隊(duì)列出入、 按品種出入、按標(biāo)簽出入等出入庫(kù)策略,無(wú)需編程。對(duì)于 使用熟練者,可以直接用C+編程,實(shí)現(xiàn)更復(fù)雜的有特殊需 求的出入庫(kù)策略,每個(gè)部件都有 C+編程接口。4) Flexsim用拖放圖形方法建立模型,F(xiàn)lexsim提供有固定類部件庫(kù),執(zhí)行類部件庫(kù),流體類部件庫(kù),以及用戶部件庫(kù)。建模時(shí)將相應(yīng)的部件拖放到模型窗口的指定位置。Flexsim允許用戶開(kāi)發(fā)自己的部件并建立自己的部件庫(kù),對(duì)于使用
14、 熟練者用戶可以手工編制代碼來(lái)建模。5) Flexsim 具有完全的 C+面向?qū)ο?object-oriented) 性。6) Flexsim所有模型均建立和運(yùn)行于耀眼的彩色 3D中,采用 了與先進(jìn)的視頻游戲相同的虛擬現(xiàn)實(shí)技術(shù)。-通過(guò)簡(jiǎn)單的點(diǎn)擊和拖動(dòng),可從任何角度觀看模型。-通過(guò)“飛行漫游模塊”,用戶可隨鏡頭漫游整個(gè)模型運(yùn) 行狀況。可以任意使用全景、局部放大、側(cè)面、反面等漫 游技巧。-多個(gè)窗口可以設(shè)置不同的視角,仿真運(yùn)行時(shí),以便同時(shí) 觀察系統(tǒng)的各部分。實(shí)現(xiàn)模型的規(guī)模化展現(xiàn)。圖-3大規(guī)模模型全景模型的第二層情景模型的第一層情景7) Flexsim能利用包括最新的虛擬現(xiàn)實(shí)圖形在內(nèi)的所有PC上可用的
15、圖形。如果是擴(kuò)展名為3DSVRMLDXF和STL的3D立體圖形文件的話,可以直接導(dǎo)入 Flexsim模型中,模型中的任何部件或背景都可以通過(guò)導(dǎo)入圖片或立體圖形文件的方法替換部件或背景的圖片或立體圖形。圖-4 Flexsim模型8) Flexsim是世界唯一的在圖形的模型環(huán)境中應(yīng)用C+IDE和編譯程序的仿真軟件。定義模型邏輯時(shí),可直接使用 C+ 而且可立刻編譯到Flexsim 中。因?yàn)镕lexsim具有高度的 開(kāi)放性和柔韌性,所以能為幾乎所有產(chǎn)業(yè)定制特定的模型。9) 有Flexsim版本3.0的中文版。最新版本沒(méi)有中文版,是 英文版,但軟件本身在建模環(huán)境中能輸入中文字符,在仿 真運(yùn)行環(huán)境中能以標(biāo)
16、簽或表格形式顯示中文信息等。K AjHII i打>"“0*£«>or IDITE3EEI3D11鮎“訶削白,. _|口 l X圖-5 Flexsim 最新版報(bào)表中顯示的中文信息10) Flexsim盡管能同時(shí)打開(kāi)多個(gè)窗口,但模型是在集成統(tǒng)一的開(kāi)發(fā)環(huán)境中,這種開(kāi)發(fā)環(huán)境具有兩種表現(xiàn)形式,一種是3D或2D的視景環(huán)境,一種是樹(shù)結(jié)構(gòu)的純文本環(huán)境。它是同一個(gè)東西,不同表現(xiàn)形式,方便建模和調(diào)試。 Flexsim 建模環(huán)境同時(shí)支持仿真模型的運(yùn)行、調(diào)試等功能。11)Flexsim全部模塊是在Windows系列版本的操作系統(tǒng)上 運(yùn)行,包括 Windows 2000 各版本
17、、 Windows XP 各版本、Windows 2003各版本以及 Windows Vista 各版本。軟件操作風(fēng)格上具備典型的 Win dows操作風(fēng)格,具備菜單、工具 條以及復(fù)制、粘貼等操作。12)Flexsim 提供較為詳細(xì)的通用格式的技術(shù)幫助文件(文 件格式為*HTML)。在軟件中也有幫助菜單,有查詢功能。13)開(kāi)放性和互聯(lián)性是 Flexsim 體系架構(gòu)的一個(gè)特點(diǎn)。Flexsim 完全與 C+ 相結(jié)合,用戶可以隨時(shí)修改 Flexsim 滿足其特定需求, 而不必學(xué)習(xí)專有代碼。 Flexsim 能夠鏈接到任何ODB(數(shù)據(jù)庫(kù)(像Oracle.or Access.)和大眾數(shù)據(jù) 結(jié)構(gòu)文件(如
18、text, Excel, 或 Word) 。創(chuàng)時(shí)能公司能夠提 供仿真與用戶異構(gòu)平臺(tái)的接口。2.2 Flexsim 的分析優(yōu)化的功能1)Flexsim 建立模型的所有資源是對(duì)象 (Objects ),對(duì)象可以 是產(chǎn)品,模型,圖表,記錄,庫(kù),GUI,甚至是應(yīng)用程序本 身。而 Flexsim 的對(duì)象都可以向定制的用戶公開(kāi),建模人 員可以自由地操作部件、圖形用戶界面、菜單、選擇列表 和部件參數(shù),可以在部件里增加自定義的邏輯、改變或刪掉既存的編碼。所以當(dāng)然允許用戶根據(jù)實(shí)際需求來(lái)自定義統(tǒng)計(jì)分析報(bào)表。Flexsim在仿真過(guò)程中,能根據(jù)仿真進(jìn)度動(dòng)態(tài)顯示2D和3D報(bào)表數(shù)據(jù)。圖-7 3D報(bào)表實(shí)時(shí)顯示報(bào)表數(shù)據(jù)2)
19、Flexsim仿真的統(tǒng)計(jì)分析數(shù)據(jù)除在仿真運(yùn)行環(huán)境內(nèi)顯示外, 可以直接導(dǎo)出EXCEL和文本文件形式的報(bào)表,提供數(shù)據(jù)庫(kù) 以自定義表形式儲(chǔ)存報(bào)表。3) Flexsim在模型運(yùn)行過(guò)程中記錄了所有設(shè)備的所有狀態(tài)(工作、等待、阻塞、故障等)的時(shí)間數(shù)值,以及設(shè)備加工產(chǎn) 品的個(gè)數(shù),用戶可以自由組合和輸出由這些數(shù)據(jù)組成的報(bào) 表。當(dāng)然提供包括設(shè)備利用率、單條模型生產(chǎn)線的加工總 能力、單個(gè)設(shè)備的加工能力、設(shè)備狀態(tài)的時(shí)長(zhǎng)及時(shí)間比例、 模型瓶頸分析等統(tǒng)計(jì)分析功能。UIHj g mjclL/bviJcI/Ofei a-lvc D172K9JG4 N >«!E Hla/jrC miE/jrC !. Q
20、74;®IE圖-8 Flexsim 提供的設(shè)備狀態(tài)餅圖4)Flexsim提供平面和立體餅圖、柱狀圖、折線圖、海圖、以 及甘特圖等多種圖形圖表,支持?jǐn)?shù)據(jù)與圖表混合的統(tǒng)計(jì)報(bào) 表(如上圖)。5)優(yōu)化模塊Optquest完全集成于Flexsim中,Optquest用于仿真優(yōu)化,即找尋一組最佳的參數(shù)值(或決策變量值),以 使得目標(biāo)函數(shù)最優(yōu),在仿真模型中執(zhí)行優(yōu)化功能。由于在 Flexsim中除了模型本身外、模型中的每個(gè)部件都提供了編 寫(xiě)VC+程序的接口,所以當(dāng)然支持嵌入自定義的優(yōu)化算法。2.3 Flexsim的其它功能1)層次結(jié)構(gòu)Flexsim可以讓建模者使模型構(gòu)造更具有層次結(jié)構(gòu)。建立模型的時(shí)候
21、,每一部件都使用繼承的方法(即采 用繼承結(jié)構(gòu)),可以節(jié)省開(kāi)發(fā)時(shí)間。Flexsim可以讓用戶充 分利用Microsoft Visual C+的層次體系特性。2)量身定制 軟件的所有可視窗體都可以向定制的用戶公開(kāi)。建模人員可以自由地操作部件、視窗、圖形用戶界面、菜單、選擇列表和部件參數(shù),可以在部件里增加自定義的邏輯、改變或刪掉既存的編碼,也可以從零開(kāi)始完全建立一 個(gè)新的部件。不論是設(shè)定的還是新創(chuàng)建的部件都可以保存 到部件庫(kù)中,而且可以應(yīng)用在其它模型中。最重要的是, 在Flexsim中可以用C+語(yǔ)言創(chuàng)建和修改部件,同時(shí),利 用C+可以控制部件的行為活動(dòng)。Flexsim的界面、按鈕 條、菜單、圖形用戶
22、界面等都是由預(yù)編譯的C+庫(kù)來(lái)控制的。3)可移植性 因?yàn)?Flexsim 的部件是向建模者公開(kāi)的,所以 部件可以在不同的用戶、庫(kù)和模型之間進(jìn)行交換。可移植 性與量身定制相結(jié)合能帶來(lái)驚異的建模速度。定制的部件 保存在部件庫(kù)中, 建模時(shí),只要從部件庫(kù)中拖放相應(yīng)部件, 就能在新模型中再現(xiàn)這些部件??梢浦残耘c量身定制延長(zhǎng) 了部件和模型雙方的生命周期。4)仿真實(shí)驗(yàn) Flexsim 能一次進(jìn)行多套方案的仿真實(shí)驗(yàn)。這些方案能自動(dòng)進(jìn)行,其結(jié)果存放在報(bào)告、圖表里,這樣我 們可以非常方便地利用豐富的預(yù)定義和自定義的行為指 示器,像用處、生產(chǎn)量、研制周期、費(fèi)用等來(lái)分析每一個(gè) 情節(jié)。同時(shí)很容易的把結(jié)果輸出到象微軟的Wo
23、rd、 Excel等大眾應(yīng)用軟件里,利用ODB(開(kāi)放式數(shù)據(jù)庫(kù)連接)和DDE(C 動(dòng)態(tài)數(shù)據(jù)交換連接)可以直接對(duì)數(shù)據(jù)庫(kù)進(jìn)行讀寫(xiě)數(shù) 據(jù)。5)統(tǒng)計(jì)分析 自帶隨機(jī)變量發(fā)生器,能容易地建立近似于現(xiàn)實(shí)系統(tǒng)的數(shù)學(xué)模型。提供了 25種以上的統(tǒng)計(jì)分布函數(shù),集成了 ExpertFit,具有擬合統(tǒng)計(jì)分布函數(shù)的功能。技術(shù)支持:Flexsim中國(guó)唯一代理商 北京創(chuàng)時(shí)能科技發(fā)展有限公司第五章Flexsim相關(guān)的概念及關(guān)鍵技術(shù)研究5.1 Flexsim軟件介紹Flexsim是由美國(guó)的 Flexsim Software Production公司出品的,是一款商業(yè)化離散事件系 統(tǒng)仿真軟件。Flexsim采用面向?qū)ο蠹夹g(shù),并具有三
24、維顯示功能。建??旖莘奖愫惋@示能力 強(qiáng)大是該軟件的重要特點(diǎn)。該軟件體供了原始數(shù)據(jù)擬合、輸入建模、圖形化的模型構(gòu)建、虛擬現(xiàn)實(shí)顯示、運(yùn)行模型進(jìn)行仿真試驗(yàn)、對(duì)結(jié)果進(jìn)行優(yōu)化、生成3D動(dòng)畫(huà)影像文件等功能,也提供了與其他工具軟件的接口。圖5-1是Flexsim軟件及其構(gòu)成模塊的結(jié)構(gòu)圖。輸入建模系統(tǒng)仿真運(yùn)行仿真試驗(yàn)結(jié)果統(tǒng)計(jì)分析Flexsim提供了仿真模型與ExpertFit和Excel的接口,用戶可以同過(guò)ExperFit對(duì)輸入數(shù)據(jù)進(jìn)行分布擬合,同時(shí)可以在Excel中方面地實(shí)現(xiàn)和仿真模型之間的數(shù)據(jù)交換,包括輸出和運(yùn)行模型過(guò)程中動(dòng)態(tài)修改運(yùn)行參數(shù)等。另外該軟件還提供了優(yōu)化模塊Optquest,增加了幫助迅速建模的
25、 Microsoft Visio 的接口。5.1.1 Flexsim 軟件的主要特點(diǎn)Flexsim 仿真軟件的特點(diǎn)主要體現(xiàn)在采用面向?qū)ο蠹夹g(shù),突出 3D 顯示效果,建模和調(diào) 試簡(jiǎn)單開(kāi)放方便,模型的擴(kuò)展性強(qiáng),易于和其他軟件配合使用等方面。( 1) 基于面向?qū)ο蠹夹g(shù)建模Flexsim 中所有用來(lái)建立模型的資源都是對(duì)象,包括模型、表格、記錄、 GUI 等。同時(shí), 用戶可以根據(jù)自己行業(yè)和領(lǐng)域特點(diǎn), 擴(kuò)展對(duì)象, 構(gòu)建自己的對(duì)象庫(kù)。 面向?qū)ο蟮慕<夹g(shù)使 得 Flexsim 的建模過(guò)程生產(chǎn)線化,對(duì)象可以重復(fù)利用,從而減少了建模人員的重復(fù)勞動(dòng)。( 2) 突出的 3D 圖形顯示功能Flexsim 支持 Ope
26、nGL 技術(shù),也支持 3ds、 wrl 、dxf 和 stl 等文件格式。因此用戶可以建 立逼真的模型, 從而可以幫助用戶對(duì)模型有一個(gè)直觀的認(rèn)識(shí), 并幫助模型的驗(yàn)證。 用戶可以 在仿真環(huán)境下很容易地操控 3D 模型,從不同角度、放大或縮小來(lái)觀測(cè)。( 3) 建模和調(diào)試的方便建模過(guò)程中用戶只需要從模型庫(kù)中拖入已有的模型, 根據(jù)模型的邏輯關(guān)系進(jìn)行連接, 然 后設(shè)定不同對(duì)象的屬性。建模的工作簡(jiǎn)單快捷,不需要編寫(xiě)程序。( 4) 建模的擴(kuò)展性強(qiáng)Flexsim 支持建立用戶定制對(duì)象,融合了 C+ 編程。用戶完全可以將其當(dāng)作一個(gè) C+ 的 開(kāi)發(fā)平臺(tái)來(lái)開(kāi)發(fā)一定的仿真應(yīng)用程序。( 5) 開(kāi)放性好提供了與外部軟件的
27、接口,可以通過(guò) ODBC 與外部數(shù)據(jù)庫(kù)相連,通過(guò) socket 接口與外 部硬件設(shè)備相連,與 Excel 、Visio 等軟件配合使用。5.2 Flexsim 的一些重要概念Flexsim 是目前國(guó)內(nèi)最新的仿真軟件,關(guān)于該軟件的資料和使用經(jīng)驗(yàn)還很少。作者是在不斷的摸索中學(xué)習(xí)的,所以希望本文能對(duì)其他人有一定的借鑒。要完全掌握好Flexsim,并將其用到我們的工作、 學(xué)習(xí)和研究當(dāng)中, 理解該軟件的一些重要概念和思想是很重要的, 本 節(jié)針對(duì)集裝箱碼頭建模仿真中用到的技術(shù)做一個(gè)梳理。5.2.1 面向?qū)ο蟮乃枷胂鄬?duì)于目前的一些仿真軟件 (如 Witness, eM-Plant 等), Flexsim 是
28、采用面向?qū)ο笏枷牒图夹g(shù)開(kāi)發(fā)的,其本身更是用C+語(yǔ)言實(shí)現(xiàn)。嚴(yán)格地說(shuō)該仿真軟件包括了兩部分,仿真軟件和后臺(tái)支持環(huán)境 VC+.NET。由于C+是一種面向?qū)ο蟮恼Z(yǔ)言,所以使用Flexsim軟件,從用戶用于系統(tǒng)建模,或是做一些二次開(kāi)發(fā),這些工作都有面向?qū)ο笏枷氲捏w現(xiàn)。可以這樣說(shuō), 沒(méi)有領(lǐng)會(huì)面向?qū)ο蟮乃枷?,就不能完全發(fā)揮 Flexsim 軟件本身的特點(diǎn),也就不能用其實(shí)現(xiàn)用 戶的目的。使用 Flexsim軟件的用戶需要對(duì)C+語(yǔ)言有一定程度的熟悉。本節(jié)主要是解釋Flexsim中所特有的一些面向?qū)ο笏枷?,而不涉及面向?qū)ο笳Z(yǔ)言的解釋(關(guān)于C+語(yǔ)言的知識(shí)請(qǐng)查看相關(guān)書(shū)籍) 。對(duì)象(Object )的概念在Flexsi
29、m軟件中無(wú)處不在,我們先直觀的感受一下。軟件的運(yùn) 行界面左邊是一個(gè)常用的對(duì)象庫(kù)(如圖 5-1)。庫(kù)中的各種部件就是有特定功能的對(duì)象,這 些對(duì)象是軟件本身自帶的, 使用這些基本的部件對(duì)象用戶可以完成大多數(shù)的仿真工作。我們使用 Processor 來(lái)解釋一下對(duì)象的概念:我們?nèi)粘K?jiàn)的任何具體事物都可看作是對(duì)象,這 里 Processor 就是一種設(shè)備,它的作用就是對(duì)經(jīng)過(guò)他的物件進(jìn)行一些加工,即改變物件的狀 態(tài)。這里我們可以將其當(dāng)作現(xiàn)實(shí)中的設(shè)備,如機(jī)床等。圖5-1這里我們借用C+程序設(shè)計(jì)語(yǔ)言中的對(duì)象的概念。對(duì)象是類的實(shí)例,類是對(duì)現(xiàn)實(shí)對(duì)象的抽象。類中包含了對(duì)象的數(shù)據(jù)(相當(dāng)于現(xiàn)實(shí)對(duì)象的狀態(tài)),以及對(duì)象的
30、方法(相當(dāng)于現(xiàn)實(shí)對(duì)象用來(lái)處理外界所給信息的方法)。對(duì)象封裝了屬性和方法,進(jìn)一步到Flexsim中,對(duì)于軟件中可用的庫(kù)對(duì)象,他們本身有自己的屬性(如顏色,尺寸,位置等),還有處理物件的方法。在使用軟件的過(guò)程中,我們完全可以以人們平時(shí)的思維方式來(lái)思考,而無(wú)須過(guò)多的抽象化,這也就是面向?qū)ο蠓椒ǖ膬?yōu)點(diǎn)。5.2.2 Flexsim的對(duì)象層次結(jié)構(gòu)面向?qū)ο蠓椒ǖ囊粋€(gè)優(yōu)點(diǎn)是類與類之間可以有繼承關(guān)系,對(duì)象的繼承性給我們提供了更大的柔性來(lái)擴(kuò)展我們自己的對(duì)象,即衍生出新的對(duì)象。在 Flexsim中我們可以充分利用繼承 性來(lái)開(kāi)發(fā)我們自己的對(duì)象,而軟件本身也給用戶提供了這樣的機(jī)制。Flexsim本身的庫(kù)對(duì)象是高度抽象化
31、的,具有很強(qiáng)的通用性,幾乎涵蓋了仿真中可能遇到的所有對(duì)象。這些對(duì)象之間有一定的繼承關(guān)系,他們之間存在著邏輯關(guān)系。下圖(圖5-2)是Flexsim中對(duì)象的層次結(jié)構(gòu)。FlexsimObjectFixedResourceLjrDispatcherNavigatorrNetworkNodeSourceTaskExecuterNetworkNavigatorLQueuekOperatorrCran eNavigatorrrSi nkConveyorTran spoterCraneRackASRSvehicleReservoirFixedSourceTemplateUserDefi ne1. K. . a
32、. . iA. gProcessor-UserDefineICombi nerrSeparator圖5-2Flexsim中各種對(duì)象的邏輯關(guān)系一目了然。對(duì)象庫(kù)中的FixedResource中派生下來(lái)的,另一種是TaskExecuter中派生下來(lái)從類的派生關(guān)系圖中我們可以對(duì) 對(duì)象分為兩種,一種是從 的。通過(guò)分析我們不難發(fā)現(xiàn),從FixedResource中派生來(lái)的對(duì)象有一個(gè)共同的特點(diǎn),其本身是不會(huì)運(yùn)動(dòng)的,他們的作用只是產(chǎn)生或消除物件、存儲(chǔ)物件、加工物件等等;從TaskExecuter中派生的對(duì)象,其本身是可以運(yùn)動(dòng)的,其作用是將物件從一個(gè)地點(diǎn)運(yùn)送到另一個(gè)地點(diǎn)。當(dāng)現(xiàn)有的庫(kù)對(duì)象不能滿足用戶的需要時(shí),用戶就
33、需要?jiǎng)?chuàng)建自己的對(duì)象。Flexsim為用戶提供了這樣一種機(jī)制一一用戶可以定制自己的庫(kù)對(duì)象。在對(duì)象層次圖中,我們看到有兩個(gè)虛線框,這表示用戶可以從 FixedResource和TaskExecuter中派生出自己的對(duì)象。Flexsim的早期版本中從這兩個(gè)類中派生新的對(duì)象比較復(fù)雜,最新的3.06版中增加了 BasicFR和BasicTE類,使用戶的開(kāi)發(fā)工作更容易。后面的章節(jié)中將具體介紹怎樣來(lái)實(shí)現(xiàn)一個(gè)新對(duì)象的定制。5.2.3節(jié)點(diǎn)和樹(shù)在介紹樹(shù)結(jié)構(gòu)之前,我們先來(lái)了解Flexsim中節(jié)點(diǎn)(node)的概念。節(jié)點(diǎn)是樹(shù)結(jié)構(gòu)的最基本的組成單元,他們組成了鏈接的層次。所有的節(jié)點(diǎn)都有一個(gè)文本緩沖區(qū),用來(lái)保存節(jié)點(diǎn)的名字
34、。節(jié)點(diǎn)可以是其他節(jié)點(diǎn)的容器,可以是用來(lái)定義一個(gè)對(duì)象屬性的關(guān)鍵字,或是擁有一個(gè)數(shù)據(jù)項(xiàng)。屬于一個(gè)節(jié)點(diǎn)的數(shù)據(jù)項(xiàng)類型可能是:數(shù)值(number),字符串(string),對(duì)象(object),或指針(pointer)。下面列出FLexsim 中不冋類型的節(jié)點(diǎn)標(biāo)志: 標(biāo)準(zhǔn)(Standard ):o對(duì)象(Object ):0?屬性 / 變量(Attribute/Varibale):0函數(shù)(Function(C+):回函數(shù)(Function(FlexScript)):用戶可以在對(duì)象的樹(shù)結(jié)構(gòu)中任意地操作節(jié)點(diǎn),例如增加節(jié)點(diǎn),刪除節(jié)點(diǎn),改變節(jié)點(diǎn)所包含的值等。含有對(duì)象數(shù)據(jù)(Object)的節(jié)點(diǎn)可能包含有節(jié)點(diǎn)的子列表
35、。含有對(duì)象數(shù)據(jù)的節(jié)點(diǎn)稱之為對(duì)象節(jié)點(diǎn)。當(dāng)你單擊一個(gè)對(duì)象節(jié)點(diǎn)時(shí),你會(huì)看到在節(jié)點(diǎn)的左邊有一個(gè)大于號(hào)()。+按鈕來(lái)展開(kāi)。如果單擊將打開(kāi)對(duì)象數(shù)據(jù)的樹(shù)分支。如果一個(gè)節(jié)點(diǎn)包含子節(jié)點(diǎn),可以按下一個(gè)節(jié)點(diǎn)包含對(duì)象數(shù)據(jù),可以按下來(lái)展開(kāi)。F圖(圖5-3 )展示了一個(gè)隊(duì)列(Queue )展開(kāi)的對(duì)象數(shù)據(jù)樹(shù)。QueueObject莊| Q|superclasses0 c *1占需電w田 ria ties 圧J Q behjvioui*S 0special田 Qvisual田 QspatijlQ centre idl1.00田 Q objectinfo圖5-3樹(shù)結(jié)構(gòu)(tree)是一種很常用的數(shù)據(jù)結(jié)構(gòu)。Flexsim仿真模型中
36、的對(duì)象,或?qū)ο笾械膶傩院头椒ü?jié)點(diǎn)等都是樹(shù)結(jié)構(gòu);用戶甚至可以直接在樹(shù)結(jié)構(gòu)中操作對(duì)象。在Flexsim中有兩個(gè)主要的對(duì)象類型:模型(Model)或仿真對(duì)象(Simulation Object )和視圖對(duì)象(View Object )。 兩種類型都有對(duì)象數(shù)據(jù)樹(shù),包含了屬性和行為控件。一個(gè)對(duì)象節(jié)點(diǎn)的對(duì)象數(shù)據(jù)樹(shù)中的節(jié)點(diǎn)可 以作為屬性、變量或成員函數(shù)。也有只是作為簡(jiǎn)單的容器來(lái)包含節(jié)點(diǎn)以達(dá)到組織的目的。5.2.4任務(wù)序列任務(wù)序列(Task Sequences)是Flexsim仿真軟件中的核心機(jī)制。各種復(fù)雜仿真的實(shí)現(xiàn) 很大程度取決于怎樣實(shí)現(xiàn)任務(wù)序列。前面介紹了Flexsim中有兩種對(duì)象,一種是派生至Fixed
37、Resource的靜態(tài)對(duì)象(即對(duì)象本身不運(yùn)動(dòng));另一種是派生至 TaskExecuter的動(dòng)態(tài)對(duì)象(即對(duì)象本身可運(yùn)動(dòng))。如果用戶建立的系統(tǒng)模型全部使用了靜態(tài)對(duì)象,那么就不需要任務(wù) 序列的機(jī)制,但是這種情況幾乎沒(méi)有。使用動(dòng)態(tài)對(duì)象搬運(yùn)物件,對(duì)象怎樣運(yùn)動(dòng),實(shí)現(xiàn)什么樣 的功能等,這就需要任務(wù)序列來(lái)控制。任務(wù)序列是由TaskExecuter執(zhí)行的一組命令序列。這里TaskExecuter涵蓋了所有派生自 他的動(dòng)態(tài)對(duì)象,如 Operators,Transpoters, Crane,ASRSvehicle , Robots, Elevators 以及其 他可運(yùn)動(dòng)的對(duì)象。圖1-4表示一個(gè)任務(wù)序列,該任務(wù)序列有
38、多個(gè)任務(wù)組成。Simulation TimeP1P2TasklTask2Task3Task4P1: Priority ValueP2: Preempt Value圖1-4Flexsim 中為用戶提供了功能齊備的任務(wù)類型。常用的任務(wù)序列有: TASKTYPE_TRA VEL 、 TASKTYPE_LOAD 、 TASKTYPE_UNLOAD 、 TASKTYPE_TRA VELTOLOC等。不同的任務(wù)序列有不同的設(shè)置參數(shù),用戶可以根據(jù)需要在使用的時(shí)候查詢幫助文檔。524.1默認(rèn)任務(wù)序列FixedResource為了將物件(item)移至下一個(gè)站點(diǎn)(station),有一個(gè)創(chuàng)建任務(wù)序列的 默認(rèn)機(jī)制
39、。FixedResource對(duì)象的參數(shù)對(duì)話框中一個(gè)通用的“Flow”選項(xiàng)頁(yè),選擇其中的“UseTran sport”復(fù)選框,這樣就可創(chuàng)建默認(rèn)的任務(wù)序列。對(duì)于Processor對(duì)象,還可以自動(dòng)創(chuàng)建對(duì) Setup time/Process time/Repair operation 的任務(wù)序列。當(dāng)仿真運(yùn)行時(shí),這些自動(dòng)創(chuàng)建的任務(wù)序列就會(huì)傳遞給與其中心端口相連的動(dòng)態(tài)對(duì)象來(lái)執(zhí) 行。這里給個(gè)簡(jiǎn)單的例子說(shuō)明。假設(shè)用戶選擇了Queue對(duì)象參數(shù)對(duì)話框的“ Flow ”選項(xiàng)頁(yè)中的“ Use Tran sport”復(fù)選框,當(dāng)系統(tǒng)運(yùn)行時(shí),產(chǎn)生了如下任務(wù)序列:P1P2TravelLoadBreakTravelUn lo
40、ad當(dāng)Operator收到該任務(wù)序列時(shí),順序地執(zhí)行任務(wù)序列中的每個(gè)任務(wù),執(zhí)行過(guò)程如下:Operator先移動(dòng)到 Queue處(Travel);接著拿起物件(Load);然后移動(dòng)到下一個(gè)站點(diǎn)處(Travel);最后放下物件(Unioad )。在仿真運(yùn)行的任意時(shí)刻,一個(gè)TaskExecuter只能執(zhí)行一個(gè)任務(wù)序列,而此時(shí) FixedResource可能創(chuàng)建了許多任務(wù)序列,這些未執(zhí)行的任務(wù)序列被放置在緩存隊(duì)列中等待 執(zhí)行。524.2定制任務(wù)序列一般情況下,默認(rèn)的任務(wù)序列就可以滿足仿真要求。有時(shí)候用戶需要為某些特定的工藝、多個(gè)設(shè)備的組合操控?zé)舳ㄖ迫蝿?wù)序列。這里分三種介紹定制任務(wù)序列,第一種是創(chuàng)建最簡(jiǎn)單
41、的、只分配給一個(gè)對(duì)象執(zhí)行的任務(wù)序列;第二種是由多個(gè)對(duì)象協(xié)同作業(yè)的任務(wù)序列。定制簡(jiǎn)單任務(wù)序列使用3條命令來(lái)創(chuàng)立任務(wù)序列,命令執(zhí)行的順序如下:createemptytaskseque nee();in serttask();dispatchtaskseque nee();從函數(shù)名就可以看出創(chuàng)建任務(wù)序列的過(guò)程。首先創(chuàng)立一個(gè)空的任務(wù)序列,然后在此任務(wù)序列中插入具體的任務(wù),最后發(fā)布該任務(wù)序列。我們舉個(gè)簡(jiǎn)單的例子,叉車運(yùn)動(dòng)到集裝箱旁邊,然后裝載集裝箱。在這個(gè)過(guò)程中,涉及了兩個(gè)任務(wù):運(yùn)動(dòng)(TASKTYPE_TRA VEL )和裝載(TASKTYPE_LOAD )。具體實(shí)現(xiàn)如下:fsno de* n ew_t
42、s = createemptytaskseque nce( forklift, 0, 0);inserttask(new_ts, TASKTYPE_TRA VEL, station);in serttask( new_ts, TASKTYPE_LOAD, item, statio n, 2); dispatchtaskseque nce(n ew_ts);這里叉車(forklift )是任務(wù)序列的執(zhí)行者,我們?yōu)槠鋭?chuàng)建了一個(gè)新任務(wù)序列(new_ts),在此任務(wù)序列中插入具體的任務(wù)(TRAVEL/LOAD),最后發(fā)布任務(wù)序列。我們?cè)趧?chuàng)建新任務(wù)序列時(shí),createemptytaskseqenee函數(shù)
43、的第一個(gè)參數(shù)forklift可以是該任務(wù)序列的執(zhí)行者,或者是Dispatcher對(duì)象。關(guān)于Dispatcher對(duì)象的作用下一小節(jié)有具體的介紹。后兩者參數(shù)決定了該任務(wù)序列的優(yōu)先級(jí)別,我們可以根據(jù)任務(wù)的緊急程度來(lái)定義任務(wù)序列的執(zhí)行順序。Inserttask函數(shù)插入具體的任務(wù)類型。第一個(gè)參數(shù)表示該任務(wù)所屬的任務(wù)序列。前面提 過(guò)不同的任務(wù)類型有著不同的代碼,以及不同的參數(shù)選擇。這些參數(shù)分別是:TaskType/i nvolvedl/ in volved2/var1/var2/var3,有些參數(shù)是選擇性的,這要根據(jù)任務(wù)類型來(lái)決定。 這里以TASKTYPE_LOAD 為例,圖1-5表示了不同參數(shù)的意義。用
44、戶可以根據(jù)所示規(guī)則查 詢具體的任務(wù)的參數(shù)選項(xiàng)。P1P2TRAVELLOADTask Type: LOADIn volovedl: bject to load itemIn voloved2 : object to load fromstati onVari : output port 2Var2 : 0 (默認(rèn)值)Var3 : 0 (默認(rèn)值)圖1-5任務(wù)Load的參數(shù)含義協(xié)同作業(yè)的任務(wù)序列協(xié)同作業(yè)的情況有很多,比如叉車作業(yè)需要一個(gè)司機(jī)來(lái)操控,或者一件物品需要兩個(gè)人來(lái)同時(shí)搬運(yùn)等。在 Flexsim中叉車、人都是可運(yùn)動(dòng)對(duì)象,要實(shí)現(xiàn)協(xié)同作業(yè)的任務(wù)序列相對(duì)于 只對(duì)一個(gè)對(duì)象創(chuàng)建任務(wù)序列要復(fù)雜許多。我們以
45、叉車和司機(jī)的協(xié)同工作為例來(lái)說(shuō)明怎樣實(shí)現(xiàn)協(xié)同作業(yè)的任務(wù)序列。我們先來(lái)分解任務(wù)的執(zhí)行過(guò)程:1)人運(yùn)動(dòng)到叉車上(Travel); 2)人進(jìn)入駕駛室(這里是叉車的動(dòng)作)(Load ); 3)叉車運(yùn)動(dòng)到指定地點(diǎn)(Travel) ; 4)叉車裝載貨物(Load); 5)叉車運(yùn)動(dòng)到卸載點(diǎn)(Travel) ; 6)卸載貨物(Un load )。圖1-6是叉車和人的任務(wù)序列。ForkliftP PWaitLoad Travel Load Travel Uni oadWaitOperator P P Travel to forklift圖1-6協(xié)同任務(wù)序列從圖中可以看出, 叉車在人到達(dá)之后才執(zhí)行任務(wù), 人進(jìn)入叉車
46、之后就隨著叉車一起完成 叉車的任務(wù)。人的任務(wù)序列中只有一個(gè)任務(wù),其他時(shí)間不做任何事情。在 Flexsim 中實(shí)現(xiàn)的代碼要復(fù)雜一些,調(diào)用的函數(shù)與前面所講的函數(shù)不同。涉及的函數(shù) 主要有:createcoord in atedtaskseque nee();in sertallocatetask();in sertproxytask();insertsynctask();in sertdeallocatetask();dispatchcoord in atedtaskseque nee();一個(gè)協(xié)同作業(yè)的任務(wù)序列的定制是很復(fù)雜, 也是很容易出錯(cuò)的。 在開(kāi)始實(shí)現(xiàn)之前必須分 析清楚作業(yè)的過(guò)程。 對(duì)于前面
47、人操控叉車的例子我們已經(jīng)將作業(yè)流程分析清楚了, 下面是具 體的實(shí)現(xiàn),我將每個(gè)函數(shù)的功能寫(xiě)在程序的注釋當(dāng)中。/創(chuàng)建協(xié)同任務(wù)序列fsnode * myts = createcoordinatedtasksequence(operatorteam);/為每個(gè)執(zhí)行對(duì)象分配任務(wù)int opkey = insertallocatetask(myts, operatorteam, 0, 0);int forkliftkey = insertallocatetask(myts, forkliftteam, 0,0);/人的分派任務(wù)序列int traveltask = insertproxytask(myts,
48、 opkey, TASKTYPE_TRA VEL, forkliftkey, NULL); insertsynctask(myts, traveltask);/叉車的分派任務(wù)序列insertproxytask(myts, forkliftkey, TASKTYPE_MOVEOBJECT, opkey, forkliftkey); insertproxytask(myts, forkliftkey, TASKTYPE_TRA VEL, loadstation, NULL); insertproxytask(myts, forkliftkey, TASKTYPE_LOAD, item, loads
49、tation);insertproxytask(myts, forkliftkey, TASKTYPE_TRA VEL, unloadstation, NULL); insertproxytask(myts, forkliftkey, TASKTYPE_UNLOAD, item, unloadstation);/釋放分派的任務(wù)序列insertdeallocatetask(myts, forkliftkey);insertdeallocatetask(myts, opkey);/發(fā)布協(xié)同任務(wù)序列dispatchcoordinatedtasksequence(myts); 對(duì)象 Di
50、spatcher 及任務(wù)序列的分配規(guī)則 現(xiàn)在考慮一種較為復(fù)雜的情況:有兩個(gè) Queue 對(duì)象用于存放物件,三個(gè) Operator 對(duì)象用于搬運(yùn)物件;三個(gè)Operator是自由的,沒(méi)有被分配給固定的Queue,那么怎樣來(lái)有效地調(diào)用這三個(gè) Operator 呢?此時(shí)就要用到 Dispatcher 對(duì)象。Dispatcher用來(lái)控制一組 Transporter或Operator。任務(wù)序列從一個(gè)靜態(tài)對(duì)象發(fā)送到 Dispatcher,然后Dispatcher來(lái)調(diào)配這些任務(wù)序列分配給與其輸出端口相連的動(dòng)態(tài)對(duì)象。動(dòng) 態(tài)對(duì)象接收到任務(wù)序列后執(zhí)行相應(yīng)的命令序列。Dispatcher 對(duì)象的功能就是將任務(wù)序列進(jìn)行
51、隊(duì)列存儲(chǔ)和發(fā)送任務(wù)序列。根據(jù)用戶建模的 邏輯,任務(wù)序列可以被排隊(duì)等待或是立即傳送個(gè)相應(yīng)的對(duì)象。Dispatcher 的參數(shù)設(shè)置對(duì)話框只有兩項(xiàng),當(dāng)接收到一個(gè)任務(wù)序列時(shí),調(diào)用“Pass T(”函數(shù)。顧名思義,該函數(shù)將任務(wù)序列發(fā)送給接收對(duì)象;如果該函數(shù)返回值是0,即該任務(wù)序列不能被立即分配,則根據(jù)“Queuestrategy"定義的規(guī)則將任務(wù)序列放入隊(duì)列中等候。QueueStrategy函數(shù)返回任務(wù)序列的相關(guān)值, 然后根據(jù)優(yōu)先級(jí)來(lái)確定任務(wù)序列在隊(duì)列中的位置。 高優(yōu)先級(jí)的任務(wù)序列放在隊(duì) 列的前面,低優(yōu)先級(jí)的放在隊(duì)列的后面。如果優(yōu)先級(jí)相同,則根據(jù)隊(duì)列的先進(jìn)先出(FIFO)原則來(lái)處理。用戶可以根
52、據(jù)需要,動(dòng)態(tài)的改變?nèi)蝿?wù)序列的優(yōu)先級(jí)。當(dāng)將隊(duì)列中的任務(wù)序列進(jìn)行排序時(shí),Dispatcher執(zhí)行隊(duì)列策略函數(shù),遍歷取得已有任務(wù)序列的優(yōu)先級(jí)值,與最新的任務(wù)序列優(yōu)先級(jí)值比較,根據(jù)比較的結(jié)果重新進(jìn)行隊(duì)列排序。在Flexsim對(duì)象層次圖中,我們發(fā)現(xiàn) Dispatcher是所有TaskExecuter的父類,也就是說(shuō) 所有的 TaskExecuter也是 Dispatcher。這就意味著 Operator或 Transporter也可以擔(dān)當(dāng) Dispatcher的角色來(lái)分配任務(wù)序列,或者是自己執(zhí)行任務(wù)序列。524.4 Dispatcher 與 TaskExecuter 的區(qū)別在仿真執(zhí)行的任意時(shí)刻,即使任務(wù)
53、序列的等候隊(duì)列中多個(gè)任務(wù)序列,TaskExecuter 一次只能執(zhí)行一個(gè)任務(wù)序列。而Dispatcher對(duì)象的作用只是在緩存隊(duì)列中存放已排序好任務(wù)序列,并將隊(duì)列最前面的任務(wù)序列發(fā)送給動(dòng)態(tài)對(duì)象,但并不執(zhí)行任務(wù)序列。524.5利用任務(wù)序列實(shí)現(xiàn)集裝箱的裝卸過(guò)程在集裝箱碼頭的作業(yè)的過(guò)程中,集卡行駛到岸橋設(shè)備處等待裝箱,岸橋?qū)⒓b箱從船上卸下裝到已等待的集卡上;裝箱后的集卡行駛到堆場(chǎng)中,場(chǎng)橋?qū)⒓b箱從集卡上卸下,堆放到堆場(chǎng)中。集裝箱從船到堆場(chǎng)的過(guò)程中,經(jīng)過(guò)了集卡、岸橋、場(chǎng)橋等設(shè)備的搬運(yùn),在Flexsim 中就需要使用任務(wù)序列來(lái)完成這個(gè)過(guò)程。這里涉及了三個(gè)可運(yùn)動(dòng)對(duì)象:集卡、岸橋和場(chǎng)橋。這里設(shè)計(jì)的思路是這樣
54、的, 集裝箱的運(yùn)輸由集卡來(lái)實(shí)現(xiàn),這樣集卡就有這樣一個(gè)任務(wù)序列:Travel Load Travel Un load。集裝箱裝入集卡的作業(yè)由岸橋設(shè)備完成,卸載放入堆場(chǎng)的作業(yè)由場(chǎng)橋設(shè)備完成,所以集卡的任務(wù)序列中Load/Unload的任務(wù)就應(yīng)該由岸橋和場(chǎng)橋來(lái)完成。岸橋完成一次作業(yè)的過(guò)程也就是完成一個(gè)任務(wù)序列的過(guò)程,可以知道岸橋完成的任務(wù)序列應(yīng)該是:Travel Load Travel Unload。岸橋在作業(yè)的過(guò)程中,集卡處于等待的狀態(tài), 也就是說(shuō)岸橋和集卡之間是協(xié)同作業(yè)的。場(chǎng)橋的情況與岸橋一致。Flexsim中可以使用調(diào)用子任務(wù)的方法將岸橋和場(chǎng)橋的任務(wù)序列插入到集卡的任務(wù)序列中。圖1-7表示了主
55、任務(wù)序列和子任務(wù)序列之間的關(guān)系。I場(chǎng)橋子任務(wù)序列TravelLoadTravelUn load圖1-7集裝箱搬運(yùn)過(guò)程的任務(wù)序列在Flexsim中的實(shí)現(xiàn)的主要代碼如下,其關(guān)鍵的代碼在文中有注釋: 獲取任務(wù)序列中的任務(wù)數(shù)量int nro ftasks = gettota In roftasks(taskseque nee);查找Load/Unload任務(wù),找到之后調(diào)用子任務(wù)來(lái)替換這兩個(gè)任務(wù)for(i nt i=1; i<=n roftasks; i+)int tasktype = gettasktype(taskseque nee, i); switch(tasktype)case TASK
56、TYPE_LOAD:case TASKTYPE_FRLOAD:int msgtype = (tasktype = TASKTYPE_LOAD ? 1 : 2);cha ngetask()函數(shù)會(huì)發(fā)出一個(gè)消息(message),我們?cè)谙⒌慕邮苷叩腛n Message()函/數(shù)中創(chuàng)建岸橋和叉車的子任務(wù)序列changetask(tasksequence, i, TASKTYPE_CALLSUBTASKS, current, NULL, msgtype, tonum(gettaskinvolved(tasksequence, i, 1), tonum(gettaskinvolved(tasksequence, i, 2), gettaskvariable(tasksequence, i, 1);break;case TASKTYPE_UNLOAD:case
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- (完整版)VRV與傳統(tǒng)中央空調(diào)系統(tǒng)
- 電影收購(gòu)合同范本
- 浙江國(guó)企招聘浦江縣國(guó)有企業(yè)勞務(wù)派遣員工公開(kāi)招聘40人筆試參考題庫(kù)附帶答案詳解
- 2025至2030年中國(guó)手提式插桶泵數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025至2030年中國(guó)射頻硬標(biāo)簽數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 工地安全用電課件
- 孕期營(yíng)養(yǎng)科普知識(shí)
- 2025至2030年中國(guó)上壓式雙閥分集水器數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 農(nóng)業(yè)銀行實(shí)習(xí)工作總結(jié)匯報(bào)
- 二零二五年度新能源技術(shù)研發(fā)保證金合同
- 2025包頭青山賓館有限公司面向社會(huì)公開(kāi)招聘18人筆試參考題庫(kù)附帶答案詳解
- 課件-DeepSeek從入門(mén)到精通
- 2025至2030年中國(guó)毛絨卡通玩具數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2025年度智能充電樁場(chǎng)地租賃合同范本3篇
- 2024年蕪湖職業(yè)技術(shù)學(xué)院高職單招語(yǔ)文歷年參考題庫(kù)含答案解析
- 17J008擋土墻(重力式、衡重式、懸臂式)圖示圖集
- 北師大版三年級(jí)下冊(cè)數(shù)學(xué)口算題練習(xí)1000道帶答案
- 心電監(jiān)護(hù)儀的操作及注意事項(xiàng) 課件
- GB/T 718-2024鑄造用生鐵
- 細(xì)胞生物學(xué)(全套1047張課件)
- tplink-mr11u刷openwrt教程
評(píng)論
0/150
提交評(píng)論