您尚未登录。

楼主 # 2024-03-27 17:10:54

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,363
积分: 1323.5

单片机作为Modbus主设备定时发送固定数据,不做设备返回数据判断的话,发送和返回会不会冲突?

单片机裸机编程,作为modbus主设备,每秒发送十多帧固定数据。原设想发送间隔固定几毫秒,不做从设备返回数据的接收判断。
现在想了想,这样的话,发送下一帧数据时,可能正好从设备响应上一帧数据正好也要发送数据,这样就冲突了吧?

离线

#1 2024-03-27 17:29:25

落叶知秋
会员
注册时间: 2024-01-26
已发帖子: 2
积分: 3

Re: 单片机作为Modbus主设备定时发送固定数据,不做设备返回数据判断的话,发送和返回会不会冲突?

是的,会冲突;主设备会收不到从设备的回复

离线

#2 2024-03-27 17:38:24

海石生风
会员
所在地: 深圳
注册时间: 2019-07-02
已发帖子: 650
积分: 783
个人网站

Re: 单片机作为Modbus主设备定时发送固定数据,不做设备返回数据判断的话,发送和返回会不会冲突?

肯定会冲突,modubs没有MAC。可以参考以太网介质访问控制协议CSMA/CD,自己实现一个MAC就可以解决冲突问题了。我以前做电力线载波通信时实现过,不难。口诀如下:

发前先收,空闲发送;边发边收,冲突停止;随机延迟重试。

因为是半双工通信,可以一边发送一边接收,如果接收到的跟发送的不一致就说明总线有冲突,有冲突就随机延时再重试。

在线

楼主 #3 2024-03-28 08:48:56

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,363
积分: 1323.5

Re: 单片机作为Modbus主设备定时发送固定数据,不做设备返回数据判断的话,发送和返回会不会冲突?

@海石生风
用的是rs485,一直是用一个单片机io口管脚控制/rd和de管脚的,没法实现同时发送和接收...

我还是想想办法,发送后就等待串口接收吧,或者等到超时。

离线

#4 2024-03-28 09:39:22

海石生风
会员
所在地: 深圳
注册时间: 2019-07-02
已发帖子: 650
积分: 783
个人网站

Re: 单片机作为Modbus主设备定时发送固定数据,不做设备返回数据判断的话,发送和返回会不会冲突?

Gentlepig 说:

@海石生风
用的是rs485,一直是用一个单片机io口管脚控制/rd和de管脚的,没法实现同时发送和接收...

我还是想想办法,发送后就等待串口接收吧,或者等到超时。

那是不行。我一般只要IO口足够时都会分开控制RD和DE引脚,预留冲突检测的可能性。

在线

#5 2024-03-28 10:19:06

marcus
会员
注册时间: 2021-03-19
已发帖子: 72
积分: 22

Re: 单片机作为Modbus主设备定时发送固定数据,不做设备返回数据判断的话,发送和返回会不会冲突?

既然做主设备那么就不用考虑总线冲突的问题。因为总线数据通讯是由主设备决定的。
不判断从设备回传,那么假设一个回传延时就好了,在这段时间之后再发第二个数据包。

离线

楼主 #6 2024-03-28 11:41:33

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,363
积分: 1323.5

Re: 单片机作为Modbus主设备定时发送固定数据,不做设备返回数据判断的话,发送和返回会不会冲突?

marcus 说:

既然做主设备那么就不用考虑总线冲突的问题。因为总线数据通讯是由主设备决定的。
不判断从设备回传,那么假设一个回传延时就好了,在这段时间之后再发第二个数据包。

主要是这个回传时间不确定,我板子和pc上的ModbusSlave工具通信,通过串口监控软件监控。
发送时间间隔一开始设置10ms,发现有些就返回就没看到。
设置100ms间隔吧,我想每1s秒执行一遍modbus发送,但是有20多帧,100ms间隔就超了。

离线

#7 2024-03-28 20:38:51

吴助建
会员
注册时间: 2021-12-08
已发帖子: 104
积分: 12

Re: 单片机作为Modbus主设备定时发送固定数据,不做设备返回数据判断的话,发送和返回会不会冲突?

Modbus协议, 通信控制是由主控端控制的.
从端只有在收到主控端的通信帧时, 才向主控端发送应答帧, 没收到主控发来的通信帧后, 从端不可以乱发数据.
因为主控端发送的通信帧, 是包含从端 地址的, 地址对不上的从端, 别乱发数据.
从始至终, 从主控端看来, 一个时刻都只与一个从端通信, 所以不存在冲突的问题.
唯一的问题是, 主控端发送完通信帧后, 要等待一定的时间, 等待接收从端发来的数据, 这个时间控制不好,是有可能丢帧的.

离线

#8 2024-03-29 08:47:57

xuqm
会员
注册时间: 2023-10-23
已发帖子: 23
积分: 33

Re: 单片机作为Modbus主设备定时发送固定数据,不做设备返回数据判断的话,发送和返回会不会冲突?

楼主问题是从机回传数据延迟大,加大单节点超时等待时间,整个轮询周期过长?能否加多主机端口,一个端口轮询一部分?

离线

楼主 #9 2024-03-29 09:17:28

Gentlepig
会员
注册时间: 2018-10-24
已发帖子: 1,363
积分: 1323.5

Re: 单片机作为Modbus主设备定时发送固定数据,不做设备返回数据判断的话,发送和返回会不会冲突?

测试了下,给modbus从设备发送命令到返回数据,大概时30ms左右。那么我现在发送间隔设为50ms,发送12帧,大概600ms多,在1秒内可以发完。

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn