485组网自动分配地址有没有什么好的方案
本帖最后由 NIC 于 2018-4-27 10:15 编辑每台设备都是一样的,不需要手动设置地址,要求能够自动分配地址,组网成功后只有一台主机,其他都是从机,设备最多有50台,要求在1分钟内完成组网,有没有什么好的方案,协议上怎么处理 主机存个表 哪些被用了 哪些没有用 扫描到新设备 给个没用的地址撒 怎么竞争? 给每台主机分配独立的时间片,时间片轮训。 主机发命令,每个从机取一个随机数,在倒计时结束后再回应,如果从机收到有其他设备回应了就等待下次。 地址可以通过芯片的ID地址来确定,主要是怎么来确定主机和从机. 自动注册,我之前的产品就是这样做的,10S注册一次,最慢10S内接入网络,注册时间约400ms 那你的设备要有个MAC地址,获得主机分配的地址前,用这个地址和主机通讯.
如果你能做冲突检测,就不用这么麻烦,主机发广播包,没有地址的从机延时一个随机时间后检测有没有其他从机发数据,有则退出,等待下一个广播包,没有则发数据给主机,要求分配地址 浮华一生 发表于 2018-4-27 10:17
主机存个表 哪些被用了 哪些没有用 扫描到新设备 给个没用的地址撒
主机都不是固定的,设备都是一样的,任何一台都有可能成为主机的 xjjiang 发表于 2018-4-27 10:32
自动注册,我之前的产品就是这样做的,10S注册一次,最慢10S内接入网络,注册时间约400ms ...
怎么注册,主机都不是确定的 哦,主机不确定是麻烦了,我的智能家居中主机一台,其它都是从机,从机都不一样 有点UDP的意思 RDM是485总线的,可分配地址,不用手动设置
前提是你得把协议熟悉了才能做得来 如果器件有唯一ID的话,可以参考DS18B20的多器件并联总线寻址技术。原理比较简单。 强势围观!!!! 谁先广播谁是主机吧,主机起来后要一直发主机广播指令出去,如果一旦停止超时,其他从机在超时后也抢占广播主机信号,谁抢到就谁的
xjjiang 发表于 2018-4-27 10:32
自动注册,我之前的产品就是这样做的,10S注册一次,最慢10S内接入网络,注册时间约400ms ...
可以详解一下吗。这种方式新颖。 自动分配完怎么知道哪个地址对应哪个物理位置 lb0857 发表于 2018-4-27 11:27
可以详解一下吗。这种方式新颖。
这个技术公司保密的,不好意思,485结合外部中断,我只能说这么多了 我现在就是通过采样AD产生一个随机码,根据这个随机码数据大小进行延时上报,自认为第一个上报的就是主机,然后其他从机上报完后,主机通过收到的随机码后给所有从机分配地址。现在是如果设备多了,两个设备的随机码很接近或者相同就会同时第一个上报,那这两个都自认为自己是主机,这种情况就不好处理了,而且还要保证在1分钟组网完成 modbus 发表于 2018-4-27 11:42
自动分配完怎么知道哪个地址对应哪个物理位置
注册完后,主机记下了这个ID,你可以给这个ID语音录入一个名字,相当于IP地址你不用知道,但知道对方的计算机名。 weiwei4 发表于 2018-4-27 11:02
RDM是485总线的,可分配地址,不用手动设置
前提是你得把协议熟悉了才能做得来 ...
RDM是什么 本帖最后由 add00 于 2018-4-27 13:23 编辑
所有设备都是有编号的,可以按编号做个通讯时分切片,添加一个启动器,启动器启动所有设备,分时接收应答,组网成功后把启动器的功能赋予任意一台设备(反正主机是你自己指定的一台),设备的编号赋给启动器,启动器是拥有设备控制权的后门,硬件和软件代价最小的方案,还支持扩容,缺点是单线网络,设备越多,通讯周期越长。
编辑原因:主机说法混淆,更改为启动器 485搞自组网,还主机不确定,楼主你这不自己坑自己? NIC 发表于 2018-4-27 12:12
RDM是什么
灯光行业里的一种协议,DMX512的后续升级协议,支持主机分配地址 norman33 发表于 2018-4-27 13:15
485搞自组网,还主机不确定,楼主你这不自己坑自己?
不用奇怪,很多厂家都这样实现的 本帖最后由 lw32 于 2018-4-27 14:14 编辑
总线型的分配地址?可以参考DALI的地址分配
先发初始化指令,设备初始化后做标志位
0x00:可以指定全部初始化:把之前的分配的地址清除
0xFF:没有地址的初始化:只初始化没有地址的设备,一搬用于新加入的设备
其他:地址相同的设备初始化
发送随机数指令:完成初始化的设备生成24位随机数
发送比较指令:小于比较值的设备回应YES,主机用二叉数遍历所有设备,并分配6位的短地址
设备保存分配好的地址,所以只有第一次安装或新设备加入时才需要分配地址,换主机设备没变的情况下需要重新分配地址
但这个流程不知道1分钟内是否能完成,DALI的这个流程是要求在15分钟内完成的,随机数改为16位可以加快遍历时间,但不知随机样机同的概率怎样
如果设备自身有唯一识别码的话也可以当随机数用
add00 发表于 2018-4-27 13:05
所有设备都是有编号的,可以按编号做个通讯时分切片,添加一个启动器,启动器启动所有设备,分时接收应答, ...
你说的启动器是另一个实物? 半双工没主机,大家随便发,不就冲突了吗? lw32 发表于 2018-4-27 14:10
总线型的分配地址?可以参考DALI的地址分配
先发初始化指令,设备初始化后做标志位
0x00:可以指定全部 ...
你这也是主机确定的情况吧,主机确定的情况下是很好弄的,从机产生随机码上报,主机分配地址就是 NIC 发表于 2018-4-27 14:52
你这也是主机确定的情况吧,主机确定的情况下是很好弄的,从机产生随机码上报,主机分配地址就是 ...
主机没确定,那就是没主机吧,至少有设备充当主机吧? 本帖最后由 NIC 于 2018-4-27 15:42 编辑
lw32 发表于 2018-4-27 15:21
主机没确定,那就是没主机吧,至少有设备充当主机吧?
设备都是一样的,要组网过程中产生一个主机,所以每次组网主机可能不是同一台设备,当然如果不是用随机码方式,每次的主机应该是固定的。但如果根据芯片的ID的某几位数来延时上报,会不会出现两台设备因这个数值太接近导致上报冲突的问题,这样就不好组了 假设50台设备的ID比较均匀的分布在1-65535之间,根据ID延时上电时间就太长了吧? mydows 发表于 2018-4-27 16:04
假设50台设备的ID比较均匀的分布在1-65535之间,根据ID延时上电时间就太长了吧? ...
是的,所以要在1分钟完成所有设备的上报,各个设备之间的上报时间肯定不均匀,有可能出现同时上报,其实只要第一个上报的主机不要有冲突,确定出主机后,后面从机上报冲突问题不是很大,没分配地址再次上报就行 可以参考bacnet mstp标准协议,里面有详细的实现方法 应用层的不用管,就看这个协议的物理层实现章节 NIC 发表于 2018-4-27 12:12
RDM是什么
remote device manager
灯光控制上面用的 NIC 发表于 2018-4-27 14:39
你说的启动器是另一个实物?
恩,编号为零的设备,不过他拥有接口特权,可以修改主机的配置 设备的485是并联的,还是串联的?串联的作自动地址分配就简单,单中间一个出问题,后面全没信号,并联的需要作信号碰撞检测 weiwei4 发表于 2018-4-27 13:19
灯光行业里的一种协议,DMX512的后续升级协议,支持主机分配地址
是不是理解错了?
RDM每台设备都有不同的设备ID,分配地址只是主机检测到设备后分配DMX512地址码; 应用场景是怎么样的?
DMX512上有一种方案,不需要分配地址和组网,只有单向数据的话可以参考。485串联使用,假设每个模块接收缓存8字节深度,收到数据超过8字节就把先前收到的发给下一台机器。主机只需要知道有多少台从机,然后按从机数*8byte发数据就行了。 本帖最后由 mydows 于 2018-4-28 14:11 编辑
liansh2002 发表于 2018-4-28 13:16
应用场景是怎么样的?
DMX512上有一种方案,不需要分配地址和组网,只有单向数据的话可以参考。485串联使用 ...
懂了!串联,相当于485转发,超过8个字节的部分全部转发给下个设备。中间只要有一个设备坏了,下面的就全部无法控制了? 参考 达拉斯 1-wire ,首先要求每个mcu都有唯一id,然后,,,走1wire协议查询总线上所有从机,{:titter:}{:victory:} 1wire协议公开的吗? lw32 发表于 2018-4-27 14:10
总线型的分配地址?可以参考DALI的地址分配
先发初始化指令,设备初始化后做标志位
0x00:可以指定全部 ...
两个疑问,一起讨论下:
1、即使是24位随机数,也有可能产生2个一样的数值吧?同样数值的两个从机将会被设置成相同的地址。
2、用二叉树找最小随机数时,可能存在多个从机的随机数都小于比较值,那些从机不就一起回复了?如果发送数据有延迟,会导致乱码吧? NIC 发表于 2018-4-27 10:41
怎么注册,主机都不是确定的
这实际上是从2方面考虑,一个是设备的自动注册,一个是设备间的相互通信。
对于通信方式有 竞争的方式和令牌环时间分发的方式
竞争的方式实现的简单,但是接入的节点越多,通信越频繁效率越低,对于多节点推荐用主持人分发令牌环的方式,对于LZ说的总线内50个节点,所以推荐最简单的方案是有网关通过令牌环控制总线内设备的通信。
但是LZ说了,需要采用“无主机”且非竞争的方式,那实际还是需要主机的,只是实际上是无固定主机的方式,那就需要考虑合适的节点注册方案和主持人的评选方案。
先假设主机已选出,然后从机加入的方式:
推荐的方案,主机通过分发令牌环轮询各从机,是否有通信需求,并在循环末尾制造一个空闲令牌,刚加入,无地址的主机,在收到空闲令牌时,
先马上拉低总线,让“主机”知道有未加入的从机,然后从机在随机延迟一定时间后,以竞争的方式向主机发起接入申请,最终接收主机发送的地址,完成握手过程。
然后在考虑主持人的选择方式:
在对等网络中,如果无法保证设备地址的唯一,还是需要一个主持人,来进行地址的分配,这就涉及到主持人的选举。
当一个刚加入的网络的设备,或者在网络内超过一定时间,未接收到环令牌的设备(此设备会先自动降级为,未分配地址的设备),在延时等待主持人分配地址超时后,在随机等待一段时间之后,通过总线竞争的方式,自动升级为主持人。
设备的退出:
设备退出之后,主持人在发放多次令牌,接收不到设备的相应,则认为该设备已退出,并将此设备从设备列表中删除。 有点意思,这里要解决两个问题:1,谁当皇帝2,点到
第一个问题,肯定不能采取选举的办法,不适合这块土地,因为没有民主,所以只能竞争,上电后以一个以一个随机的时间查看天下形势,如果这个时间到了没听到有人当皇帝,就自己宣布当皇帝,大部分人听到有人当皇帝了肯定就服从,但还是可能有那么一两个跟你同时宣布当皇帝的,怎么办?宣布完之后等待随机时间强调如人不服则砍头,一听到这个其它宣布当皇帝的都悄悄地缩回去了。 通过两步确认自己的皇帝地位;
第二个问题就好办了,一个一个的点名,在的答“到”,并报告自己名字,皇帝老子给你一块令牌 本帖最后由 NIC 于 2018-5-3 22:35 编辑
liurangzhou 发表于 2018-5-3 21:06
有点意思,这里要解决两个问题:1,谁当皇帝2,点到
第一个问题,肯定不能采取选举的办法,不适合这块土 ...
你说的第二个问题,一个一个的点名,在的答“到”,不是很明白,一上电设备肯定都在。还是说,其它设备也是通过随机码延时,延时到的收到主机的查询就响应,即你说的在的答“到”? 大神能讲下 主机确定的方法吗 我最近做的项目是主机确定,分机要设置固定id,手动设定,但是我希望能够自动分配。 nds_shenzhen 发表于 2018-5-3 23:03
大神能讲下 主机确定的方法吗 我最近做的项目是主机确定,分机要设置固定id,手动设定,但是我希望能够自动 ...
从机产生随机码延时,延时到上报随机码,主机通过收到的随机码对该从机分配地址 NIC 发表于 2018-5-3 22:33
你说的第二个问题,一个一个的点名,在的答“到”,不是很明白,一上电设备肯定都在。还是说,其它设备也 ...
确定了皇帝老子之后肯定皇帝爱怎么玩就怎么玩了,按顺序点到便是 liurangzhou 发表于 2018-5-4 12:21
确定了皇帝老子之后肯定皇帝爱怎么玩就怎么玩了,按顺序点到便是
能否说清楚一点呢,确定的主机又不知道从机的任何信息,如何按顺序点到,相比我说的随机码上报的办法是否有更好的办法 NIC 发表于 2018-5-4 13:29
能否说清楚一点呢,确定的主机又不知道从机的任何信息,如何按顺序点到,相比我说的随机码上报的办法是否 ...
你得首先有一个名字表,然后一个一个叫名字,并给他们编号 NIC 发表于 2018-5-4 12:01
从机产生随机码延时,延时到上报随机码,主机通过收到的随机码对该从机分配地址 ...
从机主动上报随机码吗?会不会 有两个从机同时上报?
另外主机如何对其分配地址?用默认地址? 有没详细的参考{:smile:} liurangzhou 发表于 2018-5-4 14:01
你得首先有一个名字表,然后一个一个叫名字,并给他们编号
{:sweat:} 这肯定没有的,每台设备没有任何可区分的信息。就算有所谓的不同名字,主机也不知道这些名字阿 nds_shenzhen 发表于 2018-5-4 15:02
从机主动上报随机码吗?会不会 有两个从机同时上报?
另外主机如何对其分配地址?用默认地址? 有没详细 ...
两个从机同时上报就要能够检测到冲突,检测到冲突就再次随机上报。主机地址为1,主机根据收到的随机码上报进行分配地址,在规定时间内从机上报完,然后主机发送个广播,随机码和地址绑定的数据包,从机收取到数据包后根据随机码确定主机分配给自己的地址 NIC 发表于 2018-5-4 15:33
这肯定没有的,每台设备没有任何可区分的信息。就算有所谓的不同名字,主机也不知道这些名字阿 ...
当这个皇帝也太没意思了,没法搞 NIC 发表于 2018-5-4 15:39
两个从机同时上报就要能够检测到冲突,检测到冲突就再次随机上报。主机地址为1,主机根据收到的随机码上 ...
已经破坏主从原则了,换成CAN吧 关注此问题,另外自动分配地址后,最后怎么知道某个地址对应的是哪台设备? 还是要有SN之类记录下来吧
NIC 发表于 2018-5-4 15:39
两个从机同时上报就要能够检测到冲突,检测到冲突就再次随机上报。主机地址为1,主机根据收到的随机码上 ...
好的 谢谢你我回头 好好研究了解下 半双工总线同时发数据多了会烧坏硬件吧 norman33 发表于 2018-4-27 13:15
485搞自组网,还主机不确定,楼主你这不自己坑自己?
哈哈,也是有和楼主所提的相似的需求,比如单总线多主机(网关)时候的通信网络的内规划。 主机固定还可以搞的 nds_shenzhen 发表于 2018-5-3 23:03
大神能讲下 主机确定的方法吗 我最近做的项目是主机确定,分机要设置固定id,手动设定,但是我希望能够自动 ...
主机固定的常见情况可以使用我这篇博客写的分配方法,比其它方案简单一些,只需要借用两个正常也会用到的命令,一个查询设备信息,一个用来设置地址。
只是查询信息的命令可以额外增加参数,指定随机等待的时间范围、地址范围过滤及设备信息过滤字符串这三个参数;地址设置同样额外多一个可选的字符串过滤的参数,只有过滤器匹配才可修改地址。
搭配起来就可以实现地址自动配置。
详细内容见:blog.dukelec.com/rs485-auto-addressing-zh 跟帖里很多办法挺新颖的,学习了 本帖最后由 dukelec 于 2018-6-6 01:57 编辑
楼主这种主机不确定的情况下的地址分配可以参照 IPv6 的地址自动分配方案,我之前有精简出一个可以用于 RS485 的协议,相对于被动地址自动分配的方案还是复杂很多,所以我现在不怎么用(现在用的比较多的是楼上楼上的被动地址自动分配的方案,不敢贴楼号,怕被和谐)。
协议大概是这么定义的:
/*
* Neighbor Discovery for IP version 6 (IPv6)
*
* Refer to:
* tools.ietf.org/html/rfc4861
*
* Only support NS and NA Message, and compressed in 6LoCD format
*
* We don't use solicited-node multicast address,
* it's useless for CDBUS, so we use link-local address instead.
*
* The source and dest address for NA message are inverted,
* because we don't want interrupt all nodes on the same net.
*/
/*
* NS type:
* MAC (IP): 255 (::) -> (fe80::)
* pkt_type = LO_NH_ICMP;
* icmp_type = ND_TYPE_NS;
* 6 bytes identify
*
* NA type: (send to self MAC, prevent filtering)
* MAC (IP): 255 (::) -> (fe80::)
* pkt_type = LO_NH_ICMP;
* icmp_type = ND_TYPE_NA;
* 6 bytes identify
* byte0: RSO = 'bx00
*
*
* P.S.:
* is current MAC or target MAC, and it's not equal to 255
*
* 6 bytes identify: (determine whether the packet is sent by us)
* only use first 4 bytes currently
*/
/*
* Avoid send collision by lower layer (always enable if sender id = 255):
* wait for bus idle
* wait a random time, if bus busy once, go back to: "wait for bus idle"
* send packet
*
* Address negotiation work flow (periodic execution):
*
* BEGIN:
* target_addr = self_mac == 255 ? gen_random_addr() : self_mac
* identify = random uint32 number
* set_mac_filter(target_addr)
* next: SEND_NS
*
* SEND_NS:
* send NS packet
* next: WAIT_RX
*
* WAIT_RX:
* if self_mac == 255:
* if receive NS or NA from others:
* next: BEGIN
* else if self NS timeout: (bus data collision)
* next: SEND_NS
* else if wait NA timeout:
* update self_mac with target_addr
* next: IDLE
*
* else self_mac != 255:
* while receive NS from others:
* send NA back
* if receive NA from others:
* set self_mac = 255
* next: BEGIN
* else if self NS timeout:
* next: SEND_NS
* else if wait NA from others timeout:
* next: IDLE (keep current address)
*
* IDLE:
* while receive NS from other node:
* send NA back
* // avoid received NA
*/
每个设备上电的时候都可以没有地址(本机地址为 255 代表没有分配到地址,因为正常使用的时候 255 是广播地址);
没有地址的设备上电为自己自动随机分配一个 0~254 之间的地址,但不可以直接使用,要先确保地址没有其它人选用;
譬如某个节点随机选择的 id 为 44, 那么就发送一个 255 -> 44 的 NS 数据包(IPv6 协议中 NS 是询问,NA 是应答),并包含一个随机生成的 6 字节的 identify 号码,
只有自己先收到含同样 identify 号码的数据包(表示发送的时候大概没有冲突),然后也没有收到同样地址是 255 -> 44的 NA 包,也没有收到其它人节点发送的同样地址的 NS 包,那么才可以采用此地址。
如果收到相同地址别人的 NA 回复或 NS 请求,那么则放弃重新选择 ID.
然而如果已经分配到 ID, 那么在收到别人的 NS 请求时,将回复相同 identify 号的 NA 告诉对方有人占用此地址。如果检测到的是别人的 NA, 那么就要放弃已经获得的地址从头来过。
已经分配到 ID 的节点,每隔一段时间也要发个 NS 包检查一下,防止偶发因素没有检测到冲突。
然后对于楼主的要求,一个对等的无 ID 冲突的网络,选出一个主机就很容易了,只需要一个节点(谁速度快是谁)发一个广播包告知天下自己是王,如果已经有王了,那就被夺权,或是比地址大小决定谁胜出,胜出者重新发包告知天下。这种方式,一般上电之后等待一段时间,确保大家 ID 都分好了再进行这个步骤,譬如规定大家分到 ID 后都等 10 秒钟。收到其它人宣告后自动取消自己的宣告打算。
顺便说一下,上面之所以是 255 -> 44 而不是 44 -> 255 是因为 CDBUS 可以使用硬件控制器增强,硬件会过滤掉不是发送给自己的数据包,因此为减少对其它不相干节点的打扰,所以才不使用 44 -> 255 的广播包。
顺便再说下,CDBUS 的硬件增强可以自动避免冲突,跟 CAN 的原理一样,所以可以支持多主对等通讯,而且速率至少可以达到 10Mbps, 数据包也没有 CAN 的 8 个字节限制,方便很多。 xuhai777 发表于 2018-4-28 12:05
设备的485是并联的,还是串联的?串联的作自动地址分配就简单,单中间一个出问题,后面全没信号,并联的需 ...
信号碰撞检测,能说具体点吗? 每个设备应该有一个唯一的ID, 主设备应该有 硬件开关 xjjiang 发表于 2018-4-27 12:04
这个技术公司保密的,不好意思,485结合外部中断,我只能说这么多了
先收到数据的模块,总线不会中断,后收到的都会产生中断,然后根据发具体特殊数据,例如0x7e,这样的有快速返回的模块先返回数据,其他模块如果收到中断就停止回应? 不好做,还是定死的好,设备端根据拨码或者槽位的方式定死地址的好。
不好做,还是定死的好,设备端根据拨码或者槽位的方式定死地址的好。 我发现之前公司的想法,还挺好,简单好用,无拨码,地址自动分配,没有IP那么高大,如果有做报警主机的人,可以看看OPTEX主机的总线,或者说明书,这个机子就是之前我们设计的。总线这个做法,花了近半年的时间完善。开始觉得没什么用,直到有一次面试,问及这个事情,那个老板表现出极大的兴趣,猛然一想,我还签了保密协议。 xjjiang 发表于 2018-4-27 12:04
这个技术公司保密的,不好意思,485结合外部中断,我只能说这么多了
这种方式...我猜是有个外部的仲裁电平线.....这样就简单多了 xjjiang 发表于 2018-6-7 22:23
我发现之前公司的想法,还挺好,简单好用,无拨码,地址自动分配,没有IP那么高大,如果有做报警主机的人, ...
谢谢你的提示
我猜你们是用485加中断检测实现总线仲裁。
没测试过,不知道485的信号线与是否需要外部电路支持。
一个很好的问题啊,mark 标记一下
自动分配地址,自动组网 自动组网,分配地址方案 自动组网,很受启发 先在硬件设计上解决同时发问题。 至少要先确定一个主机 本帖最后由 kevin_me 于 2018-7-6 20:05 编辑
我的思路跟楼上举例当皇帝的类似,但不同,我的想法如下:
1.假设所有设备同时上电
2.所有设备根据自己产生的随机数进行延时
3.一旦随机延时时间到,则发送广播,要求升主
4.其他设备在收到第一个发送广播数据之后,立即停止延时,停止各自后续发送广播的动作
5.假设刚才有几个设备产生的随机数延时恰好相同,则他们几个会同时收到总线上发来的脏数据,也本轮竞争升主失败
6.开始进行第二轮升主竞争,到上一轮所有提前终止随机延时的设备放弃本次竞争,剩下的几个继续
7.重复步骤3和4
8.主机这时确定出来了
9.主机开始给总线上的设备以广播的形式发送地址编号,从1开始
10.所有从设备抢这个地址1的使用权,但必须在随机数延时之后向主机发送确认使用报文
11.第一个最先发出确认请求的从设备获得地址编号1的使用权
12.其余从设备收到第一个从设备的确认报文之后立即停止随机数延时,等待下一轮主机分配地址编号
13.若9步骤时恰好有几个从设备的随机数延时相同,则采用步骤5的方法进行第二轮竞争
14.只有随机数相同的那几个从设备参与地址编号1的使用权竞争,其余从设备放弃
15.直到编号增加到总线上无人回复确认报文,则地址分配结束
16.整个过程的时间取决于设备数量和随机数的长度 kv2004 发表于 2018-7-6 10:55
先在硬件设计上解决同时发问题。
硬件设计上怎么解决同时发问题 kevin_me 发表于 2018-7-6 19:49
我的思路跟楼上举例当皇帝的类似,但不同,我的想法如下:
1.假设所有设备同时上电
2.所有设备根据自己产生 ...
你这个看起来有点复杂,组网出现冲突时时间应该不会很快吧 DALI总线就是自组网的,可惜资料太少 NIC 发表于 2018-7-9 16:44
你这个看起来有点复杂,组网出现冲突时时间应该不会很快吧
我说的很长,其实并不复杂,争主和从机地址分配所用的逻辑完全一样
时间长度主要取决于随机数产生,正好相同的个数 学习了,同问硬件上怎么做冲突检测
待我想想1小时候再来 xjjiang 发表于 2018-6-7 22:23
我发现之前公司的想法,还挺好,简单好用,无拨码,地址自动分配,没有IP那么高大,如果有做报警主机的人, ...
http://www.optexchina.com?没有说明书上没提到啊。 刚看了彩页和说明,只提到了485,没有提到入网方法,误导你了。不好意思 自动组网, kevin_me 发表于 2018-7-10 09:34
我说的很长,其实并不复杂,争主和从机地址分配所用的逻辑完全一样
时间长度主要取决于随机数产生,正好 ...
随机码相同问题可以用唯一CPUID来解决 fct8591 发表于 2018-7-10 11:35
待我想想1小时候再来
哥们想好没有 这个问题就是用CAN总线的问题 想不出太好的办法,半双工通讯2个打起架来其它全完蛋没法竞争。随机码用时间判断也不好处理流水线处理ID都是相邻的用时间延时255台1分钟肯定搞不定。 kevin_me 发表于 2018-7-6 19:49
我的思路跟楼上举例当皇帝的类似,但不同,我的想法如下:
1.假设所有设备同时上电
2.所有设备根据自己产生 ...
你的思路比较完整
不过,第9步之后确认分配从机地址可以简化一下
利用CPU 的唯一ID制造硬件地址,
在主机竞争阶段,各模块发的数据携带硬件地址,接收者记录硬件地址。确认了主机后,主机通过比较硬件地址,分配从机地址(逻辑地址) 用mcu内置的唯一id,做达拉斯1-wire协议类似的方式,也是一种。{:sweat:} kevin_me 发表于 2018-7-6 19:49
我的思路跟楼上举例当皇帝的类似,但不同,我的想法如下:
1.假设所有设备同时上电
2.所有设备根据自己产生 ...
所有的设备一样,配一个拨码开关,出厂的时候,手动拨一个地址不就可以了吗
xjjiang 发表于 2018-4-27 12:04
这个技术公司保密的,不好意思,485结合外部中断,我只能说这么多了
串口通信如何自动分配地址啊,485结合外部中断什么意思,能给点提示吗 marker 一下,过后再看 具体可以参考LED照明中的DALI协议
页:
[1]
2