feifeidexie 发表于 2014-7-30 09:42:08

Adams中振动后台运行

Adams中振动后台运行

本文主要说明利用Adams/Vibration模块在频域范围内进行后台分析,在这实际工程中有一定的应用。要完成这一分析流程,需要借助Python编译环境,Python作为一款应用广泛的编程软件,在很多工程仿真软件上都有其拓展应用的身影。基本步骤:l利用Adams创建振动分析用的模型,并以Adm方式保存,还需要有控制仿真过程的脚本文件,即Acf文件;l利用Adams与Python的接口功能定义激励信号,输入通道,输出通道;l利用Adams与Python的接口功能定义输出,将线性系统的频响特性保存在Xml文件中,同时生成Cmd文件用于Adams后处理;具体执行过程如下:第一,启动cmd命令窗口,并将工作路径指定到相关位置:C:\Users\cnzc8469\Desktop\batch。http://www.caetecc.com/data/attachment/forum/201407/30/093943jd89888erjwlrpsl.jpg
   点击回车后会产生如下变化,但最关键的是如下文件的生成:http://www.caetecc.com/data/attachment/forum/201407/30/093944jl61jn4cd0wd1o7m.jpg
http://www.caetecc.com/data/attachment/forum/201407/30/093946xh0mevvtu08hvz77.jpg
       这里面关键的设置在Python脚本文件中,需要工程师首先熟悉Python的语法格式以及同Adams相关的API,可以参考帮助下的Testing your model章节,又详细地接口函数说明。frommsc.ADAMS.Vibration.AvActuator import *frommsc.ADAMS.Vibration.AvOutputChannel import * frommsc.ADAMS.Vibration.AvInputChannelimport * frommsc.ADAMS.Vibration.AvLinearize   import * frommsc.ADAMS.Vibration.AvUtils         import *fromAvPPTCmdExporter import *############################################这一部分相当于Include包含文件功能 defmessage_handler(msg, type, data): """Message handler forvibration""" if type == "i":     print "ADAMS/Vibration Info: %s"% (msg) elif type == "w":     print "ADAMS/Vibration Warn: %s"% (msg) else :     print "ADAMS/Vibration Error: %s"% (msg) if __name__ =='__main__':# open a log file for logging messageslogFile = open("sla_batch.log","w")try:    # Check out the vibration license     vib_ok = AvAPI.AcquireLicense()    if vib_ok:      # set message handler    AvAPI().PushMessageHandler(message_handler, [])       # 创建激励信号      act_vert = AvActuatorSweptSine('SS1','Displacement', 5, 0)      #创建输入通道,注意相关参数      InChVert =AvInputChannelMarker("PadDispInput", 114, "Translational","Global", "Z", act_vert)      inList =       # 创建输出通道      CVA=AvOutputChannelPredefined("ChassisVertAccl", 105,"Acceleration", "Z")       # Measure acceleration at steering rack.      TRA=AvOutputChannelPredefined("TieRodAccl", 100,"Acceleration", "X")       outList =       base_name = "sla_batch"      MDI_CPU = os.environ['MDI_CPU']      TOPDIR = os.environ['topdir']         if MDI_CPU == "win32":          if os.path.isdir(TOPDIR) != 0:            TOPDIR = os.environ['SHORT_TOPDIR']      base_path =TOPDIR+'/vibration/examples/python_batch_analysis/'+base_name      model    = base_path+".adm"      acFile   = base_path+".acf"      #上面两行读取对应模型与脚本控制命令文件      mList = []      # 创建振动仿真分析参数,如模型名称,频域设定等      Model = AvLinearModel(model, inList,outList, acFile, True, base_name, mList)      if Model:      # set the frequencies       f = AvMakeFrequency(0.1, 250, 500,True)      Freq = AvAPI_Matrix(len(f), f)       # 计算频响      FR = Model.FrequencyResponse(Freq)       # 传递函数      TF = Model.TransferFunction(Freq)       # 将计算结果写入到XML文件中      matFile =open(base_name+".xml", "w")      writeXMLHeader(matFile)      writeMatrixXML(matFile, Freq,"Frequency range"   )      writeMatrixXML(matFile, FR,   "Frequency Response")      writeMatrixXML(matFile, TF,   "Transfer Function" )          writeXMLFooter(matFile)      matFile.close()      # 生成CMD文件用于后处理中      amdModel = AvAMD(model)      pptCmdExporter =VibPPTCmdExporter(".sla_basic", base_name+".cmd", amdModel,inList, outList, 0.1, 250.0, 500, True)       pptCmdExporter.writeCmdForPPT(base_name)      else:      logFile.write("Could not producelinear model check execution display for errors.")      AvAPI().PopMessageHandler()       # 检查口令许可      AvAPI.ReleaseLicense()    else:       logFile.write("Could not getADAMS/Vibration Solver license")except Exception:    formatExceptionInfo(logFile)    最后,可以直接打开Adams后处理界面,将生成的CMD文件导入,查看相关信息,如频响等内容。
http://www.caetecc.com/data/attachment/forum/201407/30/093948uxlxmjmf63uzpc63.jpg

页: [1]
查看完整版本: Adams中振动后台运行