一种基于模糊神经网络PID船舶航向控制器及其控制方法与流程

文档序号:15442949发布日期:2018-09-14 23:01阅读:414来源:国知局

本发明属于船舶控制技术领域,具体涉及一种基于模糊神经网络pid船舶航向控制器及其控制方法。



背景技术:

船舶航向自动控制是船舶操纵性能最重要的指标之一,早期的控制方法为bang-bang控制、pid控制、非线性控制等。但由于船舶运动的复杂性,船舶的动态特性具有大时滞、非线性、建模困难等特点,海上环境的变化随机而且难以预测,很难建立其精确的数学模型,因而传统控制方法效果欠佳。

目前,模糊控制与神经网络控制均不依赖控制对象的精确数学模型,工业控制系统使用最为广泛的pid控制器参数固化难以满足其调节品质的要求,模糊系统的模糊规则和隶属函数等设计参数只能依靠经验来选择,很难自动设计和调整,因而缺乏自学习性与适应性。而神经网络控制虽然具有较强的适应和学习能力,但不具备处理不确定信息的功能。建立模糊控制算法的基础上,利用神经网络的自适应和自学习功能对模糊控制规则的相关参数和系数进行调整和优化,不仅可以在线调整pid的kp、ti、td参数,而且可以通过自学习能力找到一组最优的控制器参数。



技术实现要素:

plc(可编程逻辑控制器)可靠性高、抗干扰能力强,因而,在工业中具有极其广泛的应用,把模糊神经网络与plc结合起来,应用plc实现模糊神经网络控制器,能较简便地通过软件实现模糊神经网络控制策略,这样既保留了plc控制系统的特点,又在很大程度上提高了控制系统的智能化程度。这种方法和思路对现有设备低成本条件下的技术改造很有意义。

针对现有技术中存在的问题,本发明的目的是提供一种基于模糊神经网络pid船舶航向控制器及其控制方法,实现船舶舵机的自适应调控。通过对外界环境的识别与反馈信号,控制系统自动作出反应,完成在精度上采集、灵敏度上校准、实时操纵,以实现船舶转向的低误差,保证了转动的实时与平滑。

本发明通过如下技术方案实现:

如图1所示,一种基于模糊神经网络pid船舶航向控制器,包括plc控制单元、步进电机驱动单元、模糊神经网络参数校正单元、pid调节单元、pwm信号输出单元、模数转换单元、卡尔曼滤波单元及传感器采集单元;

所述plc控制单元,用于采集和处理外部输入信号及编程实现模糊神经网络算法;

所述模糊神经网络参数校正单元,用于根据步进电机驱动单元的输出与设定的舵偏角进行模糊神经网络参数校正;

所述pid调节单元,根据模糊神经网络参数校正单元的输出进行pid调节;

所述pwm信号输出单元,用于根据pid调节单元的输出,输出控制步进电机工作的pwm波形;

所述步进电机驱动单元,用于根据pwm波形脉冲来将电脉冲信号转变为角位移或线位移,驱动步进电机控制船舶航向,并实时反馈船舶的舵偏角;

所述模数转换单元,用于将plc控制单元的输出进行模数转换后发送给pwm信号输出单元,也用于将步进电机驱动单元的输出进行模数转换后反馈给plc控制单元的输入单元;

所述卡尔曼滤波单元,用于对步进电机驱动单元实时输出的船舶舵偏角进行滤波处理,消除海浪和测量噪声对系统性能的影响;

所述传感器采集单元,包括陀螺仪、加速度计及磁场强度传感器,用于采集步进电机单元输出的航向角参数,所述的航向角参数包括位置、速度和舵偏角状态变量的参数值。

进一步地,所述的pid调节单元中的pid调节为

式中:u(n)为第n个采样时刻pid调节单元的输出量;e(n)为第n个采样时刻的pid调节单元获得的实际偏差量,kp、ki、kd分别为比例、积分和微分系数。

进一步地,所述的模糊神经网络参数校正单元的参数校正过程,具体如下:

