PNDriver用户编程接口说明之二

5 以太网接口的功能和数据类型

本文源自西门子的技术文档《IO-Base User Programming Interface for PN Driver》的第5章,描述了PROFINET主站中与以太网接口相关的接口与方法,将作为PNDriver用户编程接口说明的第二篇笔记。

5.1 接口函数

5.1.1 PNIO_interface_open

描述:调用该函数打开以太网接口,在初始化过程中进行调用,通过注册报警、读写数据纪录、修改IP地址、修改设备名相关的事件及其回调函数,可以获取与以太网接口相关的事件。

函数形式:

PNIO_UINT32 PNIO_CODE_ATTR PNIO_interface_open(
    PNIO_UINT32 CpIndex,
    PNIO_CBF cbf_RecReadConf, //in
    PNIO_CBF cbf_RecWriteConf, //in
    PNIO_CBF cbf_AlarmInd, //in
    PNIO_UINT32 * Handle //in
);
参数名 参数描述
CpIndex 模块索引
cbf_RecReadConf 读记录数据回调函数,可以为空
cbf_RecWriteConf 写记录数据回调函数,可以为空
cbf_AlarmInd 报警通知回调函数,可以为空
Handle 控制器句柄

返回值:

  • PNIO_OK
  • PNIO_ERR_CREATE_INSTANCE
  • PNIO_ERR_INTERNAL
  • PNIO_ERR_NO_RESOURCE
  • PNIO_ERR_PRM_CP_ID
  • PNIO_ERR_PRM_HND
  • PNIO_ERR_SEQUENCE
  • PNIO_ERR_WRONG_HND

5.1.2 PNIO_interface_register_cbf

描述:该函数可以手动注册以太网接口相关的事件及其回调函数

PNIO_UINT32 PNIO_CODE_ATTR PNIO_interface_register_cbf(
    PNIO_UINT32  Handle //in
    PNIO_CBE_TYPE CbeType, //in
    PNIO_CBF Cbf //in
);
参数名 参数描述
Handle 控制器句柄
CbeType 回调事件类型
Cbf 回调函数注意:该参数不可为空

返回值:

  • PNIO_OK
  • PNIO_ERR_ALLREADY_DONE
  • PNIO_ERR_PRM_CALLBACK
  • PNIO_ERR_PRM_TYPE
  • PNIO_ERR_SEQUENCE
  • PNIO_ERR_WRONG_HND

5.1.3 PNIO_interface_close

描述:该函数关闭以太网接口,调用该函数后就不能收到诸如和以太网接口相关的报警、读写数据纪录、修改IP地址、修改设备名相关的事件

函数形式:

PNIO_UINT32 PNIO_CODE_ATTR PNIO_interface_close(
    PNIO_UINT32  Handle //in
);
参数名 参数描述
Handle 控制器句柄

返回值:

  • PNIO_OK
  • PNIO_ERR_NO_RESOURCE
  • PNIO_ERR_WRONG_HND

5.1.4 PNIO_interface_set_ip_and_nos

描述:调用该函数用于修改IP地址和设备名

注意:需要保证IP地址没有提前分配,而且从站设备名能够被修改

函数形式:

PNIO_UINT32 PNIO_CODE_ATTR PNIO_interface_set_ip_and_nos(
    PNIO_UINT32 Handle, //in
    PNIO_SET_IP_NOS_MODE_TYPE Mode, //in
    PNIO_IPv4 IPv4, //in
    PNIO_NOS NoS //in
);
参数名 参数描述
CpIndex 模块索引
Mode 修改IP地址还是设置设备名
IPv4 IP地址
NoS 设备名NoS

返回值:

  • PNIO_OK
  • PNIO_ERR_INTERNAL
  • PNIO_ERR_MODE_VALUE
  • PNIO_ERR_NOT_REENTERABLE
  • PNIO_ERR_PRM_HND
  • PNIO_ERR_PRM_IP PNIO_ERR_PRM_NOS
  • PNIO_ERR_PRM_NOS_LEN
  • PNIO_ERR_SEQUENCE
  • PNIO_ERR_SET_IP_NOS_NOT_ALLOWED
  • PNIO_ERR_WRONG_HND

5.2 数据记录函数及其数据结构

5.2.1 PNIO_interface_rec_read_req

描述:该函数用于请求读取网络设备的记录数据

函数形式:

PNIO_UINT32 PNIO_CODE_ATTR PNIO_interface_rec_read_req(
    PNIO_UINT32 Handle, //in
    const PNIO_ADDR * pAddr, //in
    PNIO_UINT32 RecordIndex, //in
    PNIO_REF ReqRef, //in
    PNIO_UINT32 Length //in
);
参数名 参数描述
CpIndex 模块索引
pAddr 模块地址
RecodeIndex 纪录数据索引
ReqRef
Length 读出记录数据的长度

