Changes: iPerl RR is reset at the beginnign of FlyingStartMassCollection test. etc.
This commit is contained in:
parent
713fd9d0ae
commit
ed4afff0b2
@ -252,6 +252,15 @@ 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();
|
||||
}
|
||||
}
|
||||
|
||||
/// Measurement loop - preparation
|
||||
readRegisters1 = new Operations.ReadMoreRegistersOp(sensPath.RegisterReaders, ref WMPulses, ref WMRefPulses);
|
||||
readRegisters2 = new Operations.ReadMoreRegistersOp(sensPath.RegisterReaders, ref WMPulses, ref WMRefPulses);
|
||||
|
||||
@ -39,7 +39,7 @@ namespace TBF.BenchControl.WaterMeters.iPerl
|
||||
/// AAAAAA EMF Int24 Value * 0.000000333
|
||||
/// BBBB Magnetic field Int16 Value
|
||||
/// CCCC Flow Int16 Value * 0.225 * Scalig factor
|
||||
/// DDDDDD Volume Int24 Value / 16000 * Scaling factor
|
||||
/// DDDDDD Volume Int24 Value / 16000 * Scaling factor in Ltr
|
||||
/// EEEE Impedance Int16 Value
|
||||
/// FFFFFFFF Timestamp Uint32 Value / 8192
|
||||
/// GG
|
||||
@ -65,29 +65,30 @@ namespace TBF.BenchControl.WaterMeters.iPerl
|
||||
|
||||
OptoTelegram opto = new OptoTelegram();
|
||||
|
||||
Int32 value;
|
||||
if (Int32.TryParse(telegram.Substring(0, 6), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out value))
|
||||
{
|
||||
Int32 svalue = (value >= 0x00800000) ? (value - 0x01000000) : value;
|
||||
opto.EMF = 0.000000333 * (double)svalue;
|
||||
}
|
||||
else return null;
|
||||
double factor = ScalingFactor(meterType);
|
||||
|
||||
if (Int32.TryParse(telegram.Substring(7, 4), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out value))
|
||||
{
|
||||
Int32 svalue = (value >= 0x00008000) ? (value - 0x00010000) : value;
|
||||
opto.MagneticField = (Int16)svalue;
|
||||
}
|
||||
else return null;
|
||||
Int32 value;
|
||||
|
||||
double factor = ScalingFactor(meterType);
|
||||
//if (Int32.TryParse(telegram.Substring(0, 6), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out value))
|
||||
//{
|
||||
// Int32 svalue = (value >= 0x00800000) ? (value - 0x01000000) : value;
|
||||
// opto.EMF = 0.000000333 * (double)svalue;
|
||||
//}
|
||||
//else return null;
|
||||
|
||||
if (Int32.TryParse(telegram.Substring(12, 4), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out value))
|
||||
{
|
||||
Int32 svalue = (value >= 0x00008000) ? (value - 0x00010000) : value;
|
||||
opto.Flow = 0.225 * (double)svalue * factor;
|
||||
}
|
||||
else return null;
|
||||
//if (Int32.TryParse(telegram.Substring(7, 4), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out value))
|
||||
//{
|
||||
// Int32 svalue = (value >= 0x00008000) ? (value - 0x00010000) : value;
|
||||
// opto.MagneticField = (Int16)svalue;
|
||||
//}
|
||||
//else return null;
|
||||
|
||||
//if (Int32.TryParse(telegram.Substring(12, 4), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out value))
|
||||
//{
|
||||
// Int32 svalue = (value >= 0x00008000) ? (value - 0x00010000) : value;
|
||||
// opto.Flow = 0.225 * (double)svalue * factor;
|
||||
//}
|
||||
//else return null;
|
||||
|
||||
if (Int32.TryParse(telegram.Substring(17, 6), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out value))
|
||||
{
|
||||
@ -96,25 +97,25 @@ namespace TBF.BenchControl.WaterMeters.iPerl
|
||||
}
|
||||
else return null;
|
||||
|
||||
if (Int32.TryParse(telegram.Substring(24, 4), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out value))
|
||||
{
|
||||
Int32 svalue = (value >= 0x00008000) ? (value - 0x00010000) : value;
|
||||
opto.Impedance = (Int16)svalue;
|
||||
}
|
||||
else return null;
|
||||
//if (Int32.TryParse(telegram.Substring(24, 4), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out value))
|
||||
//{
|
||||
// Int32 svalue = (value >= 0x00008000) ? (value - 0x00010000) : value;
|
||||
// opto.Impedance = (Int16)svalue;
|
||||
//}
|
||||
//else return null;
|
||||
|
||||
UInt32 uvalue;
|
||||
if (UInt32.TryParse(telegram.Substring(29, 8), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out uvalue))
|
||||
{
|
||||
opto.Timestamp = uvalue;
|
||||
}
|
||||
else return null;
|
||||
UInt32 uvalue;
|
||||
if (UInt32.TryParse(telegram.Substring(29, 8), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out uvalue))
|
||||
{
|
||||
opto.Timestamp = uvalue;
|
||||
}
|
||||
else return null;
|
||||
|
||||
if (UInt32.TryParse(telegram.Substring(38, 2), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out uvalue))
|
||||
{
|
||||
opto.GG = (byte)uvalue;
|
||||
}
|
||||
else return null;
|
||||
//if (UInt32.TryParse(telegram.Substring(38, 2), NumberStyles.HexNumber, CultureInfo.CurrentCulture, out uvalue))
|
||||
//{
|
||||
// opto.GG = (byte)uvalue;
|
||||
//}
|
||||
//else return null;
|
||||
|
||||
opto.sourceStr = telegram.Substring(0, Length - 2);
|
||||
|
||||
|
||||
@ -81,17 +81,7 @@ namespace TBF.BenchControl.WaterMeters.iPerl
|
||||
public CalibrationStruct CalibrationStruct
|
||||
{
|
||||
get { return calibrationStruct; }
|
||||
set
|
||||
{
|
||||
calibrationStruct = value;
|
||||
switch (calibrationStruct.VolumeUnits)
|
||||
{
|
||||
default:
|
||||
case VolumeUnits.m3: volumeUnit = 1000.0; break; /// liter per m3
|
||||
case VolumeUnits.US_gallon: volumeUnit = 3.785; break; /// liter per US gallon
|
||||
case VolumeUnits.UK_gallon: volumeUnit = 4.54609; break; /// liter per UK gallon
|
||||
}
|
||||
}
|
||||
set { calibrationStruct = value; }
|
||||
}
|
||||
CalibrationStruct calibrationStruct;
|
||||
|
||||
@ -111,11 +101,7 @@ namespace TBF.BenchControl.WaterMeters.iPerl
|
||||
/// Volume of water in liter set by OptoTelegramRreceived(...)
|
||||
/// </summary>
|
||||
private double volumeLtr;
|
||||
|
||||
/// <summary>
|
||||
/// Volume of one water meter unit in liter. Set when reading the configuration.
|
||||
/// </summary>
|
||||
private double volumeUnit;
|
||||
private double volumeLtrStart;
|
||||
|
||||
private Boxes.IntBox pulses;
|
||||
private Boxes.IntBox refPulses;
|
||||
@ -137,7 +123,6 @@ namespace TBF.BenchControl.WaterMeters.iPerl
|
||||
synchronized = false;
|
||||
synchronized2 = false;
|
||||
partOfTelegram = string.Empty;
|
||||
volumeUnit = 1000.0; /// liter / m3
|
||||
}
|
||||
|
||||
public WaterMeter(WaterMeterCfg cfg)
|
||||
@ -255,10 +240,14 @@ namespace TBF.BenchControl.WaterMeters.iPerl
|
||||
|
||||
void ReadPulses()
|
||||
{
|
||||
pulses.Val = (int)(volumeLtr / (double)PulsesPerLtr + 0.5);
|
||||
refPulses.Val = 2; /// Do something meaningfull here
|
||||
pulses.Val = (int)((volumeLtr - volumeLtrStart) / (double)PulsesPerLtr + 0.5);
|
||||
refPulses.Val = StateMachine.ControlBoard.EtPulses(0);
|
||||
}
|
||||
|
||||
public void Reset()
|
||||
{
|
||||
volumeLtrStart = volumeLtr;
|
||||
}
|
||||
|
||||
#if USE_SEPARATE_WORKER_THREAD
|
||||
void Worker()
|
||||
@ -354,7 +343,7 @@ namespace TBF.BenchControl.WaterMeters.iPerl
|
||||
|
||||
void OptoTelegramRreceived(OptoTelegram optoTelegram, bool async)
|
||||
{
|
||||
volumeLtr = optoTelegram.Volume * volumeUnit;
|
||||
volumeLtr = optoTelegram.Volume;
|
||||
optoDataLogger.InfoFormat("{0}: {1}", Name, optoTelegram);
|
||||
}
|
||||
|
||||
|
||||
@ -52,8 +52,9 @@ namespace TBF.BenchControl.WaterMeters.iPerl
|
||||
|
||||
public string ToString(int i)
|
||||
{
|
||||
return string.Format("Name={0}, Opto=COM{1}, RFID=COM{2}, Group={3}",
|
||||
return string.Format("Name={0}, Type={1}, Opto=COM{2}, RFID=COM{3}, Group={4}",
|
||||
Name,
|
||||
MeterType,
|
||||
OptoComPortNr,
|
||||
RfidComPortNr,
|
||||
Group);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user