Ric*_*ard -1 embedded electronics
我想实现想要我认为是一个相当标准的反馈循环,但是自从我看了控制理论并且我无法理解概念和找到实现示例以来已经很多年了.我希望有人可以用简单的术语解释发生了什么,并且可能指出我可以用来实现解决方案的一些资源.我在这个主题上看到的所有信息通常都淹没在数学中.
所以这就是我想要实现的目标:
我需要在一些阈值内处理斜坡和振荡.我也在C工作.
谢谢,理查德
小智 6
好的,如果我了解你,所有的硬件都已经完成了吗?
因此,您的系统的命令输入是以安培为单位的当前级别(由软件中的双精度浮点数指定),控制器的输出是控制抽取电流的硬件的电压,您的工厂是电路和反馈可能是8位,10位或16位数 - 根据您的A/D签名或未签名.
所以你的系统看起来像这样:
替代文字http://steves-wiki.wikispaces.com/file/view/control_diagram.jpg/64043668
你最快最肮脏的方法可能是PID控制.您可以使用这篇维基百科文章了解基础知识,并在此embedded.com文章中提供了一些有关实现的提示.
简而言之,您希望计算系统的错误,在您的示例中,该错误是当前命令 - 当前反馈.确保一切都在相同的单位,希望安培.然后,在计算出错误之后,您必须使用命令对其进行更正.在您的系统中,这是对压控电流源的电压指令.对于PID,通过将误差,误差的积分和误差的导数乘以增益并将结果相加来计算命令.收益是棘手的部分.其他棘手的部分是:确保您的单位一致,确保时机正确,并进行正确的积分/导数计算.
在你的系统中你有很多单位:错误是安培,命令是伏特,变成安培,然后当前使用是安培,报告为伏特,它被转换为有符号或无符号整数,必须缩小为安培使错误正确.您将拥有许多变量,请确保您可以跟踪每个变量适用的物理单位.
控制算法是硬实时的,必须以专用速率运行.我建议至少100Hz(每10ms计算一次).电子电路快速移动 - 与机电系统不同.您可能需要更高的费率才能掌握最新信息.但它必须是实时的 - 这意味着一致.你可能甚至无法摆脱软件定时器.
积分和派生计算是棘手的,但只有很多方法可以做到这一点.最基本的算法是矩形规则 - 它是愚蠢但它可能会工作.如果需要更精确地使用梯形法则.在这里查看算法.很可能你不会使用衍生控制 - 它往往会使事情变得不稳定,在大多数系统中都不需要.积分+比例控制你应该没问题.
有很多陷阱,但这应该让你开始.如果你有控制理论的背景,那么它应该都会回到你身边.一旦框架到位,你将花费大量时间来调整比例和积分收益 - 这是工作的重点.如果对你来说这仍然是一个太多的数学,那么,对不起 - 这就像控件一样简单.