DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 781|回复: 0
打印 上一主题 下一主题

[接口电路] 基于TMS320LF2407A的双CAN口同步通讯板设计

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-18 00:46:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
??? 随着现代战争要求武器系统在战场条件下的可靠性和维修性提高,传统分离式控制系统的快速保障难以满足要求。一体化车载PLC控制器以其高可靠性、模块化特性使其应用于防空武器火力控制,为了将其扩展到具有TTCAN(Time Trigger CAN)网络的武器系统,需解决PLC与TTCAN网络的数据同步问题。这里提出一种基于TMS320LF2407A的双CAN口同步通讯板设计,从而解决了车载PLC与防空武器TTCAN网络链接问题。2 双CAN口同步通讯板总体设计方案??? 由于系统TTCAN网络是时间触发的实时通讯,一体化车载PLC的通讯接口是标准的CAN,不具备接收同步信号和按指定时间序列发送数据的能力,因此无法直接与TTCAN网络连接。必须将PLC发送的数据经同步后再发送给 TTCAN网络,将来自TTCAN网络的数据经缓冲后发送给PLC。图1为双CAN口同步通讯板原理图。

??? 考虑到PLC的循环工作模式、数据发送时刻的随机性以及数据传输的非实时性等因素,则将MPC2515 CAN独立控制器作为PLC与同步通讯板之间的内部通讯接口。针对系统TTCAN网络必须在指定时隙内实时完成数据接收、发送、交换和处理的特点,只有将 TMS320LF2407的内部CAN控制器配合内部高速总线、高速RAM以及DSP强大的运算能力,才能满足TTCAN网络要求,因此选用 TMS320LF2407的内部CAN控制器作为TTCAN网络的通讯接口。
                          
                       
                          
                                3 双CAN口同步通讯板接口硬件设计3.1 同步信号接口??? 由于同步信号是为整个TTCAN网络提供时间基准的,其故障导致整个网络瘫痪,所以系统同步信号采用RS485差分方式传输。为了进一步提高同步信号抗干扰能力,在两条差分传输线输入端采用磁珠消除叠加在同步信号上的共模干扰,并采用高速光耦隔离对通讯板其他器件的干扰,这样可以确保同步信号接口的可靠性,其电路设计如图2所示。

3.2 同步通讯板与PLC CAN接口??? 该接口电路使用CAN2.0B协议实现与PLC的数据通讯。TMS320LF2407通过10 MHz SPI接口配置MPC2515的参数。数据收/发控制均采用硬件方式将信号接入TMS320LF2407的外部中断源INT2与INT3。当RX0BF和 RX1BF为低电平时,表明MCP2515已接收到数据,TMS320LF2407可以对MCP2515进行读操作;当RX0BF和RX1BF为高电平时,表明MCP2515未接收到有效数据。发送请求控制使用TMS320LF2407的IO接口向MCP2515发出硬件请求命令TX0RST, TX1RST,TX3RST来实现快速发送请求。接口电路采用光耦隔离和共模扼流线圈方法提高接口电路的抗干扰性能。其电路设计如图3所示。

4 双CAN口同步通讯板软件设计??? 双CAN口同步通讯板软件分为3个模块:??? (1)CAN随机通讯模块负责与PLC的随机CAN通讯,接收来自PLC的突发数据,发送来自TTCAN网络数据;
                          
                       
                          
                                ??? (2)TTCAN通讯模块负责与TTCAN网络通讯,在同步信号控制下按时序要求向TTCAN网络发送数据和接收来自PLC的随机CAN数据:??? (3)数据缓冲模块负责PLC和TTCAN网络数据的同步,完成必要的通讯处理任务。图4为各模块之间的协同工作流程。

4.1 CAN随机通讯模块软件??? 首先初始化TMS320LF2407的SPI接口,然后设置MCP2515 CAN的通讯参数完成模块的初始化。函数SPI_WRITE_COMMAND(unsigned int ADDRESS,unsigned intDATA)更新MCP2515的指定寄存器中的内容;函数SPI_READ_COMMAND (unsigned int ADDRESS) 读取MCP2515指定寄存器;函数RTS_123(unsigned int NUM)从数据缓冲区提取数据按指定通道数据发送给PLC;函数RANDOM_RCV()将来自PLC的数据经查询接收后存放到数据缓冲区。通过以上函数实现同步通讯板与PLC CAN口的数据收发功能。4.2 TTCAN通讯模块软件??? 该模块由甬数CAN_INIT()完成对TMS320LF2407内部CAN控制器的初始化及通讯参数设置;函数dsp_can_send(unsigned int IDH,unsigned int IDL,unsigned int*data1)从数据缓冲区提取数据向TTCAN网络发送;接收中断服务函数CAN_RCV_ISR()从TFCAN网络接收数据并存入数据缓冲区;而同步信号接收函数sytem_syn()实现与TTCAN网络的同步以及发送时隙的控制。4.3 数据缓冲模块软件设计??? 该模块是双CAN口同步通讯板的核心,其目的就是确保来自PLC的随机数据经该模块后可以实现向,TTCAN网络发送的数据是在同步信号控制下,按指定时隙发送,来自TTCAN网络的数据经该模块做必要的解析后转发给PLC。为此设计两个循环队列缓冲区mcp2515_rcv_buffer和dsp_rcv_buffer实现PLC数据与TTCAN网络同步。实现方法如下:??? (1)通讯板接收到PLC数据后,将其数据存放到mcp2515_rcv_buffer缓冲区中,然后MCP2515指示索引 mep2515_rcv_index加1;DSP CAN同步数据发送时按索引dsp_send_index的值从mcp2515_rcv_buffer缓冲区对应位置提取发送数据,然后该索引值加1。当 (mcp2515_rcv_index+1)%FIFOMAX==dsp_send_index,表明MCP2515接收缓冲队列已满(FIFOMAX缓冲区最大长度定义);dsp_send_index==mcp2510_rcv_index,表明MCP2515缓冲器已满。??? (2)同步CAN口接收的数据存放到dsp_rcv_buffer缓冲区,然后指示索引dsp_rcv_index加1;MCP2515数据发送使用索引 mcp2510_send_index在循环缓冲区dsp_rcv_buffer提取对应的数据发送给PLC CAN。当mcp2510_send_index==dsp_rcv_index,表明DSP接收缓冲区空;(dsp_rcv_index+1)% FIFOMAX==mcp2510_send_index表明DSP缓冲队列满。5 结束语??? 该双CAN口同步通讯板在连续600 h、不同数据流量的测试中表现良好,无任何异常。现已成功应用于某型防空武器火力控制分系统。实践表明该设计能够很好扩展PLC在防空武器系统TTCAN 网络上的应用,极大提高了火力控制系统在战场条件下的可靠性和可维护性,符合模块化设计总要求。同时,该双CAN口同步通讯板也可广泛用于事件触发数据与 TTCAN网络的接入应用。
                          
                       
                          
                               
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-5-4 08:00 , 耗时 0.084310 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表