999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于機(jī)電液系統(tǒng)的聯(lián)合仿真分析平臺(tái)研究

2024-01-16 06:20:42盧寧陳天保鄭宏遠(yuǎn)龔濤
機(jī)床與液壓 2023年24期
關(guān)鍵詞:二次開(kāi)發(fā)界面模型

盧寧,陳天保,鄭宏遠(yuǎn),龔濤

(1.北京建筑大學(xué)機(jī)電與車(chē)輛工程學(xué)院,北京 100044;2.北京市建筑安全監(jiān)測(cè)工程技術(shù)研究中心,北京 100044)

0 前言

隨著計(jì)算機(jī)技術(shù)的進(jìn)步[1],虛擬樣機(jī)技術(shù)、參數(shù)化建模和計(jì)算機(jī)輔助工程(Computer Aided Engineering,CAE)技術(shù)得到快速發(fā)展[2-3],其中,虛擬仿真技術(shù)在工業(yè)生產(chǎn)應(yīng)用中日益發(fā)揮著重要的作用。機(jī)電液一體化技術(shù)因涉及機(jī)械、電子、液壓、控制、氣動(dòng)、軟件等多個(gè)不同的學(xué)科領(lǐng)域[4],研究較為復(fù)雜。因此,機(jī)電液系統(tǒng)的虛擬仿真技術(shù)逐漸發(fā)展起來(lái)。

針對(duì)機(jī)械模型、液壓模型、控制模型,國(guó)外科技公司開(kāi)發(fā)了多種強(qiáng)大的計(jì)算機(jī)輔助設(shè)計(jì)與仿真軟件。目前,國(guó)內(nèi)外還沒(méi)有成熟的機(jī)電液一體化仿真平臺(tái)商業(yè)軟件可以建立完整的機(jī)電液聯(lián)合仿真模型[5]。因此,通過(guò)多軟件聯(lián)合仿真實(shí)現(xiàn)機(jī)電液一體化的功能十分必要。文獻(xiàn)[6]利用ADAMS、Simulink、AMESim的聯(lián)合仿真接口,建立一種六自由度運(yùn)動(dòng)平臺(tái)的機(jī)電液一體化虛擬實(shí)驗(yàn)系統(tǒng),為運(yùn)動(dòng)平臺(tái)的優(yōu)化奠定了基礎(chǔ)。文獻(xiàn)[7]基于ADAMS、Simulink、AMESim的機(jī)電液聯(lián)合仿真技術(shù),比較了傳統(tǒng) PID控制和自適應(yīng)模糊PID控制2種控制方式,得出了自適應(yīng)模糊PID控制方式系統(tǒng)響應(yīng)的跟隨性能更好的結(jié)論。文獻(xiàn)[8]建立機(jī)電液聯(lián)合仿真模型,驗(yàn)證了盤(pán)型閘的恒減速制動(dòng)比二級(jí)制動(dòng)效果更優(yōu)異。

由此可見(jiàn),多軟件的機(jī)電液聯(lián)合仿真技術(shù)在應(yīng)用研究中已經(jīng)越來(lái)越主流。但各軟件間的官方數(shù)據(jù)傳輸接口并沒(méi)有完成互通,研究人員在實(shí)驗(yàn)過(guò)程中,若要調(diào)整仿真參數(shù),則首先需要切換至對(duì)應(yīng)軟件,找到指定模塊中的對(duì)應(yīng)參數(shù)進(jìn)行修改。當(dāng)控制系統(tǒng)模型較為復(fù)雜時(shí),頻繁地調(diào)參及不直觀的變量位置會(huì)使得仿真效率較低。為了解決這個(gè)問(wèn)題,本文作者提出建立一個(gè)第三方的仿真控制平臺(tái)管理各仿真軟件的數(shù)據(jù),以此簡(jiǎn)化仿真操作流程并提高仿真效率。

在以Simulink為主[9]的聯(lián)合仿真的基礎(chǔ)上,對(duì)各軟件的數(shù)據(jù)傳輸接口和仿真語(yǔ)言深入研究,通過(guò)Python分別建立與ADAMS、Simulink和AMESim的仿真交互接口,提出一種以TCP/IP作為與ADAMS命令交互的通信協(xié)議的方法;以MATLAB虛擬環(huán)境為中介,Python通過(guò)執(zhí)行MATLAB函數(shù)實(shí)現(xiàn)與Simulink的交互;以AMESim的Python應(yīng)用程序編程接口(Application Programming Interface,API)實(shí)現(xiàn)編程建模,該代碼中包含了液壓系統(tǒng)中的所有信息,從而實(shí)現(xiàn)與AMESim中元件的交互。以此構(gòu)建出能與各軟件交流的第三方仿真集成平臺(tái),并能在該平臺(tái)直接修改各軟件的主要仿真參數(shù),通過(guò)該聯(lián)合仿真平臺(tái)進(jìn)行仿真實(shí)驗(yàn),驗(yàn)證聯(lián)合仿真平臺(tái)的可行性、可操作性強(qiáng)和仿真效率高。

1 仿真平臺(tái)的架構(gòu)設(shè)計(jì)

仿真平臺(tái)的總體架構(gòu)設(shè)計(jì)使用Python作為開(kāi)發(fā)語(yǔ)言。作為一種解釋性語(yǔ)言[10],Python不僅擁有強(qiáng)大的標(biāo)準(zhǔn)庫(kù),還擁有龐大的第三方開(kāi)源庫(kù)。而PyQt則是Python對(duì)Qt庫(kù)進(jìn)行完整封裝的跨平臺(tái)GUI庫(kù),它提供窗口控件集合[11]的界面設(shè)計(jì)方式和能自動(dòng)轉(zhuǎn)換成Python代碼,可以極大提高開(kāi)發(fā)效率并高效運(yùn)行。因此,綜合考慮開(kāi)發(fā)難度、靈活性和可移植性,使用Python作為開(kāi)發(fā)語(yǔ)言更合適。開(kāi)發(fā)的仿真平臺(tái)人機(jī)交互界面如圖1所示,通過(guò)平臺(tái)左邊的圖標(biāo)和對(duì)應(yīng)的按鈕可切換至不同的軟件設(shè)置界面。

圖1 人機(jī)交互界面Fig.1 Human-machine interface

仿真平臺(tái)的總體架構(gòu)如圖2所示,它是由仿真平臺(tái)客戶(hù)端、數(shù)據(jù)交換模塊、數(shù)據(jù)處理、仿真平臺(tái)服務(wù)端等功能模塊構(gòu)成的綜合性機(jī)電液一體化數(shù)字仿真平臺(tái)。

圖2 仿真平臺(tái)總架構(gòu)Fig.2 Overall architecture of the simulation platform

仿真平臺(tái)客戶(hù)端包括人機(jī)交互界面和仿真結(jié)果可視化顯示,不同的部分表示對(duì)應(yīng)軟件的命令交互操作界面,仿真結(jié)果通過(guò)對(duì)仿真數(shù)據(jù)的本地化儲(chǔ)存,然后進(jìn)行預(yù)處理,在去除無(wú)用參數(shù)的同時(shí)對(duì)數(shù)據(jù)進(jìn)行排列整理,使用Python的可視化繪圖庫(kù)Matplotlib對(duì)處理后的數(shù)據(jù)繪圖并以子程序的形式顯示在仿真平臺(tái)客戶(hù)端。

數(shù)據(jù)交換模塊是人機(jī)交互界面控制仿真進(jìn)程的核心方式:通過(guò)TCP/IP協(xié)議傳入ADAMS能夠識(shí)別的特定語(yǔ)句,能夠控制ADAMS的仿真;MATLAB可以通過(guò)指定的函數(shù)修改Simulink中一些模型的固定參數(shù),因此,對(duì)于不需變動(dòng)的固定設(shè)置可以將它編寫(xiě)進(jìn)m文件,對(duì)于需要?jiǎng)討B(tài)調(diào)整的參數(shù)則需要直接寫(xiě)入程序內(nèi),二者均可以通過(guò)Python啟動(dòng)MATLAB Engine直接運(yùn)行;AMESim則對(duì)Python開(kāi)放了API,通過(guò)指定函數(shù)可以修改AMESim液壓模型中任意元件的大多數(shù)仿真參數(shù)。通過(guò)此模塊,用戶(hù)可以將仿真關(guān)鍵參數(shù)直接傳入仿真軟件中,從而達(dá)到快速仿真的目的,且沒(méi)有操作門(mén)檻。

仿真平臺(tái)服務(wù)端則負(fù)責(zé)實(shí)現(xiàn)機(jī)電液聯(lián)合仿真。目前,ADAMS、AMESim和Simulink間的數(shù)據(jù)接口都已經(jīng)成熟,在建立機(jī)電液聯(lián)合仿真分析平臺(tái)之前,需要先搭建出機(jī)械系統(tǒng)、液壓系統(tǒng)和控制系統(tǒng)。聯(lián)合仿真數(shù)據(jù)交換原理如圖3所示,將AMESim/MATLAB接口和ADAMS/MATLAB接口在Simulink中做對(duì)接,液壓輸出通過(guò)AMESim/MATLAB接口傳遞到Simulink中,然后通過(guò)ADAMS/MATLAB接口將輸出傳遞到機(jī)械系統(tǒng)中,以此實(shí)現(xiàn)AMESim和ADAMS在Simulink中的數(shù)據(jù)交換。

圖3 聯(lián)合仿真數(shù)據(jù)交換原理Fig.3 Principle of data exchange in co-simulation

2 ADAMS與仿真平臺(tái)接口研究

