2017-12-06 14 views
1

y를 입력으로 사용하고 y를 출력하는 사인 블록을 포함하는 간단한 FMU 파일이 있습니다. 이 경우, u는 시간과 동일하게 설정됩니다. 내 C++ 코드에서는 FMILibrary에서 FMI 라이브러리를로드하고 pi (3.14)의 새 값을 입력 할 때까지 필요한 모든 단계를 수행했습니다. 그래서 나는 갔다 :시뮬레이션 중에 FMI 변수/함수를 변경하십시오.

fmistatus = fmi2_import_set_real(fmu, &uRef, 1, &pi); 
while (timeCurrent < timeEnd){ 
    fmistatus = fmi2_import_do_step(fmu, timeCurrent , stepSize, fmi2_true); 
    timeCurrent += stepSize; 
} 

이 유는 아직도 내가 그에게 새로운 가치를 제공하기 위해 노력에도 불구하고 시간으로 설정했다. 내가 뭐 놓친 거 없니?

추신. FMI 라이브러리 함수에 대한 자세한 설명은 어디에서 찾을 수 있습니까? 현재는 입력 된 출력 설명 만 찾을 수 있습니다.

업데이트 : 몇 가지 시도 후, 내 방정식 u = 시간을 재정의하려고했기 때문에이 문제가 발생한 것으로 생각됩니다. 다시 말해, openmodelica의 RealInput 블록으로 u 변수를 변경하면 모든 것이 잘됩니다. 그렇다면 정말로 특정 방정식을 재정의하고 싶다면 어떻게해야할까요? 나는 무엇을해야만 하는가?

+0

FMI에서 변수의 값을 "대체"할 수 있습니까? –

+1

관련 있음 : https://stackoverflow.com/questions/37571451/parameters-sometimes-not-editable-in-dymola-simulation-tab-and-fmu – matth

+0

내 경우에는 매개 변수가 아니라 비슷하지만 비슷합니다. 방정식. 즉 u = 시간을 u = 3.14로 변경하십시오. –

답변

1

FMI에서 변수를 설정할 수 없으며 특히 바인딩 방정식이있는 변수가 아닙니다. Modelica 모델에 "u = time;"이 있다고 가정합니다. "u = 시간"을 갖는 대신 방정식없이 최상위 입력을 추가해야합니다 (내 보낸 FMI가 입력으로 사용하도록). 그런 다음이를 사인 블록에 연결하십시오.

세부 사항 : 공동 시뮬레이션 FMI의 경우 사용자가 설정할 수있는 것에 대한 제한은 FMI2 사양의 섹션 4.2.4에있는 상태 다이어그램에 있습니다.

fmi2DoStep 사이에는 인과성 = "입력"또는 인과 관계 = "매개 변수"및 가변성 = "조정 가능"이있는 실수 변수 만 설정할 수 있습니다. 방정식이있는 입력은 한정되지 않습니다.

통합을 시작하기 전에 다른 변수에도 설정할 수 있지만 초기화에 대한 추측 값 일 뿐이며 "u = 시간"방정식을 덮어 쓰면 안됩니다.