选取输入、输出变量,指定变量的论域元素和模糊子集,高斯函数作为隶属函数,制定语言变量值表和模糊控制规则表,采用bp神经网络实现模糊逻辑控制,神经元的输入、输出关系采用sigmiod活化函数表示,即f(x)=1/(1+e-x),选取三个3层的神经网络进行训练学习,通过网络的前向传播计算得到网络的实际输出,从而得到期望输出与实际输出的误差e,并不断调整网络权值ω,经反复多次训练,使e接近要求的最小值。

进一步地,所述的plc控制单元实现模糊神经网络算法,具体过程如下:

在step7软件中用stl指令编程实现复杂的数学计算,系统采用结构化编程方法,各个程序块根据其各自控制功能进行编程。

进一步地,所述的卡尔曼滤波单元对步进电机驱动单元实时输出的船舶舵偏角进行滤波处理,具体过程如下:

卡尔曼滤波离散化后如下形式:

xk=φk,k-1xk-1+γuk-1+wk-1(1)

yk=hkxk+vk(2)

其中,wk-1为k-1时刻动态噪声,vk是k时刻观测噪声,qk动态噪声的协方差阵,rk为测量噪声的协方差阵,xk是系统状态,uk是对系统的控制量,φ和γ是系统参数,yk是测量值,hk是测量系统的参数;

采用卡尔曼滤波对xk进行估计计算最优的估计值,有

pk=(1-kkhk)pk,k-1(7)

其中,p为初始误差协方差阵,是k-1时刻的状态对k时刻状态的预测;

步骤1)给定舵偏角初值x0,确定动态噪声协方差阵q、测量噪声协方差阵r和初始误差协方差阵p;

步骤2)根据前一时刻的舵偏角估计值代入式(2)得到k时刻的舵偏角状态估计值带入式(7)得k时刻状态最佳估计值

步骤3)将作为已知条件,重复步骤2),得到下一时刻的估计值。

本发明的另一个目的是提供一种基于模糊神经网络pid船舶航向控制器的控制方法,具体步骤如下:

步骤1:传感器采集单元采集步进电机单元输出的航向角参数与设定的指令输入航向角参数进行对比,得到船舶航向偏差e和航向偏差率ec作为模糊神经网络参数校正单元的输入;

步骤2:糊神经网络参数校正单元的输出为整定后的kp、ki、kd,由公式计算得到u(n)作为plc控制单元的输入;

步骤3:糊神经网络参数校正单元首先制定模糊规则表而后使其在神经网络中实现;

制定模糊规则表首先选定e、ec、u的论域元素及高斯函数作为隶属函数,在变量论域中定义变量e、ec、u模糊子集,进而可制定e、ec、u的语言变量值表和模糊控制规则表;

模糊规则表在糊神经网络参数校正单元中实现是采用三个bp(误差反传)神经网络,神经网络ⅰ、神经网络ⅱ分别用于生成e和ec的隶属函数,神经网络ⅲ用于生成输出kp、ki、kd;

采用bp算法对神经网络ⅰ、ⅱ、ⅲ形成的整个网络进行离线训练,当网络接受输入样本后,通过前向传播计算得到实际输出,计算期望输出与实际输出的误差e,不断调整网络权值ω,经反复多次训练,使e接近要求的最小值;

网络训练完成后,当在网络输入端输入实际值的模糊量,输出端会对应一个输出模糊子集,真实输出值经解模糊化得到。

进一步地,步骤3中所述的三个神经网络均为三层神经元网络,神经网络ⅰ生成e的隶属函数,输入层为1个神经元,用于接收船舶航向偏差e,输出层为7个神经元,分别用来生成隶属e的模糊子集{nb,nm,ns,zo,ps,pm,pb}的隶属度,隐含层采用8个神经元;

所述的神经网络ⅱ用于生成误差变化率ec的隶属函数,输入层为1个神经元,用于接收船舶航向偏差ec,输出层为7个神经元,分别用来生成隶属ec模糊子集{nb,nm,ns,zo,ps,pm,pb}的隶属度,隐含层采用8个神经元;