由于軟件的開(kāi)放性有限,國(guó)內(nèi)外學(xué)者對(duì)ADAMS仿真平臺(tái)的二次開(kāi)發(fā)技術(shù)的應(yīng)用主要是通過(guò)定制ADAMS軟件的專(zhuān)用界面,通過(guò)錄制宏文件和編寫(xiě)用戶(hù)子程序組成使用界面的動(dòng)作響應(yīng),以此實(shí)現(xiàn)目標(biāo)功能。ADAMS偏向于支持用戶(hù)子程序二次開(kāi)發(fā)并連接至用戶(hù)定制界面的方法,且提供了FORTRAN語(yǔ)言編寫(xiě)的子程序模板,子程序能利用通用程序設(shè)計(jì)語(yǔ)言的功能來(lái)定義ADAMS/View不能提供的函數(shù),它具有很強(qiáng)的通用性和靈活性。但用戶(hù)必須將寫(xiě)成的子程序使用獨(dú)立的FORTRAN編譯器編譯,然后連接到ADAMS以創(chuàng)建ADAMS/Solver用戶(hù)庫(kù)文件,之后可以連同該庫(kù)與ADAMS/Solver一起運(yùn)行。此方式基于ADAMS內(nèi)置人機(jī)交互庫(kù)使用,只能保存成數(shù)據(jù)庫(kù)文件然后打開(kāi)ADAMS讀取該庫(kù)文件使用,面對(duì)現(xiàn)代多種仿真技術(shù)的耦合,它在編程和功能拓展方面并不具有優(yōu)勢(shì)。

因此,針對(duì)上述缺點(diǎn),提出使用TCP/IP協(xié)議技術(shù)與ADAMS形成仿真交互。TCP/IP技術(shù)的使用提供了ADAMS二次開(kāi)發(fā)的一種新方式,因?yàn)橐訲CP/IP作為通信技術(shù)而開(kāi)發(fā)出的ADAMS第三方仿真平臺(tái)具有獨(dú)立性與強(qiáng)大的拓展性,這也為實(shí)現(xiàn)基于ADAMS的機(jī)電液聯(lián)合仿真平臺(tái)的開(kāi)發(fā)提供了一個(gè)方向。

而與傳統(tǒng)ADAMS自身的開(kāi)發(fā)環(huán)境相比,在GUI設(shè)計(jì)、靈活性和可移植性等方面,Python明顯優(yōu)于ADAMS,因此選擇Python作為ADAMS二次開(kāi)發(fā)編程語(yǔ)言更合適。

2.1 仿真平臺(tái)ADAMS部分的結(jié)構(gòu)設(shè)計(jì)

ADAMS二次開(kāi)發(fā)平臺(tái)的設(shè)計(jì)路線(xiàn)如圖4所示,它由仿真平臺(tái)客戶(hù)端、ADAMS服務(wù)端和交互命令模塊3個(gè)模塊組成。

圖4 ADAMS仿真平臺(tái)原理Fig.4 Principle of ADAMS simulation platform

仿真平臺(tái)客戶(hù)端是負(fù)責(zé)與用戶(hù)交互的人機(jī)交互界面,用戶(hù)可以通過(guò)此集成平臺(tái)完成對(duì)模型的導(dǎo)入、參數(shù)設(shè)置、仿真控制等操作;ADAMS服務(wù)端則是以ADAMS軟件為核心的動(dòng)力學(xué)計(jì)算模塊。啟動(dòng)文件是優(yōu)化ADAMS開(kāi)啟后的默認(rèn)程序和初始化與外部軟件的通信功能,會(huì)隨著ADAMS啟動(dòng)自動(dòng)被其讀取并運(yùn)行。

交互命令模塊是仿真平臺(tái)客戶(hù)端和ADAMS服務(wù)端仿真交互的通道,仿真的控制和數(shù)據(jù)傳遞采用受ADAMS服務(wù)組件Adams Commannd Server支持的TCP/IP技術(shù)。仿真平臺(tái)通過(guò)TCP/IP通信協(xié)議訪問(wèn)該接口,而ADAMS作為服務(wù)器可以偵聽(tīng)來(lái)自外部應(yīng)用程序的命令。在交互命令語(yǔ)句復(fù)雜時(shí),可以通過(guò)命令讓ADAMS讀取宏指令,批量執(zhí)行ADAMS/View命令,仿真平臺(tái)通過(guò)命令語(yǔ)句更高效地控制ADAMS仿真。

2.2 編制ADAMS初始化文件

ADAMS每次啟動(dòng)時(shí)都會(huì)對(duì)工作界面進(jìn)行初始化,且ADAMS的服務(wù)組件Adams Commannd Server支持的TCP/IP通信服務(wù)默認(rèn)關(guān)閉,因此需要編制啟動(dòng)文件,在軟件啟動(dòng)時(shí)簡(jiǎn)化工作界面并啟用TCP/IP服務(wù)。

