Version 1.5.84. Reading registers, scales, temperature, pressure, ... during test done in one state in the sequence.
Many changes in TestMethods.iPerlCommunication and WaterMeters.iPerl.WaterMeter. iPerl measurement with opto-data works OK. Logging in State changed, ...
This commit is contained in:
+60
-36
@@ -252,45 +252,59 @@ namespace TBF.BenchControl.TestMethods.FlyingStartCollectionMethod
|
||||
}
|
||||
while (!e.Contains(Event.MeasurementStarted));
|
||||
|
||||
|
||||
/// Reset iPerl volume measurement
|
||||
foreach (var rr in sensPath.RegisterReaders)
|
||||
{
|
||||
if (rr is WaterMeters.iPerl.WaterMeter)
|
||||
{
|
||||
(rr as WaterMeters.iPerl.WaterMeter).Reset();
|
||||
}
|
||||
}
|
||||
//foreach (var rr in sensPath.RegisterReaders)
|
||||
//{
|
||||
// if (rr is WaterMeters.iPerl.WaterMeter)
|
||||
// {
|
||||
// (rr as WaterMeters.iPerl.WaterMeter).Reset();
|
||||
// }
|
||||
//}
|
||||
|
||||
|
||||
/// Measurement loop - preparation
|
||||
readRegisters1 = new Operations.ReadMoreRegistersOp(sensPath.RegisterReaders, ref WMPulses, ref WMRefPulses);
|
||||
readRegisters2 = new Operations.ReadMoreRegistersOp(sensPath.RegisterReaders, ref WMPulses, ref WMRefPulses);
|
||||
queryEnd1 = cBrd.QueryMeasurementEndOp();
|
||||
queryEnd2 = cBrd.QueryMeasurementEndOp();
|
||||
readRegistersOp = new Operations.ReadMoreRegistersOp(sensPath.RegisterReaders, ref WMPulses, ref WMTimes, ref WMRefPulses);
|
||||
queryEnd1 = cBrd.QueryMeasurementEndOp();
|
||||
|
||||
bool firstTime = true; /// To reset sums for averaging
|
||||
ResetAveragedData();
|
||||
int estimtdEndTime = StateMachine.Time + (int)tstRslt.TstTime;
|
||||
|
||||
/// Measurement loop - begin
|
||||
while (true)
|
||||
{
|
||||
//--------------------------------
|
||||
switch (ReadRegistersTempPressAmbient(measureOperations, true))
|
||||
{
|
||||
case Event.Error: { retVal = Event.Error; goto stopTest; }
|
||||
case Event.UiCmdStop: { retVal = Event.UiCmdStop; goto stopTest; }
|
||||
case Event.MeasurementCompleted: goto test_completed;
|
||||
}
|
||||
State.Create("Read water meters")
|
||||
.AddOperation(checkUiOp)
|
||||
.AddOperations(measureOperations)
|
||||
.AddOperation(readRegistersOp)
|
||||
.AddOperation(benchPath.TempIn.ReadTempOp(ref tempIn))
|
||||
.AddOperation(benchPath.TempOut.ReadTempOp(ref tempOut))
|
||||
.AddOperation(outPath.TempDiv.ReadTempOp(ref tempDiv))
|
||||
.AddOperation(benchPath.PressIn.ReadPressureOp(ref pressIn))
|
||||
.AddOperation(benchPath.PressOut.ReadPressureOp(ref pressOut))
|
||||
.AddOperation(outPath.Balance.ReadMassOp(ref mass))
|
||||
.AddOperation(StateMachine.ControlBoard.UpdateTankWeightOp())
|
||||
.AddOperation((StateMachine.Ambient != null)
|
||||
? StateMachine.Ambient.ReadAmbientOp(airTemperature, airPressure, airHumidity)
|
||||
: null)
|
||||
.AddOperation(queryEnd1)
|
||||
.AddOperation(processDataLoggingOp)
|
||||
.EnterState();
|
||||
do
|
||||
{
|
||||
e = StateMachine.WaitRunDevsRunOps();
|
||||
if (e.Contains(Event.Error)) goto stopTest;
|
||||
if (e.Contains(Event.UiCmdStop)) goto stopTest;
|
||||
if (e.Contains(Event.MeasurementCompleted)) goto test_completed;
|
||||
|
||||
//------------------------------------------------
|
||||
int remainingTime = Math.Max(estimtdEndTime - StateMachine.Time, 0);
|
||||
Bridge.OnActivity(this, string.Format("{0} ... {1} s", Strings.Test_in_progress, remainingTime));
|
||||
Bridge.OnActivity(this, string.Format("{0} ... {1} s", Strings.Test_in_progress, remainingTime));
|
||||
//------------------------------------------------
|
||||
|
||||
if (firstTime)
|
||||
{
|
||||
firstTime = false; /// Do the following only once
|
||||
tstRslt.TempInStart = tempIn.Val;
|
||||
tstRslt.TempInStart = tempIn.Val;
|
||||
tstRslt.TempOutStart = tempOut.Val;
|
||||
tstRslt.TempDivStart = tempDiv.Val;
|
||||
tstRslt.PressInStart = pressIn.Val;
|
||||
@@ -304,7 +318,7 @@ namespace TBF.BenchControl.TestMethods.FlyingStartCollectionMethod
|
||||
tstRslt.PressOutEnd = pressOut.Val;
|
||||
tstRslt.MassEndRaw = mass.Val;
|
||||
|
||||
AccumulateAveragedData();
|
||||
AccumulateAveragedData();
|
||||
|
||||
refFreq.Val = cBrd.ReferenceFreq;
|
||||
refFlow.Val = cBrd.ReferenceFlow;
|
||||
@@ -312,18 +326,19 @@ namespace TBF.BenchControl.TestMethods.FlyingStartCollectionMethod
|
||||
tstRslt.AmbientPressAve = airPressure.Val;
|
||||
tstRslt.AmbientHumiAve = airHumidity.Val;
|
||||
|
||||
string logstr = string.Format("E={0} f={1} q={2}", cBrd.EtPulses(0), cBrd.ReferenceFreq,
|
||||
cBrd.ReferenceFlow * outPath.FlowMeter.NominalFlow);
|
||||
for (int i = 0; i < Program.WMsCount; i++)
|
||||
{
|
||||
logstr += string.Format(" M{0}=({1},{2})", i + 1, WMRefPulses[i], WMPulses[i]);
|
||||
}
|
||||
log.Debug(logstr);
|
||||
string logstr = string.Format("E={0} f={1} q={2}", cBrd.EtPulses(0), cBrd.ReferenceFreq,
|
||||
cBrd.ReferenceFlow * outPath.FlowMeter.NominalFlow);
|
||||
for (int i = 0; i < Program.WMsCount; i++)
|
||||
{
|
||||
logstr += string.Format(" M{0}=({1},{2})", i + 1, WMRefPulses[i], WMPulses[i]);
|
||||
}
|
||||
log.Debug(logstr);
|
||||
|
||||
|
||||
float progress = Formulas.TestProgress(cBrd.EtPulses(0), totalPulses, estFlowSetTime, test.TstTime);
|
||||
Bridge.OnTestProgress(this, GetTestProgressData(test, tstRslt, true, cBrd, cBrd.TTime, progress));
|
||||
}
|
||||
}
|
||||
while (true);
|
||||
/// Measurement loop - end
|
||||
|
||||
test_completed:
|
||||
@@ -334,7 +349,7 @@ namespace TBF.BenchControl.TestMethods.FlyingStartCollectionMethod
|
||||
.AddOperation(outPath.TempDiv.ReadTempOp(ref tempDiv))
|
||||
.AddOperation(benchPath.PressIn.ReadPressureOp(ref pressIn))
|
||||
.AddOperation(benchPath.PressOut.ReadPressureOp(ref pressOut))
|
||||
.AddOperation(readRegisters1)
|
||||
.AddOperation(readRegistersOp)
|
||||
.AddOperation((StateMachine.Ambient != null)
|
||||
? StateMachine.Ambient.ReadAmbientOp(airTemperature, airPressure, airHumidity) : null)
|
||||
.AddOperation(outPath.Balance.ReadMassOp(ref mass))
|
||||
@@ -362,7 +377,7 @@ namespace TBF.BenchControl.TestMethods.FlyingStartCollectionMethod
|
||||
.AddOperation(outPath.TempDiv.ReadTempOp(ref tempDiv))
|
||||
.AddOperation(benchPath.PressIn.ReadPressureOp(ref pressIn))
|
||||
.AddOperation(benchPath.PressOut.ReadPressureOp(ref pressOut))
|
||||
.AddOperation(readRegisters1)
|
||||
.AddOperation(readRegistersOp)
|
||||
.AddOperation((StateMachine.Ambient != null)
|
||||
? StateMachine.Ambient.ReadAmbientOp(airTemperature, airPressure, airHumidity) : null)
|
||||
.AddOperation(outPath.Balance.ReadStableMassOp(ref endMass, 5))
|
||||
@@ -436,9 +451,18 @@ namespace TBF.BenchControl.TestMethods.FlyingStartCollectionMethod
|
||||
tstRslt.Meters[i].VolumeStart = 0; /// liter
|
||||
tstRslt.Meters[i].VolumeEnd = 0; /// liter
|
||||
tstRslt.Meters[i].PulsesPerLiter = (sensPath.RegisterReaders[i] == null ? 1.0f : sensPath.RegisterReaders[i].PulsesPerLtr);
|
||||
if (sensPath.RegisterReaders[i].PulsesPerLtr <= float.Epsilon) tstRslt.Meters[i].VolumeMeter = 0;
|
||||
else tstRslt.Meters[i].VolumeMeter = Convert.ToSingle(WMPulses[i]) / sensPath.RegisterReaders[i].PulsesPerLtr;
|
||||
tstRslt.Meters[i].VolumeRef = tstRslt.ConstMaster * WMRefPulses[i]; /// liter
|
||||
if (sensPath.RegisterReaders[i] is WaterMeters.iPerl.WaterMeter)
|
||||
{
|
||||
WaterMeters.iPerl.WaterMeter iPerl = (sensPath.RegisterReaders[i] as WaterMeters.iPerl.WaterMeter);
|
||||
tstRslt.Meters[i].VolumeMeter = (float)(iPerl.VolumeLtrEnd - iPerl.VolumeLtrStart);
|
||||
tstRslt.Meters[i].VolumeRef = tstRslt.VolumeCTV * (float)(iPerl.TimestampSecEnd - iPerl.TimestampSecStart) / tstRslt.Time;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (sensPath.RegisterReaders[i].PulsesPerLtr <= float.Epsilon) tstRslt.Meters[i].VolumeMeter = 0;
|
||||
else tstRslt.Meters[i].VolumeMeter = Convert.ToSingle(WMPulses[i]) / sensPath.RegisterReaders[i].PulsesPerLtr;
|
||||
tstRslt.Meters[i].VolumeRef = tstRslt.ConstMaster * WMRefPulses[i]; /// liter
|
||||
}
|
||||
tstRslt.Meters[i].PulsesMeter = WMPulses[i];
|
||||
tstRslt.Meters[i].PulsesMaster = WMRefPulses[i];
|
||||
tstRslt.Meters[i].Time = cBrd.TTime;
|
||||
|
||||
Reference in New Issue
Block a user