waferhit 发表于 2018-6-4 16:08:19

有偿求一款电机调试用上位机软件

最近再做电机控制方面的工作,想将控制的内部状态变量拉出来,在电脑上看看波形(电流,磁通等中间变量),不知道坛里的大侠有没有好用的上位机软件或者其他方法。

如果有成熟的话,可以有偿分享一下!也可以有偿帮忙开发一下!

注:尝试下了一些串口示波器,总是有这样那样的问题(比如支持的波形频率不够等)!

hexenzhou 发表于 2018-6-4 16:34:05

jlink就有这样的功能,不需要上位机了。

codefish 发表于 2018-6-4 16:38:01

写小的上位机调试软件,对我来说很简单。
前不久帮别人写了一个视觉方面的测试软件。

waferhit 发表于 2018-6-4 16:41:07

hexenzhou 发表于 2018-6-4 16:34
jlink就有这样的功能,不需要上位机了。

希望考虑通用性,支持串口最好,否则不支持jlink的单片机还是没法用的!

feigoo 发表于 2018-6-4 16:44:22

下载一个LABVIEW NXG, 花上一两小时就能写一个。

icexiong 发表于 2018-6-4 16:44:30

串口能满足你采样速度的要求吗?

waferhit 发表于 2018-6-4 16:45:12

codefish 发表于 2018-6-4 16:38
写小的上位机调试软件,对我来说很简单。
前不久帮别人写了一个视觉方面的测试软件。



我的软件想法是用串口通信,实时曲线显示的方式。

这里面有个关键的指标就是只要下位单片机数据发送的足够快,上位机能把下位机数据无闪烁,不丢数的全部用曲线显示出来。

不知兄弟用的是什么工具写上位机,我现在懂点C#和VC++, 如果方向同就更好了!

waferhit 发表于 2018-6-4 16:46:58

icexiong 发表于 2018-6-4 16:44
串口能满足你采样速度的要求吗?

串口我也觉得有点勉强,但是又似乎想不到其他通用一点的方法!

icexiong 发表于 2018-6-4 16:54:53

waferhit 发表于 2018-6-4 16:46
串口我也觉得有点勉强,但是又似乎想不到其他通用一点的方法!

串口采集1秒钟也就60次,能满足吗,这个都满足不了的话,那就得换方案了

weichao4808335 发表于 2018-6-4 16:56:45

你想用什么软件?如果vb的话我可以给你提供一个模板 你自己修改

waferhit 发表于 2018-6-4 16:57:55

icexiong 发表于 2018-6-4 16:54
串口采集1秒钟也就60次,能满足吗,这个都满足不了的话,那就得换方案了 ...

我们以基本的电压频率来计算,50Hz意味着20ms一个正弦波,一个正弦波用10个点的话,意味着2ms得发一个点(2字节),如果是4通道,即使没有帧头帧尾,也的250us至少发一个字节吧!

我觉得这应该是一个电机调试软件最基本的性能了!

weichao4808335 发表于 2018-6-4 16:58:01

waferhit 发表于 2018-6-4 16:46
串口我也觉得有点勉强,但是又似乎想不到其他通用一点的方法!

串口有串口的办法,我就是用串口30ms一次数据,可以使用缓冲区多存几组数据,就没有延迟了

icexiong 发表于 2018-6-4 16:58:12

这还是传输数据不多的情况下,如果传输的数据很多,1秒钟采集的次数还会降低

waferhit 发表于 2018-6-4 17:00:08

weichao4808335 发表于 2018-6-4 16:58
串口有串口的办法,我就是用串口30ms一次数据,可以使用缓冲区多存几组数据,就没有延迟了 ...

我也想过缓冲的办法,但是我想瓶颈在串口数据,怎么个缓冲法好?

weichao4808335 发表于 2018-6-4 17:01:38

waferhit 发表于 2018-6-4 17:00
我也想过缓冲的办法,但是我想瓶颈在串口数据,怎么个缓冲法好?

这个就很好操作了,

weichao4808335 发表于 2018-6-4 17:10:37

waferhit 发表于 2018-6-4 17:00
我也想过缓冲的办法,但是我想瓶颈在串口数据,怎么个缓冲法好?

自己不想写的话 用uC/Probe吧 很好用 实时性也高

codefish 发表于 2018-6-4 17:37:34

本帖最后由 codefish 于 2018-6-4 18:09 编辑

waferhit 发表于 2018-6-4 16:45
我的软件想法是用串口通信,实时曲线显示的方式。

这里面有个关键的指标就是只要下位单片机数据发送的足 ...

我一般用C#。
VC++我也会用,但是很少用来写这一类带界面的上位机软件。

串口编程我也经常涉及。你算一下115200的波特率是否满足你的数据传输速率?
电脑端的硬件(现在基本都是usb转串口芯片)和驱动层已有数据缓冲(Buffer),只要通讯波特率大于你的下位机发送数据需求速率,是不会丢数据的。

bailao99 发表于 2018-6-4 18:32:21

不用想啥上位机软件了,这个不仅仅是上位机问题,固件也要支持才行,有那个精力,早把电机控制做好了
之前做到了40KHz的采样率,观察内部变量,可以多个

waferhit 发表于 2018-6-4 19:12:16

bailao99 发表于 2018-6-4 18:32
不用想啥上位机软件了,这个不仅仅是上位机问题,固件也要支持才行,有那个精力,早把电机控制做好了
之前 ...

也不完全是这样吧,有个好调试工具,对理解电机控制内部过程还是很有好处的吧

njhying 发表于 2018-6-4 19:22:41

我喜欢直接外接一个双路DAC,一个做基准,一个用于观察,效果特别好,只是要加个示波器观察。
还可以用RAM大点的单片机,把运行过程中的数据保存到RAM,等采集完了后,通过串口发送到上位机显示,一般专业伺服的虚拟示波器就这样干的。

bailao99 发表于 2018-6-4 19:54:47

本帖最后由 bailao99 于 2018-6-4 19:56 编辑

waferhit 发表于 2018-6-4 19:12
也不完全是这样吧,有个好调试工具,对理解电机控制内部过程还是很有好处的吧 ...

关键是很不好编程,可以计算下:40KHz的PWM载波频率
如果每载波调整一次,那么在25us内要完成控制算法,通讯算法,这样MCU的负载率很高,程序优化也要求很高
另外对上位机的响应速度也要求高,不采用特殊手段,是不可能实现的。
20L提出的DAC方法是TI的标准输出方案,基于多余内存缓存控制变量的可行性更高
因为:只要买个内存大点的同类MCU接口
缓存方式想看哪个变量看哪个变量,是个好办法

编辑原因:TI采用PWM转DAC方式,用外部DAC要求转换速率高

john78 发表于 2018-6-4 20:08:31

本帖最后由 john78 于 2018-6-4 20:10 编辑

我的板上有以太网,上位用VC写的曲线显示。串口太慢,要打包等处理,大麻烦了。

dxgdsx 发表于 2018-6-4 22:03:17

waferhit 发表于 2018-6-4 16:57
我们以基本的电压频率来计算,50Hz意味着20ms一个正弦波,一个正弦波用10个点的话,意味着2ms得发一个点 ...

250us发一个字节??
是250us采样一个数据点吧,按照这种速度,肯定是先将若干个数据点打包成一帧,然后每隔一定时间发到上位机(一般我见过比较多的时间间隔是10ms)。
完全实时显示是不可能的,顶多是无丢包地复现数据。

waferhit 发表于 2018-6-4 22:33:07

dxgdsx 发表于 2018-6-4 22:03
250us发一个字节??
是250us采样一个数据点吧,按照这种速度,肯定是先将若干个数据点打包成一帧,然后 ...

4个ch的话,8个字节,大概2ms可以获得1个点的信息,1个点代表4通道

wind2100 发表于 2018-6-4 22:44:15

你这样 不太现实, 你是打算1MS 输出一个数据呢 还是? 你要调试你的电机,从我调过电机的经验来看,用VC调好算法后,直接放入单片机就行了.VC的好处不用说,无限断点,查看变量.

mtswz.213 发表于 2018-6-4 22:51:33

visualscope,简单好用,你想用虚拟示波器看us级的信号,还是算了吧,用dma或者串口带fifo,还是比较好用的,最快也就是看一个载波里面的数据,波特率够快,还是可以的,我现在用的就是这个,我们公司也有一个比较好用的,不过速度比较慢,而且下位机代码比较复杂

