package mods.eln.sixnode.electricalsensor; import mods.eln.Eln; import mods.eln.sim.IProcess; public class ElectricalSensorProcess implements IProcess { ElectricalSensorElement sensor; public ElectricalSensorProcess(ElectricalSensorElement sensor) { this.sensor = sensor; } @Override public void process(double time) { if (sensor.typeOfSensor == sensor.voltageType) { setOutput(sensor.aLoad.getU()); } else if (sensor.typeOfSensor == sensor.currantType) { double output = 0; switch (sensor.dirType) { case ElectricalSensorElement.dirNone: output = Math.abs(sensor.resistor.getCurrent()); break; case ElectricalSensorElement.dirAB: output = (sensor.resistor.getCurrent()); break; case ElectricalSensorElement.dirBA: output = (-sensor.resistor.getCurrent()); break; } setOutput(output); } else if (sensor.typeOfSensor == sensor.powerType) { double output = 0; switch (sensor.dirType) { case ElectricalSensorElement.dirNone: output = Math.abs(sensor.resistor.getCurrent() * sensor.aLoad.getU()); break; case ElectricalSensorElement.dirAB: output = (sensor.resistor.getCurrent() * sensor.aLoad.getU()); break; case ElectricalSensorElement.dirBA: output = (-sensor.resistor.getCurrent() * sensor.aLoad.getU()); break; } setOutput(output); } } void setOutput(double physical) { double U = (physical - sensor.lowValue) / (sensor.highValue - sensor.lowValue) * Eln.SVU; if (U > Eln.SVU) U = Eln.SVU; if (U < 0) U = 0; sensor.outputGateProcess.setU(U); } }