APP下载

操作者框架在车辆传动系旋转耐久试验中的研究与应用

2018-12-27苏全在胡世广

无线互联科技 2018年20期
关键词:操作者试验台线程

苏全在,胡世广

(1.中国汽车技术研究中心有限公司,天津 300000;2.中汽研汽车工业工程(天津)有限公司,天津 300000)

汽车驱动桥在汽车行驶过程中承受复杂的载荷,它既要传递系统中的扭矩,又要支撑汽车的荷重。驱动桥必须具有足够的强度、刚度和寿命。因而驱动桥总成及其零部件必须经受严格的试验[1]。研究一种性能好、高精度的汽车传动系耐久试验台非常有必要。

1 试验台的构成

传动系旋转耐久试验台主要由驱动电机、驱动端变速箱、驱动端试件扭矩传感器、驱动端试件转速传感器、驱动端轴承测温传感器、负载1驱动电机、负载1端变速箱、负载1端试件扭矩传感器、负载1端试件转速传感器、负载1端轴承测温传感器、负载2驱动电机、负载2端变速箱、负载2端试件扭矩传感器、负载2端试件转速传感器、负载2端轴承测温传感器、驱动端变速箱油温控制、负载1变速箱油温控制、负载2变速箱油温控制、试件油温控制、电气传动系统、自动化及采集控制系统等构成。试验台结构框如图1所示。

图1 传动系旋转耐久试验台结构框

2 操作者框架

整个试验台的控制集中在上位机,并使用高级语言编制控制程序。上位机软件完成驱动电机、负载1电机、负载2电机、4个润滑系统的温控、以及其他设备的控制,同时还要进行数据采集和图形界面显示。驱动电机、负载1电机、负载2电机均可以工作在速度模式、转矩开环模式和转矩闭环模式,每个电机根据具体试验的要求分别工作在相应的工作模式下以相互匹配。例如在旋转耐久试验中,驱动电机工作在转速模式,负载1电机和负载2电机同时工作在转矩开环模式或者转矩闭环模式;但在差速试验中正好相反,驱动电机工作工作在转矩闭环或者转矩开环模式,而负载1电机和负载2电机均工作在转速模式。试验台有的试验需要同时使用4个电机,但还有一些试验只使用2台电机,控制模式较多。4个润滑站的功能基本相同,均可以完成温度设定和温度实时检测。

根据车桥种类的不同,这种旋转耐久试验台还会出现4电机,6电机等相似结构和功能的试验台,同时他们的润滑温控系统也会相应增加。设计上位机控制软件时不但要满足4电机配置试验台,还应为该软件扩展成4电机,6电机等试验台做好准备。

以往的工控机配置的基本都是单核心CPU,为了提高计算机系统的性能,可以提高CPU的主频和带宽,这样会产生各种实际很难处理的问题,比如温度飙升等。单核CPU性能达到一定程度后,计算速度难以提升。不过现在的工控机基本都配有多核心CPU。线程是CPU处理实际业务的实体,就是说一个CPU在同一时刻只能执行一个线程,需要执行其他线程就必须要把当前的线程“挂”起来,再去执行。要加强程序的计算能力,就需要多创建几个线程把每个实际的物理CPU都利用起来。举个简单的例子,我们有一个8核心的CPU,以查询字典的方式破解密码,可创建8个线程,把字典拆成8份,每一个线程运算一份,并行计算。这样比单核心CPU要快得多。为了提高程序运行速度,不但要提高CPU核心数量和单核CPU性能,而且应用软件也必须根据多核CPU特性进行多线程设计。以往的文本高级编程语言有的不支持多线程编程,有的虽然支持多线程编程,但开发环境并不友好,对于测试工程师开发难度过大。寻找一种适合测试工程师使用,同时又具有高性能、易扩展、友好的支持多线程编程的编程软件非常有意义。

Labview是美国国家仪器公司的创新软件,允许用图形方式编程,抛弃了晦涩难懂的文本代码,使得计算机编程不再是少数人的专利。Labview是由测试工程师开发的专用编程语言,主要用于测试测量领域。在Labview编程环境下,使用不同的专用工具包可以覆盖工业自动化、测量测试、嵌入式应用、运动控制、图像处理、计算机仿真、FPGA等各种不同的领域[2]。

操作者框架是Labview特有的编程结构,它面向对象,面向多线程,可使扩展性和重复使用得以解决。在拓展功能或者添加其他处理需要复制很多代码时,操作者框架可以很好地解决这类问题。操作者框架完全基于多线程,可以充分有效利用多核CPU系统的性能。

操作者是Labview类表示某个任务的状态。所有操作者类都从Labview的操作者类继承。该类主要由3个部分构成。

(1)操作者的核心程序命名为操作者核心,专门用来定义操作者的连续行为,它定义了操作者的消息处理。该类的子孙类重写该方法用来显示操作者的用户界面、添加并行循环以及启动嵌套操作者。操作者核心程序作用相当于一个队列消息处理器。该程序接收并响应系统中其他操作者发送给它的消息和数据。因为操作者是Labview类,所以比传统的队列消息处理器更容易重复使用和扩展。(2)操作者的特定方法的程序是Labview类的成员,用来定义操作者。通常每个方法对应操作者可以执行的一个任务。祖先类包含专门设计用于被子孙类重写的方法。对于响应消息而发生的行为,应首先创建操作者方法,然后创建触发方法的消息。(3)操作者的消息是一个Labview类,定义了操作者可以接收的指令和能够作出响应的方式。其他操作者将该消息发送到一个操作者,以便让操作者调用其中的某个方法。使用操作者框创建应用程序时,一般需要为操作者的所有方法分别定义一个消息。全部消息都从Labview中消息类继承。尽管消息本身不是操作者的一部分,但用户一般在定义操作者同时定义了操作者的消息。因为这种紧密的联系,操作者框架模板将操作者和消息放在同一个项目库中。通常情况下特定操作者只可把消息发送到调用方操作者或者嵌套操作者。消息是通过队列发送的,每个操作者可以访问操作者用来将消息发送至调用方的队列和操作者用来将消息发送至自身的队列。为了防止其他操作者释放其消息队列,操作者框架引入了待入消息队列,它是一个引用,只能使操作者发送消息到队列,但不能执行任何其他操作。

操作者框架通常包括多个彼此独立而又需要相互通信的任务。操作者之间的通信线路构为树状结构。通常在操作者框架的应用程序中,一个子程序启动一个根操作者。该操作者调用一个或多个嵌套操作者。每个嵌套的操作者可能会启动属于它自己的嵌套操作者,依次类推。调用方至操作者的关系和操作者层次树是操作者框架应用程序的基础。为减少出错并提高应用程序的可靠性,操作者框架限制了能够互相发送消息的操作者。一般情况下,一个操作者只能和它的调用方,或者属于它自己的嵌套操作者通信。这样只有一个通信路径需要管理,很容易写入代码,并且可以确保在退出之前保证其他的操作者可以接收到消息,并作出响应。虽然尽量避免在操作者层次树中建立任何直接通信,但特殊情况下,在层次树中跨越节点而直接通信可提高性能。

3 应用

使用操作者框架可将通用功能封装到一个通用操作者中。通用操作者是一个Labview类,本身无法创建实例,无法进行控制测量;但是通用操作者的成员可以从总体上定义需要哪些步骤,每个步骤都和一个成员子程序相关联。

因为通用操作者是一个类,因此可创建从通用操作者继承通用操作者功能的子操作者。子操作者获得父操作者全部功能,同时还会添加子操作者所需的特殊功能,这样子操作者就可以完成连续测量控制和显示结果等功能。这种方法将通用功能封装到通用操作者,从而最大化代码的重复使用性。

在旋转试验台中,主要被控对象有电机、润滑站、各种测量设备。本旋转试验台中电机可以作为通用操作者,具有速度控制、转矩控制、报警功能等。试验台中3台电机分别是驱动电机、负载1电机、负载2电机,3台电机可分别继承电机通用操作者从而完成除通用功能外的一些特殊功能。对于润滑站有的润滑站带加热功能,有的没有该功能,可以建立润滑站通用操作者,完成油站起停、温度控制、流量控制等。4个润滑站可分别建立4个操作者,每个操作者均继承自润滑站通用操作者来完成除通用功能外的其他功能。可以看到,不管是增加、删除、改变新的类似设备,都可以利用通用操作者,让代码重复利用率大幅提高。

4 结语

该上位机控制系统已经运行数月,可以完全满足车辆传动系耐久试验系统要求。该上位机软件可以很容易地扩展成四电机或者更多电机的类似试验台的上位机控制软件。

猜你喜欢

操作者试验台线程
经皮冠状动脉介入术者不同体位所受辐射剂量特征分析
滚动直线导轨副静刚度试验台设计
浅谈linux多线程协作
操作者因素对Lenstar测量眼轴长度可重复性的影响
双腔管插入操作者手卫生依从性护理干预效果观察
防爆变频器加载试验台的设计
基于上下文定界的Fork/Join并行性的并发程序可达性分析*
Linux线程实现技术研究
么移动中间件线程池并发机制优化改进