📄 vardef.h
字号:
//-----------------------------------------------------------------------------
// $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 + -