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

📄 vardef.h

📁 profibus-dp主站源代码
💻 H
📖 第 1 页 / 共 3 页
字号:
//-----------------------------------------------------------------------------
// $Id: vardef.h,v 1.0.0                                            2004/01/13
//-----------------------------------------------------------------------------
//
//      ProfiM - PROFIBUS MASTER DRIVER FOR WINDOWS NT/2000
//
// Author:  
//      Pavel Trnka, CTU FEE
//      trnkap@seznam.cz
// With help and advices from:
//      Ing. Petr Smolik, CTU FEE
//      Ing. Pavel Pisa, CTU FEE
//      Ing. Pavel Burget, CTU FEE
//-----------------------------------------------------------------------------
//
// Popis:
// ------
// Definice dulezitych datovych typu, standartnich struktur FDL a konstant.
// Dulezitou casti jsou ihned v uvodu definice falesnych maker urciji podminky
// pro preklad.
//
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------



#ifndef _VARDEF_H
#define _VARDEF_H


#include "NTDDK.H"  

// SS-FORMAT-OFF

//*****************************************************************************
//**
//**                        PODMINKY PRO PREKLAD
//**
//** Doporucene podminky pro preklad pro Windows 2000, definovat falesna makra:
//** PnP, PISA_IO, USE_RX_FIFO, AUTOMATIC_RX, USE_WATCHDOG
//**
//** Doporucene podminky pro preklad pro Windows NT, definovat falesna makra:
//** PISA_IO, USE_WATCHDOG
//**
//*****************************************************************************

//
// prelozi ovladac s PnP podporou pro pouziti pod Windows 2000 a Windows XP
//
//#define PnP           

//
// pro odstraneni cekani ve smycce se bude pouzivat preruseni od modemu (pouze
// pro standratni seriovy port - u 16PCI954 neni potreba - u te se nikde ne-
// ceka)
//
#define PISA_IO         

//
// Povoli pouzivani FIFO pameti pro prijem dat (pouze pro 16PCI954).
// FIFO pro vysilani dat je pouzivana vzdy (pouze pro 16PCI954).
//
//#define USE_RX_FIFO

//
// Pro obvod 16PCI954 nastavi automaticke prepinani na prijem po vyslani
// celeho ramce. Zaroven je pro prijem ramcu vyuzivano cele prijimaci
// FIFO. Jedinou nevyhodou je, ze po prijeti celeho ramce je preruseni
// generovano se spozdenim 4 znaku - tj. 44Tbitu. Coz by ovsem pro dostatecne
// dlouhe reakcni casy site (maxTSDR) nemelo vadit. Na druhou stranu nam to
// umozni dosahovat vysokych prenosovych rychlosti. 
//
//#define AUTOMATIC_RX

//
// Povoli pouziti WatchDogu - ten s periodou 1s kontroluje aktivitu
// driveru a v pripade zatuhnuti jej restartuje.
//
#define USE_WATCHDOG

//
// Mnozstvi vypisovanych debug informaci (pomoci fce DbgPrint):
//  1 - vypisuje vse
//  2 - vypisuje informace o provozu na sbernici (typy vysilanych/prijimanych ramcu apod.)
//  3 - vypisuje pouze zakladni informace a kriticke chyby
//  4 - vypis je zcela vypnut
//
#define ERROR_LEVEL   3   

//
// 1 - ovladac vypisuje ladici informace z PnP casti
// 0 - bez vypisu
//
#define PnP_DBG       0   


//*****************************************************************************
//**
//**  Driver controll structure
//**
//*****************************************************************************               

#define PROFIM_MAGIC 0x13061980


//*****************************************************************************
//**
//**  Identifikace ramcu (Start/End delimiters)
//**
//*****************************************************************************

#define DelimiterSD1     0x10
#define DelimiterSD2     0x68
#define DelimiterSD3     0xA2
#define DelimiterSD4     0xDC
#define DelimiterSC      0xE5
#define DelimiterED      0x16



//*****************************************************************************
//**
//**  Delky bufferu
//**
//*****************************************************************************

#define RQ_BUFFER_SIZE    20 // Request buffer size
#define RS_BUFFER_SIZE    20 // Result buffer size
#define IRP_BUFFER_SIZE  100 // Irp buffer size
#define INBUF_SIZE      1024 // Velikost vstupniho bufferu pro data z vnejsku
#define DEF_BUFFER_SIZE 2000 // Velikost bufferu pro vysilani



//*****************************************************************************
//**
//**  Default parametry mastera
//**
//*****************************************************************************

#define DEF_BAUD_RATE           9600
#define HSA_default             15       // Highest Station Address
#define TS_default              7        // This Station address
#define G_default               2        // Gap update factor
//#define Baud_rate_default     kbaud_9_6
#define Baud_rate_num_default   9600    
#define medium_red_default      no_redundancy
#define retry_ctr_default       1
#define default_sap_default     10
#define TSL_default             300 //60 // SLOT time
#define TQUI_default            0        // Transmitter fall time / 
                                         // repeater changeover time
#define TSET_default            0        // Setup time
#define min_TSDR_default        12       // Minimum Station Delay Time (Response)
#define max_TSDR_default        55       // Maximum Station Delay Time (Response)
#define TTR_default             2000     // Time To Reach
#define in_ring_desired_default flc_true
#define physical_layer_default  rs485

#define Tto                     4000     // Time Out


//
// so far unused
//

//#define tTD                                 1
//#define Timer_set                           65000

//#define time_out_threshold_default          0xffff
#define not_syn_threshold_default           0xffff
#define uart_error_threshold_default        0xffff
#define out_of_ring_threshold_default       0xffff
#define sdn_not_indicated_threshold_default 0xffff
#define duplicate_address_threshold_default 0xffff
#define hardware_error_threshold_default    0xffff
#define mac_error_threshold_default         0xffff



//*****************************************************************************
//**
//**  Definice typu znaku zapisovanych do vystupniho bufferu
//**
//*****************************************************************************

#define DATA_CHAR         0
#define TIMING_CHAR       1
#define SYN_CHAR          2

//Hodnoty posilane na interface pokud prijdou na radu casovaci znaky.
//Interface je prepnuty na prijem, takze znaky se na sbernici nedostanou,
//ale jejich hodnota je dulezita pro generovani preruseni od stavu modemu.
//V interfacu musi byt propojen TxD se vstupem DSR. Vyslanim znaku 0x00
//potom prijdou dve preruseni od stavu modemu.
//Neni-li v interfacu toto pro propojeni, je nutno ovladac prelozit bez
//definovaneho falesneho makra PISA_IO
#define SYN_BYTE          0x00
#define TIMING_BYTE       0x00



//*****************************************************************************
//**
//**  Retezce pro naplneni identifikacni struktuty Ident
//**
//*****************************************************************************

#define Vendor_name       "CTU-FEE"
#define Controller_type   "ProfiM - Windows Profibus DP Master Driver"
#define HW_release        "1.0"
#define SW_release        "0.015"

// SS-FORMAT-ON


//*****************************************************************************
//**
//**  Makra pro vypis stavovych a chybovych informaci
//**
//*****************************************************************************

// pozor neumoznuje vypisy s parametry jako napr. DbgPrint("abc %d",x);
#define RS_DbgPrint(a)  DbgPrint(a)             

//umoznuji vypisy s parametry
#define PB_DbgPrintL1 if (ERROR_LEVEL==1) DbgPrint
#define PB_DbgPrintL2 if (ERROR_LEVEL<=2) DbgPrint
#define PB_DbgPrintL3 if (ERROR_LEVEL<=3) DbgPrint




//*****************************************************************************
//*****************************************************************************


// FC znaky
#define FCMasterNotReady        0x10
#define FCMasterReady           0x20
#define FCMasterInLogicalRing   0x30


#define SAPDefault              0xff    
#define SAPNIL                  0x80    // dost divny je definovat rozsah hodnot 0-63 a Nil (128 dle strany 639) jinde je vsak definova jako 0xFF
#define SAPAll                  0xff    // umoznuje pristup do LSAPu ze vsech RSAPu
#define AccessAll               0x7f    // umoznuje pristup do LSAPu ze vsech stanic


typedef UCHAR   UBYTE;
typedef CHAR    BYTE;
typedef USHORT  UWORD;
typedef ULONG   UDWORD;

typedef enum
{
  Offline               = 0,
  Listen_Token,
  Active_Idle,
  Claim_Token,
  Use_Token,
  Await_Data_Resp,
  Check_Access_Time,
  Pass_Token,
  Check_Token_Pass,
  Await_Status_Resp
} TMasterState;

typedef enum
{
  Slave                     = 0,
  Master_not_ready          = 1,
  Master_ready              = 2,
  Master_in_logical_ring    = 3
} TStationStatus;



typedef enum
{
  TO_StartNow         = 0,
  TO_StartTxEmpty
} TTimeOutStartCondition;

typedef enum
{
  TO_Stopped            = 0,
  TO_Running,
  TO_WaittingTxEmpty
} TTimeOutState;

⌨️ 快捷键说明

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