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 |
---|---|
FluidInterface | Partial class for fluid interface that can be coupled to BCVTB |
establishClientSocket | Establishes the client socket connection |
exchangeReals | Exchanges values of type Real with the socket |
closeClientSocket | Closes the socket for the inter process communication |
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;