你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
举报
查看全部评分
qiangtech 发表于 2019-12-28 11:13 唯一的ID是可以,问题就是从机怎么把自已的ID上报给主机。主机不知道线上挂了几个从机,而从机要考虑同时 ...
奏奏奏 发表于 2019-12-28 09:59 我只能大概说个原理: (1)每个作为从角色的MCU取一个唯一的ID,上报给这个作为主角色; (2)这个作为主 ...
yklstudent-1794 发表于 2019-12-28 12:22 拨码开关设置吧,主机设置从机数,从机设置地址
麦龙电子 发表于 2019-12-28 16:55 四线的不就应该是是RS422,全双工通信了吗。我觉得这个从机的设备都在总线上,不管你给那个设备发啥,我觉得 ...
奏奏奏 发表于 2019-12-29 10:30 如果要每个时间差不同,可以根据ID来。 例如ID最后一个字节是FF,就把这个数转换为10进制数是255,再把这 ...
qiangtech 发表于 2019-12-29 16:02 这是一个想法,就是可能握手的时间会太久。
地址分配最简单的方式就是用拨码开关设置 也是最常用的方法
第二种方法就是通过RS232或者其他通讯方式进行设置地址
第三种方法就是增加两根线 作为地址分配线 一根上拉输入 一根下拉输出 主机和从机预先约定一个地址码 作为默认码 从主机开始 输出低电平开始分配地址 下一级读取到低电平信号 开始请求地址 主机下发地址 设置完成后拉高电平 配置结束 下一级以此循环 配置全部地址
评分
查看全部评分
(1)默认485地址是STM32的UID的12字节中最后一个字节;
(2)每个485子设备往485总线发送一条查询地址是否重复的指令;
(3)如果有回复数据证明有子设备是有地址重复的情况的话,就将当前地址加上UID的12字节中倒数第二个字节地址作为新地址,隔一段时间后执行步骤(2)(如此类推,下一次是加上倒数第三个字节……)直到不出现重复地址为止(因为地址更新后可能会与另外一个或几个设备地址重复)。当然如果子设备接近200个的话时间就比较长了而且不一定成功。485总线一般挂的子设备不超过60个。
如果要每个时间差不同,可以根据ID来。
例如ID最后一个字节是FF,就把这个数转换为10进制数是255,再把这个数乘以时间间隔数1秒(你自己定义)就是开机后255秒;
对比另外一个ID最后一个字节是FE,就是……开机后254秒上报。
这样人为做出时间差。
如果是最后一个字节ID相同的情况下,不是还有倒数第2个字节,如此类推。要不然就不是是唯一的ID了。
(1)每个作为从角色的MCU取一个唯一的ID,上报给这个作为主角色;
(2)这个作为主角色的根据ID不同,按照一个顺序分配每个从角色的485地址;
(3)每个从角色自己保存好这个分配的485地址作为自己区别于其他从角色的标识。
唯一的ID是可以,问题就是从机怎么把自已的ID上报给主机。主机不知道线上挂了几个从机,而从机要考虑同时通电的情况,从机也不能同时一拥而上上报ID。要有个时间差就可以,问题这个时间差怎么来?
拔码开关是可以,还是回到了原点。必须要地址码吗?
所以第一步还是分配地址,想办法通过软件协商的方式。分配好地址之后不存在这些问题了。
评分
查看全部评分
要不就是,设计失败
这是一个想法,就是可能握手的时间会太久。
你可以把自定义的时间间隔设置为50毫秒也可以