'use strict'; var configuratorApp = angular.module("batteryApp", []); configuratorApp.controller("batteryController", ["$scope", "$timeout", function($scope, $timeout) { $scope.options = { modes: [{ localName: { de: "Energiesparmodus", en: "Energy-saving mode" }, value: 1 }, { localName: { de: "Dauerbetrieb", en: "Continuous operation" }, value: 2 }], energyTypes: [{ localName: { de: "Batterie", en: "Battery" }, value: 1 }, { localName: { de: "Akku", en: "Rechargeable battery" }, value: 2 }], startTimes: [{ localName: { de: "60 Sek. (plicsĀ®-Sensoren)", en: "60 Sec. (plicsĀ®-Sensors)" }, value: 60 },{ localName: { de: "10 Sek. (z.B. VEGAPULS C 21)", en: "10 Sec. (e.g. VEGAPULS C 21)" }, value: 10 }], deviceCount: { min: 1, max: 15 }, measurementCount: { min: 1, max: 96 }, messagesCount: { min: 1, max: 96 } }; $scope.settings = { mode: $scope.options.modes[0], energyType: $scope.options.energyTypes[0], batteryFromVega: true, customerBatteryVoltage: 3.6, customerBatteryCapacity: 13000, exApproval: false, bluetoothOn: false, startTime: $scope.options.startTimes[0], deviceCount: 1, measurementCount: 1, messagesCount: 1 } var batteryParams = []; batteryParams[20] = { cells: 4, voltage: 3.6, capacity: 13000, loss: 95, efficiency: 100, yearlyLossPercent: 3, }; batteryParams[0] = { cells: 4, voltage: 3.6, capacity: 11250, loss: 95, efficiency: 100, yearlyLossPercent: 3, }; batteryParams[-20] = { cells: 4, voltage: 3.6, capacity: 9500, loss: 95, efficiency: 100, yearlyLossPercent: 3, }; var akkuParams = { cells: 4, voltage: 1.2, capacity: 10000, loss: 95, efficiency: 70, yearlyLossPercent: 20, }; $scope.getResult = function(degree){ var params = $scope.settings.batteryFromVega ? ($scope.settings.energyType.value === 1 ? batteryParams[degree] : akkuParams) : getCustomerBatteryParams(); var result = getEnergyWh(params) * 1000 / (getDailyLossMwh(params) + B75() + B81() + E53()); return result; } $scope.energyTypeChanged = function(energyType){ $scope.settings.customerBatteryVoltage = energyType.value === 1 ? batteryParams[0].voltage : akkuParams.voltage; $scope.settings.customerBatteryCapacity = energyType.value === 1 ? batteryParams[0].capacity : akkuParams.capacity; } var getCustomerBatteryParams = function(){ var voltage = angular.copy($scope.settings.customerBatteryVoltage).toString(); var capacity = angular.copy($scope.settings.customerBatteryCapacity).toString(); return { cells: 4, voltage: parseFloat(voltage.replace(",", ".")), capacity: parseFloat(capacity.replace(",", ".")), loss: 95, efficiency: $scope.settings.energyType.value === 1 ? 100 : 70, yearlyLossPercent: $scope.settings.energyType.value === 1 ? 3 : 20 } } $scope.setExApproval = function(value){ $scope.settings.exApproval = value; if(value === true){ $scope.options.deviceCount.max = 5; if($scope.settings.deviceCount > $scope.options.deviceCount.max) $scope.settings.deviceCount = $scope.options.deviceCount.max; }else{ $scope.options.deviceCount.max = 15; } } var getEnergyWh = function(params){ // E69 params.energy = params.cells * params.voltage * params.capacity / 1000; params.nominalPower = params.energy * params.loss / 100; params.usableEnergy = params.nominalPower * params.efficiency / 100; console.log("getEnergyWh", params.usableEnergy); return params.usableEnergy; } var getDailyLossMwh = function(params){ // M16 params.energy = params.cells * params.voltage * params.capacity / 1000; params.nominalPower = params.energy * params.loss / 100; params.usableEnergy = params.nominalPower * params.efficiency / 100; params.dailyLossPercent = params.yearlyLossPercent / 365; params.dailyLossMwh = params.usableEnergy * params.dailyLossPercent / 100; console.log("getDailyLossMwh/E70", params.dailyLossMwh); return params.dailyLossMwh; } var BaseLoadPMT81NoBtEneryMode = function(){ return 20 * 0.031 * 24; } var E29 = function(){ return 14.4 * 0.028 * 24; } var E35 = function(){ return 20 * 0.22 * 24; } var E36 = function(){ return 14.4 * 0.293 * 24; } var E40 = function(){ var result = 32 * 13 * 24; console.log("E40", result); return result; } var E41 = function(){ var result = 24 * 17 * 24; console.log("E41", result); return result; } var E42 = function(){ var result = 20 * 20 * 24; console.log("E42", result); return result; } var E43 = function(){ var result = 14.4 * 26 * 24; console.log("E43", result); return result; } var E47 = function(){ var result = 24 * 4 * 24; console.log("E47", result); return result; } var E48 = function(){ var result = 14.7 * 7 * 24; console.log("E48", result); return result; } var E51 = function(){ var result = 14.4 * 0.17 * 24; console.log("E51", result); return result; } var E52 = function(){ var result = 5 * 0.2 * 24; console.log("E52", result); return result; } var E53 = function(){ var result; // If Batterie if($scope.settings.energyType.value === 1){ result = E51(); } else { result = E52(); } console.log("E53", result); return result; } var B59 = function(){ if($scope.settings.startTime.value === 60){ return 4.5; }else{ return 0.75; } } var B60 = function(){ if($scope.settings.startTime.value === 60){ return 2; }else{ return 0.334; } } var B63 = function(){ if($scope.settings.startTime.value === 60){ return 7.7; }else{ return 1.29; } } var B65 = function(){ return 8.5; } var B71 = function(){ // If Batterie if($scope.settings.energyType.value === 1){ return E29(); } else { return BaseLoadPMT81NoBtEneryMode(); } } var B72 = function(){ // If Batterie if($scope.settings.energyType.value === 1){ return E36(); } else { return E35(); } } var B73 = function(){ var result = 0; // If Batterie if($scope.settings.energyType.value === 1){ result = E43(); } else { result = E42(); } result += $scope.settings.deviceCount * E48(); console.log("B73", result); return result; } var B74 = function(){ var result; if($scope.settings.bluetoothOn){ result = B72(); } else { result = B71(); } console.log("B74", result); return result; } var B75 = function(){ var result; // If Dauerbetrieb if($scope.settings.mode.value === 2){ result = B73(); } else { result = B74(); } console.log("B75", result); return result; } var B76 = function(){ var result = $scope.settings.messagesCount * B65(); console.log("B76", result); return result; } var B77 = function(){ var result = $scope.settings.exApproval ? B60() : B63(); console.log("B77", result); return result; } var B78 = function(){ var result = $scope.settings.deviceCount * B77() + B59(); console.log("B78", result); return result; } var B79 = function(){ var result = B78() * $scope.settings.measurementCount; console.log("B79", result); return result; } var B81 = function(){ var result = B76() + B79(); console.log("B81", result); return result; } }]);