请教一个业务逻辑怎么设计,有人回答么?

提问:小弟最近在做一个嵌入式的智能硬件,遇到一个棘手的业务逻辑,请大家帮忙出谋划策一起想想:这个硬件会根据温度高低自动调节档位,比如默认在第0个档位,温度高于30℃打开第1个档位,高于35℃打开第2个档位,高于40℃及以上打开第3个档位。题目虽然很简单,但实际应用的情况却千变万化,首先,为了保证温度读取的实时性,我应该频繁的读取温度(这个开销也比较小),同时为了保证电机的寿命,我应该只在必要的时候才运转电机变换档位,那么问题来了,我应该如何设计,能够尽可能优质的达到温度控制的目的呢?

取一段时间的平局值,例如过去十分钟的平均温度超过30C,才选择换挡,只有一瞬,或者几分钟上来,但是又掉下去的话,由于均值不够不会换挡,自然这个时间是假设的,你可以选一个合适的值,检测也可以是周期性检测温度(建议还是频率高一点比较好,由于是用均值做为判断依据)

是不是问题想的复杂了,硬件在实际情况中很少会说出现问题激变的情况。那么实际上的你的问题,你要确定一段时间的问题的变化,和开启电机后问题的变化。可以用写回归算法来预测下温度变化。然后来调整你的电机的转动。

温度的变化比较缓慢,我们以1/min的频率去采样,最近是个点可能是29.5,29.6,29.7这样缓慢的逼近30,当平均值高于30的时候进行通风操作的时候,温度会略微下降,再次到30一下,而这样就会导致采取上一档位的操作,又降低通风使得温度上升,这样会一直在临界点徘徊嘛?

如果不是关于安全问题,可以选择平均温度,误差控制在一定范围内

百度pid

如果作为业务设计,那么需要明确业务目标,根据你的说法,你需要在跟随温度变化及时采样来进一步控制档位和防止频繁档位变化损害电机之间取得平衡。
如果是我,我会这样设计:

  1. 逻辑的输入:温度
  2. 逻辑的输出:经过矫正的温度,下一次温度采样间隔
  3. 逻辑分支A:输入的温度经过温度和档位映射表匹配知道是否需要切换档位,如果不需要切换档位,输出本档位的标准参考温度,确保不会激活硬件去切换档位
  4. 逻辑分支B:输入的温度经过温度和档位映射表匹配知道是否需要切换档位,如果需要切换档位,计算上一次切换档位到现在的时间间隔,然后对比电机安全切换频率,决定输出不触发切换档位的温度,还是触发切换档位的温度
  5. A和B逻辑汇总:A或者B逻辑执行之后,把当前温度加入之前纪录历史温度系列做求导,判断温度变化趋势是向缓还是走急,确定下一次温度采样间隔。

如果不考虑你是嵌入式系统,可以在一个大后台运行很庞大的程序,可以使用隐形马尔科夫模型(HMM),使用采样温度在时间上的变化,预测性切换档位,包括容忍一些小幅温度的抖动而减少频繁档位切换,等等更智能的功能。