Пример #1
0
        /// <summary>
        /// 更新变量
        /// </summary>
        /// <param name="tagTable">变量表</param>
        /// <param name="tag">变量</param>
        /// <param name="properties">变量数据</param>
        /// <param name="isConstant">是否静态变量</param>
        //public static IBLTag UpdateTag(
        //  this ICoreObject tagTable,
        //  IBLTag tag,
        //  Dictionary<string, string> properties,
        //  bool isConstant = false,
        //  ISynchronizeInvoke synchronizer = null)
        //{
        //  ISynchronizeInvoke UsingSynchronizer;
        //  if (synchronizer == null)
        //  {
        //    UsingSynchronizer = tagTable.GetSynchronizer();
        //  }
        //  else
        //  {
        //    UsingSynchronizer = synchronizer;
        //  }
        //  return TiaStarter.RunFuncInSynchronizer(UsingSynchronizer,
        //    () =>
        //    {
        //      bool result = UpdateTagReal(tagTable, tag, properties, isConstant);
        //      return FindRootTagByName(tagTable.GetParent(), tag.Name);
        //    }) as IBLTag;
        //}

        public static IBLTag ToBLTag(this ICoreObject tagRef,
                                     ISynchronizeInvoke synchronizer = null)
        {
            ISynchronizeInvoke UsingSynchronizer;

            if (synchronizer == null)
            {
                UsingSynchronizer = tagRef.GetSynchronizer();
            }
            else
            {
                UsingSynchronizer = synchronizer;
            }

            return(TiaStarter.RunFuncInSynchronizer(UsingSynchronizer,
                                                    (p_tag) =>
            {
                if (p_tag == null)
                {
                    return null;
                }
                IBusinessLogicConnector businessLogicConnector = tagRef as IBusinessLogicConnector;
                if (businessLogicConnector == null)
                {
                    return null;
                }
                return businessLogicConnector.GetBusinessLogic("Siemens.Automation.DomainServices.TagService") as IBLTag;
            }, tagRef) as IBLTag);
        }
Пример #2
0
 public XLSXImporterProxy(
     ICoreObject cpu,
     ISynchronizeInvoke synchronizer = null)
 {
     if (synchronizer == null)
     {
         Synchronizer = cpu.GetSynchronizer();
     }
     else
     {
         Synchronizer = synchronizer;
     }
     TiaStarter.RunInSynchronizer(Synchronizer, () =>
     {
         XLSXImporter = new XLSXImporter(cpu.GetTagService(),
                                         MassDataHandler.CreateWorkbook(null),
                                         cpu.GetDefaultTagTable(Synchronizer),
                                         XLSXImportExportOptions.IncludeTags | XLSXImportExportOptions.IncludeConstants,
                                         cpu.GetFolderService(),
                                         cpu.GetCommandProcessor(),
                                         null,
                                         null,
                                         cpu.GetNameService(),
                                         cpu.GetRangeCheck());
     });
 }
        public static BlockEditorLogicBase GetPLBlockEditorLogic(this ICoreObject block,
                                                                 IWorkingContext ViewWorkingContext        = null,
                                                                 LanguageServiceContainer serviceContainer = null,
                                                                 ISynchronizeInvoke synchronizer           = null)
        {
            ISynchronizeInvoke UsingSynchronizer;

            if (synchronizer == null)
            {
                UsingSynchronizer = block.GetSynchronizer();
            }
            else
            {
                UsingSynchronizer = synchronizer;
            }
            return(TiaStarter.RunInSynchronizer(UsingSynchronizer,
                                                () =>
            {
                PLBlockEditorLogic pl = new PLBlockEditorLogic();
                IWorkingContext iwc = block.GetWorkingContext();
                pl.Attach(iwc);
                pl.PostAttach();


                EditorPayload ep = new EditorPayload(block, ViewWorkingContext, serviceContainer);
                pl.SetPayload(ep);
                OnlineManagerBase OnlineManager = pl.OnlineManager;
                return pl;
            }) as BlockEditorLogicBase);
        }
Пример #4
0
        public static BlockEditorControlBase GetGraphView(this ICoreObject block,
                                                          IWorkingContext ViewWorkingContext = null,
                                                          ISynchronizeInvoke synchronizer    = null)
        {
            ISynchronizeInvoke UsingSynchronizer;

            if (synchronizer == null)
            {
                UsingSynchronizer = block.GetSynchronizer();
            }
            else
            {
                UsingSynchronizer = synchronizer;
            }
            return(TiaStarter.RunInSynchronizer(UsingSynchronizer,
                                                () =>
            {
                GraphBlockEditorControl pl = new GraphBlockEditorControl();
                IWorkingContext iwc = block.GetWorkingContext();
                pl.Attach(iwc);
                BlockEditorLogicBase logic = block.GetGraphBlockEditorLogic();
                pl.SetDomainLogic(logic);
                pl.SetPayload(block);
                pl.InitializationFinished();
                pl.CreateVisuals();
                return pl;
            }) as BlockEditorControlBase);
        }
Пример #5
0
        /// <summary>
        /// 取得或创建变量表
        /// </summary>
        /// <param name="cpu">控制器</param>
        /// <param name="Path">变量表路径</param>
        public static ICoreObject GetOrCreateTagTable(
            this ICoreObject cpu,
            string Path,
            ISynchronizeInvoke synchronizer = null)
        {
            ISynchronizeInvoke UsingSynchronizer;

            if (synchronizer == null)
            {
                UsingSynchronizer = cpu.GetSynchronizer();
            }
            else
            {
                UsingSynchronizer = synchronizer;
            }
            return(TiaStarter.RunInSynchronizer(UsingSynchronizer, (Func <ICoreObject>)
                                                    (() => {
                ICoreObject tagFolder = cpu.GetTagsFolder();
                ICoreObject table = GetTagTableByName(tagFolder, Path);
                if (table == null)
                {
                    table = CreateTagTable(tagFolder, Path);
                }
                return table;
            })) as ICoreObject);
        }
Пример #6
0
 private void AddTag2TagTable(ICoreObject parent,
                              string tagName,
                              string tagDataType,
                              string tagAddr,
                              string tagRemark,
                              string hmiAccessible   = "True",
                              string hmiVisible      = "True",
                              string retain          = "",
                              ITagService tagService = null)
 {
     TiaStarter.RunActionInSynchronizer(UsingSynchronizer,
                                        () =>
     {
         Reflector.RunInstanceMethodByName(FM,
                                           "ImportXML",
                                           ReflectionWays.SystemReflection,
                                           tagName,
                                           tagDataType,
                                           tagAddr,
                                           tagRemark,
                                           hmiAccessible,
                                           hmiVisible,
                                           retain,
                                           tagService);
     });
 }
Пример #7
0
        /// <summary>
        /// 按地址查找变量
        /// </summary>
        /// <param name="cpu">控制器</param>
        /// <param name="address">地址</param>
        public static IBLTag FindRootTagByAddress(this ICoreObject cpu,
                                                  string address,
                                                  ISynchronizeInvoke synchronizer = null)
        {
            ISynchronizeInvoke UsingSynchronizer;

            if (synchronizer == null)
            {
                UsingSynchronizer = cpu.GetSynchronizer();
            }
            else
            {
                UsingSynchronizer = synchronizer;
            }
            return(TiaStarter.RunInSynchronizer(UsingSynchronizer,
                                                (p_cpu, p_address, p_synchronizer) =>
            {
                ITagService tagService = p_cpu.GetTagService();
                RootTagCollectionProxy rtcp = p_cpu.FindRootTags(p_synchronizer);
                List <IBLTag> tags = rtcp.Tags;
                foreach (IBLTag tag in tags)
                {
                    if (tag.LogicalAddress == p_address)
                    {
                        return tag;
                    }
                }
                return null;
            }, cpu, address, UsingSynchronizer) as IBLTag);
        }
Пример #8
0
 public ICoreObject ResolveTagTableFromProperties(IDictionary <string, string> properties)
 {
     return(TiaStarter.RunInSynchronizer(Synchronizer,
                                         (p_properties) =>
     {
         return Reflector.RunInstanceMethodByName(XLSXImporter,
                                                  "ResolveTagTableFromProperties",
                                                  ReflectionWays.SystemReflection,
                                                  p_properties) as ICoreObject;
     }, properties) as ICoreObject);
 }
Пример #9
0
 /// <summary>
 /// 取得或创建变量表
 /// </summary>
 public ICoreObject GetOrCreateTagTable(string tagTablePath)
 {
     return(TiaStarter.RunInSynchronizer(Synchronizer,
                                         (p_tagTablePath) =>
     {
         ICoreObject tagTable = Reflector.RunInstanceMethodByName(XLSXImporter,
                                                                  "GetOrCreateTagTable",
                                                                  ReflectionWays.SystemReflection,
                                                                  p_tagTablePath) as ICoreObject;
         return tagTable;
     }, tagTablePath) as ICoreObject);
 }
Пример #10
0
 public bool UpdateTag(IBLTag tag, Dictionary <string, string> properties, bool isConstant, int rowNumber)
 {
     return((bool)TiaStarter.RunInSynchronizer(Synchronizer,
                                               (p_tag, p_properties, p_isConstant) =>
     {
         return Reflector.RunInstanceMethodByName(XLSXImporter,
                                                  "UpdateTag",
                                                  ReflectionWays.SystemReflection,
                                                  p_tag,
                                                  p_properties,
                                                  p_isConstant);
     }, tag, properties, isConstant));
 }
Пример #11
0
        public bool ImportXML(ICoreObject controller, string path)
        {
            XmlReader xmlReader = XmlReader.Create(path);

            return(TiaStarter.RunInSynchronizer(UsingSynchronizer,
                                                () =>
            {
                return (bool)Reflector.RunInstanceMethodByName(FM,
                                                               "ImportXML",
                                                               ReflectionWays.SystemReflection,
                                                               controller, xmlReader);
            }));
        }
Пример #12
0
 public bool ExportFile(string file, ICoreObject parentObject)
 {
     return((bool)TiaStarter.RunInSynchronizer(UsingSynchronizer,
                                               (Func <bool>)(() =>
     {
         return (bool)Reflector.RunInstanceMethodByName(
             TagsTableViewLogic,
             "ExportFile",
             ReflectionWays.SystemReflection,
             file,
             parentObject);
     })));
 }
Пример #13
0
 public CommandReturnCodes PrepareExport(ICoreObject parentObject, string sourceFile)
 {
     return((CommandReturnCodes)TiaStarter.RunInSynchronizer(UsingSynchronizer,
                                                             (Func <CommandReturnCodes>)(() =>
     {
         return (CommandReturnCodes)Reflector.RunInstanceMethodByName(
             TagsTableViewLogic,
             "PrepareExport",
             ReflectionWays.SystemReflection,
             parentObject,
             sourceFile);
     })));
 }
Пример #14
0
        public static IBLTag UpdateOrCreateTag(
            this ICoreObject cpu,
            string Name,
            string Path,
            string DataType,
            string address,
            string Comment,
            bool isConstant = false,
            ISynchronizeInvoke synchronizer = null)
        {
            ISynchronizeInvoke UsingSynchronizer;

            if (synchronizer == null)
            {
                UsingSynchronizer = cpu.GetSynchronizer();
            }
            else
            {
                UsingSynchronizer = synchronizer;
            }

            return(TiaStarter.RunInSynchronizer(UsingSynchronizer,
                                                (Func <ICoreObject, string, string, string, string, string, bool, IBLTag>)
                                                    ((p_cpu, p_Name, p_Path, p_DataType, p_address, p_Comment, p_isConstant) =>
            {
                string[] values = new string[] {
                    p_Name, p_Path, p_DataType, p_address, p_Comment, "True", "True"
                };
                Dictionary <string, string> properties = CreateTagProperties(values);


                IBLTag findTag = FindRootTagByName(p_cpu, p_Name, UsingSynchronizer);

                ICoreObject tagTable = GetOrCreateTagTable(p_cpu, p_Path, UsingSynchronizer);

                IBLTag newTag = null;

                if (findTag == null)
                {
                    newTag = CreateRootTagInTagTable(p_cpu, tagTable, properties, isConstant);
                }
                else
                {
                    newTag = UpdateTag(tagTable, findTag, properties, isConstant, UsingSynchronizer);
                }

                return newTag;
            }), cpu, Name, Path, DataType, address, Comment, isConstant) as IBLTag);
        }
