基于OM APL138的塞拉门控制器研究*

2019-09-03 07:23卜云祥黄巧亮华明公
计算机与数字工程 2019年8期
关键词:胶条塞拉双核

卜云祥 黄巧亮 华明公

(1.江苏科技大学电子信息学院 镇江 212000)(2.常州今创集团 常州 213011)

1 引言

国外塞拉门的发展已经有多年历史,国内塞拉门的发展也有近 20年历史[1~2],自动化、智能化、高密封性[3~4]、高安全性与可靠性应是高铁塞拉门的发展趋势,而塞拉门门控器的设计则成为重要设计内容之一。

本文基于OMAPL138芯片的门控器设计,是对现有塞拉门控制器采用两个独立核心板进行控制所存在的占用空间大、硬件成本高、后期软硬件维护难度大等缺陷进行优化设计。本设计采用TI公司的DSP+ARM双核异构处理器,有效解决了原设计存在的缺陷并提高了塞拉门控制的精确性和稳?定性。

2 系统功能

塞拉门控制的具体功能要求如下。

1)数据采集。塞拉门控制器通过传感器采集门的状态信息,每个门对应一个特定的ID,通过采集电路将采集到的门ID,开/关门按钮指令信息、气压信息、速度值等,送入控制器的CPU芯片中进行诊断处理。

2)状态检测。门控器核心板上处理器在判断出当前开门/关门/障碍物/故障状态后,根据不同情况作出不同反馈动作。障碍物/故障类别主要有敏感胶条触发、关门卡滞、开门受阻。开门受阻和关门卡滞情况,连续出现三次后,门停止开关门尝试,停在当前位置并向总控台发送诊断信息。故障信息则包括网络故障、气压故障、门锁未锁死/未打开故障、开到位/关到位检测故障等。处理器需要对检测过程中的诊断信息进行存储。

3)数据通信。处理器可与外界进行通信,通信对象可以是其他门控器、或上位机。

3 硬件设计

为满足塞拉门控制的功能要求,本设计的门控器核心硬件设计采用主从处理器模式,即主处理器(ARM核)主要用于对上位机通信及数据存储;从处理器(DSP核)主要用于对采集来的车门状态进行分析和判断并对塞拉门驱动电机的控制。从处理器对车门状态的诊断信息能传输给主处理器进行存储。

3.1 主处理器硬件设计

主处理器的硬件框图如图1所示。主处理器(ARM核)用于门控器之间数据通信、门控器与总控台之间的以太网通信[5]、诊断信息的存储处理及通信等。

NAND FLASH存储模块,NAND FLASH芯片选用S34ML01G1_04G1,用于存放主处理器运行Linux系统所需文件系统、内核文件、u-boot引导文件[6]。

DDR2共享存储模块,芯片选用MT47H64M16HR-25EITH,用于双核芯片DSP核和ARM核间的诊断信息数据的共享存储和读写。

串口模块,主处理器通过UART2_RXD和UART2_TXD引脚连接UART接口,以便于连接上位机软件进行串口调试。

以太网通信模块,主处理器通过RMII_RXD和RMII_TXD引脚连接以太网通信接口用于和总控台进行数据通信。

SD Card模块,通过MMCSD0_DAT数据引脚与主处理器相连,主要用于芯片ARM端运行的Linux系统的更新。

图1 主处理器硬件框图

3.2 从处理器硬件设计

从处理器(DSP核)用于对采集来的车门状态进行分析和判断。通过采样,检测到塞拉门出现故障时,能及时判断发生的故障。故障分为A、B、C三级:A级,车门立刻停止动作,进入释放状态,等待手动操作;B级:车门将继续进行开/关门尝试;C级:不影响门运行状态。故障不论级别,均会通过双核通信将诊断信息传送到主处理器(ARM核)存储,而正常运行时开关门信息则不进行诊断数据传输与存储。从处理器还能实现对塞拉门驱动电机的控制[7]。该部分硬件框图如图2所示。

图2 从处理器硬件框图

从处理器通过ADC采样引脚(Current1/2),连接外设系统的电流电压采样电路,用于对采集来的车门状态进行分析和判断。

从处理器通过eCAP口,与捕获电路相连,使得从处理器具有故障诊断功能。

