原创 软件编程之复杂算法和基础技术之我见

2013-11-4 16:07 2021 26 36 分类: 消费电子

        前两天网友超发的一个国外工程师怎么精准控制飞机模型而引发的一次讨论,其实对于这个话题,就现在还只是学习了几个月程序,只做过一个测温仪校准测试项目的我来说,还谈不上有很深刻、很直观的体会,只能就我做项目的过程中所感觉到的一点隐隐约约的印象来浅显的谈谈。


       因为之前我一直做的是硬件,所以养成了一就是一,二就是二,什么东西都要明明白白的思维方式,这个刚开始阻碍了软件的进度,特别是当做到用PID算法去控制温度的时候,这个过程很曲折。在刚开始做PID控制的时候,凤舞天用很简单的常识跟我解释过PID算法,tomsu也很细心的跟我分析了整个温度控制的流程和算法理论,但是我感觉还是不踏实,感觉完全懂了,但又不是很透彻,这种感觉让我很难受。后来我又在网上找了很多关于PID算法的文章和例程去看,可是越看越是迷糊,因为那些理论差不多都是基于理论的算法,在看的时候感觉明白了,可实际上根本不知道怎么着手去做,这个让我既郁闷,也着急。因为这个问题,项目就卡在这里不能继续进行,而且必须要搞明白了,才能过这个难点,整个项目也只有过了这个难题,才能继续往下做,所以,到最后我选择放弃去看那些高深的算法理论和算法例程(虽然凤舞天一开始也提醒过我不要过多的看那些理论,可是不看这些理论,总是感觉站在门外了解不到精髓,只有走进去再走出来才能够真正的了解),就是按照常识的理解,从基础的常识理论去控制。


       就是:P是控制I算法介入的门限,在这之前全速加热,如果当前温度大于目标温度,就减;当前温度小于目标温度就加;在门限以内,比如说当前温度与目标温度相差100度时,就开始降低速度或者提高速度,这个就是I算法;再当温度非常接近目标温度时,比如说在2、3度左右变化了,就控制加速度的变化。结果能够控制了,而且也能够达到预期效果。


       后来公司另外一同事要做高频机加热控制程序,在做到PID算法这一难点的时候,也是因为看了过多的理论和过多的算法例程,最后被套进去了,根本就跳不出来,就是满脑子的算法、控制,可是她不管怎么用理论的算法去控制,就达不到想要的效果,最后没办法她只能从东莞调试的工厂回来。在她回来后,我跟她讨论算法问题,她一开口都是那些理论,可实际上她对那些理论又都似懂非懂,完全把握不了,后来我按照我的经验,花了两天时间让她放弃之前的PID理论算法思维,用我理解的方式去控制。最后又花了一天的时间去调试,也能达到预期的效果(要知道,光这个PID,她用她理解的标准PID算法程序调了两个多星期)。


       当然,从这两个例子并不是说用复杂的算法不对,当一个产品要实现一个复杂的功能的时候肯定会需要用到复杂的算法。可是我们还必须明白一点,不管多复杂的算法都必须是基于浑厚的基础理论之上的。当基础理论都还谈不上积累的情况下去追求高深的、复杂的算法,简直是自找死路。


      所以,我想在工业控制方面大部分功能需求还是比较简单的,而对于简单的需求,有基础的理论和技术再加上常识就够了。 
 

文章评论10条评论)

登录后参与讨论

用户1584489 2013-11-18 17:43

呵呵,我的数学还好吧

用户1406868 2013-11-17 15:38

楼主显然对代码比数学强

用户1584489 2013-11-7 21:24

具体问题具体分析

用户1584489 2013-11-7 21:22

现在初学也只能从简单的控制入手,谢谢您提的建议,会继续学习的

用户1584489 2013-11-7 21:19

同志,呵呵

用户1584489 2013-11-7 21:18

呵呵,但是又不能说那些理论没有用,只能说太把理论高深化了,反而不利于学习

用户1677338 2013-11-5 13:11

首先,PID理论并不复杂,理论也是正确的;但是任何理论都是在一定条件下才成立的,如果条件不成立,应用此理论得到的结果就不可能正确。送大家一句话:科学理论能告诉你是,理论上不可能的东西一定做不到;但理论上可能的东西不一定能做到。因为如果做的方法不对,也是做不成的。因此,真正地理解理论,不光是理解理论所说的内容,还需要理解其前提条件。 其次,在实际应用中,需要明白系统的特性。这些特性决定了(在此PID应用中)正确系数的范围,才能得到希望的结果。真正地理解了理论,理论会给你正确的指导方向;加上对系统对象的理解,才可能对参数和系统作正确的调整,从而得到希望的结果。

