⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 epa_maninfbas.h

📁 AVR单片机基础上的以太网协议编程
💻 H
字号:
/**************************************************************************
**
**    文件: EPA_ManInfBas.h
**    描述: 该文件完成EPA管理信息库中对象结构的定义
**
**************************************************************************/

#ifndef EPA_ManInfBas_h
#define EPA_ManInfBas_h

//include user defined file
#include "Define.h"

//定义AppID和ObjectID
#define MIB_AppID                                  0
#define Domain_Application_Information_ObjectID    4000

//定义时间同步对象中的时间同步精度
#define Time_None   0         //无精度要求
#define Time_1s     1         //时间同步精度<1s
#define Time_100ms  2         //时间同步精度<100ms
#define Time_10ms   3         //时间同步精度<10ms
#define Time_1ms    4         //时间同步精度<1ms
#define Time_100us  5         //时间同步精度<100us
#define Time_10us   6         //时间同步精度<10us
#define Time_1us    7         //时间同步精度<1us

//定义链接对象中本地设备的通信角色
#define Role_Transmitter 0    //发送者,客户机或发布者
#define Role_Receiver    1    //接收者,服务器或预订者
#define Role_None        0xff //链接对象未组态或已删除

//EPA设备管理信息库的首部对象
struct EPA_MIB_Header
{
    uint  ObjectID;                         //ObjectID=1
    uint  SMIB_Resivion_Number;             //EPA管理信息库的修改版本号,由用户指定 
};

//EPA设备描述对象
struct EPA_Device_Descriptor
{
    uint  ObjectID;                         //ObjectID=2
    uchar Reserved[2];
    uchar DeviceID[32];                     //设备ID,冗余的设备具有相同的设备ID,不足部分用空格填充                     
    uchar PD_Tag[32];                       //设备物理位号,当不存在设备冗余时,即设备ID
    uchar Active_IP_Address[4];             //当前可操作的IP地址
    uchar Device_Type;                      //设备类型,描述设备的功能,由设备制造商设定
    uchar Status;                           //设备所处状态,0无地址,1未组态,2已组态
    uint  Device_Version;                   //设备版本号
    uint  Annunciation_Interval;            //发送设备声明请求报文的时间间隔
    uint  Annunciation_Version_Number;      //设备属性每修改一次,值加1
    uchar Device_Redundancy_State;          //设备冗余状态,0活动状态,1备份状态
    uchar Device_Redundancy_Number;         //设备冗余号
    uint  LAN_Redundancy_Port;              //设备冗余消息处理端口号
    uchar Max_Redundancy_Number;            //设备最大冗余个数
    uchar Duplicate_Tag_Detected;           //PD Tag是否与网络上其他设备的冲突,TURE,冲突
};

//时间同步对象 
struct Clock_Synchronization
{
    uint  ObjectID;                         //ObjectID=3
    uchar Reserved[2];
    uchar Primary_Time_Server[4];           //主时间服务器的IP地址 
    uchar Secondary_Time_Server[4];         //从时间服务器的IP地址
    ulong Time_Request_Timeout;             //时间客户机等待时间服务器响应的时间(微秒)
    ulong Time_Request_Interval;            //时间客户发送时间请求的时间间隔(秒)
    ulong Capable_Time_Sync_Class;          //时间客户机支持的时间同步精度
    ulong Target_Time_Sync_Class;           //要求时间客户支持的时间同步精度,读/写 
    BinaryDate Current_Time;                //设备当前时间
    TimeDifference Standard_Time_Difference;//标准时间差,标准时间戳-当前时间
};

//证实服务最大响应时间
struct Max_Response_Time
{
    uint  ObjectID;                         //ObjectID=4
    uchar Reserved[2];
    ulong Max_Response_Time;                //证实服务的最大响应时间(毫秒)
};

//通信调度管理对象
struct Communication_Schedule_Management
{
    uint  ObjectID;                         //ObjectID=5
    uchar Reserved[2];
    ulong Communication_Macro_Cycle;        //通信宏周期,初始值0xffffffff,表示T未组态 
    ulong NonPeriodic_Data_Transfer_Offset; //周期报文发送阶段总时间,初始值0xffffffff,表示Tp未被组态 
    uint  CommunicationCycle_Version_Number;//T的版本号,T每修改一次,加1
};

//设备应用信息对象
struct Device_Application_Information
{
    uint  ObjectID;                         //ObjectID=6
    uint  XDDL_Version;                     //设备描述版本号,高字节为主版本号,低字节为次版本号
};

//功能块应用信息对象首部
struct FB_Application_Information_Header
{
    uint  ObjectID;                         //ObjectID=7
    uint  Number_of_FB_Application_Information_Object;      //功能块应用信息对象的数目
    uint  First_Number_of_FB_Application_Information_Object;//第一个功能块应用信息对象的索引=2000
};

//链接对象首部
struct Link_Object_Header
{
    uint  ObjectID;                         //ObjectID=8
    uint  Number_of_Link_Object;            //设备中链接对象的个数
    uint  First_Number_of_Link_Object;      //第一个链接对象的索引=5000
    uint  Number_of_Configured_Link_Object; //设备中已组态的链接对象的个数 
    uint  Number_of_Unonfigured_Link_Object;//设备中未组态的链接对象的个数
};

//域应用对象首部
struct Domain_Application_Object_Header
{
    uint  ObjectID;                                 //ObjectID=9
    uint  Number_of_Domain_Application_Object;      //设备中,域应用信息对象的个数
    uint  First_Number_of_Domain_Application_Object;//第一个域应用信息对象的索引=4000
    uint  Number_of_Configured_Domain_Object;       //设备中已组态的域对象的个数
    uint  Number_of_UnConfigured_Domain_Object;     //设备中未组态的域对象的个数
};

//功能块应用信息对象 
struct FB_Application_Information
{
    uint  ObjectID;                        //ObjectID=2000
    uint  Reserved;
    uchar FB_Name[32];                     //功能块的名称
    uint  FB_Type;                         //功能块的类型
    uint  Max_Number_of_Instantiation;     //功能块的最大实例化个数
    ulong FB_Execution_Time;               //功能块执行时间(毫秒)
    uint  First_Number_of_Instantiation;   //功能块实例化时可分配的第一个实例标识
};

//域应用信息对象
struct Domain_Application_Information
{
    uint  ObjectID;                        //ObjectID=4000
    uint  Domain_ObjectID;                 //该域应用对象对应的域对象的索引号>=4000
    uchar ConfigurationStatus;             //域对象的组态状态,TRUE表示已组态
    uchar Reserved[3];
    uchar Domain_Name[32];                 //域对象的名称
};

//链接对象
struct Link_Object
{
    uint  ObjectID;                       //ObjectID=5000
    uint  Local_AppID;                    //本地功能块实例标识
    uint  Local_ObjectID;                 //本地变量对象索引号
    uint  Remote_AppID;                   //远程功能块实例标识
    uint  Remote_ObjectID;                //远程变量对象索引号
    uchar Service_Operation;              //链接对象所应用的EPA服务标识,本地链接时,值为0
    uchar Service_Role;                   //本地设备的通信角色:
    uchar Remote_IP_Address[4];           //远程IP地址
    ulong Send_Time_Offset;               //本地周期报文的发送时间,初始值0xffffffff,表示Tdx未被组态   
};

#endif

/******************* End Of File **********************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -