OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4745|回复: 33

求助可行性

[复制链接]

15

主题

53

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2018-8-16
在线时间
26 小时
发表于 2019-1-11 10:59:07 | 显示全部楼层 |阅读模式
5金钱
我现在是要设计这样一个功能:
1.下位机读取传感器发送的数据
2.将该数据储存,并发送到上位机
3.上位机可以控制下位机
1,2功能是处于循环的

希望实时性要高一些,同时控制命令要随时可以生效
请问一下应该用怎么样的思路呢,需要用到uCOS系统吗


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

12

主题

330

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2294
金钱
2294
注册时间
2016-5-21
在线时间
954 小时
发表于 2019-1-11 12:37:55 | 显示全部楼层
裸机,写个串口通讯就可以实现了
回复

使用道具 举报

15

主题

53

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2018-8-16
在线时间
26 小时
 楼主| 发表于 2019-1-11 12:50:04 | 显示全部楼层
xxssl 发表于 2019-1-11 12:37
裸机,写个串口通讯就可以实现了

如果说追求比较高的实时性呢,就是上下位机之间的通信处理要很快响应
回复

使用道具 举报

12

主题

330

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2294
金钱
2294
注册时间
2016-5-21
在线时间
954 小时
发表于 2019-1-11 12:54:34 | 显示全部楼层
Solace1123 发表于 2019-1-11 12:50
如果说追求比较高的实时性呢,就是上下位机之间的通信处理要很快响应

100ms内响应,再快一点20ms
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2019-1-11 14:04:22 | 显示全部楼层
这只和通信速度挂钩,和操作系统没多大关系
猪猪熊呢?
回复

使用道具 举报

15

主题

53

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2018-8-16
在线时间
26 小时
 楼主| 发表于 2019-1-11 14:06:12 | 显示全部楼层
323232 发表于 2019-1-11 14:04
这只和通信速度挂钩,和操作系统没多大关系

那如果我要处理很多个事情呢,比如说有 控制机械结构的信号,跟另外一个设备的对接通信,跟其他传感器的信号采集。然后这些信号数据都会在上位机反应,处理这么多事情的话,需要上系统吗
回复

使用道具 举报

15

主题

53

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2018-8-16
在线时间
26 小时
 楼主| 发表于 2019-1-11 14:07:31 | 显示全部楼层
323232 发表于 2019-1-11 14:04
这只和通信速度挂钩,和操作系统没多大关系

主要是考虑如果不走系统,通过中断来执行这些操作,会不会实时性变差
回复

使用道具 举报

15

主题

53

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2018-8-16
在线时间
26 小时
 楼主| 发表于 2019-1-11 14:08:56 | 显示全部楼层
323232 发表于 2019-1-11 14:04
这只和通信速度挂钩,和操作系统没多大关系

又需要上位机去给下位机命令
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2019-1-11 14:15:38 | 显示全部楼层
Solace1123 发表于 2019-1-11 14:06
那如果我要处理很多个事情呢,比如说有 控制机械结构的信号,跟另外一个设备的对接通信,跟其他传感器的 ...

上一个保险吧
猪猪熊呢?
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2019-1-11 14:17:03 | 显示全部楼层
Solace1123 发表于 2019-1-11 14:07
主要是考虑如果不走系统,通过中断来执行这些操作,会不会实时性变差

主函数直接循环就行了,比较一下,应该相差不大。安系统试试,不费事的
猪猪熊呢?
回复

使用道具 举报

15

主题

53

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2018-8-16
在线时间
26 小时
 楼主| 发表于 2019-1-11 14:19:25 | 显示全部楼层
323232 发表于 2019-1-11 14:17
主函数直接循环就行了,比较一下,应该相差不大。安系统试试,不费事的

好的,非常谢谢
回复

使用道具 举报

1

主题

882

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3071
金钱
3071
注册时间
2018-2-7
在线时间
285 小时
发表于 2019-1-11 14:49:27 | 显示全部楼层
如果程序流程没处理好,上操作系统实时性也不一定好。
回复

使用道具 举报

8

主题

293

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1001
金钱
1001
注册时间
2018-8-16
在线时间
327 小时
发表于 2019-1-11 15:13:04 | 显示全部楼层
这个最好先着眼于提高上位机与下位机的通讯速度。
我自己写过PC与单片机用wifi通讯的东西,速度肯定满足不了LZ的要求,试试CAN,MODBUS之类的吧。
回复

使用道具 举报

15

主题

53

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2018-8-16
在线时间
26 小时
 楼主| 发表于 2019-1-11 15:17:19 | 显示全部楼层
HXYDJ 发表于 2019-1-11 14:49
如果程序流程没处理好,上操作系统实时性也不一定好。

OK,我会注意的
回复

使用道具 举报

15

主题

53

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2018-8-16
在线时间
26 小时
 楼主| 发表于 2019-1-11 15:17:48 | 显示全部楼层
brucewoo 发表于 2019-1-11 15:13
这个最好先着眼于提高上位机与下位机的通讯速度。
我自己写过PC与单片机用wifi通讯的东西,速度肯定满足不 ...

好的,目前跟上位机的通信就是用485
回复

使用道具 举报

8

主题

293

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1001
金钱
1001
注册时间
2018-8-16
在线时间
327 小时
发表于 2019-1-11 15:23:24 | 显示全部楼层
Solace1123 发表于 2019-1-11 15:17
好的,目前跟上位机的通信就是用485

LZ说要20-100ms内响应的话,估计通讯不是太难,但首先要保证PC端的反应速度,毕竟如果用WINDOWS这样的系统,可能没保证的,其次是单片机收到串口信息后的处理,我觉得在串口中断里处理会比较有保证,再次就是选择通讯的方式,例如232或485这样。
回复

使用道具 举报

4

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
339
金钱
339
注册时间
2017-6-14
在线时间
72 小时
发表于 2019-1-11 15:32:59 | 显示全部楼层
都是中断处理,只要你控制上位机询问时间间隔,裸机妥妥的
回复

使用道具 举报

15

主题

53

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2018-8-16
在线时间
26 小时
 楼主| 发表于 2019-1-11 18:01:28 | 显示全部楼层
brucewoo 发表于 2019-1-11 15:23
LZ说要20-100ms内响应的话,估计通讯不是太难,但首先要保证PC端的反应速度,毕竟如果用WINDOWS这样的系 ...

现在用的PC端是准备走labview,用visa控件做通讯
回复

使用道具 举报

15

主题

53

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2018-8-16
在线时间
26 小时
 楼主| 发表于 2019-1-11 18:02:33 | 显示全部楼层
大道一条 发表于 2019-1-11 15:32
都是中断处理,只要你控制上位机询问时间间隔,裸机妥妥的

询问时间间隔意思是说,读取下位机数据或者发送命令给下位机都是在询问时间里发生么
回复

使用道具 举报

27

主题

195

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
232
金钱
232
注册时间
2016-8-31
在线时间
252 小时
发表于 2019-1-12 13:23:39 | 显示全部楼层
全双工通信,环形缓冲区,数据加时间标记。一个猜想
回复

使用道具 举报

16

主题

204

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1913
金钱
1913
注册时间
2015-7-5
在线时间
486 小时
发表于 2019-1-12 19:49:50 | 显示全部楼层
针对一般的串行数据来说  CPU的运算速度非常快  接收1帧数据的时间 够CPU干很多事情了
回复

使用道具 举报

24

主题

695

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1666
金钱
1666
注册时间
2016-4-29
在线时间
266 小时
发表于 2019-1-13 06:24:28 | 显示全部楼层
完全可以的,处理好程序流程
回复

使用道具 举报

4

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
339
金钱
339
注册时间
2017-6-14
在线时间
72 小时
发表于 2019-1-14 08:43:53 | 显示全部楼层
Solace1123 发表于 2019-1-11 18:02
询问时间间隔意思是说,读取下位机数据或者发送命令给下位机都是在询问时间里发生么

这个不是这样考虑的,接收数据都采用中断的方式,和你主程序没有关系,只要是你上位机发送指令给下位机这个是中断程序在处理,与主程序无关。
主要时间是下位机解析时间,加要返回所有数据需要时间,这个才是你上位机发送的最小时间间隔
回复

使用道具 举报

2

主题

686

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
10925
金钱
10925
注册时间
2014-6-12
在线时间
1042 小时
发表于 2019-1-14 08:57:19 | 显示全部楼层
Solace1123 发表于 2019-1-11 12:50
如果说追求比较高的实时性呢,就是上下位机之间的通信处理要很快响应

要实时性高,应该放弃由上位机实时控制下位机的想法,由单片机一对一实时控制设备,上位机只起巡查,发布非实时控制要求命令。
回复

使用道具 举报

7

主题

199

帖子

0

精华

高级会员

Rank: 4

积分
711
金钱
711
注册时间
2017-5-20
在线时间
96 小时
发表于 2019-1-14 09:27:24 | 显示全部楼层
既然是电脑与单片机通信,大概是串口吧。实时性高,那就按全双工好一些。
全双工,一边是电脑下发命令,一边是单片机读取传感器数据然后上传。两者可以同时进行。
485是半工的,可能没那么好的实时性,除非使用双路串口。
CAN之类还需要贼贵的转接器连接PC呢,而且CAN主要是用于多机通信。
用不用RTOS其实没什么关系,主要看你的整个程序的规模。
20ms响应没什么问题。
回复

