Iterators ¶ Iterators for simple iterating through the ObjectDictionary of a slave. ObjectIterator (FunctionBlock) Current (Property) MoveNext (Method) ObjectDictionary (Property) Reset (Method) SubObjectIterator (FunctionBlock) Current (Property) MoveNext (Method) Object (Property) Reset (Method)
ObjectIterator (FB) ¶ FUNCTION_BLOCK ObjectIterator IMPLEMENTS IObjectIterator Helps to iterate through the objects of an ObjectDictionary. For using this iterator property ObjectIterator.ObjectDictionary must be set to the IObjectDictionary interface. This interface can be retrieved from the CANopenDevice instance. After setting the Object Dictionary interface the iterator points in front of the first element of the Object Dictionary (==> property ObjectIterator.Current is 0). The iterator can be moved to the next element by calling the ObjectIterator.MoveNext method. If ObjectIterator.MoveNext returns TRUE the object can be retrieved by calling Property ObjectIterator.Current . The iterator can be set back in front of the first element by calling ObjectIterator.Reset . Example Following example iterates through all objects in an Object Dictionary an increments a counter. METHOD CountObjects VAR_INPUT END_VAR VAR_OUTPUT udiObjectCount : UDINT ; udiSubObjCount : UDINT ; END_VAR VAR ObjIterator : _3SCSS.ObjectIterator ; SubObjIterator : _3SCSS.SubObjectIterator ; itfCurObj : _3SCSS.IODObject ; itfCurSubObj : _3SCSS.IODSubObject ; END_VAR //Link Object Iterator to Object Dictionary ObjIterator.ObjectDictionary := _itfOD ; //Go through all objects WHILE ObjIterator.MoveNext () DO itfCurObj := ObjIterator.Current ; //Note: No NULL check necessary here because MoveNext returned TRUE. udiObjectCount := udiObjectCount + 1 ; //Link SubObjIterator with current Object SubObjIterator.Object := itfCurObj ; //Go through all SubObjects WHILE SubObjIterator.MoveNext () DO itfCurSubObj := SubObjIterator.Current ; udiSubObjCount := udiSubObjCount + 1 ; END_WHILE END_WHILE Properties: Current ObjectDictionary Methods: MoveNext Reset Structure: Current (Property) MoveNext (Method) ObjectDictionary (Property) Reset (Method)
ObjectIterator.Current (PROP) ¶ PROPERTY Current : IODObject Gets the object where the iterator points to.
ObjectIterator.MoveNext (METH) ¶ METHOD MoveNext : BOOL Sets the iterator to the next object. This object can be retrieved afterwards by property |ObjectIterator.Current|. Method returns ``TRUE` if iterator was successfully moved. Method returns FALSE e.g. if end of list. InOut: Scope Name Type Comment Return MoveNext BOOL TRUE : Current points to the next object, FALSE : MoveNext failed, e.g. if end of list.
ObjectIterator.ObjectDictionary (PROP) ¶ PROPERTY ObjectDictionary : IObjectDictionary IObjectDictionary where the iterator is connected to. Iterator will be automatically resetted if ObjectDictionary will be set.
ObjectIterator.Reset (METH) ¶ METHOD Reset Resets the iterator. Afterwards iterator points in front of the first element (==> ObjectIterator.Current is 0).
SubObjectIterator (FB) ¶ FUNCTION_BLOCK SubObjectIterator IMPLEMENTS ISubObjectIterator Helps to iterate through the subobjects of an object. For using this iterator property SubObjectIterator.Object must be set to the corresponding object. The iterator then points in front of the first subobject of this object (==> property SubObjectIterator.Current is 0). By calling SubObjectIterator.MoveNext the iterator can be moved to the next subobject. If SubObjectIterator.MoveNext returns TRUE the current subobject can be retrieved by property SubObjectIterator.Current . The iterator can be set back in front of the first element by calling SubObjectIterator.Reset . Example See ObjectIterator . Properties: Current Object Methods: MoveNext Reset Structure: Current (Property) MoveNext (Method) Object (Property) Reset (Method)
ObjectDictionary ¶ IODCallback (Interface) OnObjectChanged (Method) OnReadObject (Method) OnWriteObject (Method) IODObject (Interface) GetSubObject (Method) Index (Property) SubCount (Property) IODSubObject (Interface) AccessType (Property) DataType (Property) Formula (Property) RefuseSDOAccess (Property) Size (Property) SubIndex (Property) pData (Property) pDefault (Property) IObjectDictionary (Interface) Callback RegisterCallback (Method) UnregisterCallback (Method) Events RaiseObjectChanged (Method) RaiseReadObject (Method) RaiseWriteObject (Method) Read ReadObject (Method) ReadObjectByAddress (Method) Search GetObject (Method) GetObjectToWrite (Method) Write WriteObject (Method) WriteObjectByAddress (Method)
IODCallback (ITF) ¶ INTERFACE IODCallback EXTENDS __SYSTEM.IQueryInterface This interface must be implemented if someone wants to register an ObjectDictionary callback for read and write operations via the IObjectDictionary.RegisterCallback method of IObjectDictionary . All write and read operations on objects can be monitored and aborted by returning an appropriate abort code. Methods: OnObjectChanged OnReadObject OnWriteObject Structure: OnObjectChanged (Method) OnReadObject (Method) OnWriteObject (Method)
IODCallback.OnObjectChanged (METH) ¶ METHOD OnObjectChanged Will be called after a write operation was performed on an object. If all IODCallback instances registered to the Object Dictionary return ABORT_CODE.SUCCESSFUL write operation will be executed. Vice versa: If any instance returns an error write operation will be aborted and the reader will be informed. InOut: Scope Name Type Comment Input itfObject IODObject Corresponding object itfSubObject IODSubObject Corresponding subobject