在ADAMS安裝目錄中的aview文件夾下新建文本文件,并編寫(xiě)ADAMS初始化程序,之后更改文件名稱(chēng)和擴(kuò)展名為"aviewAS.cmd"。

部分代碼如下:

interface model_browser undisplay

!關(guān)閉模型瀏覽器

interface ribbon undisplay

!關(guān)閉狀態(tài)欄

int tool undis tool = .gui.main.status_toolbar

!關(guān)閉工具欄

int grid und grid = .gui.grid &view = ( db_default(.system_defaults,"view" ))

!關(guān)閉默認(rèn)彈出窗口

command_server start

!開(kāi)啟TCP/IP服務(wù)組件

······

完成之后重新啟動(dòng)ADAMS并打開(kāi)“CMD Command Window”命令框,輸入“command_server show”會(huì)出現(xiàn)圖5所示的窗口,說(shuō)明啟動(dòng)文件已生效,TCP/IP服務(wù)已隨軟件自啟,地址為本機(jī),默認(rèn)端口號(hào)為5002,外部軟件可通過(guò)特定語(yǔ)句與ADAMS進(jìn)行交互。

圖5 顯示窗口Fig.5 Display window

2.3 TCP/IP收發(fā)模塊設(shè)計(jì)

由于是建立第三方仿真平臺(tái)客戶(hù)端,且首次將TCP/IP技術(shù)應(yīng)用于ADAMS二次開(kāi)發(fā),Adams View Command Server傳輸?shù)拿钫Z(yǔ)句需要符合ADAMS的通用命令格式,因此還需要編寫(xiě)基于TCP/IP協(xié)議的通用命令發(fā)送與數(shù)據(jù)接收程序,才能滿(mǎn)足第三方仿真平臺(tái)客戶(hù)端的使用要求。

TCP/IP收發(fā)模塊的運(yùn)行流程如圖6所示,2種通用命令為:指令命令和查詢(xún)命令。這些命令通過(guò)TCP/IP協(xié)議以字符串的形式,通過(guò)“client_socket.send(…)”程序發(fā)送給ADAMS服務(wù)端。

圖6 TCP/IP收發(fā)模塊運(yùn)行流程Fig.6 Flow of TCP/IP transceiver module operation

其中指令命令是讓ADAMS執(zhí)行相應(yīng)的動(dòng)作指令,每一條指令命令字符串必須以“cmd ”開(kāi)頭才能被ADAMS識(shí)別,既可以單獨(dú)發(fā)送一條指令,包括ADAMS宏指令文件 ,也可以循環(huán)讀取并發(fā)送一個(gè)列表里的所有命令。

以導(dǎo)入名“model_import_macro.cmd”的ADAMS宏文件為例,部分代碼如下:

import socket #導(dǎo)入模塊

cmds =

[" cmd macro read macro_name=import file_name=

′D:/ADAMS/model/model_macro.cmd′",#宏文件位置

" cmd import "]#命令列表,包含兩條命令

for cmd in cmds:#循環(huán)讀取命令列表

client_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

······

查詢(xún)命令是讓ADAMS以字符串形式返回查詢(xún)的數(shù)據(jù),每一條查詢(xún)指令必須以“query”開(kāi)頭,以發(fā)送“OK”表示結(jié)束,ADAMS返回查詢(xún)的結(jié)果并通過(guò)“client_socket.recv(1024)”接收數(shù)據(jù)且賦給變量。

以查詢(xún)MARKER_2的坐標(biāo)值為例,部分代碼如下:

import socket #導(dǎo)入模塊

client_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

client_socket.connect(("localhost",5002))

queries = ["query MARKER_2.location ",

" OK"] # 查詢(xún)目標(biāo)查詢(xún)

for query in queries:

client_socket.send(bytes(query,'utf-8')) #發(fā)送命令

recv_data = client_socket.recv(1024) #接收數(shù)據(jù)

······

該收發(fā)模塊具有功能單一且需要多次使用的特點(diǎn),因此將該模塊程序設(shè)計(jì)成Python類(lèi),指令命令和查詢(xún)命令設(shè)計(jì)成構(gòu)造方法,并對(duì)此數(shù)據(jù)交換接口進(jìn)行數(shù)據(jù)封裝,以便調(diào)用所有程序,使得ADAMS部分具有強(qiáng)大的可擴(kuò)展性,可以滿(mǎn)足未來(lái)需要增加的仿真需求與方式。

3 Simulink與仿真平臺(tái)接口研究

3.1 Python與Simulink交互設(shè)計(jì)

