请选择 进入手机版 | 继续访问电脑版

你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

无地址RS485怎么完成握手

[复制链接]
qiangtech 提问时间:2019-12-27 18:45 /
要做一个一主多从的RS485,但是都没有设置地址。现在要想办法做一个握手协议,通过软件来完成地址分配。RS485采用的是四线的,TX+ ,TX-,RX+,RX-。请大神支招。
收藏 1 评论27 发布时间:2019-12-27 18:45

举报

27个回答
mylovemcu 回答时间:2019-12-29 08:47:09
四线全双工的是RS422  设备之间通信必须要有地址  这是重中之重

地址分配最简单的方式就是用拨码开关设置  也是最常用的方法

第二种方法就是通过RS232或者其他通讯方式进行设置地址

第三种方法就是增加两根线  作为地址分配线  一根上拉输入  一根下拉输出  主机和从机预先约定一个地址码  作为默认码  从主机开始  输出低电平开始分配地址  下一级读取到低电平信号  开始请求地址  主机下发地址  设置完成后拉高电平  配置结束  下一级以此循环 配置全部地址

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

奏奏奏 回答时间:2020-1-4 11:57:53
我做的是CAN总线的,但是485总线有共性。我简单说一下我的解决方案:
(1)默认485地址是STM32的UID的12字节中最后一个字节;
(2)每个485子设备往485总线发送一条查询地址是否重复的指令;
(3)如果有回复数据证明有子设备是有地址重复的情况的话,就将当前地址加上UID的12字节中倒数第二个字节地址作为新地址,隔一段时间后执行步骤(2)(如此类推,下一次是加上倒数第三个字节……)直到不出现重复地址为止(因为地址更新后可能会与另外一个或几个设备地址重复)。当然如果子设备接近200个的话时间就比较长了而且不一定成功。485总线一般挂的子设备不超过60个。
奏奏奏 回答时间:2019-12-29 10:30:38
qiangtech 发表于 2019-12-28 11:13
唯一的ID是可以,问题就是从机怎么把自已的ID上报给主机。主机不知道线上挂了几个从机,而从机要考虑同时 ...

如果要每个时间差不同,可以根据ID来。
例如ID最后一个字节是FF,就把这个数转换为10进制数是255,再把这个数乘以时间间隔数1秒(你自己定义)就是开机后255秒;
对比另外一个ID最后一个字节是FE,就是……开机后254秒上报。
这样人为做出时间差。
如果是最后一个字节ID相同的情况下,不是还有倒数第2个字节,如此类推。要不然就不是是唯一的ID了。
奏奏奏 回答时间:2019-12-28 09:59:43
我只能大概说个原理:
(1)每个作为从角色的MCU取一个唯一的ID,上报给这个作为主角色;
(2)这个作为主角色的根据ID不同,按照一个顺序分配每个从角色的485地址;
(3)每个从角色自己保存好这个分配的485地址作为自己区别于其他从角色的标识。
qiangtech 回答时间:2019-12-28 11:13:12
奏奏奏 发表于 2019-12-28 09:59
我只能大概说个原理:
(1)每个作为从角色的MCU取一个唯一的ID,上报给这个作为主角色;
(2)这个作为主 ...

唯一的ID是可以,问题就是从机怎么把自已的ID上报给主机。主机不知道线上挂了几个从机,而从机要考虑同时通电的情况,从机也不能同时一拥而上上报ID。要有个时间差就可以,问题这个时间差怎么来?
yklstudent 回答时间:2019-12-28 12:22:03
拨码开关设置吧,主机设置从机数,从机设置地址
qiangtech 回答时间:2019-12-28 14:08:13
yklstudent-1794 发表于 2019-12-28 12:22
拨码开关设置吧,主机设置从机数,从机设置地址

拔码开关是可以,还是回到了原点。必须要地址码吗?
麦龙电子 回答时间:2019-12-28 16:55:32
四线的不就应该是是RS422,全双工通信了吗。我觉得这个从机的设备都在总线上,不管你给那个设备发啥,我觉得做其他的协议还是会绕进去,因为没有地址,主站怎么实现给想发特定指令的丛机单独的数据呢。全部丛机接受的都是一样的,就是自由分配,这个我觉得就算做成也没有什么意义了, 对主从设备的负担增加,而且错误率恐怕不是一般的高,
qiangtech 回答时间:2019-12-28 17:51:55
麦龙电子 发表于 2019-12-28 16:55
四线的不就应该是是RS422,全双工通信了吗。我觉得这个从机的设备都在总线上,不管你给那个设备发啥,我觉得 ...

所以第一步还是分配地址,想办法通过软件协商的方式。分配好地址之后不存在这些问题了。
maxtch 回答时间:2019-12-28 22:09:51
这个是全双工的 RS422,没法做 CSMA/CD,地址分配的确有困难。如果是两线的 RS485 那可以做 CSMA/CD 保证数据包完整性,然后在上面跑 DHCP。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

aiherong 回答时间:2019-12-29 01:19:37
仲裁的问题
西点钟灵毓秀 回答时间:2019-12-29 11:40:05
有协议没有? 没有协议,那就自定协议。。。。。
要不就是,设计失败
qiangtech 回答时间:2019-12-29 16:00:40
当前来说,当然只能是自定协仪了。而且肯定的说,有看到市场上有做到了这个程度的产品。硬件上面确定没有地址设置开关,四根数据线还有一根地线相连,多从机。就可以实现控制。不过,也不能确定是不是安装之前还要做前期设定。
qiangtech 回答时间:2019-12-29 16:02:02
奏奏奏 发表于 2019-12-29 10:30
如果要每个时间差不同,可以根据ID来。
例如ID最后一个字节是FF,就把这个数转换为10进制数是255,再把这 ...

这是一个想法,就是可能握手的时间会太久。
奏奏奏 回答时间:2019-12-30 12:01:07
qiangtech 发表于 2019-12-29 16:02
这是一个想法,就是可能握手的时间会太久。

你可以把自定义的时间间隔设置为50毫秒也可以
12下一页

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版