PROFINET Device4.2.0
 
Loading...
Searching...
No Matches

◆ PN_API_IOD_plugSubmod()

uint32_t PN_API_IOD_plugSubmod ( PN_API_IOD_Handle_t *const  pnHandle,
uint32_t  api,
PN_API_IOD_DevAddr_t addr,
uint32_t  modId,
uint32_t  submodId,
uint32_t  inDataLen,
uint32_t  outDataLen,
uint8_t  im0Support,
PN_API_IOD_Im0Data_t im0Data,
uint8_t  iopsInitVal 
)

Inserts a submodule into a subslot.

During operation, this function can be invoked to add a new submodule or re-install a previously failed or removed submodule.

Warning
PN_API_IOD_startup() must be called first during startup to insert the DAP and PDev data at least. Only then may additional modules be plugged in.
Parameters
[in]pnHandleProfinet API Handle.
[in]apiApplication Process Identifier.
[in]addrGeographical address (slot/subslot) of the module/submodule.
[in]modIdModule identifier.
[in]submodIdSubmodule identifier.
[in]inDataLenLength of input data.
[in]outDataLenLength of output data.
[in]im0SupportType of IM0 support (see PN_API_IOD_Im0Support_t).
[in]im0DataIf the module supports IM0, there is a pointer to the IM0 data here.
[in]iopsInitValInitial value for IOPS-input, used for submodules without IO data (e.g. PDev) which act like input modules with data length of 0.
Returns
result of the operation as uint32_t.
Return values
PN_API_OKSuccess.
PN_API_NOT_OKSomething went wrong.
PN_API_ERR_PARAMInvalid parameter.
Example
#include "pn_api_iod_device.h"
#include "pn_api_iod_startup.h"
PN_API_IOD_Handle_t* pnHandle = NULL;
uint32_t status;
pnHandle = PN_API_IOD_new();
//Prepare and call PN_API_IOD_startup()
...
uint32_t api = 0, modId = 0x03010300, submodId = 0x31030004;
uint32_t inDataLen = 4, outDataLen = 0;
uint8_t im0Support = PN_API_IOD_Im0Submodule;
uint8_t iopsInitVal = 0;
PN_API_IOD_Im0Data_t im0Data; //Fill up this array with the
//own data
addr.address.geo.slot = 1;
addr.address.geo.subslot = 2;
status = PN_API_IOD_plugSubmod(pnHandle, api, &addr, modId
submodId, inDataLen, outDataLen, im0Support, im0Data, iopsInitVal);
uint32_t PN_API_IOD_plugSubmod(PN_API_IOD_Handle_t *const pnHandle, uint32_t api, PN_API_IOD_DevAddr_t *addr, uint32_t modId, uint32_t submodId, uint32_t inDataLen, uint32_t outDataLen, uint8_t im0Support, PN_API_IOD_Im0Data_t *im0Data, uint8_t iopsInitVal)
Inserts a submodule into a subslot.
PN_API_IOD_Handle_t * PN_API_IOD_new(void)
Creates Profinet API handle.
@ PN_API_IOD_Im0Submodule
Definition pn_api_iod_types.h:72
@ PN_API_IOD_AddrGeo
Definition pn_api_iod_types.h:155
struct PN_API_IOD_Handle PN_API_IOD_Handle_t
API handle instance which holds IO device's info.
Definition pn_api_iod_types.h:61
union PN_API_IOD_DevAddr_t::@0 address
PN_API_IOD_AddrType_t type
Definition pn_api_iod_types.h:446
struct PN_API_IOD_DevAddr_t::@0::@1 geo
uint32_t subslot
Definition pn_api_iod_types.h:453
uint32_t slot
Definition pn_api_iod_types.h:452
Module/Submodule address (logical/geographical).
Definition pn_api_iod_types.h:445
IM0 Data structure.
Definition pn_api_iod_types.h:579