📄 curdata.c
字号:
/****************************************Copyright (c)**************************************************
** 江苏广一科技有限公司
** 研 发 部
** 浙江配变
**
**
**
**--------------文件信息--------------------------------------------------------------------------------
**文 件 名: curdata.c
**创 建 人:
**最后修改日期: 2007年10月02日
**描 述:
**
**--------------历史版本信息----------------------------------------------------------------------------
** 创建人:
** 版 本:
** 日 期:
** 描 述:
**
**--------------当前版本修订------------------------------------------------------------------------------
** 修改人:
** 日 期:
** 描 述:
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#define CURDAT_GLOBALS
#include "curdata.h"
/***********实时数据向量表*************/
const uint8 CUR_DATA_TAB[] = {
0x90, 0x1F, 20, // (当前)正向有功电能数据块
0x90, 0x10, 4,
0x90, 0x11, 4,
0x90, 0x12, 4,
0x90, 0x13, 4,
0x90, 0x14, 4,
0x90, 0x2F, 20, // (当前)正向无功电能数据块
0x90, 0x20, 4,
0x90, 0x21, 4,
0x90, 0x22, 4,
0x90, 0x23, 4,
0x90, 0x24, 4,
0x90, 0x3F, 12, // (当前)三相正向有功电量数据块
0x90, 0x31, 4,
0x90, 0x32, 4,
0x90, 0x33, 4,
0x90, 0x4F, 12, // (当前)三相反向有功电量数据块
0x90, 0x41, 4,
0x90, 0x42, 4,
0x90, 0x43, 4,
0x91, 0x1F, 20, // (当前)正向无功电能数据块
0x91, 0x10, 4,
0x91, 0x11, 4,
0x91, 0x12, 4,
0x91, 0x13, 4,
0x91, 0x14, 4,
0x91, 0x2F, 20, // (当前)反向无功电能数据块
0x91, 0x20, 4,
0x91, 0x21, 4,
0x91, 0x22, 4,
0x91, 0x23, 4,
0x91, 0x24, 4,
0x91, 0x3F, 20, // (当前)一象限无功电能数据块
0x91, 0x30, 4,
0x91, 0x31, 4,
0x91, 0x32, 4,
0x91, 0x33, 4,
0x91, 0x34, 4,
0x91, 0x4F, 20, // (当前)四象限无功电能数据块
0x91, 0x40, 4,
0x91, 0x41, 4,
0x91, 0x42, 4,
0x91, 0x43, 4,
0x91, 0x44, 4,
0x91, 0x5F, 20, // (当前)二象限无功电能数据块
0x91, 0x50, 4,
0x91, 0x51, 4,
0x91, 0x52, 4,
0x91, 0x53, 4,
0x91, 0x54, 4,
0x91, 0x6F, 20, // (当前)三象限无功电能数据块
0x91, 0x60, 4,
0x91, 0x61, 4,
0x91, 0x62, 4,
0x91, 0x63, 4,
0x91, 0x64, 4,
0x91, 0x7F, 12, // (当前)三相正向无功电量数据块
0x91, 0x71, 4,
0x91, 0x72, 4,
0x91, 0x73, 4,
0x91, 0x8F, 12, // (当前)三相反向无功电量数据块
0x91, 0x81, 4,
0x91, 0x82, 4,
0x91, 0x83, 4,
0xA0, 0x1F, 15, // (当前)正向有功最大需量数据块
0xA0, 0x10, 3,
0xA0, 0x11, 3,
0xA0, 0x12, 3,
0xA0, 0x13, 3,
0xA0, 0x14, 3,
0xA0, 0x2F, 15, // (当前)反向有功最大需量数据块
0xA0, 0x20, 3,
0xA0, 0x21, 3,
0xA0, 0x22, 3,
0xA0, 0x23, 3,
0xA0, 0x24, 3,
0xA4, 0x1F, 15, // (上月)正向有功最大需量数据块
0xA4, 0x10, 3,
0xA4, 0x11, 3,
0xA4, 0x12, 3,
0xA4, 0x13, 3,
0xA4, 0x14, 3,
0xA4, 0x2F, 15, // (上月)反向有功最大需量数据块
0xA4, 0x20, 3,
0xA4, 0x21, 3,
0xA4, 0x22, 3,
0xA4, 0x23, 3,
0xA4, 0x24, 3,
0xB0, 0x1F, 20, // (当前)正向有功最大需量发生时间数据块
0xB0, 0x10, 4,
0xB0, 0x11, 4,
0xB0, 0x12, 4,
0xB0, 0x13, 4,
0xB0, 0x14, 4,
0xB0, 0x2F, 20, // (当前)反向有功最大需量发生时间数据块
0xB0, 0x20, 4,
0xB0, 0x21, 4,
0xB0, 0x22, 4,
0xB0, 0x23, 4,
0xB0, 0x24, 4,
0xB4, 0x1F, 20, // (上月)正向有功最大需量发生时间数据块
0xB4, 0x10, 4,
0xB4, 0x11, 4,
0xB4, 0x12, 4,
0xB4, 0x13, 4,
0xB4, 0x14, 4,
0xB4, 0x2F, 20, // (上月)反向有功最大需量发生时间数据块
0xB4, 0x20, 4,
0xB4, 0x21, 4,
0xB4, 0x22, 4,
0xB4, 0x23, 4,
0xB4, 0x24, 4,
0xB2, 0x1F, 12, // 编程记录数据块
0xB2, 0x10, 4,
0xB2, 0x11, 4,
0xB2, 0x12, 2,
0xB2, 0x13, 2,
0xB3, 0x1F, 8, // 断相次数数据块
0xB3, 0x10, 2,
0xB3, 0x11, 2,
0xB3, 0x12, 2,
0xB3, 0x13, 2,
0xB3, 0x2F, 12, // 断相累计时间数据块
0xB3, 0x20, 3,
0xB3, 0x21, 3,
0xB3, 0x22, 3,
0xB3, 0x23, 3,
0xB6, 0x1F, 6, // 电压数据块
0xB6, 0x11, 2,
0xB6, 0x12, 2,
0xB6, 0x13, 2,
0xB6, 0x2F, 6, // 电流数据块
0xB6, 0x21, 2,
0xB6, 0x22, 2,
0xB6, 0x23, 2,
0xB6, 0x3F, 12, // 有功功率数据块
0xB6, 0x30, 3,
0xB6, 0x31, 3,
0xB6, 0x32, 3,
0xB6, 0x33, 3,
0xB6, 0x4F, 8, // 无功功率数据块
0xB6, 0x40, 2,
0xB6, 0x41, 2,
0xB6, 0x42, 2,
0xB6, 0x43, 2,
0xB6, 0x5F, 8, // 功率因数数据块
0xB6, 0x50, 2,
0xB6, 0x51, 2,
0xB6, 0x52, 2,
0xB6, 0x53, 2,
0xB6, 0x6F, 12, // 相角数据块
0xB6, 0x60, 2,
0xB6, 0x61, 2,
0xB6, 0x62, 2,
0xB6, 0x63, 2,
0xB6, 0x64, 2,
0xB6, 0x65, 2,
0xB6, 0x7F, 12, // 正向有功功率数据块
0xB6, 0x70, 3,
0xB6, 0x71, 3,
0xB6, 0x72, 3,
0xB6, 0x73, 3,
0xB6, 0x8F, 12, // 反向有功功率数据块
0xB6, 0x80, 3,
0xB6, 0x81, 3,
0xB6, 0x82, 3,
0xB6, 0x83, 3,
0xB6, 0x9F, 8, // 正向无功功率数据块
0xB6, 0x90, 2,
0xB6, 0x91, 2,
0xB6, 0x92, 2,
0xB6, 0x93, 2,
0xB6, 0xAF, 8, // 反向无功功率数据块
0xB6, 0xA0, 2,
0xB6, 0xA1, 2,
0xB6, 0xA2, 2,
0xB6, 0xA3, 2,
0xB6, 0xBF, 12, // 视在功率数据块
0xB6, 0xB0, 3,
0xB6, 0xB1, 3,
0xB6, 0xB2, 3,
0xB6, 0xB3, 3,
0xC0, 0x10, 3, // 日期及周日
0xC0, 0x11, 3, // 时间
0xC0, 0x30, 3, // 电表常数(有功)
0xC0, 0x31, 3, // 电表常数(无功)
0xC3, 0x3F, 24, // 时段费率数据块
0xC3, 0x31, 3,
0xC3, 0x32, 3,
0xC3, 0x33, 3,
0xC3, 0x34, 3,
0xC3, 0x35, 3,
0xC3, 0x36, 3,
0xC3, 0x37, 3,
0xC3, 0x38, 3,
0x8E, 0x1F, 12, // 电压(一次侧)数据块
0x8E, 0x11, 4,
0x8E, 0x12, 4,
0x8E, 0x13, 4,
0x8E, 0x2F, 12, // 电流(一次侧)数据块
0x8E, 0x21, 4,
0x8E, 0x22, 4,
0x8E, 0x23, 4,
0x8E, 0x3F, 16, // 有功功率(一次侧)数据块
0x8E, 0x30, 4,
0x8E, 0x31, 4,
0x8E, 0x32, 4,
0x8E, 0x33, 4,
0x8E, 0x4F, 16, // 无功功率(一次侧)数据块
0x8E, 0x40, 4,
0x8E, 0x41, 4,
0x8E, 0x42, 4,
0x8E, 0x43, 4,
0x8E, 0x6F, 14, // 平均功率数据块
0x8E, 0x60, 4,
0x8E, 0x61, 4,
0x8E, 0x62, 3,
0x8E, 0x63, 3,
0x8E, 0x70, 2, // 零序电流(二次侧)
0x8E, 0x8F, 48, // 电压极值数据块
0x8E, 0x80, 1,
0x8E, 0x81, 1,
0x8E, 0x82, 1,
0x8E, 0x83, 1,
0x8E, 0x84, 1,
0x8E, 0x85, 1,
0x8E, 0x86, 7,
0x8E, 0x87, 7,
0x8E, 0x88, 7,
0x8E, 0x89, 7,
0x8E, 0x8A, 7,
0x8E, 0x8B, 7,
0x8E, 0x9F, 60, // 功率及电流极值数据块
0x8E, 0x90, 2,
0x8E, 0x91, 8,
0x8E, 0x92, 8,
0x8E, 0x93, 7,
0x8E, 0x94, 7,
0x8E, 0x95, 7,
0x8E, 0x96, 7,
0x8E, 0x97, 7,
0x8E, 0x98, 7,
0x8E, 0xA0, 2, // 测量点状态字
0x8E, 0xBF, 14, // (当日)电流偏差极值数据块
0x8E, 0xB1, 7,
0x8E, 0xB2, 7,
0xC0, 0x20, 1, // 表计电池失压标识 0 非失压 1 失压
0xC1, 0x19, 4, // 有功电能表起始读数
0xC1, 0x1A, 4, // 无功电能表起始读数
0xC6, 0x1F, 6, // 温湿度数据块
0xC6, 0x11, 2,
0xC6, 0x12, 2,
0xC6, 0x13, 2
};
/*********************************************************************************************************
** 函数名称: CurDataIndex()
** 功能描述: 测量点数据索引
**
** 输 入:
** *param 标识码
** *offset 偏移地址指针
**
** 输 出: 字节数
**
** 全局变量:
** 调用模块:
**
** 作 者:
** 日 期: 2007-10-9
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
uint32 CurDataIndex(uint8 *param, uint32 *offset)
{
uint32 i,j;
uint32 len;
len = 0;
*offset = 0;
j = 0;
for (i=0;i<sizeof(CUR_DATA_TAB);i=i+3)
{//*
if (j>3)
{
if ((*(CUR_DATA_TAB+(j-3)+1)&0x0F) != 0x0F) // 如果前一项不是F项
{
*offset += *(CUR_DATA_TAB + (j-3) + 2); // 取前一项的长度相加
}
else // 如果前一项是F项
{
;
}
}
else
{
*offset = 0x00; // 前两项的偏移地址为0
}
if ((*param==*(CUR_DATA_TAB+j)) && // 查找相同标识码
(*(param+1)==*(CUR_DATA_TAB+j+1)))
{
len = *(CUR_DATA_TAB+j+2);
return(len);
}
else
{
j += 3;
continue;
}
}//*
return(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -