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

◆ PN_API_IOD_addDiagGeneric()

uint32_t PN_API_IOD_addDiagGeneric ( PN_API_IOD_Handle_t *const  pnHandle,
const uint32_t  api,
PN_API_IOD_DevAddr_t *const  addr,
const uint16_t  chanNum,
const PN_API_IOD_DiagChannelPropDirection_t  chanDir,
const PN_API_IOD_DiagChannelPropType_t  chanTyp,
const uint16_t  diagTag,
const uint16_t  userStructIdent,
uint8_t *const  pInfoData,
const uint32_t  infoDataLen,
const bool  maintenanceReq,
const bool  maintenanceDem 
)

Add generic channel diagnostic alarm to PN stack.

Installs a manufacturer-specific diagnostic record within a subslot. The diagnostic data can be retrieved using a distinct record call (as described in IEC61158-5-10), such as through a diagnostic tool. Multiple diagnostic records associated with a user-specified tag can be transferred to asubslot. The diagnostic record can be deleted using the PN_API_IOD_removeDiagGeneric() function via this reference. If the device assumes ownership of this subslot within an AR, a 'manufacturer specific incoming alarm' is automatically dispatched to the IO controller.

Parameters
[in]pnHandleProfinet API Handle.
[in]apiApplication Process Identifier.
[in]addrGeographical address (slot/subslot) of the module/submodule.
[in]chanNumChannel number.
[in]chanDirChannel direction (see PN_API_IOD_DiagChannelPropDirection_t).
[in]chanTypChannel type (see PN_API_IOD_DiagChannelPropType_t).
[in]diagTagUser defined diag tag != 0.
[in]userStructIdentManufacturer specific, 0...0x7fff, see IEC 61158.
[in]pInfoDataUser defined generic diagnostic data.
[in]infoDataLenLength of generic diagnostic data.
[in]maintenanceReqMaintenance required.
[in]maintenanceDemMaintenance demanded.
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_diagnostic.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;
uint16_t diagTag = 1;
uint16_t userStructIdent = ..; // look at IEC61158-5-10/
uint16_t infoDataLen = ..; // look at IEC61158-5-10/
uint16_t pInfoData = ..; // look at IEC61158-5-10/
uint16_t chanNum = 1;
bool maintenanceReq = 1;
bool maintenanceDem = 0;
addr.address.geo.slot = 1;
addr.address.geo.subslot = 2;
status = PN_API_IOD_addDiagGeneric(pnHandle, api, &addr, chanNum,
chanDir, chanTyp, diagTag, userStructIdent, pInfoData,
infoDataLen, maintenanceReq, maintenanceDem);
uint32_t PN_API_IOD_addDiagGeneric(PN_API_IOD_Handle_t *const pnHandle, const uint32_t api, PN_API_IOD_DevAddr_t *const addr, const uint16_t chanNum, const PN_API_IOD_DiagChannelPropDirection_t chanDir, const PN_API_IOD_DiagChannelPropType_t chanTyp, const uint16_t diagTag, const uint16_t userStructIdent, uint8_t *const pInfoData, const uint32_t infoDataLen, const bool maintenanceReq, const bool maintenanceDem)
Add generic channel diagnostic alarm to PN stack.
PN_API_IOD_Handle_t * PN_API_IOD_new(void)
Creates Profinet API handle.
PN_API_IOD_DiagChannelPropType_t
Defines for channel properties.type.
Definition pn_api_iod_types.h:372
@ PN_API_IOD_DiagChannelPropTypeByte
Definition pn_api_iod_types.h:377
PN_API_IOD_DiagChannelPropDirection_t
Defines for channel properties.direction.
Definition pn_api_iod_types.h:359
@ PN_API_IOD_DiagChannelPropDirectionIn
Definition pn_api_iod_types.h:361
@ 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