?? modbus.h
字號:
//****************************************************************************
// 文件名: MODBUS.H
// 功 能: MODBUS 協(xié)議的頭文件
//****************************************************************************
#ifndef _MODBUS_H_
#define _MODBUS_H_
//****************************************************************************
// @ 宏定義地址碼、功能碼
//****************************************************************************
#define Modbus_Node 1 //ASC0之Modbus節(jié)點(diǎn)地址碼
#define ASC1_Baud_Select 1 /* 1 表示選擇115.117Kbpd,0 表示選擇19.2Kbps*/
#if(ASC1_Baud_Select ==1 )
#define Mod_RTU_deay 0x0D6D /* RTU格式的3.5字符包間隔0.6876ms,采用向下計(jì)數(shù)56Kbps*/
#else
#define Mod_RTU_deay 0x2847 /* RTU格式的3.5字符包間隔0.6876*3ms,采用向下計(jì)數(shù)19.2Kbps*/
#endif
//-----------功能碼---------
#define READ_Coils_State 01
#define READ_Inputs_State 02
#define READ_Hold_Registers 03
#define READ_Input_Registers 04
#define WRITE_One_Coil 05
#define WRITE_One_Register 06
#define WRITE_Some_Coil 15
#define WRITE_Some_Register 16
extern ubyte Asc1_Rx_lengh;
extern ubyte Asc1_Tx_lengh;
#define Asc1_Rx_lengh_max 50
#define Asc1_Tx_lengh_max 50
extern bit Asc1_receive_ok;
extern bit Asc1_transfer_ok;
extern bit Asc1_lastFrame_indeal;
extern ubyte Asc1_Rx_BUF[Asc1_Rx_lengh_max];
extern ubyte Asc1_Tx_BUF[Asc1_Tx_lengh_max];
extern ubyte *Asc1_Rx_BUF_point;
extern ubyte *Asc1_Tx_BUF_point;
//****************************************************************************
// @ 函數(shù)原型
//****************************************************************************
//****************************************************************************
// @Function void Modbus_deal()
// @Description 在main()中循環(huán)執(zhí)行
//****************************************************************************
void Modbus_deal();
//****************************************************************************
// @Function void cal_crc( ubyte* ptr, ubyte len )
// @Description 計(jì)算待發(fā)送的數(shù)據(jù)之CRC 值 并插入發(fā)送緩沖
// @Parameters * ptr : 待發(fā)送的數(shù)組的首地址
// len : 待發(fā)送的數(shù)組之字節(jié)數(shù),不包括CRC碼
//****************************************************************************
__inline void crc_cal(ubyte *ptr, ubyte len);
//****************************************************************************
// @Function uword check_crc( ubyte* ptr, ubyte len )
// @Description 計(jì)算待接收的數(shù)據(jù)之CRC 值 ,正確則返回0
// @Rerurn 正確的編碼返回 0x00
// @Parameters * ptr : 待接收的數(shù)組的首地址
// len : 待接收的數(shù)組之字節(jié)數(shù),包括CRC碼
//****************************************************************************
__inline uword crc_check(ubyte *ptr, ubyte len);
//****************************************************************************
// @Function void Frame_deal()
// @Description 處理接收到的數(shù)據(jù)幀,在main中查詢執(zhí)行
// 在地址也符合的情況下才進(jìn)入幀處理
//****************************************************************************
__inline void Frame_deal();
//****************************************************************************
// @Function void Frame_Data_Analyse()
// @Description 在正確的CRC 校驗(yàn)之后進(jìn)行對數(shù)據(jù)分析處理
//****************************************************************************
__inline void Frame_Data_Analyse();
//****************************************************************************
// @Function void Send_Asc0_Tx_buf()
// @Description 處理發(fā)送緩沖區(qū)
//****************************************************************************
__inline void Send_Asc0_Tx_buf();
//****************************************************************************
// @Function void Send_Asc0_Rx_buf_Back()
// @Description 正確處理完寫,直接回復(fù)接收緩沖區(qū)
//****************************************************************************
__inline void Send_Asc0_Rx_buf_Back();
//****************************************************************************
// @Function void Deal_READ_Coils_State()
// @Description 讀一組邏輯線圈當(dāng)前狀態(tài)
//****************************************************************************
__inline void Deal_READ_Coils_State();
//****************************************************************************
// @Function void Deal_WRITE_One_Coilr()
// @Description 寫單個(gè)線圈
//****************************************************************************
__inline void Deal_WRITE_One_Coilr();
//****************************************************************************
// @Function void Deal_WRITE_One_Register()
// @Description 寫一個(gè)保持寄存器
//****************************************************************************
__inline void Deal_WRITE_One_Register();
//****************************************************************************
// @Function void Deal_READ_Hold_Registers()
// @Description 讀保持寄存器
//****************************************************************************
__inline void Deal_READ_Hold_Registers();
//****************************************************************************
// @Function void Deal_WRITE_Some_Coil()
// @Description 強(qiáng)制多個(gè)線圈
//
//
//****************************************************************************
__inline void Deal_WRITE_Some_Coil();
//****************************************************************************
// @Function void Deal_WRITE_Some_Register()
// @Description 預(yù)置多寄存器
//
//
//****************************************************************************
__inline void Deal_WRITE_Some_Register();
//====================================================================
#endif // _MODBUS_H_
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -