public static string GetObjectName(this ICoreObject element)
        {
            ICoreAttributes coreAttributes = element.GetAttributeSet(typeof(ICoreAttributes)) as ICoreAttributes;

            if (coreAttributes == null)
            {
                return("");
            }
            return(coreAttributes.Name);
        }
Пример #2
0
        public static int GetProfinetDeviceId(this ICoreObject lifelistNode)
        {
            ILifelistNodeInfo lifelistNodeInfo = lifelistNode.GetAttributeSet(typeof(ILifelistNodeInfo)) as ILifelistNodeInfo;

            if (lifelistNodeInfo != null)
            {
                return(lifelistNodeInfo.PnoIdentifier & ushort.MaxValue);
            }
            return(0);
        }
Пример #3
0
        public static int GetProfinetVendorId(this ICoreObject lifelistNode)
        {
            ILifelistNodeInfo lifelistNodeInfo = lifelistNode.GetAttributeSet(typeof(ILifelistNodeInfo)) as ILifelistNodeInfo;

            if (lifelistNodeInfo != null)
            {
                return(lifelistNodeInfo.PnoIdentifier >> 16);
            }
            return(0);
        }
Пример #4
0
        public static int GetPnoIdent(ICoreObject lifelistNode)
        {
            ILifelistNodeInfo lifelistNodeInfo = lifelistNode.GetAttributeSet(typeof(ILifelistNodeInfo)) as ILifelistNodeInfo;

            if (lifelistNodeInfo != null)
            {
                return(lifelistNodeInfo.PnoIdentifier);
            }
            return(0);
        }
Пример #5
0
        public static bool ReadPlusMcDbValuesRemote(this ClientSession session,
                                                    ICoreObject onlineTarget, ICoreObject blockDb, out OnlineBinary binaryToRead, uint dbValuesAid)
        {
            if (onlineTarget == null || blockDb == null)
            {
                throw new BlockLogicException("onlineTarget, blockDb is null");
            }
            if (!IecplUtilities.IsPlusPLC(blockDb) || !onlineTarget.GetObjectType().IsTypeOf(OnlineControllerTargetData.FullName))
            {
                throw new BlockLogicException("Target is no Plus- or Online target");
            }
            IGeneralBlockSourceData generalBlockSourceData = blockDb.GetAttributeSet(typeof(IGeneralBlockSourceData), false) as IGeneralBlockSourceData;

            if (generalBlockSourceData == null || generalBlockSourceData.BlockType != BlockType.DB)
            {
                throw new BlockLogicException("block is no data block!");
            }
            if ((int)dbValuesAid != 2550 && (int)dbValuesAid != 2548)
            {
                throw new System.NotSupportedException("Only ValueActual_Aid and ValueInitial_Aid are supported");
            }
            uint  blockRid = RidService.GetRidService(onlineTarget, true).GetBlockRid(blockDb);
            Error error    = new Error();
            ulong ticks    = 0UL;
            Dictionary <uint, byte[]> dictionary = new Dictionary <uint, byte[]>()
            {
                {
                    3U,
                    new byte[0]
                },
                {
                    4U,
                    new byte[0]
                },
                {
                    5U,
                    new byte[0]
                }
            };

            binaryToRead = new OnlineBinary(dictionary[4U], dictionary[5U], dictionary[3U], new System.DateTime());
            try
            {
                int   requestID      = -1;
                Value obj1           = new Value();
                Value obj2           = null;
                Error variableRemote = session.GetVariableRemote(new Rid(blockRid), new Aid(dbValuesAid), ref obj1, ref requestID);
                using (obj1)
                {
                    if (variableRemote.Failed)
                    {
                        return(false);
                    }
                    foreach (uint key in Enumerable.ToList(dictionary.Keys))
                    {
                        Error errorState = obj1.GetValue(key, ref obj2);
                        using (obj2)
                        {
                            if (errorState.Failed)
                            {
                                return(false);
                            }
                            byte[] numArray = new byte[0];
                            obj2.GetValue(ref numArray);
                            dictionary[key] = numArray;
                        }
                    }
                    Error errorState1 = obj1.GetValue(6U, ref obj2);
                    using (obj2)
                    {
                        if (errorState1.Failed)
                        {
                            return(false);
                        }
                        obj2.GetValue(ref ticks);
                    }
                    binaryToRead = new OnlineBinary(dictionary[4U], dictionary[5U], dictionary[3U], DateTimeExtensions.ConvertPLCToESTime(ticks));
                }
            }
            finally
            {
            }
            return(true);
        }
Пример #6
0
 public static T GetAttributes <T>(this ICoreObject o) where T : class
 {
     return((o != null ? o.GetAttributeSet(typeof(T)) : null) as T);
 }