互聯(lián)網技術
責任編輯:delgedelge
2012-04-06
摘要:問題及解決串口服務器測試過程中,有時會出現(xiàn)TCP到RTU發(fā)送時數(shù)據(jù)包錯誤,不能正確地將TCP數(shù)據(jù)轉換為RTU數(shù)據(jù)。原因在于,測試過程中,Windows下的PC終端向Linux工控板發(fā)送數(shù)據(jù),但是Windows的實時性并不很好,不能及時地發(fā)送數(shù)據(jù),有時會出現(xiàn)一次發(fā)送兩包數(shù)據(jù)給串口服務器的現(xiàn)象;另外,工控板中Linux下的TCP/IP協(xié)議剪裁封裝不是很完
問題及解決
串口服務器測試過程中,有時會出現(xiàn)TCP到RTU發(fā)送時數(shù)據(jù)包錯誤,不能正確地將TCP數(shù)據(jù)轉換為RTU數(shù)據(jù)。
原因在于,測試過程中,Windows下的PC終端向Linux工控板發(fā)送數(shù)據(jù),但是Windows的實時性并不很好,不能及時地發(fā)送數(shù)據(jù),有時會出現(xiàn)一次發(fā)送兩包數(shù)據(jù)給串口服務器的現(xiàn)象;另外,工控板中Linux 下的TCP/IP協(xié)議剪裁封裝不是很完善,導致其接收處理數(shù)據(jù)的能力比較差。
當多幀數(shù)據(jù)同時到達時,串口服務器未能正確將后一幀數(shù)據(jù)發(fā)送出去,而把一幀數(shù)據(jù)分割到兩幀,導致數(shù)據(jù)幀錯誤。這就是發(fā)生上述數(shù)據(jù)完全錯誤的原因。這時,需要給串口服務器添加數(shù)據(jù)的分幀處理 功能,在接收到數(shù)據(jù)時,先判斷數(shù)據(jù)幀是否是有效數(shù)據(jù)幀,確保每次發(fā)送的數(shù)據(jù)都能是完整的一幀,不會出現(xiàn)數(shù)據(jù)幀錯位,而導致數(shù)據(jù)的完全錯誤。
本文小結
本文的目標是在以AT91RM9200芯片構建的Multibus-CPU開發(fā)板上實現(xiàn)串口服務器功能。該串口服務器應用Modbus相關協(xié)議,將傳統(tǒng)的以RS485/232串口通信設備接入工業(yè)以太網,實現(xiàn)上位機和設備之間的 信息交互。本串口服務器程序已經能夠在開發(fā)板上正確運行。
[1] [2] [3]