|
|
|
|
/****************************************************************************
|
|
|
|
|
** 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 */
|
|
|
|
|
|