📄 user101.c
字号:
//
// File name =USER101.C //串行通信IEC101规约 应用层程序
// 设计 何风涛
#include"class.h"
#include"classext.h"
struct TIEC101UserStruct FARDATA *InitIEC101User(int TaskNo)
{
struct TIEC101UserStruct FARDATA *Arg;
if((Arg=(struct TIEC101UserStruct FARDATA *)malloc(sizeof(struct TIEC101UserStruct)))==NULL)
{
return(NULL);
}
memset(Arg,0,sizeof(struct TIEC101UserStruct));
Arg->TaskNo=TaskNo;
Arg->Letter_from_box=boxnull;
// Arg->UserStatus=USEROFF;
Arg->ComMode=SubStation;
if((Arg->TrnLetter=(unsigned char FARDATA *)malloc(260*sizeof(char)))==NULL)
{
return(NULL);
}
if((Arg->RecLetter=(unsigned char FARDATA *)malloc(260*sizeof(char)))==NULL)
{
return(NULL);
}
return(Arg);
}
void IEC101User(struct TIEC101UserStruct FARDATA *Arg)
{
TakeLetter101(Arg);
// if(TaskStatus(Arg->DownTaskNo) & 0x80) IEC101UserTimer(Arg); // 定时监视
}
void TakeLetter101(struct TIEC101UserStruct FARDATA *Arg)
{
if(TRead(Arg->TaskNo,Arg->RecLetter))
{
Take_letter_from_box(Arg);
}
}
void Take_letter_from_box(struct TIEC101UserStruct FARDATA *Arg)
{
unsigned char c[32];
unsigned int i;
switch(Arg->RecLetter[4]) //code
{
case C_RQ_NA_1_LNKREQ: /* 请求链路状态 */
break;
case M_RQ_NA_1_LNKRES: /* 链路状态响应帧 */
break;
case C_RL_NA_1_SEND: /* 复位远方链路 */
break;
case M_RL_NA_1_CON: /* 复位远方链路确认帧 */
break;
case M_RQ_NA_1_LNKREQ: /* 子站请求链路状态 */
break;
case C_RQ_NA_1_LNKRES: /* 主站链路状态响应帧 */
break;
case M_RL_NA_1_LNKACT: /* 子站复位远方链路 */
break;
case C_RL_NA_1_ACTCON: /* 子站复位远方链路确认帧 */
break;
case C_CON_NA_1: /* 主站对子站主动触发帧的确认帧 */
break;
case M_NV_NA_1: /* 无所请求的数据帧 */
break;
case C_P1_NA_1: /* 召唤1级数据 */
break;
case M_P1_NA_1STS: /* 子站响应1级数据 */
break;
case C_P2_NA_1: /* 召唤2级数据 */
break;
case M_P2_NA_1STS: /* 子站响应2级数据 */
break;
case C_PA_NA_1: /* 召唤要求访问位的请求帧 */
break;
case C_PA_NA_1RES: /* 召唤要求访问位的响应帧 */
break;
case C_RP_NA_1ACT: /* 复位远动终端发送帧 */
break;
case C_RP_NA_1ACTCON: /* 复位远动终端确认帧 */
break;
case C_IC_NA_1ACT: /* 总召唤命令帧 */
break;
case C_IC_NA_1ACTCON: /* 总召唤确认帧 */
break;
case M_IC_NA_1ACTSTS: /* 带品质描述的遥测帧 */
/* 不带品质描述的遥测帧 */
/* 单点遥信帧 */
/* 双点遥信帧 */
/* 状态和状态变位的遥信帧 */
/* 变压器分接头帧 */
/* 远动终端状态帧 */
/* BCD码响应帧 */
/* 总召唤结束帧 */
break;
case C_IC_NA_1CYCLICACT: /* 分组召唤发送帧 */
break;
case C_IC_NA_1CYCLICACTCON: /* 分组召唤响应帧 */
break;
case M_RL_NA_1: /* 主站初始化结束响应帧 */
break;
case M_EI_NA_1: /* 子站初始化结束帧 */
break;
case C_CS_NA_1ACT: /*时钟同步发送帧 */
break;
case C_CS_NA_1ACTCON: /*时钟同步确认帧 */
break;
case M_ME_NA_1SPONT: /*带品质描述的遥测数据变化响应帧 */
break;
case M_ME_ND_1SPONT: /*不带品质描述的遥测数据变化响应帧 */
break;
case M_ME_TA_1SPONT: /*带时标的遥测数据变化响应帧 */
break;
case M_ST_NA_1SPONT: /* 变压器分接头变化响应帧 */
break;
case M_BD_NA_1CYCLIC: /*BCD码变化响应帧 */
break;
case M_SP_TA_1: /* 单点信息事件顺序记录帧 */
break;
case M_DP_TA_1: /* 双点信息事件顺序记录帧 */
break;
case M_EP_TA_1: /* 继电器保护装置单点信息事件顺序记录帧 */
break;
case M_EP_TB_1: /* 继电器保护装置 成组启动事件顺序记录帧 */
break;
case M_EP_TC_1: /* 继电器保护装置 成组输出电路事件顺序记录帧 */
break;
case M_ST_TA_1: /* 带时标的步位置信息(变压器分接头)帧*/
break;
case M_SP_NA_1SPONT: /* 单点信息状态变位帧 */
break;
case M_DP_NA_1SPONT: /* 双点遥信变位帧 */
break;
case M_PS_NA_1SPONT: /* 状态和状态变位的遥信帧 */
break;
case M_BO_NA_1SPONT: /* 远动终端状态变化帧 */
break;
case C_RD_NA_1ACT: /* 由主站的读命令发送帧 */
break;
case M_CON_NA_1ACTCON: /* 读数据命令的确认帧 */
break;
case M_DATA_NA_1SPONT: /* 由主站的读命令形成的1级用户数据帧 */
break;
case C_DC_NA_1ACT: /* 遥控选择命令 发送帧 */
break;
case C_DC_NA_1ACTCON: /* 遥控选择命令 确认帧 */
break;
case C_DC_NA_1DEACT: /* 遥控撤消命令 发送帧 */
break;
case C_DC_NA_1DEACTCON: /* 遥控撤消命令 确认帧 */
break;
case C_DC_NA_1EXCO: /* 遥控执行命令 发送帧 */
break;
case C_DC_NA_1EXCOCON: /* 遥控执行命令 确认帧 */
break;
case C_SE_NA_1ACT: /* 设点命令 发送帧 */
break;
case C_SE_NA_1ACTCON: /* 设点命令 确认帧 */
break;
case C_CI_NA_1ACT: /* 冻结和召唤电能脉冲 发送帧 */
break;
case C_CI_NA_1ACTCON: /* 冻结和召唤电能脉冲 确认帧 */
break;
case M_CI_NA_1ACTSTS: /* 电能脉冲计数量响应帧 */
/* 带时标电能脉冲计数量响应帧 */
/* 电能脉冲计数量结束帧 */
case C_CI_NA_TACT: /* 分组召唤电能脉冲计数量请求帧 */
break;
case M_IT_NA_1: /* 分组召唤电能脉冲计数量响应帧 */
break;
case M_IT_TA_1: /* 分组带时标电能脉冲计数量响应帧 */
break;
case P_ME_NA_1ACT: /* 设置参数的发送帧 */
break;
case P_ME_NA_1CON: /* 设置参数的确认帧 */
break;
case P_AC_NA_1ACT: /* 设置激活的发送帧 */
break;
case P_AC_NA_1CON: /* 设置激活的确认帧 */
break;
case C_TS_NA_1ACT: /* 测试通道发送帧 */
break;
case C_TS_NA_1ACTCON: /* 测试通道的确认帧 */
break;
case F_SC_NA_1ACT: /* 召唤文件、目录、节和文件选择命令 */
break;
case F_ALL_NA_1ACTCON: /* 目录响应帧 */
/* 文件准备好确认帧 */
/* 节准备好确认帧 */
/* 段的响应帧 */
/* 最后节、最后段的确认帧 */
/* 文件、节的确认帧 */
break;
default: break;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -