Exemple #1
0
 public OpcSim(IOpcNode parent, OpcName name, OpcContext context) : base(parent, name)
 {
     Context = context;
     Simulator.Instance().Register(this);
     //LoadChildren(simChildren, Context);
     //RegisterChildren();
 }
Exemple #2
0
        public Zyklon(IOpcNode parent, OpcName name, OpcContext context, Drehrohrofen ofen) : base(parent, name, context)
        {
            Ofen = ofen;
            tempSensors.Add(new TemperaturSensor(this, "Temperatur_1,", Context)
            {
                UpperLimit = Ofen.MaxTemp
            });
            tempSensors.Add(new TemperaturSensor(this, "Temperatur_2,", Context)
            {
                UpperLimit = Ofen.MaxTemp
            });
            tempSensors.Add(new TemperaturSensor(this, "Temperatur_3,", Context)
            {
                UpperLimit = Ofen.MaxTemp
            });
            tempSensors.Add(new TemperaturSensor(this, "Temperatur_4,", Context)
            {
                UpperLimit = Ofen.MaxTemp
            });
            tempSensors.Add(new TemperaturSensor(this, "Temperatur_5,", Context)
            {
                UpperLimit = Ofen.MaxTemp
            });

            tempSensors.ForEach(s => s.TempPt1.TimeConstant = 8000);

            exhaustHeat             = new OpcDataVariableNode <bool>(this, "AbwärmeOk", false);
            exhaustHeat.AccessLevel = OpcAccessLevel.CurrentRead;

            tempSensors.ForEach(s => RegisterComponent(s));
        }
Exemple #3
0
        public LevelSensor(OpcSimModule parent, OpcName name, OpcContext context, double maxLevel) : base(parent, name, context)
        {
            _maxLevelKg             = new OpcAnalogItemNode <double>(this, "MaxLevelKg", maxLevel);
            _maxLevelKg.AccessLevel = OpcAccessLevel.CurrentRead;

            _levelKg = new OpcAnalogItemNode <double>(this, "LevelKg");
            _levelKg.InstrumentRange      = new OpcValueRange(MaxLevelKg, 0);
            _levelKg.EngineeringUnit      = new OpcEngineeringUnitInfo(4933453, "Kg", "Kilogramm");
            _levelKg.EngineeringUnitRange = new OpcValueRange(MaxLevelKg, 0);
            _levelKg.Description          = "Füllstand in Kilogramm";
            _levelKg.BeforeApplyChanges  += _levelKg_BeforeApplyChanges;

            _levelPercent             = new OpcDataVariableNode <double>(this, "LevelPercent");
            _levelPercent.Description = "Füllstand in Prozent";
            _levelPercent.AccessLevel = OpcAccessLevel.CurrentRead;

            _alarmLevelHeigh             = new OpcDataVariableNode <bool>(this, "AlarmFüllstandHoch");
            _alarmLevelHeigh.Description = "Füllstand > 95%";

            _warningLevelHeigh             = new OpcDataVariableNode <bool>(this, "WarnungFüllstandHoch");
            _warningLevelHeigh.Description = "Füllstand > 80%";

            //Random r = new Random();
            //LevelKg = r.NextDouble() * 5000.0;
        }
Exemple #4
0
 public ManualControl(IOpcNode parent, OpcName name, OpcContext context) : base(parent, name, context)
 {
     _start                    = new OpcDataVariableNode <bool>(this, "Ein");
     _start.AccessLevel        = OpcAccessLevel.CurrentRead;
     _manualActive             = new OpcDataVariableNode <bool>(this, "Erlaubt");
     _manualActive.AccessLevel = OpcAccessLevel.CurrentRead;
 }
 public OpcSimOperation(IOpcNode parent, OpcName name, OpcContext context) : base(parent, name, context)
 {
     _operationState = new OpcDataVariableNode <OperationState>(this, "State");
     _operationState.BeforeApplyChanges += _operationState_BeforeApplyChanges;
     _operationState.AccessLevel         = OpcAccessLevel.CurrentRead;
     _operationMode = new OpcDataVariableNode <OperationMode>(this, "Mode");
     _operationMode.BeforeApplyChanges += _operationMode_BeforeApplyChanges;
 }