从处理器通过普通GPIO口接口,与门控器电路相连,实现对塞拉门主锁、辅助锁、报警装置等硬件设备的控制,检测到开/关门信号(GPIO)时能及时执行开关门命令。

从处理器通过3路ePWM引脚连接电机驱动电路,实现对塞拉门驱动电机的控制。电机采用无刷直流电机。

DDR2共享存储模块,用于双核芯片DSP核和ARM核间对车门诊断信息数据的共享存储和读写。

从处理器通过普通GPIO口与外围设备蜂鸣器相连,用于对严重故障信息的报警发声。

4 软件设计

OMAPL138是DSP+ARM双核异构处理器[8],在本设计中,ARM核选用Linux系统环境Ubuntu 12.04取代之前的裸机开发,该版本内核支持OMAPL138的双核通信所用到的SYSLINK组件。DSP核则选择在Linux系统中安装Code Composer Studio 5.5(CCS 5.5)作为开发平台以降低后期软件维护难度。

4.1 系统软件总体设计

本设计中,根据塞拉门控制器的功能需求以及双核芯片的硬件特点,控制器软件设计主要分为主处理器软件设计和从处理器软件设计,本系统软件设计总框图如图3所示。

图3 系统软件设计流程总图

Syslink组件部分由主处理器进行启动并分配共享内存空间[9~10],依赖于主处理器启动,从处理器启动Syslink组件时只为从处理器本身分配双核通信空间。

由于塞拉门故障信息反馈对实时性要求较高,故Syslink组件启动[11]后,主处理器不进行组件的注销,Syslink组件随门控器运行而运行,使得主从处理器一直处于双核通信的同步连通状态。从而保证了故障反馈的实时性,增加了塞拉门控制的可靠性和安全性。

4.2 主处理器软件设计

Syslink中的处理器间通信协议(IPC Protocols)有很多类[12],本设计综合使用了多种组件和协议来传输诊断信息,共享内存地址范围为:0xc200 0000~0xc400 0000。Syslink 进 程 创 建 函 数 syslink_main()包含两步,程序如下:

在主处理中,启动Syslink组件的启动函数Syslink*dual_core_link_new()处理流程如图4所示。主要实现总图中,分配ARM端地址空间、初始化Syslink组件、连接IPC接口部分的功能。

通过函数dual_core_link_start()实现双核间通信建立流程如图5所示。主要实现总图中,IPC通信启动及连接部分的功能。

图4 Syslink创建流程图

图5 Syslink启动流程图

通信的建立只能由主处理器发起,从处理器则在上电自动启动Syslink组件后进入等待状态。

1)通过dual_core_link_new()函数创建双核通信进程。

首先主处理器需要为Syslink组件分配一个连续的内存空间以及为从处理器DSP分配一个存储空间:

Syslink*dual_core_linkspace=(Syslink*)calloc(1,sizeof(Syslink));

内存空间分配完成后,调用Syslink启动函数SysLink_setup(),初始化 Syslink组件,该函数为Syslink API接口函数,且必须在调用其他Syslink API函数之前调用。该函数调用时,若启动失败,则将错误信息存储到指定文件夹“stderr”中,延时1ms后再次尝试启动,最多尝试启动100次。“stderr”存储信息时,通过记录信息条数stderr_msg_count来确定是否初始化失败,若失败,则门控器数码管显示故障代码init_error_code。此时需要断电后重新给门控器上电。

if(stderr_msg_count>=100){Dig_display(init_error_code);break;}

调用Syslink API接口函数MultiProc_getId()获取从处理器ID(从处理器ID此后不可更改),然后返回Syslink组件分配到的内存空间首地址。

2)通过函数dual_core_link_start()实现双核通信建立。

根据新建双核进程时获得的从处理器ID:Processor_dsp_address,主处理器调用Syslink API接口函数Ipc_control()函数,先后进行加载、启动双核通信进程:

status_load=Ipc_control(*Processor_dsp_address,0xBABE0000,NULL);

if(status_load < 0){return false;}

0xBABE0000为IPC加载回调函数控制命令的ID,本段程序功能为发送加载双核通信组件命令给从处理器,Ipc_control()函数若通信加载成功则返回0,失败返回负值,根据其返回值,从而判断双核间通信是否成功加载。

