PCIe-8431双线自动模式的MODBUS通信问题



硬件: Serial>>RS-485>>PCI-8431/8

问题:

当我使用PCIe-8431通过双线自动模式的MODBUS与外部仪器进行通信的时候,通信出现了问题。但是我可以使用一个第三方的MODBUS板卡来与这个仪器进行正常的通信。图1是在RS-485总线环境下用示波器捕获到的数据。


图 1.

MODBUS主设备输出的数据显示在左侧,而外部仪器的响应显示在右侧。我已经确认过我的连线和程序中写入的数据是正确的。从图1可以看到,来自主设备的数据看起来是一样的,除了一开始简短的突刺。那么,这有没有可能是两种情况下(使用PCIe-8431或者第三方板卡),数据看起来不一样的原因呢?



解答:

为了弄清这里发生了什么情况,我们首先回顾下双线自动模式的工作流程。

 

1.主机向通用异步收发传输器(UART) FIFO中写入数据。

2. UART发出数据终端就绪信号(DTR),同时发出数据。

3. FPGA根据UARTDTR信号,发出启用收发器信号。这里可以看出,在启用收发器和UART发出DTR信号之间有一个延迟。

 

2所示的是,PCIe-8431和第三方板卡之间输出信号的不同。



2

现在详细分析下数据中一开始的突刺,我们可以发现,在两种情况下,收发器被启用的时间稍有不同,更准确的说,第三方板卡在接收收发器输入前,就启用了收发器。这会导致收发器输出在一开始会被拉高一小段时间,然后再开始输出它的数据。

由于开始时间不一致,我们可以看到,在PCIe-8431收发器输出的过度是从0V-3.3V,而第三方板卡是从3.3V-3.3V的。外部仪器的接收器不能识别从03.3V的下降沿,所以也就不能识别开始位。

 

如果是这种情况,那么很有可能是外部仪器不具备自动防故障装置,或者在总线上没有偏置电阻。在图1中,我们可以看到空闲状态总是0V,并且处于不确定状态,因此可以确定总线上没有偏置电阻。为了解决这个问题,请在RS-485总线上加上偏置电阻,因为PCIe-8431\8\16上没有内置偏置电阻选项。偏执电阻的说明请参照这篇文档Serial Troubleshooting Wizard。请注意所有指定的偏置电阻和终端电阻都是必须的。

 



相关链接:
White Paper: RS-232, RS-422, RS-485 Serial Communication General Concepts
KnowledgeBase 4UQBGVOH: MODBUS LabVIEW Library 1.1 Installers
KnowledgeBase 17M6L0TI: What Are the Different Transceiver Modes on the NI RS-485 Serial Cards?

附件:





报告日期: 04/14/2010
最近更新: 10/09/2015
文档编号: 58DCICON