本文源自西门子的技术文档《IO-Base User Programming Interface for PN Driver》第4章的后半部分,主要描述了结构体类型,将作为PNDriver用户编程接口说明的第四篇笔记。
4.10 数据类型
在用户代码中#include<pniobase.h>后,就可以在应用程序程序中定义以下结构体类型的变量。
4.10.1 基本数据类型
4.10.2 PNIO_MODE_TYPE
| 控制器运行模式枚举 |
描述 |
| PNIO_MODE_OFFLINE |
停止 |
| PNIO_MODE_CLEAR |
初始化 |
| PNIO_MODE_OPERATE |
运行 |
4.10.3 PNIO_IO_TYPE
| 过程数据方向枚举 |
描述 |
| PNIO_IO_IN |
input |
| PNIO_IO_OUT |
output |
| PNIO_IO_IN_OUT |
in and out |
| PNIO_IO_UNKNOWN |
? |
4.10.4 PNIO_ADDR_TYPE
| PNIO地址类型枚举 |
描述 |
| PNIO_ADDR_LOG |
以一个整型表示的逻辑地址 |
| PNIO_ADDR_GEO |
以槽、子槽、索引表示地址 |
4.10.5 PNIO_ADDR
typedef struct {
PNIO_ADDR_TYPE AddrType;
PNIO_IO_TYPE IODataType;
union {
PNIO_UINT32 Addr;
PNIO_UINT32 Reserved [5];
} u;
} ATTR_PACKED PNIO_ADDR;
| PNIO地址结构体成员 |
描述 |
| AddrType |
IO数据地址类型 |
| IODataType |
过程数据类型 |
| Addr |
逻辑地址或者物理地址 |
| Reserved |
保留 |
4.10.6 PNIO_CBF
事件回调函数指针变量:
typedef void (*PNIO_CBF) (PNIO_CBE_PRM * pCbfPrm);
4.10.7 PNIO_ALARM_TYPE
| 报警事件类型枚举 |
描述 |
| PNIO_ALARM_DIAGNOSTIC |
通道报警出现或消失 |
| PNIO_ALARM_PROCESS |
过程变量报警,如温度过高 |
| PNIO_ALARM_PULL |
模块/子模块拔出 |
| PNIO_ALARM_PLUG |
模块/子模块插入 |
| PNIO_ALARM_STATUS |
模块状态变化 |
| PNIO_ALARM_UPDATE |
模块 |
| PNIO_ALARM_REDUNDANCY |
冗余AR切换 |
| PNIO_ALARM_CONTROLLED_BY_SUPERVISOR |
IO监控报警 |
| PNIO_ALARM_RELEASED_BY_SUPERVISOR |
取消IO监控报警 |
| PNIO_ALARM_PLUG_WRONG |
插入错误模块 |
| PNIO_ALARM_RETURN_OF_SUBMODULE |
|
| PNIO_ALARM_DIAGNOSTIC_DISAPPEARS |
诊断消失 |
| PNIO_ALARM_MCR_MISMATCH |
多个CR有误 |
| PNIO_ALARM_PORT_DATA_CHANGED |
网络连接事件,如设备连接或掉线 |
| PNIO_ALARM_SYNC_DATA_CHANGED |
同步数据变化 |
| PNIO_ALARM_ISOCHRONE_MODE_PROBLEM |
IRT模式出现问题 |
| PNIO_ALARM_NETWORK_COMPONENT_PROBLEM |
网络组件出现问题 |
| PNIO_ALARM_TIME_DATA_CHANGED |
时间同步变化 |
| PNIO_ALARM_DFP_PROBLEM |
动态组包操作 |
| PNIO_ALARM_MULTIPLE_INTERFACE |
诊断多个接口操作不一致 |
| PNIO_ALARM_UPLOAD_AND_STORAGE |
上传和存储 |
| PNIO_ALARM_PULL_MODULE |
一个模块已经拔出 |
| PNIO_ALARM_DEV_FAILURE |
已经和IO设备取消一个AR |
| PNIO_ALARM_RETURN |
已经和IO设备建立一个AR |
数据记录报文中包含的PNIO块的头部数据结构
| 结构体成员变量 |
描述 |
| BlockType |
块类型 |
| BlockLength |
块长度 |
| BlockVersionHigh |
版本高8位 |
| BlockVersionHigh |
版本高8位 |
4.10.9 PNIO_MAINTENANCE
| 维护数据结构体成员变量 |
描述 |
| BlockHeader |
数据块头 |
| padd |
0 |
| padd1 |
0 |
| MaintenanceStatus |
|
4.10.10 PNIO_ALARM_DATA_DIAGNOSIS
| 报警诊断结构体成员变量 |
描述 |
| ChannelNumber |
通道号 |
| ChannelProperties |
通道属性 |
| ChannelErrorType |
通道错误类型 |
4.10.11 PNIO_ALARM_DATA_MAINTENANCE_DIAGNOSIS
| 报警维护结构体成员变量 |
描述 |
| maintInfo |
维护数据结构 |
| UserStrucIdent |
|
| ChannelNumber |
通道号 |
| ChannelProperties |
通道属性 |
| ChannelErrorType |
通道错误类型 |
4.10.12 PNIO_ALARM_DATA_EXT_DIAGNOSIS
| 结构体成员变量 |
描述 |
| ChannelNumber |
通道号 |
| ChannelProperties |
通道属性 |
| ChannelErrorType |
通道错误类型 |
| ExtChannelErrorType |
扩展类型 |
| ExtChannelAddValue |
扩展变量 |
4.10.13 PNIO_ALARM_DATA_MAINTENANCE_EXT_DIAGNOSIS
| 结构体成员变量 |
描述 |
| maintInfo |
|
| UserStrucIdent |
|
| ChannelNumber |
通道号 |
| ChannelProperties |
通道属性 |
| ChannelErrorType |
通道错误类型 |
| ExtChannelErrorType |
扩展类型 |
| ExtChannelAddValue |
扩展变量 |
4.10.14 PNIO_ALARM_INFO
| 报警信息结构体成员变量 |
描述 |
| BlockType |
块类型 |
| BlockVersion |
版本 |
| API |
API |
| AlarmSpecifier |
|
| ModIdent |
模块标识 |
| SubIdent |
子模块标识 |
| UserStrucIdent |
|
| UserAlarmData |
用户报警数据长度 |
4.10.15 PNIO_ALARM_TINFO
| 报警任务信息结构体成员变量 |
描述 |
| DeviceFlag |
故障状态位,0位表示APDU-Status故障,其他位保留 |
| PnioVendorIdent |
制造商标识 |
| PnioDevIdent |
设备标识 |
| PnioDevInstance |
设备实例标识 |
4.10.16 PNIO_ALARM_MOD_DIFF_BLOCK
| 报警DIFF模块结构体成员变量 |
描述 |
| ModDiffBlockLength |
模块信息长度 |
| pModDiffBlock |
设备包含的模块信息 |
4.10.17 PNIO_CTRL_ALARM_DATA
| 结构体成员变量 |
控制器报警数据描述 |
| AlarmType |
报警类型 |
| AlarmPriority |
版本 |
| DeviceNum |
设备号 |
| SlotNum |
槽号 |
| SubslotNum |
子槽号 |
| LADDR |
逻辑地址 |
| PnioCompatModtype |
插入或拔出模块提示 |
| AlarmTinfo |
报警任务信息 |
| AlarmAinfo |
报警信息 |
| ModDiffBlock |
模块不同信息 |
4.10.18 PNIO_CTRL_APPL_READY_DATA
| 结构体成员变量 |
描述 |
| ModDiffBlock |
当控制器与设备组态完成时,控制器得到提示可以交互IO数据 |
4.10.19 PNIO_CBE_TYPE
基于IO-Base接口的用户程序需要针对以下事件,编程回调函数以响应事件,事件及其响应机制。
| 事件类型枚举 |
描述 |
| PNIO_CBE_MODE_IND |
控制器运行模式切换 |
| PNIO_CBE_ALARM_IND |
有报警 |
| PNIO_CBE_REC_READ_CONF |
返回读记录数据结果 |
| PNIO_CBE_REC_WRITE_CONF |
返回写记录数据结果 |
| PNIO_CBE_DEV_ACT_CONF |
设备激活 |
| PNIO_CBE_CP_STOP_REQ |
停机请求 |
| PNIO_CBE_CTRL_DIAG_CONF |
诊断返回 |
| PNIO_CBE_IFC_SET_ADDR_CONF |
通信接口设置地址结果返回 |
| PNIO_CBE_REMA_READ_CONF |
REMA数据读返回 |
| PNIO_CBE_IOSYSTEM_RECONFIG |
IO系统重新配置 |
| PNIO_CBE_IFC_REC_READ_CONF |
返回读接口记录数据结果 |
| PNIO_CBE_IFC_REC_WRITE_CONF |
返回写接口记录数据结果 |
| PNIO_CBE_IFC_ALARM_IND |
通信接口有报警 |
| PNIO_CBE_IFC_APPL_READY |
通信接口参数化完成 |
4.10.20 PNIO_CBE_PRM
事件结构体类型将若干成员变量组合在一起
4.10.21 ExtPar
4.10.22 PNIO_DEV_ACT_TYPE
0表示设备失效,1表示设备激活
4.10.23 PNIO_IOXS
IO数据状态枚举,分为GOOD和BAD
4.10.24 PNIO_CTRL_DIAG
| 控制器诊断结构体成员变量 |
描述 |
| DiagService |
子模块地址 |
| Reserved |
保留 |
| Addr |
地址 |
| ReqRef |
诊断请求的唯一标识 |
| Reserved |
保留 |
4.10.25 PNIO_CTRL_DIAG_ENUM
| 控制器诊断枚举类型 |
描述 |
| PNIO_CTRL_DIAG_RESERVED |
|
| PNIO_CTRL_DIAG_CONFIG_SUBMODULE_LIST |
|
| PNIO_CTRL_DIAG_DEVICE_STATE |
|
| PNIO_CTRL_DIAG_CONFIG_IOROUTER_PRESENT |
|
| PNIO_CTRL_DIAG_CONFIG_OUTPUT_SLICE_LIST |
|
| PNIO_CTRL_DIAG_CONFIG_NAME_ADDR_INFO |
|
| PNIO_CTRL_DIAG_GET_COMM_COUNTER_DATA |
|
| PNIO_CTRL_DIAG_GET_AND_RESET_COMM_COUNTER_DATA |
|
| PNIO_CTRL_DIAG_DEVICE_DIAGNOSTIC |
|
4.10.26 PNIO_CTRL_DIAG_CONFIG_SUBMODULE
| 控制器诊断子模块结构体成员 |
描述 |
| Address |
子模块地址 |
| DataType |
数据类型 |
| ComType |
通信类型 |
| API |
API |
| ReductionRatio |
减速比 |
| Phase |
节拍 |
| CycleTime |
循环时间片 |
| HwIdentifier |
硬件标识 |
| AddressValid |
合法地址 |
| StartNo |
子模块插入的地址 |
| ParentDeviceLADDR |
合法地址 |
| Slot |
槽号 |
| Subslot |
子槽号 |
| Reserved1 |
保留 |
| Reserved2 |
保留 |
4.10.27 PNIO_CTRL_DIAG_CONFIG_NAME_ADDR_INFO_DATA
| 结构体成员变量 |
描述 |
| name |
模块名称 |
| TypeOfStation |
站类型 |
| ip |
IP地址 |
| mask |
子网掩码 |
| router |
默认路由 |
4.10.28 PNIO_CTRL_DIAG_DEVICE_DIAGNOSTIC_DATA
| 结构体成员变量 |
描述 |
| Mode |
模式 |
| Error |
错误 |
| Reason |
故障原因 |
| AdditionalInfo |
IO设备诊断详细信息 |
4.10.29 PNIO_DATA_TYPE
分RT和IRT数据
4.10.30 PNIO_COM_TYPE
| 枚举 |
描述 |
| PNIO_COM_UNICAST |
单播通信 |
| PNIO_COM_DIRECT_DATA_EX |
|
4.10.31 PNIO_CP_CBE_TYPE
| 事件枚举 |
描述 |
| PNIO_CP_CBE_STARTOP_IND |
开启等时实时数据 |
| PNIO_CP_CBE_DEFAULT_IND |
等时实时模式 |
| PNIO_CP_CBE_STARTOP_CYCLEINFO_IND |
等时实时周期通信模式 |
4.10.32 PNIO_CP_CBE_PRM
| 结构体成员变量 |
描述 |
| CpType |
网卡类型 |
| CpIndex |
多网卡选择索引 |
| u |
网卡事件结构体 |
4.10.33 PNIO_CP_CBF
通用PNIO回调函数指针
4.10.34 PNIO_CYCLE_INFO
| 周期数据参数结构体成员变量 |
描述 |
| CycleCount |
周期计数 |
| ClockCount |
时钟计数PCI设备号 |
| CountSinceCycleStart |
记录计数变化 |
4.10.35 PNIO_IOS_RECONFIG_MODE
| 重配置模式枚举 |
描述 |
| PNIO_IOS_RECONFIG_MODE_DEACT |
所有IO设备待激活 |
| PNIO_IOS_RECONFIG_MODE_TAILOR |
开始重配置IO系统 |
4.10.36 PNIO_CP_SELECT_TYPE
| 网卡选择枚举 |
描述 |
| PCI |
选择PCI地址 |
| MAC |
选择MAC地址 |
4.10.37 PNIO_MAC_ADDR_TYPE
6字节的数组表示MAC地址
4.10.38 PNIO_PCI_LOCATION_TYPE / PNIO_PCI_LOCATION_PTR_TYPE
| 结构体成员变量 |
描述 |
| BusNr |
PCI总线号 |
| DeviceNr |
PCI设备号 |
| FunctionNr |
PCI功能号 |
4.10.39 PNIO_DEBUG_SETTINGS_TYPE / PNIO_DEBUG_SETTINGS_PTR_TYPE
4.10.40 PNIO_PNTRC_BUFFER_FULL
跟踪数据缓冲区溢出回调函数
4.10.41 PNIO_PNTRC_WRITE_TRACE_BUFFER
拷贝跟踪数据到用户缓冲区回调函数
4.10.42 PNIO_PNTRC_SET_TRACE_LEVEL_DONE
跟踪级别设置回调函数
4.10.43 PNIO_CP_ID_TYPE / PNIO_CP_ID_PTR_TYPE
| 结构体成员变量 |
描述 |
| CpSelection |
多网卡选择索引 |
| PNIO_MAC_ADDR_TYPE |
网卡MAC地址 |
| PNIO_PCI_LOCATION_TYPE |
网卡的PCI位置 |
| Description |
网卡描述字符串 |
4.10.44 PNIO_SET_IP_NOS_MODE_TYPE
| IP与设备名设置开关枚举 |
描述 |
| PNIO_SET_IP_MODE |
可以设置设备IP |
| PNIO_SET_NOS_MOD |
可以设置设备名 |
4.10.45 PNIO_IPv4
| 结构体成员变量 |
描述 |
| IpAddress[4] |
IP地址 |
| NetMask[4] |
子网掩码 |
| Gateway[4] |
网关 |
| Remanent |
为TRUE时回调函数将存储IP相关参数 |
4.10.46 PNIO_NOS
| 结构体成员变量 |
描述 |
| Nos |
设备名称 |
| Length |
设备名长度 |
| Remanent |
为TRUE时回调函数将存储设备名参数 |
4.10.47 PNIO_MOD_STATE_ENUM
| 模块状态诊断枚举 |
描述 |
| PNIO_MOD_STATE_NO_MODULE |
所有模块拔出 |
| PNIO_MOD_STATE_PROPER_MODULE |
模块OK,但是子模块存在故障 |
| PNIO_MOD_STATE_SUBTITUTED_MODULE |
现有模块与要求的模块不一致 |
4.10.48 PNIO_SUB_STATE_ENUM
| 子模块状态诊断枚举 |
描述 |
| PNIO_SUB_STATE_ADD_INFO_MASK |
|
| PNIO_SUB_STATE_ADD_INFO_NONE |
No additional information is available |
| PNIO_SUB_STATE_ADD_INFO_TAKEOVER_NOT_ALLOWED |
Takeover is not allowed |
| PNIO_SUB_STATE_ADD_INFO_MASK |
屏蔽0-2位表示SubmoduleState.Advice |
| PNIO_SUB_STATE_ADVICE_NOT_AVAILABLE |
屏蔽第3位 |
| PNIO_SUB_STATE_ADVICE_AVAILABLE |
建议信息 |
| PNIO_SUB_STATE_MAINTENANCE_REQUIRED_MASK |
屏蔽第4位表示SubmoduleState.MaintenanceRequired |
| PNIO_SUB_STATE_MAINTENANCE_NOT_REQUIRED |
No MaintenanceRequired information is available |
| PNIO_SUB_STATE_MAINTENANCE_DEMANDED_MASK |
屏蔽5位表示SubmoduleState.MaintenanceDemanded |
| PNIO_SUB_STATE_MAINTENANCE_NOT_DEMANDED |
No MaintenanceDemanded information is available |
| PNIO_SUB_STATE_MAINTENANCE_DEMANDED |
MaintenanceDemanded information is available |
| PNIO_SUB_STATE_DIAG_INFO_MASK |
屏蔽第6位 that represents SubmoduleState.DiagInfo |
| PNIO_SUB_STATE_DIAG_INFO_NOT_AVAILABLE |
No fault information is available |
| PNIO_SUB_STATE_DIAG_INFO_AVAILABLE |
Fault information is available |
| PNIO_SUB_STATE_AR_INFO_MASK |
屏蔽7-10位表示SubmoduleState.ARInfo |
| PNIO_SUB_STATE_AR_INFO_OWNED |
AR拥有该子模块 |
| PNIO_SUB_STATE_AR_INFO_APPL_READY_PENDING |
AR拥有该子模块,但AR锁住 |
| PNIO_SUB_STATE_AR_INFO_LOCKED_SUPERORDINATED |
This AR It is blocked by superordinated means |
| PNIO_SUB_STATE_AR_INFO_LOCKED_IOCONTROLLER |
It is owned by another IOAR. |
| PNIO_SUB_STATE_AR_INFO_LOCKED_IOSUPERVISOR |
子模块不属于该AR,属于别的IOSAR |
| PNIO_SUB_STATE_IDENT_MASK |
屏蔽11-14位表示SubmoduleState.IdentInfo |
| PNIO_SUB_STATE_IDENT_OK |
子模块OK |
| PNIO_SUB_STATE_IDENT_SUBSTITUTE |
Substitute submodule |
| PNIO_SUB_STATE_IDENT_WRONG Wrong |
submodule |
| PNIO_SUB_STATE_IDENT_NO_SUBMODULE |
|