📄 103.c
字号:
return;
case 0x0f:
//调试及操作消息类
return;
}
return;
case 0x02:
//读一个组的全部条目的缺损值
switch(ginh)
{
case 0x00:
//系统类
return;
case 0x01:
//系统类
return;
case 0x02:
//定值类
Get103_setquesheng( buff103,commaddress);
send_quesheng(ginh,buff103,sbuf,id,commaddress,rii);
return;
case 0x03:
//定值类
Get103_setquesheng( buff103,commaddress);
send_quesheng(ginh,buff103,sbuf,id,commaddress,rii);
return;
case 0x04:
//事件类(动作及状态事件)
return;
case 0x05:
//事件类(告警)
return;
case 0x06:
//遥测类(保护遥测)
return;
case 0x07:
//遥测类(动作及状态事件)
return;
case 0x08:
//摇信类
return;
case 0x09:
//摇信类
return;
case 0x0a:
//电量类
return;
case 0x0b:
//遥控开关类
return;
case 0x0c:
//遥控分头类
return;
case 0x0d:
//遥调类
return;
case 0x0e:
//遥控压板类
return;
case 0x0f:
//调试及操作消息类
return;
}
return;
}
return;
case 0xf3:
//读单个条目的目录
i=7;
*apack =10;
*apack =0x81;
*apack =0x2a;
*apack =commaddress;
*apack =0xfe;
*apack =0xf3;
*apack =0;
C103_Send( id, sbuf, i );//
return;
case 0xf4:
//读单个条目的值
switch(ginh)
{
case 0x20:
switch(ginl)
{
case 0x00://读组的标题
i=7;
*apack =10;
*apack =0x81;
*apack =0x2a;
*apack =commaddress;
*apack =0xfe;
*apack =0xf4;
*apack =0;
C103_Send( id, sbuf, i );//
return;
case 0x01://读小电流的数据表
return;
case 0x02://读带标志的状态变位
i=7;
*apack =10;
*apack =0x81;
*apack =0x2a;
*apack =commaddress;
*apack =0xfe;
*apack =0xf4;
*apack =0;
C103_Send( id, sbuf, i );
return;
default:
i = Get103_JieDiXuanXian_data( ginl-2,buff103,commaddress);
Send_current_table(ginh,buff103,sbuf,id,commaddress,rii,i);
return;
}
return;
default:
break;
}
return;
case 0xf5:
//对通用分类数据的总查询
i=7;
*apack =10;
*apack =0x81;
*apack =0x2a;
*apack =commaddress;
*apack =0xfe;
*apack =0xf5;
*apack =0;
C103_Send( id, sbuf, i );
return;
default:
break;
}
}
////
void Lan_edit24(BYTE *rbuf,WORD wLen,BYTE *sbuf,WORD id,BYTE *buff103)
{
//扰动数据传输的命令
BYTE *pt;//接受报文缓冲区
BYTE *apack;//回答报文缓冲区
BYTE commaddress;//公共地址
BYTE fun;//功能类型
BYTE woo;//命令类型
BYTE tov;//扰动值类型
BYTE counter;
BYTE fan0;//故障序号
BYTE fan1;//故障序号
BYTE acc;//实际通道号
BYTE too;//
WORD fan = 0;//故障序号
pt = rbuf + 3;
commaddress = *pt++;
fun = *pt;
pt = rbuf + 6;
woo = *pt++;
tov = *pt++;
fan0 = *pt++;
fan1 = *pt++;
acc = *pt++;
//命令类型 1 ==故障的选择
// 2 ==请求扰动数据
// 3 ==终止扰动数据
// 8 ==通道的请求
// 9 ==通道的终止
// 16==请求带标志的状态变位
// 17==终止带标志的状态变位
// 24==请求被记录的扰动表
//
//实际的通道序号 0====全局
// 1====I(L1)
// 2====I(L2)
// 3====I(L3)
// 4====I(N)
// 5====U(L1E)
// 6====U(L2E)
// 7====U(L3E)
// 8====U(EN)
switch (woo)
{
case 0x18: //请求被记录的扰动表
//向保护请求被记录的扰动表
Get103_fault_table(buff103,commaddress);
send_fault_table(buff103,sbuf,id,commaddress,fun);
return;
case 0x01: //故障的选择
//根据被记录的扰动表,主站选择被请求的扰动数据
Get103_data_ready(buff103,commaddress,fan0,fan1);
send_data_ready(buff103,sbuf,id,commaddress,fun);
return;
case 0x02: //请求扰动数据
send_Cstatus_ready(sbuf,id,commaddress,fun,tov,fan0,fan1);
return;
case 0x10: //请求带标志的状态变位
apack = lastcommaddbuf+id;
if (*apack == 0x00)
{
//发送原始状态
*apack = 0x33;
Get103_status_originality(buff103,commaddress,fan0,fan1);
send_status_originality( buff103,sbuf,id,commaddress,fun,fan0,fan1);
}
else
{
if (*apack == 0x33)
{
//发送变位状态
*apack = 0x55;
Get103_status_nonce(buff103,commaddress,fan0,fan1);
send_status_originality( buff103,sbuf,id,commaddress,fun,fan0,fan1);
}
else
{
//发送空
*apack = 0x00;
too = 40;
send_status_empty( sbuf,id,commaddress,fun,too,tov,fan0,fan1,acc);
}
}
return;
//**************************************************************
case 0x03: //终止扰动数据(不处理)
return;
case 0x08: //通道的请求
counter = read_default_counter[id];
counter++;
if (Get103_channel_data(buff103,commaddress,fan0,fan1,acc,counter) == true)
{
read_default_counter[id] = read_default_counter[id] + 1;
send_channel_data(buff103,sbuf,id,commaddress,fun,too,tov,fan0,fan1,acc);
}
else
{
read_default_counter[id] = 0;
too = 37;
send_status_empty( sbuf,id,commaddress,fun,too,tov,fan0,fan1,acc);
}
return;
case 0x09: //通道的终止(不处理)
return;
case 0x11: //终止带标志的状态变位(不处理)
return;
default:
break;
}
}
////
void Lan_edit25(BYTE *rbuf,WORD wLen,BYTE *sbuf,WORD id,BYTE *buff103)
{
//扰动数据传输的认可
BYTE *pt;//接受报文缓冲区
BYTE commaddress;//公共地址
BYTE fun;//功能类型
BYTE woo;//命令类型
BYTE tov;//扰动值类型
BYTE fan0;//故障序号
BYTE fan1;//故障序号
BYTE acc;//实际通道号
BYTE too;//
pt = rbuf + 3;
commaddress = *pt++;
fun = *pt;
pt = rbuf + 6;
woo = *pt++;
tov = *pt++;
fan0 = *pt++;
fan1 = *pt++;
acc = *pt++;
//
switch (woo)
{
case 68:
//成功的带标志的状态变位传输
Get103_default_channel(buff103,commaddress,acc);
send_default_channel(buff103,sbuf,id,commaddress,fun,too,tov,fan0,fan1,acc);
return;
case 64:
//成功的扰动数据传输
return;
case 65:
//不成功的扰动数据传输
return;
case 66:
//成功的通道传输
return;
case 67:
//不成功的通道传输
return;
case 69:
//不成功的带标志的状态变位传输
return;
default:
break;
}
}
//
void send_status_originality( BYTE *buff103,BYTE *sbuf,WORD id,BYTE commaddress,BYTE fun,BYTE fan0,BYTE fan1)
{
BYTE *pt;
BYTE *apack;
WORD i;
BYTE j;
BYTE k;
pt = buff103;
apack = sbuf;
*apack++ = 29;
*apack++ = 0x81;
*apack++ = 0x1f;
*apack++ = commaddress;
*apack++ = fun;
*apack++ = 0x00;
*apack++ = fan0;
*apack++ = fan1;
j = *pt++;//带状态变位的数目
*apack++ = j;
i = 9;
while (j > 0,j--)
{
k = 5;
while (k > 0,k--)
{
*apack++ =*pt++;
i++;
}
}
C103_Send( id, sbuf, i );
}
//
void send_status_empty( BYTE *sbuf,WORD id,BYTE commaddress,BYTE fun,BYTE too,BYTE tov,BYTE fan0,BYTE fan1,BYTE acc)
{
BYTE *apack;
WORD i;
apack = sbuf;
*apack++ = 31;
*apack++ = 0x81;
*apack++ = 0x1f;
*apack++ = commaddress;
*apack++ = fun;
*apack++ = 0x00;
*apack++ = too;//命令类型
*apack++ = tov;
*apack++ = fan0;
*apack++ = fan1;
*apack++ = acc;
i = 11;
C103_Send( id, sbuf, i );
}
//
void send_channel_data(BYTE *buff103,BYTE *sbuf,WORD id,BYTE commaddress,BYTE fun,BYTE too,BYTE tov,BYTE fan0,BYTE fan1,BYTE acc)
{
BYTE *pt;
BYTE *apack;
WORD i;
BYTE j;
BYTE k;
WORD l = 0;
pt = buff103;
apack = sbuf;
*apack++ = 30;
*apack++ = 0x81;
*apack++ = 0x1f;
*apack++ = commaddress;
*apack++ = fun;
*apack++ = 0x00;
*apack++ = 0x00;
*apack++ = tov;
*apack++ = fan0;
*apack++ = fan1;
*apack++ = acc;
i = 11;
j = *pt++;
k = *pt++;
l = k;
l = l << 8;
l = l | j;
*apack++ = j;
i++;
*apack++ = k;
i++;
*apack++ = *pt++;
i++;
*apack++ = *pt++;
i++;
l *=2;
while (l > 0,l--)
{
*apack++ = *pt++;
i++;
}
C103_Send( id, sbuf, i );
}
//
void send_default_channel(BYTE *buff103,BYTE *sbuf,WORD id,BYTE commaddress,BYTE fun,BYTE too,BYTE tov,BYTE fan0,BYTE fan1,BYTE acc)
{
BYTE *pt;
BYTE *apack;
WORD i;
BYTE j;
apack = sbuf;
pt = buff103;
*apack++ = 27;
*apack++ = 0x81;
*apack++ = 0x1f;
*apack++ = commaddress;
*apack++ = fun;
*apack++ = 0x00;
*apack++ = 0x00;
*apack++ = tov;
*apack++ = fan0;
*apack++ = fan1;
*apack++ = acc;
i = 11;
j = 12;
while (j > 0,j--)
{
*apack++ = *pt++;
i++;
}
C103_Send( id, sbuf, i );
}
//
void send_Cstatus_ready(BYTE *sbuf,WORD id,BYTE commaddress,BYTE fun,BYTE tov,BYTE fan0,BYTE fan1)
{
BYTE *apack;
WORD i;
apack = sbuf;
*apack++ = 0x1c;
*apack++ = 0x81;
*apack++ = 0x1f;
*apack++ = commaddress;
*apack++ = fun;
*apack++ = 0x00;
*apack++ = 0x00;
*apack++ = 0x00;
*apack = fan0;
*apack = fan1;
i = 10;
C103_Send( id, sbuf, i );
}
//
void send_data_ready(BYTE *buff103,BYTE *sbuf,WORD id,BYTE commaddress,BYTE fun)
{
BYTE *pt;
BYTE *apack;
WORD i;
BYTE j;
pt = buff103;
apack = sbuf;
*apack++ = 0x1a;
*apack++ = 0x81;
*apack++ = 0x1f;
*apack++ = commaddress;
*apack++ = fun;
*apack++ = 0x00;
*apack++ = 0x00;
i = 7;
j =14;
while (j > 0,j--)
{
*apack++ = *pt++;
i++;
}
C103_Send( id, sbuf, i );
}
//
void send_fault_table(BYTE *buff103,BYTE *sbuf,WORD id,BYTE commaddress,BYTE fun)
{
BYTE *pt;
BYTE *apack;
WORD i;
BYTE k;
BYTE j;
pt = buff103;
apack = sbuf;
k = *pt++;
//类型表示 type = 17h
//可变结构限定词 VSQ = 扰动表的数目
//传送原因 COT = 31
//公共地址
//功能类型
//未用
//故障序号 FAN(WORD)
//故障状态
//7个字节的时间
*apack++ = 0x17;
*apack++ = k;//扰动数据的数目
*apack++ = 0x1f;
*apack++ = commaddress;
*apack++ = fun;
*apack++ = 0x00;
i = 6;
while (k > 0,k--)
{
j = 10;
while (j > 0,j--)
{
*apack++ = *pt++;
i++;
}
}
C103_Send( id, sbuf, i );
}
//
//
void send_write(BYTE *sbuf,BYTE *rbuf,WORD id,BYTE cot,BYTE commaddress,BYTE inf,BYTE rii)
{
BYTE *pt;
BYTE *apack;
WORD i;
BYTE l;//通用分类数目
BYTE k;//数据宽度
BYTE j;//数目
BYTE kb;
pt =rbuf+7;
apack =sbuf;
*apack++ =10;
*apack++ =0x81;
*apack++ =cot;
*apack++ =commaddress;
*apack++ =254;
*apack++ =inf;
*apack++ =rii;
i = 8;
l =*pt++;
*apack++ =l;
while(l > 0,l--)
{
*apack++ =*pt++;
i++;
*apack++ =*pt++;
i++;
*apack++ =*pt++;
i++;
*apack++ =*pt++;
i++;
k =*pt++;
kb = k;
*apack++ =k;
i++;
j =*pt++;
*apack++ =j;
i++;
while(j > 0,j--)
{
k = kb;
while(k > 0,k--)
{
*apack++ =*pt++;
i++;
}
}
}
C103_Send( id, sbuf, i );
return;
}
////
void send_miaoshu(BYTE ginh,BYTE *buff103,BYTE *sbuf,WORD id,BYTE commaddress,BYTE rii)
{
BYTE *pt;
BYTE *apack;
WORD i;
BYTE k;
BYTE j;
BYTE l;
pt =buff103;
apack =sbuf;
i=7;
*apack++ =10;
*apack++ =0x81;
*apack++ =0x2a;
*apack++ =commaddress;
*apack++ =0xfe;
*apack++ =0xf1;
*apack++ =rii;
j=1;//条目号
k =*pt;
*apack++ =*pt++;//数目
i++;
while(k > 0,k--)
{
*apack++ =ginh;
*apack++ =j;
*apack++ =0x0a;
*apack++ =*pt++;
i =i+4;
l =*pt;
*apack++ =*pt++;
i++;
*apack++ =*pt++;
i++;
while (l>0,l--)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -