forked from RnD/rotatingMachine
added default liquid temp and atm pressure, added nhyd - specific flow and specific energy consumption
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
const EventEmitter = require('events');
|
||||
const {loadCurve,logger,configUtils,configManager,state, nrmse, MeasurementContainer, predict, interpolation , childRegistrationUtils} = require('generalFunctions');
|
||||
const { name } = require('../../generalFunctions/src/convert/lodash/lodash._shimkeys');
|
||||
const {loadCurve,gravity,logger,configUtils,configManager,state, nrmse, MeasurementContainer, predict, interpolation , childRegistrationUtils,coolprop} = require('generalFunctions');
|
||||
const pressure = require('../../generalFunctions/src/convert/definitions/pressure');
|
||||
|
||||
class Machine {
|
||||
|
||||
@@ -84,9 +84,21 @@ class Machine {
|
||||
this._updateState();
|
||||
});
|
||||
|
||||
|
||||
//perform init for certain values
|
||||
this._init();
|
||||
|
||||
this.child = {}; // object to hold child information so we know on what to subscribe
|
||||
this.childRegistrationUtils = new childRegistrationUtils(this); // Child registration utility
|
||||
|
||||
|
||||
}
|
||||
|
||||
_init(){
|
||||
//assume standard temperature is 20degrees
|
||||
this.measurements.type('temperature').variant('measured').position('atEquipment').value(15).unit('C');
|
||||
//assume standard atm pressure is at sea level
|
||||
this.measurements.type('atmPressure').variant('measured').position('atEquipment').value(101325).unit('Pa');
|
||||
}
|
||||
|
||||
_updateState(){
|
||||
@@ -670,15 +682,36 @@ _callMeasurementHandler(measurementType, value, position, context) {
|
||||
return { cPower, cFlow };
|
||||
}
|
||||
|
||||
calcEfficiency(power, flow, variant) {
|
||||
calcEfficiency(power,flow,variant) {
|
||||
|
||||
const pressureDiff = this.measurements.type('pressure').variant('measured').difference('Pa');
|
||||
const g = gravity.getStandardGravity();
|
||||
const temp = this.measurements.type('temperature').variant('measured').position('atEquipment').getCurrentValue('K');
|
||||
const atmPressure = this.measurements.type('atmPressure').variant('measured').position('atEquipment').getCurrentValue('Pa');
|
||||
const rho = coolprop.PropsSI('D', 'T', temp, 'P', atmPressure, 'WasteWater');
|
||||
|
||||
|
||||
this.logger.debug(`temp: ${temp} atmPressure : ${atmPressure} rho : ${rho} pressureDiff: ${pressureDiff?.value || 0}`);
|
||||
const flowM3s = this.measurements.type('flow').variant('predicted').position('atEquipment').getCurrentValue('m3/s');
|
||||
const powerWatt = this.measurements.type('power').variant('predicted').position('atEquipment').getCurrentValue('W');
|
||||
this.logger.debug(`Flow : ${flowM3s} power: ${powerWatt}`);
|
||||
|
||||
if (power != 0 && flow != 0) {
|
||||
// Calculate efficiency after measurements update
|
||||
this.measurements.type("efficiency").variant(variant).position('atEquipment').value((flow / power));
|
||||
} else {
|
||||
this.measurements.type("efficiency").variant(variant).position('atEquipment').value(null);
|
||||
}
|
||||
const specificFlow = flow / power;
|
||||
const specificEnergyConsumption = power / flow;
|
||||
|
||||
this.measurements.type("efficiency").variant(variant).position('atEquipment').value(specificFlow);
|
||||
this.measurements.type("specificEnergyConsumption").variant(variant).position('atEquipment').value(specificEnergyConsumption);
|
||||
|
||||
if(pressureDiff?.value != null && flowM3s != null && powerWatt != null){
|
||||
const meterPerBar = pressureDiff.value / rho * g;
|
||||
const nHydraulicEfficiency = rho * g * flowM3s * (pressureDiff.value * meterPerBar ) / powerWatt;
|
||||
this.measurements.type("nHydraulicEfficiency").variant(variant).position('atEquipment').value(nHydraulicEfficiency);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//change this to nhydrefficiency ?
|
||||
return this.measurements.type("efficiency").variant(variant).position('atEquipment').getCurrentValue();
|
||||
|
||||
}
|
||||
@@ -768,8 +801,8 @@ _callMeasurementHandler(measurementType, value, position, context) {
|
||||
module.exports = Machine;
|
||||
|
||||
/*------------------- Testing -------------------*/
|
||||
/*
|
||||
|
||||
/*
|
||||
curve = require('C:/Users/zn375/.node-red/public/fallbackData.json');
|
||||
|
||||
//import a child
|
||||
|
||||
Reference in New Issue
Block a user