带宽控制
捕获的图像在被传感器完全读出前,就可以通过网络以封包的方式进行图像数据传输。这样一来可以将图像传输延迟的情形降到最低。然而,如果同时传输过多的数据,则很快地就会超出GigE 网络的最大宽带限制。
而且这种情况在多相机设置中的影响最大。如果必须重复请求数据,则会造成数据损失以及传输时间的增加。使用GigE Vision Standard 可以透过设置数据传输的参数来避免此种情形发生。透过使用IDS GigE Vision 系列相机的拓展设置轻松管理可用的带宽。
背景
GigE 视觉相機的數據是透過一連串的數據封包來傳輸。除了有效載荷數據外, 每個封包也包含了Header以及and 校验和数据。根據 MTU (最大數據傳輸單位) 設定, 用戶的數據量跟封包大小 (關鍵字: 巨型框架) 可能會有所不同。兩個封包間有一個可以調整的延遲 (延迟): "包间延迟 (封包區間延遲)"。如果信息封包沒有正確的被傳送, 傳輸層 (轻轻) 可以使用re-发送機制來要求再次傳送丟失的訊息封包。數據重新請求的可能性取決於使用的傳輸層這三個組件共同決定了相機圖像的完整傳輸時間。
为了减轻多相机设置中的网络负荷或是减轻处理系统,降低信息发送设备端的网络宽带是必要的。 GigE Vision standard中的封包区间延迟(Inter-packet delays) 可以透过暂时停止传输来防止宽带瓶颈。 由于影像信息的传输速度降低并且降低了信息的传输量所造成的封包延迟传输会造成整体传输时间的增加! 由于传输时间的增加,相对的最大帧率将会被降低 (Acquisition Framerate Limit)。
GigE 视觉封包區間延遲 (包间延迟) 可以將個別的相機信息輸出各自做設定。一個適當的信息傳輸延遲可以有效的防範相機對傳輸接口造成超荷。
此使用技巧仅限于IDS GigE Vision 韧体宽带管理的可能性。 数据流量的设置和监视取决于使用的传输层 (GenTL)。
标准设定
GenICam SFNC (Standard Feature Naming Convention) 已經對控制數據輸出做了兩個標準定義。
- GevSCPD
- DeviceLinkThroughputLimit
封包区间延迟 (参考 GevSCPD - Stream Channel Packet Delay) 可以用来设定在Stream channel 中两个封包间的延迟时间(在GigE Vision timestamp counter )。 这样一来可以增加信息传输时间并且降低宽带。 在封包之间选择使用适当的延迟并不容易,并且还要同时控制数据辆,使种方式并不容易使用。
DeviceLinkThroughputLimit 可以限制從數據輸出裝置端所輸出的信息量寬帶最大的傳輸量可以用每秒/字节來做設定。在stream 信道包之間的相應延遲倍計算用來當作GevSCPD 數值。以秒為單位的Bytes 允許對數據吞吐量進行精確並且直觀的控制。
IDS 扩充功能增加了清晰度
IDS 在GigE 视觉韌體firmware (版本1.3 或更高) 中實現了兩項附加功能, 可以提供更多的寬帶管理概覽。
- DeviceLinkCalculatedThroughput
- DeviceLinkAcquisitionFrameRateLimit
通过输入吞吐量限制 (DeviceLinkThroughputLimit),相机韧体会计算所需要的数据封包延迟 (GevSCPD) 以及在目前的限制下最大可能达到的帧速 ( DeviceLinkAcquisitionFrameRateRateLimit)。
另外,经过计算的吞吐量 (DeviceLinkCalculatedThroughput) 可以提供装置如果要达到理论可达成的宽带。 省去了每个相机非常耗时的计算。
新增的功能支持所有相容的GigE Vision 相機。我們用IDS Vision Cockpit 來示範。
限制數據吞吐量
如果你想在GigE Vision 应用中透过Gigabit Ethernet 来传输高带宽的信息,建议您参考新的IDS 相机特色, 带宽瓶颈可能在使用默认值时同时开启两台相机的时候就会造成。
开始连接相机时,先不要立即开始拍摄而是先调整相机设定。
在开启拍摄前,先确认计算出来的数据吞吐量设定,以及最高帧率,如果必要的画可以设置带宽限制。 如果想要看到概览,请先调整到Expert 等级的用户层级,并使用"Device Nodes" 来过滤出 "devicelink" 的参数设定列表。 下面经过搜寻筛选过的装置节点总览带有相机带宽直的参数。
在默认的情况下,相机会在没有限制数据吞吐量的情况下运行,而且会自动使用最大的120MBps 吞吐量限制。 在这个例子中的相机会产生一个数据吞吐量 (DeviceLinkCalculatedThroughput) 大约在 61 MBps ,而帧率在这个条件中可以达到 25 fps. 在无限制下,相机可以捕捉和传输每秒 46 帧 (DeviceLinkAcquisition-FrameRateLimit)。变更相机的参数会造成 “吞吐量” (DeviceLinkCalculatedThroughput) 跟最高帧率的变动 (DeviceLinkAcquisitionFrameRateLimit).
然而,如果透过使用 "DeviceLinkThroughputLimit"来限制数据吞吐量, 不论相机的设置或是所产生的数据量如何,相机都不会超过设定的数值。
在此范例中,如果数据吞吐量限制在 50 MBps ,而在相同相机设置条件下最大帧率则可能达到 20 fps。
由于计算得到的数据吞吐量持续超过60 MBps 的限制,相机无法再保持25fps的帧率。 数据溢出发生在相机的传输缓冲区中。 如果拍摄的图像暂时无法缓冲,相机会放弃图像。 实际传输速率等于计算的最大帧率 (21 fps)。
计算出的数据吞吐量越高,超出限制的吞吐量时,相机会丢弃更多的图像,不进行传输。
由于带宽限制,相机的图像传输会因为使用传输封包区间而延迟 (GevSCPD)!
帶寬限制的好處
通过设置适当的带宽限制,将 Gigabit Ethernet port (120 MBps) 可用的带宽分配给连接中的相机。 这样一来可以防止传输的瓶颈所造成的错误或是不完整图像。
你也可以替相机做不同的吞吐量设定限制来区分相机的优先级。
系统优化
即使在设置相机的数据吞吐量时也考虑了GigE带宽限制,高网络流量或其他系统相关的波动也可能会导致Gigabit 线路暂时出现瓶颈,可能还是会发生不完整的图像,或是其他传输错误。
GenTL-設置
根据所使用的GenTL,你有不同的选项来设定以及监控来优化数据传输。 下面列出了IDS GenTL 的一些事例功能:
- "流监视器" 通過 "缓冲区填充级别" 顯示傳輸緩衝器中有多少百分比被正確傳送。然後 "重新发送请求计数" 顯示緩衝器重新請求的使用狀況。
- 你也可以利用 "Loss Handling" 来控制要重新请求的数据辆。 这个功能在默认值中是被关闭的。
- "不完整" 不完整的圖像由 IDS 轻轻統計數量, 但仍然會被傳輸。用戶可以決定是否要採用這個圖像數據。
提供储备
为了避免在网络暂时性波动时产生的传输错误,建议在任何情况下都要提供储存空间。 在分配带宽时,保留10% 左右的资源做为缓冲空间。
关于设置网卡的注意事
- 我们建议将Receive Descriptors 设定为网卡设置中的最大值。
- 同時我們也建議在網卡中將 Jumbo Frames (also: Jumbo Packet, Large Packet, Large Frame) 調整到最大值。
请注意,相机与计算机之间的连接必须保持在最大,以确保传输可以顺利传送 jumbo packets(封包)。 更多相关的讯息,请参阅网卡制造商的说明。
总結
除了已经在带宽管理功能中定义的标准外,在IDS GigE Vision 的韧体中还实现了两个额外的餐数,以提供更好的覆盖范围。
IDS GigE 视觉相機使用帶寬限制, 不僅僅可以單獨限制數據輸出量, 同時也可以顯示相機現在的幀率以及計算出來的帶寬。利用這些附加相機參數還可以近一步優化相機的功能設置, 以保持穩定的帶寬限制。
通过这些方式可以对多相机配置进行优化,让系统可以在同一个Gigabit Ethernet 接口上运行,而不会超过最大带宽的限制。 可以避免导致图像传输错误的意外。