Exemple #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);
        }
        public static IVarTable ToIVarTable(this ICoreObject ico)
        {
            IBusinessLogicConnector iblc = ico as IBusinessLogicConnector;
            IBusinessLogicObject    iblo = iblc.GetBusinessLogic("PlcLanguages.VatService");
            IVarTable ivt = iblo as IVarTable;

            return(ivt);
        }