cascade.h 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. #ifndef __CASCADE_Hx__
  2. #define __CASCADE_Hx__
  3. #include <stdint.h>
  4. #include "common.h"
  5. #include "json_handle.h"
  6. #include "xlist.h"
  7. #define CASCADE_MAX 32
  8. #define ERR_MAX 5
  9. #define CH_MAX 128
  10. #define MAX_READ_REGS 1000
  11. #define MAX_WRITE_REGS 1000
  12. #define MAX_READ_REGS2 50000
  13. #define MAX_WRITE_REGS2 50000
  14. #define CASCADE_REG_OFFSET 0x10
  15. #define CASCADE_REG_READ (CASCADE_REG_OFFSET+0)
  16. #define CASCADE_REG_WRITE (CASCADE_REG_OFFSET+1)
  17. #define CASCADE_REG_SCAN (CASCADE_REG_OFFSET+2)
  18. enum {
  19. CASCADE_CMD_OPEN=0,
  20. CASCADE_CMD_CLOSE,
  21. CASCADE_CMD_SAVE,
  22. CASCADE_CMD_SAVE3,
  23. CASCADE_CMD_GET_INFO,
  24. CASCADE_CMD_QUERY_CH,
  25. CASCADE_CMD_QUERY_VOL,
  26. CASCADE_CMD_QUERY_CUR,
  27. CASCADE_CMD_QUERY_PWR,
  28. CASCADE_CMD_QUERY_PWRQ,
  29. CASCADE_CMD_QUERY_HIS,
  30. CASCADE_CMD_QUERY_TOTAL,
  31. CASCADE_CMD_QUERY_TOTAL_PWR,
  32. CASCADE_CMD_MAX,
  33. };
  34. #pragma pack (1)
  35. typedef struct {
  36. int addr;
  37. int err; //err times
  38. }slave_t;
  39. typedef struct {
  40. slave_t *slave;
  41. int cnt;
  42. }dev_list_t;
  43. typedef struct {
  44. uint16_t deveice_type; //设备类型
  45. uint16_t slave_addr; //设备地址
  46. uint32_t voltage; //当前电压
  47. uint32_t current; //当前电流
  48. uint32_t power; //当前功率
  49. uint32_t consumption; //耗电量
  50. uint32_t freq; //频率
  51. uint32_t factor; //功率因素
  52. uint32_t temprature; //温度值
  53. uint32_t humidity; //湿度值
  54. uint32_t warning; //告警
  55. uint16_t power_status; //供电状态
  56. uint16_t sensor_status; //传感器状态
  57. //uint32_t Warinfo;
  58. //uint16_t sersor_type;
  59. }sensor_ori_t;
  60. typedef struct {
  61. int type; //设备类型
  62. int addr;
  63. PowerInfo pwr;
  64. float temprature; //温度值
  65. float humidity; //湿度值
  66. int warning; //告警
  67. int power_status; //供电状态
  68. int sensor_status; //传感器状态
  69. }sensor_data_t;
  70. enum {
  71. TYPE_CMD=0,
  72. TYPE_FILE,
  73. };
  74. enum {
  75. OBJ_OVERALL=0,
  76. OBJ_CHANNEL,
  77. OBJ_HISTORY,
  78. OBJ_SENSOR,
  79. };
  80. typedef struct {
  81. int dlen;
  82. uint8_t *data;
  83. }data_t;
  84. typedef struct {
  85. uint8_t product_type;
  86. uint8_t product_pwr_type;
  87. uint8_t product_id;
  88. }product_info_t;
  89. typedef struct {
  90. uint8_t product_ph_id;
  91. uint8_t product_ph_type; //0:A相 1:B相 2:C相
  92. uint8_t product_ph_outputType; //三相控制方式1,三项2单项
  93. uint8_t product_ph_outputStatus;//该相是否输出,1输出2不输出
  94. }phase_info_t;
  95. typedef struct {
  96. PowerInfo power;
  97. phase_info_t phase;
  98. }power_info_t;
  99. typedef struct {
  100. uint8_t product_saddr;
  101. uint8_t product_ch_type;
  102. uint8_t product_ch_addr;
  103. uint8_t product_ch_id;
  104. uint8_t product_ch_status;
  105. power_info_t pinfo[3];
  106. uint16_t start_delay;
  107. uint16_t stop_delay;
  108. }channel_info_t;
  109. typedef struct {
  110. product_info_t prod;
  111. }overall_info_t;
  112. typedef struct {
  113. uint8_t cnt;
  114. product_info_t prod;
  115. channel_info_t ch[CH_MAX];
  116. }slave_info_t;
  117. typedef struct {
  118. uint8_t cmd;
  119. uint8_t obj;
  120. uint8_t chId;
  121. char time_s[24]; //start time
  122. char time_e[24]; //end time
  123. }cmd_data_t;
  124. typedef struct {
  125. uint8_t tp;
  126. uint16_t pid;
  127. uint16_t dlen;
  128. uint8_t *data;
  129. }file_data_t;
  130. typedef struct {
  131. int8_t type;
  132. uint8_t data[0];
  133. }mb_pkt_t;
  134. typedef struct {
  135. uint8_t addr;
  136. uint8_t func;
  137. uint16_t reg;
  138. uint16_t regcnt;
  139. uint8_t dlen;
  140. uint8_t *data;
  141. }mb_hdr_t;
  142. #pragma pack ()
  143. ////////slave define////////////////////
  144. typedef struct mmap_modbus{
  145. int offset;
  146. void *addr; //libmodbus source addr
  147. }mmap_modbus_t;
  148. //////////////////////////////////////
  149. extern int cur_dev_addr;
  150. int cascade_init(void);
  151. int cascade_reinit(void);
  152. int cascade_request(cmd_data_t *cmd);
  153. int cascade_get_all(_OverAllPwrAckInfo *all);
  154. int cascade_get_ch(_OverChnPwrAckInfo *ch);
  155. int cascade_get_dlist(dev_list_t *dl);
  156. int cascade_free_dlist(dev_list_t *dl);
  157. int cascade_set_modbus(ModbusInfo_t *info);
  158. int cascade_lock(void);
  159. int cascade_unlock(void);
  160. int cascade_slave_init(void);
  161. modbus_mapping_t *cascade_slave_map();
  162. void cascade_slave_read(uint32_t addr,uint32_t lenth);
  163. void cascade_slave_write(uint32_t addr, uint16_t val);
  164. #endif