高效能自動化協同設計平台在工業製造業中的應用

2021-08-19 12:18:09 字數 4065 閱讀 7992

在工業製造業、天氣**、生命科學計算、高能物理資料分析等科研領域,問題的求解往往依賴複雜的計算和大量資料的分析。而隨著問題的規模和複雜性的遞增,這些計算可能包含數以千計的步驟,邏輯流程也越來越複雜,應用程式和資料可能還分布在不同的計算環境中。整合和管理如此複雜的分布式計算面臨著諸多挑戰。

大多數的端到端的分析或業務流程涉及多個時序要求嚴格的步驟和工具:

隨著高效能計算的發展,工作流程的自動化已成為核心:

以某賽車設計為例,原始的賽車設計的工作流是用簡單的成千上萬行**的perl腳寫的,基本上只有設計者本人知道它是如何工作的,隨著這個員工離職或者其他的變故,公司業務會受到很大的影響。同樣的,修改指令碼也是令人驚恐的,因為即便是簡單的一行**的改動也很難搞清楚會引起什麼樣的問題。

如果把賽車的設計流程模組化,也就是把整個的設計流程分解成關鍵模組和一些子流程,由成千上萬的步驟和子流程來展現關鍵的製造流程。使用者可以擺脫潛在的複雜性,使複雜過程簡單化,提高生產力和減少培訓和支援的必要性。

從產品戰略設計-〉引數化建模(pro/e)-〉網格化分(icem)–〉計算(fluent)-〉優化。不同階段和工具,有不同的資料格式。這是乙個plm(產品生命週期管理)的概念。

整個流程是在訓練模型資料的精確性,pro/e的模型檔案(比如車輪)是基於引數建模的,以車輪設計為例,它所能接受的就是你給它的引數檔案,可以按照「原始值」、「輸入值」和「外部引數檔案的方式產生再生效果。通過呼叫外部引數檔案來產生再生效果,這就簡化了工作流程。

當執行乙個工作流的時候,你不需要知道任何乙個第三方軟體,比如pro/e、ansys icem、fluent、nastran等等是如何工作的,這些軟體對你來說是透明的,從而極大地縮短了培訓時間,你不需要訪問其中的關鍵製造流程,業務不會隨著員工的離開受到影響,也不必擔心核心技術和產品資訊洩露,智財權得以保障。通過對多個工具軟體的整合,實現產品設計優化流程跨平台、分布式執行。

ibm platform process manager(簡稱ppm)是一款工作負載管理工具,使用者可以在分布式計算環境中自動化工作流程,幫助使用者設計、執行並管理計算密集型業務的關鍵的hpc工作流。

使用者在輕鬆地設計和自動化計算分析過程的同時捕捉和保護可重複的最佳實踐。用乙個直觀的圖形化介面來記錄工作流步驟和依賴關係,還可以利用ibm process manager進行作業排程。圖形化的介面簡單友好,使用者無需一些指令碼的編碼能力,就可以很容易地設計工作流程,從而大大提高了工作效率,減少執行時間,提高整個流程的可靠性。使使用者的業務處理更加靈活敏捷。ibm的工作流管理軟體platform process manager使使用者能夠在共享的、分布式的計算環境中執行和管理關鍵業務的工作流,實現提高效率、縮短執行時間、改善可靠性的目標。

複雜的工作流可以被視為乙個「黑盒子」。使用者不需要知道細節,只對輸入和輸出感興趣!

工作流隱藏在使用者定製的提交表單中 - 選擇哪個版本的機翼、底盤、懸浮等;選擇底盤的高度、發動機、油箱、軌道和天氣條件以及大氣壓強等等。工作流會對任何乙個部位進行網格劃分。以車輪設計為例:

按輪輻結構:可分為輻板式車輪和輻條式車輪

按車輪材質:可分為鋼製、鋁合金、鎂合金等車輪

按車軸一端安裝乙個或兩個輪胎:可分為單式車輪和雙式車輪

通過在工作流中的輸入變數實現車輪設計的自動靈活性,選擇什麼樣的輪輻、什麼材質的車輪?

ppm支援動態的子工作流和動態的工作流集合,使用者可以重用和共享工作流集合。乙個動態的子工作流或者工作流集合可以引用乙個已經發布的目標工作流,當使用者修改這個目標工作流定義的時候,所引用它的子工作流和工作流集合可以獲得所引用的目標工作流的最新版本加以引用。其中乙個重要的方面就是輸入變數。使用輸入變數來定義乙個清晰的允許引數化執行的工作流的介面。

下面描述一下動態子工作流結合輸入變數的使用。同樣的適用於動態的工作流集合。

動態的子工作流和輸入變數的使用類似於程式語言中的函式(見圖1)。

動態的子工作流

函式提交並發布乙個目標工作流

定義乙個函式

在主工作流中包含乙個動態的子工作流

函式呼叫

輸入變數

輸入引數

對動態的子工作流指定輸入變數值

使用輸入引數來呼叫乙個函式

圖1 輸入變數和函式的類推

通過動態的子工作流和輸入變數,使用者可以實現真正的工作流的重用,可以在工作流定義中輕鬆轉化指令碼。

1.定義乙個目標資料流和宣告輸入變數

假設你有乙個工作流a,它會被其它的工作流共享和重用(這個資料流就稱之為目標工作流)。定義乙個目標工作流的時候,你要指定這個工作流的輸入變數,在工作流執行的時候會給這些使用者變數賦值,就像程式語言中的函式中的形參。你可以在工作流屬性對話窗中宣告輸入變數。在genernal標籤頁,在輸入變數字段(input variables)輸入變數。你可以選擇性地對任何乙個輸入變數指定乙個預設值。

例如,在工作流a中,你使用許多內部的使用者變數,但是在工作流a的介面,你只需給兩個使用者變數myvar1和myvar2賦值,所以可以宣告myvar1和myvar2作為工作流a的輸入變數 (見圖2)。

圖2:給目標工作流a定義輸入變數

提交這個目標資料流a到ppm伺服器以後,確保ppm管理員把它發布了以備重用。

2.包含乙個動態的子資料流和指定輸入變數值

現在你可以在其它的工作流中重用目標工作流a。例如,你有乙個工作流b,你想執行工作流a兩次對myvar1和myvar2分別用不同的變數值.你可以在工作流b中加兩個動態的子工作流dsf1和dsf2在資料流b中作為兩個步驟(見圖3)。當資料流b執行到步驟dsf1和dsf2的時候,它們會分別展開到資料a的定義中, 並且以指定的myvar1和myvar2值執行。

圖3 (工作流b:包含兩個動態子工作流dfs1和dsf2)

指定工作流a,嵌入dsf1和dsf2, 並且視情況而定給dsf1和dsf2指定不同的輸入變數值 。圖4顯示了動態子工作流dsf1的定義, 帶有myvar1=200, myvar2=left

圖4:定義動態子工作流dsf1帶有輸入變數值

當定義工作流b的時候不知道輸入變數的值,只能在執行的時候獲得,那麼你可以選擇在定義動態子工作流的時候不指定值。可以在dsf1前加乙個作業j1去給# 和#計算分配值。或者,可以在指定輸入變數值的時候使用使用者變數。例如,對dsf1, 指定myvar1=#, 對dsf2, 指定myvar1=#。那麼可以用作業在執行的時候去給vara和varb分配值。這樣就避免了多於乙個的動態子工作流引用同乙個目標工作流,並且需要輸入變數值的時候名字衝突問題(見圖5)。

圖5:在執行時間自動地給輸入變數賦值。

在動態的子工作流dsf1, 給輸入變數myvar1賦乙個變數值#, 通過作業j1在執行的時候給#賦值。在這個例子中,dsf1 會以myvar1=300,myvar2=left來執行。dsf2一樣,myvar1賦乙個變數值#, dsf2會以myvar1=100,myvar2=right來執行。

另外,輸入變數也常用來給工作流和它的作業指定環境變數。可以通過作業系統的環境變數來直接訪問輸入變數(例如,myvar2)。普通使用者變數不能宣告用作輸入變數,它只能通過使用者變數語法(例如,#)在作業定義的命令列中使用。如果你的作業執行乙個指令碼,在這個指令碼裡你可以直接使用$myvar1(因為它被作為乙個作業系統的環境變數來提供給使用者使用),但是不能用#。在作業定義中,#可以用於命令列或其它支援變數的字段。

在工業製造業,大多數hpc應用程式的核心要求是自動化資料移動和重複的過程等, 無論是需要更靈活的方法來簡化業務流程的指令碼編寫工作,還是想要減輕管理負擔並確保按時完成關鍵任務,乙個自動化設計與製造平台是非常有幫助的,通過對多個工具軟體的整合,實現產品設計優化流程跨平台、分布式執行。

工業雲計算技術在工業自動化系統中的作用

在工業設施和運營中引入自動化系統,生產率和準確性的提高使得製造商目前從中受益。例如,當應用自動化時,在汽車中手動安裝活塞的錯誤率從1.5 降低到大約0.00001 儘管不同型別的工業自動化系統的錯誤率降低了,但仍然存在諸如資料丟失,安全性和維護之類的挑戰。這就是工業雲計算技術的用武之地。不同型別的工...

高效能可擴充套件的python自動化運維框架

一直在用python 寫各種指令碼,想做自動化運維平台卻有心無力,沒有見過大的運維平台怎麼做,自己寫的指令碼在大的場景下是否靠譜,每當討論說一些基於ssh獲取資料執行操作的方式都會被鄙視。迷茫大半年找不到方向,最近在reboot系統學習了下,收穫很多,很多疑惑和疑難問題終於解開了。感謝pc老師講解,...

小公尺自動化運維平台演進設計思路

嘉賓 孫寅 編輯 張嬋 小公尺自動化運維平台建設大致分為三個時期,整體建設的規劃比較清晰,能夠一以貫之。本文介紹了小公尺自動化運維平台的演進思路。現如今,隨著雲計算和分布式的落地和發展,越來越多的伺服器都轉到雲上,微服務架構的落地也讓現在的 it 系統架構越來越複雜。我們的服務 應用所面對的規模也越...