第一章 配电终端概述:DTU/FTU/TTU的定义、功能、硬件架构、软件架构、实时操作系统简介

各位同学,大家好。欢迎来到《嵌入式C语言在配电终端中的高级应用》这门课。我是你们的老朋友,一个在配电自动化领域摸爬滚打了十几年的工程师。

咱们这门课,说白了就是教你怎么用C语言去“驾驭”那些藏在电线杆上、配电房里的智能设备。今天这第一讲,咱们先不急着写代码,先把“战场”搞清楚——到底什么是配电终端?它们长什么样?脑子里装的什么系统?

嗯,这部分内容偏概念,但非常重要。你想想看,如果你连要打交道的对象都不了解,那代码写得再花哨,也是空中楼阁。

1.1 什么是配电终端?——电网的“神经末梢”

配电终端,你可以把它想象成电网的“神经末梢”。它安装在配电网的各个节点上,比如电线杆、环网柜、配电变压器旁边。它的核心任务就三件事:感知、控制、通信

  • 感知:实时采集电压、电流、功率、开关状态等数据。
  • 控制:接收主站命令,远程分合闸、调节变压器档位。
  • 通信:把采集到的数据上传给调度中心,同时接收下发的指令。

根据安装位置和功能侧重点不同,我们通常把它们分为三类:DTU、FTU、TTU。这三兄弟,各有各的脾气。

1.2 DTU、FTU、TTU 的定义与功能

咱们一个一个说。

1.2.1 DTU(配电终端单元)

定义:DTU 一般安装在开闭所、配电房、环网柜里。它管理的对象是“一段母线”或“一个配电间隔”。

功能特点

  • 多回路监控:一个 DTU 可以同时监控多条出线。我记得早期做的一个项目,一个 DTU 要管 8 条馈线,每条线都要采集三相电压电流,数据量不小。
  • 逻辑复杂:需要实现备自投、过流保护、重合闸等逻辑。这些逻辑在 C 代码里实现,对实时性要求很高。
  • 通信接口丰富:通常有以太网口、串口(RS232/485)、光纤接口,方便接入不同通信网络。

我个人习惯:在设计 DTU 软件架构时,我会把“遥测、遥信、遥控、遥调”这四遥功能做成独立的模块。这样后期维护和升级,改一个模块,不影响其他模块,心里踏实。

1.2.2 FTU(馈线终端单元)

定义:FTU 安装在柱上开关(比如电线杆上的断路器)旁边。它专门伺候“这一个”开关。

功能特点

  • 单点控制:主要控制一台开关的分合闸。
  • 故障检测:能快速检测到线路故障(比如短路、接地),并上报给主站。我遇到过最头疼的情况是,FTU 误报故障,导致调度员误操作。后来查出来是采样电路受干扰,从那以后我对 ADC 采样滤波就格外上心。
  • 取电困难:FTU 通常安装在户外,没有稳定的市电。它需要从线路的电压互感器(PT)上取电,或者靠太阳能+蓄电池供电。所以功耗控制是 FTU 软件设计的一大难点。

避坑指南:我曾经在一个 FTU 项目里,因为代码里一个 while 循环没有加超时机制,导致 CPU 在低功耗模式下被卡死,电池电量两天就耗光了。嗯,从那以后,我写任何循环都会问自己一句:“如果这里卡住了,怎么办?”

1.2.3 TTU(配电变压器终端)

定义:TTU 安装在配电变压器旁边,专门监测变压器的运行状态。

功能特点

  • 电气量采集:监测变压器的电压、电流、有功无功、功率因数等。
  • 非电量监测:有些 TTU 还能监测变压器油温、油位。这属于模拟量采集的范畴,对传感器的接口电路和软件滤波要求比较高。
  • 电能计量:具备电能表的功能,计算有功电度、无功电度。

简单总结一下:DTU 管一片,FTU 管一点,TTU 管一台变压器。它们虽然分工不同,但底层的硬件和软件架构,其实有很多共通之处。

1.3 硬件架构——终端设备的“骨架”

不管 DTU、FTU 还是 TTU,它们的硬件架构都大同小异。我画个简化的框图,你心里就有数了。

+-------------------+     +-------------------+     +-------------------+
|   电源模块        |     |   主控模块        |     |   通信模块        |
| (AC/DC, DC/DC)    |<--->| (MCU/DSP, RAM,    |<--->| (以太网, 串口,    |
|                   |     |  Flash, RTC)      |     |  光纤, 4G/5G)     |
+-------------------+     +-------------------+     +-------------------+
        ^                         ^                         ^
        |                         |                         |
        v                         v                         v
