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

📄 fmaclien.h

📁 profibus-dp主站源代码
💻 H
📖 第 1 页 / 共 2 页
字号:
{
    void                    * buffer_ptr;
    UCHAR                     length;
};


struct application_block
{
    UCHAR                           opcode;         /* class of communication                                               */
    UCHAR                           subsystem;      /* number of source-task (only necessary for MTK-user !!!!!)            */
    UWORD                           id;             /* identification of FDL-USER                                           */
    struct  service                 service;        /* identification of service                                            */
    struct  remote_address          loc_add;        /* only for network-connection !!!                                      */
    UCHAR                           ssap;           /* source-service-access-point                                          */
    UCHAR                           dsap;           /* destination-service-access-point                                     */
    struct  remote_address          rem_add;        /* address of the remote-station                                        */
    enum    service_class           serv_class;     /* priority of service                                                  */
    struct  link_service_data_unit  receive_l_sdu;  /* address and length of received netto-data, exception:                */
    UCHAR                           reserved1;      /* (reserved for FDL !!!!!!!!!!)                                        */
    UCHAR                           reserved2;      /* (reserved for FDL !!!!!!!!!!)                                        */
    struct  link_service_data_unit  send_l_sdu;     /* address and length of send-netto-data, exception:                    */
    /* 1. csrd                 : length means number of POLL-elements       */
    /* 2. await_indication     : concatenation of application-blocks and    */
    /*    withdraw_indication  : number of application-blocks               */
    enum    link_status             l_status;       /* link-status of service or update_state for srd-indication            */
    UCHAR                           reserved3[4];   /* for concatenated lists       (reserved for FDL !!!!!!!!!!)           */
};

struct rb2_header_type
{
    UWORD reserved[2];
    UCHAR length;
    UWORD user;
    UCHAR rb_type;
    UCHAR priority;
    UCHAR reserved_1;
    UWORD reserved_2;
    UCHAR subsystem;
    UCHAR opcode;
    UWORD response;
    UWORD fill_length_1;
    UCHAR reserved_3;
    UWORD seg_length_1;
    UWORD offset_1;
    UWORD reserved_4;
    UWORD fill_length_2;
    UCHAR reserved_5;
    UWORD seg_length_2;
    UWORD offset_2;
    UWORD reserved_6;
};

struct fdl_rb
{
    struct rb2_header_type    rb2_header;
    struct application_block  application_block;
    UCHAR                     reserved[12];
    UCHAR                     reference[2];
    UCHAR                     user_data_1[260];
    UCHAR                     user_data_2[260];
};


typedef struct fdl_rb     flc_rb;

/* Moegliche Strukturen der Datenpuffer */

struct  user_poll_element
{
    UCHAR                           dsap;          /* destination-service-access-point                                     */
    struct  remote_address          rem_add;       /* address of the remote-station                                        */
    enum    service_class           serv_class;    /* priority of send-telegram                                            */
    struct  link_service_data_unit  receive_l_sdu; /* request: length means buffer-length in byte                          */
    /* confirm: length means length of received netto-data                  */
    struct  link_service_data_unit  send_l_sdu;    /* address and length of send-netto-data                                */
    UCHAR                           reserved;      /* reserved for FDL !!!!!                                               */
    enum    link_status             l_status;      /* link-status of poll-element-service                                  */
    enum    poll_element_entry      entry;         /* locks or unlocks a poll-element                                      */
    UCHAR                           reserved_2;    /* reserved for FDL !!!!!                                               */
};


struct ident
{
    UCHAR reserved_header[8];                    /* reserved for FDL !!!!!                                               */
    UCHAR ident[202];
    short response_telegram_length;              /* reserved for FDL !!!!!                                               */
};