Пример #15
0
        static int Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);


            app = new TiaStarter();

            //Application.Run(new Form1());

            app.StartUpPowerManagementThread();
            app.Run(new Form1());


            return(0);
        }
Пример #16
0
        public Form1()
        {
            path = @"S:\216889\216889-1500-1113\216889-1500-1113.ap14";


            TiaStarter.SetForm(this);

            Thread = Thread.CurrentThread;

            InitializeComponent();

            Load        += Form1_Load;
            SizeChanged += Form1_SizeChanged;

            //AfterSychronizer();
        }
Пример #17
0
 public void AddUpdateTagOrConstant2TagTable(
     string[] propertyValues,
     string[] propertyNames,
     int typeIndex,
     bool isConstant
     )
 {
     TiaStarter.RunInSynchronizer(Synchronizer,
                                  () =>
     {
         Reflector.RunInstanceMethodByName(XLSXImporter,
                                           "AddUpdateTagOrConstant2TagTable",
                                           ReflectionWays.SystemReflection,
                                           propertyValues, propertyNames, typeIndex, isConstant, 0);
     });
 }
Пример #18
0
 public ICoreObject this[int index]
 {
     get
     {
         return(TiaStarter.RunInSynchronizer(UsingSynchronizer,
                                             () =>
         {
             if (index <= ICOC.Count - 1)
             {
                 return ICOC[index] as ICoreObject;
             }
             else
             {
                 return null;
             }
         }) as ICoreObject);
     }
 }
Пример #19
0
        static int Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            var currentDomain = AppDomain.CurrentDomain;

            currentDomain.AssemblyLoad += CurrentDomain_AssemblyLoad;



            app = new TiaStarter();

            app.StartUpPowerManagementThread();
            app.Run(new ShowModuleStateForm());


            return(0);
        }
Пример #20
0
        /// <summary>
        /// 创建变量
        /// </summary>
        /// <param name="cpu">控制器</param>
        /// <param name="tagTable">变量表</param>
        /// <param name="properties">变量数据</param>
        /// <param name="isConstant">是否静态变量</param>
        public static IBLTag CreateRootTagInTagTable(
            this ICoreObject cpu,
            ICoreObject tagTable,
            Dictionary <string, string> properties,
            bool isConstant = false,
            ISynchronizeInvoke synchronizer = null
            )
        {
            ISynchronizeInvoke UsingSynchronizer;

            if (synchronizer == null)
            {
                UsingSynchronizer = cpu.GetSynchronizer();
            }
            else
            {
                UsingSynchronizer = synchronizer;
            }

            return(TiaStarter.RunInSynchronizer(UsingSynchronizer,
                                                () =>
            {
                IObjectTypeInfo iot = null;
                if (isConstant)
                {
                    iot = tagTable.GetConstantType();
                }
                else
                {
                    iot = tagTable.GetTagType();
                }

                ITagService tagService = cpu.GetTagService();

                using (new ObjectFrameBulkOperationMode(tagTable))
                {
                    return tagService.CreateRootTag(
                        cpu,
                        iot,
                        Enumerable.ToDictionary(properties,
                                                kvp => kvp.Key, (Func <KeyValuePair <string, string>, object>)(kvp => kvp.Value))) as IBLTag;
                }
            }) as IBLTag);
        }
Пример #21
0
        public ShowModuleStateForm()
        {
            address = "Sps7;Rack=0;Slot=2;RSA=TCP_192.168.8.111_SM_255.255.255.0_SubnetId_4C-AA-00-00-00-01;ResourceId=1;";
            //address = "Sps7;Rack=0;Slot=2;RSA=TCP_192.168.1.111_SM_255.255.255.0_SubnetId_8F-21-00-00-00-02;ResourceId=1;";
            address = "OMS;TSelector=SIMATIC-ROOT-ES;RSA=TCP_192.168.1.34_SM_255.255.255.0_SubnetId_11-5F-00-00-00-01;ResourceId=6;";

            path = @"E:\gitt\VPLC\1500VPLCTIA\1500VPLCTIA.ap14";

            boardName = "PLCSIM";

            TiaStarter.SetForm(this);

            InitializeComponent();

            Load        += Form1_Load;
            SizeChanged += Form1_SizeChanged;

            //AfterSychronizer();
        }