Exemple #6
0
 public MyComplexVariableNode(
     OpcName name,
     string mandatoryValue,
     int optionalValue = -1)
     : base(name)
 {
     this.InitializeChildren(mandatoryValue, optionalValue);
 }
        public MotorDelayLane(IOpcNode parent, OpcName name, OpcContext context, int numerOfMotors) : base(parent, name, context)
        {
            for (int i = 0; i < numerOfMotors; i++)
            {
                motors.Add(new Motor(this, "Motor" + i, Context));
            }

            motors.ForEach(m => RegisterComponent(m));
        }
 public OpcSimComponent(IOpcNode parent, OpcName name, OpcContext context) : base(parent, name, context)
 {
     _warningActive = new OpcDataVariableNode <bool>(this, "WarnungAktiv");
     _errorActive   = new OpcDataVariableNode <bool>(this, "ErrorAktiv");
     _simError      = new OpcDataVariableNode <bool>(this, "SimStörung");
     _simError.BeforeApplyChanges += _simError_BeforeApplyChanges;
     _simWarning = new OpcDataVariableNode <bool>(this, "SimWarnung");
     _simWarning.BeforeApplyChanges += _simWarning_BeforeApplyChanges;
 }
Exemple #9
0
 public Silo(IOpcNode parent, OpcName name, OpcContext context, double capacity) : base(parent, name, context)
 {
     Level  = new LevelSensor(this, "LevelSensor", Context, capacity);
     Motor  = new Motor(this, "Fördermotor", Context);
     Outlet = new Valve(this, "Ausgangsventil", Context);
     RegisterComponent(Motor);
     RegisterComponent(Level);
     RegisterComponent(Outlet);
 }
Exemple #10
0
 public TemperaturSensor(IOpcNode parent, OpcName name, OpcContext context) : base(parent, name, context)
 {
     _unit                   = new OpcDataVariableNode <string>(this, "Unit", "°C");
     _range                  = new OpcDataVariableNode <string>(this, "Range", "0..0");
     _maxValue               = new OpcDataVariableNode <double>(this, "MaxValue");
     _tempValue              = new OpcDataVariableNode <double>(this, "Value");
     _upperLimit             = new OpcDataVariableNode <double>(this, "UpperLimit", 100.0);
     _upperLimit.AccessLevel = OpcAccessLevel.CurrentRead;
     _overtemp               = new OpcDataVariableNode <bool>(this, "AlarmÜbertemperatur");
     CreatePT1();
 }
Exemple #11
0
        public Absackung(IOpcNode parent, OpcName name, OpcContext context) : base(parent, name, context)
        {
            Abfüllung = new Motor(this, "Abfüllung", context);

            _numberOfBags             = new OpcDataVariableNode <int>(this, "AnzahlSäcke", 0);
            _numberOfBags.AccessLevel = OpcAccessLevel.CurrentRead;
            _resetBags = new OpcDataVariableNode <bool>(this, "ResetAnzahl");
            _resetBags.BeforeApplyChanges += _resetBags_BeforeApplyChanges;

            RegisterComponent(Abfüllung);
        }
        protected override OpcNodeId Create(
            OpcContext context,
            OpcNamespace nodeNamespace,
            IOpcNodeInfo node,
            OpcName nodeName)
        {
            if (!OpcName.IsNullOrEmpty(nodeName))
            {
                nodeName = nodeName.Namespace.GetName("\"" + nodeName.Value + "\"");
            }

            return(base.Create(context, nodeNamespace, node, nodeName));
        }
Exemple #13
0
        public Kuehler(IOpcNode parent, OpcName name, OpcContext context) : base(parent, name, context)
        {
            Ventilators.Add(new Motor(this, "Ventilator1", Context));
            Ventilators.Add(new Motor(this, "Ventilator2", Context));
            Ventilators.Add(new Motor(this, "Ventilator3", Context));

            Ventilators.ForEach(v => RegisterComponent(v));

            tempSensor            = new TemperaturSensor(this, "Temperatur", context);
            tempSensor.UpperLimit = 120.0;

            RegisterComponent(tempSensor);
        }
