【问题标题】:Receiving data from multiple devices using parallel wired RS232使用并行有线 RS232 从多个设备接收数据
【发布时间】:2017-04-19 01:38:58
【问题描述】:

我目前正在开发一个小型应用程序,用于监控我们的太阳能集热器产生的功率/电流。

阵列连接到 3 个逆变器。每台逆变器都有一个RS232接口,每10秒传输一条信息(当前状态)。

由于我想使用只有一个串行端口的设备进行监控,我需要想出一种能够并行读取所有逆变器数据的方法。 我不需要向其中一个逆变器发送任何东西!

是否可以将 3 根 RS232 线并行连接到一个串行端口?由于每个逆变器仅传输 64Byte / 10 秒并以换行符结尾,因此不太可能发生冲突,因此我可以检查可变的行长度以检测冲突。

【问题讨论】:

  • EIA/RS-232 是点对点通信链路。使用 EIA/RS-485 进行多点连接。除了不正确的电气连接外,将三个输出输入到一个输入中会导致无法确定发送者,除非该信息嵌入到数据中。
  • 您在阅读端使用哪种设备?为什么不能用一个USB->串口集线器,用一个USB口连接4个串口?
  • 这个问题似乎是题外话,因为它是关于硬件

标签: serial-port


【解决方案1】:

我有点对世界末日和古怪的答案嗤之以鼻,这些答案经常出现在 stackoverflow 上......

但无论如何,在过去的几年里,我使用了使用二极管的并联 RS-232 传输线,它可以在不太可能发生碰撞的情况下正常工作。在一个特定的应用程序中,我使用了这种技术,有两个输入终端,用户可以在其中键入简单的命令来控制系统(一个专门的安全系统),两个人不太可能同时尝试从两个不同的终端。令人惊讶的是,我当时测试的大多数 RS-232A 接收器的电压电平都没有问题,并且它们能够容忍由于简单地使用与 TXD 信号串联的二极管而产生的信号特性(无负电压)。但是,如果我不得不再次执行此操作,我可能会在 RXD 和电容之间添加一个简单的下拉电阻器和电容器接地,并在某种电荷泵配置或下拉到负握手信号中使用二极管以确保由于 RS-232 规范将 +3 到 -3v 定义为无效,因此“OR'd”输入信号变为真正的负数。

在任何情况下,我都建议不要使用这种技术,除非是在非常具体、有限和非关键任务的情况下,并且不会在您有多个设备以编程的间隔发送信息的情况下使用它,例如这种情况OP 或有软件握手的地方。

In 可以是解决串行输入端口不足问题的简单方法,但只能在非常有限的一组环境中使用。

【讨论】:

    【解决方案2】:

    ,您不应该将 3 个串行输出端口并联。如果这样做,您可能会损坏逆变器的 RS232 输出电路。

    你有 3 个 RS232 输出,所以你需要 3 个 RS232 输入,那么你可以按照你喜欢的方式管理这 3 个输入:也许你可以缓冲每个输入的数据,然后在单个 RS232 输出上重新输出数据,连接到您的监控设备....但您应该在数据流中添加一些代码以区分来自 3 个逆变器的数据。

    也许您可以使用某种 IC 来为您完成这项工作,我不确定,但也许已经存在一些在单个 RS232 输出上多路复用多个 RS232 输入的 IC。 试试这个搜索:rs232 port input multiplexer on Google

    或者,如果监控设备是 Window 计算机,您可以使用 3 个串口转 USB 转换器:这将在您的计算机上创建 3 个虚拟 COM 端口,您可以使用任何软件从中读取数据。

    更新
    关于使用二极管保护输出电路以阻止重新进入电流的假设,我认为它不会起作用...
    自从上次我在低级别使用 RS232 链路(所以也许我错了)已经过去了很多年,但我认为 RS232 输入和输出端口之间正在进行某种握手(使用速度,奇偶校验,停止位...)。
    每个 RS232 端口都有用于数据和传输控制的输入和输出信号,因此您的多个 RS232 输出确实有一些输入信号,而您的单个 RS232 输入确实有一些输出。
    这意味着您的输入监控 RS323 端口将尝试同时与 3 个 RS323 端口握手......并且 3 个 RS232 端口可能会同时响应......所以我认为它不会去工作。

    除此之外,如果您在输出端放置二极管,您将失去 0.7v,我不记得 RS232 信号电平的容差,但也许 0.7v 可能是相关的。

    【讨论】:

    • 好的,缓冲解决方案听起来不错,但是如何通过使用二极管阻止电流流入设备来保护逆变器的输出电路?
    • 感谢您的回复!我没有使用任何握手机制。我在树莓派上使用 UART 引脚,仅将 GND、VCC、TX、RX 连接到此逻辑电平转换器ebay.co.uk/itm/HQ-RS232-3-3V-logic-converter-MAX3232-/…,因此不使用流控制引脚。无论如何 - 如果我将二极管放在逆变器的 TX 上并测试它是否按预期工作,我会不会有破坏它们的风险?你是怎么想出0.7V的?谢谢!
    • 0.7V 是二极管的压降,它不会影响 EIA/RS-232 信号,除非它处于低端,例如接近+/- 4V。真正的担忧应该是可能损坏 RaspberryPi 上的接收器。底线是您应该放弃将多条 Tx 线连接到 Rx 输入的任何想法。它(有线或)不是有效的 EIA/RS-232 连接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-09
    • 1970-01-01
    相关资源
    最近更新 更多