modelGenericStorageHyst

Highly adaptable but non-physical model for all kinds of energy storages with hysteresis if storage is full (recommended for storage with losses)

Extends from GenericStorage_base (Partial class for highly adaptable but non-physical model for all kinds of energy storages).

Information

1. Purpose of model

Highly adaptable but non-physical model for all kinds of energy storages. Has a hysteresis for when the storage is full and empty. Recommended for storage models with losses.

2. Level of detail, physical effects considered, and physical insight

(no remarks)

3. Limits of validity

(no remarks)

4. Interfaces

P_set: input for electric power in [W] -Grid side setpoint power (Positive = load request, negative = unload request) [W]

P_is: output for electric power in [W]- Grid side power (Positive = loading, negative = unloading) [W]

5. Nomenclature

(no remarks)

6. Governing Equations

(no remarks)

7. Remarks for Usage

Boolean parameter use_PowerRateLimiter can deactive block 'PowerRateLimiter'. This might lead to faster calculation results if power rate limitation is not needed.

PlantDynamics: Set T_plant to 0 in StorageParameters to deactivate first order block

8. Validation

Tested in check model "TransiEnt.Storage.Base.Check.TestGenericStorage"

9. References

(no remarks)

10. Version History

Model extended from base class by Carsten Bode (c.bode@tuhh.de), Nov 2018

Model adapted by Oliver Schülting (oliver.schuelting@tuhh.de), April 2018: added first order plant dynamics block which can be deactivated.

Model adapted by Anne Senkel (anne.senkel@tuhh.de),March 2020: Hysteresis can be used when storage is empty as well.

Parameters