用户1039176 2013-11-5 09:58

博主的PID有些古怪哦。其实PID一点也不复杂,同时也是控制的基础之一。PID是基于误差的,P是按照比例来调整输出,比如少了10%,输出就增加10%(通过你的P系数);I最大的作用是保证系统最终无误差;D是在变化初期起到加速跟踪作用,温度调节器中应用的还是比较好的。您的输出是开关式的? 如果只是想控制温度,简单的控制知识确实够了。但如果是设计稍为复杂的控制系统,比如控制工件随着高频加热运动,深入学习还是需要的。关键是要找对参考书,现在太多的书籍把问题整的比实际还复杂。控制系统看看钱老的书吧

用户3809340 2013-11-5 09:16

真实遗憾啊,这么多智力最强的科学家做出的理论,本来也是来源于某些具体工程问题的实践的,做好了理论就是让它能够方便地回到实践去的、指导工程实践的、方便工程师的,但是如今的局面是带来了工程师们的两难:自己也去彻底搞懂算法的原理,几乎不可能,费了大劲,无功而返;完全不懂原理只看执行代码,又只能应对完全相同的外界情况、稍微变化就无力自己修改,因此心里没底!怎么办?

 

还是有办法的,或者说循序渐进的学习“进路”要自己摸索,而确实存在很多前人的经验可以借鉴。包括LZ已经说到的先定性(温度大了就减),在定性的框架内再定量(减多少、减速多少、减的路径线性还是怎样)的思路,比较容易达到一些令人愉快的“直觉”:那样你的直觉指导你的操作、你的操作与它产生的信号或数据就直接联系起来了。经常说做事要做有兴趣的事,但是工程师的兴趣是从哪里来呢、甚至说怎样保持长久呢?就是自己思维方式的科学巧妙带来的。因为外界世界对所有人是相同的,而里面的美妙和自己创造改变带来的奇妙,只有靠自己。努力吧。。。

 

以上不包括那些极少数的少年发烧友出身的工程师,他们的原始智力发育就和分析外界物理世界、以及一些工程操作直接联系起来了,不需要这样经历这样痛苦的过程。他们如果成长在中国,就必须是有2个脑袋,一个用来应对所有的应试给家长看和立命于这个社会,另一个做真正大脑该做的事情。。。

用户1702504 2013-11-5 08:17

最近用了这个算法,也是这么理解的!
相关推荐阅读
用户1584489 2014-08-27 20:37
凤舞天讲msOS的OS
我们先讲OS部分,大家知道,系统启动之后,是从复位开始的 那么复位对应的栈,就是MSP栈 Cortex系列,存在两个栈 MSP和PSP 之所以分为两个栈,是为了给OS用的 注意,是专门...
用户1584489 2014-06-10 12:04
国产嵌入式微系统msOS成型记之一:何为嵌入式微系统
嵌入式微系统,顾名思义就是嵌入式微型操作系统,然而操作系统一词在嵌入式行业里往往专指uC/OS之类的带任务切换的系统,所以为了有别于这个专用名词,往往用开发平台一词来代替,所以嵌入式...
用户1584489 2014-04-10 10:53
嵌入式微平台(msOS)
          ...
用户1584489 2014-04-10 10:01
嵌入式微平台(msOS)简介
嵌入式微系统(msOS)是深圳市雨滴科技有限公司的王绍伟先生(网名:凤舞天)在2013年基于早期开发的“实用单片机系统,标识MS”,经过多年的MTK手机开发经验,结合自己具体的项目应用而升级推出的...
用户1584489 2014-04-10 09:43
评论:@雨滴-凤舞天 博客中提到的“阴阳五行”
老大的文章及其有道理,转一个...
用户1584489 2014-03-10 10:10
关于msPLC/msOS相关资料下载
 随着msOS的不断完善,源代码、相关文档和视频的完成,只是把资料放在群共享不能方便更多的人下载学习,所以现在把相关资料都放在了网盘里面,有需要的可以进到网盘下载。 360云盘:http://...
我要评论
10
26
关闭 站长推荐上一条 /2 下一条