加载后需要发送启动双核通信组件命令给从处理器,启动命令的判断过程与加载命令的判断过程相同,启动命令名为Ipc_CONTROLCMD_STARTCALLBACK,启 动 命 令 ID为0xBABE0001。

dual_core_link_start()函数返回值为布尔型,根据返回值可判断双核通信是否启动成功。若成功,则开始进行双核同步处理;若失败,则报错并在门控器数码管显示故障代码后等待门控器核心板断电重启。

if(! dual_core_link_start){Dig_display(start_error_code);break;}

双核同步处理过程,首先使用进程间信号量进行初始化并占用线程,然后使用Syslink IPC协议中的Notify_registerEvent()函数注册双核同步事件,最后解除进程间信号量阻塞,实现双核间通信同步。

主处理器在进入同步等待状态后,创建共享内存,通过Syslink IPC协议中的NameServer通信协议上传共享内存地址到Syslink组件。创建共享内存、设置共享内存大小由函数SharedRegion_getH-eap()、Memory_calloc()完成,由于传输数据内容较多,所以创建的共享内存空间要取较大值,本设计取共享内存空间大小为1M。

4.3 从处理器软件设计

从处理器即DSP端启动流程如图3右侧所示,Syslink组件的创建和初始化过程和主处理器相同,初始化Syslink组件后进入循环等待状态,DSP每隔1ms查询一次IPC端口状态。在收到主处理器端发送的Ipc_CONTROLCMD_LOADCALLBACK加载命令[13]后启动IPC通信。在收到主处理器端Ipc_CONTROLCMD_STARTCALLBACK命令后,退出循环等待状态,完成Syslink组件的创建和IPC通信连接[14]。

在双核通信连接建立后,DSP开始进入工作状态,进入车门诊断流程,DSP端诊断出故障信息时,获取共享内存地址,写入诊断信息(车门ID、故障代码、IO状态、网络信息、发生时间等)。其中,对敏感胶条的长时间触发诊断流程图如图6所示,诊断功能为内侧敏感元件一直有效,报此故障。

根据模块化的设计要求,向共享内存写入故障信息主要由Message_store()函数实现。Dig_display()函数为显示函数,用于控制数码管上故障代码显示。Timer_start()函数用于启动定时器,Timer_reset()函数用于复位定时器。

在内部敏感胶条被按下时,内部敏感胶条信号置1,同时检测定时器0的状态若定时器未启动则启动定时器0。开始计时,若已启动定时器0,则继续计时;若计时未到60s,则继续采集内部敏感胶条信号:

若敏感胶条持续触发且时间超过seted_time(60s)时,判定为已触发此故障。通过Message_store()函数对故障信息进行记录并存入共享内存中,通过Dig_display()函数在门控器上显示故障代码。从而实现了对内部敏感胶条故障的诊断。

其余诊断流程与敏感胶条诊断流程类似,就不再赘述了。至此,塞拉门控制器的软件设计全部完成。

图6 敏感胶条故障诊断流程图

5 结语

本设计基于OMAPL138的塞拉门控制器研究,减小了塞拉门控制器占用空间,通过SyslinkIPC双核通信保证了数据传输的快速性[15~16],增强了控制系统的精确性,降低了后期软硬件维护难度,为开发提供了便利,并且在实际应用中验证了可行性。

接下来的研究中,将尝试加入LCD显示屏数据接口。由于目前进行后期软件维护时,需要携带电脑,数据线等设备,而在调试现场的操作空间并没有那么大,现场维护有一定难度。使用LCD显示屏可以使后期的软件维护更加方便快速。

猜你喜欢
胶条塞拉双核
边角双核互相转,环环相扣不变心——解三角形经典题突破
卡西米罗·吉塞拉的诗
全球金融“F20”在此召开!横沥进入“双核”时代
浅谈门窗用整框注压胶条角部强度
轨道交通车辆全胶条密封车窗结构胶条接触应力计算
高速动车组塞拉门密封胶条国产化研究与应用
两厢车整车尾门框密封性能分析
双核家庭
洪都拉斯逮捕塞拉亚支持者
洪国被逐总统在边境安营扎寨