?? modbus.h
字號:
#define READ_COIL 01 //讀取線圈狀態(tài)
#define SET_COIL 05 //對單個線圈進(jìn)行強(qiáng)制
#define SET_COILs 15 //對多個線圈進(jìn)行強(qiáng)制
#define READ_DI 02 //讀取輸入狀態(tài)
#define READ_AI 04 //讀取輸入寄存器
#define READ_HLD_REGs 03 //讀單個保持寄存器
#define SET_HLD_REG 06 //寫單個保持寄存器
#define SET_HLD_REGs 16 //寫多個保持寄存器
#define READ_SET_HLD_REGs 23 //讀/寫 保持寄存器
#define LOCAL_ADD 1
#define FRM_ERR (-2)
#define CRC_ERR (-3)
#define CMD_ERR (-4)
extern int GwSciRxFlag; //SCI接收中斷標(biāo)志,'1'表示接收中斷發(fā)生
//extern unsigned int GwRxCount; // GwSciRxBuffer[]數(shù)組的下標(biāo)
//extern unsigned int GwTxCount; // GwSciTxBuffer[]數(shù)組的下標(biāo)
//extern unsigned char GwRxFlag; // 接收標(biāo)志 1: 準(zhǔn)備接收; 0: 接收結(jié)束
//extern unsigned char GwTxFlag; // 發(fā)送標(biāo)志 1: 準(zhǔn)備發(fā)送; 0: 發(fā)送結(jié)束
extern unsigned char GwSciTxBuffer[32],GwSciRxBuffer[32];
extern unsigned int GwSciTxBytes; // 每幀信息中發(fā)送字節(jié)總數(shù)
extern unsigned int GwSciRxBytes; // 每幀信息中接收字節(jié)總數(shù)
extern unsigned int CRC16( const unsigned char *buf, int len);
extern unsigned char CheckCRC(unsigned char *crctmp,unsigned int length);
extern void SciSend(void);
extern void SciReceive(void);
// 功能 構(gòu)建RTU模式幀,RTU模式的ADU
extern void ConstructRtuFrame(unsigned char *dst_buf,unsigned char *src_buf,unsigned char lenth);
extern char ProcessMasterRTU(unsigned int *dest, unsigned char *src,unsigned int start_address, unsigned int fr_lenth);
//////////////////////////////////////////
// 功能 :讀取繼電器狀態(tài):CMD == 1
// 返回 :成功返回1,否則返回0
// 請求命令:[設(shè)備地址] [命令號01] [起始寄存器地址高8位] [低8位] [讀取的寄存器數(shù)高8位] [低8位] [CRC校驗的高8位] [CRC校驗的低8位]
// 設(shè)備響應(yīng):[設(shè)備地址] [命令號01] [返回的字節(jié)個數(shù)][數(shù)據(jù)1][數(shù)據(jù)2]...[數(shù)據(jù)n][CRC校驗的高8位] [CRC校驗的低8位]
// tmmp存放讀回寄存器的狀態(tài)
extern char ReadCoilStatus(unsigned int *tmmp, unsigned char DeviceID,unsigned int start_address,unsigned int lenth);
//////////////////////////////////////////
// 功能 :讀取開關(guān)量輸入:CMD == 2
// 返回 :成功返回1,否則返回0
// 備注 :全局變量Modbus_mode,GwSciTxBuffer[],GwSciTxBytes,GwSciRxBuffer[],GwSciRxBytes
// 請求命令:[設(shè)備地址] [命令號02] [起始寄存器地址高8位] [低8位] [讀取的寄存器數(shù)高8位] [低8位] [CRC校驗的高8位] [CRC校驗的低8位]
// 設(shè)備響應(yīng):[設(shè)備地址] [命令號02] [返回的字節(jié)個數(shù)][數(shù)據(jù)1][數(shù)據(jù)2]...[數(shù)據(jù)n][CRC校驗的高8位] [CRC校驗的低8位]
extern char ReadInStatus(unsigned int *tmmp, unsigned char DeviceID, unsigned int start_address, unsigned int lenth);
/////////////////////////////////////////////
// 功能 :讀取保持寄存器:CMD == 3
// 返回 :成功返回1,否則返回0
// 請求命令:[設(shè)備地址] [命令號03] [起始寄存器地址高8位] [低8位] [讀取的寄存器數(shù)高8位] [低8位] [CRC校驗的高8位] [CRC校驗的低8位]
// 設(shè)備響應(yīng):[設(shè)備地址] [命令號03] [返回的字節(jié)個數(shù)][數(shù)據(jù)1][數(shù)據(jù)2]...[數(shù)據(jù)n][CRC校驗的低高8位] [CRC校驗的低8位]
extern char ReadHldreg(unsigned int *tmmp, unsigned char DeviceID, unsigned int start_address, unsigned int lenth);
/////////////////////////////////////////////
// 功能 :讀取模擬量輸入:CMD == 4
// 返回 :成功返回1,否則返回0
// 請求命令:[設(shè)備地址] [命令號04] [起始寄存器地址高8位] [低8位] [讀取的寄存器數(shù)高8位] [低8位] [CRC校驗的低8位] [CRC校驗的高8位]
// 設(shè)備響應(yīng):[設(shè)備地址] [命令號04] [返回的字節(jié)個數(shù)][數(shù)據(jù)1][數(shù)據(jù)2]...[數(shù)據(jù)n][CRC校驗的低8位] [CRC校驗的高8位]
extern char ReadAnlogIn(unsigned int *tmmp, unsigned char DeviceID, unsigned int start_address, unsigned int lenth);
/////////////////////////////////////////////
// 功能 :設(shè)置繼電器:CMD == 5
// 返回 :成功返回1,否則返回0
// 請求命令:[設(shè)備地址] [命令號05] [需下置的寄存器地址高8位] [低8位] [下置的數(shù)據(jù)高8位] [低8位] [CRC校驗的低8位] [CRC校驗的高8位]
// 設(shè)備響應(yīng):如果成功把計算機(jī)發(fā)送的命令原樣返回,否則不響應(yīng)
extern char SetCoil(unsigned char DeviceID, unsigned int start_address, unsigned int value);
////////////////////////////////////////////
// 功能 :設(shè)置單保持寄存器 CMD == 6
// 返回 :成功返回1,否則返回0
// 請求命令:[設(shè)備地址] [命令號06] [需下置的寄存器地址高8位] [低8位] [下置的數(shù)據(jù)高8位] [低8位] [CRC校驗的低8位] [CRC校驗的高8位]
// 設(shè)備響應(yīng):如果成功把計算機(jī)發(fā)送的命令原樣返回,否則不響應(yīng)
extern char SetHldreg(unsigned char DeviceID, unsigned int start_address, unsigned int value);
/////////////////////////////////////////////
// 功能 :對多個線圈進(jìn)行強(qiáng)制:CMD == 15
// 返回 :成功返回1,否則返回0
// 請求格式:從站地址 0x0F 第一個位首地址 所寫位數(shù) 值占用的字節(jié)數(shù) 值
// (例如,置從站5的位12至17為1,則:05 0F 000C 0006 01 3F CRC)
extern char SetCoils(unsigned char DeviceID, unsigned int Startbit_Add, unsigned int Bit2Write, unsigned char ByteValue, unsigned char *Values);
extern char SetMultiHldreg(unsigned char DeviceID, unsigned int start_address, unsigned int WNum, unsigned char BNum, unsigned int *values);
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -