西西河

主题:【原创】我所知道的舵、操舵和自动舵 -- 代码ABC

共:💬24 🌺266 新:
全看分页树展 · 主题 跟帖
家园 【原创】我所知道的舵、操舵和自动舵(二)

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

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

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

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

土鳖继续

通宝推:上古神兵,

本帖一共被 1 帖 引用 (帖内工具实现)
全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河