如何在波特率超过3Mbps的条件下使用NI的串行硬件?
硬件: Serial
问题: 是否可能在波特率超过3Mbps的条件下使用NI的串行硬件?
解答: 在某些条件下,一些RS-485/RS-422 的NI的串行产品可以在波特率超过3 MBd的条件下成功使用。
下面的板卡支持高达10 MBd的波特率:
支持的波特率:这些产品支持任意高达3 MBd的波特率并且精确度高达该波特率的1.3%。在超过3 MBd的情况下只能支持一些特定的波特率。这些指定的超过3 MBd的波特率可以用下面的公式来计算:
波特率= 400 / (m*n), 其中m是在4到16之间的整数,n是8到31之间的整数。表1列举出了这些指定的高于3 MBd的波特率:
Table 1: 支持的高于 3MBd的波特率 (MBd)
|
3.0075 |
3.3613 |
3.8462 |
4.4444 |
5.3333 |
7.1429 |
3.0303 |
3.4188 |
3.9216 |
4.5455 |
5.5556 |
7.2727 |
3.0769 |
3.4483 |
4.0000 |
4.7059 |
5.7143 |
7.4074 |
3.1250 |
3.4783 |
4.0404 |
4.7619 |
5.8824 |
7.6923 |
3.1746 |
3.5088 |
4.0816 |
4.9383 |
6.0606 |
8.0000 |
3.2000 |
3.5714 |
4.1667 |
5.0000 |
6.1538 |
8.3333 |
3.2258 |
3.6364 |
4.2105 |
5.1282 |
6.2500 |
8.8889 |
3.3058 |
3.7037 |
4.3478 |
5.1948 |
6.3492 |
9.0909 |
3.3333 |
3.8095 |
4.3956 |
5.2632 |
6.6667 |
10.0000 |
|
波特率误差: 如果你需要一个上面的表格中没有列举出的波特率,检查一下你期望的波特率与表格中最接近这个值的波特率之间的差值。将列举出的波特率与所连接设备支持的波特率进行比较验证通信是否可能。NI建议串行设备之间波特率的差值不超过2%。如果在通信中出现了帧误差,证明出现了波特率的差异。
避免超额误差:如果在波特率超过3 MBd的情况下没有使用流量控制,就可能会产生超额的误差。因此我们建议在高波特率条件下使用某些流量控制(CTS/RTS or Xon/Xoff)的方式。这将使你在以高特率的情况下与设备进行通信时不会出现超额误差或者数据丢失的现象。
预期吞吐量:理论的最大波特率的吞吐量可以通过下面的公式来计算:
最大吞吐量=端口数*波特率/每个字节的串行比特数
每个字节的串行比特数通常是10(1个起始位,8个数据位,没有校验位,1个停止位)。下面的几个因素会限制吞吐量小于最大值:
- 一次发送的字节数 - 由于监理一次到串行板卡的DMA传输需要花费很多的时间,因此如果一次性传输大量的字节数会提高吞吐量性能。如果一次性发送数千字节就会产生最好的性能。
- 流量控制会导致接收端要求数据不能再短时间内被发送 - 流量控制会避免超额误差的原因在于发送端停止了发送。当通信过程中发生了这些暂停的操作时,就会增加传输字节的时间从而导致更低的吞吐量。
除了上面的两个主要因素,其它因素比如系统参数、当前CPU负荷、操作系统、应用程序软件效率等也会影响吞吐量性能。
吞吐量特性:
Figure 1: Typical Throughput vs. Baud Rate of one PXIe-8431/16
在这个例子中每次测试的端口都被设置为相同的波特率,虽然也可以独立地进行设置。
如果应用中数据能够在短时间内迅速地传输,那么将不会受到流量控制的影响,并且是理想的使用NI串行设备的场合。如果应用中需要在刚好或者接近最大吞吐量的条件下进行大量地数据传输,那么流量控制会影响这个吞吐量。
开启更高波特率的支持:开启更高波特率的支持将允许你禁用NI串行驱动检查用户设定的波特率。
注意:这会导致驱动对所有的PCI/PXI/PCIe/PXIe板卡禁用这项检查即使某些板卡并不支持更高波特率或者会产生错误。
如何在windows系统中开启这项功能制定更高的波特率:
在windows中的HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NiSerP为
NiSerP注册键增加一个新值。这个值的名字需要被设定为
"OverrideMaxBaudRate",类型设为双字节,值为1。你还可以使用windows注册表文件
EnableOverrideMaxBaudRate.REG来增加这个注册值。设置完之后需要重启系统。
在任何情况下,你可以通过删除这个值,将值设为1或者使用
DisableOverrideMaxBaudRate.REG自动删除这个值来禁用使用更高波特率这个功能。
在labview RT上开启更高的波特率支持:
在RT终端的系统路径下的
NiSerial.dbs文件中增加一个新值。使用FTP将文件传输到上位机,在文件的系统部分增加
OverrideMaxBaudRate = 1,再使用FTP将文件传回终端。重启RT终端使修改设置生效。
相关链接:
附件: - EnableOverrideMaxBaudRate.REG - DisableOverrideMaxBaudRate.REG
报告日期: 04/21/2010
最近更新: 02/28/2015
文档编号: 58KEI82F