|
|
/****************************************************************************
|
|
|
** 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通信方式
|
|
|
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
|
|
|
// 监测单元定义
|
|
|
#define HT_UNIT_VOLTAGE 0x0001 // 母线电压单元
|
|
|
#define HT_UNIT_CAPACITY 0x0002 // 容性监测单元
|
|
|
#define HT_UNIT_ARRESTER 0x0003 // 避雷器监测单元
|
|
|
#define HT_UNIT_ICGE 0x0004 // 变压器铁芯监测单元
|
|
|
#define HT_UNIT_TEMP_HUMI 0x000A // 环境温湿度监测单元
|
|
|
#define HT_UNIT_SLV 0x000F // 声级振动监测单元
|
|
|
|
|
|
// 监测状态定义
|
|
|
#define HT_STAT_NORNAL 0x0000 // 正常
|
|
|
#define HT_STAT_NET_EXCEPTION 0x0001 // 通信异常
|
|
|
#define HT_STAT_SELF_CHECK 0x0002 // 自检异常
|
|
|
#define HT_STAT_SIGNAL 0x0004 // 信号异常
|
|
|
#define HT_STAT_POWER 0x0008 // 供电异常
|
|
|
|
|
|
// 告警分了定义
|
|
|
#define WARN_HIGT_BIT0_100HZ ((1<<16) & 0xff) // Bit0 = 1 原边加速度100HZ分量告警
|
|
|
//Bit1 = 1 原边加速度200HZ分量告警
|
|
|
//Bit2 = 1 原边加速度300HZ分量告警
|
|
|
//Bit3 = 1 原边加速度400HZ分量告警
|
|
|
//Bit4 = 1 原边加速度500HZ分量告警
|
|
|
//Bit5 = 1 原边加速度600HZ分量告警
|
|
|
//Bit6 = 1 原边加速度700HZ分量告警
|
|
|
//Bit7 = 1 原边加速度800HZ分量告警
|
|
|
//Bit8 = 1 原边加速度900HZ分量告警
|
|
|
//Bit9 = 1 原边加速度1000HZ分量告警
|
|
|
//Bit10 = 1 副边加速度100HZ分量告警
|
|
|
//Bit11 = 1 副边加速度200HZ分量告警
|
|
|
//Bit12 = 1 副边加速度300HZ分量告警
|
|
|
//Bit13 = 1 副边加速度400HZ分量告警
|
|
|
//Bit14 = 1 副边加速度500HZ分量告警
|
|
|
//Bit15 = 1 副边加速度600HZ分量告警
|
|
|
|
|
|
|
|
|
// 预留字节
|
|
|
struct RBS {
|
|
|
unsigned char rs1 : 1, // 1-通信异常
|
|
|
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
|
|
|
};
|
|
|
|
|
|
// 监测状态位
|
|
|
struct BST {
|
|
|
unsigned char cex : 1, // 1-通信异常
|
|
|
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
|
|
|
};
|
|
|
|
|
|
//监测告警位
|
|
|
struct BWL {
|
|
|
unsigned char p100 : 1, // 1-通信异常
|
|
|
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
|
|
|
};
|
|
|
//监测告警位
|
|
|
struct BWM {
|
|
|
unsigned char p900 : 1, // 1-通信异常
|
|
|
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
|
|
|
};
|
|
|
//监测告警位
|
|
|
struct BWH {
|
|
|
unsigned char s700 : 1, // 1-通信异常
|
|
|
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; // 监测单元状态
|
|
|
struct RBS brs; // reserve
|
|
|
struct BWL bwl; // 告警分量定义
|
|
|
struct BWM bwm; // 告警分量定义
|
|
|
struct BWH bwh; // 告警分量定义
|
|
|
unsigned char rsv; // reserve
|
|
|
}ST_BIT_MAP;
|
|
|
|
|
|
//负荷计算:
|
|
|
//发电状态下:P1 = 电压(V)x电流(A)x发电持续时间(秒)
|
|
|
//抽水状态下:P2 = 电压(V)x电流(A)x发电持续时间(秒)
|
|
|
//空闲状态下:P3 = 电压(V)x电流(A)x发电持续时间(秒)
|
|
|
//P = ((P1+P2+P3)/(主变额定容量(VA)x1000*1000*24*3600))*100%
|
|
|
//主变额定容量(MVA)x1000 * 1000: 是单位转为VA.
|
|
|
//24*3600 : 一天的秒数。
|
|
|
|
|
|
|
|
|
#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 */
|
|
|
|