点击运行三个玩家简单难度,左侧为电脑,右侧为玩家,可以通过键盘的上下键操控板子的移动。简单难度就是小球的速度不变。 选择困难难度,困难难度就是小球碰撞后速度增加。 选择两个玩家依旧是困难模式,左侧玩家可以通过 ws 键移动,右侧依然是上下键控制移动。 选择两个电脑困难模式,左右军事电脑控制, 左侧是令 tid 操控板子速度,实现球以板子中心误差为零,右侧则保持板子速度恒定。在每次得分后,左右板子初始化位置随机 可见,左侧的接球能力更强。 选择测试,用鼠标控制小球来测试误差,小球与板的误差基本都趋于零。
粉丝88获赞635

大家好,欢迎来到本期的实验视频, 今天我们将为大家演示如何利用位置是 pid 和增量是 pid, 实现直流无刷电机的 pid 速度闭环控制。 在这个实验中,我们将通过调节 pid 参数来控制电机的转速,使其达到我们期望的目标值。前面我们了解了无刷电机简单的六步 pwm 控制,但是我们在实际使用中并不是只是简单的 pwm 控制就能满足应用要求,通常我们还需要对速度进行控制。 首先让我们来了解一下 p i d 控制算法。 p i d 控制算法是一种常用的控制方法,他通过不断调整控制量来使被控对象的输出达到期望值。 p i d 控制算法有比例项 p 项、积分 分项 i 项和微分项 d 项组成。比例项用于根据误差的大小调整控制量。积分项用于消除系统的静态误差,微分项用于预测系统的未来变化趋势。电机驱动器用于控制电机的转速, 而控制器则负责计算 pid 控制量并发送给点击驱动器。接下来咱们看一下控制原代码设计,这里只讲解核心的部分代码,有些变量的设置、头文件的包含等,并没有涉及到本例的编程要点。 一、高级定时器 i o 配置二、定时器实际结构体, can handle type deaf 配置。三、定时器输出比较结构体, proceed and type deaf 配置。 四、根据电机的幻象表编写幻象中段回调函数。五、根据定时器定义电机控制相关函数。六、配置基本定时器可以产生定时中段来执行 pid 运算。 七、编写位置是 pid 算法八、编写速度控制函数。九、增加上位机曲线,观察相关代码。十、编写按键控制代码。闭环结构也叫反馈控制系统, 是将系统输出量的测量值与所期望的几定制相比较,由此产生一个偏差信号,利用此偏差信号进行调节控制,使输出值尽量接近于期望值。 直流无刷电机速度闭环控制作为闭环控制系统,它的输出量就是电机驱动的 pwm 信号, 由他的输出来控制电机的速度,而系统的反馈信号来自无刷电机内置的三项编码器,由编码器的信号计算出电机的转速,作为反馈量加入 pid 控制系统。这里主要讲解速度的获取方法和分析。 pid 算法的控制实现部分,该含 数用于设置 pwm 输出的占空比。本函数只是将占空比存放在了 b l, d, c m pose 变量中,而真正设置正空比是在 atl tim trigger call 吧函数中,所以在电击使能时需要调用 h l team trigger call by 函数设置 p w m 输出的占空比。该函数用于更新电机的当前速度,其中行参 time 传入的是霍尔传感器有变化时定时器捕获到的值。通过 time 就可以计算出一次幻象的时间为一点零八千四百万点零。除以一百二十八点零 time, 电机旋转一圈共有十二个变化信号,所以电机的速度为幺点零幺二点零一点零八千四百万点零。 whole prescaler count time 六十点零 rpm whole prescular con time 六十点零 rpm 将计算得到的速 速度保存在 motor drive speed group 数组中计算最近 speed photo 那么次的速度值达到绿步的效果。最后调用 updates peter 更新速度方向,该函数用于更新电机的速度方向。 使用当前读到的霍尔值与上一次读到的霍尔值进行对比来确定方向 tink 号是否相等。如果是,则说明是中断产生而回调的更新速度和检测读转超时。如果不相等,则说明是第一次启动或设置占空比时调用 不更新速度和检测读转超时的变量。 b s p basic team h 红定义这里封装了定时器的一些相关的红。使用红定义非常方便程序升级移植使用 set basic team periot。 这个红可以设置定时器的周期,这样可以通过按键或者尚未机来设置定时器的中断周期。使用 这个红可以得到定时器的当前周期。不过使用的两个红是有要求的,需要定时器时钟圆的频率是八十四兆合资,且预分屏系数为幺六八零。如果更换定时器和修改预分频器,则需要重新计算这个红里面的参数。 我们来看一下当前红中周期的计算。八千四百万除以一千六百八十除以五十等于一千八千四百万为十中元的频率。幺六八零为预分频系数, 五十为自动重装载值,一千为定时器产生更新中断的频率。当定时器以八千四百万除以幺六八零赫兹的频率计数到五十时刚好是一毫秒。 所以只要设置自动重装,在值为五十的 n 倍减一时,就可以得到 n 毫秒的更新中段。注意 n 十一到一千的正整数。 首先定义两个定时器初始化结构体,定时器模式配置函数主要就是对这两个结构体的成员进行初始化。然后通过调用的初始化函数 h l team basine 把这些参数写入定时器的寄存器中。最后通过调用函数 h m b star it 使能定时器的更新中段,该函数主要配置了定时器的中段设置和定时器模式配置。 最后调用 say computer fire 函数设置了上位机的周期值。这里只是同步一下上位机显示的周期值。 p 的 system n 适用于选择是否使用上位机的红。当我们在调试阶段时,可以定义这个红,方便使用上位机 p i d 助手来观察电机的运行效果。在完成调试后,我们可以直接不定义这个红,这样就去掉了上位机相关部。 p promine 函数,把结构体 p i d 参数初始化,将目标实际值、偏差值和积分项等初始化为零。其中 p p t 和 p t d 是我们配套电机运行效果相对比较好的参数,不同的电机该参数是不同的。 second computer for you 函数用来同步上位机显示的 p i d 值,设置目标值。 这个函数主要实现了位置是 p i d。 算法用传入的目标值减去实际值,得到误差值,得到比例项。再对误差值进行累加,得到积分项。用本次误差减去上次的误差,得到微分项。 然后通过位置是 p i d 或者增量式 p i d 公式实现 p i d 算法,并返回实际控制值。该函数在定时期的中段里 定时调用,默认五十毫秒。如果改变了周期,那么 pid 三的参数也需要做相应调整。 pid 的控制周期与控制效果是息息相关的, 要用 get motor speed 获取电机的旋转速度,单位试转每分钟,把实际速度带入 penrila speed 大数进行运算,根据运算结果的正负设置电机的旋转方向,最后对输出的结果做一个上线处理,用于 pwm 占空笔的控制。 最后将实际的速度值发送到上位机,绘制变化的曲线。在主函数里面,首先做了一些外设的初始化,然后通过按键可以控制电机的启动、停止和目标速度的设定。 在使用上位机的情况下,这些操作也可以通过上位机完成。上下位机通讯部分后续将在上位机编程视频中来跟大家分享更。 各位老铁有什么想法和思路,欢迎在评论区反馈,欢迎大家点赞投币转发。我们将分别介绍位置是 pid 和增量式 pid 的实现方法。在位置是 pid 中,我们需要测量电机的转速,并将其与期望值进行比较,然后根据误差计算 pid 控制量。 而在增量式 pid 中,我们只需测量电机的转速变化量,并根据变化量计算 pid 控制量。经过多次实验和参数调整,成功实现了直流无刷电机的 pid 速度闭环控制。 无论是位置是 pid 还是增量是 pid, 都能够使电机转速稳定在我们期望的目标值附近。感谢大家观看本期视频,谢谢!

大家好,这堂课是温度控制传感器应用系列课程,我们来讲一讲在温度控制系统中最常用也是非常重要的一个生产 pid 算法的应用。 在各种各样的生产实践过程中, pid 的控制是一个非常重要的,他直接设计到产品质量的好坏, 生产成本的高低等等,现在也叫做 pid 模糊算法,这是呢现场应用中非常复杂的一个控制系统, 下面我们来看看 pid 的含义。 p 是比例的意思, i 是积分的意思, d 是微分的意思,这是这三个英文单词的首字母缩写。那么 p 呢是比例调节作用,它指的是按比例来反应系统的偏差, 一旦系统呢出现了偏差,比方说我这上面是定的是两立方米每小时的流量,那么你现在呢,实际的流量呢?是一立方米, 你这样就离我那个目标就差了一个地方,你这叫出现了偏差,这时候比例调节器要立即调节啊,比方是控制这些比例调节阀进行 开度增大啊,让他流过的液体过多,或者是变频器增加频率,这都可以,然后呢 这个作用以减少这个偏差,比例作用大,可以加快调节,减少误差,就是我们这个比例啊,一般来说这个值 p 的值呢,可以取零到一百,我取十的时候呢,就叫比例, 这个数值小,如果八十、九十一百的话,显然这是大,那么大的时候会有什么呢?就可以加快这个调节,让他迅速的达到你的目标设定值。启动起来设备以后,然后是变频器马上呢就达到你的设定值。但是呢,由于他比例过大的时候, 假如我们这里取的是 p 等于九十,那么系统的稳定性就会下降,为什么下降呢?因为他比例大的时候呢,他就很容易的超过你的设定的能力,你没想 小时这叫超条,然后他系统发现这个比例不大了,超过了以后他马上就要往下降。那么还是一样啊,他速度快的话,他很容易就有低于很多你的目标值,这样的话,他也需要震荡个几次 才会达到你的目标控制目标两类方面,每每小时。所以说他就说使系统的稳定性往下降,甚至造成的系统的不稳定啊,有的时候可能这个曲线就一直震荡下去了,那么这是一种失败的调节方式。 那么这个 i 啊,他指的是积分调节作用,他背后的算法呢,也很复杂,关于 pid 的更深的理论知识呢,大家可以上网上自行百度一下。那么我们这里只是介绍他的初步他的概, 他是使系统消除稳态误差,提高无差度,因为有误差积分调解就进行,直至无差积分调解就停止。 积分呢,他输出一个长纸积分的作用强弱呢?取决于积分时间长寿, ti 积分长数,时间越小,他积分作用就越强啊,反之呢, t i 大,这积分的作用就越弱,也就是这个积分呢,我们在有些控制器里呢,他的取值也是从零到一百 加入积分呢,可以调节积分调节可以使系统的稳定性下降。动态响应变慢动态响应变慢是什么意思呢?有的时候现场的干扰因素很多啊, 比方说一个干扰进来以后,原来本来是这个两立方米每小时的,突然一下子就扰动,一下子变成了个一点五立方每小时,你比方说这个电源的稳呃扰动,使得变频器频率一下就降下来了,那么这时候他势必呢要 找到这个误差,快速的补偿上去,那么加入积分的时候,就可以使得动态响应就慢了,他反应可能是慢一些啊,半天没反应过来。他的作用呢,经常与另外两种调节器相结合,我们叫 pi 调节或者是 pid 调节器, 那么微分调节作用,微分的作用反应系统偏差信号的变化率,它呢具有一种预见性, 能遇见偏差变换的趋势,因此能产生超前的控制作用。 这句话怎么理解呢?比方说我这里不是流量控制了,是温度控制,温度控制在生产当中惯性特别大,也是非常难掌握的一种控制, 我们加热一个体让他达到,比方说这是二百度的,这不是两粒分明二百度的这个目标值,那么你呢,再加热 起上升温度的时候呢?如果达到二百度的时候,再停止加热,那时候就已经晚了,因为他的惯性可能会冲到二百四十度,二百六十度都有可能,那么的微分的 调节作用呢?他是写什么呢?他就是当达到了一百五六十度的时候,他就有一种预见性说我要调整一下,要什么呢?要降低现在的控制,不能把 功率的运行了啊,要通电的话呢,我是不是把那个电流和电压降低一些,让他加热慢一些,然后呢一点一点靠近我们这个目标值, 所以说呢,它能产生超前的控制作用,在偏差没有形成之前,就已经被微风调节作用消除了,因此呢,它可以改善系统的动态性能, 在微分时间选择合适的情况下,可以减少超调,减少调节时间,就是不至于 超接目标值很多。微分的作用对造成干扰有放大作用,因此啊,加强的 加微分调解对系统抗干扰的就不利。此外呢,微风反应呃的是变化率没有,而当输入没有变化的时候呢,微分的作用输出差距就等于零了。 微分作用呢,不能单独使用,记住啊,他不能单独使用,就说你把现场中这个一秒钟 p 等于零, i 等于零,然后呢,这个 d 你却等于三十,这是不可以的啊,他必须呢 配合另外两种的调节在一起才可以使用。好,那么下面我们来看一看你的小视频,来讲讲 pid 他到底能解决什么问题?聊 pid 啊,这个 pid 实际上是接着第三十三期节目,用自动控制原理遛狗,那么在内期节目呢,我们讲到了整个反馈闭环自动控制系统的一个框架,那么在这个框架当中有一个支点 就是控制器,而这个控制器呢,他需要一些算法和计算机的支撑,那么这个算法其中就有 pid 这样的一种控制算法。 那么这个控制算法到底怎么回事啊?你听这个名字就很奇怪,叫 p 就是比例啊, i 叫积分, d 呢就是叫微分,所以叫比例微分积分控制器,那么这个名字听起来非常抽象啊,一点都不实际,所以我们今天想办法把它还原到我们生活当中啊, 还是老办法。那么我们首先想象一个场景啊,比如说我们要烧水,就拿那个煤气灶啊,煤气炉子烧水,当然有一个壶啊,这个手提的那种水壶,我们湖北人,叫什么调子,对吧?吹子啊,他他各种名字,反正就是一个壶。那么我们要烧水呢,现在有一个目标,就是 把这个水温控制在八十摄氏度,当然你可以允许你到八十五度啊,再再往高就不行了, 你最低呢,不要低于七十五度,这个水就是从水龙头接出来的水呢,大概是常温就二十度的样子。好,现在就有个问题啊,你看我们 pid 到底要解决什么问题?我们要烧水,那么打开火对吧? 好,现在如果我们用人去拧那个阀啊,就是那个煤气灶的那个火的大小的开关呢,我们在那个壶里边,我们给他搁一个温度计啊,就是看可以看 看那个水的温度现在是多少,比如说现在一看啊,二十度,那怎么办?加大火呀,把那个法拧到最大嘛,对吧?我们希望他烧水肯定要快一点哦。啊,当然我们控制呢,有非常多的 目标,比如说希望我们是最省能量的,就最省这个燃料的啊,省燃料就省钱嘛,这是最经济的方法。 但是省燃掉的同时呢,可能你的烧水的速度就不够快啊,但是我也可能是希望我这个阀拧的次数最少, 为什么呢?因为有些工作场景,有些工厂这种工作场景很恶劣,你要去换那个罚呀,需要花很多人力物力,那罚可能也很贵,所以呢,我们希望那个罚调整的次数很少,减少磨损,当然可能会有其他的一些这种损失啊,所以怎么控制算法呢?他是 实际上是一种叫打折啊,妥协的产物,就是你要了这个,你就不能要那个。哎,他是互相矛盾的,当然我们在这啊,我们希望他烧水烧的最快, 所以我们希望一上来火最大,对吧?那么水温肯定,你看那温度计就二十、三十、四十、五十、六十,那么到了七十之后你就纠结了,火关多小呢啊?关到百分之六十还是百分之八十还是百分之五十? 就你想,如果我现在不关火,那水可能马上就过了八十度啊,停不下来。因为壶烧水,它是一个,我们之前讲过啊,叫用惯性环节煮粥,对吧?这个壶它就是一个惯性环节,它有一定的惯性, 你要是不及时把火调小,调到一个合适的火的大小,那么他水可能就冲过了八十五度,那控制就失败了啊。在 我们烧水当然无所谓了,你超过八十五度是开了就没事,我关掉它。但是有一些工厂,这个温度你就不要太高,太高开锅了啊,那就非常危险啊,这是很严重的事故。所以呢,我们希望它到八十五度就停,但是呢, 如果火调的太小,比如说我只调到百分之二十,那你从七十度到八十度可能上身那就很慢,那如果我调个百分之, 呃,八十,那可能又过了。所以到底调多大的火,在什么时候调?这是我们人需要用经验,我烧十次水,烧一百次水 得出的经验,然后让人在那拧,对吧?拧这个法,哎,这个 pid 到底是干啥用的?就是代替人的大脑,我只要设针对这一套系统啊,这个壶就这个壶稍 这么多水,对应的这个煤气灶和这种型号的煤气啊,这煤气材质里面的液化石油气啊,就这一套定了之后,我调出一套参数了,这计算器就按这套参数去计算,就可以算出 在什么时候用多大的火去烧这个水,可以让水最终稳定在八十度上下,七十五到八十五度,并且不要超过我们最大的限制八十五度。当然至于这个 pid 控制器到底是怎么去计算我们呢?下面再以水位控制来理解下 pid 你控制的含义,这是一个呢水龙头,我们呢水龙头往下流,水人呢是来控制一个目标水位,比方这个目标水位呢,十一米的深度,那么十 水位呢,他由于在使用的时候呢,不一定什么时候是多高,那么我如何控制他呢?就是经过啊,水龙头拧紧或者是放开 他的开度大小来控制水流的大小。那用这边这个图呢表示就是说我目标水位,比方说总是设定为是一米高,那么实际水位呢,有的时候假如我的水龙头拧大的话,进水多的话,他可能超过一一点一米,有的时候呢用户用的多, 那么呢我这个水就降下来了,不到了一米,比方说九十厘米,这时候呢,我们就需要这个人控制这个水零头开关大小,就叫做 pid 控制,不考虑到积分和微分的话,那首先比方说我定义的是一米, 现在目前呢是五十厘米,那么这个偏差就是五十厘米,我如果用比例的话,这两个都为零的话,也可以调节啊,如果比例大的话,比方说比例等于九十,就等于我拧开这个水龙头的速度要快一些啊,他迅速的水龙头 就拧开以后,大量的水线以后,就达到了我这个实际水位控制的目的。目标水位是一米,但由于我拧的过大啊,他发现超了 啊,他的比例放的过大,超了以后呢,会超过去很多,比方说一米一,一米二,那么对于水啊,这个工艺我们无所谓,就让他这样行了,这时候我可以用比例,但有的生产的工艺呢,比方说这不是一个控制水的问题了啊,他有严格 要求,要求控制那个 pid 曲线呢,必须啊,不能超调啊,甚至反应速度还要求快,那么这个算法就要更复杂了,我们就引入速率微分啊,再引入积分,然后呢,最后再决定这个水龙头开路什么时候大,什么时候小, 就是这个含义。由于 pid 控制啊,它属于一种典型的闭环自动控制技术,它都是基于一种反馈的概念,你减少不确定性。那么反馈的理论呢,要素包括三个部分,测量,就是我们用的传感器来测量, 如果你控制的是水位的话,我们就用液位传感器,如果你控制的是管道内的液体流量的话,那么就要用流量传感器,比如说涡轮传感器啊,电磁流量机 等等。当然也可以用调节阀来控制管道的开度大小,也可以在实际工程中啊,应用最广泛的调节呢,就是我们说的比例积分微分, pid 控制, 那么目前的工业自动化的水平呢,已经成为各行各业现代化水平的一个重要标志。同时呢,控制理论的发展也经历了古典控制理论,现在控制理论和智能控制理论三个阶段。 智能控制典型就是我们现在说的模糊全自动控制, 这个模糊呢,实际上他是背后一套完整的算法,一套编程的,比方说全自动洗衣机啊,他的自动控制部分呢,可分为开缓控制和闭环控制。 一个控制系统呢,应该包含什么呢?控制器,传感器,变速器,执行机构等等。我们还要知道这个 pit 啊,它可以实现的控制有很多,比方说有速度控制,现在很多自动驾驶或者小车控制方面 都会引用 pid 控制。现场的压力 pid 控制啊,有些化工生产的一些压力罐,他会有严格的要求温度的 pid 控制,流量,液位等等。能实现 pid 控制器呢,有可变成空气 plc, 另外呢,还有计算机上位机的 pc 段。再一个呢,就是现在呃大量使用的直接是成品的叫 pid 控制器,或者是呢叫做智能 能控制器, pid 调解器等等啊,那么我们下面来看一个视频,了解一下什么是 pid 控制器,他如何工作的。

