楊立新
【摘要】 數據傳輸能力是直接影響在線檢測系統實時性的一個重要因素,印刷圖像在線檢測系統必須滿足對高速大量的圖像數據的實時處理要求和系統管理功能。
【關鍵詞】 圖像數據 數據傳輸 TCP/IP
在印刷圖像在線檢測系統中,為了提高系統圖像處理運算能力,同時實現對系統的有效管理,通常采用將運算處理單元同系統管理與顯示單元分開的方法,即采用服務器客戶端的分布式系統結構,服務器與客戶端之間通過網絡連接,按照一定的網絡協議實現數據通訊與圖像數據傳輸功能。
一、 基于 TCP/IP 協議的數據通訊與圖像數據傳輸方法
作為目前廣泛采用的一組完整的網絡協議,TCP/IP 協議的傳輸層協議為用戶提供了用于虛電路服務及數據傳輸可靠性檢查的傳送控制協議(TCP)和用于數據傳送的數據報協議(UDP)。同時,Socket 的出現,為用戶提供了基于 TCP/ IP 網絡應用編程接口。
在利用 Socket 進行通信時,有兩種主要方式:一種叫做流方式(Stream Socket),也稱面向連接方式,在這種方式下兩個通信的應用程序之間先要建立一種虛擬的連接,只有連接建立以后才能開始傳輸數據,這種方式對應的是 TCP 協議。
第二種叫數據報文方式(Datagram Socket),又稱無連接方式,在這種方式下,數據在傳送過程中有可能會丟失,而且,后發出的數據也有可能先收到。由于本系統的客戶端與服務器端間的通訊對實時性、快速性和可靠性的要求非常高,傳輸效率將會影響到檢測過程所消耗的時間,過多的時間消耗會導致系統檢測精度的降低,同時會對圖像的后續處理產生影響;錯誤的或者順序顛倒的數據信息可能會帶來很嚴重的后果。
因此,采用 TCP 協議可以在連接虛電路建立后消除隱含在建立客戶機/服務器間通訊時的非對稱性,保證通訊兩端的對等數據通信和圖像數據的準確傳輸。
二、基于 TCP 協議和 Csocket 類的網絡通信實現
在基于 TCP 協議的網絡通信的實現過程中,采用Microsoft Visual C++ 的MFC 類庫中提供的 CSocket 類,采取面向連接的流方式實現了客戶端與服務器端之間的實時通訊。其服務器與客戶端的進程。系統通信的工作過程如下: 在印刷圖像在線檢測系統中,上位機作為服務器,調用Listen () 函數進行監聽,等待下位機的連接;下位機作為客戶機,當某一客戶機要聯通上位機時,調用Connect() 函 數主 動 進 行連接。
客戶端在連通服務器之前先發送連通請求,并把包括站名、IP 地址、端口地址等客戶機信息發送到服務器。服務器端對進行連接請求的身份確認,若身份不符則主動中斷連接;若身份得到確認則允許連接并發送確認信息到客戶端,開始接收由客戶端上傳的數據。
三、網絡連接狀態的在線診斷
在印刷圖像在線檢測系統的實際檢測過程中,會出現這樣一種情況:服務器端不能實時獲得檢測對象的缺陷數據,而此時系統軟件亦沒有捕捉到任何異常,從而導致整個系統缺陷檢測與缺陷分類功能的失效。因此,為了保證網絡的正常工作,需要對網絡進行在線化檢測,從而能夠網絡及時進行修復。
引起該檢測失效故障的可能原因很多,最可能的一種原因是:應用程序的其他部件都處于正常運行狀態,客戶端已經檢測到產品缺陷,而服務器端顯示的卻是之前檢測到的缺陷數據,即檢測系統的網絡通訊功能 失 效 , Client Socket和CSever Socket 之間丟失有效連接,導致客戶端采集到的缺陷數據不能實時地上傳到服務器端,或者由于某種原因延遲一段時間,同客戶端機之后所檢測到缺陷數據一起上傳至服務器端,導致缺陷的誤報與漏報。為了診斷服務器端 Csever Socket 與客戶端 Client Socket 之間是否建立有連接,有兩種可能的方法:
(1) 在服務器端設置定時器,定時向每個客戶端發送測試信息,若客戶端能夠及時返回確認信息,則證明服務器與客戶端之間建立有連接;否則服務器端會繼續向客戶端發送測試信息,若服務器端在第 n 次(n 值由用戶設置)發測試信息之前收到客戶端的確認信息,仍然認為服務器與客戶端之間建立有連接;若超過 n 次,則認為二者之間已經斷開連接。
(2) 在每個客戶機端都設置定時器,定時向服務器端發送測試信息,若服務器端能夠及時返回確認信息,則證明服務器與客戶端之間建立有連接;否則客戶機會繼續向服務器端發送測試信息,若客戶端在第 n 次發測試信息之前收到服務器端的確認信息,仍然認為服務器與客戶端之間建立有連接;若超過 n 次,則認為二者之間已經斷開連接。
由于socket的通訊機制只能是服務器端處于監聽狀態,由客戶端發送連接請求,來實現網絡連接狀態診斷,當檢測到與服務器端斷開連接,即可向服務器端進行Socket重連。
另外,因為系統中客戶端向服務器傳送的信息并不是由相機所采集到的整幅圖像,而是經過處理后的圖像數據,使得傳輸數據量大大減少,所以本通信方案沒有采用擁塞控制。倘若由于傳輸的數據量增加而不能實現實時穩定的數據通信,甚至發生數據碰撞和數據擁塞,則應考慮適當的擁塞控制策略來減弱由此帶來的數據延遲。