找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

单片机多点通信 请教如何实现端口识别?主机识别从机连接自己的哪个接口

查看数: 3463 | 评论数: 29 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2023-1-3 06:00

正文摘要:

各位大神好,我想实现一个多点通信的需求,具体如图: 主机要能识别从机连接自己的哪个接口,并将该信息记录下来,现在的问题是怎样识别自己的哪个端口连接着从机,望各位大神不吝赐教!!感谢!!

回复

ID:1034262 发表于 2023-1-12 11:46
RS485多机通信我基本都用MODBUS-RTU协议,每个点都有一个固定位移的地址。
ID:408539 发表于 2023-1-11 17:02
用多个串口,不是很好识别么,,那个串口接收到数据  标记一下就好了么  
ID:1057447 发表于 2023-1-5 02:40
冰火风轮 发表于 2023-1-4 13:01
LED换成光耦,单片机就能自己识别了

好的,谢谢,我学习一下,感谢大家,给大家添麻烦了!
ID:1057447 发表于 2023-1-5 02:39
名字不是重点 发表于 2023-1-3 17:49
一个MAX487E只能有一个485,你主机上有8个端口,就需要有8片487,8片IC你总不会所有IO都并联接到MCU上吧 ...

我现在想到的也是用io口来区分,就是不知道电路怎么实现
ID:1057447 发表于 2023-1-5 02:36
primoliuyang 发表于 2023-1-3 16:19
UART走总线,从机编址即可

我要实现的不是标识从机呀,我是要实现主机感知自己的哪个接口在和从机通信,至于对端是哪个从机,主机并不关心。给从机编址只能标识从机,不能标识主机的物理口呀
ID:1057447 发表于 2023-1-5 02:30
lhzw2001 发表于 2023-1-3 16:12
主机8个口,哪个口有数据回复,不就知道从机接在哪个口吗?

人可以知道,比如通过看哪根线连接了哪个端口,485怎么能知道哪个芯片对应哪个端口呢?485芯片不能编址啊!能编址的是从机,我不需要知道是哪个从机发给我的,我要知道是哪个485芯片接收的。简单来说就是单片机没法给多个485芯片进行编号,所以单片机没法区分是1号芯片收到的信号还是8号芯片收到的。
ID:955673 发表于 2023-1-4 13:01
fczxg 发表于 2023-1-3 16:00
那只能每个端口接一个LED,用眼睛去看啦,我想做到的是单片机自己识别是从哪个485端口收到的信息

