code_abc 发表于 2012-3-18 13:12:05

我所知道的舵和自动舵

首先说明一下,我不是航海人士,平时工作和船舶没什么关系。只不过从父辈的交谈中了解了一点船上的知识。以下内容是这点零碎的知识加上一些想象、一些常识和一些资料拼凑而成。做一板砖的干活。

   一切的开始是我随手在某贴回了一下说现代的船舶都很好驾驶因为有自动舵,不过回头想想这句话大有问题。操舵很简单吗——即使是有自动舵的情况下?

   舵是什么我想大家都没什么需要科普的,它就是一个控制舰船在水中航向的装置。不过很多人不知道的是,在设计舵和设计飞机的机翼是相通的。甚至里面的术语如迎角、失速等都是一样的。实际上舵就是一个竖放在水里面的机翼,舵力就是水流赋予这块机翼的升力。所以舵设计里面的积分符号可以把任何四则运算都不利索的人绕晕。不过正是这些天书般的符号让我们在短短几十年超越了人类几千年积累的经验。舵也从一块简单的木板发展成现在各种看上去像木板,但是包含多种奇思妙想的不同“木板”。同时人们也在琢磨着怎么让站在舵轮后的舵手歇下来,让不知疲倦的机器代替——造一台机器比培养一个好舵手要简单多了。

   大海航行靠舵手,当我们喊出这句话的时候,我们把制定航行计划、设定航向、测量船位的工作都放在这个舵手身上。自然站在舵轮后操舵的舵手变得非常重要。在只有一个船老大的小船上的确如此,然而在分工细致部门齐全的大型舰船上,只管操舵的水手倒不是那么重要。毕竟前面那些有趣的工作都是由高级军官负责,舵手只负责讲舰船保持在领航员设定的航向上这个沉闷的工作。所以前美军五星上将尼米兹特别讨厌一个军官只会操舵,他认为操舵不过是一个少尉的工作。而在驱逐舰上舵手甚至只是一个连军士都不是的水兵而已。

    然而,一个经验丰富的舵手确实很重要。在智能自动操舵系统完善之前,操舵一直是一门经验的艺术。在海上跑的舰船会受到风、浪、流的影响。时刻在玩着陆上汽车望尘莫及的3D多自由度漂移。也就是即使我们把舵卡在零点,航向还是会慢慢地偏离。因此需要在适当的时机使用舵进行修正。这个修正的时机和力度就十分考验舵手的经验,以及对当前船舶的掌握程度。由于舰船对舵的反应没有汽车或飞机那么快,没经验的舵手就容易矫枉过正,到时候还要再反过来再做调整,这样将会表现为频繁操舵。一来增加了船舶航行的阻力,二来反复调整也增加了船舶的摇摆,令人不快,如果碰巧和浪合拍了那就热闹了。而一个好的舵手可以减少这种摇摆,反而利用舵力降低风浪的影响,让船舶在恶劣天气下跑的更平稳、更快。这种舵手需要时间培养和悟性,不过纠正舰船航向偏差这个任务相对简单,因此人们在上世纪二十年代开始用机械方式自动调整航向偏差,这就是第一代的自动舵。

   第一代的自动舵使用机械方式将航向偏差量转换成舵机的操作,在少数船舶上使用过。不过这些自动舵并不理想。很快在控制理论和电子技术的帮助下人们发展了第二代自动舵。和第一代机械式自动舵不同,偏航误差信号不是直接控制舵机,而是通过电子设备进行运算后再驱动舵机动作。而且运算中的几个参数是可以调整的。最早的控制比较简单,就是使用偏航信号乘以一个系数作为舵角控制舵机。由于舵角和误差为固定比例,所以这种自动控制的方式成为比例控制(P)。应用在低速稳定的船舶上没什么问题——实际上这类型的船本身也很好控制。但在高速或不稳定的舰船上就比较悲剧,容易引起震荡,表现就是蛇形运动——前段时间棒子的新快艇就是一个例子(当然了,他们肯定不是用这种落后的控制方式)。对付这种高速不稳定的舰船我们需要在控制公式中一个变化趋势的项,所谓变化趋势在高等数学中描述就是偏差的微分(导数),因此这种控制进化为比例——微分控制(PD)。事情没完由于船还受风的影响,这时我们还需要让舵抵消这些影响的累积效果,累计效果在数学中就是积分。于是我们再次和会绕晕人的积分符号见面,控制方式进化到大名鼎鼎的PID控制方式(比例——微分——积分)。另外,引入积分项后会导致控制系统对低频信号相应迟钝,表现为船舶控制系统反应迟钝,偏差纠正慢。因此再加入一个高速修正项(偏差的二阶导数)。到此为止根据现代控制理论建立的自动舵系统基本完成。剩下的事情就是对这几个项的系数的调整了。

   稍微跑题说一下控制论,这是我在大学里唯一需要老师放水的科目(在那次考试后,据说杀手最后是用卷面分数开平方乘十来放水的)。其实只要进入了控制论的天地,哪怕我们采用的是最简单的比例控制也不可避免地要和高等数学打交道。说起来神秘,其实我们身边有大把例子可以套进控制论的范畴。比如我们伸手去拿一个杯子这个动作,就包含了许多控制的概念,首先我们用眼睛判断手和杯子的相对距离,这个相对距离就是系统的输入,然后我们的大脑会不断地调整手臂和手指的肌肉群,这相当于输入对系统的内部状态的改变,反映到实际就是手不断地接近杯子,最后拿起来。听起来挺玄,但是科学家就是通过找出了这些看似不相关的系统的共同点,发展出一套理论来研究它们。这样他们就可以在忽略实践约束的情况下推导各种系统的行为,并给出一大堆奇思妙想。而工程师则必须在现实世界里和误差、噪声、干扰等麻烦为伴。

   那么这些八杆子打不到一块的系统都有些什么共同点呢?在控制论看来有很多,主要的一个是阻尼。阻尼解释起来比较抽象,还以拿杯子的例子来说:定性分析的话阻尼有三种状态:临界阻尼、过阻尼和欠阻尼。在过阻尼的情况下你拿杯子的动作是小心翼翼地慢得让人不可忍受,欠阻尼则会冲动些很有可能把杯子碰翻,临界阻尼则是恰到好处行云流水地拿起来。类似的,在自动操舵中欠阻尼系统修正会比较慢甚至一直无法消除误差,欠阻尼系统则表现为频繁操舵或干脆蛇形运动,临界阻尼的系统会很好地修正航向偏差不亏不盈。在大多数情况下我们都希望系统处在临界阻尼状态,不过临界阻尼状态是状态函数中的一个点,实际很难做到,另外,对于具体系统我们会在综合考虑了响应时间和稳定性后故意让系统稍微的欠阻尼或过阻尼。应用控制论的知识我们就知道如何计算一个系统的阻尼,并据此设计出一个接近临界阻尼的控制系统。应用到自动舵设计中,我们就可以在纸面上搞出一个合理的设计少走很多弯路。这就是理论的威力。

   回到自动舵系统中,依据上述理论我们还需要知道给定舵角下舰船是如何改变航向的,有了这个知识我们系统模型就完整了,可以动手调整前面那个公式中的各项参数来达到我们所需要的阻尼系数了。然而船在水里是怎么运动的又会进入一个很麻烦的科学领域——流体力学(我的专业干脆就把这个科目删除了)。因此在所有的计算中使用的都是一些工程上认为合理的简化模型。由于简化的模型和实际的区别导致许多问题。

   其中一个是波浪的影响,波浪是一种高频摆动(相对其他偏航因素),而PID控制对波浪是敏感的,所以悲剧了。因此在实践中需要采用一些手段屏蔽掉波浪的影响,然而这又反过来导致系统对低频相应迟钝,容易造成持续的周期性偏航(我们又看到蛇形运动了)。那么我们在模型加入波浪再进行计算又如何呢?这个想法遇到的第一个麻烦是计算量的问题,早期的自动舵系统出来的时候计算机还没影子,即使是现在的计算机其实也无法很好地完成流体力学中大部分问题的计算——想想悲剧的天气数值预报就明白了。其次,在实际环境中,除了波浪之外还有许多其它的干扰因素,由于船舶控制其实是一个非线性系统,很难将各种干扰因素单独考虑。也就是说即使加入了波浪模型也不保证得到的结果是正确的。好在现在的计算机足够强大,许多情况还是可以通过模拟计算得到。但实测数据是必须的,没有实测的数据是做不出好的自动舵系统的。经常看到许多原理上没难度,制造工艺上也没问题的东西,我们却无法做出来就是这个道理。另外,同一条船系统模型也是会变的,比如轻载和重栽舵效是不同的;浅水区和深水区舵效也不一样。这导致要让自动舵完美控制就需要不断地计算和修改这些系数。想象一下,舵手在控制台前不断输入莫名其妙的数据的场景,我想他还是宁可去转舵盘。在这种环境下,第三代自适应的自动舵系统问世。


   讲到自适应控制突然发现这坑挖得有点深,快把自己给埋住了,所以赶紧填了。

   其实基于PID的自动舵和其它工业领域的PID控制是一回事,麻烦的都在所谓的参数整定上,也就是那条公式中的几个参数怎么算出来。不过船舶运动相对要麻烦一些。简单的控制系统尤其是那些模型清晰的,参数完全可以通过纸面运算得到。而船舶在水中的运动其实和飞机在空气运动类似,因此某种意义上说自动舵系统是一个简化版的飞控系统。好在需要控制的舵面只有一个,运动速度也远小于飞机,而且环境变化也没飞机那么剧烈。然而不管怎么说,想把船舶在水中运动的模型完全搞出来几乎是不可能的。也就是说现在的问题是:在我们不知道舵盘转动后船会怎么动的情况下,如何通过转舵来控制一条船。

   听起来有两个不可思议的地方:首先我们怎么会不知道舵对船的作用;其次在不清楚系统运作机制的情况下怎么可能控制一个系统。

   第一个问题:绝大部分情况下船是很听舵的控制的,然而事情总有例外,不同的船型、不同的水深、不同的速度、不同载重情况下舵的作用是不一样的。比如船相对水静止的时候舵是不起作用的。除此之外还有一些令人意外的事情,比如一些船(可能大部分都是)转舵瞬间会船头会有一个相反的转动,我听父亲说过他们船上的舵手在满舵前会先向相反的方向压一下舵然后再转过来,这样可以让船更快地转向。

   第二个问题就是自适应控制的威力了,某些系统即使我们不知道内部工作原理,也可以通过他们对输入的响应推算。最有名的就是所谓的线性时不变系统,线性的意思就是叠加的输入的到叠加的输出;时不变则表示系统内部工作机制不会随时间变化而变化。比如一个系统对1输出两个0.5,那么我们可以判定其对2的输入会输出两个1,而且任何时刻都是这样。说穿了并不复杂,其实就是在函数形态已知的条件下,根据函数的几个点推导函数的参数而已。只不过很多时候我们并不需要知道函数的解析式,而且许多系统无法用几个函数表达,我们更多的使用这些系统对特定信号的响应来表达罢了。有了这些理论工具我们就可以通过观测系统的历史来预测系统对特定输入的响应,然后再通过一些优化算法来调整我们的控制参数令其输出达到指定的性能指标。这就是自适应控制的基本原理。和模型已知的控制区别在于,我们无法得到一个全局最优的控制,但我们可以得到一个在大部分情况下都不错的控制。

   对于自动舵系统来说这套理论还真能解决大部分问题。最給力的就是我们不再需要找出复杂的船舶运动方程。虽然在自适应自动舵系统里我们还需要增加诸如船舶内部参数配置(如载重)和一些传感器(如波浪测量等),但整个模型是大大简化了。目前成熟的自动舵系统大部分都是这类东西,同时结合现代定位技术,如 GPS。自动舵不但能保持航向还能保持船舶运动轨迹,这类能保持轨迹的自动舵我们称为轨迹舵,而保持航向的我们称为航向舵。在电子技术飞速进步的今天,驾驶室里的很多东西都转化为数字式的,并且在计算机的帮助下这些东西很容易结合起来发展出新的功能。比方和雷达配合自动舵可以完成自动避碰功能。配合电子海图和GPS定位系统现在航海部门的工作比以前要简单很多了。领航员可以直接在电子海图上画出航线,船舶就可以在自动舵的操控下自动开往目的地。以前需要在多个导航点测船位,再修改航向的工作现在变成后备作业。所以现代先进的驾驶室技术让菜鸟也可以开航空母舰,而且不会跑偏。

    最后,土鳖不土鳖呢?这是一个问题。因为这里还留了一个尾巴——智能自动舵,不过目前这个东西还在实验室里,有空再补吧。

同文 发表于 2012-3-27 03:43:04

送葱花,可以炒鸡蛋(俺在日志里送的)。顺便捞个沙发。

MacArthur 发表于 2012-3-27 11:17:49

比如一些船(可能大部分都是)转舵瞬间会船头会有一个相反的转动,我听父亲说过他们船上的舵手在满舵前会先向相反的方向压一下舵然后再转过来,这样可以让船更快地转向。
我猜先反打舵的目的是造成船体向相反方向侧倾,然后再迅速回舵 -- 利用船体已经向拐弯方向侧倾的惯性,可以在高速下打一个更小的弯。。。

等仙人来讲解。。 。

一无所之 发表于 2012-3-27 11:22:14

我对于控制论的理解,基本上就是公共浴室调淋浴的冷热水龙头了{:187:}

就爱抬杠 发表于 2012-3-28 18:32:10

一无所之 发表于 2012-3-27 11:22 static/image/common/back.gif
我对于控制论的理解,基本上就是公共浴室调淋浴的冷热水龙头了

热水冷水从控制点到水龙头流出来有延迟,需要加一个时延的控制,应该是个积分吧,好久没搞了。
页: [1]
查看完整版本: 我所知道的舵和自动舵