TypeNameDefaultDescription
GenericStorageParametersparams (from GenericStorage_base)Record of generic storage parameters
Booleanuse_PowerRateLimiter (from GenericStorage_base)trueUse Power Rate Limitation
RealNd_powerRateLimiter (from GenericStorage_base)1/simCenter.TdThe higher Nd, the closer y follows u in the power rate limiter
SI.TimeT_plant (from GenericStorage_base)params.T_plantfirst order plant dynamic
Booleanuse_plantDynamic (from GenericStorage_base)falsechoose if first order plant dynamic is used
Booleanuse_inverterEfficiency (from GenericStorage_base)falsechoose if efficiency curve of inverter is used for loading and unloading
Real[:,:]efficiencyCurve_inverter (from GenericStorage_base)[0, 0; 0.5, 70.6425; 1, 84.9247; 1.5, 89.6817; 2, 92.0574; 2.5, 93.4807; 3, 94.4276; 3.5, 95.1024; 4, 95.6072; 4.5, 95.9985; 5, 96.3104; 5.5, 96.5646; 6, 96.7756; 6.5, 96.9532; 7, 97.1046; 7.5, 97.2351; 8, 97.3486; 8.5, 97.4481; 9, 97.536; 9.5, 97.614; 10, 97.6836; 10.5, 97.7461; 11, 97.8024; 11.5, 97.8533; 12, 97.8995; 12.5, 97.9416; 13, 97.98; 13.5, 98.0151; 14, 98.0473; 14.5, 98.077; 15, 98.1043; 15.5, 98.1294; 16, 98.1527; 16.5, 98.1742; 17, 98.1941; 17.5, 98.2125; 18, 98.2296; 18.5, 98.2455; 19, 98.2603; 19.5, 98.274; 20, 98.2868; 20.5, 98.2986; 21, 98.3097; 21.5, 98.3199; 22, 98.3295; 22.5, 98.3384; 23, 98.3466; 23.5, 98.3543; 24, 98.3614; 24.5, 98.368; 25, 98.3741; 25.5, 98.3797; 26, 98.3849; 26.5, 98.3897; 27, 98.3942; 27.5, 98.3982; 28, 98.4019; 28.5, 98.4053; 29, 98.4084; 29.5, 98.4112; 30, 98.4137; 30.5, 98.416; 31, 98.418; 31.5, 98.4197; 32, 98.4212; 32.5, 98.4225; 33, 98.4236; 33.5, 98.4245; 34, 98.4253; 34.5, 98.4258; 35, 98.4261; 35.5, 98.4263; 36, 98.4264; 36.5, 98.4262; 37, 98.426; 37.5, 98.4256; 38, 98.425; 38.5, 98.4243; 39, 98.4235; 39.5, 98.4226; 40, 98.4216; 40.5, 98.4204; 41, 98.4192; 41.5, 98.4178; 42, 98.4163; 42.5, 98.4148; 43, 98.4131; 43.5, 98.4114; 44, 98.4096; 44.5, 98.4077; 45, 98.4057; 45.5, 98.4036; 46, 98.4014; 46.5, 98.3992; 47, 98.3969; 47.5, 98.3946; 48, 98.3921; 48.5, 98.3897; 49, 98.3871; 49.5, 98.3845; 50, 98.3818; 50.5, 98.3791; 51, 98.3763; 51.5, 98.3735; 52, 98.3706; 52.5, 98.3676; 53, 98.3646; 53.5, 98.3616; 54, 98.3585; 54.5, 98.3554; 55, 98.3522; 55.5, 98.349; 56, 98.3457; 56.5, 98.3424; 57, 98.3391; 57.5, 98.3357; 58, 98.3323; 58.5, 98.3288; 59, 98.3253; 59.5, 98.3218; 60, 98.3182; 60.5, 98.3146; 61, 98.311; 61.5, 98.3074; 62, 98.3037; 62.5, 98.3; 63, 98.2962; 63.5, 98.2924; 64, 98.2886; 64.5, 98.2848; 65, 98.281; 65.5, 98.2771; 66, 98.2732; 66.5, 98.2692; 67, 98.2653; 67.5, 98.2613; 68, 98.2573; 68.5, 98.2533; 69, 98.2492; 69.5, 98.2451; 70, 98.2411; 70.5, 98.2369; 71, 98.2328; 71.5, 98.2287; 72, 98.2245; 72.5, 98.2203; 73, 98.2161; 73.5, 98.2119; 74, 98.2076; 74.5, 98.2033; 75, 98.1991; 75.5, 98.1948; 76, 98.1904; 76.5, 98.1861; 77, 98.1818; 77.5, 98.1774; 78, 98.173; 78.5, 98.1686; 79, 98.1642; 79.5, 98.1598; 80, 98.1554; 80.5, 98.1509; 81, 98.1464; 81.5, 98.142; 82, 98.1375; 82.5, 98.133; 83, 98.1285; 83.5, 98.1239; 84, 98.1194; 84.5, 98.1148; 85, 98.1103; 85.5, 98.1057; 86, 98.1011; 86.5, 98.0965; 87, 98.0919; 87.5, 98.0873; 88, 98.0826; 88.5, 98.078; 89, 98.0733; 89.5, 98.0687; 90, 98.064; 90.5, 98.0593; 91, 98.0546; 91.5, 98.0499; 92, 98.0452; 92.5, 98.0405; 93, 98.0358; 93.5, 98.031; 94, 98.0263; 94.5, 98.0215; 95, 98.0168; 95.5, 98.012; 96, 98.0072; 96.5, 98.0024; 97, 97.9976; 97.5, 97.9928; 98, 97.988; 98.5, 97.9832; 99, 97.9784; 99.5, 97.9735; 100, 97.9687]/100
BooleanstationaryLossOnlyIfInactive (from GenericStorage_base)false
RealrelDeltaEnergyHystFull0.001Relative energy change for the hysteresis to determine if storage is full
RealrelDeltaEnergyHystEmpty0.001Relative energy change for the hysteresis to determine if storage is full

Connectors

TypeNameDefaultDescription
TransiEnt.Basics.Interfaces.Electrical.ElectricPowerInP_set (from GenericStorage_base)Grid side setpoint power (Positive = load request, negative = unload request)
TransiEnt.Basics.Interfaces.Electrical.ElectricPowerOutP_is (from GenericStorage_base)Grid side power (Positive = loading, negative = unloading)
TransiEnt.Basics.Interfaces.Electrical.ElectricPowerOutP_max_load_is (from GenericStorage_base)

