Пример #1
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);
        }
Пример #2
0
        /// <summary>
        /// 取得默认变量表
        /// </summary>
        public static ICoreObject GetDefaultTagTable(this ICoreObject cpu,
                                                     ISynchronizeInvoke synchronizer = null)
        {
            ISynchronizeInvoke UsingSynchronizer;

            if (synchronizer == null)
            {
                UsingSynchronizer = cpu.GetSynchronizer();
            }
            else
            {
                UsingSynchronizer = synchronizer;
            }
            ICoreObject tagFolder = cpu.GetTagsFolder();
            IDictionary <string, ICoreObject> tagTables = tagFolder.GetTagTables();
            ICoreObject defaultTagTable = null;

            tagTables.TryGetValue("默认变量表", out defaultTagTable);
            return(defaultTagTable);
        }