appl.h 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748
  1. #ifndef APPL_H
  2. #define APPL_H
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <time.h>
  6. #include <pthread.h>
  7. #include <sys/ioctl.h>
  8. #include <linux/if.h>
  9. #include <linux/serial.h>
  10. #include <syslog.h>
  11. #include <signal.h>
  12. #include <unistd.h>
  13. #include "mongoose.h"
  14. #include "can_frame.h"
  15. #include "modbus.h"
  16. #include "mb.h"
  17. #include "MQTTClient.h"
  18. #include "MQTTClientPersistence.h"
  19. #define EXPORT_PATH "/sys/class/gpio/export" // GPIO设备导出设备
  20. #define DIR_OUT "out"
  21. #define DIR_IN "in"
  22. #define PACK_CELL_NBR 52
  23. #define PACK_NBR 5
  24. enum CommState_t
  25. {
  26. ST_COMM_ERR = 0,
  27. ST_COMM_NORM = 1,
  28. };
  29. enum chan485_state_t
  30. {
  31. ST_485_INIT = 0,
  32. ST_485_RUN,
  33. ST_485_ERR,
  34. };
  35. enum chan485_err_t {
  36. ERR_485_NONE = 0,
  37. ERR_485_INIT_FAIL,
  38. };
  39. enum chan485_cmd_t
  40. {
  41. CMD_485_DONE = 0,
  42. CMD_485_RESET = 1,
  43. CMD_485_PCS_START = 2,
  44. CMD_485_PCS_STOP = 3,
  45. CMD_485_PCS_SET_APS = 4,
  46. CMD_485_AC_SET_ONOFF = 5,
  47. CMD_485_AC_SET_MODESET = 6,
  48. CMD_485_AC_SET_CTLTEMPSEL = 7,
  49. CMD_485_AC_SET_COOLTEMP = 8,
  50. CMD_485_AC_SET_COOLGAP = 9,
  51. CMD_485_AC_SET_HEATTEMP = 10,
  52. CMD_485_AC_SET_HEATGAP = 11,
  53. CMD_485_AC_SET_TEMP = 12,
  54. CMD_485_DH_SET_HUMISTART,
  55. CMD_485_DH_SET_HUMISTOP,
  56. CMD_485_FE_PACK_ERUPT,
  57. CMD_485_FE_CABINET_ERUPT,
  58. CMD_485_FE_RESET_ALARM,
  59. };
  60. #define CHAN485_NBR 8
  61. struct chan485_t {
  62. pthread_mutex_t mutex;
  63. char szinfo[128];
  64. int state;
  65. char szstate[32];
  66. int err;
  67. char szerr[64];
  68. int Cmd;
  69. int CmdParam;
  70. int baud;
  71. char szdev[32];
  72. char parity;
  73. int64_t reqcnt;
  74. int64_t failcnt;
  75. int64_t loopcnt;
  76. int64_t looptime;
  77. };
  78. enum chancan_state_t
  79. {
  80. ST_CAN_INIT = 1,
  81. ST_CHANCAN_RUN,
  82. ST_CHANCAN_ERR,
  83. };
  84. enum chancan_err_t {
  85. ERR_CAN_NONE = 0,
  86. ERR_CAN_INIT_FAIL,
  87. };
  88. enum chancan_cmd_t
  89. {
  90. CMD_CHANCAN_DONE = 0,
  91. CMD_CHANCAN_RESET = 1,
  92. };
  93. enum dido_state_t
  94. {
  95. ST_DIDO_INIT = 1,
  96. ST_DIDO_RUN,
  97. ST_DIDO_ERR,
  98. };
  99. enum dido_led_mode_t {
  100. LEDMODE_OFF = 0,
  101. LEDMODE_WHITE,
  102. LEDMODE_RED,
  103. LEDMODE_GREEN,
  104. LEDMODE_BLUE,
  105. };
  106. enum dido_errcode_t {
  107. ERR_DIDO_NONE = 0,
  108. ERR_DIDO_INIT_FAIL,
  109. ERR_DIDO_READ_FAIL,
  110. ERR_DIDO_WRITE_FAIL,
  111. };
  112. enum dido_cmd_t {
  113. CMD_DIDO_DONE = 0,
  114. CMD_DIDO_SET_LEDMOD,
  115. CMD_DIDO_FE_CONFIRM,
  116. };
  117. struct Dido_t {
  118. int State;
  119. char szState[32];
  120. int ErrCode;
  121. char szErrCode[128];
  122. int Cmd;
  123. int CmdParam;
  124. int WaterDec1;
  125. char szWaterDec1[32];
  126. int WaterDec2;
  127. char szWaterDec2[32];
  128. int EmgStop;
  129. char szEmgStop[32];
  130. int FrontDoor;
  131. char szFrontDoor[32];
  132. int BackDoor;
  133. char szBackDoor[32];
  134. int LedMode;
  135. char szLedMode[32];
  136. int64_t LastUpdate;
  137. char szLastUpdate[32];
  138. int FeEruptFb;
  139. char szFeEruptFb[64];
  140. };
  141. #define CHANCAN_NBR 3
  142. struct chancan_t {
  143. int State;
  144. char szState[32];
  145. int Err;
  146. char szErr[128];
  147. int Cmd;
  148. int sock;
  149. char szdev[32];
  150. int64_t RdCnt;
  151. int64_t RdFailcnt;
  152. int64_t WrCnt;
  153. int64_t WrFailcnt;
  154. int64_t Loopcnt;
  155. int64_t LoopTime;
  156. char szinfo[128];
  157. pthread_mutex_t mutex;
  158. };
  159. struct Dtsd1352_t {
  160. char szinfo[128];
  161. int Adr;
  162. double com_active_e;
  163. double com_active_p;
  164. double pos_active_e;
  165. double pos_active_dem;
  166. double neg_active_e;
  167. double pwr_factor;
  168. int PT;
  169. int CT;
  170. double ua;
  171. double ub;
  172. double uc;
  173. double ia;
  174. double ib;
  175. double ic;
  176. double freq;
  177. int64_t LastUpdate;
  178. char szLastUpdate[32];
  179. int CommState;
  180. char szCommState[32];
  181. int64_t CommFailTotalCnt;
  182. };
  183. #define CHAN_MQTT_NBR 4
  184. struct chanmqtt_t {
  185. char szs_url[128];
  186. // 0 : Control
  187. // 1 : CtnMeter
  188. // 2 : PvMeter
  189. // 3 : TransMeter
  190. // 4 : GateMeter
  191. char szs_sub_topic[16][128];
  192. char szs_pub_topic[128];
  193. char szusrname[128];
  194. char szpasswd[128];
  195. char szclientid[128];
  196. int s_qos; // MQTT QoS
  197. struct mg_connection *s_conn; // Client connection
  198. MQTTClient s_paho_client;
  199. char szState[64];
  200. int bConnected;
  201. int64_t LastFastUpload;
  202. int64_t LastMediumUpload;
  203. int64_t LastSlowUpload;
  204. int Cmd;
  205. int CmdParam;
  206. int MaxRecvIntv;
  207. int AvgRecvIntv;
  208. int64_t TotalRecvIntv;
  209. int64_t TotalRecvCnt;
  210. int64_t TotalSendCnt;
  211. int64_t LastRecv;
  212. int64_t TotalReconnCnt;
  213. };
  214. enum MqttCmd_t {
  215. CMD_MQTT_DONE = 0,
  216. CMD_MQTT_REGISTER = 1,
  217. };
  218. struct Enjoy100kW_t {
  219. int Adr;
  220. double Uab;
  221. double Ubc;
  222. double Uca;
  223. double Ia;
  224. double Ib;
  225. double Ic;
  226. double Ap;
  227. double Rap;
  228. double BatV;
  229. double BatC;
  230. double Tigbt;
  231. double Tenv;
  232. double Tind;
  233. int WorkState;
  234. char szWorkState[16];
  235. int ErrState;
  236. char szErrState[16];
  237. double Aps;
  238. unsigned short HwFault1;
  239. char szHwFault1[512];
  240. unsigned short HwFault2;
  241. char szHwFault2[512];
  242. unsigned short GridFault;
  243. char szGridFault[512];
  244. unsigned short BusFault;
  245. char szBusFault[512];
  246. unsigned short AcCapFault;
  247. char szAcCapFault[512];
  248. unsigned short SysFault;
  249. char szSysFault[512];
  250. unsigned short OnOffFault;
  251. char szOnOffFault[512];
  252. unsigned short OtherFault;
  253. char szOtherFault[512];
  254. double TotalBusVolt;
  255. int64_t LastUpdate;
  256. char szLastUpdate[32];
  257. int CommState;
  258. char szCommState[16];
  259. int64_t CommFailTotalCnt;
  260. };
  261. struct GaoteBms_t {
  262. int Adr;
  263. double BatV;
  264. double BatI;
  265. double Soc;
  266. double Soh;
  267. double PosRes;
  268. double NegRes;
  269. double BatState;
  270. char szBatState[64];
  271. ushort DI;
  272. int HvState;
  273. char szHvState[32];
  274. double MaxCellT;
  275. double MinCellT;
  276. double AvgCellT;
  277. double MaxCellV;
  278. double MinCellV;
  279. double AvgCellV;
  280. double CellVDiff;
  281. double CellTDiff;
  282. int MaxCellTIdx;
  283. int MinCellTIdx;
  284. int MaxCellTModIdx;
  285. int MinCellTModIdx;
  286. int MaxCellVIdx;
  287. int MinCellVIdx;
  288. int MaxCellVModIdx;
  289. int MinCellVModIdx;
  290. double MaxChgCurr;
  291. double MaxDhgCurr;
  292. int bChgNotAllowed;
  293. int bDhgNotAllowed;
  294. int bTotalFatalErr;
  295. int bWarning;
  296. int bTotalOv; // 组端过压
  297. int bTotalUv; // 组端欠压
  298. int bTotalDhgOc;
  299. int bTotalChgOc;
  300. int bTotalResWarn; // 组端绝缘
  301. int bCellOt;
  302. int bCellUt;
  303. int bCellOv;
  304. int bCellUv;
  305. int bCellVDiffErr;
  306. int bCellTDiffErr;
  307. int bSocLowErr;
  308. int bPowerPackOtErr;
  309. int bPackOv;
  310. int bPackUv;
  311. int bDI1Err;
  312. int bDI2Err;
  313. int bDI3Err;
  314. int bDI4Err;
  315. int bDI5Err;
  316. int bDI6Err;
  317. int bDI7Err;
  318. int bDI8Err;
  319. int bMasterSlaveCommErr; // 主从内网通讯失联
  320. int bCellVoltDacErr; // 单体电压采集故障
  321. int bCellTempDacErr; // 单体温度采集故障
  322. int bJumpErr; // 跳机故障
  323. int bBatLimErr; // 电池极限故障
  324. double CellVolt[8 + 1][52 + 1];
  325. double CellTemp[8 + 1][51 + 1];
  326. char szErrMsg[512];
  327. int64_t LastUpdate;
  328. char szLastUpdate[32];
  329. int CommState;
  330. char szCommState[16];
  331. int64_t CommFailTotalCnt;
  332. };
  333. enum AcCmd_t {
  334. AC_CMD_ONOFF = 0,
  335. AC_CMD_MODESET = 1,
  336. AC_CMD_CTLTEMPSEL = 2,
  337. AC_CMD_SET_COOLTEMP = 3,
  338. AC_CMD_SET_COOLGAP = 4,
  339. AC_CMD_SET_HEATTEMP = 5,
  340. AC_CMD_SET_HEATGAP = 6,
  341. AC_CMD_SET_TEMP = 7,
  342. AC_CMD_SET_CTLMOD = 8,
  343. AC_CMD_SET_HEATTEMPSET = 9,
  344. AC_CMD_SET_COOLTEMPSET = 10,
  345. };
  346. enum EnvCmd_t {
  347. ENV_CMD_SET_DH_HUMISTART = 0,
  348. ENV_CMD_SET_DH_HUMISTOP = 1,
  349. };
  350. enum FeCmd_t {
  351. FE_CMD_PACK_ERUPT = 0,
  352. FE_CMD_CABINET_ERUPT = 1,
  353. FE_CMD_ERUPT_CONFIRM = 2,
  354. FE_CMD_RESET_ALARM = 3,
  355. FE_CMD_LOCK = 4,
  356. };
  357. enum PcsCmd_t {
  358. PCS_CMD_START = 0,
  359. PCS_CMD_STOP = 1,
  360. PCS_CMD_SET_APS = 2,
  361. };
  362. enum AcCtlMode_t {
  363. AC_CTLMOD_EMS = 0,
  364. AC_CTLMOD_NON_EMS = 1,
  365. };
  366. struct Envicool5kW_t {
  367. int Step;
  368. int64_t LastUpdate1;
  369. char szLastUpdate1[32];
  370. int SetTemp; // Manual Set
  371. int SetMode; // Manual Set
  372. int SetHeatCtlGap;
  373. int WorkMode;
  374. char szWorkMode[32];
  375. int OutWaterTemp;
  376. int InWaterTemp;
  377. double OutWaterPre;
  378. double InWaterPre;
  379. int EnvTemp;
  380. int ErrCode;
  381. int ErrLevel;
  382. int64_t LastUpdate2;
  383. char szLastUpdate2[32];
  384. int CompState;
  385. char szCompState[16];
  386. int CompHeatStripState;
  387. int ElecHeatState;
  388. char szElecHeatState[16];
  389. int PumpState;
  390. char szPumpState[16];
  391. int Fan1State;
  392. char szFan1State[64];
  393. int Fan2State;
  394. char szFan2State[64];
  395. int Fan3State;
  396. char szFan3State[64];
  397. int CompRpm;
  398. int PumpRpm;
  399. char szErrMsg1[512]; // 0x18068040
  400. char szErrMsg2[2048]; // 0x18078040
  401. char szErrMsg3[1024]; // 0x18088040
  402. int64_t MaxUpdate1Intv;
  403. int64_t MaxUpdate2Intv;
  404. int CommState;
  405. char szCommState[16];
  406. int CtlMode;
  407. char szCtlMode[32];
  408. };
  409. struct Adl200_t {
  410. int Adr;
  411. double Volt;
  412. double Curr;
  413. double Ap;
  414. double Rap;
  415. double Pf;
  416. double Gf;
  417. double PosAe;
  418. double NegAe;
  419. int64_t LastUpdate;
  420. char szLastUpdate[32];
  421. int CommState;
  422. char szCommState[32];
  423. int64_t CommFailTotalCnt;
  424. };
  425. // 及安盾 QRR0.15G/S-PFK热气溶胶灭火装置
  426. struct FireEngine_t {
  427. int EruptFb;
  428. char szEruptFb[64];
  429. int64_t LastUpdate;
  430. char szLastUpdate[32];
  431. int CommState;
  432. char szCommState[32];
  433. int64_t CommFailTotalCnt;
  434. };
  435. struct FireAlarm_t {
  436. int T1;
  437. int T2;
  438. int Co;
  439. int Voc; // mV
  440. int SmokeFlagVal;
  441. int LevelVal;
  442. int ErrCodeVal;
  443. char szSmokeFlag[64];
  444. char szLevel[64];
  445. char szErrCode[64];
  446. int64_t LastUpdate;
  447. int CommState;
  448. char szCommState[32];
  449. };
  450. struct Dehumi_t {
  451. int64_t LastUpdate;
  452. char szLastUpdate[32];
  453. int Adr;
  454. double Temp;
  455. double Humi;
  456. double HumiStart; // 湿度启动值
  457. double HumiStop; // 湿度停止值
  458. double HeatStart; // 加热启动值
  459. int HeatState; // 加热状态
  460. char szHeatState[128];
  461. int WorkState; // 除湿机工作状态
  462. char szWorkState[256];
  463. int ManOrAuto; // 除湿手自动切换 00 自动,01 手动
  464. char szManOrAuto[128];
  465. int ManHumi;
  466. int ManHeat;
  467. int CommState;
  468. char szCommState[32];
  469. int64_t CommFailTotalCnt;
  470. };
  471. struct Co_t {
  472. int64_t LastUpdate;
  473. char szLastUpdate[32];
  474. int Adr;
  475. unsigned short Density;
  476. unsigned char Flag;
  477. char szFlag[16];
  478. int CommState;
  479. char szCommState[32];
  480. int64_t CommFailTotalCnt;
  481. };
  482. // !!! 注意,不要插入
  483. struct Settings_t {
  484. long long chksum;
  485. char szSN[128];
  486. double ChgCellV;
  487. double DhgCellV;
  488. short pcurv[96];
  489. int ChgGateLim;
  490. int ChgTransLim;
  491. int DhgGateLim;
  492. int DhgTransLim;
  493. int bErr;
  494. char szState[32];
  495. char szCloudUserName[128];
  496. char szCloudPasswd[128];
  497. char szCloudUrl[128];
  498. char szClientId[128];
  499. int DataKeepDay;
  500. int UploadHighSpeed; // ms
  501. int UploadMediumSpeed; // ms
  502. int UploadSlowSpeed; // ms
  503. int CoolTemp;
  504. int CoolGap;
  505. int HeatTemp;
  506. int HeatGap;
  507. int CoolTempSet; // 空调制冷时的温度设定,注意,与制冷温度的区别(制冷温度:高于该温度时开启制冷)
  508. int HeatTempSet; // 空调加热时的温度设定,注意,与加热温度的区别(加热温度:低于该温度时开启加热)
  509. int GateCoupleNbr;
  510. int TransCoupleNbr;
  511. char szReserved1[128];
  512. char szReserved2[128];
  513. int TransId; // 本储能柜所在变压器编号
  514. int CtnMeterId; // 计量该变压器下所有储能柜的电量
  515. int CtnMeterNbr; // 储能表数量
  516. };
  517. union UnSettings_t {
  518. struct Settings_t s;
  519. char buf[1024 * 64];
  520. };
  521. enum CtlWorkMode_t {
  522. CTL_WORKMODE_SLAVE = 0,
  523. CTL_WORKMODE_PCURV = 1,
  524. };
  525. struct Ctl_t {
  526. int State;
  527. int Step;
  528. int Cnt;
  529. char szState[64];
  530. int WorkMode;
  531. char szWorkMode[128];
  532. int Err;
  533. char szErr[256];
  534. int Cmd;
  535. int CmdPara;
  536. int Ap; // 本储能柜功率
  537. int GateAp;
  538. int GateLoadAp;
  539. int GateEsAp;
  540. int TransAp; // 本储能柜所在变压器功率
  541. int TransLoadAp;
  542. int TransEsAp;
  543. int bChgAble;
  544. int bDhgAble;
  545. int64_t LastTune;
  546. };
  547. enum CtlState_t {
  548. CTL_ST_LAUNCH = 10,
  549. CTL_ST_STDBY = 12, // 监控
  550. CTL_ST_STOP = 17,
  551. CTL_ST_RUN = 8,
  552. CTL_ST_ERR = 16,
  553. };
  554. enum CtlErr_t {
  555. CTL_ERR_NONE = 0,
  556. CTL_ERR_LAUNCH_COMMERR_DETECTED,
  557. CTL_ERR_LAUNCH_CFGERR,
  558. CTL_ERR_STDBY_COMMERR_DETECTED,
  559. CTL_ERR_STDBY_WAIT_PCS_STOP_TIMEOUT,
  560. CTL_ERR_STDBY_WAIT_PCS_APS0_TIMEOUT,
  561. CTL_ERR_STOP_COMMERR_DETECTED,
  562. CTL_ERR_STOP_PCS_NOT_STOP_DETECTED,
  563. CTL_ERR_STOP_WAIT_PCS_START_TIMEOUT,
  564. CTL_ERR_RUN_COMMERR_DETECTED,
  565. CTL_ERR_RUN_PCS_NOT_START_DETECTED,
  566. CTL_ERR_RUN_WAIT_PCS_STOP_TIMEOUT,
  567. CTL_ERR_RUN_WAIT_PCS_APS0_TIMEOUT,
  568. CTL_ERR_ERR_COMMERR_DETECTED,
  569. };
  570. enum CtlCmd_t {
  571. CTL_CMD_DONE = 0,
  572. CTL_CMD_STDBY = 1,
  573. CTL_CMD_STOP = 2,
  574. CTL_CMD_RUN = 3,
  575. CTL_CMD_SET_APS = 4,
  576. CTL_CMD_SET_WORKMODE = 5,
  577. };
  578. enum SettingsCmd_t {
  579. SETTINGS_CMD_SET_CHG_CELLV = 0,
  580. SETTINGS_CMD_SET_DHG_CELLV = 1,
  581. SETTINGS_CMD_SET_PCURV = 2,
  582. SETTINGS_CMD_SET_CHGGATELIM = 3,
  583. SETTINGS_CMD_SET_CHGTRANSLIM = 4,
  584. SETTINGS_CMD_SET_DHGGATELIM = 5,
  585. SETTINGS_CMD_SET_DHGTRANSLIM = 6,
  586. SETTINGS_CMD_SET_SN = 100,
  587. SETTINGS_CMD_SET_CLOUD_USERNAME = 101,
  588. SETTINGS_CMD_SET_CLOUD_PASSWD = 102,
  589. SETTINGS_CMD_SET_CLOUD_URL = 103,
  590. SETTINGS_CMD_REGISTER = 104,
  591. SETTINGS_CMD_SET_CLOUD_CLIENTID = 105,
  592. SETTINGS_CMD_SET_DATAKEEPDAY = 200,
  593. SETTINGS_CMD_SET_UPLOADHIHGSPEED = 201,
  594. SETTINGS_CMD_SET_UPLOADMEDIUMSPEED = 202,
  595. SETTINGS_CMD_SET_UPLOADSLOWSPEED = 203,
  596. SETTINGS_CMD_SET_CTNMETER_NBR = 300,
  597. SETTINGS_CMD_SET_TRANS_ID = 301,
  598. SETTINGS_CMD_SET_GATE_COUPLE_NBR = 302,
  599. SETTINGS_CMD_SET_TRANS_COUPLE_NBR = 303,
  600. SETTINGS_CMD_SET_CTNMETER_ID = 304,
  601. SETTINGS_CMD_TEST = 1000,
  602. };
  603. struct Snap_t {
  604. int enable;
  605. int timer;
  606. int intv;
  607. int bStart;
  608. int bErr;
  609. char szState[32];
  610. char szcurrDatePath[128];
  611. int datechk_timer;
  612. FILE *fpcs;
  613. FILE *fbms;
  614. FILE *fpack[10];
  615. FILE *ffa;
  616. FILE *fac;
  617. FILE *fctl;
  618. FILE *fmisc;
  619. int64_t LastSnap;
  620. };
  621. #define ERRCODE_REG_NBR 8
  622. #define ERRCODE_NBR (ERRCODE_REG_NBR * 16)
  623. #define FIREALARM_NBR 8
  624. struct appl_t {
  625. struct chan485_t chan485[CHAN485_NBR + 1];
  626. struct chancan_t chancan[CHANCAN_NBR + 1];
  627. struct chanmqtt_t chanmqtt[CHAN_MQTT_NBR + 1];
  628. struct Enjoy100kW_t Enjoy100kW;
  629. struct GaoteBms_t GaoteBms;
  630. struct Envicool5kW_t Envicool5kW;
  631. struct Adl200_t Adl200;
  632. struct FireAlarm_t Fa[FIREALARM_NBR + 1];
  633. struct Dehumi_t Dehumi;
  634. struct Co_t Co;
  635. struct Dido_t Dido;
  636. struct Ctl_t Ctl;
  637. union UnSettings_t Set;
  638. struct Dtsd1352_t GateMeter;
  639. struct Dtsd1352_t TransMeter;
  640. int CtnMeterCommState;
  641. char szCtnMeterCommState[64];
  642. struct Dtsd1352_t CtnMeter[512];
  643. struct Snap_t Snap;
  644. };
  645. extern char *VERSION;
  646. extern char *CFG_FN;
  647. extern struct appl_t APPL;
  648. extern void appl_chan485_lock(int idx);
  649. extern void appl_chan485_unlock(int idx);
  650. extern void appl_pcs_set_start(void);
  651. extern void appl_pcs_set_stop(void);
  652. extern void appl_pcs_set_aps(int aps);
  653. extern void appl_ac_set_ctlmod(int m);
  654. extern void appl_dido_set_fe_confirm(int en);
  655. extern char *appl_get_datetime_long(void);
  656. #endif /* APPL_H */