liu672992381 发表于 2014-9-30 19:20:01

讨论RS232串口一分为二同时接两台上位机问题(本帖随时关...

本帖最后由 liu672992381 于 2014-9-30 21:11 编辑

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)有无办法实现智能分配,主要是从硬件考虑;
2)这种设备的可靠性如何;
3)有无更好办法实现,主要是实现的电路设计。

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

特别提醒我的用户组限制了我一个小时只能回复10次,你们先评论我机会就回复你们。谢谢!

liu672992381 发表于 2014-9-30 19:21:55

请不要跟我描述需要手动操作选择的产品,市面上很多我们找过。

Appcat 发表于 2014-9-30 19:33:23

没有协议来保证,鬼知道下位机想和谁通信?怎么智能分配?

lqluocn 发表于 2014-9-30 19:36:48

看样子,下位机变成了主机,上位机变成了从机

ggchao 发表于 2014-9-30 19:38:46

收和发都连多个是不行的,A发B收,则 这条线上可以再连接其他接收的,只是不能再连接其他发送的,至于解决方案,可以换一个思路吧,我没想法

babysnail 发表于 2014-9-30 19:57:54

硬件或关系, 软件只要是分时的就行了。 不会同一时间请求就不会冲突。

liu672992381 发表于 2014-9-30 20:09:21

Appcat 发表于 2014-9-30 19:33
没有协议来保证,鬼知道下位机想和谁通信?怎么智能分配?

协议可以不用去管,现在都是使用上位机程序来通讯。而且现场两台上位机安装的软件也是一样的,该软件是西门子设计的,不能修改。

Xujuango 发表于 2014-9-30 20:12:02

下位机带局号吗?不带的话,就没戏了。

liu672992381 发表于 2014-9-30 20:17:25

babysnail 发表于 2014-9-30 19:57
硬件或关系, 软件只要是分时的就行了。 不会同一时间请求就不会冲突。

硬件或关系
我同意从硬件上解决,有一种可行性。比如串口使用的是2、3、5脚,其余引脚不使用,那么可以从这几个引脚下手,这些引脚都是有电位的,只需判断是那个引脚接入,然后断开相应上位机,就可以实现自动选择通讯的功能。
不过没有真正的实施过,不敢下定论。可靠性也没有验证。
软件只要是分时的就行了。 不会同一时间请求就不会冲突。
软件是西门子设计的,如果不对通讯数据进行破解,应该无法分时,冲突还会存在。

liu672992381 发表于 2014-9-30 20:20:23

lqluocn 发表于 2014-9-30 19:36
看样子,下位机变成了主机,上位机变成了从机

上位机还是上位机。其实是数据窃取,增加一个监听的功能,只不过在监听之前要建立通讯。建立通讯后数据就可以下载。

liu672992381 发表于 2014-9-30 20:25:32

Xujuango 发表于 2014-9-30 20:12
下位机带局号吗?不带的话,就没戏了。

下位机带局号吗?
请问局号是不是设备号,或者一条数据结束符。
其实办法还是有的,只要了解现场,知道问题的根本,很快就可以解决。卫星都升天了,这点小玩意不难。

babysnail 发表于 2014-9-30 20:26:02

硬件和软件要配合的,单硬件是不行。硬件要改成232双pc不冲突。

上位机是自己学的吗?   

如上位机是自己的,可以试一下这个思路,象can有碰撞仲裁,这里呢就用主机来处理,发一个指令,有接收应答且检验正确则是本机连线,否则是它机连线,则延时一个随机数,再重发。

Xujuango 发表于 2014-9-30 20:34:25

liu672992381 发表于 2014-9-30 20:25
下位机带局号吗?
请问局号是不是设备号,或者一条数据结束符。
其实办法还是有的,只要了解现场,知道问 ...

理解错了。应该是给两台PC分配 局号,也就是 ID号。在 下位机回复的命令里带上 局号就可以。当然了,两个PC端的 RS-232-TX需要做处理,并联。

liu672992381 发表于 2014-9-30 20:35:16

ggchao 发表于 2014-9-30 19:38
收和发都连多个是不行的,A发B收,则 这条线上可以再连接其他接收的,只是不能再连接其他发送的,至于解决 ...

收和发都连多个是不行的,A发B收,则 这条线上可以再连接其他接收的,
1个设备发送数据后,多个设备可以同时接收,并且是没有问题的。多个设备不能同时发送。

liu672992381 发表于 2014-9-30 20:40:10

