📄 c103_485.h
字号:
#ifndef C103_485
#define C103_485
#include "wd_defs.h"
#define X103_ASDU_SIZE 0x300
/* 103应用服务数据单元(ASDU)格式 */
typedef struct tagT_103_ASDU
{
BYTE type;
BYTE vsq;
BYTE cot;
BYTE addr;
BYTE fun;
BYTE inf;
BYTE data[X103_ASDU_SIZE-6];
} T_103_ASDU;
/* 103数据(信息元)格式 */
typedef struct tagT_103_DATA
{
BYTE ginl;
BYTE ginh;
BYTE kod;
BYTE type;
BYTE size;
BYTE num;
BYTE data[16];
} T_103_DATA;
/* 103扰动数据格式 */
typedef struct tagT_103_WAVE
{
BYTE fanl;
BYTE fanh;
BYTE sof;
BYTE data[7];
} T_103_WAVE;
#define FLAG_RESET_CU 50 /* 复位通信单元标志 */
#define FLAG_RESET_FCB 100 /* 复位帧计数位标志 */
#define FLAG_POLLING 200 /* 启动总查询的标志 */
#define FLAG_GENERAL_READ 300 /* 通用分类读读标志 */
#define FLAG_POLLING_END 400 /* 总查询终止标志 */
#define FLAG_POWER_ON 500 /* 启动/重新启动 */
#define FLAG_SEND_EVENT 600 /* 发送事件标志 */
#define FLAG_SEND_SOFW 700 /* 传送软压板信息 */
#define FLAG_AUTOSEND_WAVE_TABLE 50 /* 主动送扰动表 */
#define FLAG_QUERYSEND_WAVE_TABLE 100 /* 总查询送扰动表 */
#define FLAG_SEND_DATA_READY 150 /* 传送扰动数据 */
#define FLAG_SEND_STATE_READY 200 /* 传送状态就绪 */
#define FLAG_SEND_ORIGINAL_STATE 250 /* 传送初始状态 */
#define FLAG_SEND_CHANGE_STATE 300 /* 传送带标志的状态变位*/
#define FLAG_SEND_STATE_END 350 /* 带标志的状态传输结束*/
#define FLAG_SEND_CHANEL_READY 400 /* 通道传输准备就绪*/
#define FLAG_SEND_CHANEL_DATA 450
#define FLAG_SEND_CHANEL_END 500
/* 各组的起始点号 */
#define EVT_BEGIN -1 /* 事件起始码 */
#define ALA_BEGIN 79 /* 告警起始码 */
#define SFC_BEGIN 160 /* 压板起始码 */
#define DIC_BEGIN 176 /* 遥信起始码 */
#define MEA_BEGIN 208 /* 遥测起始码 */
#define VALID 0x33 /* 有效定值区号 */
#define INVALID 0x00 /* 无效定值区号 */
//帧格式类型
#define FRAME_T_VOL 0x68 /* 可变帧长 */
#define FRAME_T_CON 0x10 /* 固定帧长 */
//报文类型
#define ASDU_1 1
#define ASDU_5 5
#define ASDU_6 6
#define ASDU_7 7
#define ASDU_8 8
#define ASDU_10 10
#define ASDU_20 20
#define ASDU_21 21
#define ASDU_23 23
#define ASDU_24 24
#define ASDU_25 25
/*******************************函数部分************************************/
/* 任务初始化函数 */
VOID Task_Serial(UNSIGNED argc, VOID *argv);
/* 规约处理部分函数 */
static void Serial_Interpret(BYTE *m_rx_buf);
static void process_fix_packet(BYTE *m_rx_buf,BYTE byDevAddr);
static void process_var_packet(BYTE *m_rx_buf,BYTE byDevAddr);
void Reply_Asdu05(BYTE *m_rx_buf, BYTE byDevAddr);
void Reply_Asdu06(BYTE *m_rx_buf, BYTE byDevAddr);
void Reply_Asdu07(BYTE *m_rx_buf, BYTE byDevAddr);
void Reply_Asdu08(BYTE *m_rx_buf, BYTE byDevAddr);
void Reply_Asdu10(BYTE *m_rx_buf, BYTE byDevAddr);
void Reply_Asdu20(BYTE *m_rx_buf, BYTE byDevAddr);
void Reply_Asdu21(BYTE *m_rx_buf, BYTE byDevAddr);
void Reply_Asdu24(BYTE *m_rx_buf, BYTE byDevAddr);
void Reply_Asdu25(BYTE *m_rx_buf, BYTE byDevAddr);
void send_channel(BYTE *m_rx_buf, BYTE byDevAddr, BYTE channels_count);
void Send_Confirm(BYTE *m_rx_buf, BYTE byDevAddr, BYTE cot, BYTE inf, BYTE f_ctrl);
/* 辅助函数 */
BYTE Makecrc(BYTE *str, WORD nSize);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -