引言
一个大型的船舶轮机模拟器蕴含着30多个全物理过程的数学模型,涉及千余个实时参变量,通常采用功能分散的DCS网络来实现。即便如此,个别仿真工作站由于模型复杂、任务繁重,难以满足实时仿真的要求。例如,动力推进系统的仿真是一个半实物在环的仿真系统,其中既有虚拟的动力装置即仿真计算机上运行的数学模型,又有真实的控制盘台、物理显示设备,是一种集实时控制和高速运算功能于一体的典型系统。
早期开发成功的SMSC2000型轮机模拟器采用工控机作为仿真计算机,所有数据的处理和输入输出的控制都经过它的数据采集卡来完成。推进系统仿真的精确度与实时性无法两全。近期航运仿真中心在开展多模式机舱仿真实验的同时,针对I/O点最多(200多个)、半实物环境最复杂的船舶推进系统进行了剖析,研制了嵌入式微机的新颖仿真平台。
船舶推进系统仿真平台的选取
船舶推进系统仿真平台需要有很强的控制接口(输入输出)能力和高速的数字运算处理能力。TI公司的DSPC2000系列率先为电机的实时控制开拓了应用领域,但并不适合于具有众多I/O的复杂机电模型的仿真。由于市场上无现成的仿真装置可购,只能针对机舱模拟器的对象自行探索。实际上,当代嵌入式芯片既提供了高速的数字信号处理器(DSP),也提供了有强大控制功能的微控制器(MCU)。采用MCU+DSP架构,就可兼备两者的长处。
基于ARM核的32位RISC微控制器在监视控制、人机接口方面的功能非常完善,数字信号处理器(DSP)对各种数字信号或数据处理的能力十分强大。因此,许多嵌入式实时应用系统采用ARM+DSP的结构组合来充分发挥两种处理器的优势,从每个处理器中获得最大益处,以获得更高性能。其中,ARM作为主处理器,负责任务管理、输入输出接口、对外部设备的控制,甚至运行嵌入式操作系统;而DSP作为从处理器,仅仅负责快速的数据运算处理。两个处理器核之间通过共用一部分存储器等方式进行通信。
以ARM+DSP为核心的嵌入式系统具有很强的控制接口能力和高速数字处理能力,用来代替以工控机为核心的仿真系统,可以达到实时运行精确的船舶推进系统的数学模型、实时控制外围物理设备的目的,从而实现精确实时的半物理实物在环的船舶推进仿真系统。
ARM+DSP嵌入式船舶推进系统仿真平台的硬件结构
ARM+DSP嵌入式仿真平台主要由以ARM,C5000DSP,C2000DSP3个处理器为中心的功能部分构成。其中ARM部分的ARM核微控制器是主处理器,是整个系统的控制中心。ARM部分带有自己的FLASH,RAM,A/D,D/A转换器等外围设备,主要负责上电后完成整个系统的自举加载和系统的任务分配、从物理设备输入和向物理设备输出信号、通过CAN总线与上位计算机通信等。C5000DSP部分主要运行船舶推进系统的数学模型,并将仿真所得的转速和转矩的数据传递给C2000DSP部分的电机控制单元,以在电动机上表达出推进系统的实时状态,即用电动机来模拟推进主机。
C2000DSP部分的功能是接收C5000DSP部分数学模型的运算结果,按照该结果控制电动机达到仿真的转速和转矩,最终实现用电动机来模拟推进主机。这3个部分按一定的方式组合在一起,构成一个整体,共同完成推进系统仿真的任务。其基本组织结构如图1所示。
图1ARM+DSP嵌入式微机系统的基本组成
实际上,从可靠性角度考虑,对于ARM部分和C5000DSP部分,采用一块ARM7+C54x的双核芯片(TI的TMS320VC5470)把两部分的核心集成到一起。这两部分的主要外围设备有ARM侧的FLASH,SRAM,SDRAM,键盘,LCD,CAN总线接口,A/D,D/A转换器(用于模拟量的输入输出),光耦电路(用于数字量或开关量的输入输出),用于编程调试用的JTAG接口及DSP侧的程序空间外扩SRAM,数据空间外扩SRAM,及I/O空间的FIFO(用于向C2000DSP部分传递数据)。这两部分的硬件组织结构如图2所示。
图2ARM和C5000DSP的硬件结构
C2000DSP部分为任选部分。若省略这部分,则仿真结果仅显示在LCD,LED状态指示灯上。加上这部分后,仿真推进系统的各种动静态转速及转矩特性可在C2000DSP部分控制的仿真电机上反映出来,达到用电机模拟推进系统主机的目的。图3所示的C2000DSP子系统实际上是一个电机的闭环控制系统,由DSP控制器、功率驱动放大电路、电机和转速检测环节(光电编码盘)4个子部分构成。可见,ARM+DSP嵌入式船舶推进系统仿真平台的硬件资源丰富,且有很大的可扩展空间。该系统平台在硬件方面有以下一些特点。
(1)从处理器的速度上看,ARM最大为47.5MHz,C5000DSP最大为100MHz,C2000DSP最大为40MHz,属于较高速处理器。
图3C2000DSP部分的硬件结构
(2)FLASH的容量很大。在ARM和C5000DSP(即TMS320VC5470)部分有8MB的外部FLASH;在C2000DSP(TMS320LF2407)部分有32KW的在片FLASH,而且还可以进行外扩。这样,该系统就可以固化大量的程序代码,适合开发大型的程序。
(3)SRAM的容量也很大。在ARM部分有16KB的在片高速SRAM和2MB的外部SRAM;在C5000DSP部分有72KW高速在片SRAM和64KW外扩程序SRAM和64KW外扩数据SRAM;在C2000DSP(TMS320LF2407)部分有2.5KW的在片SRAM,而且还有64KW外扩程序SRAM和64KW外扩数据SRAM。这样,大量的SRAM可以保证处理器在SRAM中读取程序,以保证程序快速运行。
(4)系统的I/O端口资源丰富。既有数字量的输入输出,也有模拟量的输入输出;既提供了串行方式,也提供了并行方式。为数据采集、控制指令输出、与上位机通信等奠定了硬
件基础。
(5)C2000DSP的处理器TMS320LF2407是专用来进行电机控制的芯片,用来产生PWM信号和捕获转速反馈信号很容易,而且运算速度快,可以实现对电机的各种高效复杂的控制。
(6)各部分间需要实时交换数据,其硬件上都采用了共享存储器的方式(ARM与C5000DSP之间的ARMPortInterface,简称API,C5000DSP与C2000DSP之间的FIFO)。这样,通信速度很快,从硬件上满足了实时要求。
(7)因为器件数量较多且速度相对较高,有些芯片采用的是先进的BGA(BallGridArray)封装技术,所以在设计印刷电路板时,采用了6层板,布线充分考虑了器件的高速性和封装技术。
(8)该系统平台提供了很多可扩展的接口,用户可针对具体对象扩充硬件、添加新的功能。对于构成SMSC2000轮机模拟器的其他工作站,无须扩展任何I/O接口,可见该系统具有通用性。
ARM+DSP嵌入式仿真平台的软件结构
ARM部分中的软件
ARM部分是整个系统的控制中心,其运行的主要是系统软件,包括自举加载程序、指令响应程序、键盘扫描程序、LCD显示驱动程序、A/D与D/A转换控制程序、直接数字量/开关量输入输出程序、CAN总线通信控制程序及与C5000DSP部分进行内部实时数据交换的控制程序。
自举加载程序是上电或复位后首要实现的任务。它先对ARM的一些关键寄存器(如时钟、中断等)进行初始化(即部分初始化);之后将ARM部分中要运行的主程序和各个子程序(如指令响应程序、键盘扫描、LCD显示驱动等)从片外的非易失性存储器FLASH中加载到片内或片外的SRAM中,以增加程序的运行速度;接着,开始负责对C5000DSP部分进行复位初始化,再把数学模型程序通过API控制加载到C5000DSP中。这样,自举加载程序就完成了两个部分的自举加载工作。
自举加载完成后,ARM部分开始执行系统的全部初始化,然后便进入系统的主程序(该主程序是一个无限循环等待程序),在主程序中再以中断方式反复运行键盘扫描、LCD显示驱动、指令解释响应、A/D与D/A转换控制、数字量/开关量的输入输出及与C5000DSP部分通讯的程序。其中,指令解释的响应程序是一个核心程序,类似于操作系统的内核程序,接受来自输入处理子程序(键盘扫描、数字量/开关量的输入等)的接口数据,并根据它们的值启动相应的任务,如果需要将任务执行的结果作为接口数据(指令)输出给显示或控制处理子程序,则经由各输出子程序再进行处理。该部分的软件组织结构如图4所示。
图4ARM部分的软件组织结构
C5000DSP部分的软件
C5000DSP部分主要用来运行推进系统的数学模型,该推进系统可以是传统的柴油主机推动系统,也可以是新型的电力推动系统,关键在于不同的推动类型对应不同的数学模型。
C5000DSP程序实质上是以实时循环迭代求解微分方程组为主的程序,该微分方程组即推进系统的数学模型,并且每循环求解一次,要确定有没有从ARM部分传递来的指令及参数更改的信息。如果有,就改变相应状态及参数再求解微分方程组;如果没有,则仍按上一次的状态和参数求解。在每个循环中,方程组完整求解一次,从而得到推动系统在该时刻的仿真数据。在每个循环的最后,把仿真数据结果传送给ARM部分及C2000DSP部分(通过FIFO),用于显示和控制。这部分的软件程序结构如图5所示。
图5C5000DSP部分的软件组织结构
C2000DSP部分的软件结构
C2000DSP部分的主要任务就是读取FIFO接收来自C5000DSP部分的仿真结果中的转速和转矩信号,并将之表达为电动机的相应转速和转矩。该部分实际上是独立构成的一个专门控制交流电机的子系统。
其中,C2000DSP处理器TMS320LF2407为该控制子系统的核心。它首先采用查询的工作方式,检测主控指令位是否指示打开该进程,检查系统与主电路是否正常。如果主控指令位指示“关闭”,则切断主电路,封锁输入输出,再关闭系统;如果不正常,则切断主电路,封锁输入输出,再关闭系统,并发出警报;如果一切正常且主控指令位指示“打开”,则读取此子系统的给定信号(由通信中断服务程序从FIFO中读出并存入相应地址的存储器中),即转速和转矩仿真结果数据的接收,再调用捕获子程序从相应接口输入实际转速和转矩的反馈值。给定值和反馈值准备完毕,系统才开始使用某种控制算法对给定数据和反馈数据进行处理。
完成了一个电机闭环恒转速控制算法后,产生相应的PWM信号输出给电机功率驱动电路,再由驱动电路控制电机跟随仿真给定转速和转矩信号,完成对推动系统转速和转矩的物理模拟。这里使用的控制算法可以是交流电机控制的各种算法,有要求较低的恒压频比、恒电动势频比算法,也有要求高的矢量控制算法和直接转矩控制算法。完成此步控制算法输出PWM信号后,再返回到开头处。如此循环,直到出现不正常或ARM主控程序结束该任务进程。该部分程序的主要结构如图6所示。
图6C2000DSP部分的软件组织结构
芯片间的通信控制
该系统由3大部分构成,各部分之间的通信关系如图1所示。ARM与C5000DSP之间相互通信,C5000DSP与C2000DSP之间相互通信,ARM与C2000DSP之间也相互通信。其中,前两者是通过中断方式来完成的,而后者是通过直接传送的方式完成的。
ARM与C5000DSP之间通过ARM向C5000发出中断信号,告知C5000要准备接收数据。然后ARM将数据放到两方共享的API中。DSP接收到中断信号后,开始中断服务程序,从API的相应位置取出数据,之后向ARM发出回复信号,以表示数
据被取走,而后继续准备开始接收新的数据。ARM接收到来自C5000的回复信号,开始发送新的数据。如此反复,直到传递完所有数据。反过来,由C5000DSP向ARM发送数据,其过程与上面相同,只是收发方互换位置。
C5000DSP与C2000DSP之间的通信是单向的,即C5000只进行发送而C2000只进行接收。它们之间是通过FIFO进行缓冲的。C5000首先将仿真运算的转速和转矩数据通过总线放入接在其IO空间的FIFO中,再向C2000发送中断请求。C2000收到后,响应中断,进行中断服务,从FIFO的相应位置取出数据并存入特定地址的存储器中,再回复C5000告知数据已经被取出。如此周而复始,不断进行数据的收发。
ARM与C2000DSP之间的通信主要是ARM主控打开或关闭C2000系统,采用单向直接传送方式。它们之间通过各自的一个GPIO(通用IO口)相连,ARM发送,C2000接收。ARM要打开C2000系统时,只需向其对应的GPIO写1,而ARM要关闭C2000系统时,只需向其对应的GPIO写0。在C2000部分,在主体循环程序中每次查询C2000的对应GPIO口,读为1则表示继续其进程,而读为0则表示关断其进程。
ARM+DSP嵌入式仿真平台与以工控机为核心的仿真平台的比较
以ARM+DSP为核心的嵌入式仿真平台系统与以工控机为核心的仿真平台系统相比在仿真的实时性和精确度方面具有很多优势。
(1)使用专用的DSP完成运算,相比通用PC处理器80×86的精确度更高。
(2)ARM和DSP分工明确,各司其职,比单一的PC处理器完成仿真任务要快很多。SMSC2000在进行主机仿真时,由于处理器、操作系统和VB开发工具的限制,每求解一次数学模型需要的时间在ms级,其采样周期也在ms级以上;而以ARM+DSP为核心的嵌入式仿真平台系统,由于采用功能强大的双核构架,每求解一次数学模型需要的时间在μs级,采样周期也相应减小很多,即仿真的步长更小,大幅度提高了仿真的精确度。
(3)软件系统是在裸机的基础上建立的,实时性完全由开发人员决定,不受非实时操作系统限制。
结束语
针对船舶推进系统研制的新颖ARM+DSP嵌入式仿真平台扬长了ARM与DSP两种嵌入式处理器的特点,集丰富的控制接口和高速运算处理能力于一体。该仿真平台系统结构清晰,各部分专用功能强大,任务分配明确,相互之间都有通信交互。该系统存储器容量大,各器件速度快,集成度高。软件编程从系统和应用的角度出发,密切结合实际情况,软件结构适合嵌入式系统运行。系统的软硬件都有较大扩展空间。用该仿真平台代替传统的基于工控计算机的仿真模式真正达到了实时要求,其运行的数学模型更精确,控制物理设备的能力更强。
该仿真平台同样可用于船舶电站、船舶辅机、机舱报警等系统的仿真,并通过CAN总线与主控站联络。它不光强化了单一工作站的功能,而且使整个DCS网络演化为FCS网络,大大提高了系统的实时性。