0

我有一个 C 中的小代码,我想用它来调用 IMF 函数,fmu_sdk以便能够在 FMU 中导出我的模型。

如果你能告诉我我需要如何使用这些功能,这是我的程序:

程序C

最好的问候玛丽

4

3 回答 3

0

我能够编写代码 C,但我没有设法获得好的结果,我无法增加 e1 和 e2 的值,值不会随时间变化,如果可以的话 m 帮助您编写确切的代码

#define MODEL_IDENTIFIER prog_entree1
#define MODEL_GUID "{8c4e810f-3da3-4a00-8276-176fa3c9f013}"

// define model size
#define NUMBER_OF_REALS    0
#define NUMBER_OF_INTEGERS 0
#define NUMBER_OF_BOOLEANS 3
#define NUMBER_OF_STRINGS 0
#define NUMBER_OF_STATES 0
#define NUMBER_OF_EVENT_INDICATORS 0

// include fmu header files, typedefs and macros
#include "fmuTemplate.h"
//#include "prog1entrée.c"
#define e1  0
#define e2  1
#define s_  2

void setStartValues(ModelInstance *comp) {
b(e1) = 1;
b(e2) = 0;
}

void calculateValues(ModelInstance *comp) {
 if (comp->state == modelInitializationMode) {
   b(s_)= b(e1) && b(e2);
    }
  }

 fmi2Boolean getBoolean(ModelInstance* comp, fmi2ValueReference vr)
{
switch(vr)
{
   case e1 : return b(e1);
   case e2 : return b(e2);
   case s_  : return b(s_);
}
}
void eventUpdate(ModelInstance *comp, fmi2EventInfo *eventInfo, int  
timeEvent, int isNewEventIteration)
{
}

// include code that implements the FMI based on the above definitions
#include "fmuTemplate.c"

模拟后得到的结果在 此处输入图像描述

于 2017-07-12T12:12:46.350 回答
0
  #include <stdio.h>
  #include <stdlib.h>

 #define vrai 1
 #define faux 0
 typedef enum BOOLEAN {false, true} bool;
 bool function_ET(bool e1,bool e2);
 int main(){
   bool e1;
   bool e2;
   bool s;

printf("entrez les valeur de e1 et e2:");
scanf("%d%d",&e1 ,&e2);
   s = function_ET(e1,e2);
printf("s = %d",s);
}
bool function_ET(bool e1,bool e2){
   return(e1 & e2);
}
于 2017-07-06T21:56:56.133 回答
0

您要创建模型交换还是联合仿真 FMU?

这是一个模型交换 FMU 的链接,它为两个布尔输入值(FMI 2.0,win64)实现 AND:https ://www.dropbox.com/s/su8pyjdtg4hs7v1/fmu_boolRef.fmu?dl=0 这里是联合仿真 FMU 的链接:https ://www.dropbox.com/s/bcbl8tf6xb4jc8x/fmu_boolRef.fmu?dl=0

您也可以将包含的源代码编译为协同仿真 FMU。

于 2017-07-12T20:43:26.137 回答