4 x9 e0 I. J! M( Z 大海航行靠舵手,当我们喊出这句话的时候,我们把制定航行计划、设定航向、测量船位的工作都放在这个舵手身上。自然站在舵轮后操舵的舵手变得非常重要。在只有一个船老大的小船上的确如此,然而在分工细致部门齐全的大型舰船上,只管操舵的水手倒不是那么重要。毕竟前面那些有趣的工作都是由高级军官负责,舵手只负责讲舰船保持在领航员设定的航向上这个沉闷的工作。所以前美军五星上将尼米兹特别讨厌一个军官只会操舵,他认为操舵不过是一个少尉的工作。而在驱逐舰上舵手甚至只是一个连军士都不是的水兵而已。. b6 n, [% e: |' D
: t! u3 M1 ]2 W
然而,一个经验丰富的舵手确实很重要。在智能自动操舵系统完善之前,操舵一直是一门经验的艺术。在海上跑的舰船会受到风、浪、流的影响。时刻在玩着陆上汽车望尘莫及的3D多自由度漂移。也就是即使我们把舵卡在零点,航向还是会慢慢地偏离。因此需要在适当的时机使用舵进行修正。这个修正的时机和力度就十分考验舵手的经验,以及对当前船舶的掌握程度。由于舰船对舵的反应没有汽车或飞机那么快,没经验的舵手就容易矫枉过正,到时候还要再反过来再做调整,这样将会表现为频繁操舵。一来增加了船舶航行的阻力,二来反复调整也增加了船舶的摇摆,令人不快,如果碰巧和浪合拍了那就热闹了。而一个好的舵手可以减少这种摇摆,反而利用舵力降低风浪的影响,让船舶在恶劣天气下跑的更平稳、更快。这种舵手需要时间培养和悟性,不过纠正舰船航向偏差这个任务相对简单,因此人们在上世纪二十年代开始用机械方式自动调整航向偏差,这就是第一代的自动舵。 5 m. C" ?8 s0 M, H4 Z+ B1 p2 V: o% X( ^! @
第一代的自动舵使用机械方式将航向偏差量转换成舵机的操作,在少数船舶上使用过。不过这些自动舵并不理想。很快在控制理论和电子技术的帮助下人们发展了第二代自动舵。和第一代机械式自动舵不同,偏航误差信号不是直接控制舵机,而是通过电子设备进行运算后再驱动舵机动作。而且运算中的几个参数是可以调整的。最早的控制比较简单,就是使用偏航信号乘以一个系数作为舵角控制舵机。由于舵角和误差为固定比例,所以这种自动控制的方式成为比例控制(P)。应用在低速稳定的船舶上没什么问题——实际上这类型的船本身也很好控制。但在高速或不稳定的舰船上就比较悲剧,容易引起震荡,表现就是蛇形运动——前段时间棒子的新快艇就是一个例子(当然了,他们肯定不是用这种落后的控制方式)。对付这种高速不稳定的舰船我们需要在控制公式中一个变化趋势的项,所谓变化趋势在高等数学中描述就是偏差的微分(导数),因此这种控制进化为比例——微分控制(PD)。事情没完由于船还受风的影响,这时我们还需要让舵抵消这些影响的累积效果,累计效果在数学中就是积分。于是我们再次和会绕晕人的积分符号见面,控制方式进化到大名鼎鼎的PID控制方式(比例——微分——积分)。另外,引入积分项后会导致控制系统对低频信号相应迟钝,表现为船舶控制系统反应迟钝,偏差纠正慢。因此再加入一个高速修正项(偏差的二阶导数)。到此为止根据现代控制理论建立的自动舵系统基本完成。剩下的事情就是对这几个项的系数的调整了。- K/ @3 m7 B$ Q; z
/ w# F. w' A1 G, D8 p
稍微跑题说一下控制论,这是我在大学里唯一需要老师放水的科目(在那次考试后,据说杀手最后是用卷面分数开平方乘十来放水的)。其实只要进入了控制论的天地,哪怕我们采用的是最简单的比例控制也不可避免地要和高等数学打交道。说起来神秘,其实我们身边有大把例子可以套进控制论的范畴。比如我们伸手去拿一个杯子这个动作,就包含了许多控制的概念,首先我们用眼睛判断手和杯子的相对距离,这个相对距离就是系统的输入,然后我们的大脑会不断地调整手臂和手指的肌肉群,这相当于输入对系统的内部状态的改变,反映到实际就是手不断地接近杯子,最后拿起来。听起来挺玄,但是科学家就是通过找出了这些看似不相关的系统的共同点,发展出一套理论来研究它们。这样他们就可以在忽略实践约束的情况下推导各种系统的行为,并给出一大堆奇思妙想。而工程师则必须在现实世界里和误差、噪声、干扰等麻烦为伴。 ' f) d( Q O; y1 K; F. p0 _ ( e$ W/ K" o' y: v+ T& Y 那么这些八杆子打不到一块的系统都有些什么共同点呢?在控制论看来有很多,主要的一个是阻尼。阻尼解释起来比较抽象,还以拿杯子的例子来说:定性分析的话阻尼有三种状态:临界阻尼、过阻尼和欠阻尼。在过阻尼的情况下你拿杯子的动作是小心翼翼地慢得让人不可忍受,欠阻尼则会冲动些很有可能把杯子碰翻,临界阻尼则是恰到好处行云流水地拿起来。类似的,在自动操舵中欠阻尼系统修正会比较慢甚至一直无法消除误差,欠阻尼系统则表现为频繁操舵或干脆蛇形运动,临界阻尼的系统会很好地修正航向偏差不亏不盈。在大多数情况下我们都希望系统处在临界阻尼状态,不过临界阻尼状态是状态函数中的一个点,实际很难做到,另外,对于具体系统我们会在综合考虑了响应时间和稳定性后故意让系统稍微的欠阻尼或过阻尼。应用控制论的知识我们就知道如何计算一个系统的阻尼,并据此设计出一个接近临界阻尼的控制系统。应用到自动舵设计中,我们就可以在纸面上搞出一个合理的设计少走很多弯路。这就是理论的威力。; Z, m% B- z4 q. _1 \, y
2 S, j8 G. E# N1 o" R0 W 回到自动舵系统中,依据上述理论我们还需要知道给定舵角下舰船是如何改变航向的,有了这个知识我们系统模型就完整了,可以动手调整前面那个公式中的各项参数来达到我们所需要的阻尼系数了。然而船在水里是怎么运动的又会进入一个很麻烦的科学领域——流体力学(我的专业干脆就把这个科目删除了)。因此在所有的计算中使用的都是一些工程上认为合理的简化模型。由于简化的模型和实际的区别导致许多问题。 3 X- R/ Z: g5 L( O# K8 G% ?: ]: m* [" l6 R2 [0 n; S
其中一个是波浪的影响,波浪是一种高频摆动(相对其他偏航因素),而PID控制对波浪是敏感的,所以悲剧了。因此在实践中需要采用一些手段屏蔽掉波浪的影响,然而这又反过来导致系统对低频相应迟钝,容易造成持续的周期性偏航(我们又看到蛇形运动了)。那么我们在模型加入波浪再进行计算又如何呢?这个想法遇到的第一个麻烦是计算量的问题,早期的自动舵系统出来的时候计算机还没影子,即使是现在的计算机其实也无法很好地完成流体力学中大部分问题的计算——想想悲剧的天气数值预报就明白了。其次,在实际环境中,除了波浪之外还有许多其它的干扰因素,由于船舶控制其实是一个非线性系统,很难将各种干扰因素单独考虑。也就是说即使加入了波浪模型也不保证得到的结果是正确的。好在现在的计算机足够强大,许多情况还是可以通过模拟计算得到。但实测数据是必须的,没有实测的数据是做不出好的自动舵系统的。经常看到许多原理上没难度,制造工艺上也没问题的东西,我们却无法做出来就是这个道理。另外,同一条船系统模型也是会变的,比如轻载和重栽舵效是不同的;浅水区和深水区舵效也不一样。这导致要让自动舵完美控制就需要不断地计算和修改这些系数。想象一下,舵手在控制台前不断输入莫名其妙的数据的场景,我想他还是宁可去转舵盘。在这种环境下,第三代自适应的自动舵系统问世。$ N5 V* q4 f8 S
9 M5 Z/ |8 l- y9 A# o- v
; Y. Y. s. ~/ _2 J8 o O
讲到自适应控制突然发现这坑挖得有点深,快把自己给埋住了,所以赶紧填了。- T1 T' m. J0 m" L% c