2

Two FMUs using PYFMI and the DoStep method

Hello guys,

I am trying to perform co-simulation using two FMUs from Energyplus and OpenModelica. The thing is that I am trying to simulate them through the do_step method, but it seems that PyFMI does not support working with both Models in parallel.

When I simulate the OpenModelica FMU (standalone case) using the below-mentioned code, it works fine

batt = load_fmu("/workspaces/Eplus93/source/Cosim/BattControlB.fmu")
starttime=0
finaltime=3600
batt.initialize(starttime, finaltime,True)
stepsize=0.2
CoreTemp=[]
HeatFlow=[]
In=[]
while t_step < finaltime:
  batt.set('PowerTrigger',int(10))
  status = batt.do_step(current_t=t_step, step_size=stepsize, new_step=True)
  CoreTemp.append(np.float(batt.get('CoreTemp')))
  HeatFlow.append(np.float(batt.get('HeatFlow')))
  In.append(np.float(batt.get('PowerTrigger')))

  t_step +=stepsize

The same happens with the EnergyPlus' FMU, it works fine as a standalone case. However, when I try to join both in the same simulation it does not work as expected. The

 house = load_fmu(fmudir,log_level=0)
 batt = load_fmu(fmudir2,log_level=0)

 batt.initialize(self.start_time, self.final_time, True)
 house.initialize(self.start_time, self.final_time,True)


 while t_step < final_time:

        #Here I define the "Master" FMU
        i+=1
        house.set('Spoint1',sp1[i]) #Integer array
        house.set('Spoint2',sp2[i]) #Integer array
        troom=np.float(house.get('TRooMea'))
        Troom.append(troom)
        htgsp=np.float(house.get('SP1'))
        HtgSp.append(htgsp)

        status_house = house.do_step(current_t=t_step, step_size=stepsize, new_step=True)

        batt.set('T',troom)

       #Region to define the Slave FMU 

        while t_step2<= t_step
            batt.set('PowerTrigger',1)
            status_batt = batt.do_step(current_t=t_step2, step_size=stepsizeBat, new_step=True)
            current_heat=batt.get('HeatFlow')
            t_step2 += stepsizeBat

        logger.info("Energyplus Step {}, Modelica Step {}".format(t_step, t_step2))
        house.set('Q',current_heat)


        t_step += stepsize

Both (House and Batt) FMUs have different stepsizes being 0.2 and 600 in each case. In a nutshell, when I joined both FMUs the Modelica FMU simulates but the input that triggers the model is not activated. I do not know if these two While loops can be nested as I did, probably over there is the problem.

jdominguez94's avatar
151
jdominguez94
asked 2021-07-12 13:19:54 -0500, updated 2021-07-12 13:29:08 -0500
edit flag offensive 0 remove flag close merge delete

Comments

What do you mean by the input that triggers the model is not activated? Which variable are you referring to?

Thierry Nouidui's avatar Thierry Nouidui (2021-07-13 02:25:26 -0500) edit
add a comment see more comments

1 Answer

0

You may try pyfmi.master class for coupled simulation.

siown's avatar
1
siown
answered 2022-09-20 01:19:37 -0500
edit flag offensive 0 remove flag delete link

Comments

add a comment see more comments