p i d 专题一 p i d 控制算法在我们的日常生活中随处可见, 小到我们温室大棚里的温度控制、二氧化碳浓度控制,大到工厂生产车间机械臂的运动控制、航天领域火箭的发射垂直姿态控制都运用到了 pid 控制算法。首先屁指的是比例控制环节,而是积分控制环节。地势微分控制环节、 公式位控制量 ut 等于 p 参数乘以误差加上来参数乘以误差的累加和加上 d 参数乘以近两次误差之差。 p 环节可以加快控制响应速度,快速达到稳定状态,但会存在稳态误差。 加入 i 环节可以消除稳态误差,加入低环节可以减小系统的超调量,减少系统震荡,提高系统稳定性。 可用以下三幅图表现三个环节的作用。下期视频我们将利用简单的电压控制历程,展示 pid 控制算法的实际应用方法。给颗小爱心就是给作者最大的支持。

大家好,那么从上一集我们知道了呢,用开关量来控制一个物理量来达到模拟值呢,会造成这一物理量的大幅震荡,于是呢,就有了 pid 算法, pid 的投入使物流量平稳稳定的维持在某一只,因此呢,我们已经得到了 pid 的计算公式。先来慢慢看上面的四指,我们会发现其中有一个 k p 就是比例系数,在括号外面我们把它撑进去, 比例 p, 积分 i 啊,微分 d 呢,就是我们要找到的参数,如果调节周期是定的,那么上方的比例 p, 积分 i 和微分 d 呢,就是定值。接着我们要做的事情呢,就是将这三 猜数呢找出来。如果你学过高等数学,且上课没有睡觉,就很容易知道,微积分是一种数学思想,无限细分就是微分,那无限求和呢,就是积分,无限呢,就是积极限的意思。 一切的思想是微积分的基础,它是一种运动的思想来开代问题。那么积分下上于后面这个四字呢,就是求时间零到时间 t, 偏差曲线 et 与 x 周围起来的面积的代数和。 那么啊,微方向后面这个四字呢,就是求偏差曲线 et 的斜率。那么结合上面呢,我们可以得到下面这个公式,输出呢,就等于 p 乘以偏差,那加上呢爱乘以灭, 再加上呢 d 乘以斜率。由此呢,我们可以发现,比例相是纠正偏差的阻力越远离,那么偏差的绝对值就越大。快速把偏差纠正回来,代表着现在 积分下呢,和以往的状态有关。面积的绝对值越大呢,他的绝对值就越大,他的作用呢,就是消除累计偏差,代表着过去,那么微分下呢,跟斜率有关,比较难以解释。 总的来说呢,他的作用就是阻止系统快速变化及稳定系统作用,因此微分呢,可以增加系统的稳定性,因为到达目标之后离开会受到阻碍,能代表将来有预见性。 因为实际应用中呢,我们用到的都是李彩的数据,因此对 pid 进行编程之前呢,我们先得把模拟公式呢转换成李彩公式, 那么其实就是把积分求面积和微分求协律的方法呢,转换成理想的求面积和协律的方法。转换后的公式如下, 转换后呢,我们发现我们需要调整定的三个参数变为不上,多了个调节周期 t, 因此呢,需要注意的是,必须是 t 为定值,或者说变化小到可以忽略,这样呢, pid 才是固定的常数,才可能调节,所以我们经常把 pid 的快放在中,待程序中使用,确保 他的周期稳定。关于 pid 呢,我们就讲到这里。关于他的编程呢,我们就不做过多的讲解,因为只要你理解了他的这些基本原理,对于他的编程呢,就只剩下向导的生存或者指令的拖转。 但是有一点,我们在做手自动切坏时,一定要做好,无扰切坏,记得关注了再走哦!

