0 引言
内燃机车在实际应用中仍占有很大的比重,比如在货运及调车运转方面发挥着重要的作用,且随着科学技术的发展,对机车的可靠性,安全性及高效性提出了更高的要求。因此,基于内燃机车的新设备的开发和研究很有必要。
目前,我国大多数内燃机车逻辑控制电路采用继电器有触点控制,有触点电器故障率高,长期使用容易导致动、静触头接触不良甚至不导通,更严重的是,机车运行中的强烈振动可能引起控制电路的误动作,给行车带来危险。此外,传统有触点控制电路接线复杂,给布线,维护和检修带来了很大的不便,且控制系统的通用性和灵活性差,当机车的控制功能或控制过程需做修改时,必须重新布线。
本文介绍的内燃机车逻辑控制模块的设计,首先对内燃机车的控制逻辑进行分析优化,然后设计可以完全取代原有逻辑控制功能的 IP核,在此基础上利用 SOC技术并结合电力电子技术取代了机车上继电器和接触器的辅助触点,最大限度地简化了传统的有触点控制电路,减少了外部连线,提高了系统的可靠性和设计制造的灵活性,缩短了内燃机车设计调试的时间,实现了控制系统的通用性。 1 逻辑控制模块的整体结构
内燃机车逻辑控制模块由输入、输出、控制、电源这四个部分组成(如图 1所示)。每个模块包含两套结构和功能完全相同的系统,每一套系统都能独立工作。同一时间,一个逻辑控制模块中只有一套系统进行工作,另一套系统备用,由模块上的电源转换开关在两套系统之间进行切换。
整个系统包括逻辑控制模块,司机室显示屏,检测仪,数据采集模块四种节点,在实际运行中,逻辑控制模块需要向显示屏传输自身状态等数据信息用于显示,并且还要接收检测仪的 定时查询,因此它还承担着接收和发送信息的任务,所以在设计中加入了 CAN总线控制器,通过 CAN总线跟其它节点进行信息交互。
逻辑控制模块的硬件设计
2.1 输入与输出电路的设计
输入电路用于采集机车上各条控制线路的信号,因此整个输入电路由若干路结构相同的输入通道组成,如图 2所示。
输入通道采集的信号来自内燃机车上的 110V线路,110V的直流信号通过降压处理后,经过光耦隔离和施密特触发器(74HC14)整形和滤波,生成 CPLD能够处理的信号,然后传输给CPLD,为 CPLD进行逻辑判断和控制提供相应的线路信息。
输出电路也由若干条结构相同的输出通道组成,用于驱动内燃机车上的接触器及控制一些用电设备(如干燥器,指示灯等)的开通和关断。输出通道的结构如图 2所示。
CPLD以原有的逻辑控制电路为基础,根据输入信息进行逻辑判断和处理后输出各种控制信号,输出的控制信号电压为3.3V,不足以驱动MOSFET,因此,首先通过驱动芯片 ULN2004将控制信号放大到 7V左右,然后利用原副边比1:3的变压器放大到 20V左右以达到能够驱动 MOSFET的电压等级。该变压器除起到信号放大作用外,还起到了保护和隔离的作用,进一步提高了整个系统的安全性和可靠性。CPLD输出的控制信号经过一系列处理后通过控制MOSFET的开断实现了对机车上的接触器及用电设备的控制。
2.2 控制电路的设计
控制电路主要由两部分组成,一是以 CPLD为核心的机车逻辑判断和控制部分,一是以单片机和 CAN控制器为核心的通信控制部分。控制电路的结构如图 3所示。
本次设计中使用Lattice公司ispMACH4000系列的LC4512V型CPLD,ATMEL公司的 89C52单片机,采用 Philips的 CAN控制器 SJA1000及 CAN收发器PCA82C250。由于 CPLD内部资源有限,为节省对晶振分频所耗费的资源,采用外部 100HZ的时钟发生器,该时钟发生器由NE555芯片构成,为 CPLD提供计算时间的基本时钟,用于逻辑控制中的延时和信号滤波。CPLD电源为 5V转 3.3V的电源芯片LM3940,为 CPLD提供稳定的 3.3V电压。单片机外接 5V电源。CPLD将需要传输的信息传递给单片机(MCU),再由单片机控制通信部分完成发送任务。PCA82C250是 CAN控制器和物理传输线路之间的接口,提供了对总线的差动接收和差动发送能力,为了增强系统的抗干扰能力,在 SJA1000和 PCA82C250之间使用光耦 6N137以实现电气隔离,在通信控制部分使用 B0505隔离电源模块。
2.3 系统电源介绍
逻辑控制模块上分为四个电压等级,分别是110V,12V,5V,3.3V。其中 110V为机车控制电路电压,为逻辑控制模块的电源模块提供稳定的输入电压;12V为驱动芯片 ULN2004提供电源;5V给单片机及外围电路供电;3.3V给 CPLD及输入隔离电路供电。
12V和5V是采用标准化的机车专用电源模块将 110V电压变换得到,该电源模块的输入
输出均采用相应的保护,提供系统工作所需的两路电压。3.3V由电源芯片 LM3940转换得到。 逻辑控制模块的软件设计 逻辑控制模块的软件设计包括机车逻辑控制 IP核设计及 CAN通信的程序设计。
3.1 机车逻辑控制IP核设计
本系统采用SOC 技术设计,将信号采集,处理,控制,存储,传输等功能在一块 CPLD上实现,该系统实现的前提是机车逻辑控制 IP核的使用。机车逻辑控制 IP核采用 Verilog语言编制,使用Verilog-HDL设计,采用自顶向下的设计方法,把本系统分为几个基本模块(如图 4所示),再将每个基本模块划分为下一层次的基本模块,直到能用 PLD器件结构相对应的逻辑单元来实现。
在输入模块的设计中,为每一个输入信号设置一个输入状态寄存器,用于存储各输入信号状态;并设置一个输入缓冲区。整个输入模块的功能就是读取输入信号状态,并将其置入输入缓冲区,其工作流程如图六所示。同样,在输出模块的设计中,为每一路输出也设置一个状态寄存器,并设置一个输出缓冲区。输出子模块的主要功能就是从输出缓冲区中读取输出状态并将其输出。
功能模块主要用来完成逻辑功能的实现。该模块中根据机车原有的逻辑控制电路生成了各种虚拟继电器和接触器,执行时首先从输入缓冲区中读出各输入状态,如果有延时关系,还得从延时模块中读取相应的参数;然后调用各种虚拟继电器或接触器判断逻辑关系的成立与否;如逻辑关系成立则将相应的输出状态寄存器置“1”,否则置“0”。
延时模块用来实现相应时间继电器功能的,当有延时信号到来时,启动延时模块,首先初始化各寄存器并设置延时值,然后开始计时。如果延时信号在延时时间到后还存在,则设置延时缓冲区参数;否则结束延时过程。
数据传输模块实现CPLD和单片机之间的数据传输,CPLD将相应的数据存储在寄存器中并映射到单片机的地址空间,单片机将 CPLD作为外设进行读写操作。
3.2 CAN通信程序设计
内燃机车逻辑控制模块作为整个检测控制模块中的一个节点,需要同其它节点进行信息交互,交互的数据包括逻辑控制 IP核功能模块中生成的虚拟继电器,接触器的状态信息及故障信息。本设计中采用 CAN总线作为数据传输的媒介。
逻辑控制模块在三种条件下对外部发送信息。
1 没有接收到外部请求及自身数据信息没发生改变的前提下定时对外部发送数据。通过单片机内的定时器实现。
2 当需要传输的数据发生改变时,立刻对外部发送数据。单片机在每一个 While循环中查看数据的状态,如数据发生变化则调用发送函数发送数据。
3 当接收到外部请求时,立刻对外部发送数据。在接收函数中对接收到的数据进行校验,正确后接收,再根据定好的协议得到目标节点地址并判断是否是请求数据发送,如果是则调用发送函数向目标节点发送数据。
CAN通信的主程序流程图如图 5所示。
4 逻辑控制模块抗干扰设计
由于机车运行环境的特殊性,对逻辑控制模块的稳定性和抗干扰能力有更高的要求。在系统的输入端加入光耦器件进行隔离,在输出端加入变压器进行隔离,这样既提高了系统的抗干扰能力,又进一步保证了系统的安全。同时通过使用施密特触发器,加入硬件滤波,能够有效地抑制幅值较小,持续时间较长的干扰信号,对于持续时间短,幅值较大的干扰信号的处理,通过在芯片内部用 Verilog引入滤波时钟和软件滤波模块实现数字滤波。 5 结语
内燃机车逻辑控制模块利用 SOC技术实现了传统的继电器控制电路的可编程无触点控制,大大减少了控制电路的机械触点和布线,简化了机车控制电路的设计、生产和调试过程,提高了控制系统可靠性,并且可以方便地用硬件描述语言完成各种控制功能,具有很强的灵活性和通用性。无触点控制是内燃机车电气控制系统的发展方向。
本文作者的创新点:采用 SOC技术,设计和利用内燃机车逻辑控制 IP核取代了原有的有触点控制系统,大大提高了逻辑控制系统的通用性和可靠性,简化了布线和生产调试过程。在通信方面,用 CAN总线取代了机车上原有的串口通信,提高了通信效率和稳定性。