Back to Blog

基于 STM32 + FPGA 船舶电站控制器设计与实现

#fpga开发#arm开发#人工智能#嵌入式硬件#架构#stm32

近年来,随着半导体技术迅猛发展,以 ARM 架

构为核心的微控制单元 ( Micro Controller Unit,

MCU) 和现场可编程门列( Field-Programmable Gate

Array,FPGA) 因具有性能优异、功能完善、供货稳定

和成本较低等优势[1]而在工业现场控制领域得到

广泛应用,在船舶机舱自动化领域的应用也在不断

深入,具有广阔的应用前景。

以往的船舶电站控制器通常以 PLC 设备为核

心,同时需要配备相应的电量变送器、同步并车模块

和开关量输入输出模块等基本模块。因此,以往的

单台发电机组控制单元是在以 PLC 为核心的船舶

电站控制器的基础上组建的,而这样的电站控制系

统组网极其复杂,所需的安装空间也非常大,很大程

度上限制了其在现代舰船,尤其是在电网容量巨大

的全电力推进船舶上应用的前景。[2]

为适应现代舰船电站控制系统的发展,亟需一

种可在单个模块中完成以往船舶电站控制器所有功

能的电站控制器。现代嵌入式处理器,尤其是 ARM

架构的 MCU 和可编程逻辑器件 FPGA 的组合架构

完全可以使其变为现实。

1 ARM + FPGA 架构设计

1. 1 船舶电站控制器功能需求

船舶电站控制器所需的控制功能接口类型繁

多,包括对原动机及发电机进行基本控制和安全保

护所需的开关量接口、模拟量接口及与船舶电站系

统内其他设备互联互通的接口等。图 1 为单台传统

柴油发电机主要接口信号。

由图 1 可知,电站控制器所需的功能接口主要

包括模拟量( 交流量和直流量) 接口、开关量( 开关

量输入输出) 接口和通信总线( RS485 和 CAN 等)

接口等。

1. 2 ARM + FPGA 架构选型

针对电站控制器功能接口的需求,选用 ARM +

FPGA 架构作为单模块电站控制器的基本架构。

STM32F437 是基于高性 能 ARM Cortex -M4

32位RISC内核 的MCU: 集 成 了FPU,自 适 应 实 时

( ART) 加 速 度 器,MPU,225 DMIPS /1. 25 DMIPS /

MHz ( Dhrystone 2. 1) ,256 + 4KB SRAM 和 32 位数

据总线及 DSP 指令; 闪存高达 2 MB,工作频率高达

180 MHz,主要应用于工业控制领域,可满足电站控

制器对核心 CPU 运算能力及外设的要求。

FPGA 是在 PAL,GAL 和 CPLD 等可编程器件的

基础上进一步发展的产物,在逻辑控制和时序控制

方面有着其他类型控制器不可比拟的优势。电站控

制器所要处理的逻辑信号数量较大,且关键的安全

保护逻辑不容有丝毫差错。FPGA 独立于 MCU 的

运行体系及可靠的逻辑处理能力使其成为电站控制

器逻辑处理单元的最佳选择。[3]

EP2C5Q208C8 是 ALTERA 公司的 Cyclone II 系

列 FPGA,拥 有 4 608 个 LEs ( 片 上 RAM 共 计

119 808 bits) 、13 个 18 × 18 硬件乘法器、2 个高性

能 PLL 及 142 个用户自定义 IO,在逻辑门数量和运

算速度方面完全可以满足电站控制器的功能需求。

2 控制器硬件设计

电站控制器的硬件是基于电站控制器对接口资

源的需求设计的,可满足大部分电站控制系统对单

机控制器的接口需求,并针对行业未来的发展预留

了部分可扩展的接口。硬件设计结构框图见图 2。

2. 1 模拟量采集部分硬件设计

电站控制器需要处理的模拟量包括交流电量采

集和直流电量输入采集。

  1. 交流电量采集将 AD7606 作为采集主体,与

MCU 间通过 SPI 总线连接。AD7606 由 ADI 公司设

计生产,内部集成有 16 位、200 kSPS 的 AD 转换器,

可实现对 6 路交流信号的同步采样。AD7606 模拟

前端具有箝位保护、输入缓冲器和二阶抗混叠模拟

滤波 器,能保证对交流信号的调理精度。基 于

AD7606 的交流电量采集硬件设计拓扑结构见图 3。

  1. 直流电量采集部分主要采集标准 4 ~ 20 mA

的电流环信号。其模拟前端采用差分输入结构,可

有效降低共模干扰,并提高采集精度; 其后端采样通

过 MCU 自身集成 AD 转换器完成,采样精度为 12

位。结合 STM32F437 的集成 AD 转换器支持多种

采样模式的特点,在 MCU 算法中加入数字滤波器,

以进一步提高直流电量的采集精度。直流电量采集

硬件设计拓扑结构见图 4。

3 控制器软件设计

电站控制器软件可分为应用层、应用接口层和

驱动层。软件的分层设计可使开发人员仅关注整个

结构中的某一层即可完成所有内容,从而大大提高

开发效率; 同时,减弱层与层之间的依赖关系,可逐

层对软件进行更新迭代,更有利于各层间逻辑的复

用。图 7 为电站控制器软件设计框图。

图 7 电站控制器软件设计框图

电站控制器软件设计中较为关键的算法主要有

电站控制器核心控制算法、交流电量测量算法和准

同步并车算法。

3. 1 电站控制器核心控制算法设计

应用层主要实现电站控制器的核心控制算法,

其主要功能有:

  1. 发电机组根据负载的需要,自动启动、投入

运行和停车;

  1. 发电机与电网母线自动同步和并车;

  2. 电网电压与频率自动恒定;

  3. 并联运行机组间自动实现负载( 有功和无

功) 的分配和转移;

  1. 按电站负载情况自动卸除或投入次要负载;

  2. 重载控制;

  3. 故障的自行报警和自动保护及按一定程序

自动投入相应的完好机组并解除故障机组。

电站控制器核心控制算法的各个功能模块均固

化于 MCU 内,同时提供配置接口,用以实现对各功

能模块的使能和禁用,并配置相应参数。在实际应

用中,可针对不同船型的组网形式灵活配置不同功

能模块的工作模式。

3. 2 交流电量测量算法设计

在电站控制器中,交流电量的测量是最基础的

功能,是保证其他功能稳定、可靠的前提。电站控制

器通过采集 3 相电压和 3 相电流信号来计算交流电

量参数,包括电压和电流有效值、有功功率、无功功

率、功率因数及频率等。[4]