返回值:

  • PNIO_OK
  • PNIO_ERR_INTERNAL
  • PNIO_ERR_NO_RESOURCE
  • PNIO_ERR_PRM_ADD
  • PNIO_ERR_PRM_REC_INDEX
  • PNIO_ERR_SEQUENCE
  • PNIO_ERR_VALUE_LEN
  • PNIO_ERR_WRONG_HND

5.2.2 PNIO_CBE_IFC_REC_READ_CONF

记录数据读取事件

结构体:

typedef struct {
    PNIO_ADDR * pAddr;
    PNIO_UINT32 RecordIndex;
    PNIO_REF ReqRef;
    PNIO_UINT32 Response;
    PNIO_ERR_STAT Err;
    PNIO_UINT32 Length;
    const PNIO_UINT8 * pBuffer;
} ATTR_PACKED PNIO_CBE_PRM_REC_READ_CONF;

说明:

成员变量 描述
pAddr 模块地址
RecodeIndex 纪录数据索引
ReqRef 写入事件
Response 写请求的回复
Err 错误码
Length 需要d读出的记录数据长度
pBuffer 读出的记录数据的缓冲区

5.2.3 PNIO_interface_rec_write_req

描述:该函数用于请求写入网络设备的记录数据

函数形式:

PNIO_UINT32 PNIO_CODE_ATTR PNIO_interface_rec_write_req(
    PNIO_UINT32 Handle, //in
    const PNIO_ADDR * pAddr, //in
    PNIO_UINT32 RecordIndex, //in
    PNIO_REF ReqRef,
    PNIO_UINT32 Length, //in
    const PNIO_UINT8 * pBuffer
);
参数名 参数描述
CpIndex 模块索引
pAddr 模块地址
RecodeIndex 纪录数据索引
ReqRef 写入事件
Length 需要写入的记录数据长度
pBuffer 写入的记录数据的缓冲区

返回值:

  • PNIO_OK
  • PNIO_ERR_NO_RESOURCE
  • PNIO_ERR_PRM_ADD
  • PNIO_ERR_PRM_BUF
  • PNIO_ERR_PRM_REC_INDEX
  • PNIO_ERR_SEQUENCE
  • PNIO_ERR_VALUE_LEN
  • PNIO_ERR_WRONG_HND

5.2.4 PNIO_CBE_IFC_REC_WRITE_CONF

记录数据写入事件

结构体:

typedef struct {
    PNIO_ADDR * pAddr;
    PNIO_UINT32 RecordIndex;
    PNIO_REF ReqRef;
    PNIO_UINT32 Response;
    PNIO_ERR_STAT Err;
} ATTR_PACKED PNIO_CBE_PRM_REC_WRITE_CONF;

说明:

成员变量 描述
pAddr 模块地址
RecodeIndex 纪录数据索引
ReqRef 写入事件
Response 写请求的回复
Err 错误码

5.3 报警接口

5.3.1 PNIO_CBE_IFC_ALARM_IND

当主站以太网接口出现异常时将会产生以太网接口报警事件。

结构体:

typedef struct {
    PNIO_ADDR * pAddr;
    PNIO_REF IndRef;
    const PNIO_CTRL_ALARM_DATA * pAlarmData;
} ATTR_PACKED PNIO_CBE_PRM_ALARM_IND;

说明:

成员变量 描述
pAddr 发出报警事件的模块地址
ReqRef 报警事件
pAlarmData 报警相关数据信息

5.4 应用程序就绪指示接口函数

5.4.1 PNIO_CBE_IFC_APPL_READY

PNIO_CBE_IFC_APPL_READY作为以太网接口就绪事件,用于在以太网接口完成参数化后进行通知,如果要处理该事件,可以在SERV_CP_startup函数中注册以太网接口就绪事件回调函数。

注意:在应用程序中不是一定需要注册应用就绪事件,如果没有注册该事件,那么该事件由协议栈默认处理,处理方式就是立刻返回,只有注册了回调函数时,该时间才会由回调函数进行额外处理,这里有的像嵌入式操作系统中的中断处理,分为isr和实际处理两个部分,前者快速返回,后者实际处理中断

结构体:

typedef struct {
    const PNIO_CTRL_APPL_READY_DATA * pApplReadyData;
} ATTR_PACKED PNIO_CBE_PRM_APPL_READY_IND;

说明:

成员变量 描述
pApplReadyData 以太网接口就绪事件相关数据信息

posted on 2025-05-26 11:09  MichaelChen-99  阅读(116)  评论(0)    收藏  举报

导航