From 7298bd64ff50a5be061781d5bce25e1087372860 Mon Sep 17 00:00:00 2001 From: jxjajs Date: Tue, 17 Dec 2024 23:02:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=96=B0=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- inc/iec61850_process.h | 24 +++++++++++++++++++----- inc/modbus.h | 2 +- inc/modbus_rtu_slave.h | 7 ++++--- inc/serial.h | 4 ++++ inc/sjzd.h | 21 +++++++++++++++++++-- inc/sjzd_serial.h | 10 ++++++++++ 6 files changed, 57 insertions(+), 11 deletions(-) diff --git a/inc/iec61850_process.h b/inc/iec61850_process.h index 99233e1..be0a273 100644 --- a/inc/iec61850_process.h +++ b/inc/iec61850_process.h @@ -12,23 +12,37 @@ #define CMD_SEND_PRI_DATA 16 +// typedef struct +// { +// USR_MV AccPri[19]; +// USR_MV AccSec[7]; +// USR_MV EnvNoiPri; +// USR_MV EnvNoiSec; +// USR_MV NeuCur; +// USR_MV MoDevConf; +// USR_MV MoDevDetF; +// USR_MV MoDevSigF; +// USR_MV ModevPowF; +// USR_MV EnvNoiPriAlm; +// USR_MV EnvNoiSecAlm; +// USR_MV NeuCurAlm; +// USR_MV AccPriAlm[19]; +// USR_MV AccSecAlm[7]; +// }LN_SVBR_TYPE; + typedef struct { USR_MV AccPri[19]; - USR_MV AccSec[7]; USR_MV EnvNoiPri; - USR_MV EnvNoiSec; USR_MV NeuCur; USR_MV MoDevConf; USR_MV MoDevDetF; USR_MV MoDevSigF; USR_MV ModevPowF; USR_MV EnvNoiPriAlm; - USR_MV EnvNoiSecAlm; USR_MV NeuCurAlm; USR_MV AccPriAlm[19]; - USR_MV AccSecAlm[7]; -}LN_SVBR_TYPE; + }LN_SVBR_TYPE; extern int iec61850_rx_init(void); diff --git a/inc/modbus.h b/inc/modbus.h index fbe20bc..dda4ef2 100644 --- a/inc/modbus.h +++ b/inc/modbus.h @@ -88,7 +88,7 @@ MODBUS_BEGIN_DECLS * (chapter 6 section 17 page 38) * Quantity of Registers to write in R/W registers (2 bytes) 1 to 121 (0x79) */ -#define MODBUS_MAX_READ_REGISTERS 125 +#define MODBUS_MAX_READ_REGISTERS 300 #define MODBUS_MAX_WRITE_REGISTERS 123 #define MODBUS_MAX_WR_WRITE_REGISTERS 121 #define MODBUS_MAX_WR_READ_REGISTERS 125 diff --git a/inc/modbus_rtu_slave.h b/inc/modbus_rtu_slave.h index 8025bce..2f93a9f 100644 --- a/inc/modbus_rtu_slave.h +++ b/inc/modbus_rtu_slave.h @@ -2,12 +2,13 @@ #define _MODBUS_RTU_SLAVE_H //J24.1 J24.2 ===> A-B -#define MODBUS_RTU_SERIAL "/dev/ttyO3" +#define MODBUS_RTU_SERIAL "/dev/ttymxc1" #define MODBUS_RTU_BAUD 38400 #define SERVER_ID 1 +#define TYPE_MONITOR 0X000F +#define MODBUS_REGS_NUM 300 - -//extern YSP_MODBUS_REGS ysp_modbus_data; +extern uint16_t sjzd_modbus_data[MODBUS_REGS_NUM]; int modbus_rtu_slave_init(void); void modbus_rtu_data_fresh(void *data,int is_new); diff --git a/inc/serial.h b/inc/serial.h index 9a84d6f..3c4c18f 100644 --- a/inc/serial.h +++ b/inc/serial.h @@ -9,9 +9,13 @@ #include #include +#define RECVDATA_MAXLENTH 1300 /* 接收数据缓冲区最大值*/ + int SerialOpen(const char *dev_name,int baud,int databit,int stopbit,int chk_mode); int SerialRead(int m_comFd,unsigned char *buf,int sz,int timeout); int SerialWrite(int m_comFd,const unsigned char *buf,int sz); int SerialReadEx(int m_comFd,unsigned char *buf,int sz,int timeout); +long long get_msec(void); + #endif diff --git a/inc/sjzd.h b/inc/sjzd.h index 5fa40ef..67f0202 100644 --- a/inc/sjzd.h +++ b/inc/sjzd.h @@ -16,7 +16,7 @@ #define MAX_PAYLOAD_SIZE 1024 -#define FRM_MAX_LEN (MAX_PAYLOAD_SIZE+8) +#define FRM_MAX_LEN (MAX_PAYLOAD_SIZE+18) #define FRM_HEADER_LEN 4 #define SJZD_RD_REGS 1 @@ -25,6 +25,7 @@ #define SJZD_RD_FILE_CONTENT 4 #define SJZD_RD_FILE_END 5 + typedef struct { float AccPri[19]; @@ -43,6 +44,14 @@ typedef struct 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); @@ -51,5 +60,13 @@ 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 \ No newline at end of file diff --git a/inc/sjzd_serial.h b/inc/sjzd_serial.h index 4978793..2537c2b 100644 --- a/inc/sjzd_serial.h +++ b/inc/sjzd_serial.h @@ -7,6 +7,16 @@ #define MODBUS_TIMEOUT 10 +typedef struct +{ + int m_iRevStatus; /* */ + int m_iRecvLen; /* */ + int m_iNeedRevLength; /* */ + int iRecvTime; /* */ + uint8_t m_au8RecvBuf[RECVDATA_MAXLENTH];/* */ +} SJZD_SERIAL_DEF; + + int32_t sjzd_serial_init(char *port,int baud,char databit,char parity); int32_t sjzd_serial_read(uint8_t *pucBuffer,uint16_t usNBytes,uint16_t *usNBytesRead); int32_t sjzd_serial_write(uint8_t *pucBuffer,uint16_t usNBytes);