集中控制式智能阀CAN通信环形缓冲存取技术

2023-10-15 13:00魏列江安贞嬛李健伟赵保才毛飞鸿
液压与气动 2023年9期
关键词:主阀缓冲区指针

魏列江, 安贞嬛, 李健伟, 赵保才, 毛飞鸿, 强 彦,3

(1.兰州理工大学 能源与动力工程学院, 甘肃 兰州 730050;2.中国北方车辆研究所 车辆传动重点实验室, 北京 100072; 3.东南大学 能源与环境学院, 江苏 南京 211189)

引言

智能工程机械采用智能多路阀控制多个执行机构,获得多执行机构的协同联动[1]。传统控制方法是采用分布式控制,即各联阀控制器单独完成阀内参数闭环控制,由于受现场安装空间、工作环境和成本所限,内置在阀中的阀控制器功能单一、实现复杂优化控制算法困难、各联阀控制结果实时交互性差,难以满足智能工程机械中多执行机构精准快速协同联动的要求[2]。随着现代嵌入式计算机可靠性和性能的大幅提升,采用一台功能强大的整机控制器控制所有智能阀的集中控制模式[3],更易实现智能多路阀的协同联动控制算法,方便全局监测模式,阀控制器只做阀内参数采集、存取、传输和功率放大,通过CAN总线与整机控制器进行数据交互,可极大简化阀控制器功能,实现阀控制器标准化构建,提高多执行机构协调控制的快速性和柔性[4]。但是,在集中控制模式下,整机控制器完成各联阀的闭环控制并集中管理,且在集中控制模式下,阀控制器只做阀内参数采集、存取、传输和功率放大,通过CAN总线与整机控制器进行数据交互,极大简化阀控制器功能,实现阀控制器的标准化,提高多执行机构协调控制的快速性和柔性[5]。采用集中控制方案中的反馈参数均需通过CAN总线由阀控制器发送至整机控制器中,整机控制器需要快速接受、存取和处理大量数据,采用传统顺序缓冲区存取数据的方法往往会造成较大延时,导致控制性能下降甚至失效[6]。

国内对CAN总线展开的研究有:杜峰等[7]在负载率固定的情况下,分析对CAN总线数据传输延时的问题并提出一种改善延时的方案,减少长延时的数据包数量,但忽略了传输过程中CAN控制器和软件产生的延时;董权威等[8]在自主水下航行器中率先使用了CAN总线的分布式控制系统设计方案,将自主水下航行器的功能分部到不同的控制节点中,但是未考虑CAN总线通信错误对控制系统的影响;金振华[9]提出将CAN总线技术应用至分布式数控系统中,改进数控系统,但是未考虑在实时性要求较高的应用场合中,分布式控制系统由于数据传输产生延时,导致分布式控制系统不稳定的问题。

综上所述,将CAN总线应用至阀控系统中虽已取得一定程度的研究,但研究人员往往将CAN总线作为数据传输的手段,并未考虑CAN总线进行数据传输时,数据存取环节给控制系统带来的不利影响,无法保证实时控制系统中各控制节点的可靠性[10]。为实现智能工程机械各执行机构的协同联动控制,可采用智能多路阀的控制算法在整机控制器内集中实现,整机控制器与各联多路阀之间采用CAN总线实现数据交互,当数据量较大时,因CAN总线进行数据存取环节造成的延迟会严重影响控制性能,甚至造成控制失效[11]。提出整机控制器采用环形缓冲区代替传统的顺序缓冲区的解决方案,通过检测环形缓冲区是否存在未写入数据的空白区域,将CAN总线传输的多路阀参数依次写入空白缓冲区,显著提高CAN总线中数据存取环节的速度,从而减少CAN总线进行数据传输时的延时时长。

1 集中控制式智能阀系统

分布式控制在实现智能阀控制时,由于阀控制器性能所限,速度慢、协调难,因此直接实现协同控制难度大[12]。为提高执行机构的协同控制,提出整机控制器集中控制模式,由整机控制器承担网络通信处理,接受采集数据、计算数据处理[13]。由整机控制器产生控制指令并下传给控制系统中的阀控制器节点,阀根据指令执行动作,传感器采集现场实时数据,将数据上传给整机控制器,整机控制器功能强大,扩展性强,同时可将阀控制器标准化、功能单一化[14]。但是,采用整机控制器集中控制模式存在通信数据量大的问题,应着重考虑数据量的传输快速性[15],减少数据传输过程中的延时,本研究在整机控制器处设置环形缓冲区,减少接收存储环节带来的延时问题,以此减轻CAN总线延时问题。