Components

TypeNameDefaultDescription
TransiEnt.SimCentersimCenter (from GenericStorage_base)
Modelica.Units.SI.EnergyE (from GenericStorage_base)
RealSOC (from GenericStorage_base)(E - params.E_min)/(params.E_max - params.E_min)
Modelica.Units.SI.EnergyE_delta (from GenericStorage_base)E - params.E_startState of charge (0..1)
StationaryLossModelstationaryLoss (from GenericStorage_base)
Modelica.Blocks.Sources.RealExpressionE_is (from GenericStorage_base)Internal energy level before stationary loss (energy level directly after load or unloading)
ClaRa.Components.Utilities.Blocks.VariableGradientLimiterPowerRateLimit (from GenericStorage_base)
Modelica.Blocks.Nonlinear.VariableLimiterPowerLimit (from GenericStorage_base)
Modelica.Blocks.Logical.NorCapacityOk (from GenericStorage_base)
Modelica.Blocks.Sources.ConstantCapacityLimit (from GenericStorage_base)
Modelica.Blocks.Logical.SwitchP_is_external (from GenericStorage_base)
Modelica.Blocks.Logical.AndEmptyAndDischarging (from GenericStorage_base)
Modelica.Blocks.Logical.AndFullAndCharging (from GenericStorage_base)
Modelica.Blocks.Logical.LessEqualThresholdDischargeDemand (from GenericStorage_base)
Modelica.Blocks.Logical.NotChargeDemand (from GenericStorage_base)
Modelica.Blocks.Math.ProductP_is_internal (from GenericStorage_base)Internal power that defines state of charge, i.e. after conversion losses (Losses while loading / unloading)
Modelica.Blocks.Logical.SwitchconversionEfficiency (from GenericStorage_base)
Modelica.Blocks.Sources.RealExpressionloadingEfficiency (from GenericStorage_base)
Modelica.Blocks.Sources.RealExpressioneta_unload (from GenericStorage_base)
Modelica.Blocks.Sources.RealExpressionP_max_load (from GenericStorage_base)
Modelica.Blocks.Sources.RealExpressionP_max_unload_neg (from GenericStorage_base)
Modelica.Blocks.Logical.SwitchstationaryLoss_internal (from GenericStorage_base)
Modelica.Blocks.Sources.ConstantCapacityLimit1 (from GenericStorage_base)
Basics.Blocks.FirstOrderplantDynamic (from GenericStorage_base)
Modelica.Blocks.Logical.SwitchP_in_inverter (from GenericStorage_base)
Modelica.Blocks.Math.Producteta_total (from GenericStorage_base)
Modelica.Blocks.Tables.CombiTable1DscombiTable1Ds_inverterEfficiency (from GenericStorage_base)
Modelica.Blocks.Sources.RealExpressionP_in_inverter_unloading (from GenericStorage_base)
Modelica.Blocks.Sources.RealExpressionP_in_inverter_loading (from GenericStorage_base)
Modelica.Blocks.Logical.Greatergreater (from GenericStorage_base)
Modelica.Blocks.Logical.Lessless (from GenericStorage_base)
Modelica.Blocks.Sources.RealExpressionrealExpression (from GenericStorage_base)
Modelica.Blocks.Logical.NornotActive (from GenericStorage_base)
Modelica.Blocks.Logical.Nornor (from GenericStorage_base)
Modelica.Blocks.Logical.LogicalSwitchlogicalSwitch (from GenericStorage_base)
Modelica.Blocks.Sources.BooleanExpressionbooleanExpression (from GenericStorage_base)
Modelica.Blocks.Logical.Notactive (from GenericStorage_base)
Modelica.Blocks.Logical.Notnot1 (from GenericStorage_base)
Modelica.Blocks.Logical.HysteresisisStorageFull
Modelica.Blocks.Logical.HysteresisisStorage_Empty
Modelica.Blocks.Math.Gaingain