⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 module.c

📁 Keil平台
💻 C
📖 第 1 页 / 共 5 页
字号:
/*
* 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 + -