njhying 发表于 2018-6-5 09:16:31

bailao99 发表于 2018-6-4 19:54
关键是很不好编程,可以计算下:40KHz的PWM载波频率
如果每载波调整一次,那么在25us内要完成控制算法, ...

其实要看的关键变量没几个。
最好使用真正的DAC,PWM转的很Low。

lvfv 发表于 2018-6-5 11:08:33

我给你说下我的方法,下位机用921600的波特率,大概70us发送9个字节,我20K的PWM,2个发送一次,在电脑上虚拟示波器可以显示4路的波形,够用了吧?

higeo 发表于 2018-6-7 04:03:39

DAC吧,拉个示波器就行

光明星1号 发表于 2018-6-7 08:21:37

这个上位机并不难,如果是串口通讯更简单,首先你得先把硬件部分的通讯写好,比如是确定好协议,简单点可以套用MODBUS-RTU,上位机做曲线,读取,保存数据(比如EXCEL等)都是小CASE

光明星1号 发表于 2018-6-7 08:23:43

codefish 发表于 2018-6-4 16:38
写小的上位机调试软件,对我来说很简单。
前不久帮别人写了一个视觉方面的测试软件。



请问你视觉的算法用什么?OPENCV还是HALCON?
你这个图是做差异比对吗?

光明星1号 发表于 2018-6-7 08:26:47

waferhit 发表于 2018-6-4 16:45
我的软件想法是用串口通信,实时曲线显示的方式。

这里面有个关键的指标就是只要下位单片机数据发送的足 ...

曲线我做过8ms采集用的是TCPIP,曲线很流畅
当时是和三菱的以太网模块通讯的,上位机还是采用的很老的VB6

光明星1号 发表于 2018-6-7 08:34:57

waferhit 发表于 2018-6-4 16:57
我们以基本的电压频率来计算,50Hz意味着20ms一个正弦波,一个正弦波用10个点的话,意味着2ms得发一个点 ...

测试的时候保存在底层,测试完再把数据抛出来进行分析!
串口肯定不行,波特率115200勉强,但是程序其他处理时间加起来肯定不够
否则你要实时采样肯定只能选用其他通讯了!

太阳花 发表于 2018-6-7 09:14:16

这个串口软件怎么样。https://www.amobbs.com/thread-5685075-1-1.html

codefish 发表于 2018-6-7 10:41:15

光明星1号 发表于 2018-6-7 08:23
请问你视觉的算法用什么?OPENCV还是HALCON?
你这个图是做差异比对吗?

我的上面那个案例,基础算法库是opencv。
是做差异对比。

waferhit 发表于 2018-6-7 12:15:37

太阳花 发表于 2018-6-7 09:14
这个串口软件怎么样。https://www.amobbs.com/thread-5685075-1-1.html

看着还不错,可惜我用的是win7.

习惯用老一点的系统,有些工具开发软件兼容性更好。

lyg407 发表于 2018-6-7 13:41:42








玩过国外的开源电调,写的上位机,效果很好。STM32F405一根USB 直接连接到电脑。

Shampoo 发表于 2018-6-7 15:17:53

lyg407 发表于 2018-6-7 13:41
玩过国外的开源电调,写的上位机,效果很好。STM32F405一根USB 直接连接到电脑。

...

哈哈。。我也在看vesc.
就是mos管太贵了。

20061002838 发表于 2018-6-7 15:28:11

uc/probe不二之选
不需要目标代码,不占用CPU利用率
多种控件,使用灵活

sokou 发表于 2018-6-7 17:37:01

SEGGER的一个软件也可以吧

kevinstar888 发表于 2018-6-7 17:50:02

Shampoo 发表于 2018-6-7 15:17
哈哈。。我也在看vesc.
就是mos管太贵了。

MOS管15元一个,不贵,贵的是采样电阻,一颗30元,这还是几年前的价格

Shampoo 发表于 2018-6-7 21:44:04

kevinstar888 发表于 2018-6-7 17:50
MOS管15元一个,不贵,贵的是采样电阻,一颗30元,这还是几年前的价格

是呀。
采样电阻不能别的替代?

lhj200304 发表于 2018-6-9 17:39:38

带spi借口的DA.做一个小板,把数据转换成电压信号。用示波器看。

lhj200304 发表于 2018-6-9 17:40:18

hexenzhou 发表于 2018-6-4 16:34
jlink就有这样的功能,不需要上位机了。

小功率的电机控制一般都是非隔离的,用jlink比较危险

byrin219 发表于 2018-6-9 17:51:20

JSCope 就可以 只要有SWD或JTAG接口就行

wind2100 发表于 2018-6-10 11:03:37

20061002838 发表于 2018-6-7 15:28
uc/probe不二之选
不需要目标代码,不占用CPU利用率
多种控件,使用灵活

这个软件还行吧就是要对上他们的协议   

20061002838 发表于 2018-6-10 16:21:59

wind2100 发表于 2018-6-10 11:03
这个软件还行吧就是要对上他们的协议

用Jlink的话,不需要关心协议
用其他接口,串口、网口、USB这些会需要移植一些代码用来跑协议

spcm 发表于 2018-6-10 17:03:15

之前画的一个3电平-IGBT的控制板,挂了一个8通道DA在FPGA上专门用来调试看波形。

YFM 发表于 2018-6-10 17:29:06

电机控制板输出spi接orangepi然后python操作spi读数据显示

dukelec 发表于 2018-6-10 19:00:18

本帖最后由 dukelec 于 2018-6-10 19:17 编辑

我之前是随便写一个小 Python 脚本就可以绘制波形,画图调用的是 matplotlib.pyplot, 电机为了抗干扰走的是 RS485 通讯,主动上报 电流环、速度环、位置环 三个环的的 PID 状态数据,DSP 端搞一个大缓存,后台发送数据,遇到装满的时候停止继续装入数据,等发送空了再重新允许装数据(这之间的数据丢掉),这样的好处是可以看到非常细节的连续的一段电流环的数据,如果要看整体连续的话,就设置一下采样点的间隔就好。

电流环频率是 20kHz, 每个点传 4 个 float 变量:pid 目标值、输入值、i term、输出值,同时速度环、位置环也是一样,只是频率低一些,为了波形整体尽量连续,
所以我的 485 速率设置为 10Mbps, 而且传统模式下,等主机来查数据总线利用率很低,所以要主动上报数据,而主动上报数据又会与主机下发的控制命令相互冲突,所以当时的解决方案是使用带仲裁的 CDBUS 协议控制器。

截图找不到了,最近用同样的方法调另一个台灯项目的 PID 参数,这是截图:

20061002838 发表于 2018-6-10 19:40:07

lhj200304 发表于 2018-6-9 17:40
小功率的电机控制一般都是非隔离的,用jlink比较危险

把Jlink隔离就是了,有USB隔离器

dukelec 发表于 2018-6-10 19:46:27

20061002838 发表于 2018-6-10 19:40
把Jlink隔离就是了,有USB隔离器

譬如机械臂的关节,它运动的时候,没办法外接 USB、Jtag, 比较方便的就是利用现有 485 总线传输数据。

20061002838 发表于 2018-6-10 20:12:42

dukelec 发表于 2018-6-10 19:46
譬如机械臂的关节,它运动的时候,没办法外接 USB、Jtag, 比较方便的就是利用现有 485 总线传输数据。 ...

系统级的调试跟芯片级的调试相比,数据量会小上很多,实时性要求也会低一些,因此系统级调试上面不需要通过JTAG这种方式,用系统已有的总线就够了
调试的时候,需要把数据发送到PC,你的485还需要再接一个适配器;调试需要完善的操作界面,这个你无法提供

我说的ucprobe,强调的是调试界面,而不是JTAG这个接口,虽然JTAG最便利
我上面也说了,JTAG不是唯一的接口,如果有必要可以切换到其它任何接口,例如以太网,USB,包括你所推荐的 CDBUS

gongxd 发表于 2018-6-10 23:58:29

看看我签名满足吧

wind2100 发表于 2018-6-11 08:07:51

电机调试的 基础工作 做好了,后面的工作 事半功倍 ,值得研究
页: [1]
查看完整版本: 有偿求一款电机调试用上位机软件