Пример #22
0
 public bool ImportFile(ITagService TagService, string file, ICoreObject parentObject)
 {
     return((bool)TiaStarter.RunInSynchronizer(UsingSynchronizer,
                                               (Func <bool>)(() =>
     {
         TagService.SuspendCollectionEvents();
         using (OnDispose.Invoke(() => TagService.ResumeCollectionEvents()))
         {
             using (new ObjectFrameBulkOperationMode(parentObject))
             {
                 return (bool)Reflector.RunInstanceMethodByName(
                     TagsTableViewLogic,
                     "ImportFile",
                     ReflectionWays.SystemReflection,
                     file,
                     parentObject);
             }
         }
     })));
 }
        public static BlockEditorLogicBase GetGraphBlockEditorLogic(this ICoreObject block,
                                                                    IWorkingContext ViewWorkingContext        = null,
                                                                    LanguageServiceContainer serviceContainer = null,
                                                                    ISynchronizeInvoke synchronizer           = null)
        {
            ISynchronizeInvoke UsingSynchronizer;

            if (synchronizer == null)
            {
                UsingSynchronizer = block.GetSynchronizer();
            }
            else
            {
                UsingSynchronizer = synchronizer;
            }
            return(TiaStarter.RunInSynchronizer(UsingSynchronizer,
                                                () =>
            {
                GraphBlockEditorLogic pl = new GraphBlockEditorLogic();
                if (ViewWorkingContext == null)
                {
                    IWorkingContext iwc = block.GetWorkingContext();
                    pl.Attach(iwc);
                }
                else
                {
                    pl.Attach(ViewWorkingContext);
                }

                pl.PostAttach();
                try
                {
                    pl.SetPayload(block);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex);
                }
                return pl;
            }) as BlockEditorLogicBase);
        }
Пример #24
0
        public static ICoreObject CreateTagTable(this ICoreObject folder,
                                                 string Name,
                                                 ISynchronizeInvoke synchronizer = null)
        {
            ISynchronizeInvoke UsingSynchronizer;

            if (synchronizer == null)
            {
                UsingSynchronizer = folder.GetSynchronizer();
            }
            else
            {
                UsingSynchronizer = synchronizer;
            }
            return(TiaStarter.RunFuncInSynchronizer(UsingSynchronizer, (Func <ICoreObject>)
                                                        (() => {
                ITagService tagService = folder.GetTagService();
                TagServiceProxy tsp = new TagServiceProxy(tagService);
                return tsp.CreateTagTable(folder, folder.GetTagTableType(), false, Name);
            })) as ICoreObject);
        }
Пример #25
0
        /// <summary>
        /// 取得变量表文件夹
        /// </summary>
        /// <param name="cpu">控制器</param>
        public static ICoreObject GetTagsFolder(this ICoreObject cpu,
                                                ISynchronizeInvoke synchronizer = null)
        {
            ISynchronizeInvoke UsingSynchronizer;

            if (synchronizer == null)
            {
                UsingSynchronizer = cpu.GetSynchronizer();
            }
            else
            {
                UsingSynchronizer = synchronizer;
            }
            return(TiaStarter.RunInSynchronizer(UsingSynchronizer,
                                                (c) =>
            {
                IFolderService folderService = cpu.GetFolderService();
                IObjectTypeInfo tagTableType = GetTagTableType(cpu);
                return folderService.GetAppropriateFolder(cpu, tagTableType, false);
            }, cpu) as ICoreObject);
        }
