ControlBoards, IControlBoard iface, Devices, test methods.
This commit is contained in:
@@ -15,6 +15,40 @@ namespace TBF.BenchControl.TestMethods.FixedStart
|
||||
{
|
||||
private static readonly ILog log = LogManager.GetLogger(typeof(FixedStartSeq));
|
||||
|
||||
/// <summary>
|
||||
/// Check capabilities of devces in the output path required for this test method
|
||||
/// </summary>
|
||||
/// <param name="devices">Devices</param>
|
||||
/// <returns>true when capabilities of devices are OK</returns>
|
||||
public static bool CheckDeviceCaps(Config.Entities.Test test, OutputPath devices, out string message)
|
||||
{
|
||||
if (!(StateMachine.ControlBoard is ControlBoard.Legacy.ControlBoardDev) &&
|
||||
!(StateMachine.ControlBoard is ControlBoard.Papouch.CBoard) &&
|
||||
!(StateMachine.ControlBoard is ControlBoard.New.CBoard))
|
||||
{
|
||||
/// Control board does not support this method
|
||||
message = string.Format("{0}: {1}", test.Name, Strings.Test_bench_does_not_suport_selected_test_method);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!(devices.FlowMeter is IFlowMeter))
|
||||
{
|
||||
/// Flow meter is missing
|
||||
message = string.Format("{0}: {1}", test.Name, Strings.Missing_a_flow_meter);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!(devices.RegulValve is GenericDevices.IRegulValve))
|
||||
{
|
||||
/// Regulation valve is missing
|
||||
message = string.Format("{0}: {1}", test.Name, Strings.Missing_a_regulation_valve);
|
||||
return false;
|
||||
}
|
||||
|
||||
message = string.Empty;
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Fixed start mass collection method sequence
|
||||
/// </summary>
|
||||
@@ -54,7 +88,7 @@ namespace TBF.BenchControl.TestMethods.FixedStart
|
||||
|
||||
|
||||
IList<Event> e; /// Events from currently running operations
|
||||
Elde.ControlBoardDev cBrd = StateMachine.ControlBoard;
|
||||
TBF.BenchControl.ControlBoard.IControlBoard cBrd = StateMachine.ControlBoard;
|
||||
checkUiOp = new Operations.CheckUIOp(true); /// Runs in more then one state
|
||||
processDataLoggingOp = new TBF.BenchControl.Operations.ProcessDataLoggingOp(processDataLogger, this, heatMetersTestParams != null);
|
||||
|
||||
@@ -72,7 +106,10 @@ namespace TBF.BenchControl.TestMethods.FixedStart
|
||||
}
|
||||
}
|
||||
|
||||
cBrd.SetFiltersPidShortPulses(filters, outPath.PidCoef, (test.TolerRed == 0) ? 0 : 1);
|
||||
if (cBrd is ControlBoard.Legacy.ControlBoardDev)
|
||||
{
|
||||
(cBrd as ControlBoard.Legacy.ControlBoardDev).SetFiltersPidShortPulses(filters, outPath.PidCoef, (test.TolerRed == 0) ? 0 : 1);
|
||||
}
|
||||
|
||||
IList<IOperation> readTempPressOps = new List<IOperation>();
|
||||
if (benchPath.TempMtrUp != null) readTempPressOps.Add(benchPath.TempMtrUp.ReadTempOp(ref TempUp));
|
||||
@@ -115,7 +152,7 @@ namespace TBF.BenchControl.TestMethods.FixedStart
|
||||
while (e.Contains(Event.Busy));
|
||||
|
||||
/// Start the test, initialize test results
|
||||
Bridge.OnTestSelected(this, new TestSelectedEventArgs(test, repetitionNr, inPath, benchPath, outPath, sensPath, heatMetersPath, totalPulses));
|
||||
Bridge.OnTestSelected(this, new TestSelectedEventArgs(test, repetitionNr, inPath, benchPath, outPath, sensPath, heatMetersPath));
|
||||
string testName = Results.Utils.GetTestName(test.Name, test.Repeats, repetitionNr);
|
||||
|
||||
///
|
||||
@@ -242,7 +279,7 @@ namespace TBF.BenchControl.TestMethods.FixedStart
|
||||
State.Create(string.Format("{0}({1}) : Start valve open", test.Method, test.Name))
|
||||
.AddOperation(checkUiOp)
|
||||
.AddOperations(readTempPressOps)
|
||||
.AddOperation(new TBF.BenchControl.Elde.SetValvesOp(cBrd, false, outPath))
|
||||
.AddOperation(cBrd.OpenStartValveOp())
|
||||
.AddOperation(heatMetersPromptOp)
|
||||
.EnterState();
|
||||
do {
|
||||
@@ -259,7 +296,7 @@ namespace TBF.BenchControl.TestMethods.FixedStart
|
||||
State.Create(string.Format("{0}({1}) : Setting the flow", test.Method, test.Name))
|
||||
.AddOperation(checkUiOp)
|
||||
.AddOperations(readTempPressOps)
|
||||
.AddOperation(outPath.RegulValve.SetFlowOp(outPath.FlowMeter, test.Qfrom, test.Qto, RefFlow, FlowSettingTimeoutSec))
|
||||
.AddOperation(cBrd.SetFlowOp(test.Qfrom, test.Qto, RefFlow, FlowSettingTimeoutSec))
|
||||
.AddOperation(heatMetersPromptOp)
|
||||
.EnterState();
|
||||
do {
|
||||
@@ -359,7 +396,7 @@ namespace TBF.BenchControl.TestMethods.FixedStart
|
||||
State.Create(string.Format("{0}({1}) : Closing the start/stop valve before the fixed start test", test.Method, test.Name))
|
||||
.AddOperation(checkUiOp)
|
||||
.AddOperations(readTempPressOps)
|
||||
.AddOperation(new TBF.BenchControl.Elde.SetValvesOp(cBrd, true, outPath))
|
||||
.AddOperation(cBrd.CloseStartValveOp())
|
||||
.EnterState();
|
||||
do {
|
||||
e = StateMachine.WaitRunDevsRunOps();
|
||||
@@ -433,11 +470,11 @@ namespace TBF.BenchControl.TestMethods.FixedStart
|
||||
{
|
||||
for (int i = 0; i < Config.Data.HeatMetersCount; i++)
|
||||
{
|
||||
BenchControl.Elde.FixedStartRegisterReader.RegisterReader volumeRegisterReader =
|
||||
sensPath.RegisterReaders[2 * i] as BenchControl.Elde.FixedStartRegisterReader.RegisterReader;
|
||||
BenchControl.RegisterReaders.StandingStartStop.RegisterReader volumeRegisterReader =
|
||||
sensPath.RegisterReaders[2 * i] as BenchControl.RegisterReaders.StandingStartStop.RegisterReader;
|
||||
|
||||
BenchControl.Elde.FixedStartRegisterReader.RegisterReader energyRegisterReader =
|
||||
sensPath.RegisterReaders[2 * i + 1] as BenchControl.Elde.FixedStartRegisterReader.RegisterReader;
|
||||
BenchControl.RegisterReaders.StandingStartStop.RegisterReader energyRegisterReader =
|
||||
sensPath.RegisterReaders[2 * i + 1] as BenchControl.RegisterReaders.StandingStartStop.RegisterReader;
|
||||
|
||||
if (volumeRegisterReader != null) volumeRegisterReader.BeginWMState = dataEntryCmpnt.WMStartState(i);
|
||||
if (energyRegisterReader != null && dataEntryCmpnt is GenericDevices.IHasHeatMtrStatesForm)
|
||||
@@ -452,8 +489,8 @@ namespace TBF.BenchControl.TestMethods.FixedStart
|
||||
{
|
||||
GenericDevices.IRegisterReader rr = sensPath.RegisterReaders[i];
|
||||
|
||||
if (rr is BenchControl.Elde.FixedStartRegisterReader.RegisterReader)
|
||||
(rr as BenchControl.Elde.FixedStartRegisterReader.RegisterReader).BeginWMState = dataEntryCmpnt.WMStartState(i);
|
||||
if (rr is BenchControl.RegisterReaders.StandingStartStop.RegisterReader)
|
||||
(rr as BenchControl.RegisterReaders.StandingStartStop.RegisterReader).BeginWMState = dataEntryCmpnt.WMStartState(i);
|
||||
|
||||
if (rr is BenchControl.Network.Camera.RoiForFixedStart.Roi)
|
||||
(rr as BenchControl.Network.Camera.RoiForFixedStart.Roi).BeginWMState = dataEntryCmpnt.WMStartState(i);
|
||||
@@ -497,7 +534,7 @@ namespace TBF.BenchControl.TestMethods.FixedStart
|
||||
State.Create(string.Format("{0}({1}) : Starting the test", test.Method, test.Name))
|
||||
.AddOperation(checkUiOp)
|
||||
.AddOperations(readTempPressOps)
|
||||
.AddOperation(cBrd.StartMeasurementOp(outPath, Elde.TestMethods.Synchro, test.Qfrom, test.Qto, 2 * totalPulses))
|
||||
.AddOperation(cBrd.StartTestOp(test))
|
||||
.EnterState();
|
||||
do {
|
||||
e = StateMachine.WaitRunDevsRunOps();
|
||||
@@ -511,7 +548,7 @@ namespace TBF.BenchControl.TestMethods.FixedStart
|
||||
State.Create(string.Format("{0}({1}) : Opening the start/stop valve at the beginning of the fixed start test", test.Method, test.Name))
|
||||
.AddOperation(checkUiOp)
|
||||
.AddOperations(readTempPressOps)
|
||||
.AddOperation(new TBF.BenchControl.Elde.SetValvesOp(cBrd, false, outPath))
|
||||
.AddOperation(cBrd.OpenStartValveOp())
|
||||
.EnterState();
|
||||
do {
|
||||
e = StateMachine.WaitRunDevsRunOps();
|
||||
@@ -558,8 +595,8 @@ namespace TBF.BenchControl.TestMethods.FixedStart
|
||||
Bridge.OnActivity(this, string.Format("{0} ... {1} s", Strings.Test_in_progress, remainingTime));
|
||||
}
|
||||
|
||||
RefFreq.Val = cBrd.ReferenceFreq;
|
||||
RefFlow.Val = cBrd.ReferenceFlow;
|
||||
RefFrequency.Val = cBrd.RefFrequency;
|
||||
RefFlow.Val = cBrd.RefFlow;
|
||||
|
||||
UpdateAllStatistics(StateMachine.Time);
|
||||
|
||||
@@ -600,7 +637,7 @@ namespace TBF.BenchControl.TestMethods.FixedStart
|
||||
Bridge.OnProcessData(this, new ProcessDataEventArgs(test, repetitionNr, Config.Entities.Progress.Test));
|
||||
Bridge.OnTestProgress(this, new TestProgressEventArgs(test, repetitionNr, Config.Entities.Progress.Test));
|
||||
}
|
||||
while (cBrd.EtPulses(0) < totalPulses);
|
||||
while (cBrd.RefPulses < totalPulses);
|
||||
/// Measurement loop - end
|
||||
|
||||
test_completed:
|
||||
@@ -612,7 +649,7 @@ namespace TBF.BenchControl.TestMethods.FixedStart
|
||||
State.Create(string.Format("{0}({1}) : Closing the start/stop valve at the end of the fixed start test", test.Method, test.Name))
|
||||
.AddOperation(checkUiOp)
|
||||
.AddOperations(readTempPressOps)
|
||||
.AddOperation(new TBF.BenchControl.Elde.SetValvesOp(cBrd, true, outPath))
|
||||
.AddOperation(cBrd.CloseStartValveOp())
|
||||
.EnterState();
|
||||
do {
|
||||
e = StateMachine.WaitRunDevsRunOps();
|
||||
@@ -624,7 +661,7 @@ namespace TBF.BenchControl.TestMethods.FixedStart
|
||||
State.Create(string.Format("{0}({1}) : Stopping flow regulation", test.Method, test.Name))
|
||||
.AddOperation(checkUiOp)
|
||||
.AddOperations(readTempPressOps)
|
||||
.AddOperation(cBrd.StopFlowRegulationOp(outPath))
|
||||
.AddOperation(cBrd.StopFlowRegulationOp())
|
||||
.EnterState();
|
||||
do {
|
||||
e = StateMachine.WaitRunDevsRunOps();
|
||||
@@ -639,7 +676,7 @@ namespace TBF.BenchControl.TestMethods.FixedStart
|
||||
|
||||
|
||||
TestEndTime = DateTime.Now;
|
||||
int endPulses = cBrd.EtPulses(0);
|
||||
int endPulses = cBrd.RefPulses;
|
||||
|
||||
|
||||
State.Create(string.Format("{0}({1}) : Stopping diverter, gate, etc.", test.Method, test.Name))
|
||||
@@ -654,7 +691,7 @@ namespace TBF.BenchControl.TestMethods.FixedStart
|
||||
while (!e.Contains(Event.PreviousStopped));
|
||||
|
||||
|
||||
double flowVolume = 3.6 * LtrPerRefPulse * Convert.ToDouble(endPulses - startPulses) / cBrd.TTime;
|
||||
double flowVolume = 3.6 * LtrPerRefPulse * Convert.ToDouble(endPulses - startPulses) / cBrd.TestTime;
|
||||
double constMasterCorr = outPath.FlowMeter.LtrPerPulseCorrected(flowVolume, rangeIx);
|
||||
double volumeCTV = constMasterCorr * Convert.ToDouble(endPulses - startPulses);
|
||||
double refEnergy = Energy.Sum * volumeCTV / VolumeForEnergy.Sum; /// [J]=[J]*[l]/[l]
|
||||
@@ -728,11 +765,11 @@ namespace TBF.BenchControl.TestMethods.FixedStart
|
||||
{
|
||||
for (int i = 0; i < Config.Data.HeatMetersCount; i++)
|
||||
{
|
||||
BenchControl.Elde.FixedStartRegisterReader.RegisterReader volumeRegisterReader =
|
||||
sensPath.RegisterReaders[2 * i] as BenchControl.Elde.FixedStartRegisterReader.RegisterReader;
|
||||
BenchControl.RegisterReaders.StandingStartStop.RegisterReader volumeRegisterReader =
|
||||
sensPath.RegisterReaders[2 * i] as BenchControl.RegisterReaders.StandingStartStop.RegisterReader;
|
||||
|
||||
BenchControl.Elde.FixedStartRegisterReader.RegisterReader energyRegisterReader =
|
||||
sensPath.RegisterReaders[2 * i + 1] as BenchControl.Elde.FixedStartRegisterReader.RegisterReader;
|
||||
BenchControl.RegisterReaders.StandingStartStop.RegisterReader energyRegisterReader =
|
||||
sensPath.RegisterReaders[2 * i + 1] as BenchControl.RegisterReaders.StandingStartStop.RegisterReader;
|
||||
|
||||
if (volumeRegisterReader != null) volumeRegisterReader.EndWMState = dataEntryCmpnt.WMEndState(i);
|
||||
if (energyRegisterReader != null && dataEntryCmpnt is GenericDevices.IHasHeatMtrStatesForm)
|
||||
@@ -747,8 +784,8 @@ namespace TBF.BenchControl.TestMethods.FixedStart
|
||||
{
|
||||
GenericDevices.IRegisterReader rr = sensPath.RegisterReaders[i];
|
||||
|
||||
if (rr is BenchControl.Elde.FixedStartRegisterReader.RegisterReader)
|
||||
(rr as BenchControl.Elde.FixedStartRegisterReader.RegisterReader).EndWMState = dataEntryCmpnt.WMEndState(i);
|
||||
if (rr is BenchControl.RegisterReaders.StandingStartStop.RegisterReader)
|
||||
(rr as BenchControl.RegisterReaders.StandingStartStop.RegisterReader).EndWMState = dataEntryCmpnt.WMEndState(i);
|
||||
|
||||
if (rr is BenchControl.Network.Camera.RoiForFixedStart.Roi)
|
||||
(rr as BenchControl.Network.Camera.RoiForFixedStart.Roi).EndWMState = dataEntryCmpnt.WMEndState(i);
|
||||
|
||||
Reference in New Issue
Block a user