📄 module.c
字号:
case DATA_TEMP: value = Jkmk.temp[index]; break;
case DATA_MKCFG: value = Jkmk.mk_cfg[index]; break;
case DATA_AICFG: value = Jkmk.ai_cfg[index]; break;
case DATA_AOCFG: value = Jkmk.ao_cfg[index]; break;
case DATA_ALMCFG: value = Jkmk.alm_cfg[index]; break;
case DATA_TMCFG: value = Jkmk.tm_cfg[index]; break;
case DATA_DICFG: value = Jkmk.di_cfg[index]; break;
case DATA_DOCFG: value = Jkmk.do_cfg[index]; break;
case DATA_ALMMAP: value = Jkmk.alm_map[index];break;
case DATA_TM: value = Jkmk.tm_v[index]; break;
default: break;
}
break;
case MODULE_CDMK:
switch (type & MASK_DATA_TYPE)
{
case DATA_MKCFG: value = Cdmk[module].mk_cfg[index]; break;
case DATA_AI: value = Cdmk[module].ai_v[index]; break;
case DATA_AO: value = Cdmk[module].ao_v[index]; break;
case DATA_DI: value = Cdmk[module].di_v[index]; break;
case DATA_DO: value = Cdmk[module].do_v[index]; break;
case DATA_ALM: value = Cdmk[module].alm_v[index]; break;
default: break;
}
break;
case MODULE_JYMK:
switch (type & MASK_DATA_TYPE)
{
case DATA_MKCFG: value = Jymk[module].mk_cfg[index]; break;
case DATA_AI: value = Jymk[module].ai_v[index]; break;
case DATA_ALM: value = Jymk[module].alm_v[index]; break;
default: break;
}
break;
case MODULE_DDMK:
switch (type & MASK_DATA_TYPE)
{
case DATA_MKCFG: value = Ddmk[module].mk_cfg[index]; break;
case DATA_AI: value = Ddmk[module].ai_v[index]; break;
case DATA_ALM: value = Ddmk[module].alm_v[index]; break;
default: break;
}
break;
case MODULE_KRMK:
switch (type & MASK_DATA_TYPE)
{
case DATA_MKCFG: value = Krmk[module].mk_cfg[index]; break;
case DATA_DI: value = Krmk[module].di_v[index]; break;
case DATA_ALM: value = Krmk[module].alm_v[index]; break;
default: break;
}
break;
case MODULE_COMMK:
switch (type & MASK_DATA_TYPE)
{
case DATA_MKCFG: value = Commk[module].mk_cfg[index]; break;
case DATA_ALM: value = Commk[module].alm_v[index]; break;
default: break;
}
break;
default:
value = 0;
break;
}
return value;
}
uchar GetModuleIndex(uchar type, uchar addr)
{
uchar i;
switch (type & MASK_MODULE)
{
case MODULE_JKMK:
return 0;
break;
case MODULE_CDMK:
for (i = 0; i < MAX_CDMK; i++)
{
if (Cdmk[i].mk_cfg[0] == addr)
return i;
}
break;
case MODULE_JYMK:
for (i = 0; i < MAX_JYMK; i++)
{
if (Jymk[i].mk_cfg[0] == addr)
return i;
}
break;
case MODULE_DDMK:
for (i = 0; i < MAX_DDMK; i++)
{
if (Ddmk[i].mk_cfg[0] == addr)
return i;
}
break;
case MODULE_KRMK:
for (i = 0; i < MAX_KRMK; i++)
{
if (Krmk[i].mk_cfg[0] == addr)
return i;
}
break;
default: break;
}
return (uchar)(0xFF);
}
/****************************************************************************/
char *GetAlarmStr(char *s, uchar type, uchar index, uchar module, uchar flag)
{
*s= '\0';
flag = flag&0x7F;
switch (type & MASK_MODULE)
{
case MODULE_JKMK:
switch (index)
{
//1段
case 10:
case 11:
//是否有降压单元
if ( 1 == Jkmk.mk_cfg[47])
{//无降压单元
if (0 == Jkmk.mk_cfg[50])
{//不分段
scat(s, "母线");
}
else
{//分段
scat(s, "母线1段");
}
GetItem(flag, AlarmJkmk[index], Str_Buf);
scat(s, Str_Buf);
}
else
{//有降压单元
GetItem(0, AlarmJkmk[index], Str_Buf);
scat(s, Str_Buf);
GetItem(flag, AlarmJkmk[index], Str_Buf);
scat(s, Str_Buf);
}
break;
//2段
case 13:
case 14:
//是否有降压单元
if ( 1 == Jkmk.mk_cfg[47])
{//无降压单元
if (0 == Jkmk.mk_cfg[50])
{//不分段 这个分支不会执行,因为在告警处理时 不分段就取消的2段告警
scat(s, "母线");
}
else
{//分段
scat(s, "母线2段");
}
GetItem(flag, AlarmJkmk[index], Str_Buf);
scat(s, Str_Buf);
}
else
{//有降压单元
GetItem(0, AlarmJkmk[index], Str_Buf);
scat(s, Str_Buf);
GetItem(flag, AlarmJkmk[index], Str_Buf);
scat(s, Str_Buf);
}
break;
default:
GetItem(0, AlarmJkmk[index], Str_Buf);
scat(s, Str_Buf);
GetItem(flag, AlarmJkmk[index], Str_Buf);
scat(s, Str_Buf);
break;
}
/*
TextFormat(Str_Buf, "%2d ", type);//debug
scat(s, Str_Buf);
TextFormat(Str_Buf, "%2d ", module);//debug
scat(s, Str_Buf);
TextFormat(Str_Buf, "%2d ", index);//debug
scat(s, Str_Buf);
TextFormat(Str_Buf, "%2d ", flag);//debug
scat(s, Str_Buf);
*/
break;
case MODULE_CDMK:
TextFormat(Str_Buf, "充电模块%2d", module+1);
scat(s, Str_Buf);
GetItem(0, AlarmCdmk[index], Str_Buf);
scat(s, Str_Buf);
GetItem(flag, AlarmCdmk[index], Str_Buf);
scat(s, Str_Buf);
break;
case MODULE_JYMK:
if (index == 0)
{
scat(s, "绝缘模块");
GetItem(0, AlarmJymk[0], Str_Buf);
scat(s, Str_Buf);
GetItem(flag, AlarmJymk[0], Str_Buf);
scat(s, Str_Buf);
}
else
{
//支路处理
GetItem(0, AlarmJymk[index], Str_Buf);
scat(s, Str_Buf);
GetItem(flag, AlarmJymk[index], Str_Buf);
scat(s, Str_Buf);
if (index < 5)
{
GetItem(flag, AlarmJymk[index], Str_Buf);
scat(s, Str_Buf);
}
else
{
if ((index%2) == 0)
{
TextFormat(Str_Buf, "支路%3d", Index2Num(type, index, module));
scat(s, Str_Buf);
GetItem(flag, AlarmJymk[6], Str_Buf);
scat(s, Str_Buf);
}
else
{
TextFormat(Str_Buf, "支路%3d", Index2Num(type, index, module));
scat(s, Str_Buf);
GetItem(flag, AlarmJymk[7], Str_Buf);
scat(s, Str_Buf);
}
}
}
break;
case MODULE_DDMK:
//单体处理
if (index == 0)
{//通讯中断
TextFormat(s, "电导模块%1d ", module+1);
GetItem(0, AlarmKrmk[0], Str_Buf);
scat(s, Str_Buf);
GetItem(flag, AlarmDdmk[0], Str_Buf);
scat(s, Str_Buf);
}
else
{//单体告警
TextFormat(s, "电导模块%1d ", module+1);
TextFormat(Str_Buf, "单体%2d", Index2Num(type, index, module));
scat(s, Str_Buf);
GetItem(flag, AlarmDdmk[1], Str_Buf);
scat(s, Str_Buf);
}
break;
case MODULE_KRMK:
//支路处理
if (index == 0)
{
TextFormat(s, "开入模块%1d", module+1);
GetItem(0, AlarmKrmk[0], Str_Buf);
scat(s, Str_Buf);
GetItem(flag, AlarmKrmk[0], Str_Buf);
scat(s, Str_Buf);
}
else
{
//根据安装位置生成相应告警文字
switch (ModuleLocate(type, index, module))
{
case 0://母线1段
//是否分段
if (0 == Jkmk.mk_cfg[50])
{
scat(s, "母线");
}
else
{
scat(s, "母线1段");
}
break;
case 1://母线2段
scat(s, "母线2段");
break;
case 2://交流输出
scat(s, "交流输出");
break;
case 3://其它开关状态
scat(s, "其它开关");
break;
}
TextFormat(Str_Buf, "支路%3d", Index2Num(type, index, module));
scat(s, Str_Buf);
GetItem(flag, AlarmKrmk[1], Str_Buf);
scat(s, Str_Buf);
}
break;
}
return s;
}
/***************************************************************************/
int ModuleLocate(uchar type, uchar index, uchar module)
{
int i;
int flag;
int num;
switch (type & MASK_MODULE)
{
case MODULE_JKMK: break;
case MODULE_CDMK: break;
case MODULE_JYMK:
num = index - 5;
break;
case MODULE_DDMK:
break;
case MODULE_KRMK:
//判断母线是否分段 0不分段 1分段
//根据安装位置生成相应告警文字
//交流输出数量Jkmk.mk_cfg[58]
//母线1段馈出数量Jkmk.mk_cfg[56]
//母线2段馈出数量Jkmk.mk_cfg[57]
//自定状态量数量Jkmk.mk_cfg[59]
num = 0;
for (i = 0; i < module; i++)
{
num += Krmk[i].mk_cfg[3];
}
num += index;
//区间分类
if (num <= Jkmk.mk_cfg[56])
{
return 0;//MX 1
}
else if (num <= Jkmk.mk_cfg[56] + Jkmk.mk_cfg[57])
{
return 1;//MX 2
}
else if (num <= Jkmk.mk_cfg[58] + Jkmk.mk_cfg[56] + Jkmk.mk_cfg[57])
{
return 2;//AC
}
else
{
return 3;//OTHER
}
break;
}
}
/***************************************************************************/
void ModuleUpdataTime(char *buf)
{
int i;
for (i = 0; i < 6; i++)
{
Jkmk.temp[i] = buf[i];
}
}
//
int Index2Num(uchar type, uchar index, uchar module)
{
int i;
int flag;
int num;
switch (type & MASK_MODULE)
{
case MODULE_JKMK: break;
case MODULE_CDMK: break;
case MODULE_JYMK:
num = index - 5;
break;
case MODULE_DDMK:
num = index;
break;
case MODULE_KRMK:
//判断母线是否分段 0不分段 1分段
//根据安装位置生成相应告警文字
num = 0;
for (i = 0; i < module; i++)
{
num += Krmk[i].mk_cfg[3];
}
num += index;
if (num <= Jkmk.mk_cfg[56])
{
num = num;//MX 1
}
else if (num <= Jkmk.mk_cfg[56] + Jkmk.mk_cfg[57])
{
num -= Jkmk.mk_cfg[56];//MX 2
}
else if (num <= Jkmk.mk_cfg[58] + Jkmk.mk_cfg[56] + Jkmk.mk_cfg[57])
{
num -= Jkmk.mk_cfg[56] + Jkmk.mk_cfg[57]; // AC
}
else
{
num -= Jkmk.mk_cfg[58] + Jkmk.mk_cfg[56] + Jkmk.mk_cfg[57];//OTHER
}
break;
}
return num;
}
/****************************************************************************/
char *OldAlarmStr(char *buf, uchar index, uchar style)
{
// ALARM *alm;
// alm = &OldAlarmBuf[index];
// switch (style)
// {
// case 0:
// TextFormat(buf, "%2d", index+1);
// break;
// case 1:
// GetAlarmStr(buf, alm->type, alm->index, alm->module, alm->flag);
// break;
// case 2:
// timestr(alm->time1, buf);
// break;
// case 3:
// timestr(alm->time2, buf);
// break;
// }
// return buf;
}
char *NewAlarmStr(char *buf, uchar index, uchar style)
{
// ALARM *alm;
// alm = &NewAlarmBuf[index];
// switch (style)
// {
// case 0:
// TextFormat(buf, "%2d", index+1);
// break;
// case 1:
// GetAlarmStr(buf, alm->type, alm->index, alm->module, alm->flag);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -