尽管数字信号处理器(DSP)的性能越来越强,基于DSP嵌入式系统的功能也越来越多,但对于实时性、容错性、可靠性要求很高的多任务信号处理及多路过程控制方面的应用,单个DSP嵌入式系统的处理能力是不够的。分布式系统处理能力强、可靠性高,采用多个DSP嵌入式子系统构成分布式系统,利用分布式系统的并发性实现多个DSP的并行处理,满足多任务、实时性的要求。同时,通过硬件和软件冗余设计,保证了系统的可靠性。
本文采用TMS320F2812 DSP实现了三个同构的、具有多种实时信号处理和多个过程控制功能的嵌入式子系统A、B、C,以CAN总线为通信网络构成分布式系统。该系统能够与外部测控中心实时交互,同时完成23路模拟信号的实时采集/预处理、16路数字信号处理、16路数字信号的输出、1路脉冲信号处理、多路过程控制参数的实时计算、各种状态及参数的实时记录等。三个子系统的硬件设计完全相同,通过CAN总线与RS422串口交换信息,通过软件配置为各子系统分配资源、动态分配任务,有效地均衡了各处理机的负载。三个子系统资源共享、互为备份,提高了整个系统的可靠性。
在实时系统中,如果系统的运行不能满足响应时间的要求,将会导致整个系统的崩溃。因此,分布式系统各组件之间的通信和协调工作是实现系统各组件并发处理、系统资源共享、均衡系统各组件的负载、提高整个系统的吞吐量、保证系统可靠工作的关键。
本文重点讨论了各子系统之间的通信方式、系统的任务分配和系统的协调工作机制。
1、系统的构成
1.1 CAN总线
CAN(Controller Area Network)属于总线式串行通信网络。CAN总线有效地支持安全可靠的分布式实时控制系统,通信方式灵活、抗干扰能力强、可靠性高,直接通信距离最远可达10km(传输率5kbps以下),通信速率最高达1Mbps(通信距离40m以内),网上节点数可达110个。CAN总线为多主工作方式,可以方便地构成多机备份系统。
1.2 数字信号处理器
TMS320F2812 DSP是工业控制领域的一种高端产品,具有速度快、功耗低、接口方便灵活、易于开发、精度高、兼容性好、资源丰富等特点。F2812采用哈佛总线结构,具有32位高性能的CPU,时钟频率为150MHz并支持动态改变锁相环的频率,拥有Flash等多种类型存储器、PIE中断模块、A/D转换模块、事件管理器、SCI口、SPI口、eCAN总线和McBSP通信模块等丰富的外围设备,可以满足各种应用的需求。
1.3 基于DSP的嵌入式子系统的硬件构成
基于TMSF2812 DSP的嵌入式子系统(见图1)是为满足实时多任务而设计的,硬件、软件可根据需要进行裁剪,可靠性高、响应速度快、自动化程度高。
三个子系统的硬件设计完全相同,除DSP片上资源外,每个子系统都扩展了非易失性存储器(E2PROM或铁电随机存储器)、SRAM、四路RS422接口(两路RS232可选)、实时时钟等辅助模块。
1.4 系统的体系结构
该系统是由三个基于F2812 DSP的嵌入式子系统A、B、C通过CAN总线构成同构异步的分布式系统(见图2)。三个子系统没有主从关系,各子系统的功能根据系统状态,通过任务分配策略,用软件配置。三个子系统与硬件、软件互为备份,提高了系统的可靠性。
三个子系统之间主要通过CAN总线进行信息交换,变化较慢的数据也可以通过UART串口进行交换。每个子系统都能够同时接收信号,也能够输出控制信号。通过特殊的硬件设计,每个子系统都具有故障隔离的功能,可以防止因为一个子系统出现故障而影响整个系统的工作。
2、分布式系统的协同工作
分布式系统的资源位于不同的位置,系统需要不断监视各组件的状态,检查资源的使用情况。当一个处理器出现故障时,系统应该立即响应,重新调配资源,规划任务分配方案,确定任务分配策略,重构系统,必要时牺牲系统的某些性能,以保证系统正常工作。
2.1 系统状态监视
系统状态包括每个子系统各个模块的工作状态(CPU、UART的工作状态、片上存储器(SDRAM、FLASH等)和片外存储器(SRAM)、非易失性存储器的分配情况)、每个子系统之间的通信状态等。
分布式系统中,各子系统难以确定系统的状态。为此,网络上的每个子系统应定时向其他子系统广播,将各自的状态通知其他子系统(见图3)。如果在规定的时间内没有收到某个子系统的消息,则认为该子系统出现故障,系统应重新配置系统资源、重新分配任务,重构系统。
图3中:SCAB表示子系统A到B通信的情况。通过A、B、C之间的相互通信,确定系统的状态。
不失一般性,令三个子系统的状态的集合为SA、SB、SC,则系统状态SS为:
SS=ρ(SA∪SB∪SC)
={Si|0≤i≤N} (1)
其中:ρ(A)表示A的幂集,N=|SS|
2.2 任务分配策略
一般情况下,多处理机任务分配问题是NP-完全的,通常是根据具体应用需求,确定一个可行的、比较满意的任务分配策略。任务分配的目的是合理配置系统资源,设法减少系统中各处理器间的通信开销和执行模块所需的开销。均衡负载是将系统承担的任务合理地分配给系统中各处理机,最大限度地提高系统的吞吐量。一般来说,减少系统的通信量和均衡负载是相互矛盾的。因此,任务分配策略也就是最大限度地减少系统中各子系统间的通信量,同时均衡各子系统的负载,以此提高整个系统的性能。
系统的任务分配有两种方式:自动方式和人工方式。自动分配方式是根据系统状态和各子系统任务量的估计确定任务分配策略,通过软件自动为各子系统分配任务。人工分配方式是测控中心通过指令为子系统分配任务。
不妨假设系统是由N个组件构成的一个分布式系统,承担的任务为T,则:
在实际应用中,任务分配策略受多种因素的制约和影响,如空间限制、信号干扰、通信距离等,所以,只能在一定条件下最大限度地满足负载均衡、任务间最小通信量等任务分配原则。
在该系统的具体应用中,考虑到信号干扰和数据传输的要求,将系统承担的任务主要分为信号的采集/预处理(SP)、信号运算(SC)、过程控制(SO)。SP任务主要承担23路模拟信号的采集、AD转换、信号滤波等;SC任务主要承担各类信号的运算;SO任务主要承担过程控制的参数计算、控制信号输出、与测控中心实时交互等。经过测试,CPU对于SP、SC、SO任务的负载基本均衡,三个子系统之间的通信量基本相同。将承担SP任务的子系统尽量放置在信号源附近,将承担SO任务的子系统尽量放置在控制部件附近,可以减小信号的干扰,同时也能减少数据的通信量。基于以上因素的考虑,根据系统状态,确定如表1所示的任务分配策略。
2.3 系统的协同工作
系统协同工作包括系统资源的统一调配(CPU、各类存储器、事件管理器、GPIO等)、根据实际需求和系统状态确定任务分配策略以及为各子系统分配任务。当系统状态变化时,重新配置系统资源、确定任务分配策略,为每个子系统重新分配任务(见图4)。该系统正常工作时,三个子系统分别承担信号采集/预处理、信号运算和过程控制任务;当一个或两个子系统出现故障时,系统通过CAN总线检测各子系统情况,确定系统的状态,根据任务分配策略,由其余子系统代替故障子系统的任务。当线路出现故障时,由测控中心通过串口发送指令,人工分配任务,保证系统正常工作。
2.4 辅助通信、与测控中心交互
系统由三个子系统构成,每个子系统有四路RS422串口,记作Ai、Bi、Ci(i=1、2、3、4)。根据任务的需求,Ai、Bi、Ci连接在一起,分别完成信息采集、子系统之间辅助通信、与测控中心交互的任务。
与测控中心实时交互的目的是:一方面将系统状态和各种参数传送到测控中心;另一方面,测控中心可以发送指令,完成指定的任务。
测控中心实时监视系统的工作状态。当CAN总线工作正常时,系统自动完成任务分配等任务;当CAN总线出现断路或其他线路故障时,测控中心发送指令给系统,人工分配任务,保证系统正常工作。
根据任务的需求,三个子系统的串口Ai、Bi、Ci(i=1、2、3、4)连接在一起发送数据时会发生冲突,因此,系统应根据各串口的工作状态确定线路状态,根据线路状态决定对串口的读写。
本文介绍了由三个DSP嵌入式子系统构成的基于CAN总线的分布式系统的软、硬件设计方案,着重分析了各子系统之间协同工作的方式。该系统充分利用了分布式系统的并发性和可靠性等特点,在满足多路信号实时处理、多个过程控制、与测控中心实时交互等要求的基础上,采用自动分配任务和指令分配任务相结合的方式,有效地提高了系统的可靠性。实验仿真和现场测试表明,该系统不仅满足了任务要求,而且还具有很高的稳定性和可靠性。