您的位置 » 首页 » 嵌入式工控机 » 上位机跟嵌入式系统有何关系?

上位机跟嵌入式系统有何关系?

发表于4年前 | 作者: blog | 分类: 嵌入式工控机 | 破蛋日:2020年04月07日 |

其实吧,说起来我算个研究生,大多数东西都是自学,没有老师系统地教。就是自己折腾怎么用就ok 最近想做电机PID,然后涉及到参数的整定,其中一个方法是根据响应曲线单片机怎么观测响应曲线呢?自然我就想到了上位机嘛。我是这时候开始思考上位机跟嵌入式系统之间的关系。 然后最近了解了一下别的同学老师的方向,他们好像叫做上位机的为做软件?我理解就是把传感器采集到的信息给弄到电脑里吧。 首先第一个问题…

第一个问题,你的labview写错了,关于那些都可以编写上位机的语言有什么优缺点。

C#是微软开发的语言,编写上位机界面简单方便,语法和C++/C兼容较好,我个人比较经常使用这个语言制作上位机,所以个人安利C#。

C++是一种经典语言,很多知名软件都用它写的,我也承认学好之后也可以做的很厉害,但是它对界面开发并不友好,也并不适合快速开发,对于新手来讲用于学习编程算法和编程思维还可以,并不适合用于上位机开发。(这里不包括QT,QT基于C++语言,如果是使用QT做上位机也是极好的)

labview又叫做虚拟仪器实验室,确实是个良心产品,使用的是可视化编程,控件接线的方式,对于数据处理并不是很友好,而且最大的缺点之一是运行速度慢。所以工程上一般是有想法之后用Labview快速实现,然后可行之后用C#/C++重构。

labview制作的上位机只能在安装有labview环境的电脑上使用,打包的话软件会很大,而C#制作的上位机需要装有境(.NET环境是很多软件所必须的,现在基本上windows电脑都配备了.NET环境,因此做出来的上位机很轻量级),C++只要是windows的电脑就可以跑。

第二个问题,控制算法位于哪里。当然是单片机(也叫下位机)部分了,上位机只是一个用于展示和人用于操作的地方,比如说你用单片机控制电机转速,你想看这个转速有没有跟随给定,怎么看?可以找一个串口波形助手,把单片机上实时获取的转速显示出来,就能清楚的看到所谓的性能指标了,什么超调量啊,调整时间啊,峰值时间啊。再比如,这个参数不够好,想改怎么办,你就可以通过上位机和下位机通信,在电脑上改你的参数然后发送给下位机,下位机应用参数,你接着再看曲线是否达到要求,没有再接着改。这就是一个典型的PID整定过程。说白了,上位机就是一个电脑软件,下位机就是可编程控制器。

第三个问题,你主要是想搞控制理论,搞自适应控制,模糊控制这些东西,该怎么搞。

其实我想说,既然你只是想搞控制理论,干嘛要去搞单片机…….用MATLAB多好,用仿真多好,什么控制算法都能实验,而且方便的看出波形,保存数据,而你要是用单片机,你还得打硬件出来,还的考虑到一系列的硬件bug,以及你无法获取准确的控制对象的数学模型等问题,到头来你只能做的就是看着现象改参数,跟你的高深的控制理论有半毛钱关系。另外,必须明确的是,控制理论研究的多好,从来不在于某一款单片机学的有多深!!做控制的要始终明白,单片机只是应用手段,STM32也好,51单片机也好,DSP也好,单片机型号不计其数,你学深了这一款,难道说换到下一款你就不会控制了?当然不是。编程器只是手段,核心是其中的算法!

最后,上位机和嵌入式系统什么关系。。。。没有半毛钱关系好吧,,。,上位机就是电脑上的小软件,它和下位机(所谓的嵌入式系统)是通过通信联系的,所谓通信当然要提到通信协议了,所谓和电脑通信无非也就是通过串口,蓝牙,wifi等协议了,具体你要用哪种协议去通信,要看你使用的上位机用的什么协议,你单片机当然要对应着用呗,最常用的就是串口,可以重点学习一下。

