搜索
bottom↓
回复: 27

请教关于工业RS485通讯的协议问题

[复制链接]

出0入0汤圆

发表于 2017-5-26 10:21:18 | 显示全部楼层 |阅读模式
现在使用RS485进行设备数据的透传,我使用的是RS485+STM32F103和电脑的进行数据传输 ,  STM32 接收发送都采用的是DMA的传输方式,现在正常的时候通讯很正常,但是会出现偶尔的异常情况,现在遇到的问题的是,有小半帧的数据没收到阻塞在电脑的串口硬件buffer里面了,等我发回数据错误要求从发的时候,和前面的数据一起出来了。造成了数据的混乱,大家在做这个东西的时候是怎么处理的。

出0入0汤圆

发表于 2017-5-26 10:32:35 | 显示全部楼层
参考modbus,应该符合你

出0入0汤圆

 楼主| 发表于 2017-5-26 10:37:49 | 显示全部楼层
jbpan852 发表于 2017-5-26 10:32
参考modbus,应该符合你

modbus 主机模式 需要付费的   从机是开源的  Freemobus

出0入0汤圆

 楼主| 发表于 2017-5-26 10:38:10 | 显示全部楼层
jbpan852 发表于 2017-5-26 10:32
参考modbus,应该符合你

我主机也要做的        

出0入442汤圆

发表于 2017-5-26 10:52:05 来自手机 | 显示全部楼层
为毛会阻塞?你把这个问题解决了不得了。还有,要加(1)帧同步(2)超时控制(3)帧校验

出0入0汤圆

 楼主| 发表于 2017-5-26 11:55:38 | 显示全部楼层
wye11083 发表于 2017-5-26 10:52
为毛会阻塞?你把这个问题解决了不得了。还有,要加(1)帧同步(2)超时控制(3)帧校验 ...

你说的我都加了 ,但是还是出现硬件的阻塞,这个怎么去同步回来 没想到好办法

出0入0汤圆

发表于 2017-5-26 11:58:02 来自手机 | 显示全部楼层
上位机有个NImodbus 可以做主机 你可以试试

出0入0汤圆

发表于 2017-5-26 12:51:33 | 显示全部楼层
串口就不用DMA了吧。

出0入0汤圆

 楼主| 发表于 2017-5-26 13:16:34 | 显示全部楼层
dcl_yufeimen 发表于 2017-5-26 11:58
上位机有个NImodbus 可以做主机 你可以试试

感谢推荐  我去看看  

出0入0汤圆

 楼主| 发表于 2017-5-26 13:17:33 | 显示全部楼层
TBG3 发表于 2017-5-26 12:51
串口就不用DMA了吧。

DMA 的好处是 系统需要每次都中断去接收一位信号  大数据传输下  最好DMA把

出0入0汤圆

发表于 2017-5-26 13:53:51 | 显示全部楼层
-佛听- 发表于 2017-5-26 13:17
DMA 的好处是 系统需要每次都中断去接收一位信号  大数据传输下  最好DMA把  ...

串口这种速度,能传多大数据?

出0入0汤圆

发表于 2017-5-26 17:34:29 来自手机 | 显示全部楼层
-佛听- 发表于 2017-5-26 10:37
modbus 主机模式 需要付费的   从机是开源的  Freemobus

modbus是有国家标准的,谁叫你非得去用人家的,看完标准撸起袖子敲,就行了,舍不得钱,就要舍得时间。

出0入0汤圆

发表于 2017-5-26 21:47:40 | 显示全部楼层
重庆酱油仔 发表于 2017-5-26 17:34
modbus是有国家标准的,谁叫你非得去用人家的,看完标准撸起袖子敲,就行了,舍不得钱,就要舍得时间。 ...

说得好 “,舍不得钱,就要舍得时间。”

出0入14汤圆

发表于 2017-5-26 23:24:22 | 显示全部楼层
多大的数据量,还得用DMA.....

出0入0汤圆

发表于 2017-5-27 03:01:39 来自手机 | 显示全部楼层
有个libmodbus,跨平台库

出0入0汤圆

 楼主| 发表于 2017-5-27 08:28:21 | 显示全部楼层
重庆酱油仔 发表于 2017-5-26 17:34
modbus是有国家标准的,谁叫你非得去用人家的,看完标准撸起袖子敲,就行了,舍不得钱,就要舍得时间。 ...

我没舍不得时间啊? 我只是 问下大家怎么解决的

出0入0汤圆

 楼主| 发表于 2017-5-27 09:10:18 | 显示全部楼层
donglaile 发表于 2017-5-27 03:01
有个libmodbus,跨平台库

非常感谢!我看了看很好  O(∩_∩)O谢谢

出0入0汤圆

 楼主| 发表于 2017-5-27 09:32:01 | 显示全部楼层
isakura 发表于 2017-5-26 23:24
多大的数据量,还得用DMA.....

为什么纠结这个问题?  有DMA为什么不用接收期间CPU可以做其他事情啊???

出0入0汤圆

发表于 2017-6-15 14:44:46 | 显示全部楼层
楼主 用的是串口多机通信模式?

出0入0汤圆

发表于 2017-6-15 19:04:18 来自手机 | 显示全部楼层
modbus用DMA接收也行呀。要能检测桢间空闲来断桢。空闲后启动DMA接收,超时后结束DMA开始解析。

出0入0汤圆

发表于 2017-6-15 19:50:46 | 显示全部楼层
发生通讯连接故障时,可以和Modbus一样进行通信复位,可能会导致丢帧,但不会出现数据混乱

出0入50汤圆

发表于 2017-6-15 20:54:30 | 显示全部楼层
坛子里就有STM32的主从机MODBUS开源代码,自己搜搜呗,记得是某个评估板的作者发布的。

出0入0汤圆

发表于 2017-6-16 20:11:52 来自手机 | 显示全部楼层
好纠结这么简单的东西,有啥好买的

出0入0汤圆

 楼主| 发表于 2017-6-16 20:47:14 | 显示全部楼层
Ray______ 发表于 2017-6-16 20:11
好纠结这么简单的东西,有啥好买的

越简单的东西要做好也不容易啊

出0入0汤圆

发表于 2017-6-16 23:16:57 | 显示全部楼层
1、异步通信,不管接收方要不要接收,发送方都会把数据发完。(非流控)
2、ModBUS协议,如果简单点,只需要写单个(线圈和或保持寄存器)、读单个(线圈和或保持寄存器)、写多个(线圈和或保持寄存器)、读多个(线圈和或保持寄存器)。
再简单一点,把读/写单个,当成读/写多个的一个特例,就OK了。

出0入0汤圆

发表于 2017-6-20 15:57:57 | 显示全部楼层
不明白的是楼主上面的描述不像是一对多的通信,怎么会出现阻塞呢?

出95入8汤圆

发表于 2017-6-26 13:13:35 来自手机 | 显示全部楼层
就是说pc端   字符间隙 和  帧间隙的设置  问题, 还有 单片机端 协议 解析 的 完备性和稳定性问题咯;设计要好,教科书的例程 基本没用; 好好读profibus规范;至于实现么,几句话就整好可能吗?

出0入0汤圆

发表于 2017-7-12 09:30:57 | 显示全部楼层
STM32的主从机MODBUS开源代码,哪里有?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-18 09:03

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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