#ifndef _MODBUS_H #define _MODBUS_H #include "crc.h" #include "common.h" #include "string.h" #include "sjzd_serial.h" #define FRM_ERR_NONE 0 #define FRM_ERR_START -1 #define FRM_ERR_RX_TIMEOUT -2 #define FRM_ERR_SLAVE_ADDR -3 #define FRM_ERR_FC -4 #define FRM_ERR_BYTE_COUNT -5 #define FRM_ERR_CRC -6 #define MAX_PAYLOAD_SIZE 1024 #define FRM_MAX_LEN (MAX_PAYLOAD_SIZE+18) #define FRM_HEADER_LEN 4 #define SJZD_RD_REGS 1 #define SJZD_WR_REGS 2 #define SJZD_RD_FILE_START 3 #define SJZD_RD_FILE_CONTENT 4 #define SJZD_RD_FILE_END 5 typedef struct { float AccPri[19]; float AccSec[7]; float EnvNoiPri; float EnvNoiSec; float NeuCur; int MoDevConf; int MoDevDetF; int MoDevSigF; int ModevPowF; int EnvNoiPriAlm; int EnvNoiSecAlm; int NeuCurAlm; int AccPriAlm[19]; int AccSecAlm[7]; }SVBR_PRI_TYPE; typedef struct { uint32_t has_new_data; uint32_t new_data_len; uint32_t data_timestamp; uint32_t rsv; } SLAVE_REG_TYPE; int32_t sjzd_master_init(char *port,char *baud,char *parity); int32_t sjzd_make_frm(uint8_t *enc_buf,uint8_t slave_addr,uint8_t cmd,uint8_t *data,uint16_t data_len); int32_t sjzd_chk_frm(uint8_t *buf,uint16_t len,uint8_t slave_addr,uint8_t cmd); int32_t sjzd_reg_rd(uint8_t slave_node,uint32_t reg_addr,uint8_t *reg_tbl,uint32_t nbr_reg); int32_t sjzd_reg_wr(uint8_t slave_node,uint32_t reg_addr,uint8_t *reg_tbl,uint32_t nbr_reg,uint8_t *rlt); int32_t sjzd_file_rd(uint8_t slave_node,char *in_file,char *out_file); void SJZD_file_analysis(uint8_t slave_addr,char *curr_file,float sensor_range); int cmp(const void *a, const void *b); void fault_up(char dev_fault); void heartbeat(char dev_num); int relay_init(void); int relay_on(void); int relay_off(void); void sensor_fault(char slave_addr,char sensor_err); void SJZD_file_analysis_nodata(uint8_t slave_addr); #endif