采用CAN总线进行数据交互的集中式智能阀系统结构如图1所示,整机控制器将指令信号分解为多路阀A联、多路阀B联、…、多路阀N联的给定信号,阀控制器1、2、…、n接收到给定信号后,产生PWM信号控制比例电磁铁带动先导阀阀芯,液压油通过先导阀阀口进入主阀芯,产生的液压力克服弹簧力、液动力、摩擦力推动主阀运动[16],在每联导阀、主阀处装设传感器(如图1中传感器1.1、传感器1.2、…传感器n.1、传感器n.2),完成对导阀、主阀实时状态信息的采集,采集到的实时信息进入阀控制器完成A/D转换后,阀控制器通过CAN总线向整机控制器发送导阀、主阀的实时状态信息,整机控制器对比指令信号与各路阀实时状态信息的偏差后,统一完成各个阀芯的闭环控制,最终实现整机控制器的闭环控制[17]。

图1 整机控制器集中控制的多路阀系统结构图Fig.1 Structure diagram of multi way valve system under centralized control of complete machine controller

分析该系统时,将阀控制器、导阀、主阀共同作为被控对象,输入信号是整机控制器发送的指令信号,输出为主阀的位移,传感器采集主阀的实时位移信息,通过CAN总线作为反馈通道发送数据至整机控制器,经整机控制器中的协同控制策略实现对反馈信号的补偿,以达到预期控制需求[18]。经过上述等效,以多路阀内部某一联主阀的位移闭环控制为例,其等效结构如图2所示。

图2 一联多路阀等效控制结构Fig.2 Equivalent control structure of one way multi way valve

将一联主阀的给定位移与其他主阀的实际位移结果进行运算,其运算结果作为该阀控制器的位移给定信号,整个闭环控制系统由于依赖CAN总线进行信息传递,不可避免会带来延时问题,通信延时过大会造成闭环控制系统紊乱,影响控制系统的性能指标,如超调量、响应时间等,导致多路阀系统的协同控制能力下降、操作性能下降[19]。

将一联主阀给定位移与其他主阀的实际位移结果进行运算,其运算结果作为该阀控制器的给定信号,整个闭环控制系统由于依赖CAN总线进行信息传递,不可避免会带来延时问题, 通信延时过大会造成闭环控制系统紊乱,影响控制系统的性能指标,如超调量、响应时间等,导致多路阀系统的协同控制能力下降、操作性能下降。

整机控制器采用PID控制,其控制框图如图3所示,R(k)为工控机发出的目标位移,T(k)为整机控制器的控制特性,即控制器计算得到的阀芯目标位移;τsc(k)为第k个控制周期内,传感器到控制器的通信延时;τcs(k)为第k个控制周期内,控制器到传感器的通信延时。Y(k)为主阀的实际位移,G(k)为导阀—主阀的传递函数模型,表征目标位移输入电信号到主阀位移输出的响应特性。

图3 一联多路阀控制框图Fig.3 Block diagram of one way multi way valve control

先导阀传递函数为:

(1)

式中,Ku—— 比例电磁铁电流-力增益

R—— 比例电磁铁等效电阻

KL—— 先导阀弹簧刚度

ω0—— 先导阀二阶震荡环节固有频率

ξ0—— 阻尼关系

Ks—— 动生反电动势系数

Ksp—— 作用在衔铁上的机械弹簧刚度

KL—— 阀芯稳态液动力刚度

主阀传递函数为:

(2)

式中,Kq—— 零位流量增益

A—— 主阀芯有效作用面积

M—— 主阀芯质量

V0—— 主阀上下两端容积平均值

Kc—— 零位压力流量系数

Cep—— 阀外泄漏系数

βv—— 主阀黏性阻尼系数

βe—— 有效体积弹性模量

Ksm—— 稳态液动力系数

Km—— 主弹簧刚度

G(k)为导阀输入驱动电压信号(V) —主阀输出位移(m)的前向通道传递函数:

(3)

