liu672992381 发表于 2014-9-30 21:50:28

求设计一个自动切换串口通讯的硬件电路(请看完要求)

本帖最后由 liu672992381 于 2014-10-1 09:36 编辑

1.1问题描述
A、我们需要做一个智能分配器,其目的是实现一台下位可以自动选择与两台上位机中的一台上位机通讯(平时只与一台上位机通讯)。说明上位机和下位机的程序无法修改,通讯方式为RS232也无法修改。
B、众所周知,RS232通讯是点对点的双向通讯,在不做任何处理的情况下无法实现一点对多点的通讯。一台下位机是无法同时与两台上位机通讯的。
很多人就要问了,那你可以使用485通讯。说实在的不是我不想,是现场的情况必须使用RS232。下位机是德国西门子公司设计的,已经无法更改。
1.2未成功的解决方案
A、找了一家公司,购买了型号HUB2232Z串口HUB,如图所示:



B、根据说明书上的介绍,该产品只对2、3、5脚进行了一些处理,其他串口脚引脚没有使用。这个可以接受,一般没有特殊要求,大家都是只使用2、3、5脚。
该产品可以智能分配,也就是说可以对分配数据传输,使一台下位机只和一台上位机通讯,从而避免数据传输冲突。这一点我没有测试过,在此也想请大神分析一下
怎样做到自动识别。
1.3测试过程及结果
A、在多次试验后,上位机使用了交叉或直通串口线,连接HUN2232Z后再连接下位机,均无法正常通讯。然而未使用该产品,用交叉线能正常与下位机通讯。
B、该产品在实验室测试时正常的,使用两条串口线对发,一台接上位机,一台接下位机。发送和接收的数据均正常。
C、厂家给的测试方法也测试过,测试时该产品也是正常的。
1.4分析及讨论、以及初步的设计方案
1)目前现状:一台上位机(A)一直与下位机通讯,在有需要时另外一台上位机(B)开始与下位机通讯,同时切断正在通讯的上位机(A)。
可以理解为工作时一直是一台上位机和一台下位机在通讯。不怕打断,B机优先级高。使用B机时,需要插串口线,再打开通讯软件,才能建立通讯.
若在打开软件之前没有断开A机的通讯,则B机无法与下位机通讯。
2)上位机程序和下位机程序不能更改。
3)主要由硬件电路来实现,大小可以和图上HUB2232Z相同即可。
4)2、3、5脚必须有,其余引脚可以随意增加或减少。

注明:请不要跟我描述需要手动操作选择的产品,市面上很多产品我们找过,都不符合要求。谢谢!

canspider 发表于 2014-9-30 22:01:36

这样说吧,上位机a和b完全相同
a长时间与下位机通讯,b偶尔通讯
当b通讯的时候a不能和下位机通,即使a正在和下位机通讯也必须被打断,接受b的数据,是不是这样?

如果答案是:是 那么a的协议进行到一半b插进来,是否会打乱下位机的节奏(这里根据你的答案又会有几种方案)。

如果答案是:否 那么切换器需要有识别协议和缓存的能力

太多细节没明确

GreyCloud 发表于 2014-9-30 22:12:31

如楼上所说,如果不怕打断。
根据楼主的描述我感觉可以这样,接法如你的图所示,在这个模块中加一个单片机,只要3个输入3个输出6个管脚,只做数据搬运,平时主机B不接时,主机A的TX电平直接搬运到从机的接收脚,从机的发送电平直接搬运到主机A,当主机B接上时就不理会A的通信,数据搬运到主机B上。这只是有一个很小很小的延时不会影响到串口的通信的。

liu672992381 发表于 2014-9-30 22:17:00

我的用户组只能允许我一小时回复10个评论,大家请见谅。

liu672992381 发表于 2014-9-30 22:18:24

我受限制了,一个小时只能回复10个评论,greycloud说的是对的,我说了这么多其实就是这个意思,不考虑打断,直接从硬件上实现切换。{:lol:}

foxpro2005 发表于 2014-9-30 23:37:37

其实想说:
方案1: 如果允许短时间延迟, 使用2片max232 + 1片支持三个串口的mcu(比如: stm32系列的), 是比较好的解决方案。
正常情况下, 对上位机A的数据进行接收、并缓冲, 同时进行转转发;
当有上位机B的数据穿插进来时, 对B的数据进行接收缓冲, 同时等一下会儿(下位机的超时时间)再向下位机转发B的数据, 让下位机产生接收A数据(如果它是按Modbus协议来的话)超时而结束,   接着再向下位机转发B的数据。然后继续接着干A上位机的活(转发被中断时缓冲的数据)。

方案2: 这样的前提是A上位机正在通信过程的被打断, 接收发B上位机的数据, 下位机不会出错, 那么可使用电子开关 4052, 4053之类的+ 一个一般的MCU, 使用MCU根据B上位机信号的状态来控制硬件电子开关 (RS232的信号电平要作为处理)

Kevin.U 发表于 2014-9-30 23:55:32

