上电及下载程序时控制器的数字量输出设计
1 引言 在工业自动化领域,基于mcu内核的控制器得到极其广泛的应用,包括plc、dcs和ipc以及工业领域的嵌入式系统等所有主流的工业自动化平台。mcu通过数字量模拟量的采集处理及输出,实现对外围强电设备的控制。 mcu内部程序运行的时候,控制器能够精确地对信号进行采集和输出。但是在上电瞬间及下载程序时,由于mcu内部程序没有运行,一些mcu芯片的端口电平为不确定值。不正确的设计会导致数字量不正常输出,使外围中间继电器产生误动作。虽然有时只是一瞬间的“抖动”,但这样的误动作仍然是很危险,所以必须对控制器的上电瞬间作数字量输出延时,下载程序时关闭数字量输出,这样系统才安全可靠。 在测试风电变桨控制器的过程中发现,如果带载测试时mcu控制器的数字量不正常工作,可能出现在电机刹车“抱死”的状态下,伺服驱动器仍然给电机供电,导致电机堵转,电机电流过大,造成的危害是很明显的。
2 mcu的数字量输出电路 数字量输出电路结构简单经典,电路结构如图1所示。为提高抗干扰性,数字量输出作低电平有效输出设计。通过mcu发送相应信号,控制电路板上继电器的开关状态,输出需要的开关量。将继电器一个触点作公共端连接外部24v电源,用以驱动外部中间继电器线圈。 但是,mcu在上电瞬间及下载程序时,总线上的数据不稳定,容易导致电路板上的小继电器“抖动”或直接输出,导致外部继电器相应动作,给系统造成一定的安全隐患,所以,必须对输出进行上电延时,在下载程序时关闭输出。
3 上电延时电路设计 cmos元件的输入电阻高,阈值电压为电源电压的二分之一,非常便于组成电容式充放电式延时电路。 现在有很多延时电路,但有的结构过于复杂,性能不够稳定。设计一个简单可靠的延时电路,如图2所示,在实际应用中表现良好。 系统上电时,vcc(5v)通过充电限流电阻r1向电容c1充电,充电完成后,与门输入才为逻辑“1”,使得门电路输出“1”,驱动三极管导通,继电器线圈得电,控制电路板上继电器的24v电源导通,数字量才能输出。延时时间与电阻r1和电容c1成正比。通过调节r1和c1,可以得到需要的延时时间。mcu只需要很短的时间程序就可以完全正常运行,所以,延时不需要太长,根据实际情况调节r1、c1,得到满意的延时效果。断电后,电容通过r3放电,恢复原来的初始状态。 但是,要使得与门输入为“1”,r3必须大于或等于r1,造成放电时间太长。当电源断电后再上电的时间间隔比放电时间长时,也是电源两次故障间隔时间较短时,电容放电不完全,与门迅速输出“1”,导致三极管导通,延时失效。所以针对电容放电作了改进,如图3所示。 同样,初始状态继电器,三极管均未导通,上电延时电路原理同图2,不同的是,当继电器u3动作时,1,2触点吸合,使得电容瞬间放电完成,而且1,2触点形成继电器自锁,即使电容放电造成三极管被关断,线圈仍然得电可以继续工作,同时避免了vcc波动造成门电路误动作。 图3所示的电路是延时上电后完成电容放电,若需要断电立即放电,可将电容c1旁的触点换作“常闭”型,断电后,电容可以迅速放电,选择不同的电路适应不同的场合。
4 下载程序输出设计 虽然在线下载程序越来越受到关注,但是目前很多控制器还是采用串口方式下载程序,下载程序时,mcu数据总线上电平仍未知,同样会导致输出误动作等问题。如英飞凌的xc164单片机下载程序时,须将mcu的“读”信号拉低使能,才可向mcu写程序,如图4所示。 而常用的数字量输出锁存器574与单片机连接如图5所示,通常mcu的数据总线是输入输出复用,所以可将“读”“写”信号和相关芯片的片选信号作一个“或”逻辑,用以区分总线上的数据。由于“读”“写”信号自带一个触发边沿,可以用作锁存器的clk作为输出信号。 如果oe使能信号是直接接地,这样问题同样存在,由于输出一直使能,在上电一瞬间或是错误的下载操作行为下,574的clk会收到一个上升沿,有可能导致某些数字量输出,所以在下载程序时,必须将数字量输出“关断”,如图6所示。
但下载程序时,需将拨码开关“导通”,使得mcu读信号使能,同时将574的使能信号拉高,不管总线上数据如何变化,数字量不再输出。而将拨码复位时,使能信号通过电阻接地,仍为低电平,574可以继续正常工作。此方法操作简单,已在实际中应用。
5 结束语 本文通过分析实践中遇到的问题,说明一些设计中的小细节,解决了工业控制器中延时上电和下载程序是可能遇到的一些问题,实现可靠、安全的控制。
|