使用道具 举报

7

主题

143

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
438
金钱
438
注册时间
2017-8-21
在线时间
76 小时
发表于 2019-1-14 09:27:28 | 显示全部楼层
裸机跑循环检测就行了,没必要上操作系统.....就一个串口通讯....也可能是网络通讯,上系统反而麻烦了些
回复

使用道具 举报

15

主题

53

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2018-8-16
在线时间
26 小时
 楼主| 发表于 2019-3-6 11:26:38 | 显示全部楼层
林光华ing 发表于 2019-1-14 09:27
既然是电脑与单片机通信,大概是串口吧。实时性高,那就按全双工好一些。
全双工,一边是电脑下发命令,一 ...

你好,那请问一下,如果全双工的话,在程序上要怎么编写呢?顺序执行的话,不是同一时间只是发送或者接收么,没有思路,求指点
回复

使用道具 举报

24

主题

695

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1666
金钱
1666
注册时间
2016-4-29
在线时间
266 小时
发表于 2019-3-6 12:47:42 | 显示全部楼层
20ms能干好多事情的,处理好业务逻辑就行了
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2019-3-6 13:30:19 | 显示全部楼层
本帖最后由 edmund1234 于 2019-3-6 13:47 编辑

我只说用不用系统的问题
对于N多个讲求实时性任务的项目,
资深的码农一定会裸着跑。
一般的码农会让你升级CPU跑系统。
如果说是全无经验的码农嘛, 就不评论了

回复

使用道具 举报

7

主题

199

帖子

0

精华

高级会员

Rank: 4

积分
711
金钱
711
注册时间
2017-5-20
在线时间
96 小时
发表于 2019-3-6 13:39:54 | 显示全部楼层
Solace1123 发表于 2019-3-6 11:26
你好,那请问一下,如果全双工的话,在程序上要怎么编写呢?顺序执行的话,不是同一时间只是发送或者接收 ...

单片机外设本身就类似一个自动化工厂,你只管放数据到对应寄存器,单片机外设自己会发送。所以这全双就按照正常做就行。你发送数据,单片机依然可以同时接收,只是你要及时去处理。
或者:中断接收,发送就主动在程序里发送。
或者:采用DMA发送与接收。这些都没有问题。
办法多着。DMA实时性最高吧。20MS不是问题。只有数据量不大。
回复

使用道具 举报

15

主题

53

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2018-8-16
在线时间
26 小时
 楼主| 发表于 2019-3-6 20:48:22 | 显示全部楼层
林光华ing 发表于 2019-3-6 13:39
单片机外设本身就类似一个自动化工厂,你只管放数据到对应寄存器,单片机外设自己会发送。所以这全双就按 ...

就是说全双工的程序跟半双工的其实差不多,只不过全双工方式不需要进行接收或者发送使能,可以直接发送完就接着进行接收处理对吗?
回复

使用道具 举报

15

主题

53

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2018-8-16
在线时间
26 小时
 楼主| 发表于 2019-3-6 20:49:48 | 显示全部楼层
edmund1234 发表于 2019-3-6 13:30
我只说用不用系统的问题
对于N多个讲求实时性任务的项目,
资深的码农一定会裸着跑。

裸跑就主要靠中断来完成一些实时性操作么,我是个菜鸟码农
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2019-3-6 21:03:22 | 显示全部楼层
本帖最后由 edmund1234 于 2019-3-6 21:18 编辑
Solace1123 发表于 2019-3-6 20:49
裸跑就主要靠中断来完成一些实时性操作么,我是个菜鸟码农

除了一楼你所列出的要求, 还有些什么外设? 比如按键,带没带屏?带的话带什么屏?

与PC的通信你打算用什么接口? USART, USB,WiFi,还是网线?

所谓对实时有要求, 有没有明确的指标? 数据的流量是多少(即取样传感器的频率是多少, 传感器的输出数据类型是什么)?
保存数据在哪儿? 内存? 内部Flash? 外部SRAM, EEPRO, 还是SPI-Flash?


回复

使用道具 举报

15

主题

53

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2018-8-16
在线时间
26 小时
 楼主| 发表于 2019-3-6 21:46:48 | 显示全部楼层
edmund1234 发表于 2019-3-6 21:03
除了一楼你所列出的要求, 还有些什么外设? 比如按键,带没带屏?带的话带什么屏?

与PC的通信你打 ...

没有带别的外设,所有的外设都是传感器,PC通信用串口,485/422通信,实时跟数据流量的具体指标都没有,数据是暂时保存在内部FLASH中,然后发送给上位机,同时写入文本,以文本形式保存在SD卡中
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-24 00:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表