+-------------------+     +-------------------+     +-------------------+
|   模拟量采集模块   |     |   开入开出模块    |     |   人机交互模块    |
| (PT, CT, ADC)     |     | (光耦, 继电器)    |     | (按键, LCD, LED)  |
+-------------------+     +-------------------+     +-------------------+

咱们挑几个重点说说:

  • 主控模块:这是大脑。常用的是 ARM Cortex-M 系列(比如 STM32F4/H7)或者国产的 GD32、AT32。选型时,我主要看三点:主频够不够(处理算法)、Flash 够不够(装代码和固件)、外设够不够(比如 ADC 通道数、定时器数量)。
  • 模拟量采集模块:这是眼睛和耳朵。电压互感器(PT)和电流互感器(CT)把高电压、大电流变成小信号,然后 ADC 采样。这里有个坑:互感器的精度和相位偏移。我做过一个项目,因为 PT 的相位偏移没校准,导致计算出来的有功功率误差很大。后来在软件里加了一个相位补偿算法,才搞定。
  • 开入开出模块:这是手和脚。开入(DI)检测开关状态(合/分),开出(DO)控制继电器动作。注意,开入一定要做去抖处理。机械开关在闭合瞬间会有抖动,如果不做软件去抖,可能会误判状态。

1.4 软件架构——终端设备的“灵魂”

硬件是骨架,软件就是灵魂。一个成熟的配电终端,软件架构通常分三层:

  1. 底层驱动层(BSP):直接操作硬件寄存器。比如初始化 GPIO、配置 ADC、读写 Flash。这部分代码,我建议用 C 语言写,而且要写得“干净”。每个外设一个 .c 和 .h 文件,接口清晰。
  2. 中间件层:封装一些通用的功能模块。比如:
    • 协议栈:IEC 101/104、Modbus、DNP3 等。这些协议是配电终端和主站通信的“语言”。
    • 文件系统:用来存储参数、事件记录、故障录波数据。
    • 任务调度:管理各个任务的执行顺序和时间。
  3. 应用层:实现具体的业务逻辑。比如:
    • 四遥功能:遥测、遥信、遥控、遥调。
    • 保护逻辑:过流保护、零序保护、重合闸。
    • 故障处理:故障检测、隔离、恢复(FDIR)。

我建议:初学者不要一上来就想着把应用层写得多么花哨。先把底层驱动和中间件层搞扎实。底层不稳,上层跑得再快也是白搭。我见过太多项目,因为 ADC 采样时序没调好,导致整个保护逻辑误动作。

1.5 实时操作系统(RTOS)简介

配电终端对实时性要求很高。比如,从检测到故障电流到发出跳闸命令,必须在几十毫秒内完成。如果用裸机(前后台系统)写,一旦主循环里某个任务卡住了,整个系统就瘫痪了。

所以,我们通常引入实时操作系统(RTOS)。RTOS 的核心思想是:把一个大任务拆成多个小任务,让它们“看起来”在同时运行。常用的 RTOS 有:

  • FreeRTOS:开源、轻量级、移植方便。我大部分项目都用它。社区活跃,遇到问题容易找到答案。
  • μC/OS-II/III:商业授权,但代码质量很高。文档非常详细,适合学习 RTOS 原理。
  • RT-Thread:国产的,功能丰富,有组件生态。最近几年在电力行业用得越来越多。

RTOS 的几个核心概念,你得先有个印象:

  • 任务(Task):一个无限循环的函数,有自己的栈空间。比如,我们可以创建“采集任务”、“通信任务”、“保护任务”。
  • 信号量(Semaphore):用来同步任务。比如,采集任务采集完数据后,释放一个信号量,通知保护任务去处理。
  • 消息队列(Message Queue):用来在任务之间传递数据。比如,通信任务收到主站命令后,把命令打包成消息,发送给控制任务。
  • 互斥锁(Mutex):保护共享资源。比如,两个任务都要写 Flash,如果不加锁,数据就会乱掉。

注意:RTOS 不是万能的。它本身也会带来一些开销,比如任务切换需要时间、信号量操作需要时间。在极端实时性要求(比如微秒级)的场景下,你可能还是需要用中断来处理。我个人的经验是:能用中断解决的,不要用任务;能用任务解决的,不要用轮询

好了,这一章的内容就到这里。我们了解了配电终端的分类、功能、硬件架构、软件架构,以及 RTOS 的基本概念。这些是后续所有课程的基础。下一章,我们会深入 C 语言在嵌入式系统中的具体应用,比如怎么高效地操作寄存器、怎么管理内存。到时候,咱们再聊。

记住,搞嵌入式,硬件是舞台,软件是演员,而 C 语言,就是你的剧本。把剧本写好,戏才能演得精彩。