摘 要:本文介紹了在不改變原有工業(yè)網(wǎng)絡的情況下,實現(xiàn)從工業(yè)網(wǎng)到以太網(wǎng)的數(shù)據(jù)傳輸與發(fā)布的解決方案。該方案使得工業(yè)網(wǎng)中的實時數(shù)據(jù)能夠傳輸?shù)揭慌_專用服務器的數(shù)據(jù)庫中,并通過這臺服務器實現(xiàn)數(shù)據(jù)的整理、分析和在以太網(wǎng)上發(fā)布。
關(guān)鍵詞:工業(yè)網(wǎng)、以太網(wǎng)、串口通訊、COM、SQL Server、IIS
Abstract: This paper introduces the solution of industry data’s transmission and publishing from industry network to Ethernet, in case of not changing the original industry network. This scheme makes the real-time data in industry networks can be transmitted in the database of a special-purpose server, and realizes arrangement, analysis and web publishing through this server.
Keywords: Industry Network, Ethernet, Serial Communication, COM, SQL Server, IIS
1. 引言
南京自來水公司浦口水廠自動控制系統(tǒng)底層部分是由奧地利ELIN公司的ELIN-PLC構(gòu)成,共有五個站點,由ELIN-BUS專用總線聯(lián)網(wǎng),上位機實現(xiàn)監(jiān)控及系統(tǒng)配置,操作系統(tǒng)為MS-DOS。由于該自動控制系統(tǒng)由外方設計,限于當時的技術(shù),其信息為系統(tǒng)專用,不能與廠級局域網(wǎng)(以太網(wǎng))實現(xiàn)信息共享,無法實現(xiàn)工業(yè)數(shù)據(jù)的遠程訪問,對生產(chǎn)、指揮和調(diào)度帶來不便。
雖然現(xiàn)在一些工控設備已出現(xiàn)以太網(wǎng)接口,但是對已經(jīng)建立了完整專用工業(yè)網(wǎng)絡的工業(yè)企業(yè)來說,特別是當這些工業(yè)網(wǎng)還運行在DOS平臺上,更新設備的軟硬件成本高昂。本設計針對南京自來水公司浦口水廠自動控制系統(tǒng),在不改變原有工業(yè)網(wǎng)絡的情況下,將建立在DOS平臺上的專用工業(yè)網(wǎng)上的數(shù)據(jù)傳輸?shù)揭蕴W(wǎng)上發(fā)布。
2. 系統(tǒng)設計
2.1. 設計目標和要求
?。?) 設計目標:數(shù)據(jù)從DOS工作站(上位機)傳輸?shù)絅T服務器,存入數(shù)據(jù)庫;數(shù)據(jù)庫實現(xiàn)自動維護;將數(shù)據(jù)發(fā)布在Web頁面上。
?。?) 實時性:NT服務器能夠及時獲取工業(yè)數(shù)據(jù),并能及時在Web上發(fā)布。
?。?) 容錯性:在數(shù)據(jù)傳輸中能夠及時發(fā)現(xiàn)并丟棄錯誤的數(shù)據(jù)。
?。?) 穩(wěn)定性:在ELIN-BUS網(wǎng)絡上的DOS工作站能夠及時準確地提供數(shù)據(jù),并保證其原有數(shù)據(jù)監(jiān)控功能不受影響。NT服務器端系統(tǒng)能長時間(72小時)連續(xù)正常工作。
(5) 數(shù)據(jù)存儲查詢:數(shù)據(jù)庫存儲一年內(nèi)每天的詳細數(shù)據(jù),永久存儲每日平均數(shù)據(jù)。能夠繪出任意時間段任意一項工業(yè)數(shù)據(jù)的變化曲線圖。
2.2. 系統(tǒng)構(gòu)架
工業(yè)設備通過ELIN-BUS網(wǎng)絡將工業(yè)數(shù)據(jù)傳輸?shù)紻OS監(jiān)控工作站,由于ELIN-BUS網(wǎng)絡與以太網(wǎng)完全不兼容,為了實現(xiàn)不同網(wǎng)絡間的數(shù)據(jù)通訊,使用串口線連接ELIN-BUS網(wǎng)絡中的一臺DOS工作站和以太網(wǎng)中的一臺NT服務器,再通過NT服務器將數(shù)據(jù)在以太網(wǎng)上共享。
[align=center]
圖2.1 系統(tǒng)總體結(jié)構(gòu)圖[/align]
2.3. DOS工作站端設計
在DOS工作站中植入一套數(shù)據(jù)發(fā)送程序,工作站啟動后,該程序駐留內(nèi)存。廠方原有組態(tài)軟件沒有對外數(shù)據(jù)接口,所以在組態(tài)軟件設計中,定時切換至數(shù)據(jù)屏幕,并調(diào)用數(shù)據(jù)發(fā)送程序。數(shù)據(jù)發(fā)送程序讀取DOS的屏幕顯示緩沖區(qū),發(fā)送一頁屏幕數(shù)據(jù)。數(shù)據(jù)約每兩分鐘發(fā)送一次。
2.4. NT服務器端設計
NT服務器端建立一套程序,其功能為:數(shù)據(jù)接收、數(shù)據(jù)分析存儲、數(shù)據(jù)整理、數(shù)據(jù)查詢、Web瀏覽、輔助工具。
數(shù)據(jù)從串口讀入,存入Microsoft SQL Server數(shù)據(jù)庫。程序通過ADO(Microsoft ActiveX Data Object)連接ODBC(Open Database Connectivity)訪問SQL數(shù)據(jù)庫。每日凌晨,程序自動對前一天的數(shù)據(jù)進行維護,刪除過期數(shù)據(jù)。
服務器使用IIS(Internet Information Service)提供Web服務,在ASP(Active Server Page)中訪問數(shù)據(jù)庫,并通過圖表組件,使用戶可以在網(wǎng)頁上瀏覽到數(shù)據(jù)和數(shù)據(jù)圖表。
NT服務器端系統(tǒng)結(jié)構(gòu)分為三部分:數(shù)據(jù)庫層,包括數(shù)據(jù)庫(SQL Server)和數(shù)據(jù)訪問組件(ODBC、ADO);中間層,由若干個COM對象組成,包括數(shù)據(jù)庫訪問對象、串口通訊對象和圖表控件。應用層,包括數(shù)據(jù)接收程序界面和Web應用程序。應用層通過捆綁中間層組件來實現(xiàn)系統(tǒng)主要功能。
3. 數(shù)據(jù)定義與傳輸
3.1. 數(shù)據(jù)定義
數(shù)據(jù)傳輸格式定義:采用文本的形式傳輸數(shù)據(jù)。每頁數(shù)據(jù)分為25行,每行80個字符,每頁中的數(shù)據(jù)項按一定次序排列,目前包括了174項數(shù)據(jù)。
[align=center]
表3.1 每頁數(shù)據(jù)示例[/align]
每個字符由兩個字節(jié)組成,第一個字節(jié)表示字符的ASCII碼,第二個字節(jié)表示屏幕中字符的顏色,表示數(shù)據(jù)狀態(tài),包括正常、警報、錯誤、運行、停止等。每頁長度為8000字節(jié)。
3.2. 數(shù)據(jù)傳輸與校驗
串口傳輸?shù)谋忍芈?9200bps,1位奇校驗,無停止位。傳輸一頁數(shù)據(jù)耗時8000×(1+8)/ 19200 = 3.75秒,遠小于數(shù)據(jù)兩分鐘傳輸一次的間隔。
在數(shù)據(jù)傳輸時,遇到以下情況之一,認為數(shù)據(jù)傳輸發(fā)生錯誤,拋棄數(shù)據(jù)頁。
(1) 寄校驗發(fā)現(xiàn)錯誤。
(2) 數(shù)據(jù)傳輸空閑15秒,但是一頁數(shù)據(jù)尚未傳輸完畢。
?。?) 一頁數(shù)據(jù)中的關(guān)鍵行與設定值不符。關(guān)鍵行是數(shù)據(jù)頁中相對固定的部分。下表中,下劃線部分為關(guān)鍵行。
[align=center]
表3.2 原始數(shù)表中的關(guān)鍵行[/align]
以上三個步驟雖然不能檢測出所有的錯誤,但能檢測出絕大多數(shù)錯誤?,F(xiàn)場運行表明,每天發(fā)生錯誤的頁數(shù)大約是一至兩頁。
4. 數(shù)據(jù)庫設計
4.1. 表的定義
?。?) 工業(yè)數(shù)據(jù)表定義
工業(yè)數(shù)據(jù)表有兩類。一類記錄了兩分鐘一次的每天的詳細數(shù)據(jù)。另一類記錄了每天的平均數(shù)據(jù)。兩類表的結(jié)構(gòu)是相同的。每天的詳細數(shù)據(jù)存儲在不同的表上,其表名為“Dyyyymmdd”,其中“yyyy”表示四位年份,“mm”表示兩位月份,“dd”表示兩位日期。每日平均數(shù)據(jù)記錄在同一個表“DailyData”中。
[align=center]
表4.1 數(shù)據(jù)表字段定義[/align]
由于在每頁中的數(shù)據(jù)可以按行和列來定位(行:數(shù)據(jù)在該頁中的行號;列:左邊第一項數(shù)據(jù)為第0列,第二項數(shù)據(jù)為第1列,依此類推),數(shù)據(jù)字段命名為“AXXYY”,表示的是第“XX”列第“YY”行的數(shù)據(jù)。從“A0003”到“A1522”共320個數(shù)據(jù),即在數(shù)據(jù)表中建立320個字段,目前僅使用其中的174個,以允許用戶在DOS端組態(tài)軟件中對數(shù)據(jù)項進行擴充。
?。?) 輔助表的定義
數(shù)據(jù)庫系統(tǒng)中除了兩類數(shù)據(jù)表之外,還需要一個輔助表來記錄一些輔助數(shù)據(jù)。
[align=center]
表4.2 輔助表子段定義[/align]
字段“TableName”的含義如下表:
[align=center]
表4.3 字段TableName含義表[/align]
4.2. 索引
索引是簡單而有效的加快查詢的方法。但是索引的建立會占用一定的存儲空間,在插入刪除數(shù)據(jù)時也會增加開銷。所以索引不宜過多。數(shù)據(jù)表中使用了兩個索引。一個是主鍵ID上的主鍵索引,主鍵決定了數(shù)據(jù)在磁盤上的排列順序,一般沒有實質(zhì)性的意義,但能夠加快檢索速度。由于時間經(jīng)常被作為查詢條件,所以在字段RecordTime上建立另一個索引,加速查詢。
4.3. 數(shù)據(jù)庫登錄與權(quán)限
本系統(tǒng)為數(shù)據(jù)庫訪問設置了兩個登錄帳戶:完全訪問帳戶和只讀訪問帳戶。
完全訪問帳戶隸屬于db_owner,具有數(shù)據(jù)庫的完全訪問權(quán)限。該帳戶用于服務器端的數(shù)據(jù)錄入、整理和查詢。該帳戶可以設置為SQL Server登錄或Windows NT登錄驗證。使用Windows NT登陸驗證時,Windows登錄用戶必須在SQL Server中擁有db_owner身份,一般是Administrator或Administrators組成員。
只讀訪問帳戶隸屬于public,用于Web用戶查詢數(shù)據(jù),用戶不能更改數(shù)據(jù)庫。該帳戶一般設置為SQL Server登錄驗證。
4.4. 數(shù)據(jù)庫容量估算
詳細數(shù)據(jù)每年新增記錄數(shù):(24×60)/ 2 × 365 = 262800;
假定系統(tǒng)使用時間不超過十年,則十年的每日平均數(shù)據(jù)紀錄數(shù)為:10×365 = 3650;
每條記錄占用字節(jié)數(shù)(各字段長度總和):4 + 8 + 320×8 = 2560B(SQL 2000中每條記錄的長度不超過8KB);
數(shù)據(jù)庫大約需要硬盤空間:2560 ×(262800 + 3650)= 682112000 ≈ 650MB。
通過估算,數(shù)據(jù)存儲大約需要650MB的容量,加上輔助表空間、索引空間、日志空間、數(shù)據(jù)庫的必要冗余空間、則至少為數(shù)據(jù)庫留有2~3GB的磁盤空間。
5. 軟件實現(xiàn)
5.1. 對象和控件
對象和控件位于NT服務器端系統(tǒng)的中間層。主要需要建立兩個對象和一個控件:
?。?) 數(shù)據(jù)接收對象:負責串口數(shù)據(jù)接收模塊。
[align=center]
圖5.1 數(shù)據(jù)接收對象程序流程圖[/align]
(2) 數(shù)據(jù)庫訪問對象:負責數(shù)據(jù)分析、存儲和整理模塊和數(shù)據(jù)項的說明。
[align=center]
圖5.2 數(shù)據(jù)訪問對象程序流程圖[/align]
?。?) 圖表控件:在應用程序或在網(wǎng)頁中繪制折線圖。
5.2. 接口設計
系統(tǒng)接口包括:數(shù)據(jù)接收對象接口、數(shù)據(jù)訪問對象接口、圖表控件接口。
[align=center]
圖5.3 系統(tǒng)接口設計[/align]
5.3. 應用程序結(jié)構(gòu)
服務器端的應用程序功能主要有以下模塊:原始數(shù)據(jù)頁的顯示、數(shù)據(jù)查詢、運行控制(包括數(shù)據(jù)接收控制和數(shù)據(jù)庫連接控制)和參數(shù)設置(包括數(shù)據(jù)數(shù)據(jù)傳輸對象屬性設置和數(shù)據(jù)訪問對象的屬性設置)。應用程序的主要功能幾乎完全由組件提供。
5.4. Web應用程序設計
在NT服務器中啟動IIS服務,建立一個Web站點,在該站點下建立數(shù)據(jù)查詢頁default.asp。數(shù)據(jù)查詢頁面需要以下參數(shù):
[align=center]
表5.1 查詢頁面參數(shù)[/align]
輸出數(shù)據(jù):在頁面上顯示查詢結(jié)果,包括數(shù)據(jù)表和數(shù)據(jù)折線圖。
[align=center]
圖5.4 查詢頁程序流程圖[/align]
6. 項目總結(jié)
本設計采用了一個串口連接,連接了一臺DOS工作站和一臺NT服務器,從而實現(xiàn)了從ELIN-BUS網(wǎng)絡到以太網(wǎng)的數(shù)據(jù)傳輸。在NT服務器上建立數(shù)據(jù)庫,程序自動對數(shù)據(jù)進行分析整理,并在Web上發(fā)布數(shù)據(jù)。在數(shù)據(jù)傳輸?shù)脑O計中,對于不同的工業(yè)網(wǎng)結(jié)點可以采用不同的數(shù)據(jù)采集發(fā)送方式,這里采用了文本傳輸方式,雖然降低了數(shù)據(jù)傳輸效率,但是有利于數(shù)據(jù)項的擴展。
參考文獻
[1] 《SQL Server開發(fā)指南》:(美)Ash Rofail、(美)Paul R. Allen著,電子工業(yè)出版社,2000;
[2] 《TCP/IP詳解》:(美)W. Richard Stevens著,北京大學出版社,1999;
[3] 《COM與COM+從入門到精通》:(美)Joseph J. Bambra、(美)Yasser Shohoud著,電子工業(yè)出版社。