Пример #1
0
        public override object Read(plcdb_lib.Models.Model.TagsRow t)
        {
            if (!Client.Connected())
            {
                int connResult = Client.ConnectTo(ControllerInfo.Address, (int)ControllerInfo.s7_rack, (int)ControllerInfo.s7_slot);
                if (connResult != 0)
                {
                    Log.Error(GetErrorText(connResult));
                    Client.Disconnect();
                    Client = null;
                    Client = new S7Client();
                    throw new EntryPointNotFoundException("Unable to connect to PLC " + ControllerInfo.Name);
                }
                bgReadThread.DoWork      -= ReadFromPLC;
                bgReadThread.DoWork      += ReadFromPLC;
                RefreshDataTimer.Interval = 1000;
                RefreshDataTimer.Elapsed -= RefreshDataTimer_Elapsed;
                RefreshDataTimer.Elapsed += RefreshDataTimer_Elapsed;
                RefreshDataTimer.Start();
            }

            SiemensTag Tag = ActiveTags.FirstOrDefault(p => p.TagRow.PK == t.PK);

            if (Tag == null)
            {
                Tag = new SiemensTag()
                {
                    TagRow = t
                };
                ActiveTags.Add(Tag);
            }
            return(Tag.TagRow.CurrentValue);
        }
Пример #2
0
 public override object Read(plcdb_lib.Models.Model.TagsRow t)
 {
     try
     {
         if (!ActiveTags.Select(p => p.TagRow).Contains(t))
         {
             AddTagToGroup(t);
         }
         return(ActiveTags.First(p => p.TagRow.PK == t.PK).Value);
     }
     catch (Exception ex)
     {
         throw new Exception("Error reading tag '" + t + "' from OPC server: " + ControllerInfo.Address + "\\" + ControllerInfo.opc_server, ex);
     }
 }
Пример #3
0
        public override bool Write(plcdb_lib.Models.Model.TagsRow t, object val)
        {
            SiemensTag Tag = ActiveTags.FirstOrDefault(p => p.TagRow.PK == t.PK);

            if (Tag == null)
            {
                Tag = new SiemensTag()
                {
                    TagRow = t
                };
                ActiveTags.Add(Tag);
            }
            WriteToPLC(Tag, val);
            return(true);
        }
Пример #4
0
 public override bool Write(plcdb_lib.Models.Model.TagsRow t, object val)
 {
     try
     {
         if (!ActiveTags.Select(p => p.TagRow).Contains(t))
         {
             AddTagToGroup(t);
         }
         OpcTag ToWrite = ActiveTags.First(p => p.TagRow.PK == t.PK);
         TagGroup.SyncWriteItems(new int[] { ToWrite.ServerId }, new object[] { val });
         return(true);
     }
     catch (Exception ex)
     {
         throw new Exception("Error writing tag '" + t + "' from OPC server: " + ControllerInfo.Address + "\\" + ControllerInfo.opc_server, ex);
     }
 }
Пример #5
0
 public override bool Write(plcdb_lib.Models.Model.TagsRow t, object val)
 {
     throw new NotImplementedException();
 }
Пример #6
0
 public override object Read(plcdb_lib.Models.Model.TagsRow t)
 {
     throw new NotImplementedException();
 }