RS485多机通信我基本都用MODBUS-RTU协议,每个点都有一个固定位移的地址。 |
用多个串口,不是很好识别么,,那个串口接收到数据 标记一下就好了么 |
冰火风轮 发表于 2023-1-4 13:01 好的,谢谢,我学习一下,感谢大家,给大家添麻烦了! |
名字不是重点 发表于 2023-1-3 17:49 我现在想到的也是用io口来区分,就是不知道电路怎么实现 |
primoliuyang 发表于 2023-1-3 16:19 我要实现的不是标识从机呀,我是要实现主机感知自己的哪个接口在和从机通信,至于对端是哪个从机,主机并不关心。给从机编址只能标识从机,不能标识主机的物理口呀 |
lhzw2001 发表于 2023-1-3 16:12 人可以知道,比如通过看哪根线连接了哪个端口,485怎么能知道哪个芯片对应哪个端口呢?485芯片不能编址啊!能编址的是从机,我不需要知道是哪个从机发给我的,我要知道是哪个485芯片接收的。简单来说就是单片机没法给多个485芯片进行编号,所以单片机没法区分是1号芯片收到的信号还是8号芯片收到的。 |
fczxg 发表于 2023-1-3 16:00 LED换成光耦,单片机就能自己识别了 |
楼主应该还没有做过有关485通讯的硬件设计,抛开了硬件设计是没法讨论功能需求的 |
要解决端口硬件冲突、使用软件器件识别协议。 |
fczxg 发表于 2023-1-3 15:58 使能脚来控制 |
fczxg 发表于 2023-1-3 16:07 一个MAX487E只能有一个485,你主机上有8个端口,就需要有8片487,8片IC你总不会所有IO都并联接到MCU上吧?那怕各有一个IO是独立的,不就可以区分8个485端口了?你这个独立的IO就能看做是485 的ID。还有什么好纠结的? 我被你整懵了都.... |
fczxg 发表于 2023-1-3 16:07 能联机了,就可以建表了,不管什么端口,都有它固定的ID(地址、标识、片选、STB。。。。),就如我上贴所说: 比如“端口1与从机1发生关系了”,那么,你能操作端口1,说明你就能GET到端口1的ID,再把端口1与从机1关联上不就OK了? |
UART走总线,从机编址即可 |
主机8个口,哪个口有数据回复,不就知道从机接在哪个口吗?![]() |
楼主应该先好好理解一下什么是485 |
名字不是重点 发表于 2023-1-3 15:06 非常感谢您,我说的“485端口编号”不是简单地做端口区分,是固定的端口名称(比如端口1就是0x01,端口255就是0xFF),如果只是解决通信问题,那封装协议就能解决,但是要标识物理接口,这个要怎么做?我的51上不可能有256个UART口呀,但是MAX487E又不能编程,没法在芯片里烧一个地址进去 |
maoizhou 发表于 2023-1-3 15:18 是的呀,比如我用8个485芯片,但是51上的UART口只有一个,单片机怎么通过这一个UART口区分不同的485芯片呢,485芯片又不能编程,没法在485芯片里写地址 |
maoizhou 发表于 2023-1-3 15:18 那只能每个端口接一个LED,用眼睛去看啦,我想做到的是单片机自己识别是从哪个485端口收到的信息 ![]() |
lkc8210 发表于 2023-1-3 15:09 问题的关键就是“有信号传回,就是那个端口接上了从机”那个端口是哪个端口 ![]() |
lkc8210 发表于 2023-1-3 15:09 是呀,可以UART只有一对引脚,关键是如果不对485芯片进行标识(编号),怎么识别是从哪个485芯片(不是从机)接收的数据呢? |
名字不是重点 发表于 2023-1-3 15:06 非常感谢,但是虽然两边都有地址了,问题是我怎么知道哪个地址对应的我的1-8哪个485接口呢? |
主机的8个接口是分别独立的吧,主机通讯的时候用的哪个口有回应就是接到的哪个端口 |
STC89C52要加485芯片来转换TTL信号吧? 8个485端口就要8个485芯片 芯片上有使能脚来控制 通信时每次只使能一个485芯片 有信号传回,就是那个端口接上了从机 |
fczxg 发表于 2023-1-3 14:31 协议做的事情多了去了。前提是你的协议够强大、完善! 1、从机上电后不停发送某个信息字,比如“?” 2、主机遍历所有端口,如果有端口收到“?”则来回应“!” 3、从机收到主机发来的“!”表示联机成功,不南发送“?”转而发送从机的信息。 4、主机收到从机的信息,从地址池中取一个未被占用的地址发给从机, 5、从机收到地址后,记录并更新到本地。并回应一个“!” 6、接下来就是各种操作了: 维持心跳:主机时不时发一个"?",询问从机是否还在线,从机收到“?”后回应“!”,表示还在线。 如果主机发出的“?”没有回应(超时),则说明从机已掉线,就把地址收回(置未占用态),然后等从机上线,把上边的1-5再走一次流程。 希望能帮到你。。 |
cnos 发表于 2023-1-3 12:06 协议解决不了主机485端口编号的问题呀,最多只能解决从机标识问题,比如给从机编址,但我不关心从机的标识,我关心的是主机的485端口号 |
协议解决不了物理端口编号的问题呀,主机他关心的是我的哪个端口连接了从机,不用关心连接了哪个从机。如果只是标识不同的从机,那给从机编个地址就好了,现在是要给485端口编地址,485芯片也没这功能呀 |
关键是怎么给485物理端口编号,当从机插上主机的任意485口后,主机从哪里读取端口编号信息呢?注意是主机读取主机自己的485端口信息,不是读取从机的标识信息,我不需要知道我连了哪个从机,我只要知道我哪个口连了从机就行 |
这个是协议问题 你先用中文把确认过程写下来,然后就很容易变成代码。 |
或者有没有能够实现这种需求的芯片,能否推荐一下,不胜感激!! |