通常来说,在设计阶段,系统期望的性能指标是按照无通信延时的情况来设计的,此时系统控制率和系统输出为[19]:

T0(k)=F(e(k))=F(R(k)-Y(k))

(4)

(5)

式中,T0(k) —— 第k个控制周期内,期望控制指令

e(k) —— 第k个控制周期内,期望输出误差

在实际的系统中,由于存在通信延时,系统的系统控制率和系统输出为:

T(k)=F(e(k))=F(R(k)-Y(k-τsc(k))-

Y1(k-τcs(k))…-Yn(k-

τcs(k)))

(6)

(7)

式中,τsc(k) —— 第k个控制周期内,传感器到控制器的通信延时

τcs(k) —— 第k个控制周期内,控制器到传感器的通信延时

将式(5)和式(7)对比可见,控制指令的延时导致控制作用时间变短,在[kTc,(k+τcs(k))Tc]时间内,实际控制指令为上一周期T(k-1)的控制指令,[((k+τcs(k))Tc,(k+1)Tc]时间内,实际控制指令为这一周期T(k)的控制指令。CAN通信网络中信息传递分为周期信息和非周期信息,周期性信息以传感器采集信息值为主,定时向整机控制器发送自身设备状态的信息,将周期信息中出现的延时考虑为常量且此延时小于一个采样周期,简化分析多路阀反馈系统中出现的延时,在反馈环节产生延时Tdelay的闭环控制系统的传递函数为[20]:

(8)

Tdelay由以下几个通信延时环节组成,分别为:

Tdelay=Tsource+Tframe+Tts+Trev+Tsink

(9)

式中,Tsource—— 整机控制器对数据发送打包所用的时间

Tframe—— 数据帧进入缓冲区等待发送直到消息发送完成所用的时间

Tts—— 数据传输时间,此处为数据帧在双绞线介质中传输所用的时间

Trev—— 解包产生的时间,此处为阀控制器对CAN总线传输来的数据帧进行解释、计算、执行所用的时间,当数据量即传输周期固定时,以上各部分的延时可以视为确定值

Tsink—— 将数据读入整机控制器处缓冲区所用的时间,如果CAN通信网络中流量过大,则会出现拥塞,致使排队时间无法预测,成为传输时延不确定性的主要因素,因此降低数据帧将数据读入主控芯片缓冲区所用的时间Tsink是很有必要的[21]

本研究将着重考虑Tsink,显著提高CAN总线数据存取环节的速度,从而减少CAN总线进行数据传输时的延时时长。

在波特率为250 Kbps的CAN通信网络中,以考虑在反馈部分引入延时环节的多路阀系统仿真状态如图4所示,横坐标表示为时间(s),纵坐标表示为主阀阀芯位移(mm),将τsc分别设置为0, 0.15, 0.25 ms,反馈环节的延时时间过大时,将严重影响多路阀系统的稳定性,出现震荡问题,因此在多路阀系统中应极力缩短CAN通信带来的延时问题,以提高响应时间。现引入CAN通信的控制网络中常忽略软件产生的延时,但真实的情况是,若对数据处理不妥当,软件延时会出现数据接收与数据处理速度的不匹配,从而造成数据帧延迟甚至丢失,甚至引起液压控制系统的不稳定甚至失效。因此考虑在多路阀集中式控制系统中引入环形缓冲区减少延时。

图4 反馈环节引入延时对多路阀系统的影响Fig.4 Influence of time delay of feedback link on multi way valve system

2 整机控制器内置环形缓冲区分析

2.1 整机控制器内置环形缓冲区工作原理

对于顺序缓冲区,只有将存入顺序缓冲区的数据全部读取完毕后,才能继续接收数据,这种结构对于海量数据量高速传输下的多路阀系统是不能容忍的[22]。较顺序缓冲区,环形缓冲区面对多路阀协同控制通信网络具有较强的适应性,通过检测头指针与尾指针的位置来判断是否存在未写入数据的空白区域。当头指针与尾指针不相等时,表明缓冲区内存在未写入数据的区域,可以向整机控制器内置的缓冲区内写入各联主阀的位移信号,在接收数据的同时,处理器可从缓冲区读取数据,数据接收与数据发送过程互不影响。

此外在判断环形队列缓冲区为空还是满时,是通过判断整机控制器内置的环形缓冲区的头、尾指针是否相等来实现的,具体操作为:

假设整机控制器内置的环形缓冲区数组长度为size,R为写入指针,W为读出指针。

读指针>写指针,存入的数据为R-W;

写指针>读指针,存入的数据为size-(W-R);

写指针=读指针,存入的数据为size。

2.2 整机控制器内置环形缓冲区设计

整机控制器内置环形缓冲区具体实现流程如图5所示,环形缓冲区的读、写两个指针频繁在操作,要避免读、写指针的误操作导致缓冲区数据误修改,因此环形缓冲区内的数据保护非常重要。环形缓冲区的大小设计是非常重要的一个环节。若内存设置过小,会覆盖掉尚未发送出去的数据,导致数据丢失;若内存设置太大,则耗费嵌入式处理器有限内存资源,不利于其他部分代码的编写。因此,设计合理大小的缓冲区非常关键,需要对环形缓冲区内存空间进行设置[23]。

图5 整机控制器内置环形缓冲区实现流程Fig.5 Realization process of built-in ring buffer of machine controller

整机控制器存取一条信息中所需要的最大内存空间(位数)为:

σ=[(11(ID)+64(DATA))]

(10)

整机控制器的存储器是以1 Bytes即8 bit为单位设计的,所以式(10)中的bit数要向上取整成8的整数,11取整成16,得到环形缓冲区最小内存空间应为:

σ=2+8=10

(11)

整机控制器环形缓冲区只需存取指令信号、各联阀芯的位移信号,为便于计算,每条信息都以存取报文的最大内存空间进行计算,故整机控制器缓冲区大小应为10 Bytes数据的倍数。

2.3 算法实现

整机控制器数据存取采用环形缓冲区实现,算法如图6所示。

图6 环形缓冲区算法实现Fig.6 Implementation of ring buffer algorithm

3 实验验证

3.1 智能阀内置缓冲区系统实验装置

同样的测试环境下分别对比整机控制器内置顺序缓冲区缓存处理方法和本研究所提出的整机控制器内置环形缓冲区缓存处理方法进行实验对比[20],以研究两联多路阀为例,其测试的环境如表1所示。

表1 测试环境Tab.1 Testing environment

多路阀系统内部通信实验原理图如图7所示。

图7 多路阀系统内部通信实验原理图Fig.7 Schematic diagram of internal communication experiment of multi way valve system

由图7可知,整机控制器发送指令信号至整机控制器,通过整机控制器发送给定信号至各联阀内部的阀控制器,同时将主阀处的位移信号通过CAN总线发送给整机控制器,在这里使用随机数模拟采集到的阀控制器的位移信号做实时数据, 将阀控制器随机生成的数据通过CAN总线网络发送给整机控制器[24],以此对比顺序缓冲区存取和环形缓冲区存取两种数据处理方式的代码效率和内存效率,验证所提方法的有效性。

依据本研究提出环形缓冲区的设计,完成了面向智能多路阀高速CAN通信数据环形缓存技术的程序开发,并进行实验验证,实验装置如图8所示,其中直流稳压电源提供+24 V直流电压,采用CANTest完成对多路阀内部的阀控制器进行数据收发测试及记录,Keil uVision 5.14完成程序代码效率及内存效率数据的测试。分别将缓冲区内存设置为40 Bytes(CAN总线一帧数据存入缓冲区所占用内存为10 Bytes),分别验证顺序缓冲区和环形缓冲区存取数据的代码效率和内存效率。

1.上位机 2.直流稳压电源 3.某联多路阀阀控制器1 4.某联多路阀阀控制器2 5.USB&CAN分析仪 6.整机控制器图8 实验装置实验图Fig.8 Experimental drawing of experimental device

3.2 整机控制器内置环形缓冲区的代码效率测试

本研究在整机控制器的程序设计中引入环形缓冲区的函数为ringbuff_write、ringbuff_read;使用顺序缓冲区的读写函数为fifo_push、fifo_pop,编译后代码量如图9、图10所示。可见整机控制器程序内,环形缓冲区的使用较传统队列指令较少。

图9 顺序缓冲区编译后代码量Fig.9 Compiled code amount of sequential queue

图10 环形队列编译后代码量Fig.10 Compiled code amount of ring queue

整机控制器的程序中的主函数部分,对以上两种缓冲区的读取和接收进行测试,为使覆盖率达100%,分别写入缓冲区100次,读出缓冲区100次,得到执行程序所用时间和执行效率如图11~图14所示。

图11 顺序缓冲区覆盖率达100%程序所用时间Fig.11 Time taken for program with 100% sequential queue coverage

图12 环形队列覆盖率达100%程序所用时间Fig.12 Time taken for program with 100% ring queue coverage

图13 顺序缓冲区覆盖率达100%程序执行效率Fig.13 Sequential queue coverage reaches 100% program execution efficiency

图14 环形队列覆盖率达100%程序执行效率Fig.14 Circular queue coverage reaches 100% program execution efficiency

对比实验数据可知,分别采用整机控制器内置缓冲区采用环形缓冲区、顺序缓冲区进行对比,得出:每接收100个数据,顺序缓冲区所用时间为0.85 ms,环形缓冲区所用时间为0.45 ms,每发送100个数据,顺序缓冲区所用时间为0.79 ms,环形缓冲区所用时间为0.45 ms,每读取、接收100个主阀位移数据,顺序缓冲区所用时间为1.64 ms,环形缓冲区所用时间为0.9 ms,使用环形缓冲区所用时间缩短了43.75%,可实现多路阀内部阀控制器之间更高效率的数据传递。

3.3 整机控制器内置环形缓冲区的内存效率测试

根据对缓冲区读写指针的操作规定,整机控制器数据读出的速度应小于主阀位移数据写入的速度,设置分别数据输出流与输入流之差(Vout-Vin)分别为1200, 2400 Bytes/s时[25],整机控制器内置缓冲区采用环形缓冲区、顺序缓冲区的利用率与写入缓冲区的数据关系如图15所示。由图15可知,横坐标为缓冲区现有的数据量,纵坐标表示为缓冲区利用率,数据输出流与输入流之差不影响整机控制器内置环形缓冲区的内存效率,环形缓冲区的利用率最终均达到99.00%,而采用整机控制器内置顺序缓冲区的缓存效率根据数据输出流与输入流之差的不同会受到影响,数据输出流与输入流之差分别为2400 Bytes/s时,顺序缓冲区最大利用率为57.14%,数据输出流与输入流之差分别为1200 Bytes/s时,缓冲区利用率最大为42.47%,在输出流与输入流之差在速率相同的情况下,且代码未完全覆盖环形缓冲区,此时数据输出流与输入流之差为定值时,整机控制器内置环形缓冲区利用率上升速率略大于顺序缓冲区的方式。

图15 队列与顺序缓冲区内存效率测试图Fig.15 Memory efficiency test chart of circular queue and sequential queue

4 结论

本研究提出整机控制器内置环形缓冲区的集中控制模式,整机控制器直接控制每联多路阀并完成闭环控制,通过对该模式进行代码效率及内存效率的测试,试验结果表明该模式具有以下特点:

(1) 在CAN总线数据传输过程中,在整机控制器程序内部设置环形缓冲区,环形缓冲区中存储各阀控制器的实时数据及整机控制器的给定信号,每次接收并发送100个数据所用的时间比顺序缓冲区节省了43.75%,有效减少多数据存取环节带来接收存储延时,从而减少了CAN总线进行数据传输时的延时时长。

(2) 通过对算法内存效率进行测试,结果表明使用环形缓冲区的最大内存利用率为99.00%,远高于顺序缓冲区的最大利用率。在代码未完全覆盖环形缓冲区且数据输入流与输出流之差为定值时,环形缓冲区利用率上升速率略大于顺序缓冲区的方式。

为集中式高速数据处理接口提供通用方案,具有一定的应用价值和实际意义,可被广泛应用于各种类型的高速数据传输的系统中。

猜你喜欢
主阀缓冲区指针
浅析高水头大容量蓄能机组主阀尾闸闭锁控制
嫩江重要省界缓冲区水质单因子评价法研究
为什么表的指针都按照顺时针方向转动
高效、高压、节能新一代LUDV系统RS系列主阀
关键链技术缓冲区的确定方法研究
插装式比例节流阀动态响应的影响因素
基于改进Hough变换和BP网络的指针仪表识别
ARM Cortex—MO/MO+单片机的指针变量替换方法
水压机进排水阀故障分析
地理信息系统绘图缓冲区技术设计与实现