如何设计控制回路

时间:2014-02-24 15:36:00

标签: c++ posix software-design

这更像是一个软件设计问题,所以它应该独立于语言 - 但为了完整性,我们假设C ++和POSIX系统。

我努力实现的目标:

  • 读取低电平传感器,通过I2C和1W协议(所有读数需要时间,但不一定需要大量资源CPU /内存)/所有设备的读出频率都不同。
  • 反馈读取的信息(反馈频率比最慢的传感器快)
  • 当新命令到来时(通过蓝牙(bluez))
  • 时响应

我最好怎么做?

我现在拥有的是我用传感器创建具有相同超类的对象,其中包含ptreath测量循环,其中写入最近的值参数,并且主循环不断读取最后一个值。 / p>

这对我来说相当笨拙,因为我必须查看变​​量等。是否有更好/更简单的方法来实现这一目标?反馈算法相当简单,不需要很多资源。

1 个答案:

答案 0 :(得分:0)

我通常做的是在传感器轮询线程中实例化测量消息,并在一个生产者 - 消费者队列上将它们全部排队到一个运行实现控制算法的状态机的线程。控制消息也可以被推送到队列中,因此可以以相同的方式正确处理。

这将所有复杂的控制决策保存在一个线程中,一个状态引擎,可以通过消息轻松调试操作。

主线程可以在PC队列上等待并运行SM。阻塞PC队列消除了无意义,浪费和可避免的var轮询。