Simulink是MATLAB的一個(gè)組件[12],能夠調(diào)用MATLAB的函數(shù)庫(kù)并能兼容其他專(zhuān)業(yè)軟件的擴(kuò)展,它提供的基于Windows模型化圖形輸入交互方式[13]可以快速實(shí)現(xiàn)動(dòng)態(tài)系統(tǒng)建模和仿真,是MATLAB的重要組成部分。Python無(wú)法直接與Simulink模型交互,但是可以通過(guò)與MATLAB交互實(shí)現(xiàn),MATLAB提供的外部語(yǔ)言接口可與其他編程語(yǔ)言進(jìn)行靈活的雙向集成,高版本的MATLAB引擎開(kāi)放了針對(duì)Python的API,其中包含了從Python中調(diào)用MATLAB的工具庫(kù),即在Python中可以調(diào)用兼容版本的MATLAB Compiler SDK。

因此,文中對(duì)Simulink的二次開(kāi)發(fā)路線(xiàn)如圖7所示,以MATLAB為數(shù)據(jù)傳輸中介,Simulink的變量參數(shù)改變和仿真結(jié)果輸出由MATLAB的函數(shù)命令執(zhí)行。

圖7 Python與Simulink的交互Fig.7 Python interaction with Simulink

3.2 Simulink交互函數(shù)研究

Python通過(guò)MATLAB實(shí)現(xiàn)與Simulink的交互,這種交互方式需要解決2個(gè)關(guān)鍵技術(shù):(1)可以隨時(shí)修改Simulink中模塊的仿真參數(shù);(2)在仿真結(jié)束之后,仿真結(jié)果能夠以數(shù)組形式保存到計(jì)算機(jī)本地。因此首先需要在MATLAB中安裝Python包形式的API以激活MATLAB對(duì)Python的函數(shù)支持,之后Python可以建立MATLAB環(huán)境并能運(yùn)行m文件和在程序里直接調(diào)用MATLAB支持的函數(shù),通過(guò)在Simulink中使用特定模塊建模和在Python中靈活使用MATLAB提供的函數(shù),可以解決二次開(kāi)發(fā)中的技術(shù)問(wèn)題。

Python程序通過(guò)導(dǎo)入matlab.engine類(lèi)可以在計(jì)算機(jī)上不啟動(dòng)MATLAB客戶(hù)端的情況下啟用新的MATLAB虛擬進(jìn)程,雖然沒(méi)有UI界面,但是存在MATLAB工作區(qū)和變量,在該環(huán)境中可以使用標(biāo)準(zhǔn)語(yǔ)句直接與MATLAB交互,因此第三方平臺(tái)可以通過(guò)調(diào)用MATLAB引擎與Simulink服務(wù)器交互實(shí)現(xiàn)動(dòng)態(tài)通信。

目前,通過(guò)Python建立MATLAB虛擬進(jìn)程之后,有2種方式可以實(shí)現(xiàn)MATLAB與Simulink交互,如圖8所示。既可以通過(guò)MATLAB引擎運(yùn)行m文件,也可以在Python中執(zhí)行MATLAB代碼。前者可以方便快捷地執(zhí)行模型的初始化和一些固定程序,后者在需要批量仿真或頻繁調(diào)參甚至動(dòng)態(tài)仿真的場(chǎng)合更為高效。因此,文中同時(shí)使用2種方式,啟動(dòng)模型初始化變量、結(jié)果輸出和仿真過(guò)程調(diào)參分別使用不同運(yùn)行方式,這樣不僅可以降低系統(tǒng)的耦合性,還有利于平臺(tái)功能的拓展和代碼的維護(hù)。

圖8 交互方式Fig.8 Interaction methods

MATLAB與Simulink的交互主要涉及到set_param(Object,Name1,Value1,...,NameN,ValueN)函數(shù),該函數(shù)可以將指定模型或模塊對(duì)象上的參數(shù)設(shè)置為指定的值。當(dāng)用戶(hù)修改了Simulink中的模型變量值后,set_param函數(shù)會(huì)將新參數(shù)值直接替換寫(xiě)入Simulink相應(yīng)的形參中,從而實(shí)現(xiàn)動(dòng)態(tài)修改Simulink中模塊的參數(shù)。其中,set_param()函數(shù)中的Object是模型文件中需要修改的模塊的名稱(chēng),Name是該模塊中需要修改的形參名稱(chēng),Value是新的參數(shù)的值。當(dāng)同一個(gè)模塊需要修改多個(gè)形參時(shí),可以使用一個(gè)set_param()命令和多個(gè)Name-Value實(shí)參組而不是多個(gè)set_param()命令,因此該命令具有很高的效率。

