📄 module.c
字号:
/*
* Filename : module.c
* Author : Li Dawen
* Copyright (c): Coslight Group .co
* Create Date : 2002.04.27
* Version : 0.1.0
*/
/*
Oooo
( )
) /
(_/
*/
#define MODULE_MODULE
#include "config.h"
/*****************************************************************************/
//#include "INCLUDES.H"
//#include "MODULE.H"
//#include "SAVE.H"
//#include "RESOURCE.H"
//#include "DRIVEX.H"
//#ifdef OS_CMX
// #include "HARD.H"
//#endif
/*****************************************************************************/
/*
数据处理步骤 标有xxmap的箭头是映射处理即format
dimap
harddi -----> dibuf
domap
dobuf -----> harddo
hardac -> acfilterbuf -> acrmsbuf -> acfilterbuf \ admap adcfg
------> adbuf ----->dibuf
harddc -> acfilterbuf -> acavgbuf -> acfilterbuf / adcfg
pidcfg
adbuf + dibuf ------> dabuf -> hardda
almcfg almmap
dibuf ------> almbuf ------> dobuf
*/
/*****************************************************************************/
int AD_Filter_Value[24];
int AD_Derange_Value[24];
//int DC_Filter_Buf[18][MAX_DC_FILTER_BUF_SIZE+1];
//int AC_Filter_Buf[ 6][MAX_AC_FILTER_BUF_SIZE+1];
int DC_Filter_Buf_Count;
int AC_Filter_Buf_Count;
int NewAlarmCount = 0;
int OldAlarmCount = 0;
int NewAlarmFlag = 0;
unsigned int Temp_Buf[128];
ADCFG Ad_Cfg;
int Ad_Alarm_Flag[26];
//int Ad_Alarm_wait[26];
#define ADDR_NEWALM 0x050000
#define ADDR_OLDALM 0x05F000
//ALARM NewAlarmBuf[MAX_NEWALARM+1];
//ALARM OldAlarmBuf[MAX_OLDALARM+1];
//ALARM far *NewAlarmBuf;
//ALARM far *OldAlarmBuf;
unsigned int RMS_Buf[32];
unsigned int Run_DataBuf[16];
unsigned int Run_DataBuf_Count;
char Str_Buf[30];
int Mkbak_Data = 0;
/*****************************************************************************/
void InitModule(void)
{
int i;
/* check eeprom is no format */
// if ( SGetB(0) == 'C')
// {
// LoadModule();
// AlarmLoad();
// }
// else
// {
// ////SPutB(0, 'C');
// DefaultConfig();
// SaveModule();
// }
// Jkmk.mk_cfg[3] = 2; //软件版本
// //init data_temp
// for (i = 0; i < MAX_ALARM_RALAY; i++)
// {
// Jkmk.do_v[i] = 0;
// }
// NewAlarmCount = 0;
// OldAlarmCount = 0;
//
// SetModuleData(MODULE_JKMK|DATA_TEMP, 17, 0, 0); //当前模块号
//// SetModuleData(MODULE_JKMK|DATA_TEMP, 22, 0, 0);
// SetModuleData(MODULE_JKMK|DATA_TEMP, 7, 0, 0); //输入数据
// SetModuleData(MODULE_JKMK|DATA_TEMP, 8, 0, 0); //当前密码
//#ifdef HARD_XK
// SetModuleData(MODULE_JKMK|DATA_DO, 6, 0, 1); //相控开关机 开机
// SetModuleData(MODULE_JKMK|DATA_DO, 7, 0, 1); //相控开关机 开机
//#endif
//// SaveModuleData(MODULE_JKMK|DATA_TEMP, 7, 0);
}
/*****************************************************************************/
void DefaultConfig(void)
{
int i, j;
Jkmk.mk_cfg[0] = 121; //地址
Jkmk.mk_cfg[1] = 1; //串口
Jkmk.mk_cfg[2] = 1; //序号
Jkmk.mk_cfg[3] = 100; //软件版本
Jkmk.mk_cfg[4] = 0; //220V/110V输出电压类型#
/*
if (Jkmk.mk_cfg[4])
{//220V
}
else
{//110
}
*/
Jkmk.mk_cfg[5] = 1; //限流调节方式 无级/分级
Jkmk.mk_cfg[6] = 2400; //浮充电压 #视电压等级赋值
Jkmk.mk_cfg[7] = 2530; //均充电压 #视电压等级赋值
Jkmk.mk_cfg[8] = 0; //否/是
Jkmk.mk_cfg[9] = 0; //浮/浮转均/均/均转浮/放/停/测
Jkmk.mk_cfg[10] = 200; //50~5000
Jkmk.mk_cfg[11] = 1000; //%电池当前容量比
Jkmk.mk_cfg[12] = 0; //是否温度补偿 不补偿/补偿
Jkmk.mk_cfg[13] = 300; //温度补偿
Jkmk.mk_cfg[14] = 25; //中心点
Jkmk.mk_cfg[15] = 1; //平均/1点/2点
Jkmk.mk_cfg[16] = 90; //充电效率
Jkmk.mk_cfg[17] = 500; //放电量程
Jkmk.mk_cfg[18] = 0; //屏体蜂鸣声音 不发声/发声
Jkmk.mk_cfg[19] = 0; //监控蜂鸣声音 不发声/发声
/* 0.1C=10h 0.2C=4.9h 0.3C=3.0h 0.4C=2.0h 0.5C=1.4h
0.6C=1.2h 0.7C=1.1h 0.8C=0.9h 0.9C=0.7h 1.0C=0.5h */
Jkmk.mk_cfg[20] = 100;
Jkmk.mk_cfg[21] = 49;
Jkmk.mk_cfg[22] = 30;
Jkmk.mk_cfg[23] = 20;
Jkmk.mk_cfg[24] = 14;
Jkmk.mk_cfg[25] = 12;
Jkmk.mk_cfg[26] = 11;
Jkmk.mk_cfg[27] = 9;
Jkmk.mk_cfg[28] = 7;
Jkmk.mk_cfg[29] = 5;
Jkmk.mk_cfg[30] = 1; //10m充电限流
Jkmk.mk_cfg[31] = 1; //100m转浮充电流
Jkmk.mk_cfg[32] = 3; //100m转均充电流
Jkmk.mk_cfg[33] = 90; //转浮充容量比
Jkmk.mk_cfg[34] = 60; //转均充容量比
Jkmk.mk_cfg[35] = 220; //测试终止电压
Jkmk.mk_cfg[36] = 20; //测试终止容量
Jkmk.mk_cfg[37] = 0;
Jkmk.mk_cfg[38] = 0;
Jkmk.mk_cfg[39] = 0;
Jkmk.mk_cfg[40] = 280; //输出上限
Jkmk.mk_cfg[41] = 190; //输出下限
Jkmk.mk_cfg[42] = 90; //过上限恢复系数0.9
Jkmk.mk_cfg[43] = 110; //过下限恢复系数1.1
Jkmk.mk_cfg[44] = 0; //接收超时
Jkmk.mk_cfg[45] = 0; //发送等待
Jkmk.mk_cfg[46] = 0; //历史告警数量
Jkmk.mk_cfg[47] = 1; //是否有降压单元
Jkmk.mk_cfg[48] = 108; //电池数量
Jkmk.mk_cfg[49] = MAX_SETUP_COMPORT; //串口数量
Jkmk.mk_cfg[50] = 0; //1/2母线段数
Jkmk.mk_cfg[51] = 3; //充电模块个数
Jkmk.mk_cfg[52] = 0; //充电模块容量5/10/20
Jkmk.mk_cfg[53] = 0; //电导模块数量
Jkmk.mk_cfg[54] = 0; //绝缘模块数量
Jkmk.mk_cfg[55] = 0; //开入模块数量
Jkmk.mk_cfg[56] = 0; //1段馈线开关数量
Jkmk.mk_cfg[57] = 0; //1段开始开关
Jkmk.mk_cfg[58] = 0; //2段馈线开关数量
Jkmk.mk_cfg[59] = 0; //2段开始开关
Jkmk.mk_cfg[60] = 1;
Jkmk.mk_cfg[61] = 1;
for (i = 80; i < 100; i++)
{
Jkmk.mk_cfg[i] = 0;
}
/*
硬件顺序
0~2 1路三相交流电压
3~5 2路三相交流电压
6 2路直流输出电压
7 2段合母电压
8 2段控母电压
9 2组电池电压
10 1段合母电压
11 1段控母电压
12 2组电池电流
13 2路直流输出电流
14 2段母线电流
15 1段母线电流
16 1路直流输出电流
17 1组电池电流
18 1路直流输出电压
19 1组电池电压
20~23 备用1 4 2 3
24 1点温度
25 2点温度
规定顺序
0~2 1路三相交流电压
3~5 2路三相交流电压
6 1路直流输出电压
7 1路直流输出电流
8 2路直流输出电压
9 2路直流输出电流
10 1段合母电压
11 1段控母电压
12 1段母线电流
13 2段合母电压
14 2段控母电压
15 2段母线电流
16 1组电池电流
17 1组电池电压
18 2组电池电压
19 2组电池电流
20 通讯模块电压
21 通讯模块电流
22 备用1
23 备用2
24 温度
25 温度
26 平均温度
27 母线电压 (1段优先)
*/
for (i = 0; i < 6; i++)
{
Jkmk.ai_cfg[i*3+0] = 680;
}
i = 0; /*交流过压欠压*/
Jkmk.ai_cfg[i*3+1] = 456;
Jkmk.ai_cfg[i*3+2] = 323;
i = 1; /*交流缺相*/
Jkmk.ai_cfg[i*3+2] = 300;
i = 6; /*1路直流输出电压*/
Jkmk.ai_cfg[i*3+0] = 3400;
Jkmk.ai_cfg[i*3+1] = 2900;
Jkmk.ai_cfg[i*3+2] = 1950;
i = 7; /*1路直流输出电流*/
Jkmk.ai_cfg[i*3+0] = 600;
Jkmk.ai_cfg[i*3+1] = 600;
Jkmk.ai_cfg[i*3+2] = 000;
i = 8; /*2路直流输出电压*/
Jkmk.ai_cfg[i*3+0] = 3400;
Jkmk.ai_cfg[i*3+1] = 3000;
Jkmk.ai_cfg[i*3+2] = 1800;
i = 9; /*2路直流输出电流*/
Jkmk.ai_cfg[i*3+0] = 600;
Jkmk.ai_cfg[i*3+1] = 600;
Jkmk.ai_cfg[i*3+2] = 000;
i = 10; /*1段合母电压*/
Jkmk.ai_cfg[i*3+0] = 3400;
Jkmk.ai_cfg[i*3+1] = 3000;
Jkmk.ai_cfg[i*3+2] = 1800;
i = 11; /*1段控母电压*/
Jkmk.ai_cfg[i*3+0] = 3400;
Jkmk.ai_cfg[i*3+1] = 3000;
Jkmk.ai_cfg[i*3+2] = 1800;
i = 12; /*1段母线电流*/
Jkmk.ai_cfg[i*3+0] = 600;
Jkmk.ai_cfg[i*3+1] = 600;
Jkmk.ai_cfg[i*3+2] = 000;
i = 13; /*2段合母电压*/
Jkmk.ai_cfg[i*3+0] = 3400;
Jkmk.ai_cfg[i*3+1] = 3000;
Jkmk.ai_cfg[i*3+2] = 1800;
i = 14; /*2段控母电压*/
Jkmk.ai_cfg[i*3+0] = 3400;
Jkmk.ai_cfg[i*3+1] = 3000;
Jkmk.ai_cfg[i*3+2] = 1800;
i = 15; /*2段母线电流*/
Jkmk.ai_cfg[i*3+0] = 600;
Jkmk.ai_cfg[i*3+1] = 600;
Jkmk.ai_cfg[i*3+2] = 000;
i = 16; /*1组电池电压*/
Jkmk.ai_cfg[i*3+0] = 3400;
Jkmk.ai_cfg[i*3+1] = 3000;
Jkmk.ai_cfg[i*3+2] = 1800;
i = 17; /*1组电池电流*/
Jkmk.ai_cfg[i*3+0] = 600;
Jkmk.ai_cfg[i*3+1] = 600;
Jkmk.ai_cfg[i*3+2] = 000;
i = 18; /*2组电池电压*/
Jkmk.ai_cfg[i*3+0] = 3400;
Jkmk.ai_cfg[i*3+1] = 3000;
Jkmk.ai_cfg[i*3+2] = 1800;
i = 19; /*2组电池电流*/
Jkmk.ai_cfg[i*3+0] = 600;
Jkmk.ai_cfg[i*3+1] = 600;
Jkmk.ai_cfg[i*3+2] = 000;
i = 20; /*备用1 通讯模块电压*/
Jkmk.ai_cfg[i*3+0] = 620;
Jkmk.ai_cfg[i*3+1] = 600;
Jkmk.ai_cfg[i*3+2] = 420;
i = 21; /*备用2 通讯模块电流*/
Jkmk.ai_cfg[i*3+0] = 600;
Jkmk.ai_cfg[i*3+1] = 600;
Jkmk.ai_cfg[i*3+2] = 000;
i = 22; /*备用3*/
Jkmk.ai_cfg[i*3+1] = 600;
Jkmk.ai_cfg[i*3+2] = 000;
i = 23; /*备用4*/
Jkmk.ai_cfg[i*3+1] = 600;
Jkmk.ai_cfg[i*3+2] = 000;
i = 24; /*温度1*/
Jkmk.ai_cfg[i*3+1] = 80;
Jkmk.ai_cfg[i*3+2] = 00;
i = 25; /*温度2*/
Jkmk.ai_cfg[i*3+1] = 80;
Jkmk.ai_cfg[i*3+2] = 00;
for (i = 0; i < 40; i++)
{
Jkmk.alm_cfg[i] = 1;
Jkmk.alm_map[i] = 0;
}
Jkmk.ao_cfg[0] = 2400; //输出电压给定 #视电压等级赋值
Jkmk.ao_cfg[1] = 1000; //输出电流比给定 #视电压等级赋值
Jkmk.ao_cfg[2] = 2400; //输出电压给定 #视电压等级赋值
Jkmk.ao_cfg[3] = 1000; //输出电流比给定 #视电压等级赋值
#ifdef HARD_XK
Jkmk.mk_cfg[51] = 0;
#endif
for (i = 0; i < 20; i++)
{
Jkmk.di_cfg[i] = 0;
}
for (i = 0; i < 8; i++)
{
Jkmk.do_cfg[i] = i+1;
}
Jkmk.tm_cfg[0] = 30; //系统延时 秒
Jkmk.tm_cfg[1] = 15; //屏幕保护时间 分
Jkmk.tm_cfg[2] = 1200; //均充周期 小时
Jkmk.tm_cfg[3] = 600; //均充保护时间 分
Jkmk.tm_cfg[4] = 10; //稳流均充时间 分
Jkmk.tm_cfg[5] = 10; //转均充延时 分
Jkmk.tm_cfg[6] = 120; //电池测保护时间 分
Jkmk.tm_cfg[7] = 0; //放电计时 分
Jkmk.ao_v[0] = 2400; //10m输出电压
Jkmk.ao_v[1] = 320; //100m输出限流比
Jkmk.ao_v[2] = 2400; //10m输出电压
Jkmk.ao_v[3] = 320; //100m输出限流比
Jkmk.temp[11] = 0; //当前告警数量
Jkmk.temp[12] = 0; //历史 告警数量
Jkmk.temp[17] = 0; //当前模块号
Jkmk.temp[30] = 100; //允许输出电流
Jkmk.temp[31] = 0; //输出电流补偿量
Jkmk.temp[32] = 0; //温度补偿电压
Jkmk.temp[33] = 30; //1m额定输出电流
Jkmk.temp[34] = 100; //100m充电限流值
Jkmk.temp[35] = 300; //100m转均充电流
Jkmk.temp[36] = 100; //100m转浮充电流
for (i = 0; i < 16; i++)
{
Cdmk[i].mk_cfg[0] = i;
Cdmk[i].mk_cfg[1] = 2;
Cdmk[i].mk_cfg[2] = 1;
Cdmk[i].mk_cfg[3] = 2860; //# #视电压等级赋值
Cdmk[i].mk_cfg[4] = 1960; //# #视电压等级赋值
Cdmk[i].mk_cfg[5] = 65;
}
for (i = 0; i < 5; i++)
{
Ddmk[i].mk_cfg[0] = 112+i;
Ddmk[i].mk_cfg[1] = 3;
Ddmk[i].mk_cfg[2] = 1;
}
for (i = 0; i < 4; i++)
{
Krmk[i].mk_cfg[0] = i+176;
Krmk[i].mk_cfg[1] = 4;
Krmk[i].mk_cfg[2] = 1;
}
//配置串口 9600 n 8 1 1000ms
for (i = 0; i < 4; i++)
{
Commk[i].mk_cfg[0] = 5;//9600
Commk[i].mk_cfg[1] = 0;//none
Commk[i].mk_cfg[2] = 1000;//waittime
Commk[i].mk_cfg[3] = 0;//
Commk[i].mk_cfg[4] = 0;//
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -