This package contains base classes that are used to construct the models in Buildings.Utilities.IO.BCVTB.
Extends from Modelica.Icons.BasesPackage (Icon for packages containing base classes).
| Name | Description |
|---|---|
| Partial class for fluid interface that can be coupled to BCVTB | |
| Establishes the client socket connection | |
| Exchanges values of type Real with the socket | |
| Closes the socket for the inter process communication |
Buildings.Utilities.IO.BCVTB.BaseClasses.FluidInterface
This is a partial model that is used to construct models for interfacing fluid flow systems with the BCVTB interface.
Extends from Buildings.BaseClasses.BaseIcon (Base icon).
| Type | Name | Default | Description |
|---|---|---|---|
| replaceable package Medium | Modelica.Media.Interfaces.Pa... | Medium model within the source | |
| Boolean | use_m_flow_in | false | Get the mass flow rate from the input connector |
| MassFlowRate | m_flow | 0 | Fixed mass flow rate going out of the fluid port [kg/s] |
| Nominal condition | |||
| MassFlowRate | m_flow_nominal | Nominal mass flow rate, used for regularization near zero flow [kg/s] | |
| Advanced | |||
| MassFlowRate | m_flow_small | 1E-4*m_flow_nominal | For bi-directional flow, temperature is regularized in the region |m_flow| < m_flow_small (m_flow_small > 0 required) [kg/s] |
| Type | Name | Description |
|---|---|---|
| replaceable package Medium | Medium model within the source | |
| input RealInput | m_flow_in | Prescribed mass flow rate |
| input RealInput | T_in | Prescribed boundary temperature |
| FluidPorts_b | ports[nPorts] | |
| output RealOutput | HSen_flow | Sensible enthalpy flow rate, positive if flow into the component [W] |
partial model FluidInterface
"Partial class for fluid interface that can be coupled to BCVTB"
import Buildings;
extends Buildings.BaseClasses.BaseIcon;
replaceable package Medium =
Modelica.Media.Interfaces.PartialMedium "Medium model within the source";
parameter Integer nPorts=0 "Number of ports";
Modelica.Blocks.Interfaces.RealInput m_flow_in if use_m_flow_in
"Prescribed mass flow rate";
Modelica.Blocks.Interfaces.RealInput T_in "Prescribed boundary temperature";
parameter Boolean use_m_flow_in = false
"Get the mass flow rate from the input connector";
parameter Medium.MassFlowRate m_flow = 0
"Fixed mass flow rate going out of the fluid port";
parameter Medium.MassFlowRate m_flow_nominal(min=0)
"Nominal mass flow rate, used for regularization near zero flow";
parameter Medium.MassFlowRate m_flow_small(min=0) = 1E-4*m_flow_nominal
"For bi-directional flow, temperature is regularized in the region |m_flow| < m_flow_small (m_flow_small > 0 required)";
Buildings.Fluid.Sensors.EnthalpyFlowRate totEntFloRat[nPorts](
redeclare final package Medium = Medium,
each final m_flow_nominal=m_flow_nominal)
"Total enthalpy flow rate (sensible plus latent)";
Modelica.Fluid.Interfaces.FluidPorts_b ports[
nPorts](
redeclare each package Medium = Medium,
m_flow(each max=if flowDirection==Modelica.Fluid.Types.PortFlowDirection.Leaving then 0 else
+Modelica.Constants.inf,
each min=if flowDirection==Modelica.Fluid.Types.PortFlowDirection.Entering then 0 else
-Modelica.Constants.inf));
Modelica.Blocks.Math.Sum sumHTot_flow(nin=nPorts)
"Sum of total enthalpy flow rates";
Modelica.Blocks.Interfaces.RealOutput HSen_flow(unit="W")
"Sensible enthalpy flow rate, positive if flow into the component";
Buildings.Fluid.Sources.MassFlowSource_T bou(
redeclare package Medium = Medium,
final use_T_in=true,
final nPorts=nPorts,
use_X_in=false,
use_C_in=false,
final use_m_flow_in=true);
protected
parameter Modelica.Fluid.Types.PortFlowDirection flowDirection=
Modelica.Fluid.Types.PortFlowDirection.Bidirectional
"Allowed flow direction";
equation
connect(m_flow_in, bou.m_flow_in);
if not use_m_flow_in then
bou.m_flow_in = m_flow;
end if;
connect(totEntFloRat.port_b, bou.ports);
connect(sumHTot_flow.u, totEntFloRat.H_flow);
connect(bou.T_in, T_in);
end FluidInterface;
For the xml file name, on Windows use two backslashes to separate directories, i.e., use
xmlFileName="C:\\examples\\dymola-room\\socket.cfg"
| Type | Name | Default | Description |
|---|---|---|---|
| String | xmlFileName | "socket.cfg" | Name of xml file that contains the socket information |
| Type | Name | Description |
|---|---|---|
| Integer | socketFD | Socket file descripter, or a negative value if an error occured |
function establishClientSocket
"Establishes the client socket connection"
input String xmlFileName = "socket.cfg"
"Name of xml file that contains the socket information";
output Integer socketFD
"Socket file descripter, or a negative value if an error occured";
external "C"
socketFD=establishModelicaClient(xmlFileName);
end establishClientSocket;
Real with the socket.
This function must only be called once in each
communication interval.
| Type | Name | Default | Description |
|---|---|---|---|
| Integer | socketFD | Socket file descripter | |
| Integer | flaWri | Communication flag to write to the socket stream | |
| Time | simTimWri | Current simulation time in seconds to write [s] | |
| Real | dblValWri[nDblWri] | Double values to write | |
| Integer | nDblWri | Number of double values to write | |
| Integer | nDblRea | Number of double values to read |
| Type | Name | Description |
|---|---|---|
| Integer | flaRea | Communication flag read from the socket stream |
| Time | simTimRea | Current simulation time in seconds read from socket [s] |
| Real | dblValRea[nDblRea] | Double values read from socket |
| Integer | retVal | The exit value, which is negative if an error occured |
function exchangeReals
"Exchanges values of type Real with the socket"
input Integer socketFD(min=1) "Socket file descripter";
input Integer flaWri "Communication flag to write to the socket stream";
input Modelica.SIunits.Time simTimWri
"Current simulation time in seconds to write";
input Real[nDblWri] dblValWri "Double values to write";
input Integer nDblWri "Number of double values to write";
input Integer nDblRea "Number of double values to read";
output Integer flaRea "Communication flag read from the socket stream";
output Modelica.SIunits.Time simTimRea
"Current simulation time in seconds read from socket";
output Real[nDblRea] dblValRea "Double values read from socket";
output Integer retVal "The exit value, which is negative if an error occured";
external "C"
retVal=exchangeModelicaClient(socketFD,
flaWri, flaRea,
simTimWri,
dblValWri, nDblWri,
simTimRea,
dblValRea, nDblRea);
end exchangeReals;
| Type | Name | Default | Description |
|---|---|---|---|
| Integer | socketFD | Socket file descripter, or a negative value if an error occured |
| Type | Name | Description |
|---|---|---|
| Integer | retVal | Return value of the function that closes the socket connection |
function closeClientSocket
"Closes the socket for the inter process communication"
input Integer socketFD
"Socket file descripter, or a negative value if an error occured";
output Integer retVal
"Return value of the function that closes the socket connection";
external "C"
retVal=closeModelicaClient(socketFD);
end closeClientSocket;