基于MATLAB的工程车辆控制系统通用设计平台的设计与研究
2023-03-12陈志华童晓斌张陆续
陈志华,童晓斌,张陆续
(湖南三一智能控制设备有限公司,长沙 410100)
1 引言
在工程施工中,能代替繁重体力劳动的机械与机具,统称为工程机械,其中带作业装置的自行式工程机械,简称工程车辆。工程车辆种类繁多,如装载机、泵车、压路机、推土机、摊铺机等,每种工程车辆均可在工程施工中完成特定的工程作业[1]。
工程车辆能够实现特定的工程作业,是由于其具备一个或多个控制系统,在控制系统中实现了对应工程车辆的工作逻辑。在传统的工程车辆控制系统中,通过PLC中的编程手段仅能够实现标准的控制逻辑,确保工程车辆能够正常工作,对于复杂算法设计和行业成熟技术引用没有成熟手段。随着汽车行业和工程车辆行业的结合越来越紧密,原本在汽车行业使用的基于MATLAB的开发模式给解决工程车辆的复杂算法和成熟技术集成难题提供了新的方向和思路,为此可将MATLAB融入工程车辆控制系统,但工程车辆的控制系统需解决以下3个问题:
1)MATLAB模型如何在现有工程车辆控制系统中集成;
2)MATLAB算法与原有的工程车辆CODESYS控制逻辑如何进行结合;
3)如何实现算法模型和控制逻辑之间的时序,确保其运行的准确性。
基于上述问题,本文根据工程车辆控制系统的特点,研究并设计了一种基于MATLAB的工程车辆控制系统通用设计平台。
2 系统总体方案
工程车辆控制系统通用设计平台总体设计框图如图1所示。
图1 工程车辆控制系统通用设计平台总体设计框图
工程车辆控制系统通用设计平台主要是结合控制系统、MATLAB和CODESYS来完成其平台的建设,整体框架采用上下位机的结构,上位机可以采用普通的PC设备,运行MATLAB和CODESYS软件,下位机即实际的工程车辆控制系统,实时运行MATLAB算法模型和CODESYS逻辑。
基于CODESYS的嵌入式PLC平台由其上位机软件开发系统(包括开发层和通讯层)和嵌入式实时核系统组成,并且其提供了特有的IO驱动模块开发接口,可以集成自定义IO模块来完成相关功能的设计[2]。
基于MATLAB的模型开发设计也采用与CODESYS相同的架构,其上位机安装MATLAB软件,实现算法建模、离线仿真、交叉编译、模型解析等功能,下位机实现模型的运算和调度,实时按照模型中设定的时间对模型进行计算。
在上位机中,MATLAB和CODESYS是两个独立的软件,可以独立开发完成各自部分的算法或者逻辑,并且都可通过以太网直接下载到下位机进行运行,两者之间通过MATLAB模型编译过程中生成的模型描述文件(XML)来进行模型信息交互,也就是变量交互指针。在下位机中分别运行MATLAB的BackGround和CODESYS的RunTime,分别用以调度MATLAB模型和CODESYS应用,在CODESYS中导入的模型描述文件中定义的变量交互指针指向MATLAB模型在下位机中运行时的变量空间,从而使得在CODESYS中可以实时监控MATLAB的变量。
图2 基于MATLAB的模型开发流程设计框图
3 基于MATLAB的模型开发流程设计
基于MATLAB的模型开发流程设计包括模型设计、驱动模块(用户C模块)接入、自动代码生成、编译连接下载和实时验证实验,具体开发流程如图2所示。
离线建模仿真是基于MATLAB的模型设计方法来实现的,开发工作完全基于模型设计,在设计的过程中可以离线仿真检查模型的正确性,实现在设计时进行需求的迭代[3]。离线建模仿真过程可以完成与硬件无关的所有算法的验证,与硬件相关的模型部分也可以通过设定硬件值的方法来完成验证。
驱动模块接入是针对控制系统来开发的通用模块库,包括用户自定义基础模块库(MATLAB或者C模块)、专业算法模块库(EMD算法库、Filter算法库、TOF算法库等)、硬件接口库(DI、DO、PWM等),具体如图3所示。算法库设计是一种增量设计模式,用户可根据需要进行算法库的添加,在不同的工程应用中,借用已有的算法库不仅能提高开发效率,也可有效避免新开发带来的不稳定性风险。
图3 驱动模块库示意图
自动代码生成借助MATLAB的RTW(Real-Time Workshop)工具箱来完成[4]。一般来说,控制系统支持C代码的执行,因此,在使用自定义的系统TLC中继承了MATLAB已有的ert.tlc或者grt.tlc的代码生成规则来生成代码,确保代码生成的可靠性,在此基础上增加个性化代码生成规则来实现其与CODESYS的对接。
编译链接下载需要将当前控制系统的编译器集成到MATLAB中,并且通过在系统TLC对应的TMF中建立编译器关联关系和规定编译选项的方式进行支持,可以完成一键编译链接下载。编译器是基于控制系统的开发环境提取的,能够将自动代码过程生成的C代码、驱动模块库对应的代码以及框架代码一起编译链接,生成能够在控制系统中直接执行的二进制文件。
实时验证试验部分采用CODESYS来完成,在CODESYS中导入编译过程生成的XML文件,该文件不仅规定了MATLAB模型与CODESYS进行数据交互的接口,还制定了CODESYS对MATLAB模型的控制接口。
4 基于MATLAB和CODESYS的协同运算设计
基于MATLAB和CODESYS的协同运算设计流程如图4所示,是基于3个方面来完成的:
1)MATLAB模型代码生成过程中自动生成CODESYS可导入的模型描述文件XML;
2)在CODESYS中通过模型描述文件实现CODESYS数据端口与MATLAB模型变量内存地址的绑定;
3)在运行的过程中MATLAB模型和CODESYS逻辑代码去与变量交互区进行数据交互。
在MATLAB代码生成的过程中,MATLAB提供了可插入自定义脚本的功能,在脚本中根据IEC61131的标准生成对应模型的XML文件,该文件描述了模型对应的输入输出变量及用户标识的需要监控的变量表,可直接通过CODESYS的PLCOpenXML导入功能直接导入已有的逻辑算法工程中,并且自动生成对应的变量结构指针,通过这些变量结构指针可直接访问MATLAB模型的变量。
将CODESYS逻辑代码中已有的变量跟变量结构指针建立绑定关系,如赋值、运算、引用等,使得MATLAB模型在CODESYS逻辑代码中就相当于一个模块来调用。
在控制系统中MATLAB模型运行时将会开辟对应的变量地址空间,并且将上述模型信息XML文件中定义的变量的地址空间直接映射为变量交互区,在CODESYS逻辑运行的时候根据模型信息XML文件中的描述信息来访问变量交互区,从而使得MATLAB和CODESYS可以协同计算。
图4 基于MATLAB和CODESYS的协同计算流程图
5 设计平台应用
5.1 臂架振幅检测算法集成
一般情况下,控制系统所采集到的机械故障信号都不是线性信号和平稳信号。在泵车设计过程中,泵车臂架振动信号也是这种无序的信号,怎么将臂架振动规律统计出来一直是一个难题。经验模态分解(Empirical Mode Decomposition,EMD)方法是一种处理非线性、非稳定信号的有效分析方法,主要包含EMD分解和希尔伯特变换两个过程[5]。在本平台中使用EMD方法来处理臂架振动信号,可统计臂架振动规律,具体实现过程如下:
1)在控制系统中,通过传感器采集臂架角度;
2)根据臂架本身的特性和其角度信息计算出臂架末端的位置信息;
3)将臂架末端位置数据传入EMD算法中进行分解和统计;
4)得出臂架振动规律来进一步优化臂架操控算法。
其中,EMD算法在传统控制系统中用PLC代码无法实现,采用本设计平台,用MATLAB模型来实现EMD算法,将臂架末端数据作为模型输入,统计结果作为模型输出,如此则可将臂架在一段时间内的振动数据统计出来,振动数据如图5所示。
图5 臂架振动数据获取图
通过对大量泵车的臂架数据的收集和分析,可以得出臂架振动规律,根据该规律来改变臂架操控属性设置,优化控制算法,从而达到提高臂架稳定性,更进一步提升施工安全性的目标。
5.2 电动智慧矿车算法集成
当前全球面临着能源短缺的危机,并且大气污染也是急待解决的难题。这两大问题直接导致了传统交通和工程机械向着电动化方向发展[6]。在电动化转型的过程中,传统交通工具——汽车已经走在了前头,采用本设计平台可以将汽车行业成熟的电动化应用模块快速拿来在工程机械控制系统中集成,从而加快工程机械的电动化转型。具体实现如下:
1)将电动化模型封装为MATLAB模型,提取其输入输出,如图6、图7所示;
2)在CODESYS中导入模型描述文件,并且将模型对应的端口跟实际的物理变量绑定。
图6 模型封装
图7 具体算法
可在实车上通过CODESYS软件来对MATLAB模型进行算法参数优化和标定,也可借用其曲线绘制功能来查看变量之间变换的联系和规律,从而在精确的时间点上精准地把控算法的变换情况,可将算法的最优配置在线调出来,使得车辆性能最佳,曲线绘制功能示意图如图8所示。
图8 曲线监控、对比示意图
5.3 泵车重心算法集成
在传统的泵车使用过程中,往往由于支腿和臂架展开匹配不到位导致泵车侧翻事故频发,采用该设计平台在MATLAB中对整车重心进行算法仿真,仿真结果如图9所示,并且将其直接转换为代码在控制系统中进行计算,结果如图10所示,能够将当前支腿打开位置、角度对应的臂架可伸展的最高、最远临界点精准计算出来。可将该临界值传递给显示屏,在显示屏中将相对应的信息提示出来,用于指导用户作业和做出临界点预警,从而提高泵车使用的安全性。
图9 泵车整车重心仿真结果
图10 泵车整车重心实际运行结果
5.4 料位检测图像识别算法集成
传统泵车打泵的过程中,料斗料位的控制要么通过按喇叭警示要么通过人工呼喊提示的方式来实现,并且需要在施工现场和投料现场分别安排人员来进行操作。
在料斗上安装摄像头,如图11所示,捕获料斗料位信息传递给控制系统,在控制系统中采用本设计平台通过料位检测图像识别算法对料位信息进行分析处理,得出当前是否需要投料,并且将结果传递给投料设备(如搅拌车),从而达到自动投料的效果,既可提高投料的效率,节约人力,又可减少噪声和操作不及时引发的其他问题。
6 结语
本文在已有的工程车辆控制系统基础上提供了一种基于MATLAB的工程车辆控制系统通用设计平台的设计实现方法,实现了MATLAB与已有控制系统相融合、MATLAB模型和CODESYS逻辑在正确的时序下协同运算的功能,解决了现有控制系统在复杂算法设计和快速集成成熟算法模块方面不足的问题。
在实际工作中已使用MATLAB的EMD算法来获取泵车臂架振幅,并通过统计分析改进设计以提高泵车的稳定性和安全性;在智慧矿车系统中可将现有汽车行业的标准模块拿来直接使用,提高了整车设计和开发效率;在泵车控制系统中使用在MATLAB中离线仿真计算过的重心算法,可提升算法开发集成效率,提升泵车安全性;使用图像识别算法进行料位检测,可实现泵车与搅拌车协同工作,从而提高泵车工作效率,并节约人力。
实践证明,采用该平台可突破传统控制系统局限性,提高复杂算法开发效率,增加模块化设计功能,扩展控制系统应用方向,从而加快工程车辆数字化、智能化转型。
图11 料斗摄像头安装现场图