我们看一下这个 p, i, d 这个算法, u, t 等于 k, p 乘以这个异体加上一除以 t i 啊, 然后萨姆零去于这个 t, 这是个极限, e, t 乘以 d t 这一部分是它这个积分,然后 t, d 是吧? d, t 除以这个 d, t 啊,第一,第一 t 除以这个 d, t 是它的导函数, 那我们主要是调整这个 k, p 这个值。我们这 p, a, d 或者如果在 p, l, c 内部中,我们主要调整这个比例系数,积分时间和微分时间分别对应 k, p 对应比例系数, t, a 对应,是吧?积分时间, t, d 对应微分时间。 我们看一下 p, l, c 的控制框图,通过外部来采集这个采集量,采集量进入到 p, l, c, 因为一般的位 式控制和这个单纯的比例控制会造成这个控制,会造成稳态误差,无法达到真正的这个稳定状态。所以我们要使用 p, a, d 三种算法对它进行一个正定运算,运算之后输出这个 m, p 的值,这个比例值, 这个游戏值到达这个 da, 是吧?这是模拟量的输出啊,输出的执行器倒下不到执行器这里这个就是 ps 的一个简单的一个控制过程。

大家好,欢迎来到这期精彩的电机 p i d 控制视频,在这个视频中,我们将详细讲解两种用于直流电机的位置闭环控制算法,即位置是 p i d 和增量式 p i d。 我们将深入剖析这两种算法的原理,编写相关代码,进行深度的代码解析, 让你更好的理解和掌握这两种算法的应用及优缺点。首先我们介绍一下 pidb 环系统必要的设备,一台直流电机,一块电机驱动板, 一个旋转编码器用于测量电机位置,一个微控制器用于运行 p i d 算法以及一个尚未机软件用于显示电机位置和控制参数。现在让我们开始探讨位置是 p i d 算法。位置是 p i d 算法的核心思想是将系统的偏差及期望位置和实际位置之差经过一个 pid 控制器得到一个控制输出,然后将这个输出作用于被控对象。具体来说,位置是 pid 算法包括三个部分,比例环节,积分环节和微分环节。 比例环节用于放大系统偏差,积分环节用于消除竞差,而微分环节用于预测系统的趋势。通过调整 pid 控制器的参数,我们可以优化系统的性能。以下是在 stm 三二单片机上运行的 c 语言脚本 用于实现。位置是 pid 算法代码主要包含模块,有位置是 pid 结构体位置是 pid 初始化函数,位置是 pid 更新函数。 stm 三二硬件初始化。初始化位置是 p i d。 在主循环中包括也可以放在滴答定时器或基础定时器的中断回调函数中获取期望位置和测量位置函数,使用位置是 p i d 更新输出函数, 根据输出控制电机。接下来我们讨论增量式 pid 算法。与位置是 pid 算法不同,增量是 pid 算法的核心思想是将系统偏差的增量及当前偏差与上亿时刻偏差之差经过一个 pid 控制器,得到一个控制输出的增量, 然后将这个增量累加到之前的控制输出上。由于增量是 p i d 算法,只关注偏差的变化,而不关注偏差的绝对值,因此它具有更 强的稳定性和鲁邦性。以下是在 stm 三二单片机上运行的 c 语言脚本,用于实现增量式 pid 算法。代码主要包含模块有增量式 pid 结构体、增量式 pid 初始化函数、增量式 pid 更新函数、 stm 三二硬件初始化。初始化增量是 pid 在主循环中包括也可以放在滴答定时器或基本定时器的中段回调函数中。获取期望位置和测量位置函数,使用增量是 pid 更新输出函数。 根据输出控制电机。请注意,再将这个脚本应用到具体的项目上时,你需要根据实际情况编写 get set point, get measured value 和 control motor 这三个函数。 同时,由于不同型号的 stm 三二单片机的库函数和计算器定义可能略有差异,请根据实际情况调整代码中的相关内容。位置是 pid 算法具有较快的响应速度,但容易产生超调现象。 而增量是 pid 算法具有较好的稳定性,但响应速度较慢。通过调整两种算法的参数, 我们可以在一定程度上平衡这两种性能。最后我们讨论一下这两种算法的应用场景, 由于位置是 p i d 算法,具有较快的响应速度,因此它适用于对速度和精度要求较高的场景,如机器人、无人机等。而增量式 p i d 算法则适用于对稳定性和鲁帮性要求较高的场景, 如温度控制、压力控制等。本期视频向大家详细解析了两种用于直流无刷电机的位置闭环控制算法,位置是 pid 和增量是 pid。 希望通过这个视频,你能更好的理解和掌握这两种算法的原理和应用, 为你今后的学习和工作打下坚实基础。记得一键三连呦!谢谢大家的关注,我们下期再见!

