| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279 |
- #ifndef __CASCADE_Hx__
- #define __CASCADE_Hx__
- #include <stdint.h>
- #include "common.h"
- #include "json_handle.h"
- #include "xlist.h"
- #define MAX_BREAKER_CHN (6)
- #define MAX_BREAKER_ID (49)
- #define CASCADE_MAX 32
- #define ERR_MAX 5
- #define CH_MAX 128
- #define MAX_READ_REGS 1000
- #define MAX_WRITE_REGS 1000
- #define MAX_READ_REGS2 50000
- #define MAX_WRITE_REGS2 50000
- #define CASCADE_REG_OFFSET 0x10
- #define CASCADE_REG_READ (CASCADE_REG_OFFSET+0)
- #define CASCADE_REG_WRITE (CASCADE_REG_OFFSET+1)
- #define CASCADE_REG_SCAN (CASCADE_REG_OFFSET+2)
- // #define CASCADE_REG_BREAKER 0x40
- // #define CASCADE_REG_BREAKER_READ (CASCADE_REG_BREAKER+0)
- // #define CASCADE_REG_BREAKER_WRITE (CASCADE_REG_BREAKER+1)
- enum {
- CASCADE_CMD_OPEN=0,
- CASCADE_CMD_CLOSE,
- CASCADE_CMD_SAVE,
- CASCADE_CMD_SAVE3,
- CASCADE_CMD_GET_INFO,
- CASCADE_CMD_QUERY_CH,
- CASCADE_CMD_QUERY_VOL,
- CASCADE_CMD_QUERY_CUR,
- CASCADE_CMD_QUERY_PWR,
- CASCADE_CMD_QUERY_PWRQ,
- CASCADE_CMD_QUERY_HIS,
- CASCADE_CMD_QUERY_TOTAL,
- CASCADE_CMD_QUERY_TOTAL_PWR,
- CASCADE_CMD_BREAKER_QUERY,
- CASCADE_CMD_GET_BREAKER_INFO,
- CASCADE_CMD_BREAKER_SAVE_ADD,
- CASCADE_CMD_BREAKER_SAVE_UPDATE,
- CASCADE_CMD_BREAKER_SAVE_DELETE,
- CASCADE_CMD_OPEN_NF,
- CASCADE_CMD_CLOSE_NF,
- CASCADE_CMD_MAX,
- };
- #pragma pack (1)
- typedef struct {
- int addr;
- int err; //err times
- }slave_t;
- typedef struct {
- slave_t *slave;
- int cnt;
- }dev_list_t;
- typedef struct {
- uint16_t deveice_type; //设备类型
- uint16_t slave_addr; //设备地址
- uint32_t voltage; //当前电压
- uint32_t current; //当前电流
- uint32_t power; //当前功率
- uint32_t consumption; //耗电量
- uint32_t freq; //频率
- uint32_t factor; //功率因素
- uint32_t temprature; //温度值
- uint32_t humidity; //湿度值
- uint32_t warning; //告警
- uint16_t power_status; //供电状态
- uint16_t sensor_status; //传感器状态
- //uint32_t Warinfo;
- //uint16_t sersor_type;
- }sensor_ori_t;
- typedef struct {
- int type; //设备类型
- int addr;
- PowerInfo pwr;
- float temprature; //温度值
- float humidity; //湿度值
- int warning; //告警
- int power_status; //供电状态
- int sensor_status; //传感器状态
- }sensor_data_t;
- enum {
- TYPE_CMD=0,
- TYPE_FILE,
- };
- enum {
- OBJ_OVERALL=0,
- OBJ_CHANNEL,
- OBJ_HISTORY,
- OBJ_SENSOR,
- };
- typedef struct {
- int dlen;
- uint8_t *data;
- }data_t;
- typedef struct {
- uint8_t product_type;
- uint8_t product_pwr_type;
- uint8_t product_id;
- }product_info_t;
- typedef struct {
- uint8_t product_ph_id;
- uint8_t product_ph_type; //0:A相 1:B相 2:C相
- uint8_t product_ph_outputType; //三相控制方式1,三项2单项
- uint8_t product_ph_outputStatus;//该相是否输出,1输出2不输出
- }phase_info_t;
- typedef struct {
- PowerInfo power;
- phase_info_t phase;
- }power_info_t;
- typedef struct {
- uint8_t product_saddr;
- uint8_t product_ch_type;
- uint8_t product_ch_addr;
- uint8_t product_ch_id;
- uint8_t product_ch_status;
- uint8_t product_ch_NF_status;
-
- PowerInfo chinfo;
- power_info_t pinfo[3];
- uint16_t start_delay;
- uint16_t stop_delay;
- }channel_info_t;
- typedef struct {
- PowerInfo power[3];
- }overall_info_t;
- typedef struct {
- uint8_t cnt;
- product_info_t prod;
- overall_info_t all;
- channel_info_t ch[CH_MAX];
- }slave_info_t;
- // slave breaker information
- typedef struct{
- //uint8_t breaker_addrs;
- uint8_t product_id;
- uint8_t breaker_chn;
- uint16_t breaker_status;
- uint16_t breaker_addrs;
- int breaker_id;
- char breaker_gather_type[6];
- char breaker_com[20];
- char breaker_switch_name[64];
- char breaker_chns_name[64]; //
- }breaker_channel_info_t;
- typedef struct {
- int cnt;
- breaker_channel_info_t breaker_chn[CH_MAX];
- }breaker_info_t;
- typedef struct{
- uint8_t jdh;
- uint8_t cjdz;
- char com[32];
- char cjfs[20];
- char breaker_chns[64];
- }cascade_breaker_add_t;
- typedef struct{
- int switch_id;
- char switch_name[32];
- char breaker_chns[64];
- }cascade_breaker_update_t;
- typedef struct {
- int switch_id;
- }cascade_braeker_delete_t;
- typedef struct {
- uint8_t cmd;
- uint8_t obj;
- uint8_t chId;
- // char time_s[24]; //start time
- // char time_e[24]; //end time
- union{
- cascade_breaker_add_t data;
- cascade_breaker_update_t data1;
- cascade_braeker_delete_t data2;
- }datas;
- }cmd_data_t;
- typedef struct {
- uint8_t tp;
- uint16_t pid;
- uint16_t dlen;
- uint8_t *data;
- }file_data_t;
- typedef struct {
- int8_t type;
- uint8_t data[0];
- }mb_pkt_t;
- typedef struct {
- uint8_t addr;
- uint8_t func;
- uint16_t reg;
- uint16_t regcnt;
- uint8_t dlen;
- uint8_t *data;
- }mb_hdr_t;
- #pragma pack ()
- ////////slave define////////////////////
- typedef struct mmap_modbus{
- int offset;
- void *addr; //libmodbus source addr
- }mmap_modbus_t;
- //////////////////////////////////////
- extern int cur_dev_addr;
- int cascade_init(void);
- int cascade_deinit(void);
- int cascade_request(cmd_data_t *cmd);
- int cascade_get_all(_OverAllPwrAckInfo *all);
- int cascade_get_ch(_OverChnPwrAckInfo *ch);
- int cascade_get_dlist(dev_list_t *dl);
- int cascade_free_dlist(dev_list_t *dl);
- int cascade_set_modbus(ModbusInfo_t *info);
- int cascade_lock(void);
- int cascade_unlock(void);
- int cascade_slave_init(void);
- modbus_mapping_t *cascade_slave_map();
- void cascade_slave_read(uint32_t addr,uint32_t lenth);
- void cascade_slave_write(uint32_t addr, uint16_t val);
- #endif
|