LED换成光耦,单片机就能自己识别了
ID:384109 发表于 2023-1-4 12:41
楼主应该还没有做过有关485通讯的硬件设计,抛开了硬件设计是没法讨论功能需求的
ID:1034262 发表于 2023-1-4 11:16
要解决端口硬件冲突、使用软件器件识别协议。
ID:161164 发表于 2023-1-3 20:56
fczxg 发表于 2023-1-3 15:58
是呀,可以UART只有一对引脚,关键是如果不对485芯片进行标识(编号),怎么识别是从哪个485芯片(不是从 ...

使能脚来控制
ID:824490 发表于 2023-1-3 17:49
fczxg 发表于 2023-1-3 16:07
非常感谢您,我说的“485端口编号”不是简单地做端口区分,是固定的端口名称(比如端口1就是0x01,端口255 ...

一个MAX487E只能有一个485,你主机上有8个端口,就需要有8片487,8片IC你总不会所有IO都并联接到MCU上吧?那怕各有一个IO是独立的,不就可以区分8个485端口了?你这个独立的IO就能看做是485 的ID。还有什么好纠结的?
我被你整懵了都....
ID:824490 发表于 2023-1-3 17:37
fczxg 发表于 2023-1-3 16:07
非常感谢您,我说的“485端口编号”不是简单地做端口区分,是固定的端口名称(比如端口1就是0x01,端口255 ...

能联机了,就可以建表了,不管什么端口,都有它固定的ID(地址、标识、片选、STB。。。。),就如我上贴所说:
比如“端口1与从机1发生关系了”,那么,你能操作端口1,说明你就能GET到端口1的ID,再把端口1与从机1关联上不就OK了?
ID:609560 发表于 2023-1-3 16:19
UART走总线,从机编址即可
ID:203661 发表于 2023-1-3 16:12
主机8个口,哪个口有数据回复,不就知道从机接在哪个口吗?
ID:384109 发表于 2023-1-3 16:10
楼主应该先好好理解一下什么是485
ID:1057447 发表于 2023-1-3 16:07
名字不是重点 发表于 2023-1-3 15:06
协议做的事情多了去了。前提是你的协议够强大、完善!
1、从机上电后不停发送某个信息字,比如“?”
2 ...

非常感谢您,我说的“485端口编号”不是简单地做端口区分,是固定的端口名称(比如端口1就是0x01,端口255就是0xFF),如果只是解决通信问题,那封装协议就能解决,但是要标识物理接口,这个要怎么做?我的51上不可能有256个UART口呀,但是MAX487E又不能编程,没法在芯片里烧一个地址进去
ID:1057447 发表于 2023-1-3 16:02
maoizhou 发表于 2023-1-3 15:18
主机的8个接口是分别独立的吧,主机通讯的时候用的哪个口有回应就是接到的哪个端口

是的呀,比如我用8个485芯片,但是51上的UART口只有一个,单片机怎么通过这一个UART口区分不同的485芯片呢,485芯片又不能编程,没法在485芯片里写地址
ID:1057447 发表于 2023-1-3 16:00
maoizhou 发表于 2023-1-3 15:18
主机的8个接口是分别独立的吧,主机通讯的时候用的哪个口有回应就是接到的哪个端口

那只能每个端口接一个LED,用眼睛去看啦,我想做到的是单片机自己识别是从哪个485端口收到的信息
ID:1057447 发表于 2023-1-3 15:59
lkc8210 发表于 2023-1-3 15:09
STC89C52要加485芯片来转换TTL信号吧?
8个485端口就要8个485芯片
芯片上有使能脚来控制

问题的关键就是“有信号传回,就是那个端口接上了从机”那个端口是哪个端口
ID:1057447 发表于 2023-1-3 15:58
lkc8210 发表于 2023-1-3 15:09
STC89C52要加485芯片来转换TTL信号吧?
8个485端口就要8个485芯片
芯片上有使能脚来控制

是呀,可以UART只有一对引脚,关键是如果不对485芯片进行标识(编号),怎么识别是从哪个485芯片(不是从机)接收的数据呢?
ID:1057447 发表于 2023-1-3 15:55
名字不是重点 发表于 2023-1-3 15:06
协议做的事情多了去了。前提是你的协议够强大、完善!
1、从机上电后不停发送某个信息字,比如“?”
2 ...

非常感谢,但是虽然两边都有地址了,问题是我怎么知道哪个地址对应的我的1-8哪个485接口呢?
ID:1060170 发表于 2023-1-3 15:18
主机的8个接口是分别独立的吧,主机通讯的时候用的哪个口有回应就是接到的哪个端口
ID:161164 发表于 2023-1-3 15:09
STC89C52要加485芯片来转换TTL信号吧?
8个485端口就要8个485芯片
芯片上有使能脚来控制
通信时每次只使能一个485芯片
有信号传回,就是那个端口接上了从机
ID:824490 发表于 2023-1-3 15:06
fczxg 发表于 2023-1-3 14:31
协议解决不了主机485端口编号的问题呀,最多只能解决从机标识问题,比如给从机编址,但我不关心从机的标 ...

协议做的事情多了去了。前提是你的协议够强大、完善!
1、从机上电后不停发送某个信息字,比如“?”
2、主机遍历所有端口,如果有端口收到“?”则来回应“!”
3、从机收到主机发来的“!”表示联机成功,不南发送“?”转而发送从机的信息。
4、主机收到从机的信息,从地址池中取一个未被占用的地址发给从机,
5、从机收到地址后,记录并更新到本地。并回应一个“!”
6、接下来就是各种操作了:

维持心跳:主机时不时发一个"?",询问从机是否还在线,从机收到“?”后回应“!”,表示还在线。
如果主机发出的“?”没有回应(超时),则说明从机已掉线,就把地址收回(置未占用态),然后等从机上线,把上边的1-5再走一次流程。

希望能帮到你。。
ID:1057447 发表于 2023-1-3 14:31
cnos 发表于 2023-1-3 12:06
这个是协议问题
你先用中文把确认过程写下来,然后就很容易变成代码。

协议解决不了主机485端口编号的问题呀,最多只能解决从机标识问题,比如给从机编址,但我不关心从机的标识,我关心的是主机的485端口号
ID:1057447 发表于 2023-1-3 14:20
协议解决不了物理端口编号的问题呀,主机他关心的是我的哪个端口连接了从机,不用关心连接了哪个从机。如果只是标识不同的从机,那给从机编个地址就好了,现在是要给485端口编地址,485芯片也没这功能呀
ID:1057447 发表于 2023-1-3 14:15
关键是怎么给485物理端口编号,当从机插上主机的任意485口后,主机从哪里读取端口编号信息呢?注意是主机读取主机自己的485端口信息,不是读取从机的标识信息,我不需要知道我连了哪个从机,我只要知道我哪个口连了从机就行
ID:688692 发表于 2023-1-3 12:06
这个是协议问题
你先用中文把确认过程写下来,然后就很容易变成代码。
ID:1057447 发表于 2023-1-3 06:01
或者有没有能够实现这种需求的芯片,能否推荐一下,不胜感激!!

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表