Exemple #14
0
        public Drehrohrofen(IOpcNode parent, OpcName name, OpcContext context, Brennstoffzufuhr bsz) : base(parent, name, context)
        {
            Brennstoffzufuhr           = bsz;
            _heatOk                    = new OpcDataVariableNode <bool>(this, "TemperaturOk");
            _delayLengthMs             = new OpcDataVariableNode <int>(this, "SimDelayLength", 10000);
            _delayLengthMs.Description = "Simulierte Verzögerung von Einlauf zum Auslauf von Material";
            Brenner                    = new Brenner(this, "Brenner", Context);
            Motor           = new Motor(this, "Hauptmotor", Context);
            ValveWasteHeate = new Valve(this, "VentilAbwärme", Context);



            tempSensors.Add(new TemperaturSensor(this, "Temperatur_1,", Context)
            {
                UpperLimit = MaxTemp
            });
            tempSensors.Add(new TemperaturSensor(this, "Temperatur_2,", Context)
            {
                UpperLimit = MaxTemp
            });
            tempSensors.Add(new TemperaturSensor(this, "Temperatur_3,", Context)
            {
                UpperLimit = MaxTemp
            });
            tempSensors.Add(new TemperaturSensor(this, "Temperatur_4,", Context)
            {
                UpperLimit = MaxTemp
            });
            tempSensors.Add(new TemperaturSensor(this, "Temperatur_5,", Context)
            {
                UpperLimit = MaxTemp
            });
            tempSensors.Add(new TemperaturSensor(this, "Temperatur_4,", Context)
            {
                UpperLimit = MaxTemp
            });
            tempSensors.Add(new TemperaturSensor(this, "Temperatur_5,", Context)
            {
                UpperLimit = MaxTemp
            });

            tempSensors.ForEach(s => s.TempPt1.TimeConstant = 14000);

            RegisterComponent(Brenner);
            RegisterComponent(Motor);
            RegisterComponent(ValveWasteHeate);

            tempSensors.ForEach(s => RegisterComponent(s));
        }
Exemple #15
0
        public Valve(IOpcNode parent, OpcName name, OpcContext context) : base(parent, name, context)
        {
            _maxFlow = new OpcAnalogItemNode <double>(this, "MaxDurchfluss", 600.0);
            _maxFlow.BeforeApplyChanges += _maxFlow_BeforeApplyChanges;

            _flow = new OpcAnalogItemNode <double>(this, "Durchfluss");
            _flow.InstrumentRange      = new OpcValueRange(400.0, 0);
            _flow.EngineeringUnit      = new OpcEngineeringUnitInfo(4666675, "m3/min", "Kubikmeter pro Minute");
            _flow.EngineeringUnitRange = new OpcValueRange(400.0, 0);
            _flow.Description          = "Kubikmeter pro Minute";

            _open             = new OpcDataVariableNode <bool>(this, "Offen");
            _open.Description = "True = offen, False = zu";
            _movementAlarm    = new OpcDataVariableNode <bool>(this, "AlarmPosition");
            ManualControl     = new ManualControl(this, "Handbetrieb", Context);
        }
Exemple #16
0
        public Motor(IOpcNode parent, OpcName name, OpcContext context) : base(parent, name, context)
        {
            tempSensor = new TemperaturSensor(this, "Temperatur", context);
            tempSensor.AlarmEventChanged += TempSensor_AlarmEventChanged;
            tempSensor.UpperLimit         = 70.0;

            _speed       = new OpcDataVariableNode <double>(this, "Speed");
            _current     = new OpcDataVariableNode <double>(this, "Current");
            _power       = new OpcDataVariableNode <double>(this, "Power");
            _running     = new OpcDataVariableNode <bool>(this, "Running");
            _overcurrent = new OpcDataVariableNode <bool>(this, "AlarmÜberlast");

            ManualControl = new ManualControl(this, "Handbetrieb", Context);

            CreateSpeedPt1();
            PowerPt1   = new PT1_Floating(5000);
            CurrentPt1 = new PT1_Floating(12.5);
            CurrentPt1.TimeConstant = 200;
        }
Exemple #17
0
        public RohMaterialGewinnung(IOpcNode parent, OpcName name, OpcContext context) : base(parent, name, context)
        {
            _truckReadyToUnload             = new OpcDataVariableNode <bool>(this, "TruckBereitZumAbladen");
            _truckReadyToUnload.Description = "Truck is ready to unload.";
            _truckReadyToUnload.AccessLevel = OpcAccessLevel.CurrentRead;

            _unloadingActive             = new OpcDataVariableNode <bool>(this, "TruckAbladenAktiv");
            _unloadingActive.Description = "Truck is ready to unload.";
            _unloadingActive.AccessLevel = OpcAccessLevel.CurrentRead;

            _timeUnloading             = new OpcDataVariableNode <int>(this, "ZeitAbladen");
            _timeUnloading.Description = "Zeit des Abladevorgangs";

            _timeWaitTruck             = new OpcDataVariableNode <int>(this, "ZeitWartenAufTruck");
            _timeWaitTruck.Description = "Wartezeit nächster Truck";

            _simTruckIntervalMs   = new OpcDataVariableNode <int>(this, "Z_SimTruckIntervallMs", 10000);
            _simTruckLoadCapacity = new OpcDataVariableNode <double>(this, "Z_SimTruckKapazität", 10000.0);
            _simTruckUnloadTimeMs = new OpcDataVariableNode <int>(this, "Z_SimTruckAbladeZeitMs", 8000);
        }
Exemple #18
0
        public OpcSimModule(IOpcNode parent, OpcName name, OpcContext context) : base(parent, name, context)
        {
            _start             = new OpcDataVariableNode <bool>(this, "Start");
            _start.Description = "Eine steigende Flanke startet die Anlage.";

            _stop             = new OpcDataVariableNode <bool>(this, "Stop");
            _stop.Description = "Eine steigende Flanke stoppt die Anlage.";

            _warningPending             = new OpcDataVariableNode <bool>(this, "WarnungAktiv");
            _warningPending.Description = "Zeigt eine anstehende Warnung.";
            _warningPending.AccessLevel = OpcAccessLevel.CurrentRead;

            _acknowledge             = new OpcDataVariableNode <bool>(this, "Quittieren");
            _acknowledge.Description = "Eine steigende Flanke quittiert die Anlage.";

            _stop.BeforeApplyChanges        += _stop_BeforeApplyChanges;
            _start.BeforeApplyChanges       += _start_BeforeApplyChanges;
            _acknowledge.BeforeApplyChanges += _acknowledge_BeforeApplyChanges;

            _receiverReady             = new OpcDataVariableNode <bool>(this, "EmpfangenBereit");
            _receiverReady.AccessLevel = OpcAccessLevel.CurrentRead;
        }
Exemple #19
0
 public Brenner(IOpcNode parent, OpcName name, OpcContext context) : base(parent, name, context)
 {
     _fuelMissing = new OpcDataVariableNode <bool>(this, "AlarmBrennstoffFehlt");
 }
Exemple #20
0
 public MyComplexObjectNode(IOpcNode parent, OpcName name)
     : base(parent, name)
 {
     this.InitializeChildren();
 }
Exemple #21
0
 public MyComplexObjectNode(OpcName name)
     : base(name)
 {
     this.InitializeChildren();
 }
Exemple #22
0
 public Brecher(IOpcNode parent, OpcName name, OpcContext context) : base(parent, name, context)
 {
     motors.ForEach(m => RegisterComponent(m));
 }
 public OpcSimComponentControl(IOpcNode parent, OpcName name, OpcContext context) : base(parent, name, context)
 {
 }
 public MySimpleObjectNode(OpcName name)
     : base(name)
 {
 }
 public MySimpleObjectNode(IOpcNode parent, OpcName name)
     : base(parent, name)
 {
 }
 public VariableNode(NodeManager manager, IOpcNode parent, OpcName name, T value)
     : base(parent, name, value)
 {
     this.manager = manager;
 }
 public MySimpleVariableNode(OpcName name, int value)
     : base(name, value)
 {
 }
 public MySimpleVariableNode(IOpcNode parent, OpcName name, int value)
     : base(parent, name, value)
 {
 }
Exemple #29
0
 public Brennstoffzufuhr(IOpcNode parent, OpcName name, OpcContext context) : base(parent, name, context)
 {
     _gasLevel  = new OpcDataVariableNode <int>(this, "GasVorrat", 35);
     _coleLevel = new OpcDataVariableNode <int>(this, "KohleVorrat", 75);
 }