Example #1
0
 //Подготовка сигналов
 public void Prepare()
 {
     try
     {
         if (CloneFile.IsEmpty())
         {
             return;
         }
         Logger.AddEvent("Установка отметок для считываемых сигналов");
         _signalsId.Clear();
         _signalsStrId.Clear();
         using (var rec = new RecDao(CloneFile, "SELECT SignalId, FullCode, Otm FROM Signals"))
             while (rec.Read())
             {
                 string code = rec.GetString("FullCode");
                 if (!ProviderSignals.ContainsKey(code))
                 {
                     rec.Put("Otm", false);
                 }
                 else
                 {
                     rec.Put("Otm", true);
                     (ProviderSignals[code].DataType.LessOrEquals(DataType.Real) ? _signalsId : _signalsStrId)
                     .Add(rec.GetInt("SignalId"), ProviderSignals[code]);
                 }
             }
     }
     catch (Exception ex)
     {
         Logger.AddError("Ошибка при подготовке сигналов", ex);
     }
 }
Example #2
0
 //Подготовка провайдера, чтение значений IDCHANNEL
 public void Prepare()
 {
     _signalsIndication.Clear();
     _signalsUnit.Clear();
     using (var rec = new ReaderAdo(SqlProps, "SELECT OBJECTS.NAME_OBJECT, DEVICES.NAME_DEVICE, LIB_CHANNELS.NAME_TYPE, LIB_CHANNELS.UNIT, CHANNELS.IDCHANNEL, LIB_CHANNELS.TABLE_NAME " +
                                    "FROM CHANNELS INNER JOIN DEVICES ON CHANNELS.IDDEVICE = DEVICES.IDDEVICE INNER JOIN " +
                                    "LIB_CHANNELS ON dbo.CHANNELS.IDTYPE_CHANNEL = dbo.LIB_CHANNELS.IDTYPE_CHANNEL INNER JOIN " +
                                    "POINT_DEVICES ON dbo.DEVICES.IDDEVICE = dbo.POINT_DEVICES.IDDEVICE INNER JOIN " +
                                    "POINT_CONNECTIONS ON dbo.POINT_DEVICES.IDPOINT_CONNECTION = dbo.POINT_CONNECTIONS.IDPOINT_CONNECTION INNER JOIN " +
                                    "POINT_OBJ ON dbo.POINT_CONNECTIONS.IDPOINT_CONNECTION = dbo.POINT_OBJ.IDPOINT_CONNECTION INNER JOIN " +
                                    "OBJECTS ON dbo.POINT_OBJ.IDOBJECT = dbo.OBJECTS.IDOBJECT"))
         while (rec.Read())
         {
             string code = rec.GetString("NAME_OBJECT") + "." + rec.GetString("NAME_DEVICE") + "." + rec.GetString("NAME_TYPE");
             if (ProviderSignals.ContainsKey(code + ".Indication"))
             {
                 var sig = (SignalMir)ProviderSignals[code + ".Indication"];
                 sig.IdChannel = rec.GetInt("IDCHANNEL");
                 _signalsIndication.Add(sig.IdChannel, sig);
             }
             if (ProviderSignals.ContainsKey(code + ".Unit"))
             {
                 var sig = (SignalMir)ProviderSignals[code + ".Unit"];
                 sig.IdChannel = rec.GetInt("IDCHANNEL");
                 _signalsUnit.Add(sig.IdChannel, sig);
             }
         }
 }
Example #3
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));
        }
Example #4
0
 //Получение диапазона клона
 public void ClearSignals()
 {
     ProviderSignals.Clear();
     _reportParams.Clear();
     _signalsDic.Clear();
     _intervalTypes.Clear();
 }
Example #5
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));
        }
Example #6
0
 //Очистить список сигналов
 public void ClearSignals()
 {
     ProviderSignals.Clear();
     _objects.Clear();
     _totals.Clear();
     _objectsId.Clear();
     _totalsId.Clear();
 }
Example #7
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]);
 }
Example #8
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);
        }
Example #9
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));
        }
Example #10
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]);
        }
Example #11
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);
        }
Example #12
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);
        }
Example #13
0
 //Подготовка сигналов
 public void Prepare()
 {
     try
     {
         Logger.AddEvent("Подготовка сигналов");
         _signalsId.Clear();
         _signalsStrId.Clear();
         using (var rec = new DataSetSql(SqlProps, "SELECT SignalId, FullCode, Otm FROM Signals"))
             while (rec.Read())
             {
                 string code = rec.GetString("FullCode");
                 if (ProviderSignals.ContainsKey(code))
                 {
                     (ProviderSignals[code].DataType.LessOrEquals(DataType.Real) ? _signalsId : _signalsStrId)
                     .Add(rec.GetInt("SignalId"), ProviderSignals[code]);
                 }
             }
     }
     catch (Exception ex)
     {
         Logger.AddError("Ошибка при подготовке сигналов", ex);
     }
 }
Example #14
0
 //Очистка списка сигналов
 public void ClearSignals()
 {
     ProviderSignals.Clear();
 }
Example #15
0
 //Добавить сигнал в провайдер
 public ProviderSignal AddSignal(string signalInf, string code, DataType dataType, int idInClone = 0)
 {
     return(ProviderSignals.Add(code, new SignalMir(signalInf, code, dataType, this, idInClone)));
 }
Example #16
0
 //Очистка списка сигналов
 public void ClearSignals()
 {
     ProviderSignals.Clear();
     _outs.Clear();
     _analogs.Clear();
 }
Example #17
0
 //Очистка списка сигналов
 public void ClearSignals()
 {
     _objectsId.Clear();
     ProviderSignals.Clear();
     _parts.Clear();
 }
Example #18
0
 public void ClearSignals()
 {
     ProviderSignals.Clear();
     _signalsId.Clear();
     _signalsStrId.Clear();
 }