
要求: 我的 Windows 上運行一個軟體,它使用 RS232 連接埠與外部設備通訊。硬體接收PC發送的命令,並向PC回傳回應。當電腦和硬體之間使用普通電纜時,無需任何適配器,傳輸和接收即可完成,例如 50 毫秒。使用乙太網路轉 RS232 轉接器時,總通訊時間為 (50 + x) ms,延遲為 x ms。
網路上有很多產品,我瀏覽了一些產品資料表。有有關以太網和串行通信參數的信息,例如數據位、波特率、速度,但我無法找到延遲信息。
迄今 我使用適配器(最大波特率 230.4 kbps)來測試我的軟體,但我遇到了串行端口超時異常。
問題
這個延遲取決於什麼標準?
延遲取決於波特率嗎?
我應該在數據表中檢查什麼來確定(大約)延遲?
製造商是否提供延遲資訊?
答案1
這個延遲取決於什麼標準?
我猜緩衝、數據幀、傳輸、協定和超時是主要的。
正如其他評論者提到的,至少有協議翻譯延遲。您需要考慮端點和橋接器資料緩衝、重新編碼、協定開銷和傳輸時間。延遲將受到傳輸前是否緩衝整幀資料以及內部逾時的影響。這些可以在某些設備中進行配置。
它還取決於乙太網路協定是使用 UDP、TCP 還是自訂協定。這將取決於協議是否支援重傳以及是否添加額外的完整性或信令資訊。同樣,這些可以在某些設備中進行配置。如果不看的話,我猜低端設備會傾向於使用沒有任何完整性或重傳的UDP,並且傾向於緩衝完整的UDP 數據幀,並帶有一些內部超時,以便在數據流停止時發送部分幀。
延遲取決於波特率嗎?
這實際上取決於您測量的延遲時間。串列資料速率的差異可能會影響您的吞吐量比你的更顯著潛伏。是的,它確實會影響延遲,但請記住,在 9600bps 下,傳輸一個位元組大約需要 1 毫秒。
我應該在數據表中檢查什麼來確定(大約)延遲?
製造商是否提供延遲資訊?
工業應用的網橋有時確實提供有關延遲和/或吞吐量的資訊。例如一個這樣的產品頁面引用 2ms 的延遲。還有一些公司贊助的測試報告,例如這樣2003年競爭比較或者這份2002年的報告比較幾種設備的延遲。他們測試中的延遲範圍從幾毫秒到平均 861 毫秒不等。
不管怎樣,聽起來你的根本問題是串行埠超時而不是延遲問題。從你所說的來看,我初步懷疑是軟體或設定錯誤。在串行介面庫中通常指定多個逾時,例如位元組間時序、多位元組讀取時間和寫入時間。如果緩衝資料沒有足夠快地清空,也會出現緩衝區溢位錯誤。如您所知,您通常可以調整或停用序列用戶端中的每個逾時。
我首先要確定錯誤的根源。您還可以將速度調低至 9600,因為便宜的適配器並不總是在其額定最大值下表現良好。