Пример #26
0
        public Form1()
        {
            address = "Sps7;Rack=0;Slot=2;RSA=TCP_192.168.8.111_SM_255.255.255.0_SubnetId_4C-AA-00-00-00-01;ResourceId=1;";
            //address = "Sps7;Rack=0;Slot=2;RSA=TCP_192.168.1.111_SM_255.255.255.0_SubnetId_8F-21-00-00-00-02;ResourceId=1;";
            address = "OMS;TSelector=SIMATIC-ROOT-ES;RSA=TCP_192.168.1.34_SM_255.255.255.0_SubnetId_11-5F-00-00-00-01;ResourceId=6;";

            path = @"S:\216321\216321江森HTA\216321-315\216321-315.ap14";
            path = @"S:\216889\216889-1500-1113\216889-1500-1113.ap14";

            boardName = "PLCSIM";

            TiaStarter.SetForm(this);



            InitializeComponent();

            Load        += Form1_Load;
            SizeChanged += Form1_SizeChanged;

            //AfterSychronizer();
        }
Пример #27
0
        /// <summary>
        /// 按名称查找变量
        /// </summary>
        /// <param name="cpu">控制器</param>
        /// <param name="tagName">变量名称</param>
        public static IBLTag FindRootTagByName(
            this ICoreObject cpu,
            string tagName,
            ISynchronizeInvoke synchronizer = null)
        {
            ISynchronizeInvoke UsingSynchronizer;

            if (synchronizer == null)
            {
                UsingSynchronizer = cpu.GetSynchronizer();
            }
            else
            {
                UsingSynchronizer = synchronizer;
            }
            return(TiaStarter.RunInSynchronizer(UsingSynchronizer,
                                                (p_cpu, p_tagName) =>
            {
                ITagService tagService = cpu.GetTagService();
                return tagService.FindRootTagByName(p_tagName, p_cpu, "InverseTarget", true);
            }, cpu, tagName) as IBLTag);
        }
Пример #28
0
        /// <summary>
        /// 取得指定文件夹下所有变量表
        /// </summary>
        public static IDictionary <string, ICoreObject> GetTagTables(this ICoreObject tagsFolder,
                                                                     ISynchronizeInvoke synchronizer = null)
        {
            ISynchronizeInvoke UsingSynchronizer;

            if (synchronizer == null)
            {
                UsingSynchronizer = tagsFolder.GetSynchronizer();
            }
            else
            {
                UsingSynchronizer = synchronizer;
            }
            return(TiaStarter.RunInSynchronizer(UsingSynchronizer,
                                                (folder) =>
            {
                return Reflector.RunStaticMethodByName(
                    XLSXImporterType,
                    "GetTagTables",
                    ReflectionWays.SystemReflection,
                    tagsFolder) as IDictionary <string, ICoreObject>;
            }, tagsFolder) as IDictionary <string, ICoreObject>);
        }
Пример #29
0
        public static ICoreObject GetTagTableByName(this ICoreObject tagsFolder,
                                                    string Name,
                                                    ISynchronizeInvoke synchronizer = null)
        {
            ISynchronizeInvoke UsingSynchronizer;

            if (synchronizer == null)
            {
                UsingSynchronizer = tagsFolder.GetSynchronizer();
            }
            else
            {
                UsingSynchronizer = synchronizer;
            }
            return(TiaStarter.RunInSynchronizer(UsingSynchronizer,
                                                (p_tagsFolder, p_Name) =>
            {
                IDictionary <string, ICoreObject> tables = GetTagTables(tagsFolder, UsingSynchronizer);
                ICoreObject table;
                tables.TryGetValue(p_Name, out table);
                return table;
            }, tagsFolder, Name) as ICoreObject);
        }
Пример #30
0
        /// <summary>
        /// 取得控制器所有变量
        /// </summary>
        public static RootTagCollectionProxy FindRootTags(this ICoreObject cpu,
                                                          ISynchronizeInvoke synchronizer = null)
        {
            ISynchronizeInvoke UsingSynchronizer;

            if (synchronizer == null)
            {
                UsingSynchronizer = cpu.GetSynchronizer();
            }
            else
            {
                UsingSynchronizer = synchronizer;
            }
            return(TiaStarter.RunInSynchronizer(UsingSynchronizer,
                                                (p_cpu) =>
            {
                ITagService tagService = cpu.GetTagService();
                IList list = tagService.FindRootTags(p_cpu, cpu.GetTagType(), "InverseTarget", true);

                RootTagCollectionProxy rtcp = new RootTagCollectionProxy(list, UsingSynchronizer);
                return rtcp;
            }, cpu) as RootTagCollectionProxy);
        }