Windows로 Modelica와 Python을 연결합니다

모델 기반 개발 환경을 쉽게 구축하고자 함에서 소개한 모델리카와 파이톤의 합작 방법에 대해.

의 목적


이번 목적은 아래의 조작을 진행하는 것이다.
  • Modelica를 사용하여 물리적 모델을 생성합니다.
  • 물리 모형은 Pymodelica 모듈(JModelica)을 통해 FMU 형식으로 컴파일되었다.
  • PyFMI 모듈(JModelica)을 사용하여 FMU 파일을 계산합니다.
  • 계산 결과는 파이톤의 Matplotlib 모듈로 도표를 표시합니다.
  • 환경 설정


    운영 환경

  • Windows 10 (64bit)
  • Anaconda2 설치



    Anaconda를 통해 아날로그 메인 사이트로 연결되는 Python 실행 환경을 구축합니다.후술한 JModelica는 파이톤 2 32비트만 대응하고 아나콘다도 이에 대응하는 것을 사용하기 때문이다.(다른 Pytohon 환경이 설치되어 있는 경우 추가 설치도 가능합니다.)
    다음 페이지에서 Python 2.7 version(32비트) 버전의 설치 프로그램을 다운로드하십시오.
    Download Anaconda Now! | Continuum
    다운로드한 설치 프로그램을 실행하면 기본적으로 기본 상태를 유지합니다.설치 폴더는 C:\Anaconda2로 설정됩니다.

    JModelica 설치


    PyModelica 및 PyFMI 모듈을 사용하려면 JModelica를 설치합니다.

    아래 페이지에서 최신 설치 프로그램을 다운로드하십시오.
    Download | JModelica.org
    Python 모듈을 설치할 때 설치 위치C:\Anaconda2를 선택합니다.

    Modelica 모델 생성하기


    이번에는'Windows에서 Open Modelica 사용'에 소개된 것Modelica.Thermal.HeatTransfer.Exsamples.Motor을 모델리카 형식으로 저장했다.
    ozawaat/FMI_MotorMotor.mo에 저장되어 있습니다. 이것을 사용하세요.Motor.mo를 적절한 곳에 보관하십시오.

    Modelica 모델을 FMU 형식으로 컴파일하기


    JModelica에서 Python 시작하기


    저장된 폴더Motor.mo에서 Python을 조작합니다.다음 중 하나를 사용하여 Python을 시작합니다.
  • [화면 왼쪽 아래 Windows 태그]→[JModelica. org-1.17]에서 IPython을 열고 콘솔에 넣기!cd C:\[Motor.moが保存されているフォルダ]\폴더를 이동합니다.
  • Motor.mo와 같은 폴더C:\JModelica.org-1.17에서 IPython.bat로 복사됩니다.IPython을 열려면 여기IPython.bat를 두 번 클릭합니다.

  • Modelica 파일을 FMU로 컴파일하기

    Motor.mo와 같은 폴더에 다음 파일을 저장합니다.
    Motor_Compile.py
    from pymodelica import compile_fmu
    model_name = 'Motor'
    mo_file = 'Motor.mo'
    my_fmu = compile_fmu(model_name, mo_file, target='cs')
    
    IPython 콘솔에서run Motor_Compile.py Motor.mo를 컴파일하고 Motor.fmu를 만듭니다.

    FMU를 Pythhon으로 계산하여 차트에 표시

    Motor.mo와 같은 폴더에 다음 파일을 저장합니다.
    Motor.py
    import matplotlib.pyplot as plt
    from pyfmi import load_fmu
    
    model = load_fmu('Motor.fmu')
    opts = model.simulate_options()
    opts["ncp"] = 1000
    
    res = model.simulate(final_time=100000, options=opts)
    
    T1 = res['Twinding.T']
    T2 = res['Tcore.T']
    t = res['time']
    
    plt.plot(t, T1, label="Twinding.T")
    plt.plot(t, T2, label="Tcore.T")
    plt.legend(loc='best')
    plt.xlabel('time [sec]')
    plt.ylabel('Temperature [K]')
    plt.show()
    
    IPython 콘솔에서run Motor.py, Python에서 계산Motor.fmu되며 다음 차트가 표시됩니다.

    좋은 웹페이지 즐겨찾기