You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

159 lines
4.4 KiB
C

1 year ago
/****************************************************************************
** File name : HTModbus.h
** Description : ISO Modbus protoclo api
** Create date : 2019.09.01
** Auther by : Liuyx
** Version info : V1.0.01
** Copyright (C) 2002-2019 xi'an huatek, Inc Co., Ltd
** Update record:
** DATE AUTHER DESC
** -------------------------------------------------------------------------
** 2019.09.01 Liuyx first build
****************************************************************************/
#ifndef __HT_MODBUS_PROTOCOL_H
#define __HT_MODBUS_PROTOCOL_H
#include "HTGlobal.h"
#include "modbus.h"
#pragma pack (push ,1)
#ifdef _WIN32
#pragma comment(lib,"modbus.lib")
#endif
// Modbusͨ<73>ŷ<EFBFBD>ʽ
typedef enum{
HT_MODBUS_MODE_TCP = 1, /* modbus communication mode by tcp */
HT_MODBUS_MODE_RTU = 2, /* modbus communication mode by rtu */
HT_MODBUS_MODE_ASC = 3 /* modbus communication mode by ascii */
}HT_MODBUS_TYPE;
#define HT_MODBUS_RTU
// <20><><EFBFBD>ⵥԪ<E2B5A5><D4AA><EFBFBD><EFBFBD>
#define HT_UNIT_VOLTAGE 0x0001 // ĸ<>ߵ<EFBFBD>ѹ<EFBFBD><D1B9>Ԫ
#define HT_UNIT_CAPACITY 0x0002 // <20><><EFBFBD>Լ<EFBFBD><D4BC>ⵥԪ
#define HT_UNIT_ARRESTER 0x0003 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⵥԪ
#define HT_UNIT_ICGE 0x0004 // <20><>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>о<EFBFBD><D0BE><EFBFBD>ⵥԪ
#define HT_UNIT_TEMP_HUMI 0x000A // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʪ<EFBFBD>ȼ<EFBFBD><C8BC>ⵥԪ
#define HT_UNIT_SLV 0x000F // <20><><EFBFBD><EFBFBD><EFBFBD>񶯼<EFBFBD><F1B6AFBC>ⵥԪ
// <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD>
#define HT_STAT_NORNAL 0x0000 // <20><><EFBFBD><EFBFBD>
#define HT_STAT_NET_EXCEPTION 0x0001 // ͨ<><CDA8><EFBFBD>
#define HT_STAT_SELF_CHECK 0x0002 // <20>Լ<EFBFBD><D4BC>
#define HT_STAT_SIGNAL 0x0004 // <20>ź<EFBFBD><C5BA>
#define HT_STAT_POWER 0x0008 // <20><><EFBFBD><EFBFBD><EFBFBD>
// <20><EFBFBD><E6BEAF><EFBFBD>˶<EFBFBD><CBB6><EFBFBD>
#define WARN_HIGT_BIT0_100HZ ((1<<16) & 0xff) // Bit0 = 1 ԭ<>߼<EFBFBD><DFBC>ٶ<EFBFBD>100HZ<48><5A><EFBFBD><EFBFBD><EFBFBD>
//Bit1 = 1 ԭ<>߼<EFBFBD><DFBC>ٶ<EFBFBD>200HZ<48><5A><EFBFBD><EFBFBD><EFBFBD>
//Bit2 = 1 ԭ<>߼<EFBFBD><DFBC>ٶ<EFBFBD>300HZ<48><5A><EFBFBD><EFBFBD><EFBFBD>
//Bit3 = 1 ԭ<>߼<EFBFBD><DFBC>ٶ<EFBFBD>400HZ<48><5A><EFBFBD><EFBFBD><EFBFBD>
//Bit4 = 1 ԭ<>߼<EFBFBD><DFBC>ٶ<EFBFBD>500HZ<48><5A><EFBFBD><EFBFBD><EFBFBD>
//Bit5 = 1 ԭ<>߼<EFBFBD><DFBC>ٶ<EFBFBD>600HZ<48><5A><EFBFBD><EFBFBD><EFBFBD>
//Bit6 = 1 ԭ<>߼<EFBFBD><DFBC>ٶ<EFBFBD>700HZ<48><5A><EFBFBD><EFBFBD><EFBFBD>
//Bit7 = 1 ԭ<>߼<EFBFBD><DFBC>ٶ<EFBFBD>800HZ<48><5A><EFBFBD><EFBFBD><EFBFBD>
//Bit8 = 1 ԭ<>߼<EFBFBD><DFBC>ٶ<EFBFBD>900HZ<48><5A><EFBFBD><EFBFBD><EFBFBD>
//Bit9 = 1 ԭ<>߼<EFBFBD><DFBC>ٶ<EFBFBD>1000HZ<48><5A><EFBFBD><EFBFBD><EFBFBD>
//Bit10 = 1 <20><><EFBFBD>߼<EFBFBD><DFBC>ٶ<EFBFBD>100HZ<48><5A><EFBFBD><EFBFBD><EFBFBD>
//Bit11 = 1 <20><><EFBFBD>߼<EFBFBD><DFBC>ٶ<EFBFBD>200HZ<48><5A><EFBFBD><EFBFBD><EFBFBD>
//Bit12 = 1 <20><><EFBFBD>߼<EFBFBD><DFBC>ٶ<EFBFBD>300HZ<48><5A><EFBFBD><EFBFBD><EFBFBD>
//Bit13 = 1 <20><><EFBFBD>߼<EFBFBD><DFBC>ٶ<EFBFBD>400HZ<48><5A><EFBFBD><EFBFBD><EFBFBD>
//Bit14 = 1 <20><><EFBFBD>߼<EFBFBD><DFBC>ٶ<EFBFBD>500HZ<48><5A><EFBFBD><EFBFBD><EFBFBD>
//Bit15 = 1 <20><><EFBFBD>߼<EFBFBD><DFBC>ٶ<EFBFBD>600HZ<48><5A><EFBFBD><EFBFBD><EFBFBD>
// Ԥ<><D4A4><EFBFBD>ֽ<EFBFBD>
struct RBS {
unsigned char rs1 : 1, // 1-ͨ<><CDA8><EFBFBD>
rs2 : 1, // self check exception
rs3 : 1, // signal exception
rs4 : 1, // power exception
rs5 : 1, // reserve
rs6 : 1, // reserve
rs7 : 1, // reserve
rs8 : 1; // reserve
};
// <20><><EFBFBD><EFBFBD>״̬λ
struct BST {
unsigned char cex : 1, // 1-ͨ<><CDA8><EFBFBD>
cce : 1, // self check exception
sig : 1, // signal exception
pex : 1, // power exception
bt4 : 1, // reserve
bt5 : 1, // reserve
bt6 : 1, // reserve
bt7 : 1; // reserve
};
//<2F><><EFBFBD><EFBFBD><EFBFBD>澯λ
struct BWL {
unsigned char p100 : 1, // 1-ͨ<><CDA8><EFBFBD>
p200 : 1, // self check exception
p300 : 1, // signal exception
p400 : 1, // power exception
p500 : 1, // reserve
p600 : 1, // reserve
p700 : 1, // reserve
p800 : 1; // reserve
};
//<2F><><EFBFBD><EFBFBD><EFBFBD>澯λ
struct BWM {
unsigned char p900 : 1, // 1-ͨ<><CDA8><EFBFBD>
p1000 : 1, // self check exception
s100 : 1, // signal exception
s200 : 1, // power exception
s300 : 1, // reserve
s400 : 1, // reserve
s500 : 1, // reserve
s600 : 1; // reserve
};
//<2F><><EFBFBD><EFBFBD><EFBFBD>澯λ
struct BWH {
unsigned char s700 : 1, // 1-ͨ<><CDA8><EFBFBD>
s800 : 1, // self check exception
s900 : 1, // signal exception
s1000 : 1, // power exception
s300 : 1, // reserve
s400 : 1, // reserve
s500 : 1, // reserve
s600 : 1; // reserve
};
typedef struct {
struct BST btl; // <20><><EFBFBD>ⵥԪ״̬
struct RBS brs; // reserve
struct BWL bwl; // <20><EFBFBD><E6BEAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct BWM bwm; // <20><EFBFBD><E6BEAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
struct BWH bwh; // <20><EFBFBD><E6BEAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
unsigned char rsv; // reserve
}ST_BIT_MAP;
//<2F><><EFBFBD>ɼ<EFBFBD><C9BC>
//<2F><><EFBFBD><EFBFBD>״̬<D7B4>£<EFBFBD>P1 = <20><>ѹ(V)x<><78><EFBFBD><EFBFBD>(A)x<><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>(<28><>)
//<2F><>ˮ״̬<D7B4>£<EFBFBD>P2 = <20><>ѹ(V)x<><78><EFBFBD><EFBFBD>(A)x<><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>(<28><>)
//<2F><><EFBFBD><EFBFBD>״̬<D7B4>£<EFBFBD>P3 = <20><>ѹ(V)x<><78><EFBFBD><EFBFBD>(A)x<><78><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>(<28><>)
//P = ((P1+P2+P3)/(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB6A8><EFBFBD><EFBFBD>(VA)x1000*1000*24*3600))*100%
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB6A8><EFBFBD><EFBFBD>(MVA)x1000 * 1000: <20>ǵ<EFBFBD>λתΪVA.
//24*3600 : һ<><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
void *thread_modbus_service_proc(void *arg);
#ifdef __cplusplus
}
#endif
#pragma pack (pop)
#endif /* end __HT_MODBUS_PROTOCOL_H */