Xujuango 发表于 2014-9-30 20:34
理解错了。应该是给两台PC分配 局号,也就是 ID号。在 下位机回复的命令里带上 局号就可以。当然了,两个 ...

增加ID号,没有试验过,可能不会考虑从这方面解决。

liu672992381 发表于 2014-9-30 20:47:40

babysnail 发表于 2014-9-30 20:26
硬件和软件要配合的,单硬件是不行。硬件要改成232双pc不冲突。

上位机是自己学的吗?   


硬件和软件要配合的,单硬件是不行。硬件要改成232双pc不冲突。
目前要求不高,基本要求是:一台上位机一直与下位机通讯,在有需要的前提下才连接另外一台上位机,同时可以切断正在通讯的上位机。可以理解为就是一台上位机和一台下位机通讯。
上位机是自己学的吗?
上位机不是自己写的,都是现成的产品。

babysnail 发表于 2014-9-30 20:50:44

liu672992381 发表于 2014-9-30 20:47
硬件和软件要配合的,单硬件是不行。硬件要改成232双pc不冲突。
目前要求不高,基本要求是:一台上位机一 ...

那还用考虑那么多吗? 都不同时用了,两路232 转 ttl 两个二极管或一下 转232,完了。

domt 发表于 2014-9-30 20:51:46

直接485不就得了

liu672992381 发表于 2014-9-30 20:53:45

domt 发表于 2014-9-30 20:51
直接485不就得了

直接485不就得了
都是西门子的设备,无法修改上位机和下位机程序。

liu672992381 发表于 2014-9-30 20:58:17

babysnail 发表于 2014-9-30 20:50
那还用考虑那么多吗? 都不同时用了,两路232 转 ttl 两个二极管或一下 转232,完了。 ...

那还用考虑那么多吗? 都不同时用了,两路232 转 ttl 两个二极管或一下 转232,完了
babysnail这样设计可靠吗,感觉用分立元件来把COMS电平转换为TTL电平的模拟电路自己设计不可靠,数字电路还好说。二极管单向导通,两个二极管怎么能够实现或的关系?求教。

大风起兮 发表于 2014-9-30 21:00:04

想要干什么

y595906642 发表于 2014-9-30 21:03:34

如果上位机有优先级,可以用硬件电路解决这个问题

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

大风起兮 发表于 2014-9-30 21:00
想要干什么

我们要做一个智能分配器,其目的是实现一台下位可以自动选择与两台上位机中的一台上位机通讯(平时只与一台上位机通讯)。说明下位机的程序无法修改,通讯方式为RS232也无法修改。

大风起兮 发表于 2014-9-30 21:11:02

