论文摘要
现场总线是在生产现场连接控制器与测量设备之间的网络,目前得到认可的现场总线有十余种,CAN总线也是其中之一,由于其具有高可靠性、低成本、稳定性等优点,被广泛应用于汽车、电力、机械、化工、航空航天等控制领域,而在航空航天领域里,要求总线非常可靠的传输数据,且对总线进行管理, CAN协议无法满足这一要求,需要设计更高层的协议以及硬件设计方案。本文设计了一种基于NIOS II处理器的双冗余CAN总线模块,通过对CAN协议、1553B协议和冗余的分析,提出了支持此模块的双冗余CAN通信协议。本协议利用CAN总线的扩展帧,实现了总线管理和灵活切换总线的功能。在双冗余CAN总线模块中,采用在FPGA内部嵌入NIOS II处理器的设计方案,同时选用SJA1000作为CAN控制器,TJA1050作为CAN收发器,通过Avalon接口模块的连接,实现NIOS II处理器与外设之间的通信,包括NIOS II与CAN控制器SJA1000的通信、NIOS II与SRAM之间的通信以及NIOS II与FPGA的配置芯片EPCS4之间的通信。根据双冗余协议,总线上的节点分为主节点和从节点,通过在Eclipse集成开发环境里对NIOS II处理器的模块化编程,实现节点间的通信,使主节点和从节点完成各自的功能。主节点主要作用是发送命令、数据,错误处理;从节点主要作用是接收命令、数据,执行完成之后返回给主节点应答。由3个双冗余CAN总线模块搭建一个测试平台,一个模块作为主节点,另外两个模块作为从节点,实验结果表明本文提出的双冗余CAN总线模块的硬件设计方案以及软件设计合理,可以实现冗余功能。