因?yàn)镻ython客戶(hù)端無(wú)法直接調(diào)用Simulink的Scope模塊中的仿真結(jié)果,因此需要將仿真結(jié)果轉(zhuǎn)換成數(shù)組,然后Python讀取數(shù)組內(nèi)數(shù)據(jù)再繪制成波形圖,此功能的過(guò)程如圖9所示。set_param()命令將用戶(hù)設(shè)置的模塊參數(shù)、仿真時(shí)間和仿真開(kāi)始的指令傳遞給Simulink,Simulink仿真進(jìn)程結(jié)束后,仿真模型通過(guò)To Workspace模塊將仿真結(jié)果輸出到MATLAB的工作區(qū)(Workspace)中,并通過(guò)xlswrite()函數(shù)將數(shù)據(jù)寫(xiě)入到本地excel中,再由程序處理并繪制到平臺(tái)中,該方式不僅能及時(shí)保存實(shí)驗(yàn)數(shù)據(jù),還能隨時(shí)查閱過(guò)往數(shù)據(jù),有利于用戶(hù)對(duì)數(shù)據(jù)的分析。

圖9 仿真結(jié)果輸出過(guò)程Fig.9 Simulation results output process

4 AMESim的Python API建模研究

AMESim是一種基于圖形化設(shè)計(jì)[14],包含機(jī)械、液壓、氣動(dòng)和信號(hào)等多學(xué)科復(fù)雜系統(tǒng)建模與仿真的平臺(tái)。隨著版本的迭代,AMESim提供了一套完整的API函數(shù),可以允許高級(jí)語(yǔ)言(如Python、C++、VB等)與模型進(jìn)行交互,包括建模、組線(xiàn)、設(shè)參、仿真、讀取結(jié)果等一系列功能。其中包含了允許Python、C++、VB編程語(yǔ)言對(duì)液壓控制系統(tǒng)進(jìn)行編程建模的功能。通過(guò)Python建立模型的代碼通用結(jié)構(gòu)如圖10所示,該結(jié)構(gòu)共分為3個(gè)部分:初始化環(huán)境、控制系統(tǒng)的構(gòu)建和完成建模并退出。

圖10 液壓系統(tǒng)建模流程Fig.10 Hydraulic system modeling flow

值得注意的是,AMESim中大多數(shù)元件都存在多個(gè)子模型,每個(gè)子模型對(duì)應(yīng)著不同的特性,因此程序在添加元件后還應(yīng)選擇一個(gè)具體的子模型。將2個(gè)元件對(duì)應(yīng)位置相互連接時(shí),由于Python語(yǔ)言對(duì)序列的計(jì)算是從0開(kāi)始的,因此,設(shè)置連接口序號(hào)時(shí)總是為實(shí)際序號(hào)值減1的值。例如,圖10中AMEConnectTwoPortsWithLine(′pump01′,0,′tank01′,0,′hydraulic′,()),表示將名為“pump01”的液壓泵1號(hào)端口和名為“tank01”的油箱1號(hào)端口用線(xiàn)連接起來(lái)。聯(lián)合仿真時(shí),機(jī)電液系統(tǒng)將使用Simulink中的仿真參數(shù),AMESim中設(shè)置的仿真參數(shù)會(huì)失去作用。在編譯模型前需要將AMESim編譯器設(shè)置為Microsoft Visual C++ 2015 and higher。

5 建立聯(lián)合仿真模型

文中的聯(lián)合仿真實(shí)驗(yàn)以噴管的簡(jiǎn)易模型為例,設(shè)計(jì)出一個(gè)針對(duì)該模型的機(jī)電液聯(lián)合仿真平臺(tái)。噴管簡(jiǎn)易模型如圖11所示,噴桶固定,通過(guò)并聯(lián)的2個(gè)液壓缸共同作用,調(diào)整噴嘴的位置。液壓缸的壓力輸入由聯(lián)合仿真系統(tǒng)中AMESim的輸出提供,液壓缸輸出位移反饋給AMESim,二者的數(shù)據(jù)交換經(jīng)Simulink平臺(tái)互相傳遞,AMESim中的伺服閥控制由Simulink發(fā)出信號(hào)。

圖11 ADAMS機(jī)械系統(tǒng)模型Fig.11 ADAMS mechanical system model

Simulink控制系統(tǒng)如圖12所示,系統(tǒng)共分為五部分:期望輸出、PID控制、Simulink和AMESim的接口文件AME2SLCoSim、Simulink和ADAMS的接口文件ADAMS_sub、仿真數(shù)組導(dǎo)出(實(shí)際模型軟件接口中的變量均為英文,圖中中文是為了方便理解)。其中,文中使用的期望輸出為恒值,通過(guò)設(shè)定2個(gè)自由度的期望位移,與ADAMS機(jī)械模型輸出的實(shí)時(shí)位移進(jìn)行PID控制,輸出的信號(hào)控制AMESim伺服閥的位置與開(kāi)度。仿真數(shù)據(jù)通過(guò)To Workspace模塊輸出到MATLAB 工作區(qū),輸出的是不包含時(shí)間序列的同名一維數(shù)組,時(shí)間可用sim()函數(shù)單獨(dú)獲取。在此之前,需要用mex-setup將MATLAB的編譯器切換成Microsoft Visual C++ 2015(c),和AMESim編譯器保持一致。

