摘 要: 为满足不同工程机械的控制要求,设计了一款基于CoDeSys的工程机械控制器,使其具有I/O端口的可配置性。该控制系统主要采用嵌入式软PLC技术,以符合IEC61131标准的CoDeSys的运行系统为调度核心,以英飞凌公司的TriCore系列微控制器TC1793为硬件核心。重点阐述了控制系统的硬件设计、软件开发,以实现控制系统的开放性、通用性、高鲁棒性,具有良好的经济效益和广阔的应用前景。
0 前言
工程机械是国民经济建设的重要装备,在城镇建设、抢险救灾和国防建设中起着十分重要的作用。控制器作为工程机械的核心部分,是决定工程机械性能的重要因素之一[1]。然而工程机械控制器的市场几乎被德国的西门子和力士乐、美国的卡特彼勒、芬兰的EPEC等国外产品所占据;相比之下,国内起步较晚,没有掌握核心技术,大部分产品依靠进口,价格昂贵[2-3],故进行工程机械控制器的研究很有必要。
目前国内外的大部分控制器具有很强的针对性,但是功能单一,通用性不强,而根据现场作业条件,出现了不同种类的工程机械的需求,故相应的控制器的软硬件开发较多,这加大了人力物力的开销,不利于产品的更新换代。此外,目前大多数控制器所使用的硬件平台是16位的处理器,并且可编程控制器(PLC)的封闭性明显,这导致控制器的数据处理能力有限,开放性差,可编程性不够理想。
基于此,结合当前符合IEC61131标准的开放式控制器开发的基本思想,融合PLC和嵌入式控制系统的优点,以实现控制器开放性、通用性和高鲁棒性,本文提出了一种基于CoDeSys的软PLC与高性能的嵌入式硬件系统相结合的工程机械通用控制器的设计方案以解决上述问题。
1 控制系统的整体方案
1.1 系统的功能需求
种类繁多的工程机械,一方面,根据不同的应用场合,需要不同种类和数量的I/O端口,为满足要求,需要I/O端口具有可配置性;另一方面,为了便于系统的二次开发,降低开发难度,实现系统的开放性和通用性,需要采用符合IEC61131标准的开发软件。
1.2 系统的整体结构
图1所示为本文所设计的控制器系统的整体结构,包括硬件系统结构和软件系统结构。其中硬件系统结构是以英飞凌的微控制器为控制核心的硬件平台,软件系统结构是以CoDeSys的运行系统为调度核心,包括应用程序、CoDeSys的运行内核、驱动程序。
2 硬件设计
根据工程机械的功能需求,控制系统的硬件设计包括微控制器、输入模块、输出模块、通信模块、基本模块、存储扩展模块,如图2所示。
本设计采用英飞凌的32位微控制器TC1793为控制系统的硬件平台的核心,该MCU主频可达到270 MHz,具有很强的实时性,集成了DSP的数据处理能力[4],适用于高鲁棒性的控制;其内部提供了丰富的外设资源,有通用定时器列阵GPTA、同步串行通信接口SSC、捕获比较单元CCU、外部总线单元EBU等。这些完全可以满足设计通用控制器硬件系统所需的接口数目和种类的要求。
2.1 输入输出模块
通过控制器的输入模块实现对工程机械的开关量、脉冲量和模拟量的采集;通过控制器的输出模块实现对工程机械的执行器件的驱动和控制。为了让控制器能应用于不同种类的工程机械中,需要设计输入输出模块具有可配置性的功能。
本文设计了18路开关量的输入,其中有8路可以配置为正向开关量或负向开关量,用户可以根据不同的应用场合,在软件中配置该8路电路为所需要的开关量类型。采用飞思卡尔的多开关检测模块MC33975来设计开关量输入接口的电路设计,如图3所示。MC33975模块可检测22路开关量,通过SSC与MCU进行通信,实现SP0-SP7的开关量类型的选择,以及SP0-SP7和SG0-SG9开关量信号的采集。
设计16路模拟量的输入,用以检测油温、油位、水温等物理量传感器信号。为了实现不同工程机械对应的模拟量类型的采集,设计了8路模拟量类型可选择的采集电路,同时该8路电路可复用于开关量的采集。采用亚德诺半导体公司的低压CMOS模拟多通道复用器ADG704设计该模拟量输入电路,如图4所示。根据ADG704的A0和A1引脚的高低电平配置,选择S1~S4 4个输入之一切换到公共输出D。为此,通过设计R53~R56 4个分压电阻阻值,实现0~24 V、0~10 V、0~5 V和4~20 mA的模拟信号的检测。由于MCU的ADC只能采集0~5 V的模拟量信号,故本设计中采用了钳位二极管BAT4S构成电压钳制电路,以防止ADC引脚的转换电压过高,从而影响AD转换结果。此外,当GPIO0为高电平时,两个MOS管都导通,输入端+24 V上拉,此时可以采集开关量的信号。
设计了驱动比例电磁阀、油门电机等感性负载的PWM输出电路,同时该电路可复用于开关量的输出。本设计采用MCU的GPTA模块产生的PWM作为控制信号,使用英飞凌的智能高边功率开关BTS5215作为功率输出,具体的电路设计如图5所示。其中,CF与POUT之间加电流反馈电路,以防止功率负载因线圈阻抗的不稳定引起电流偏差,从而影响负载动作的精度。通过CF与POUT之间添加的0.1 Ω采样电阻,将OUT引脚输出电流0~7.4 A转化为0~0.74 V的电压,再经过放大增益为5 dB的电流反馈电路放大到0~3.7 V,连接回MCU的ADC引脚。由于TC1793的外设功能引脚与GPIO复用,故可将PWM输出引脚配置成GPIO模式,便可选择以PWM1和PWM2为开关量的输出。
2.2 存储器扩展模块和通信模块
(1)存储器扩展模块包括EEPROM、外扩Flash、外扩RAM。
所设计的控制器需要存储一些标定的参数、功率器件的阈值等,MCU集成了SSC,故选用ST公司同步串行接口EEPROM芯片M95640来存储这些参数。
为满足控制器的通用性,针对不同的工程机械,程序代码和数据的占用空间差别很大,同时为满足后续符合IEC61131标准的CoDeSys系统移植的需求,利用MCU集成的EBU,设计外扩Flash和外扩RAM模块。
(2)通信模块包含CAN总线通信和RS232通信。
种类繁多的工程机械所需控制部件较多,为便于数据通信,选用CAN总线,以实现控制器与仪表等外部设备之间的通信。本文采用TI公司的CAN收发器SN65HVD230设计电路。
采用RS232接口,实现控制器与CoDeSys编程环境的程序下载和上传。利用MCU集成的ASC,采用SIPEX公司的RS232收发器芯片SP3232设计电路。
2.3 电源模块
工程机械控制器一般通过车载蓄电池和发动机供电,但电压的波动大,并且各个模块所需的供电电压不同,故控制器的电源模块设计包括电源保护电路设计和电压转换电路设计。
工程机械供电系统常常伴有浪涌电压,这对硬件电路造成很大的破坏;此外,人为的误操作将电源反接也会对控制器造成很大的破坏。为此需要在电源模块保护电路中设计防浪涌电路和防反接电路。以凌特公司的过压保护芯片LT4356为核心,使用瞬态电压抑制二极管SMBJ5BCA吸收输入电压的浪涌功率,并钳制输入电压不高于+36 V,进而构建MCU的电源模块保护电路。
MCU的外设接口ADC需+5 V供电,CAN和I/O等需+3.3 V供电,内核需+1.3 V供电,而有些外围电路需+12 V供电,故控制系统所需的电压为+24 V、+12 V、+5 V、+3.3 V、+1.3 V。本设计选用线性稳压器LTM4607实现+24 V~+12 V的电压转换;选用LTM8025为核心构建+5 V、+3.3 V、+1.3 V的转换电路实现微控制器的供电;此外设计合适的外围电路以实现MCU上电时序的要求。
3 软件开发
为了降低程序的复杂度,使其具备可重构能力,以满足不同工程机械的控制要求,采用将应用程序和驱动程序分离的开发方法。
本控制器采用开放性的软件CoDeSys进行软件的开发,包括应用程序、CoDeSys的运行内核、驱动程序。软件系统的具体结构如图6所示。
其中CoDeSys软件是3S公司基于IEC61131标准的软件套件,包括CoDeSys运行内核和应用程序开发环境。CoDeSys运行内核需要移植到硬件系统中,移植工作主要包括:Target描述文件的设计、通信驱动描述文件的设计、I/O驱动描述文件的设计等[5-6],即形成一个用来描述目标系统与CoDeSys编程系统之间的软硬件的特定配置和定义的目标支持软件包。
I/O端口配置模块方便用户根据需要选择I/O端口的种类和数目,生成I/O配置文件,CoDeSys运行系统访问I/O配置文件,调用对应的底层驱动,以实现I/O端口的可配置性。其中I/O端口控制的部分代码如下:
#define AIDI_DI_Read[i] DI_Value[i];
#define AIDI_AI_Read[i] AI_Value[i];
void IO_Control()
{
……
for(i=0;i<m;i++)//本文的m为8
{
if(AIDI_En[i]==1)//1使能,0禁止
{
if(AIDI_Config[i]==DI)
{
*((unsigned int*)InputBuf [AIDIBaseAddr+i*2])=AIDI_DI_Read[i];
}
else
{
*((unsigned int*)InputBuf[AIDIBaseAddr+i*2])=AIDI_AI_Read[i];
}
}
……
}
}
以上过程总结为图7所示的系统软件主程序流程。
4 控制系统的性能测试
通用控制器的样机完成制作之后,需要对控制器的性能进行测试,主要包括可靠性测试、温度测试、通用性测试等。本文主要阐述控制器的通用性测试。
对控制器的通用性测试,采用在控制器的I/O端口加载相应的负载,并编写对应的测试程序的方法来实现。具体的实现方法是:在可配置为开关量采集的模拟量输入接口AIN上,分别接0~24 V之间的电压、4~20 mA之间的电流、0~1.5 kΩ之间的电阻;开关量的输入接口DIN和输出接口DOUT都接继电器;脉冲量输入接口PIN接PWM的输出接口;将可配置为开关量输出的PWM输出接口分别接电磁阀和继电器。通过这样的加载方式,用示波器分别观察对应端口的状态,实现控制器的通用性测试。例如PWM/DO端口,通过I/O端口配置模块先配置为PWM输出,加载PWM测试程序成功驱动电磁阀;再配置为DO输出,加载DO测试程序成功驱动继电器。用示波器测出该端口的状态分别如图8和图9所示。从图可知该端口可以实现PWM和DO的复用。
5 结论
通过加载测试,本文所设计的基于CoDeSys的工程机械通用控制器具有I/O端口可配置性,具备可重构能力,可以满足不同种类的工程机械的控制要求,降低人力物力的投入。此外,该控制器符合IEC61131标准,支持5种编程语言,为用户提供统一的编程环境,具有很强的开放性,便于实现控制系统的二次开发,在科技不断发展和市场竞争愈发激烈的形势下,具有良好的应用前景。
参考文献
[1] 王国庆,刘洁,张宗涛,等.工程机械智能化控制器研究[J].筑路机械与施工机械化,2008,25(3):73-75.
[2] 闵华松,李美升,魏洪兴,等.工程机械智能控制器设计[J].信息与控制,2011(2):254-261.
[3] 袁森,黄海松.基于MCU和uC/OS-Ⅱ的工程机械电气控制器设计研究[J].测控技术,2014,33(4):58-61.
[4] Infineon Technologies AG. TC1798. Data Sheet(V1.1)[S].2014.
[5] 3S-Smart Software Solutions GmbH. CODESYS control V3 migration and adaptation(Version 4.0)[S]. 2014.
[6] 王丽丽,康存锋,马春敏,等.基于CoDeSys的嵌入式软PLC系统的设计与实现[J].现代制造工程,2007(3):54-56.