2026-03-20 21:16:58 +08:00
|
|
|
|
#ifndef __MODBUS_h__
|
|
|
|
|
|
#define __MODBUS_h__
|
|
|
|
|
|
|
2026-03-20 21:19:53 +08:00
|
|
|
|
#define MAX 0
|
|
|
|
|
|
#define MIN 1
|
|
|
|
|
|
#define DEFAULT 2
|
|
|
|
|
|
//******************************************************************************
|
2026-03-20 21:16:58 +08:00
|
|
|
|
typedef struct
|
|
|
|
|
|
{
|
|
|
|
|
|
u16 StartAddr;
|
|
|
|
|
|
u16 EndAddr;
|
|
|
|
|
|
u16 ByteNumber;
|
|
|
|
|
|
u16 Index;
|
|
|
|
|
|
u16 DataByte;
|
|
|
|
|
|
u16 TxdLen;
|
|
|
|
|
|
u16 RxdLen;
|
|
|
|
|
|
u8 *RxPointer;
|
|
|
|
|
|
u8 *TxPointer;
|
|
|
|
|
|
u8 BusError;
|
|
|
|
|
|
} __MB_Buf_TypeDef;
|
|
|
|
|
|
|
|
|
|
|
|
//******************************************************************************
|
|
|
|
|
|
//error code
|
|
|
|
|
|
#define MUBUS_OK 0
|
|
|
|
|
|
#define ILLEGAL_FUNCTION 1 //δʶ<CEB4><CAB6><EFBFBD>Ĺ<EFBFBD><C4B9>ܴ<EFBFBD><DCB4><EFBFBD>
|
|
|
|
|
|
#define ILLEGAL_DATA_ADDRESS 2 //δʶ<CEB4><CAB6><EFBFBD><EFBFBD><EFBFBD>߷Ƿ<DFB7><C7B7>ļĴ<C4BC><C4B4><EFBFBD><EFBFBD><EFBFBD>ַ
|
|
|
|
|
|
#define ILLEGAL_DATA_VALUE 3 //<2F>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><F2A3ACB2><EFBFBD><EFBFBD>˴<EFBFBD><CBB4><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD>ȷ<EFBFBD>ȡ<EFBFBD>
|
|
|
|
|
|
#define SLAVE_DEVICE_FAILURE 4 //<2F>ӻ<EFBFBD>ִ<EFBFBD><D6B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>
|
|
|
|
|
|
#define ACKNOWLEDGE 5 //<2F>ӻ<EFBFBD><D3BB>յ<EFBFBD><D5B5><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
#define SLAVE_DEVICE_BUSY 6 //<2F>ӻ<EFBFBD><D3BB><EFBFBD><EFBFBD><EFBFBD>æ <20>Ժ<EFBFBD><D4BA>ٳ<EFBFBD><D9B3>Բ<EFBFBD>ѯ<EFBFBD><D1AF>Ϣ
|
|
|
|
|
|
//******************************************************************************
|
|
|
|
|
|
#define MODBUS_PROTOCOL 1
|
|
|
|
|
|
#define MODBUS_MAX_DATA 110
|
|
|
|
|
|
//******************************************************************************
|
|
|
|
|
|
#define MAX_BUS_FRAME_ERROR 32
|
|
|
|
|
|
#define MAX_BUS_ADR_ERROR 255
|
|
|
|
|
|
|
|
|
|
|
|
#define SLAVER_ADDR_MAX 247
|
|
|
|
|
|
#define SLAVER_ADDR_MIN 1
|
|
|
|
|
|
|
|
|
|
|
|
//******************************************************************************
|
|
|
|
|
|
#define FUNCTION_CODE 1
|
|
|
|
|
|
|
|
|
|
|
|
//******************************************************************************
|
|
|
|
|
|
// MODBUS COMMAND
|
|
|
|
|
|
#define READ_HOLDING_REGISTERS 0x03
|
|
|
|
|
|
#define PRESET_SINGLE_REGISTER 0x06
|
|
|
|
|
|
#define PRESET_MULTIPLE_REGISTERS 0x10
|
|
|
|
|
|
#define MASK_WRITE_REGISTER 0x16
|
|
|
|
|
|
#define ERROR_TEST 0x08
|
|
|
|
|
|
|
|
|
|
|
|
// Custom function code
|
|
|
|
|
|
#define SKEP_READ_REGISTERS 0x41
|
|
|
|
|
|
#define READ_REALTIME_REGISTERS 0x42
|
|
|
|
|
|
#define READ_SETUP_REGISTERS 0x43
|
|
|
|
|
|
//******************************************************************************
|
|
|
|
|
|
#define ENABLE_REG_MAX 50
|
|
|
|
|
|
//******************************************************************************
|
|
|
|
|
|
extern __MB_Buf_TypeDef MBBuf; //ModBusЭ<73><D0AD>֡<EFBFBD>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD>
|
|
|
|
|
|
extern u16 localAddress; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ
|
|
|
|
|
|
extern u8 isOldProtocol; //
|
|
|
|
|
|
|
|
|
|
|
|
u16 ModBusCRC(u8 *Data_Array , u8 DataLength); //CRCУ<43><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void ComputeTxdDataCRC(void); //ModBusCRCУ<43><D0A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void ModBusErrorInfo(u8 ErrorCode); //ModBus<75><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
|
|
|
|
|
u8 ModBusProtocolDetection(void); //<2F>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>֡<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>ModBusЭ<73><D0AD>
|
|
|
|
|
|
|
|
|
|
|
|
void ModBusDataProcessing(void); //<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ModBusЭ<73><D0AD>
|
|
|
|
|
|
void ModBusReadMultiByte(void); //ModBus<75><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
void ModBusWriteMultiByte(void); //ModBusд<73><D0B4><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
u8 ModbusVariablePointerDec(void);
|
|
|
|
|
|
u8 ModbusVariablePointerProcess(void);
|
|
|
|
|
|
void CopyDataAndJudgeComplete(void);
|
|
|
|
|
|
#endif
|