liu672992381 发表于 2014-9-30 21:04
我们要做一个智能分配器,其目的是实现一台下位可以自动选择与两台上位机中的一台上位机通讯(平时只与一 ...

通过单片机 进行分配上位机发送数据+地址分配器内的单片机通过地址把数据分配给下位机,内容不包含地址信号

liu672992381 发表于 2014-9-30 21:16:19

大风起兮 发表于 2014-9-30 21:11
通过单片机 进行分配上位机发送数据+地址分配器内的单片机通过地址把数据分配给下位机,内容不包含地 ...

是不是过于复杂了,这样的话,通讯波特率要求高的话,会有误差。

canspider 发表于 2014-9-30 21:17:18

太容易了
只要人知道什么时候和a通
什么时候和b通,那么做一个转接器就行了
现在问题来了
楼主,你到是说说切换通讯的时机和条件啊
你别和我说就算找个人在串口线盯着,也不知道什么时候切换

liu672992381 发表于 2014-9-30 21:17:41

y595906642 发表于 2014-9-30 21:03
如果上位机有优先级,可以用硬件电路解决这个问题

上位机是有优先级的,现在正在考虑用什么电路能够实现。

canspider 发表于 2014-9-30 21:20:32

硬件上用 选路,线与都行
你的切换条件是什么

liu672992381 发表于 2014-9-30 21:21:38

用户受限制1小时只能回复10次。{:funk:}

liu672992381 发表于 2014-9-30 21:26:27

一台上位机是一直与下位机通讯的,一台是在有需要的时候才与下位机通讯,同时切断正在通讯的上位。
现在就是想用一个简单可靠的硬件电路来实现这个功能。

canspider 发表于 2014-9-30 21:36:45

liu672992381 发表于 2014-9-30 21:26
一台上位机是一直与下位机通讯的,一台是在有需要的时候才与下位机通讯,同时切断正在通讯的上位。
现在就 ...

纯硬件的比较难搞,搞个cpld吧
两边都在发,听谁的呢

如果a,b电脑可以动手脚
a发的时候把b给禁了,硬件就简单

zhq0571 发表于 2014-9-30 21:38:19

有需要的时候才与下位机通讯    如何判断?

buxiaohui1108 发表于 2014-9-30 21:46:04

一台上位机是一直与下位机通讯的,一台是在有需要的时候才与下位机通讯,同时切断正在通讯的上位。请问什么时候切换???切换的条件是什么,不然怎么设计电路??

dzlt2012 发表于 2014-9-30 21:50:18

下位机如何决定与哪一台上位机通讯?

liu672992381 发表于 2014-9-30 21:53:06

canspider 发表于 2014-9-30 21:20
硬件上用 选路,线与都行
你的切换条件是什么

一台上位机是一直与下位机通讯的,一台是在有需要的时候才与下位机通讯,同时切断正在通讯的上位。
现在就是想用一个简单可靠的硬件电路来实现这个功能。
我已经发了悬赏的帖子,悬赏了50莫元来请大神设计,看看怎么设计更好。帖子名称:求设计一个自动切换串口通讯的硬件电路(请看完要求)

liu672992381 发表于 2014-9-30 21:55:30

buxiaohui1108 发表于 2014-9-30 21:46
一台上位机是一直与下位机通讯的,一台是在有需要的时候才与下位机通讯,同时切断正在通讯的上位。请问什么 ...

另外一台是直接插串口线,然后打开软件,开始通讯。终于又有10次回复评论的机会了。久等了。

liu672992381 发表于 2014-9-30 21:57:25

dzlt2012 发表于 2014-9-30 21:50
下位机如何决定与哪一台上位机通讯?

下位机无法决定与那一台上位机通讯。简单的说就是那一台上位机先打开上位机通讯软件,那一台上位机就和下位机通讯。

fanfanrenfan 发表于 2014-9-30 21:57:28

找个有三个串口的单片机,就一切都搞定了。

canspider 发表于 2014-9-30 21:57:43

这样说吧,上位机a和b完全相同
a长时间与下位机通讯,b偶尔通讯
当b通讯的时候a不能和下位机通,即使a正在和下位机通讯也不行(需要楼主确认)

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

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

下位机,上位机a,b都不能动

楼主,请先明确你的需求,描述清楚你的问题
不然谁知道你要干嘛

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

fanfanrenfan 发表于 2014-9-30 21:57
找个有三个串口的单片机,就一切都搞定了。

好建议,STC单片机?5V电源没地方取。要设计肯定得想好。

babysnail 发表于 2014-9-30 22:02:07

liu672992381 发表于 2014-9-30 20:58
那还用考虑那么多吗? 都不同时用了,两路232 转 ttl 两个二极管或一下 转232,完了
babysnail这样设计可 ...

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

canspider 发表于 2014-9-30 21:36
纯硬件的比较难搞,搞个cpld吧
两边都在发,听谁的呢



为什么不从串口线上动手脚,自制一根串口线。
切换的条件是:在有需要的时候,另外一台上位机的串口线插上后,打开软件,才开始通讯。

tenx 发表于 2014-9-30 22:07:19

LZ估计是不用考虑协议被打断的,只要一个能用RS232信号线来控制TX和RX的方向的电路

buxiaohui1108 发表于 2014-9-30 22:07:50

电源可以从串口窃电。

liu672992381 发表于 2014-9-30 22:13:06

babysnail 发表于 2014-9-30 22:02


你是用了3个232的芯片,二极管我看了是或的关系。一个下位机发送两个上位机同时接收,两个上位机的发送短路,想法很不错,需要试验一下。谢谢!

babysnail 发表于 2014-9-30 22:17:07

liu672992381 发表于 2014-9-30 22:13
你是用了3个232的芯片,二极管我看了是或的关系。一个下位机发送两个上位机同时接收,两个上位机的发送短 ...

不考虑隔离,两个ic就够了,一个ic有两路。

john78 发表于 2014-9-30 22:21:09

如果是半双工,都转成485,两个上位机令牌

liu672992381 发表于 2014-9-30 22:29:38

babysnail 发表于 2014-9-30 22:17
不考虑隔离,两个ic就够了,一个ic有两路。

有道理,值得一试。

liu672992381 发表于 2014-9-30 22:40:42

john78 发表于 2014-9-30 22:21
如果是半双工,都转成485,两个上位机令牌

上位机和下位机软件无法修改

wiser803 发表于 2014-10-1 12:50:40

对LZ 的问题梳理了下,并加入几个需求及至下述过程:
1. 主机分别分为主机A、主机B。其中,主机A与从机长期正常通讯,此时主机B只做侦听。当有特殊处理时,才切换为主机B与从机进行通讯,此时主机A被弃之不用。上述特殊处理权,归主机B掌控,包括在线重新切回主机A与从机通讯状态。
2. 切换主机动作,只通过切换主机的输出端TX来实现与从机通讯,对主机的输入端RX不作切换。
根据上述过程描述,切换主机动作控制权由主机B掌控,即只要利用主机B 的RS232通讯口中(除2、3、5脚外)一根未用的7脚RST输出0、1状态,控制硬件开关或逻辑接主机A、还是接主机B的输出端TX,就可以用较为简单的方法来实现硬件方案。
软件方案主要考虑,由于主机B掌控切换主机控制权,因此主机B必须通过侦听来判别主机A的整包信息的完整性(或在异常情况下由超时判断),才能进行主机切换。一般可以侦听、判别主机A的整包结束ASCII字符码,来作为可切换条件。

lovecxm 发表于 2014-10-1 13:28:51

协议支持即可,要不然谁知道哪个是哪个

caoxuedong 发表于 2014-10-1 14:04:24

一个关键的问题是,SIEMENS工业控制设备,是不是只用三线通讯,还是使用了别的信号线,你可以试着只用3根线的交叉线,连接两台机器,看是不是能够通讯。

so_so_so_so 发表于 2014-10-1 14:20:12

babysnail 发表于 2014-9-30 22:17
不考虑隔离,两个ic就够了,一个ic有两路。

babysnail原理可行,芯片供电如何解决,期待完整解决方案。

miaoxun206 发表于 2014-10-1 14:28:29

有意思的讨论,偶尔也会遇到这个想法,但设计时都用485了

dzlt2012 发表于 2014-10-1 16:56:54

liu672992381 发表于 2014-9-30 21:57
下位机无法决定与那一台上位机通讯。简单的说就是那一台上位机先打开上位机通讯软件,那一台上位机就和下 ...

如果不怕两个上位机同时发送数据引起问题的话,可以上位机的发送各通过一个二极管后并在一起。两个上位机的接收也并在一起,与下位机相连。这样当两上位机都发送数据时,通迅就会出错。

y595906642 发表于 2014-10-1 18:50:20

liu672992381 发表于 2014-9-30 21:17
上位机是有优先级的,现在正在考虑用什么电路能够实现。

那就容易的,不常用的电脑设定为高优先级的端口,就像你说的通过另外几个端口判断是否插入。
当高优先级电脑插入的时候,串口与高优先级电脑通信,这个用CPLD实现
平时只与低优先级的电脑通信,不算人工,光板子加调试五百以内能搞定。

liu672992381 发表于 2014-10-2 12:13:16

wiser803 发表于 2014-10-1 12:50
对LZ 的问题梳理了下,并加入几个需求及至下述过程:
1. 主机分别分为主机A、主机B。其中,主机A与从机长期 ...

谢谢您的总结,我用手机登陆无法做更详细的描述。其实a机通讯时,不怕打断。

liu672992381 发表于 2014-10-2 12:16:02

miaoxun206 发表于 2014-10-1 14:28
有意思的讨论,偶尔也会遇到这个想法,但设计时都用485了

我是想设计出可靠的产品,然后应用,之后将方案和剩下的产品可以邮寄给有需要的网友。

liu672992381 发表于 2014-10-2 12:19:44

y595906642 发表于 2014-10-1 18:50
那就容易的,不常用的电脑设定为高优先级的端口,就像你说的通过另外几个端口判断是否插入。
当高优先级 ...

感觉如果用cpld有点大材小用了。费用太高了,最好一两个芯片加外外围器件,加上板子。总共六七十元就搞定最好。

liu672992381 发表于 2014-10-2 12:22:07

dzlt2012 发表于 2014-10-1 16:56
如果不怕两个上位机同时发送数据引起问题的话,可以上位机的发送各通过一个二极管后并在一起。两个上位机 ...

就是害怕同时发送,同时发送会引起下位机死机,其实是通讯出错的保护。

dzlt2012 发表于 2014-10-3 16:05:19

liu672992381 发表于 2014-10-2 12:22
就是害怕同时发送,同时发送会引起下位机死机,其实是通讯出错的保护。 ...

哦,这就难办了

john78 发表于 2014-10-6 08:46:50

liu672992381 发表于 2014-9-30 22:40
上位机和下位机软件无法修改

上位机,动动文章,做虚拟串口,或类似设备过滤驱动。

bencsj1 发表于 2014-10-6 09:08:06

本帖最后由 bencsj1 于 2014-10-6 09:11 编辑

单片机做个中继,中继和上位机定个485协议,中继和下位机通信采用目前的通信,让中继通过硬件来识别2个下位机,2个上位机!就是接线的时候不能随便接了!

jyrpxj 发表于 2014-10-6 09:11:47

拆壳,上图。

0demon0 发表于 2014-10-6 09:27:21

liu672992381 发表于 2014-9-30 21:16
是不是过于复杂了,这样的话,通讯波特率要求高的话,会有误差。

232 那点波特率,撑死了加个晶振。

这个方案实现起来超简单的,一个星期就可以完成了。
我用过,至今没出现问题。

liu672992381 发表于 2014-10-9 09:43:12

0demon0 发表于 2014-10-6 09:27
232 那点波特率,撑死了加个晶振。

这个方案实现起来超简单的,一个星期就可以完成了。


来直接上图,看看你怎么做的。{:lol:}

liu672992381 发表于 2014-10-9 09:44:44

john78 发表于 2014-10-6 08:46
上位机,动动文章,做虚拟串口,或类似设备过滤驱动。

不从上位机动手,软件是别人的没法改

codeyear 发表于 2014-10-9 09:52:13

在软件流程上找找突破。或者外接一个硬件选通。

john78 发表于 2014-10-9 10:23:58

liu672992381 发表于 2014-10-9 09:44
不从上位机动手,软件是别人的没法改

是不需要修改上位,软件,但在上位的PC机中装一个虚拟驱动也不可以?如果这个也不行,那只能通过硬件拦截串口数据了。

0demon0 发表于 2014-10-9 10:45:36

liu672992381 发表于 2014-10-9 09:43
来直接上图,看看你怎么做的。

随便找片单片机,放在一路从和两路主中间,其余全部软件处理。

liu672992381 发表于 2014-10-9 14:25:44

john78 发表于 2014-10-9 10:23
是不需要修改上位,软件,但在上位的PC机中装一个虚拟驱动也不可以?如果这个也不行,那只能通过硬件拦截 ...

我准备选择模拟电子开关,比如CD4051

liu672992381 发表于 2014-10-9 14:26:50

0demon0 发表于 2014-10-9 10:45
随便找片单片机,放在一路从和两路主中间,其余全部软件处理。

那要加很多电路,不太适用。

liu672992381 发表于 2014-10-9 15:08:52

codeyear 发表于 2014-10-9 09:52
在软件流程上找找突破。或者外接一个硬件选通。

外接硬件选通了

0demon0 发表于 2014-10-9 16:11:23

liu672992381 发表于 2014-10-9 15:08
外接硬件选通了

你不是上位机和下位机的软硬件都动不了么?

怎么弄?选通以什么信号为准?{:3_49:}

panjun10 发表于 2014-10-9 16:17:21

下位机 2322net 上位机net2232 中间多了个232 net服务器 问题变成软问题了

shandong 发表于 2014-10-9 17:27:25

232全加422转接器,改成422总线

konger2012 发表于 2014-10-9 17:30:25

没用过这种,来看看

liu672992381 发表于 2014-10-9 19:08:39

shandong 发表于 2014-10-9 17:27
232全加422转接器,改成422总线

到了上位机,其本质还是232通讯

liu672992381 发表于 2014-10-9 19:09:39

konger2012 发表于 2014-10-9 17:30
没用过这种,来看看

明天我就开始焊接了,思路已经有了,准备了两套。

liu672992381 发表于 2014-10-9 19:13:52

0demon0 发表于 2014-10-9 16:11
你不是上位机和下位机的软硬件都动不了么?

怎么弄?选通以什么信号为准?...

基本思路如下:
用一台上位机的串口4脚,取信号控制另外一台上位机的2、3或者5脚,另外的一台上位机只使用2、3、5三个引脚。
意思就是一台上位机串口线有9根线,另外一台上位机的2、3或者5脚被控制,这台上位机只用2、3、5三个应交。

0demon0 发表于 2014-10-9 20:56:42

liu672992381 发表于 2014-10-9 19:13
基本思路如下:
用一台上位机的串口4脚,取信号控制另外一台上位机的2、3或者5脚,另外的一台上位机只使 ...

不明觉厉{:3_49:}

liu672992381 发表于 2014-10-10 16:00:22

直接上图已经调试一半,问题不大,就是电源不好解决。
页: [1]
查看完整版本: 讨论RS232串口一分为二同时接两台上位机问题(本帖随时关...