[0005] 本发明针对开关式智能阀门定位器存在控制精度较低、调节速度慢、超调量大等问题,提出了一种开关式智能阀门定位器精确控制方法,该控制方法通过内部参数自整定方法,获得预测控制所需要的参数,然后通过内部的预测控制方法预测出最终停下的阀位,并将此阀位与目标阀位进行比较,根据两者差值的大小,计算出开关式压电阀的工作状态以及所对应的PWM波大小,从而实现目标阀位的精确定位。
[0006] 本发明给出的开关式智能阀门定位器精确控制方法通过以下步骤实现目标阀位的精确控制:
[0007] 步骤A1:通过参数自整定方法,整定出闭环控制所需的参数和神经网络所需的数据集。
[0008] 步骤A2:通过神经网络学习方法,进行模型构建。
[0009] 步骤A3:将目标阀位值与实时阀位值进行比较。如果误差大于设定的精度要求,则进入步骤A4;否则不进行任何操作。
[0010] 步骤A4:通过闭环控制,计算出实时的PWM占空比,以及压电开关阀的工作状态。并将此PWM和控制指令输出给压电开关阀,以此控制压电开关阀充气/排气量,实现阀位的精确控制。转入步骤A3,循环执行。
[0011] 所述的参数自整定方法,主要进行以下操作以获得神经网络模型和闭环控制方法所需的参数(此过程选择使用气开型阀门作为分析对象,此参数自整定方法同样适用于气关型阀门):
[0012] 步骤B1:获得行程类型、端点位置、行程范围FSR。向开关式压电阀输出100%PWM波并且发出充气指令,调整压电阀处于充气状态,实时检测阀位反馈信号和阀杆速度信号,检测出阀杆的最大速度为Vup以及最大速度阀位对应的AD值(AD值表示模拟信号转换成数字信号的数值)Sup1,当检测到速度等于0时,立即记录此时阀位AD值即为顶端位置对应的AD值Sfar。向开关式压电阀输出100%PWM波并且发出排气指令,调整压电阀处于排气状态,实时检测阀位反馈信号和阀杆速度信号,检测阀杆的最大速度为Vdown以及最大速度阀位对应的AD值Sdown1,当检测到速度等于0时,立即记录此时阀位AD值即为低端位置对应AD值Snear,行程范围FSR=|Sfar‑Snear|。
[0013] 步骤B2:获得充气和排气阶段最大超调量对应AD值。向开关式压电阀输出100%PWM波,并且发出充气指令,调整开关式压电阀处于充气状态,实时采集反馈阀位,一旦阀位到达Sup1位置,立即向开关式压电阀发出阀位保持指令,延时10秒钟记录此时阀位对应AD值Sup2,定义充气阶段最大超调量对应的AD值为Sover1=|Sup1‑Sup2|。向压电阀发出充气指令,检测到速度等于0时,立即发出排气指令,调整开关式压电阀为排气状态,实时采集阀位,一旦阀位到达Sdown1位置,立即向开关式压电阀发出阀位保持指令(既不充气也不排气),延时10秒钟记录此时阀位对应AD值Sdown2,定义排气阶段最大超调量对应AD值为Sover2=|Sdown1‑Sdown2|。
[0014] 步骤B3:获得最小启动PWM。向开关式压电阀发出充气指令和100%PWM,实时采集阀位反馈信号,将阀位调整到0.5*FSR阀位(其中*表示乘积,FSR表示行程范围)。此时向开关式压电阀输出0%PWM,PWM以1%为幅度不断增加,直到阀杆可以缓慢均匀的运行,记录并定义此时的PWM值Pup为充气阶段的最小启动PWM,再将阀位控制到x1=0.5*FSR阀位处,并向开关式压电阀输出0%PWM和排气指令,PWM以1%为幅度不断增加,直到阀杆可以缓慢均匀的运行,记录并定义此时的PWM值Pdown为排气阶段的最小启动PWM,定义启动PWM为Pstr=|Pup+Pdown|/2。
[0015] 步骤B4:获取神经网络学习样本数据集。定义S1=Snear+Sover1,S2=Sfar‑Sover1。
[0016] 步骤B5:定义Sup=S1+x*β*FSR表示阀位AD值,P1=Pstr+y*1%表示PWM占空比大小,x、y的初始值均为1,分别表示当前循环的次数,β表示控制精度,系统出厂默认采用0.5%精度,β取值范围为0~1。
[0017] 步骤B6:向开关式压电阀发出大小为P1的PWM波,并且发出充气指令,此时开关式压电阀处于充气状态,当检测到阀位到达Sup位置,立即向开关式压电阀发送保持指令,并且记录此时的速度v1和阀位AD值Sup,当检测到速度为0时,记录此时的阀位AD值S'up。速度为v1,阀位AD值为Sup时对应的超调量即为Sup_over=|Sup‑S'up|。并将(v1、Sup、Sup_over)保存到数据集中。
[0018] 步骤B7:向开关式压电阀发出100%PWM波,并且发出排气指令,此时开关式压电阀处于排气状态,控制阀位运行到S1。x=x+1,Sup=S1+x*β*FSR;如果Sup≥S2则Sup=S1+x*β*FSR其中x=1,y=y+1,P1=Pstr+y*1%;继续执行步骤B6。如果P1>100%,x=1,Sdown=S2‑x*β*FSR,y=1,P2=Pstr+y*1%,继续执行步骤B8。
[0019] 步骤B8:向开关式压电阀发出100%PWM波,并且发出充气指令,此时开关式压电阀处于充气状态,控制阀位运行到S2。
[0020] 步骤B9:向开关式压电阀发出大小为P2的PWM波,并且发出排气指令,此时开关式压电阀处于排气状态,当检测到阀位到达Sdown位置,立即向开关式压电阀发送保持指令,并且记录此时的速度v2和阀位AD值Sdown,当检测到速度为0时,记录此时的阀位AD值S'down。速度为v2,阀位AD值为Sdown时对应的超调量即为Sdown_over=|Sdown‑S'down|。并将(v2、Sdown、Sdown_over)保存到数据集中。
[0021] 步骤B10:向开关式压电阀发出100%PWM波,并且发出充气指令,此时开关式压电阀处于充气状态,控制阀位运行到S2。x=x+1,Sdown=S2‑x*β*FSR;如果Sdown≤S1则Sdown=S2‑x*β*FSR其中x=1,y=y+1,P2=Pstr+y*1%;继续执行步骤B9。如果P2>100%不进行任何操作。
[0022] 所述的神经网络学习方法获得神经网络模型的主要步骤如下(所得的神经网络模型能够计算出某一阀位和速度下,将压电开关阀置为保持状态,阀位所对应的超调量):
[0023] 步骤C1:首先,提取参数自整定获得的输入样本与输出样本集,输入样本包括阀位X、速度V和相对应的超调量对应的AD值Sup_over/Sdown_over,输出样本为某一阀位和速度下的超调量对应的AD值S,然后采用神经网络学下方法对这些历史数据进行训练,神经网络结构包括输入层、隐含层(中间层)和输出层。训练过程中将阀位X、速度V和相对应的超调量对应的AD值Sup_over/Sdown_over作为输入,以此实际阀位和速度下的超调量对应的AD值S作为输出,通过神经网络学习获得神经网络模型,神经网络模型中的各参数定义如下:
[0024] 输入层单元输入向量为Pk=(a1,a2,…,an),目标向量Tk=(d1,d2,…,dn);隐含层单元输入向量Sk=(s1,s2,…,sp),输出向量Bk=(b1,b2,...,bp);输出层单元输入向量Lk=(l1,l2,…,lq),输出向量Ck=(c1,c2,...,cq),k=1,2,…m表示样本数据个数;输入层到隐含层的连接权wij,i=1,2,…n;j=1,2,…p;隐含层到输出层的连接权vjt,t=1,2,…q;定义隐含层各单元的输出阈值为θj,定义输出层各单元的输出阈值为yt。其中n表示输入层单元数,p表示隐含层单元数,q表示输出层单元数。
[0025] 步骤C2:进入如下神经网络模型学习子步骤:
[0026] 子步骤C2.1:初始化各层的连接权值和阈值,给每个连接权wij、vjt和输出阈值θj、yt赋予区间(‑1,1)内的随机值。
[0027] 子步骤C2.2:选取输入样本和输出样本。
[0028] 子步骤C2.3:用输入样本、连接权、输入阈值和输出阈值计算隐含层和输出层各单元的输出。
[0029]
[0030]
[0031] 其中,sj表示隐含层单元的输入值、bj表示隐含层单元的输出值、lt表输出层单元的输入值、ct表示输出层单元的输出值。
[0032] 子步骤C2.4:计算输出层各单元一般化误差 然后利用隐含层到输出层的连接权vjt、隐含层的输出向量Bk=(b1,b2,...,bp)、输出层各单元一般化误差 计算隐含层各单元的一般化误差 计算公式如下:
[0033]
[0034]
[0035] 子步骤C2.5:利用输出层各单元的一般化误差 与隐含层各单元的输出值来修正隐含层到输出层的连接权vjt、输出阈值yt:
[0036]
[0037]
[0038] 同样利用隐含层各单元的一般化误差 与输入层的输入来修正输入层到隐含层的连接权wij、输出阈值θj:
[0039]
[0040] N=1,2,…,NN表示设定的学习迭代次数,vjt(N)表示当前的连接权vjt,vjt(N+1)表示修正后的连接权;yt(N)表示当前的输出阈值yt,yt(N+1)表示修正后的相应阈值。wij(N)表示当前的连接权wij,wij(N+1)表示修正后的连接权,θj(N)表示当前的阈值,θj(N+1)表示修正后的阈值。
[0041] 子步骤C2.6:选取下一个输入样本和输出样本,返回到步骤C2.3,直到m个训练样本训练完毕。
[0042] 子步骤C2.7:计算所有样本的累计误差E,累计误差计算方式为 其中,m表示样本数量,q表示输出层单元数,定义 表示为所有样本输入后,输出层网络的总误差。如果样本累计误差E小于预先设定值,或者当前学习迭代次数大于设定的学习迭代次数,那么学习训练结束。否则再次选取样本输入和目标输出,然后返回到步骤C2.3。
[0043] 学习过程结束后,通过得到的神经网络各部分的权值和阈值,建立能够反映输入和输出的神经网络模型,通过给定输入信息,从而获得某一阀位和速度下的超调量对应的AD值S。
[0044] 所述的闭环控制,实现阀位快速定位的具体实现步骤如下(此过程选择气开型阀门作为分析对象,算法同样适用于气关型阀门。只针对阀位增大过程进行分析,算法同样适用于阀位减小过程):
[0045] 步骤D1:定义ε=β*FSR,e1=Sover1,e2=Sover2,接收到用户输入的目标阀位值r(tt),采集实时阀位反馈值c(tt),阀位误差e(tt)=r(tt)‑c(tt),根据阀位误差的大小,将控制过程分为粗调区、细调区、死区;其中tt表示时间,β表示控制精度,系统出厂默认采用0.5%精度,β取值范围为0~1,*表示乘积,ε、e1、e2代表阀位,具体数值用所对应的AD值表示。
[0046] 步骤D2:采集实时阀位反馈值,若阀位处于死区内,立即关闭PWM波,并且向开关式压电阀发出保持指令;若阀位误差处于粗调区1内,则执行步骤D3,若阀位误差处于细调区1内,则执行步骤D4。
[0047] 步骤D3:向开关式压电阀发出100%PWM波,并且发出充气指令,快速减小误差。当阀位误差进入细调区1时,执行步骤D4。
[0048] 步骤D4:采集实时阀位反馈值和阀杆速度,根据神经网络学习构建的神经网络模型,即可得到在此阀位和阀杆速度下,将开关式压电阀置为保持状态所产生的超调量,从而得出预测阀位值f(tt),比较目标阀位和预测阀位的差值(ee(tt)=f(tt)‑c(tt))。若该差值在容许阀位误差范围内,执行步骤D5;若该差值大于容许阀位误差且差值为正值时,执行步骤D6;否则不进行任何操作;
[0049] 步骤D5:立即向压电阀发出保持指令,循环循环执行步骤D2;
[0050] 步骤D6:向压电开关阀发送最小启动PWM,并且发送排气指令,进行降速。循环执行步骤D2。