【问题标题】:Serial RS485 / RS232 communication with TDK-Lambda ZUP very slow only in Linux仅在 Linux 中与 TDK-Lambda ZUP 的串行 RS485 / RS232 通信非常慢
【发布时间】:2023-03-26 03:24:01
【问题描述】:

在我们的实验中,我们使用许多 ZUP 电源为电子设备供电。 确切的型号是 TDK-Lambda ZUP80-2.5 和 ZUP6-33。它们由运行 Linux 的服务器远程控制和监控。

问题是串行通信很慢。慢是指 ZUP 波特率可以设置在 300 到 9600 之间。要与 PSU(几乎)可靠地通信,我必须将波特率设置为最低 300 bps。

起初,我怀疑是硬件或接线问题,但似乎没有任何改善。然后我用official proprietary Windows application(使用完全相同的硬件设置)测试了PSU,我可以以9600波特率毫无问题地进行通信。所以问题无疑出在Linux驱动或我的代码中。

ZUP 可以使用 RS232 或 RS485 与 PC 通信。我对它们都进行了尝试,结果相同。我尝试使用便宜的 RS485-USB 适配器、台式机的 RS232 串口和专业级的 PCIe RS485 卡,均未成功。

作为一种编程语言,我使用的是 Python。我尝试使用pyvisapy 和一个名为Pyrame 的科学软件,它基本上提供了serial Python 模块的包装器。我应该尝试使用其他语言吗?

这是一个最小的示例,展示我如何在 pyvisapy 中访问该单元:

#!/usr/bin/env python2
# -*- coding: utf-8 -*-

import visa
from visa import constants
rm = visa.ResourceManager('@py')
inst = rm.open_resource('ASRL/dev/ttyUSB0::INSTR')
inst.baud_rate = 9600 # 300
inst.write_termination = ''
inst.read_termination = '\r\n'
inst.set_visa_attribute(constants.VI_ATTR_ASRL_FLOW_CNTRL, constants.VI_ASRL_FLOW_XON_XOFF)
inst.stop_bits = constants.StopBits.one
inst.parity = constants.Parity.none
inst.data_bits = 8

print(inst.write(":ADR01;"))
print(inst.write(":REV?;"))
print(inst.read())

在 Linux 中,上面的代码在 300 bps 下工作,但在 9600 bps 下不工作(随着我提高波特率,情况逐渐恶化)。即使使用 300 bps,有时在发送或接收长命令时也会出现超时或数据损坏错误。

PS 我们的 DAQ 仅在 Linux 中运行,因此不能使用 Windows。

【问题讨论】:

  • 已知某些版本或 pyserial 存在软件流控制问题。您是否尝试过 minicom 或任何其他终端实用程序?您可能不需要它,但在manual 的第 54 页上有分步指南。你可以试试看set_visa_attribute的输出是什么,应该是success=0,见here
  • 感谢您的建议。我刚刚尝试使用 minicom,我可以以最高波特率进行通信。正如你所说,我认为罪魁祸首是pyserial。我已经尝试过这个没有使用pyserial的python库arduino-serial,它也可以。

标签: python linux serial-port rs485


【解决方案1】:

正如用户 Marcos G. 所指出的,这原来是 Python 本身的问题。正如我在 cmets 中所写的那样,我尝试使用 pyserialarduino-serial 编写驱动程序。尽管最初取得了一些部分成功,但事实证明他们俩都或多或少存在相同的问题。 所以我使用libserialport C library 用C++ 完全重写了驱动程序。现在我几乎可以全速与 ZUP 通信了。

【讨论】:

    猜你喜欢
    • 2017-08-13
    • 1970-01-01
    • 1970-01-01
    • 2014-12-15
    • 2011-11-15
    • 2016-01-06
    • 2015-07-03
    • 1970-01-01
    • 2013-12-12
    相关资源
    最近更新 更多