圖12 Simulink控制系統(tǒng)模型Fig.12 Simulink control system model

控制系統(tǒng)的聯(lián)合仿真平臺(tái)需要調(diào)整的參數(shù)名稱(chēng)和代碼中變量名稱(chēng)如表1所示。

表1 變量名稱(chēng)Tab.1 List of variable names

聯(lián)合仿真中AMESim液壓子系統(tǒng)模型如圖13所示(實(shí)際搭建模型時(shí),所有接口模塊的變量必須以英文表示,此處采用中文示意以方便理解),噴管模型由AMESim中的Hydraulic庫(kù)搭建[15],伺服閥的開(kāi)度由Simulink模型中的PID控制信號(hào)調(diào)節(jié),液壓缸通過(guò)力傳感器輸出無(wú)單位數(shù)值,通過(guò)AMESim和Simulink的數(shù)據(jù)接口傳入,并直接作為ADAMS的輸入量。

圖13 AMESim液壓控制系統(tǒng)模型Fig.13 AMESim hydraulic control system

圖13所示的液壓控制系統(tǒng)中聯(lián)合仿真平臺(tái)需要調(diào)整的參數(shù)和代碼變量名稱(chēng)如表2所示,若存在多個(gè)相同元件,可在AMESim變量中查看每個(gè)元件變量的參數(shù)路徑。

表2 液壓系統(tǒng)變量Tab.2 List of hydraulic system variable

前面詳細(xì)說(shuō)明了ADAMS、Simulink、AMESim二次開(kāi)發(fā)方式與原理,并給出了關(guān)鍵技術(shù)與參數(shù)代碼,使得這3個(gè)軟件同時(shí)具備了與利用第三方搭建的外部平臺(tái)交互的能力,故還建立了以圖11-13模型為基礎(chǔ)的人機(jī)交互界面。

人機(jī)交互界面主要為用戶(hù)提供直接交互功能,如圖1所示,主要包括仿真配置設(shè)置、參數(shù)顯示、用戶(hù)操作按鈕和數(shù)據(jù)顯示等功能,根據(jù)表1-2中參數(shù)變量建立的各軟件界面如圖1所示。用戶(hù)可通過(guò)對(duì)應(yīng)按鈕切換至不同軟件的設(shè)置界面,每次修改參數(shù)后需更新,將設(shè)置值寫(xiě)入程序。仿真結(jié)果使用Python的繪圖庫(kù)Matplotlib,它不僅功能強(qiáng)大、用法簡(jiǎn)潔、可移植性強(qiáng),還提供了面向?qū)ο罄L圖的API。當(dāng)機(jī)電液聯(lián)合仿真完成后,Simulink程序分別將位移變化數(shù)值和對(duì)應(yīng)的時(shí)間序列寫(xiě)入同一個(gè)excel表中,之后Matplotlib讀取表中數(shù)據(jù),經(jīng)處理后繪制折線(xiàn)圖顯示出來(lái),平臺(tái)將每一次仿真結(jié)果都保存在本地,可方便用戶(hù)選擇查看。

6 平臺(tái)驗(yàn)證結(jié)果

通過(guò)對(duì)多軟件二次開(kāi)發(fā)的聯(lián)合仿真平臺(tái)進(jìn)行機(jī)電液聯(lián)合仿真實(shí)驗(yàn),驗(yàn)證機(jī)電液虛擬實(shí)驗(yàn)的可行性和聯(lián)合仿真分析平臺(tái)的正確性。在聯(lián)合仿真平臺(tái)設(shè)置機(jī)電液控制系統(tǒng)的參數(shù),設(shè)置X-Y液壓缸和Y-Z液壓缸的期望位移分別為300 mm和200 mm,并通過(guò)設(shè)置PID控制液壓缸伺服閥的開(kāi)度而調(diào)控液壓缸位移,設(shè)置完所有參數(shù)并更新后,點(diǎn)擊開(kāi)始仿真按鈕完成仿真。聯(lián)合仿真平臺(tái)輸出的兩液壓缸實(shí)際位移如圖14所示。

圖14 實(shí)際位移Fig.14 Actual displacement:(a)X-Y hydraulic cylinder; (b)Y-Z hydraulic cylinder

分析圖14可知:該控制系統(tǒng)能很好地復(fù)現(xiàn)理論的期望值,由于AMESim中液壓缸元件存在死區(qū)容積,因此2個(gè)液壓缸位移的實(shí)際值分別在299 mm和199 mm附近波動(dòng),誤差均在2 mm以?xún)?nèi)。可知,開(kāi)發(fā)的機(jī)電液聯(lián)合仿真平臺(tái)能很好地完成虛擬實(shí)驗(yàn),驗(yàn)證了建立第三方機(jī)電液聯(lián)合仿真管理平臺(tái)的可行性,體現(xiàn)出該平臺(tái)操作的簡(jiǎn)易性。