我认为关键应该在软件吧。

loveskangaroo 发表于 2014-10-1 00:33:13

foxpro2005 发表于 2014-9-30 23:37
其实想说:
方案1: 如果允许短时间延迟, 使用2片max232 + 1片支持三个串口的mcu(比如: stm32系列的),...

这个可以有

Firman 发表于 2014-10-1 00:45:19

做过232级联的,PCB板上放两个9Pin串口头,可做双上位机,也可做232级联,都串在一起相当485,试过十五级联都正常。
唯一缺点是232不能同时发送,碰到同时发送只能通过协义判定NG。

gamalot 发表于 2014-10-1 01:22:25

本帖最后由 gamalot 于 2014-10-1 01:35 编辑

如果像楼主说的不考虑两个上位机互相冲突打断的情况, 那很简单, 大半夜的电源底线电容就不画了, 大家应该都能看懂 {:lol:}

图有错误, DB9的23脚好像都有问题, 不统一, 困的不行了, 看个大概意思吧 {:mad:}

编辑原因:更正错误

gamalot 发表于 2014-9-30 21:50:29

图片呢? 明明显示上传100%完成了阿??? {:mad:}

tangnyzl 发表于 2014-10-1 07:16:20

查软件,曾经挂了二十个

liu672992381 发表于 2014-10-1 09:21:48

canspider 发表于 2014-9-30 22:01
这样说吧,上位机a和b完全相同
a长时间与下位机通讯,b偶尔通讯
当b通讯的时候a不能和下位机通,即使a正在 ...

这样说吧,上位机a和b完全相同
a长时间与下位机通讯,b偶尔通讯
当b通讯的时候a不能和下位机通,即使a正在和下位机通讯也必须被打断,接受b的数据,是不是这样?
是你说的这样,不怕打断。B的优先级高,可以直接打断。

liu672992381 发表于 2014-10-1 09:24:10

gamalot 发表于 2014-10-1 01:23
图片呢? 明明显示上传100%完成了阿???

等我做出来,看了效果后给你们莫元哈。不过非常感谢你这么晚还能坚持画个电路图。我也有一种方案,改造串口线的方法。

liu672992381 发表于 2014-10-1 09:28:17

GreyCloud 发表于 2014-9-30 22:12
如楼上所说,如果不怕打断。
根据楼主的描述我感觉可以这样,接法如你的图所示,在这个模块中加一个单片机 ...

其实不用这么复杂,改造A的串口线,再加一块电路板,当插上B机的串口线时,直接断开A机的2脚(TX)就可以实现了。

liu672992381 发表于 2014-10-1 09:31:51

loveskangaroo 发表于 2014-10-1 00:33
这个可以有

其实我觉得,只要做一个检测电路,然后判断是那个上位机接入,再做自动切换的功能即可了。应该用不到MCU这么复杂,

liu672992381 发表于 2014-10-1 09:38:45

Firman 发表于 2014-10-1 00:45
做过232级联的,PCB板上放两个9Pin串口头,可做双上位机,也可做232级联,都串在一起相当485,试过十五级联 ...

其实我也不是同时发送,一前一后。始终是一台上位机和一台下位机的通讯。能否给我看看你的设计。

gwnpeter 发表于 2014-10-1 10:41:51

用mcu的客官想多了,11楼的电路基本可以实现,但是没有优先级,并且下位机发送的数据同时送往两台上位机了。使用2选1逻辑电路,加上rc延时就可以,232<--->485电路就是用的rc延时的。待会上个草图吧

gwnpeter 发表于 2014-10-1 11:11:31

本帖最后由 gwnpeter 于 2014-10-1 11:16 编辑

gwnpeter 发表于 2014-10-1 10:41
用mcu的客官想多了,11楼的电路基本可以实现,但是没有优先级,并且下位机发送的数据同时送往两台上位机了 ...


来了


分析
空闲状态:
        TxB RxB = 1                hc257的sel=1,选择a通道

B通道发送数据:
        TxB = 0(UART起始位)        HC257的sel=0,选择b通道
        因为RC的存在,会延时一段时间保持HC257的sel=0,选择b通道
        只要在延时的时间内,RxB或者TxB存在低电平,重新开始延时,保持b通道的选择
        如果在延时的时间内没有数据通信,返回空闲状态

这个是ttl电平的,232接口自己改

gwnpeter 发表于 2014-10-1 11:13:46

gwnpeter 发表于 2014-10-1 11:11
来了




需要确定好rc参数,这个需要计算和实验得出结果

gwnpeter 发表于 2014-10-1 13:08:17

用hc257,还是hc74忘记了,去查查资料吧

liu672992381 发表于 2014-10-2 12:28:48

我先看看,用的手机打字不方便

liu672992381 发表于 2014-10-10 16:09:20

我用了这个图纸,现在测试的差不多了。就看使用的怎么样了。
页: [1]
查看完整版本: 求设计一个自动切换串口通讯的硬件电路(请看完要求)