struct  bus_parameter_block
{
    UCHAR                   hsa;                  /* highest station-address                                              */
    /* range of values:  2 ... 126                                          */
    UCHAR                   ts;                   /* FDL-address of this station                                          */
    /* range of values:  0 ... 126                                          */
    station_type            stat_type;          /* active, passive                                                      */
    baud_rate               Baud_Rate;             /* transmission rate                                                    */
    enum    redundancy      medium_red;            /* availability of redundant media                                      */
    UWORD                   retry_ctr;            /* retry-number of requestor, if no reaction of responder               */
    /* range of values:  1 ... 8                                            */
    UCHAR                   default_sap;          /* Default SAP if no address-extension is used                          */
    /* range of values:  2 ... 62                                           */
    UCHAR                   network_connection_sap;/* number of sap for network-connection (only for network-connections) */
    /* range of values:  2 ... 62                                           */
    UWORD                   tsl;                  /* SLOT-time:                                                           */
    /* range of values:  2 exp 0 ... (2 exp 16) - 1   BIT-times             */
    UWORD                   tqui;                 /* Transmitter-Fall-Time / Repeater-Switch-Time:                        */
    /* range of values:  0 ... (2 exp 8) - 1 BIT-times                      */
    UWORD                   tset;                 /* setup-time                                                           */
    /* range of values:  0 ... (2 exp 8) - 1 BIT-times                      */
    UWORD                   min_tsdr;             /* smallest STATION-DELAY-time:                                         */
    /* range of values:  2 exp 0 ... (2 exp 16) - 1   BIT-times             */
    UWORD                   max_tsdr;             /* largest STATION-DELAY-time:                                          */
    /* range of values:  2 exp 0 ... (2 exp 16) - 1   BIT-times             */
    ULONG                   ttr;                  /* TARGET-ROTATION-time:                                                */
    /* range of values:  2 exp 0 ... (2 exp 24) - 1   BIT-times             */
    UCHAR                   g;                    /* GAP-UPDATE-factor: in multiples of ttr                               */
    /* range_of_values:  1 ... 100                                          */
    enum    flc_boolean     in_ring_desired;       /* request entrance into the token-ring                                 */
    enum    physical_layer  physical_layer;        /* RS485, modem                                                         */
    struct  ident           ident;                 /* vendor-name, controller_type, version of hardware and software       */
} bus_parameter_block;

struct  fdl_sap
{
    UWORD                   user_id;                /* identification for user                                              */
    UCHAR                   max_l_sdu_length;       /* maximal length of netto_data for this sap                            */
    UCHAR                   access_sap;             /* reserved destination_sap                                             */
    UCHAR                   access_station;         /* reserved destination_address                                         */
    UCHAR                   access_segment;         /* reserved destination_segment                                         */
    UCHAR                   sda;                    /* ... .sda = "ROLE"; sda unused by service "rsap_activate"             */
    UCHAR                   sdn;                    /* look sda; sdn unused by service "rsap_activate"                      */
    UCHAR                   srd;                    /* look sda;                                                            */
    UCHAR                   csrd;                   /* if you want to activate csrd for this SAP, type: ... .csrd = "ROLE"; */
    /* (only INITIATOR or SERVICE_NOT_ACTIVATED possible)                   */
    /* csrd unused by service "rsap_activate"                               */
    void                  * rup_l_sdu_ptr_low;      /* reserved for "sap_deactivate"; USER gets rup-buffer returned         */
    void                  * rup_l_sdu_ptr_high;     /* reserved for "sap_deactivate"; USER gets rup-buffer returned         */
    UCHAR                   reserved[22];           /* reserved for FDL !!!!!                                               */
};

struct fdl_l_stat
{
    UCHAR access_station;         /* reserved destination_address                                         */
    UCHAR reserved;
    UCHAR sda;                    /* ... .sda = "ROLE"; sda unused by service "rsap_activate"             */
    UCHAR sdn;                    /* look sda; sdn unused by service "rsap_activate"                      */
    UCHAR srd;                    /* look sda;                                                            */
    UCHAR csrd;                   /* if you want to activate csrd for this SAP, type: ... .csrd = "ROLE"; */
};
/**********************************************************************/
/****************   fdl_event (returned by fma_indication) ************/
/****************   await_indication (for DSAP = EVENT_SAP)************/
/**********************************************************************/