7 結(jié)論

通過(guò)對(duì)ADAMS、AMESim、MATLAB/Simulink仿真語(yǔ)言和底層接口的深入研究,以三者為基礎(chǔ),二次開(kāi)發(fā)出可視化操作的機(jī)電液聯(lián)合仿真分析平臺(tái)。通過(guò)該平臺(tái)可實(shí)現(xiàn)對(duì)3個(gè)軟件的參數(shù)配置,有效解決了傳統(tǒng)方式需要多次切換軟件并手動(dòng)尋找配置的問(wèn)題,同時(shí)降低了操作門(mén)檻,提高了仿真效率。對(duì)平臺(tái)各部分模塊化的開(kāi)發(fā)方式,使系統(tǒng)具有較低的耦合性,提高了仿真平臺(tái)的穩(wěn)定性。

由虛擬仿真實(shí)驗(yàn)結(jié)果可知:控制系統(tǒng)能很好地復(fù)現(xiàn)給定的期望位移,建立ADAMS、AMESim、Simulink機(jī)電液系統(tǒng)聯(lián)合仿真分析平臺(tái)的研究方法具有普遍適用性,對(duì)現(xiàn)實(shí)模型的實(shí)驗(yàn)具有一定的參考價(jià)值。

猜你喜歡
二次開(kāi)發(fā)界面模型
一半模型
重要模型『一線(xiàn)三等角』
國(guó)企黨委前置研究的“四個(gè)界面”
重尾非線(xiàn)性自回歸模型自加權(quán)M-估計(jì)的漸近分布
淺談基于Revit平臺(tái)的二次開(kāi)發(fā)
甘肅科技(2020年20期)2020-04-13 00:30:02
淺談Mastercam后處理器的二次開(kāi)發(fā)
模具制造(2019年3期)2019-06-06 02:11:02
基于FANUC PICTURE的虛擬軸坐標(biāo)顯示界面開(kāi)發(fā)方法研究
西門(mén)子Easy Screen對(duì)倒棱機(jī)床界面二次開(kāi)發(fā)
人機(jī)交互界面發(fā)展趨勢(shì)研究
3D打印中的模型分割與打包
主站蜘蛛池模板: 香蕉在线视频网站| 亚洲久悠悠色悠在线播放| 亚洲一级毛片| 精品99在线观看| 极品性荡少妇一区二区色欲| 久久国产拍爱| 色综合天天操| 丁香六月激情综合| 九九热精品视频在线| 欧美综合成人| 亚洲精品日产精品乱码不卡| 成人在线视频一区| 草草影院国产第一页| 国产一区二区三区在线无码| 97成人在线视频| 亚洲国产综合精品一区| 国产精品亚洲五月天高清| 国产不卡一级毛片视频| 十八禁美女裸体网站| 国产精品成人AⅤ在线一二三四| 欧美日韩福利| 精品久久久无码专区中文字幕| 无码AV日韩一二三区| 国产91高清视频| 国产精品网曝门免费视频| 日韩高清无码免费| 亚洲资源站av无码网址| 九九九国产| aa级毛片毛片免费观看久| 亚洲国产第一区二区香蕉| 精品国产成人a在线观看| 免费高清a毛片| 妇女自拍偷自拍亚洲精品| 99精品在线看| 国产午夜福利在线小视频| 国产欧美视频综合二区| 免费无码又爽又黄又刺激网站| 内射人妻无码色AV天堂| 婷婷丁香色| 国产主播在线一区| 免费av一区二区三区在线| 国产区免费精品视频| 亚洲一级毛片免费看| 99久久精品国产综合婷婷| 国产美女精品一区二区| 一级全黄毛片| 亚洲人成成无码网WWW| 国产精品美人久久久久久AV| 国产成人高清精品免费软件| 亚洲日韩精品无码专区| 免费无码在线观看| 国产精品手机在线播放| 狠狠色综合网| 高清不卡一区二区三区香蕉| 久久亚洲日本不卡一区二区| 第一页亚洲| 免费A级毛片无码免费视频| 九色视频在线免费观看| 亚洲精品动漫在线观看| 永久在线精品免费视频观看| 9啪在线视频| 免费看久久精品99| 久久成人18免费| 国产精品无码制服丝袜| 在线看国产精品| 一本大道香蕉久中文在线播放| 亚洲综合18p| 国产精品乱偷免费视频| 99视频精品在线观看| 青草视频久久| 欧美一区二区啪啪| 国产三区二区| 国产亚洲欧美在线中文bt天堂| 日韩国产精品无码一区二区三区 | 国产在线91在线电影| 亚洲 欧美 偷自乱 图片| 国产成人免费手机在线观看视频| 国产一级做美女做受视频| 人妻夜夜爽天天爽| 久久国产香蕉| 黄色在线网| 亚洲AV无码乱码在线观看代蜜桃|