錯誤56:LabVIEW與網絡設備之間的通訊超時

更新 Jun 7, 2024

產品資訊

軟體

  • LabVIEW

問題敘述

  • 我正在嘗試使用LabVIEW中任何基於TCP / IP的聯網API在網絡設備之間進行通訊,但是VI超時並出現Error 56 – LabVIEW: The network operation exceeded the user-specified or system time limit。我該怎麼做才能解決這個問題?
  • 我試圖與使用我的電腦的終端網絡設備進行通訊,但收到錯誤56。但是,我可以在另一台電腦上成功運行相同的程式碼。爲什麽?

解決方案

此超時錯誤是由於TCP / IP功能配置不正確而引起的,並且只要接收到數據,通常就可以在不造成損坏的情況下將其清除。如果未接收到數據,則下面有幾個故障排除步驟來緩解此錯誤。
  • 確保產生錯誤的VI具有正確設置的超時值。例子:使用HTTP Client GET VI從慢速伺服器接收大型字串時,默認的10秒超時值可能不足。如果此超時值設置不正確或設置得太低,請嘗試提高超時值,以查看是否能夠成功查看通訊,同時保持在專案規格範圍內。
  • 如果使用的是使用TCP / IP的可重入VI ,請嘗試關閉可重入。可能發生競爭狀況,導致網絡在寫入或讀取時變得繁忙並超時
  • 超時錯誤是您的應用程式的預期行為。從TCP Read Standard接收數據時,TCP功能將在超時期間等待指定的位元組數。如果該函數未接收到完整的數字,它將返回收到的數據,並顯示錯誤56。有關清除錯誤的訊息,請參閱Clearing A Specific Error From the Error Cluster
  • 確保將網絡電纜正確連接到每個系統,或正確建立無線網絡連接。
  • 打開連接時,請使用IP地址而不是域名來檢查與域名伺服器(DNS)有關的問題。
  • 您也可以嘗試導航至Tools»Options»VI Server然後通過在底部選擇Add,在電腦名稱/存取字段中輸入*並確保選擇了Allow access,將*添加到電腦存取列表中。但是,這將授予所有電腦存取目標電腦的權限。
  • 嘗試使用ping指令存取有問題的網絡設備,以驗證設備是否仍在連接並且正在通訊。
  • 關閉電腦上安裝的所有防火牆和防毒軟體包,以確保沒有端口被阻擋。
  • 如果關閉防火牆不起作用,請嘗試在“Firewall Advanced Settings”中更改inbound規則。
    • 在防火牆高級設置中,LabVIEW默認有兩個inbound規則。一個阻擋公共網絡的TCP通訊,另一個阻擋公共網絡的UDP通訊。
    • 除了上一步之外,還應該創建一個自定義inbound規則,以強制防火牆接受所需的協議通訊。
  • 確保兩個設備都在同一子網中,並且具有相同的子網掩碼。請參閲Inconsistent IP Settings" When Connecting to Real-Time Target ”,以在NI MAX獲取有關配置NI網絡設備的更多訊息。
  • 檢查本地網絡流量過大是否減慢了網絡通訊速度,並導致傳輸花費的時間比預期的長。
  • 如果使用的是FTP VI,請檢查所使用的密碼是否包含不可打印的字元或空格。
  • 確保發送訊息的VI正在運行。
  • 如果通訊部分位於子VI中,請嘗試將其從子VI中取出,並查看其是否在子VI之外工作。
  • 嘗試使用LabVIEW Example Finder 中範例中的“ Simple TCP.lvproj”。
  • 如果通過迴圈重複讀取和/或寫入,請嘗試在迴圈中插入Wait功能(大約200毫秒)。

 

    如果使用RT控制器VI:

    • 確保連接至VI的MAC地址正確且格式正確。確保您的字串控件或常數ID以十六進制格式顯示其數據。例如:0080 2F0A 14FF。如果您的字串控件不是十六進制格式,請右鍵單擊它,然後選擇“Hex Display”

    如果在Open Suse 11.1上通過LabVIEW for Linux使用FTP Put File 或TCP Wait On Listener VIs:

    • 將FTP Put File VI配置為使用被動模式進行FTP傳輸。

    使用Packet Sniffing進行故障排除:

    如果上述步驟沒有幫助,請使用packet sniffing 程式查看數據是否正在通過網絡發送。名為Wireshark的第三方工具可以幫助您查看數據是否正在到達。如果沒有數據到達,並且您看到此錯誤,則說明發送數據的設備或網絡存在問題。如果數據到達Wireshark,但您仍然看到此錯誤,則很可能是防火牆問題或TCP功能格式錯誤。 Wireshark可從Wireshark獲得 。您可以將Capture Filters 與Wireshark一起使用,以幫助隔離僅進出某個IP地址的數據包。

    此外,如果數據包確實成功發送到網絡,但終端設備沒有響應,則可能是終端設備的網絡適配器有故障。

    相關資訊

    錯誤56是由LabVIEW程式碼在用戶定義的時限內未收到網絡響應引起的。此錯誤是一般的超時錯誤,可能是許多不同因素導致的。錯誤56通常是Error 66 - LabVIEW: The network connection was closed by the peer​ 的結果導致VI等待直到伺服器達到超時限制的響應,然後關閉連接。