Esempio n. 1
0
        //Добавить сигнал в источник
        public ProviderSignal AddSignal(string signalInf, string code, DataType dataType, int idInClone = 0)
        {
            var sig = new ProviderSignal(signalInf, code, dataType, this, idInClone);

            ProviderSignals.Add(code, sig);
            string tableName = sig.Inf["TableName"];
            int    nodeId    = sig.Inf.GetInt("NodeId");
            string prop      = sig.Inf["Prop"];

            if (prop.IsEmpty())
            {
                if (!_objects.ContainsKey(tableName))
                {
                    _objects.Add(tableName, new DicI <ObjectProlog>());
                }
                var ob = _objects[tableName].Add(nodeId, new ObjectProlog(tableName, nodeId, prop));
                _objectsId.Add(nodeId, ob);
                return(ob.AddSignal(sig));
            }
            if (!_totals.ContainsKey(tableName))
            {
                _totals.Add(tableName, new DicI <ObjectProlog>());
            }
            var obt = _totals[tableName].Add(nodeId, new ObjectProlog(tableName, nodeId, prop));

            _totalsId.Add(nodeId, obt);
            return(obt.AddSignal(sig));
        }
Esempio n. 2
0
        //Добавить сигнал в провайдер
        public ProviderSignal AddSignal(string signalInf, string code, DataType dataType, int idInClone = 0)
        {
            var signal = new AlphaSignal(signalInf, code, dataType, this, idInClone);

            _signalsById.Add(signal.NodeId, signal);
            return(ProviderSignals.Add(code, signal));
        }
Esempio n. 3
0
 //Добавление сигнала
 public ProviderSignal AddSignal(string signalInf, string code, DataType dataType, int idInClone = 0)
 {
     if (!ProviderSignals.ContainsKey(code))
     {
         var sig = new ProviderSignal(signalInf, code, dataType, this, idInClone)
         {
             Value = new SingleValue(SingleType.List)
         };
         ProviderSignals.Add(code, sig);
         return(sig);
     }
     return(ProviderSignals[code]);
 }
Esempio n. 4
0
        //Добавляет один сигнал в список
        public ProviderSignal AddSignal(string signalInf, string code, DataType dataType, int idInClone = 0)
        {
            var sig = new ProviderSignal(signalInf, code, dataType, this, idInClone);
            //Заполнение SignalsLists
            var ind = new ObjectIndex
            {
                Sn         = sig.Inf.GetInt("SysNum"),
                NumType    = sig.Inf.GetInt("NumType"),
                Appartment = sig.Inf.GetInt("Appartment"),
                Out        = sig.Inf.GetInt("NumOut")
            };
            ObjectKosm obj;

            if (ind.Out == 1 && (ind.NumType == 1 || ind.NumType == 3 || ind.NumType == 32))
            {
                if (_analogs.ContainsKey(ind))
                {
                    obj = _analogs[ind];
                }
                else
                {
                    obj = new ObjectKosm(ind, sig.Code);
                    _analogs.Add(ind, obj);
                }
            }
            else
            {
                if (_outs.ContainsKey(ind))
                {
                    obj = _outs[ind];
                }
                else
                {
                    obj = new ObjectKosm(ind, sig.Code);
                    _outs.Add(ind, obj);
                }
            }
            var nsig = obj.AddSignal(sig);

            if (nsig == sig)
            {
                ProviderSignals.Add(sig.Code, nsig);
            }
            return(nsig);
        }
Esempio n. 5
0
        //Добавить сигнал в провайдер
        public ProviderSignal AddSignal(string signalInf, string code, DataType dataType, int idInClone = 0)
        {
            var sig = new SimaticSignal(signalInf, code, dataType, this, idInClone);

            if (!_objectsId.ContainsKey(sig.Id))
            {
                var ob = new SimaticObject(sig);
                _objectsId.Add(sig.Id, ob);
                if (_parts.Count == 0 || _parts[_parts.Count - 1].Count == 500)
                {
                    _parts.Add(new List <ProviderObject>());
                }
                _parts[_parts.Count - 1].Add(ob);
                ProviderSignals.Add(sig.Code, sig);
                return(sig);
            }
            var addsig = _objectsId[sig.Id].AddSignal(sig);

            return(ProviderSignals.Add(addsig.Code, addsig));
        }
