FB_MDP_ReadElement
The function block enables an individual MDP element to be queried. Every element out of every module of the Configuration Area can be read!
The device is scanned internally for the selected module and the element information are queried with the dynamic Module ID.
VAR_INPUT
VAR_INPUT
bExecute : BOOL;
stMDP_Addr : ST_MDP_Addr; (* includes all address parameters without the Dynamic Module Id *)
eModuleType : E_MDP_ModuleType; (* chosen module type out of the module type list *)
iModIdx : USINT; (* chosen index(0..n) of the demanded module type. E.g. second NIC(idx 1) of three found NICs. *)
pDstBuf : POINTER TO BYTE; (* Contains the address of the buffer for the received data. *)
cbDstBufLen : UDINT; (* Contains the max. number of bytes to be received. *)
tTimeout : TIME := DEFAULT_ADS_TIMEOUT; (* States the time before the function is cancelled. *)
sAmsNetId : T_AmsNetId; (* keep empty '' for the local device *)
END_VAR
bExecute | The function block is called by a rising edge on the input bExecute, if the block is not already active. |
stMDP_Addr | The MDP addressing belonging to the selected module is specified at this input. The structure is of the type ST_MDP_Addr. |
eModuleType | The MDP module type is specified at this input. The possible types are listed in the enumeration E_MDP_ModuleType. (General information on the module type list |
iModIdx | If several instances of an MDP module exist, a selection can be made by means of the input iModIdx (0,...,n). |
pDstBuf | The memory address of the data buffer is specified at this input. The received data are stored there if the query is successful. |
cbDstBufLen | The length of the data buffer in bytes is specified at this input. |
tTimeout | Specifies a maximum length of time for the execution of the function block. |
sAmsNetId | For local access don't specify this input or allocate an empty string. For remote access to another computer specify its AMS Net Id. |
VAR_OUTPUT
VAR_OUTPUT
bBusy : BOOL;
bError : BOOL; (* indicates if Read was successfull or not *)
nErrID : UDINT;
nCount : UDINT;
stMDP_DynAddr : ST_MDP_Addr; (* includes the new dynamic module type id. *)
iModuleTypeCount: USINT; (* returns the number of found modules equal the demanded module type. *)
iModuleCount : USINT; (* returns the number of all detected MDP modules. *)
END_VAR
bBusy | This output is TRUE as long as the function block is active. |
bError | Becomes TRUE as soon as an error situation occurs. |
nErrID | Returns an error code if the bError output is set. |
nCount | This output indicates the number of bytes read. |
stMDP_DynAddr | The MDP addressing belonging to the selected MDP module is specified at this output. The structure is of the type ST_MDP_Addr. The dynamic Module ID was added by the function block. |
iModuleTypeCount | The output iModuleTypeCount indicates the number of modules that correspond to the specified type. |
iModuleCount | The output iModuleCount indicates the entire number of modules on the device. |
Requirements
Development environment | Target platform | PLC libraries to be linked |
---|---|---|
TwinCAT v2.11.0 Build >= 1541 | PC or CX (x86, ARM) | TcMDP.Lib [version 1.2.0 or higher] |