Beispiel #1
0
        public void StartSimulationTest()
        {
            ISystemContext                 _context       = new SystemContextFixture();
            TraceSourceFixture             _log           = new TraceSourceFixture();
            List <Tuple <string, object> > _callBackCount = new List <Tuple <string, object> >();
            Range _startRange       = null;
            int   _valueChangeCount = 0;

            using (BoilerState _boilerState = new BoilerState(null, "browseName"))
            {
                _boilerState.RegisterVariable(new List <BaseInstanceState>(), (x, y) => { _callBackCount.Add(Tuple.Create <string, object>(String.Join("_", y), ((BaseVariableState)x).Value)); x.OnStateChanged += (q, w, e) => _valueChangeCount++; });
                Range _level = _boilerState.Drum.LevelIndicator.Output.EURange.Value;
                _startRange = ModelExtensions.CreateRange(_level.High, _level.Low);
                double _startSetPoint = _boilerState.LevelController.SetPoint.Value;
                _boilerState.Logger = _log;
                _boilerState.ClearChangeMasks(_context, true);
                _boilerState.StartSimulation();
                _boilerState.OnStateChanged += (x, y, z) => Assert.Fail();
                System.Threading.Thread.Sleep(10000);
                Assert.AreEqual <int>(20, _callBackCount.Count);
                _boilerState.ClearChangeMasks(_context, true);
                Assert.AreEqual <Range>(_level, _boilerState.Drum.LevelIndicator.Output.EURange.Value);
                Assert.AreEqual <double>(_startSetPoint, _boilerState.LevelController.SetPoint.Value);
            }
            Assert.IsTrue(_log.TraceLog.Count > 10);
            Assert.IsTrue(_log.ErrorTraceLog.Count == 0);
            Assert.AreEqual <int>(20, _callBackCount.Count);
            Assert.IsTrue(600 < _valueChangeCount, $"_valueChangeCount = {_valueChangeCount}");
        }
 public BoilerState(NodeState parent, QualifiedName browseName) : base(parent, browseName)
 {
     CustomController = new CustomControllerState(this, BrowseNames.CustomController);
     Drum             = new BoilerDrumState(this, BrowseNames.Drum, ModelExtensions.CreateRange(1000, 0));
     FlowController   = new FlowControllerState(this, BrowseNames.FlowController);
     InputPipe        = new BoilerInputPipeState(this, BrowseNames.InputPipe);
     LevelController  = new LevelControllerState(this, BrowseNames.LevelController);
     LevelController.SetPoint.Value = 500.0;
     OutputPipe = new BoilerOutputPipeState(this, BrowseNames.OutputPipe);
     Simulation = new BoilerStateMachineState(this, BrowseNames.Simulation);
 }
        public void Constructor2TestMethod()
        {
            BoilerDrumState _drum = new BoilerDrumState(null, BrowseNames.Drum, ModelExtensions.CreateRange(1000, 0));

            Assert.IsNotNull(_drum.BrowseName);
            Assert.IsNotNull(_drum.LevelIndicator);
            Assert.IsNotNull(_drum.LevelIndicator.Output);
            Assert.AreEqual <NodeClass>(NodeClass.Variable_2, _drum.LevelIndicator.Output.NodeClass);
            Assert.IsNotNull(_drum.LevelIndicator.Output.Parent);
            Assert.IsNotNull(_drum.LevelIndicator.Output.Value);
            Assert.IsNotNull(_drum.LevelIndicator.Output.EURange);
            Assert.IsNotNull(_drum.LevelIndicator.Parent);
            Assert.IsNull(_drum.Parent);
            Assert.AreEqual <NodeClass>(NodeClass.Object_1, _drum.NodeClass);
            Assert.AreEqual <NodeStateChangeMasks>(NodeStateChangeMasks.Children, _drum.ChangeMasks);
            Assert.AreEqual <double>(0, _drum.LevelIndicator.Output.Value);
            Assert.AreEqual <double>(0, _drum.LevelIndicator.Output.EURange.Value.Low);
            Assert.AreEqual <double>(1000, _drum.LevelIndicator.Output.EURange.Value.High);
        }
        public void ConstructorTest()
        {
            AnalogItemState <double> _item = new AnalogItemState <double>(null, "browseName", ModelExtensions.CreateRange(0, 1), 0.5);

            Assert.AreEqual <string>("browseName", _item.BrowseName.Name);
            Assert.IsFalse(_item.BrowseName.NamespaceIndexSpecified);
            //EURange
            Assert.IsNotNull(_item.EURange);
            Assert.AreEqual <string>(nameof(_item.EURange), _item.EURange.BrowseName.Name);
            Assert.AreEqual <double>(1, _item.EURange.Value.High);
            Assert.AreEqual <double>(0, _item.EURange.Value.Low);
            //Value
            Assert.IsNotNull(_item.Value);
            Assert.AreEqual <double>(0.5, _item.Value);
            Assert.AreEqual <NodeClass>(NodeClass.Variable_2, _item.NodeClass);
            Assert.IsNull(_item.Parent);
            Assert.AreEqual <double>(0.5, _item.Value);
        }
 public GenericActuatorState(NodeState parent, QualifiedName browseName) : base(parent, browseName)
 {
     this.Input = new AnalogItemState <double>(this, BrowseNames.Input, ModelExtensions.CreateRange(1, 0), 0.5);
 }
 public FlowTransmitterState(NodeState parent, QualifiedName browseName) : base(parent, browseName)
 {
     this.Output = new AnalogItemState <double>(this, BrowseNames.Output, ModelExtensions.CreateRange(1, 0), 0.5);
 }