添加开关控制结构体定义和示例代码
- switch_def.h: SWITCH 和 TRANS_CONTROL 结构体定义 - switch_def.c: 开关控制函数实现(初始化/合闸/分闸/复位) - switch_example.c: 完整使用示例代码 包含所有开关: - 1-QF (1-12, 14-16, 20) 共 16 个 - 2-QF (1-13, 16-18, 20, 30) 共 18 个 - 3-QF (1-5, 8-9, 11-14, 16-22) 共 18 个 - F1-QF (1-3) 共 3 个 - F2-QF (1-3) 共 3 个 - F3-QF (1-3) 共 3 个 - 4-QF (2-9, 21-26, 28, 31-41) 共 26 个 - 5-QF (2-6, 31-34) 共 9 个 - 6-QF (1-9) 共 9 个 总计:105 个断路器开关
This commit is contained in:
154
switch_example.c
Normal file
154
switch_example.c
Normal file
@@ -0,0 +1,154 @@
|
||||
/**
|
||||
* @file switch_example.c
|
||||
* @brief 开关控制使用示例
|
||||
* @author 虾哥
|
||||
* @date 2026-04-09
|
||||
*
|
||||
* 本文件演示如何使用 TRANS_CONTROL 结构体
|
||||
* 包含初始化、合闸、分闸、故障复位等操作示例
|
||||
*/
|
||||
|
||||
#include "switch_def.h"
|
||||
#include <stdio.h>
|
||||
|
||||
/**
|
||||
* @brief 主函数示例
|
||||
*
|
||||
* 演示完整的开关控制流程
|
||||
*
|
||||
* @return int 程序执行结果
|
||||
*/
|
||||
int main(void)
|
||||
{
|
||||
// ================================
|
||||
// 1. 初始化变压器控制结构
|
||||
// ================================
|
||||
TransControl_Init(&g_trans_control);
|
||||
printf("变压器控制结构初始化完成\r\n");
|
||||
|
||||
// ================================
|
||||
// 2. 1-QF1 合闸操作
|
||||
// ================================
|
||||
printf("\r\n=== 1-QF1 合闸 ===\r\n");
|
||||
Switch_Close(&g_trans_control, &g_trans_control.qf1_1);
|
||||
Switch_PrintInfo("1-QF1", &g_trans_control.qf1_1);
|
||||
|
||||
// ================================
|
||||
// 3. 1-QF2 合闸操作
|
||||
// ================================
|
||||
printf("\r\n=== 1-QF2 合闸 ===\r\n");
|
||||
Switch_Close(&g_trans_control, &g_trans_control.qf1_2);
|
||||
Switch_PrintInfo("1-QF2", &g_trans_control.qf1_2);
|
||||
|
||||
// ================================
|
||||
// 4. 2-QF1 合闸操作
|
||||
// ================================
|
||||
printf("\r\n=== 2-QF1 合闸 ===\r\n");
|
||||
Switch_Close(&g_trans_control, &g_trans_control.qf2_1);
|
||||
Switch_PrintInfo("2-QF1", &g_trans_control.qf2_1);
|
||||
|
||||
// ================================
|
||||
// 5. 3-QF1 分闸操作
|
||||
// ================================
|
||||
printf("\r\n=== 3-QF1 分闸 ===\r\n");
|
||||
Switch_Open(&g_trans_control, &g_trans_control.qf3_1);
|
||||
Switch_PrintInfo("3-QF1", &g_trans_control.qf3_1);
|
||||
|
||||
// ================================
|
||||
// 6. 1-QF14 故障复位操作
|
||||
// ================================
|
||||
printf("\r\n=== 1-QF14 故障复位 ===\r\n");
|
||||
Switch_Reset(&g_trans_control, &g_trans_control.qf1_14);
|
||||
Switch_PrintInfo("1-QF14", &g_trans_control.qf1_14);
|
||||
|
||||
// ================================
|
||||
// 7. 批量操作示例:合上 1 侧所有开关
|
||||
// ================================
|
||||
printf("\r\n=== 批量合上 1 侧所有开关 ===\r\n");
|
||||
Switch_Close(&g_trans_control, &g_trans_control.qf1_1);
|
||||
Switch_Close(&g_trans_control, &g_trans_control.qf1_2);
|
||||
Switch_Close(&g_trans_control, &g_trans_control.qf1_3);
|
||||
Switch_Close(&g_trans_control, &g_trans_control.qf1_4);
|
||||
Switch_Close(&g_trans_control, &g_trans_control.qf1_5);
|
||||
Switch_Close(&g_trans_control, &g_trans_control.qf1_6);
|
||||
Switch_Close(&g_trans_control, &g_trans_control.qf1_7);
|
||||
Switch_Close(&g_trans_control, &g_trans_control.qf1_8);
|
||||
Switch_Close(&g_trans_control, &g_trans_control.qf1_9);
|
||||
Switch_Close(&g_trans_control, &g_trans_control.qf1_10);
|
||||
Switch_Close(&g_trans_control, &g_trans_control.qf1_11);
|
||||
Switch_Close(&g_trans_control, &g_trans_control.qf1_12);
|
||||
Switch_Close(&g_trans_control, &g_trans_control.qf1_14);
|
||||
Switch_Close(&g_trans_control, &g_trans_control.qf1_15);
|
||||
Switch_Close(&g_trans_control, &g_trans_control.qf1_16);
|
||||
Switch_Close(&g_trans_control, &g_trans_control.qf1_20);
|
||||
printf("1 侧所有开关已合闸\r\n");
|
||||
|
||||
// ================================
|
||||
// 8. 直接访问结构体成员示例
|
||||
// ================================
|
||||
printf("\r\n=== 直接访问结构体成员 ===\r\n");
|
||||
|
||||
// 直接设置合闸命令
|
||||
g_trans_control.qf2_20.close_cmd = 1;
|
||||
printf("2-QF20 合闸命令已设置\r\n");
|
||||
|
||||
// 直接读取状态
|
||||
uint8_t status = g_trans_control.qf2_20.status;
|
||||
printf("2-QF20 当前状态:%d\r\n", status);
|
||||
|
||||
// 直接设置故障状态
|
||||
g_trans_control.qf3_8.fault_status = 1;
|
||||
printf("3-QF8 故障状态已设置\r\n");
|
||||
|
||||
// ================================
|
||||
// 9. 状态检查示例
|
||||
// ================================
|
||||
printf("\r\n=== 状态检查 ===\r\n");
|
||||
|
||||
if (Switch_GetStatus(&g_trans_control.qf1_1) == 1)
|
||||
{
|
||||
printf("1-QF1 在合位\r\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("1-QF1 在分位\r\n");
|
||||
}
|
||||
|
||||
if (Switch_GetFaultStatus(&g_trans_control.qf3_8) == 1)
|
||||
{
|
||||
printf("3-QF8 有故障\r\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("3-QF8 正常\r\n");
|
||||
}
|
||||
|
||||
// ================================
|
||||
// 10. 清除命令示例
|
||||
// ================================
|
||||
printf("\r\n=== 清除命令 ===\r\n");
|
||||
Switch_ClearCommands(&g_trans_control.qf1_1);
|
||||
printf("1-QF1 所有命令已清除\r\n");
|
||||
Switch_PrintInfo("1-QF1", &g_trans_control.qf1_1);
|
||||
|
||||
printf("\r\n=== 示例程序执行完成 ===\r\n");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 中断服务程序示例
|
||||
*
|
||||
* 模拟硬件中断处理开关状态
|
||||
* 在实际应用中,这会是真正的中断处理函数
|
||||
*/
|
||||
void HWINT_IRQHandler(void)
|
||||
{
|
||||
// 检查 1-QF1 是否故障
|
||||
if (g_trans_control.qf1_1.fault_status == 1)
|
||||
{
|
||||
// 自动分闸
|
||||
Switch_Open(&g_trans_control, &g_trans_control.qf1_1);
|
||||
printf("中断:1-QF1 故障,已自动分闸\r\n");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user