所述的神经网络ⅲ用来实现模糊控制规则,输入层对应于神经网络ⅰ及神经网络ⅱ的输出层,即14个神经元;而输出层为3个神经元,分别输出kp、ki、kd。

与现有技术相比,本发明的优点如下:

1、控制精度的提高,模糊神经网络在线实时整定参数,可加快系统响应保证控制精度,采用卡尔曼滤波,提前预估下一时刻的状态值,消除了海浪河测量噪声的干扰,反馈回极其精确的状态值,进一步提高了状态反馈回路的精度。

2、稳定性能的改善,将plc控制单元作为实现智能控制算法的载体,保证了核心处理器的高稳定性,经卡尔曼滤波处理的反馈舵偏角状态值,进一步确保了系统工作在稳定区间内。

附图说明

图1为本发明的基于模糊神经网络pid船舶航向控制器的结构示意图;

图2为本发明的模糊神经网络参数校正单元结构图;

图3为本发明的plc控制单元实现模糊神经网络算法流程图;

图4为本发明的step7软件中的功能程序模块组织流程图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清晰明了,以下结合实施例,对本发明进一步详细说明。此处所描述的具体实施例仅用于解释本发明,并不用于限定本发明。

实施例1

如图1所示,一种基于模糊神经网络pid船舶航向控制器,包括plc控制单元、、步进电机驱动单元、模糊神经网络参数校正单元、pid调节单元、pwm信号输出单元、模数转换单元、卡尔曼滤波单元及传感器采集单元;

所述plc控制单元,用于采集和处理外部输入信号及编程实现模糊神经网络算法;

所述模糊神经网络参数校正单元,用于根据步进电机驱动单元的输出与设定的舵偏角进行模糊神经网络参数校正;

所述pid调节单元,根据模糊神经网络参数校正单元的输出进行pid调节;

所述pwm信号输出单元,用于根据pid调节单元的输出,输出控制步进电机工作的pwm波形;

所述步进电机驱动单元,用于根据pwm波形脉冲来将电脉冲信号转变为角位移或线位移,驱动步进电机控制船舶航向,并实时反馈船舶的舵偏角;

所述模数转换单元,用于将plc控制单元的输出进行模数转换后发送给pwm信号输出单元,也用于将步进电机驱动单元的输出进行模数转换后反馈给plc控制单元的输入;

所述卡尔曼滤波单元,用于对步进电机驱动单元实时输出的船舶舵偏角进行滤波处理,消除海浪和测量噪声对系统性能的影响;

所述传感器采集单元,包括陀螺仪、加速度计及磁场强度传感器,用于采集步进电机单元输出的航向角参数,所述的航向角参数包括位置、速度和舵偏角状态变量的参数值。

进一步地,所述的pid调节单元中的pid调节为

式中:u(n)为第n个采样时刻pid调节单元的输出量;e(n)为第n个采样时刻的pid调节单元获得的实际偏差量,kp、ki、kd分别为比例、积分和微分系数。

进一步地,所述的模糊神经网络参数校正单元的参数校正过程,具体如下:

选取输入、输出变量,指定变量的论域元素和模糊子集,高斯函数作为隶属函数,制定语言变量值表和模糊控制规则表,采用bp神经网络实现模糊逻辑控制,神经元的输入、输出关系采用sigmiod活化函数表示,即f(x)=1/(1+e-x),选取三个3层的神经网络进行训练学习,通过网络的前向传播计算得到网络的实际输出,从而得到期望输出与实际输出的误差e,并不断调整网络权值ω,经反复多次训练,使e接近要求的最小值。

进一步地,所述的plc控制单元实现模糊神经网络算法,具体过程如下:

在step7软件中用stl指令编程实现复杂的数学计算,系统采用结构化编程方法,各个程序块根据其各自控制功能进行编程。

进一步地,所述的卡尔曼滤波单元对步进电机驱动单元实时输出的船舶舵偏角进行滤波处理,具体过程如下:

卡尔曼滤波离散化后如下形式:

xk=φk,k-1xk-1+γuk-1+wk-1(1)

yk=hkxk+vk(2)

其中,wk-1为k-1时刻动态噪声,vk是k时刻观测噪声,qk动态噪声的协方差阵,rk为测量噪声的协方差阵。xk是系统状态,uk是对系统的控制量。φ和γ是系统参数。yk是测量值,hk是测量系统的参数。

采用卡尔曼滤波对xk进行估计计算最优的估计值,有

pk=(1-kkhk)pk,k-1(7)

其中,p为初始误差协方差阵,是k-1时刻的状态对k时刻状态的预测。

步骤1)给定舵偏角初值x0,确定动态噪声协方差阵q、测量噪声协方差阵r和初始误差协方差阵p;

步骤2)根据前一时刻的舵偏角估计值代入式(2)得到k时刻的舵偏角状态估计值带入式(7)得k时刻状态最佳估计值

步骤3)将作为已知条件,重复步骤2),得到下一时刻的估计值。

本发明的另一个目的是提供一种基于模糊神经网络pid船舶航向控制器的控制方法,具体步骤如下:

步骤1、传感器采集单元获取的航向角参数与预期的指令输入航向角进行对比,得到船舶航向偏差e和航向偏差率ec作为模糊神经网络参数校正单元的输入。

步骤2、糊神经网络参数校正单元的输出为整定后的kp、ki、kd,由公式计算得到u(n)作为plc控制单元的输入;

步骤3、糊神经网络参数校正单元首先制定模糊规则表而后使其在神经网络中实现。

步骤4、制定模糊规则表首先选定e、ec、u的论域元素为{-5,-4,-3,-2,-1,0,1,2,3,4,5}及隶属函数在变量论域中定义变量e、ec、u模糊子集{nb,nm,ns,zo,ps,pm,pb},进而可制定e、ec、u的语言变量值表和模糊控制规则表。

步骤5、由步骤4中的论域元素和隶属函数确定e、ec、u的语言变量值如下表1:

表1为e、ec、u的语言变量值表

步骤6、由步骤4中的变量e、ec、u模糊子集{nb,nm,ns,zo,ps,pm,pb}定义模糊控制规则如下表2。表中×号代表不可能出现的情况。

表2为模糊控制规则表

步骤7、依据步骤6的模糊控制规则,采用min-max重心法总结推算出模糊控制表3如下:

表3为模糊控制表

步骤8、模糊规则表在神经网络中实现是采用三个bp(误差反传)神经网络,神经网络ⅰ,ⅱ分别用于生成e和ec的隶属函数,神经网络ⅲ用于生成输出u。

步骤9、步骤5的三个神经都为三层神经元网络,网络ⅰ生成误差的隶e属函数,输入层为1个神经元,用于接收船舶航向偏差e,输出层为7个神经元,分别用来生成隶属e模糊子集的隶属度,隐含层采用8个神经元。

步骤10、步骤5的网络ⅱ用于生成误差变化率ec的隶属函数,输入层为1个神经元,用于接收船舶航向偏差ec,输出层为7个神经元,分别用来生成隶属ec模糊子集。{nb,nm,ns,zo,ps,pm,pb}的隶属度,隐含层采用8个神经元。

步骤11、由步骤5表ⅰ中的数据样本学习训练神经网络ⅰ和神经网络ⅱ;最终获得误差小于给定值的两个3层神经元网络ⅰ和ⅱ。

步骤12、步骤5的网络ⅲ用来实现模糊控制规则,输入层对应于神经网络ⅰ,ⅱ的输出层,即14个神经元;而输出层为3个神经元,分别输出kp、ki、kd。

步骤13、网络ⅲ隐含层采用8个神经元,以表2所提供的经验数据为样本进行学习训练,可以获得1个神经模糊pid控制器。

步骤14、采用bp算法对ⅰ、ⅱ、ⅲ形成的整个网络进行离线训练,当网络接受输入样本后,通过前向传播计算得到实际输出,计算期望输出与实际输出的误差e,不断调整网络权值ω,经反复多次训练,使e接近要求的最小值。

步骤15、网络训练完成后,当在网络输入端输入实际值的模糊量,输出端会对应一个输出模糊子集,真实输出值经解模糊化得到。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1