最后,温馨提示,如果要做二阶倒立摆,要考虑的问题就不仅仅是程序了,还有硬件的问题!比如你的电机用什么型号的才能跟上响应,你的摆臂用多长,检测传感器用什么等等等等,,都是问题。如果要在一年之内从现在的水平到二阶倒立摆,相信还有很长的路要走。

(大二上学期就做过直流电机的PID,什么都不懂,就是搭建电路,编程序,调参数。至少懂了PI调速度,PD调位置。后来就做杆球系统PID,用摄像头捕捉位置,上下位机通讯控制,最后因为硬件做的不好(塑料积木搭的)很难平衡就不了了之了)做什么事,用什么工具。比如你想要测阶跃响应,需要实时测量电机的转速,加速度,位置,测出数据后要作为图形显示,还要提取响应的特征。很显然这个测量与输出驱动电机的信号PC是不行的,这个单片机的看家本领,而你肯定要用C。而数据图表,GUI,数据分析就是PC的强项了,至于你是用LabView还是自己写GUI看你想把时间花在哪里了(自己也做过用Processing做GUI、费时费力一切按照自己的想法来可定制、但是非常耗时间)。PC主要做非核心任务的部分,比如我最近在做SPWM,那么实时输出三相SPWM就是我的核心任务,而上位机可以设计验证算法,尤其是在原型阶段可以快速的进行迭代,单片机写好基础的硬件配置,数据通讯部分写好,其他的算法交给上位机(做GUI还是LabView方便省事儿)。比如我需要分段异步调制,那么我主要做的就是计算比较输出值送给单片机用,这个用Matlab就很方便,我可以直接在上位机端计算一整个周期的重载值发给单片机用,并绘制出输出波形,输出波形的频谱,以及不同调制比下的频谱。再计算和理论的误差,再进一步做个电机模型,Simulink仿真(至于你说的先进控制算法,仿真建立好,Simulink是可以帮你生成C代码的)。你非要用C#、C++等你学到能用猴年马月了,你说我单片机也可以做FFT那就当我没说。

再举个例子,电力电子作业,搜集电力电子器件制造商资料。数据手册网站照着制造商列表爬取,刚开始不会爬虫,用Chrome插件爬,加Excel整理。爬一次一个多小时,内存都不够用了。干了一天终于弄通症结,才得到有用数据,但仍然存在很多问题,太多垃圾数据。到数据提取用Excel,显然又不合适。不得已用Python爬,一天搞定从爬数据到关键数据提取,至此才发现Python以及数据结构的魅力。整到最后觉得大功告成了,随便点了点,才发现人家网站有自带完善的分类检索引擎(具体到电压电流参数和用途),终于崩溃。嵌入式和工控上位机。老老实实的用爬虫提取搜索结果,再作数据统计。(一下午搞定)本来觉得通过这件事学会了爬虫爬取整站数据挺自豪的瞬间跌落谷底,TMD自己就是个蠢货。方法比工具重要啊。

再说单片机学多深,有数电基础,看的懂结构框图,会用DataSheet,对于模块能根据DataSheet规范时序写出自己的库,懂得用示波器、逻辑分析仪调试(这个最重要!)、仿真、再理解裸机单片机的工作时间分配(高级点用实时操作系统FreeRTOS,VxWorks…..)、养成良好的编程习惯(自己的也不怎么地),能写通讯协议、会指针、队列(串口通讯的缓存队列FIFO),能自己造工具(你已经是大神了(相对的))。总之就是学会一些基础、方法,其他的需要了再学就好。没必要什么都学,学习能力和方法最重要。搜集资料能力,阅读能力。

