基于 TCP / IP 通信的汽車衡稱重數(shù)據(jù)管理系統(tǒng)
隨著以太網(wǎng)通信的興起與迅速發(fā)展,TCP / IP 協(xié)議作為計算機網(wǎng)絡的最主要的傳輸協(xié)議被廣泛應用于工業(yè)以太網(wǎng)控制領域。 為了實現(xiàn)生產(chǎn)現(xiàn)場智能稱重儀表與管理層直接的數(shù)據(jù)交換, 使用 Visual Basic 提供的 Winsock 控件開發(fā)了FTP 服務端的通信應用程序,實現(xiàn)現(xiàn)場生產(chǎn)數(shù)據(jù)在管理層的 SQL 數(shù)據(jù)庫中的存儲和查詢。 基于 TCP / IP 通信的稱重數(shù)據(jù)管理系統(tǒng)投入實際運行后,可記錄和保存生產(chǎn)現(xiàn)場全部稱重數(shù)據(jù)。
基于 TCP / IP 的以太網(wǎng)可滿足控制系統(tǒng)的各個層次的需求,并具有實現(xiàn)現(xiàn)場設備層和企業(yè)管理層的無縫連接、低成本等現(xiàn)場總線技術無法比擬的優(yōu)點。 本系統(tǒng)開發(fā)的 FTP 服務端通信應用程序可實現(xiàn)生產(chǎn)現(xiàn)場智能稱重儀表與管理層的數(shù)據(jù)交換,使現(xiàn)場生產(chǎn)數(shù)據(jù)可在管理層的數(shù)據(jù)庫中進行存儲和查詢。 系統(tǒng)經(jīng)調(diào)試已投入運行,完全達到預期目的。
1.系統(tǒng)構(gòu)成
青島某橡膠公司的生產(chǎn)車間與管理生產(chǎn)數(shù)據(jù)的辦公區(qū)距離較遠,稱重數(shù)據(jù)管理都是采用人工記錄方式,這就造成了數(shù)據(jù)更新慢和準確性差等問題。 為方便管理人員快速和準確地查詢稱重數(shù)據(jù),實現(xiàn)辦公無紙化,利用 FTP 通信原理完成文件、資料、報表等數(shù)據(jù)的計算機網(wǎng)絡傳送。 設計和開發(fā)了基于 TCP / IP 的通信和數(shù)據(jù)處理系統(tǒng), 系統(tǒng)硬件采用梅特勒-托利多的工業(yè)智能稱重儀表 IND880,接收稱重傳感器發(fā)送的模擬量信號并轉(zhuǎn)化為重量值,通過以太網(wǎng)交換機與服務器電腦和多臺客戶端電腦建立以太網(wǎng)通信連接,實現(xiàn)稱重數(shù)據(jù)的快捷查詢。 系統(tǒng)結(jié)構(gòu)如圖 1 所示。
2.通信協(xié)議
客戶端與服務器端之間是通過 TCP / IP 協(xié)議和 FTP 協(xié)議進行通信的。TCP 協(xié)議作用于傳輸層,在文件傳輸時會先行建立連接,通過鏈接提供雙向、有序且無重復的數(shù)據(jù)流服務、流量控制、差錯檢測和糾錯等服務,從而確保文件傳輸?shù)恼_性。 FTP 協(xié)議作用于應用層,它包括兩個組成部分,其一為 FTP 服務器,其二為 FTP 客戶端。 其中 FTP 服務器用來存儲文件,用戶可以使用FTP 客戶端通過 FTP 協(xié)議訪問位于 FTP 服務器上的資源。
Visual Basic 提供了基于 Windows Sockets 網(wǎng)絡編程接口的Winsock 控件。 Winsock 控件是不可視控件,它封裝了所有煩瑣的技術細節(jié),并提供了訪問 TCP 網(wǎng)絡服務的方便途徑,使開發(fā) TCP / IP 通信程序變得簡單方便,只需通過設置 Winsock 控件的屬性并調(diào)用其方法,就可直接連接到一臺遠程計算機中,并可實現(xiàn)雙向數(shù)據(jù)交換。 為開發(fā)者實現(xiàn)上位計算機與現(xiàn)場各種以太網(wǎng)接口儀表進行通信提供了一種有效途徑。
Winsock 控件的工作原理: 客戶端向服務器端發(fā)出連接請求, 服務器端則不停地監(jiān)聽客戶端的請求, 當兩者的協(xié)議溝通時,客戶端和服務器端之間就建立了連接,這時客戶端和服務器端就可以實現(xiàn)雙向數(shù)據(jù)傳輸。 實際編程中,必須分別建立一個服務器端應用程序和一個客戶端應用程序,兩個應用程序中分別有自己的Winsock 控件。 首先設置 Winsock控件使用的協(xié)議,通信的雙方需要選定相同的協(xié)議。 TCP 協(xié)議適用于傳送大容量或需要安全性保證的 數(shù)據(jù)文件。 Winsock 控件的工作原理如圖 2 所示。
3.軟件設計
服務器端程序運行在服務器上, 其主要功能是接受來自現(xiàn)場智能儀表 IND880 傳輸?shù)谋砀裎募?/span>, 并把該文件內(nèi)容逐條轉(zhuǎn)換為 SQL 數(shù)據(jù)庫中的表格記錄; 打印程序運行在智能儀表ND880 上 ,其主要功能是讀取服務器上的數(shù)據(jù) ,并把記錄中的“生產(chǎn)編號 ”字段生成條形碼 ,連接斑馬打印機 ,打印生產(chǎn)標簽 ,并把打印內(nèi)容記錄在 SQL 數(shù)據(jù)庫中。
用 TCP / IP 協(xié)議通訊,首先要指定通信方式為 TCP 方式,將Winsock 控件的 Protocol 屬性設置為 sckTCPProtocol。 然后,按
TCP 通信協(xié)議規(guī)定,先要申請建立網(wǎng)絡連接,設置 Winsock 控件的 RemotePort 和 LocalPort 屬性使服務器和客戶端參數(shù)一致,服務器調(diào)用 Winsock 控件的 Listen 方法進行偵聽, 客戶端調(diào)用Winsock 控件 Connect 方法進行連接 , 然后才能調(diào)用 DataAr-rival 事件和 GetData 方法傳輸數(shù)據(jù),最終實現(xiàn)點對點文件傳輸。
生產(chǎn)現(xiàn)場的智能儀表 IND880 通過自帶的稱重軟件記錄生產(chǎn)數(shù)據(jù),并保存為表格(.csv 格式),當操作人員按稱重軟件中
“上傳 ”時 ,該表格通過以太網(wǎng)通信傳輸?shù)椒掌魃系?/span> F 盤根目錄下的 IND880 文件夾里。 服務器接收完稱重表格后將該表格解析, 通過定義 ADODB 和數(shù)據(jù)集連接 SQL 數(shù)據(jù)庫, 使用 For循環(huán)和 Insert into 語句逐條把記錄寫進服務器中的 SQL 數(shù)據(jù)庫中的名為 ind 的表格中,該表格中包括:編號、流水號、料名、機臺、班次、序號、凈重、毛重、稱重人、復核人、稱量日期、備注、上傳標志字段。因為每條記錄的編號是唯一的, 所以設置編號為主鍵, 這樣就可以避免重復記錄的產(chǎn)生。
通過配置 ODBC 數(shù)據(jù)源和 SQL Server ConfigurationManager, 并利用 VB 中 ADO部件進行編程,使得在 IND880上運行的客戶端程序可以讀取服務器上的數(shù)據(jù),獲取記錄后操作人員核對打印信息無誤后,點擊客戶端程序上的“打印預覽”即可進入打印界面,系統(tǒng)自動根據(jù)記錄中的“生產(chǎn)編號”生產(chǎn)條碼信息,核對后,通過 Form9.PrintForm 和 Printer.EndDoc完成控制斑馬打印機打印生產(chǎn)標簽。 工作流程圖如圖 3 所示。
4.結(jié)束語
客戶/ 服務器模式已成為目前程序開發(fā)的主要潮流,在 Vi-sual Basic 中的 Winsock 是實現(xiàn)客戶 / 服務器的主要控件 ,利用 TCP / IP 協(xié)議進行客戶與服務器之間的通信, 實現(xiàn)現(xiàn)場生產(chǎn)智能儀表產(chǎn)生的數(shù)據(jù)可在管理層的 SQL 數(shù)據(jù)庫中的存儲和查詢。 該系統(tǒng)使管理層方便、快速地了解和監(jiān)視現(xiàn)場運行情況,提高了工作效率。