三十万人看过的平衡小车代码是怎么写的呢?今天我来解读一下。想让小车达到折叠的效果,首先我们要驱动电机和技术,外设是他们正常得电,然后再考虑控制算法的事情。如果使用成品控制底板的话,不需要考虑 p c b 设计和电源系统, 那么基础外设主要就是 mpo 六零五零、陀螺仪和编码电机。对于编码电机,我们把它看成两个外设,编码器和直流调速电机。对于编码器就是通过配置定时器为输入补货模式,在一个周期内看看补货了多少个时钟周期来获取当前电机转速。对于直流调速电机,我们利用 pwm 通过给定不同的 p w m 占空比来调速的。对于 m p u 六零五零,我们可以不用了解太多,网上相关的历程也很多,在精度不作要求的情况下,我们可以使用历程原码,像正点原子和野火的原码, 我们只需要了解它是一个挂载在 iphone c 总线上的传感器,可以通过 sdk 获取当前的角度、角、速度和加速度信息。我们将它驱动之后,通过外部中断连接 mpo 六零五零的 dmp 中断引脚,每次中断读取一次数据,并传入 pid 计算公式,获得一个 pwm 波值, 将该值加载到电机上就完成了。驱动 pid 公式是一个比较头疼的事情, pid 增量公式打在屏幕上,其中 uk 是控制输出, ek 是误差信号, kpkikd 是比例积分微分的增益。 这个公式用 c 语言可以表达为以下形式。对于平衡车,我们设计三个环节,直立环节、速度环节、转向环节,分别使用 pd pip 控制就可以实现平衡车的平衡 移动和转向。代码编写完成之后,调仓结束之后就可以完成直立了,你学会了吗?