Esempio n. 6
0
        //Добавить сигнал
        public ProviderSignal AddSignal(string signalInf, string code, DataType dataType, int idInClone)
        {
            var           sig = new SignalOvation(signalInf, code, dataType, this, idInClone);
            ObjectOvation ob;

            if (!_objectsId.ContainsKey(sig.Id))
            {
                ob = new ObjectOvation(sig.Id, code);
                _objectsId.Add(sig.Id, ob);
                if (_parts.Count == 0 || _parts[_parts.Count - 1].Count == 200)
                {
                    _parts.Add(new List <ProviderObject>());
                }
                _parts[_parts.Count - 1].Add(_objectsId[sig.Id]);
            }
            ob = _objectsId[sig.Id];
            if (sig.IsState) //Слово состояния
            {
                if (ob.StateSignal == null)
                {
                    ProviderSignals.Add(sig.Code, sig);
                }
                return(ob.StateSignal ?? (ob.StateSignal = sig));
            }
            if (sig.Bit == -1)//Аналоговый или дискретный
            {
                if (ob.ValueSignal == null)
                {
                    ProviderSignals.Add(sig.Code, sig);
                }
                return(ob.ValueSignal ?? (ob.ValueSignal = sig));
            }
            if (!ob.BitSignals.ContainsKey(sig.Bit))//Бит упакованного
            {
                ProviderSignals.Add(sig.Code, sig);
                ob.BitSignals.Add(sig.Bit, sig);
            }
            return(ob.BitSignals[sig.Bit]);
        }
Esempio n. 7
0
        //Добавить сигнал
        public ProviderSignal AddSignal(string signalInf, string code, DataType dataType, int idInClone = 0)
        {
            var dic   = signalInf.ToPropertyDicS();
            var proj  = dic["Project"];
            var ocode = dic["CodeObject"];
            var itype = dic["IntervalType"].ToIntervalType();
            var sp    = dic["SuperProcessType"].ToSuperProcess();

            if (!_intervalTypes.Contains(itype))
            {
                _intervalTypes.Add(itype);
            }
            if (!_signalsDic.ContainsKey(proj))
            {
                _signalsDic.Add(proj, new DicS <Dictionary <IntervalType, ProviderSignal> >());
                _reportParams.Add(proj, new DicS <ArchiveReportParam>());
            }
            var projdic = _signalsDic[proj];
            var repdic  = _reportParams[proj];

            if (!projdic.ContainsKey(ocode))
            {
                projdic.Add(ocode, new Dictionary <IntervalType, ProviderSignal>());
                repdic.Add(ocode, new ArchiveReportParam(ocode, proj, dataType, sp, CalcParamType.Class, new List <IntervalType>()));
            }
            if (projdic[ocode].ContainsKey(itype))
            {
                return(projdic[ocode][itype]);
            }
            var sig = new ProviderSignal(signalInf, code, dataType, this, idInClone)
            {
                Value = new SingleValue(SingleType.List)
            };

            projdic[ocode].Add(itype, sig);
            ProviderSignals.Add(code, sig);
            repdic[ocode].Queries.Add(itype, new ArchiveQueryValues());
            return(sig);
        }
Esempio n. 8
0
        //Добавить сигнал в провайдер
        public ProviderSignal AddSignal(string signalInf, string code, DataType dataType, int idInClone = 0)
        {
            var sig = new SignalWonderware(signalInf, code, dataType, this, idInClone);

            if (!_objects.ContainsKey(sig.TagName))
            {
                var ob = new ObjectWonderware(sig.TagName);
                _objects.Add(sig.TagName, ob);
                if (_parts.Count == 0 || _parts[_parts.Count - 1].Count == 500)
                {
                    _parts.Add(new List <ProviderObject>());
                }
                _parts[_parts.Count - 1].Add(ob);
            }
            var ret = _objects[sig.TagName].AddSignal(sig);

            if (ret == sig)
            {
                ProviderSignals.Add(sig.Code, sig);
            }
            return(ret);
        }
Esempio n. 9
0
 //Добавить сигнал в провайдер
 public ProviderSignal AddSignal(string signalInf, string code, DataType dataType, int idInClone = 0)
 {
     return(ProviderSignals.Add(code, new SignalMir(signalInf, code, dataType, this, idInClone)));
 }