struct  event_ctr
{
    UWORD threshold;                      /* if counter achieves threshold, a fma_indication is initiated         */
    UWORD counter;
};

struct event_indication
{
    struct  event_ctr time_out;
    struct  event_ctr not_syn;
    struct  event_ctr uart_error;
    struct  event_ctr out_of_ring;
    struct  event_ctr sdn_not_indicated;
    struct  event_ctr duplicate_address;
    struct  event_ctr hardware_error;
    struct  event_ctr mac_error;
    UCHAR             priority;
} ;


/**********************************************************************/
/****************   fdl_read_statistic_ctr  ***************************/
/**********************************************************************/

struct statistic_ctr_list
{
    /* error-counter */
    UWORD             invalid_start_delimiter_ctr;
    UWORD             invalid_fcb_fcv_ctr;
    UWORD             invalid_token_ctr;
    UWORD             collision_ctr;
    UWORD             wrong_fcs_or_ed_ctr;
    UWORD             frame_error_ctr;
    UWORD             char_error_ctr;
    UWORD             retry_ctr;
    /* reference-counter */
    ULONG             start_delimiter_ctr;
    ULONG             stop_receive_ctr;
    ULONG             send_confirmed_ctr;
    ULONG             send_sdn_ctr;
};



//******************************************************************************
//******************************************************************************
//                      Konec standartnich FDL deklaraci
//******************************************************************************
//******************************************************************************


/*
extern UBYTE TS;

extern statistic_ctr_list *ctr_list;

extern  fdl_rb          *recv_rb;    // pointer to received request block
*/

extern HANDLE     DriverHandle;

/*extern*/  fdl_rb          *                   rqb;        // universal pointer to request block


//*****************************************************************************
//**
//**    Funkce pro aplikacni vrstvu
//**
//*****************************************************************************


void              build_head( fdl_rb *rb ) ;        // Vyplni zahlavi Request Blocku
void              Read_Statistic_Ctr( BYTE pr );

void              LSAP_status_read( BYTE Stat, BYTE NM, BYTE pr );

void              SAP_deactivate( BYTE NM, BYTE pr );

void              RSAP_activate( BYTE sap_nr,
                                 BYTE ACCSAP,
                                 BYTE ACCSTAT,
                                 BYTE priority );

void              SAP_activate( BYTE sap_nr,
                                BYTE ACCSAP,
                                BYTE ACCSTAT,
                                BYTE SDA_R,
                                BYTE SDN_R,
                                BYTE SRD_R,
                                BYTE priority );

void              Read_FDL_value( BYTE pr );
void              Set_FDL_value( BYTE pr );

//data se ocekavaji ve forme "xx xx xx..." - pak se ovsem da poslat maximalne 260/3 bytu ?!
void              Send_SRD( BYTE adr,
                            BYTE ssap,
                            BYTE dsap,
                            unsigned char data[260],
                            BYTE pr );
void              Send_SDN( BYTE adr,
                            BYTE ssap,
                            BYTE dsap,
                            unsigned char data[260],
                            BYTE pr );
void              Send_SDA( BYTE adr,
                            BYTE dsap,
                            BYTE ssap,
                            unsigned char data[260],
                            BYTE pr );
void              Send_Replay_Update_Multiple( BYTE s_sap,
                                               unsigned char data[260],
                                               BYTE pr );
void              Send_Replay_Update_Single( BYTE s_sap,
                                             unsigned char data[260],
                                             BYTE pr );
int               Send_fdl_await_indication( BYTE s, BYTE p );

int               FDL_life_list_local( BYTE pr );
int               FDL_life_list_remote( BYTE pr );
int               FDL_ident( BYTE address, BYTE pr );





#endif /* _FMACLIENT_H_ */

⌨️ 快捷键说明

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