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

📄 drvdatadefine.h

📁 实现PC机和监控哦、组态软件与西门子PLC通讯要用到得开发吧!
💻 H
字号:
// ******************************************************************
//  浙江浙大中自集成控制股份有限公司
//  Copyright (c) 2006 - All Rights Reserved. 
//  ------------------------------------------------------------------
//  当前版本: 1.0 
//  作    者: zhangchuangxun
//  时    间: 2006-10-30 下午 03:24:40
//  注    释: 这里把以前的DataType.h文件整理一下,以前的有点太乱了,命名规则也不好看
//            这里的定义主要供驱动调度程序、和各个驱动文件用
//
//               
//  修改日期:     
//  修改内容:     
//               
// *******************************************************************/


#ifndef _DRV_DATA_DEFINE_H_
#define _DRV_DATA_DEFINE_H_


/////////Device Type////////////////////
#define  SERIAL_DEV_TYPE    0x00
#define  BOARD_DEV_TYPE		0x01
#define  NET_DEV_TYPE       0x03  //网络


#define  RX_QUEU	        1024
#define  TX_QUEU	        512
#define  MAX_SEND_BYTES     0x180 //384

#define  MAX_PACKET_NUMER   512  //包队列中能支持的最大包数目
#define  RM_FLAG            0
#define  RM_CHAR            1

#define  COM_PRO            3475
#define  VERSION1           1023
#define  TIME_INTERVAL      10

//Packet Type
#define  PT_READ		    0
#define  PT_WRITE		    1
/*
#define  MAX_FLOAT      9999999999.00
#define  MIN_FLOAT      0.000000001
#define  MAX_STRING_LEN 80   //DDE传输中所支持的最大字符串长度.
*/

////MACRO of character.
/*
#define   NUL	0x00
#define	  SOH	0x01
#define   STX   0x02
#define   ETX	0x03
#define   EOT	0x04
#define   ENQ	0x05
#define   ACK	0x06
#define   DLE	0x10
#define   NAK	0x15
*/
//MACRO of datatype.
#define  FLOAT_TYPE       1
#define  LONG_TYPE        2
#define  STRING_TYPE      3
#define  DISC_TYPE        4

//Macro of Datatype in device //Old  Unsurpport in Later version.
//#define DEV_BIT_TYPE   0
//#define DEV_INT_TYPE   1
//#define DEV_LONG_TYPE  2
//#define DEV_FLOAT_TYPE 3

////MACRO of character.
/*#define   NUL	0x00
#define	  SOH	0x01
#define   STX   0x02
#define   ETX	0x03
#define   EOT	0x04
#define   ENQ	0x05
#define   ACK	0x06
#define   DLE	0x10
#define   NAK	0x15
*/
//AD filter mode
#define  FILTER_NO    0

#define BIT_DATATYPE       0x01
#define BYTE_DATATYPE      0x02
#define INT_DATATYPE       0x04
#define UINT_DATATYPE      0x08
#define BCD_DATATYPE       0x10
#define LONG_DATATYPE      0x20
#define LONGBCD_DATATYPE   0x40
#define FLOAT_DATATYPE     0x80
#define STRING_DATATYPE    0x100

#define  MAX_DEV_LEN          64
#define  COMM_CONFIG_OFFSET   256				//Config Part1 offset. ----- Store Comm Config.
#define  VAR_CONFIG_OFFSET    512				//Config Part2 offset. ----- Store Var  Config.

#define  PS_SOP               0x0000
#define  PS_EOP               0x8000


#define  MAX_REG_NUM          256
//////////////////////////

//used for COM
#define  RF_BAD_REGISTER      1
#define  RF_NO_OVERFLOW_LOW   2
#define  RF_NO_OVERFLOW_HIGH  3

#define  RF_INVALID_DATATYPE  0x8001



typedef  ATOM  STR;
union DDEValue
{
	long  lValue;
	float fValue;
	BOOL  bValue;
	//char  c[4];
	STR	  sValue;
};

union PlcValue
{
	BOOL  bitVal;
	BYTE  byteVal;
	short intVal;
	UINT  uintVal;
	WORD  bcdVal;
	long  longVal;
	float floatVal;
	DWORD longbcdVal;
	STR	  strVal;
};

typedef struct 
{
	int    nFlag[2];     //驱动程序配置文件特征字
	char   sComment[8];  //简短说明
	int    nVersion[2];  //版本号
	int    nVarNum;      //变量数
	int    nCommConfig;  //是否记录串口配置
	int    reserved[24]; //预留48字节
}CFG_FILE_HEAD;

typedef struct
{
	char     szDevName[32];   //设备名称
	char     szRegister[128];
	short    nDataType;
//	short    nFrequency;
	short    nAccessMode;
	short    reserved[2];
}MiniDbItem;
typedef  MiniDbItem    MINIDBITEM;

struct CommConfig
{
    BYTE  bId;
    UINT  nBaudRate;
    BYTE  bByteSize;
    BYTE  bStopBits;
    BYTE  bParity;
	char  evtChr;
	WORD  wRxMode;
	UINT  nTimeOut;
	WORD  reserved[5];
};
typedef CommConfig  COMM_CONFIG;


struct ComDevice//size: 54
{
	short nFlag;          //为1,表示此位置有串口,为-1,无。
	WORD  deviceKind;     //此值为1,表示串行设备
	char  deviceName[32]; //逻辑名称=={COM1,COM2...}
	int   baudRate;       //波特率
	short dataBits;       //数据位
	short stopBits;       //停止位
	short parity;         //校验方式
	short timeOut;        //超时
	short failTimes;      //失败次数
	short retryInterval;  //尝试恢复间隔
	short isRs232;        //是RS232通讯还是RS485
};//Wang Mingyu Added in 98/10/12.


typedef struct CommData
{
	char      szProtocolName[16]; //该串口的协议名
	CLSID     clsidProtocol;	  //该串口的协议ID
	IUnknown  *pComProtocol;
	CPtrList  PacketList;	 //包队列
}COMM_DATA;


typedef struct _DevAddr
{
	UINT	nDevAddr;
	char	sDevAddr[MAX_DEV_LEN];
}DEVADDR, * PDEVADDR;

typedef struct Device
{
	char	szDevName[32];
	char	szDevAddr[32];
	DEVADDR devAddress;	
	int		nCommId;
	int		nFailTime;
	BOOL	bBad;
	UINT	nTimerCount;
}DEVICE, * PDEVICE;

typedef struct var
{                 
	WORD        wVarID;      		// 组态王中变量ID 
   	WORD        wVarType;      		// 组态王变量类型
   	char        szVarName[32]; 		// 组态王变量名称    
   	short       nDeviceIndex;		// PLC索引        
	short       nUnitNo;			// PLC地址
	DEVADDR    *pDevAddr;			// 设备地址指针,新添内容   	
	char       *pszRegName;			//寄存器名称	
	short       nRegType;     		// 寄存器类型    
	short       nSubType;			// 类型子码
	short       nSubType1;
	short       nSubType2;			// 类型子码2
   	short       nNo;          		// 地址 
   	short       nDataType;    		// 数据类型 
   	short       nAccessMode;      	// I/O Mode.
   	long        nFrequency;   		// 采样频率(基频的倍数)
   	long        nTimerCount;  		// 采样计数器    
	CWinThread* pComThread;         // 该变量所在的线程
	DDEValue    maxRaw;			    // 最大原始值
	DDEValue    minRaw;			    // 最小原始值
	short       bConvertion;		// 转换方式
	short       isBad;			    //设备坏
	short       isUnvalid;		    //变量无效
	//   	WORD   unused[2];		//no used
}PLCVAR;
typedef  PLCVAR * PPLCVAR;

typedef  unsigned short USHO;
//协议处理核心
typedef struct Packet 
{ 
	short    nDeviceIndex;	// -----------//	
	short    nUnitNo;		// 设备地址  |
	DEVADDR *pDevAddr;		// 设备地址指针, 新添内容
	char    *pszDevName;	// 设备名称  // 
	char    *pszRegName;    // 寄存器名称
    short    nRegType;		// 类型码
    short    nSubType;		// 子类型码
	short    nSubType1;
	short    nSubType2;		// 子类型码(附加)
	int      nStartNo;		// 起始偏移量
    int      nEndNo;		// 结束偏移量
    
	short    nPacketType;	// Read, write, something else.
	//WORD   wState;		// Packet state.
    CPtrList varList;       // store 'struct id_no'
}PACKET;
typedef PACKET * PPACKET;


typedef struct IdNo
{
	WORD      wVarId;
//	WORD      wVarType;
	WORD      wNo;
	WORD      wDataType;
	BYTE      Special[4];
	PlcValue  plcValue;
}ID_NO;

//////////////////////////
typedef  struct reginfo
{
	char  sRegName[8];//寄存器名
	int   nLowIndex;
	int   nUpperIndex;
	WORD  wDataType;//所支持的基本数据类型
	int   nData;
}REG_INFO;

struct REG_OPC_Info
{
	char name[64];
};

typedef struct _DRV_ERR_STR_
{
	short no;
	char  Err[128];
}DRV_ERR_STR;
#endif

⌨️ 快捷键说明

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