大家好,我是来自西门子数字化工业集团技术支持中心的陈杰文,今天咱们一起来学习西门子 plc 高级编程的第二章 实际应用中算法的综合使用。对于该章节 pid 算法回路部分学员需要达成的学习目标是了解 pid 基本环节以及附加环节的算法,可以根据算法编程实现相关的功能,并组合成使用的 pid 功能块。 在此基础上,还需要了解 p i d。 的一些扩展算法及其应用,以便更灵活高效的实现 p i d 调节。 好,那接下来咱们就开始进入第四个小节, p i d 回路算法功能的描述与数学表示。 本小节的内容包括 pid 控制流程及算法,积分算法、微分算法、滤波算法、此区控制、积分抗饱和输出限制以及勿扰切换。 我们知道 p i d 算法的基本流程是这样的,首先是设定值,减去反馈值得到的偏差,分别进行比例 积分微分处理,然后再把处理的结果进行混合处理,一般是比例参数乘以括弧偏差加上偏差 一分值,再加上平常微分值括谱。最后的输出值就是 pid 控制量。但是我们在实际英语中,为了更好的控制输出值,通常还需要加入一些附加环节, 例如来自被控对象的反馈值有时候会受到干扰而产生波动,这就需要增加一个滤波算法。 另外,控制达到平衡时,即反馈值等于设定值时,由于干扰,设定值与反馈值之间的偏差可能会在零左右反复波动,从而导致输出值不停变化, 从而加速设备的磨损,所以需要设置一个死去算法,使得在设定值的范围内,无论偏 差之如何波动,都不再进行 pid 调节。积分算法需要添加抗饱和处理积分,抗饱和的原理及算法我们后面会详细的讲到。 另外, plc 的模拟量输出一般都会有输出范围,比如四到二十毫安、零到十伏等,被控设备的输入信号也有一个范围要求, 所以还需要对 pid 输出值做限制图。由于这些算法都是相对独立的,所以可以把整个 pid 算法划分为若干计算单元,如积分单元、 微分单元、滤波单元等。编程时可以把每个计算单元做成独立的 f、 b 块, p、 i、 d 算法通过调用这些 f、 b 块来实现。 这样做的好处是如果需要某种单一的功能,比如说积分,就可以直接使用这些一块,而不需要再重新做。前面我们讲了 pit 控制包含比例 p、 积分 i、 v 分 d 三个环节, 那么是否这三个环节在 pid 控制中都需要呢?一般来讲,比例环节是必不可少的,那么积分环节是否必要呢?我们来看一下下面两种控制场合。 首先是流量控制,通过流量的设定值与反馈值的偏差控制调节阀的开度。 另一个是位置控制,通过位置的设定值与位置的反馈值的偏差 调节电机的速度。那么对于流量控制,如果只存在比例控制,我们可以想设想一下, 设定值与反馈值之间的偏差必须大于零,调节阀才能有开动。如果设定值和流量的反馈值相等,那么这俩一相减就等于零。如果只存在比例环节,那么阀开度也 这样,就决定了,如果只存在比例控制,实际流量永远也到不了设定流量,否则阀开度变为零,实际流量也会变为零,所以必须加入积分环节。 那么对于右边这个位置控制,我们可以设想,就算是实际位置等于了设定 位置,导致输出速度为零,那么也不影响当前的实际位置。再进一步我们可以看出,对于流量控制阀门的开度与实际的流量类似,是一个比例的关系。但是对于位置控制, 速度与实际位置存在一个积分的关系,即位置是速度的积分。到这里其实就很明显了,如果被控对象自带积分特性,控制回路可以不需要积分算法。 对于积分算法,如图所示,横坐标是时间轴,纵坐标是设定值与反馈值的偏差。曲线显示了偏差随时间的变化。求偏差,对时间的积分其实就是求曲线与时间轴为 的面积。我们来说一说求解积分的两种简单算法。其一是矩形法,即把曲线所围成的面积划分成若干微小的矩形,那么这个矩形的长就是偏差值,矩形的宽是 pid 的扫描周期, 也就是 tn 减去 tn 点一句型的面积就是偏差值乘以扫描周期,然后把所有的句型面积加起来,就是积分的结果。 其二就是梯形法,梯形法比矩形法要精确一些,梯形法就是把整个的面积划分为若干梯形,即采集 pit 扫描周期的两个边时刻的偏差值 作为梯形的上笔及下笔,扫描周期作为梯形的高,然后使用梯形公式计算梯形面积,也就是上笔加下笔乘以高除以二,然后再把所有的积分面积加起来,就得到积分值。 梯形法显然比矩形法精度更高,本立所采用的就是梯形法。说完了积分算法,我们再来说说微分算法的一。 微分算法可以将偏差的变化率引入系统,提前预判系统的变化,加快系统的响应。微分算法实现起来也比较简单,只需要求出曲线在某一时刻的斜率就可以了,即使用 tn 时刻, 偏差值减去 tn 减一十克的偏差值,然后再除以骗例。扫描周期。如果系统存在微分算法,反馈值的任何微小波动都会对系统造成很大的影响,所以必须添加绿波算法。 本滤中所使用的是一阶低通滤波,可以去掉信号中的高频干扰,滤波效果可以使用平滑时间进行调节, 平滑时间越大,滤波效果越好。但是平滑时间不能无限增大,平滑时间的增大会延缓数据的变化,造成系统响应滞后。如果平滑时间设置与扫描周期一致,就没有滤波效果。我们从这个 公式可以看到,如果平滑时间与扫描周期一致,这俩一除就相当于等于一, 那么这个公式相当于 y n 减一,加上括弧, x n 减去 y n 减一,那么这个 y n 减一就可以抵消,那么就是 y n 等于 x n 啊。也就是说,如果平滑时间等于三秒周期, x n 就等于 y n, 就说明没有平滑效果。前面提到了此区控制啊,比如一个流量调节系统, 调节阀已经到位,但是由于传感器及管道内流量不是很稳定,导致流量的实际值围绕流量的设定值上下波动,从而导致调节阀不停的工作, 从而加速设备的磨损。所以要设置一个此区算法,使得在设定的范围内,无论偏差值如何波动都不进行 pid 调节。 那么接下来呢,我们就说一说死区控制。最简单的死区控制就是设定一个边界,如果输的数据位于边界之内,就等于零,输入是 x 输出之外啊,如果在边界之内, x 在这个范围之内,那么输出外都等于零, 在边界外,那么就是 x 等于 y, 在边界 y, x 等于 y, 那么这种方法呢?最简单,但是这种方法呢,存在着一个问题,不知道大家看出来没有,其实这个问题就是说这种做法会导致数据在边界进行跳, 那么如果系统存在微分环节,这种做法是不可取的,那么该如何处理呢? 我们可以为输出数据增加一个偏移量,而避免边界的数据跳跳变,如 输出值正区间减去边界的绝对值,在输出的负区间加上边界的绝对值,这样处理以后就消除了边界上的两个跳变。建议大家在 pid 调节中使用这种积分控制的算法,以消除跳变。 接下来我们再讲一下积分抗饱和的作用。这里为了便于理解,我们假设一个 pi 控制系统,也就是原始的输出值等于比例参数乘以偏差加上偏差积分值, 并针对四个时刻的采样数据进行数据分析。我们先来看左边不带抗宝盒的数据, 首先看一时刻,偏差值是三十,假设积分值是七十,设置比例参数为一啊,那么这样呢,我们的原始输出值呢,就是三十加七十等于一百, 由于我们设置了输出限制,高限为一百,低限为零,那么我们实际输出值也是一百,那么在此时呢,输出的负余量呢是零, 其实呢,在这个时刻呢,这个积分呢,已经达到饱和了,为什么呢?因为我们这个输出值呢,已经到达了高限,那么如果不做积分抗饱和的处理,那么到了时刻二,我们看看会发生什么事情。由于反 窥值的增加啊,那么呢,偏差值呢会变小减为二十,那么偏差的积分值呢,等于当前时刻的偏差,加上上一时刻的偏差的积分值啊,也就是二十加七十等于九十, 那么在此情况下,我们的原始输出值就是二十加九十等于一百一,由于存在了输出限制,那么实际输出值是一百, 积分达到了饱和,输出的富裕量是十,那么我们再来看一下第三时刻,因为我们现在呢, 随着我们的反馈值的增加,我们偏差值呢设定值减,偏差值呢持续减小到了第三十课呢,假设他偏差值变为负十,那么此时的积分值呢,就是负十加九十等于八十,那么 此时的原始输出值是七十,实际输出值是七十。 t 四十克也也一样,此时的偏差值是负三十啊,那么偏差积分值呢是负三十加八十等于五, 那么原始输出值呢是二十实际输出值。那么接下来呢,我们看一下右边带积分,康宝 同样在 t 一时刻,由于偏差值三十,积分值是七十,呃,原始输出值是一百,已经饱和,输出值是饱和,触发抗饱和功能,使得积分不再增加,没有积分了。那么到了 t 二时刻, 我们的偏差值变成了二十,此时偏差积分值依然是七十,原始输出值是九十,输出值是九, 可见这回我们这个输出值降的比左边的要快。同样我们到了 t 三十克,假设偏差值的负十,当然我们这是一个假设,因为存在积分这个抗饱和,我们这个数据呢,可能会降的更快, 但是呢,我们为了对比起见,这里就不做这个细微的调节了。平常值是负十,那么这个积分值呢,就是负十加七十啊,等于六十, 也就说我们这个积分抗饱和是有方向的,往上是不再积分了,但是往下是可以积分的六十,原始输出值是五十,实际输出值是五十,那么到了 t 四时刻呢,变为三十,平常积分呢是三十,原始输出值 零了,数字是等于。通过对比,我们可以很明显的看出积分抗饱和,可以避免不必要的积分计算,加快系统的项。 再来说一下输出限制,比如控制器的输出是零到十伏的信号,对应的 pid 输出值零到百分之百,但是被控对象调节阀输入信号的范围是零到八伏,如果不加处理, 有可能把超过八伏的信号加载到调节阀上,时间长了有可能造成调节阀的损坏,所以需要对 pid 算法的输出不能超过百分之八十的限制,即对应八伏, 这样可以更好的匹配调节法输出限制的算法比较简单,设置如果 x 大于上级 线,那么 y 等于上极限,如果 x 小于下极限,那么 y 等于下极限,否则 y 等于 x, 那么这样的话,我们就把输出的 x 给限制住了。 pid 控制还需要考虑的就是手自动无扰切换的问题,需要分别对自动模式以及手动模式做一些操作。 在 pid 处于自动模式时,需要把 pid 的输出给到手动模式的手动输入,这样在 pid 切换到手动模式时,输出才不会跳遍, 否则的话,手动输入这个值有可能是零,这样的话,我从自动如果切换到手动,那么这个输出可能是零,所以 我需要把在自动状态下的输出给到手动服,这样就不会跳遍了。那么在 pid 处于手动模式时,自动模式其实是还在工作的,只不过还没有给到输出,这时呢,就要保证 根据设定值反馈值计算出来的调节输出与手动的输出值要保持一致。那么如何保证一致呢? 这就需要在程序里做一些附加处理。在手动模式下,设定值反馈值,输出值 可以看作是已知量。另外,我们根据 p i d 公式,偏差等于设定值减反馈值,输出值等于比例参数乘以偏差,加上 偏差及分值偏差,偏差输出是一致的。在这里呢,我们做了一些简化,忽略了 积分及滤波等附加处理,那么根据公式,我们就可以推导出偏差积分值等于输出值除以比例参数减偏差, 然后把计算出的积分值直接设定到积分算法中,这样就可以保证调节的输出值与手动输出值一致。 以上就是本节课程的内容,咱们再来回顾一下。这一节我们学习了 pid 基本算法与扩展算法等功能描述与数学表示,包括积分算法、微分算法、滤波算法、此区控制 积分抗饱和输出限制手自动无脑切换的。感谢大家的学习和抽看,下一节我们还会继续学习 pid 回路算法国图软件程序编写的相关知识,请您持续关注,再见!