Changes: iPerl RR is reset at the beginnign of FlyingStartMassCollection test. etc.

This commit is contained in:
Milan Hanajik 2015-08-16 22:00:02 +02:00
parent 713fd9d0ae
commit ed4afff0b2
4 changed files with 59 additions and 59 deletions

View File

@ -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);

View File

@ -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);

View File

@ -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);
}

View File

@ -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);