没有最好的工具,只有最合适的工具,最重要的是做事的方法和思路,而不是追求高大上,奇淫巧技。简单有效,解决问题就好。我只要懂得方法和思路,学会选择合适的工具。

最后喷一喷老师都是这个不会那个不会,真的不需要他们什么都会,但是有些老师真的就是什么都不懂,理论没法指导(还满脑的可笑想法)、资源没法提供(就催你给他拿奖),实践基本没有(职称倒挺吓人),讲个基础吧又只会照书念(没有自己的一点东西)(讲课不但不风趣,还自我感觉良好)(你说要你干嘛)。两年实验室比赛经历伤透了心(只怪自己不好、上了个垃圾学校)。感觉一路都在摸索,不断地踩坑(学长们故步自封、人浮于事),胡乱的学了一些东西。

学习能力再强也要有个指路人啊,劝你还是找个大神带带你吧(没大神就别找人了,跟错人还不如不跟),闭门造车效率太低了。

看你上位机的用户是谁,用户是工程师,那么可能就多显示各种参数。用户不懂技术,那就好好封装,弄成傻瓜式操作

以及算法到底是要在上位机跑还是下位机跑,得看具体需求,比如到底是什么算法 下位机能不能跑,上位机主要是用作监控或者控制(比如上位机不运行下位机就不跑),不能一概而论

第一个问题,这三个上位机实现方式里面,labview开发最方便,基本都有现成的模块,本身也是侧重工控应用方面的软件。另外两个也可以开发,但相对来说学习成本更高。

第二个问题,位于上位机还是单片机主要取决于你的响应要求,单片机的计算资源,做简单的pid在上位机问题不大,复杂一些的可能需要用集成dsp核心的arm了,就需要将算法部署在单片机上了。

第三个,没有low的项目,任何一个可以让你提高的项目都值得去认真对待。目前的控制一般分为两个部分,一部分手动一部分自动,自动的部分自然放在单片机上比较好,上位机主要用于状态显示,参数调整,手动控制等。控制理论之类的做过项目以后就会有一定的认识和了解。

上位机一般对应的是单片机或者下位机,也就是主控与被控的关系,嵌入式系统也可以做上位机,只是应用的方式而已。

我反正专门MFC写上位机(C++啦),一方面是我一直在这个坑,不太喜欢突然跳到另个坑(同时又不涨工资)。另一方面C++在实时性要求高的工控软件中有优势。另另一方面(我想去BAT等大公司见见世面,他们要C++可没看到C#啊)……不过,工控领域最好底层用C++而上层用C#比较不错

1、上位机就是电脑PC端的软件,嵌入式你可以理解为就是51或stm32。

2、你不是玩过51吗,那你51怎么烧写程序?用的一般是stc-isp软件吧,stc-isp软件就是上位机啊,上位机怎么和单片机通讯呢,烧写程序不就是通讯了,51也是用到串口通讯。

3、下面你还说到stm32怎么结合labview,stm32烧写程序用的是jlink(不知道可以淘宝搜看看)labview怎么结合jlink做stm32通讯可以研究看看,一般也是串口通讯的原理。

4、问题中你还提的在调电机PID,线位处理器,PID也是能调,但处理运算实在太慢了,PID的调试效果应该不怎能理想,建议用stm32,毕竟32位处理器运算速度快的一逼。二级倒立摆这玩意估计stm32才能玩的动。

先理解一下上位机下位机的概念就可以了。大概就是控制与被控制的关系。或者说控制命令的流动方向。

上位机软件主要是PC端的软件,主要是用来进行计算以及人机交互,下位机(嵌入式系统等)主要是用来实时控制的。两者之前通讯方式蛮多的,比较常见的是串行通讯

上位机跟嵌入式系统有何关系?

文本标签:
本文地址:http://www.huapuxin.cn/blog/13260.html
除非注明,本站所有文章皆为原创,转载请以链接形式标明本文地址

马上分享给你的朋友吧~

评论已关闭!