摘 要:本文介紹了在不改變原有工業網絡的情況下,實現從工業網到以太網的數據傳輸與發布的解決方案。該方案使得工業網中的實時數據能夠傳輸到一臺專用服務器的數據庫中,并通過這臺服務器實現數據的整理、分析和在以太網上發布。
關鍵詞:工業網、以太網、串口通訊、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. 引言
南京自來水公司浦口水廠自動控制系統底層部分是由奧地利ELIN公司的ELIN-PLC構成,共有五個站點,由ELIN-BUS專用總線聯網,上位機實現監控及系統配置,操作系統為MS-DOS。由于該自動控制系統由外方設計,限于當時的技術,其信息為系統專用,不能與廠級局域網(以太網)實現信息共享,無法實現工業數據的遠程訪問,對生產、指揮和調度帶來不便。
雖然現在一些工控設備已出現以太網接口,但是對已經建立了完整專用工業網絡的工業企業來說,特別是當這些工業網還運行在DOS平臺上,更新設備的軟硬件成本高昂。本設計針對南京自來水公司浦口水廠自動控制系統,在不改變原有工業網絡的情況下,將建立在DOS平臺上的專用工業網上的數據傳輸到以太網上發布。
2. 系統設計
2.1. 設計目標和要求
(1) 設計目標:數據從DOS工作站(上位機)傳輸到NT服務器,存入數據庫;數據庫實現自動維護;將數據發布在Web頁面上。
(2) 實時性:NT服務器能夠及時獲取工業數據,并能及時在Web上發布。
(3) 容錯性:在數據傳輸中能夠及時發現并丟棄錯誤的數據。
(4) 穩定性:在ELIN-BUS網絡上的DOS工作站能夠及時準確地提供數據,并保證其原有數據監控功能不受影響。NT服務器端系統能長時間(72小時)連續正常工作。
(5) 數據存儲查詢:數據庫存儲一年內每天的詳細數據,永久存儲每日平均數據。能夠繪出任意時間段任意一項工業數據的變化曲線圖。
2.2. 系統構架
工業設備通過ELIN-BUS網絡將工業數據傳輸到DOS監控工作站,由于ELIN-BUS網絡與以太網完全不兼容,為了實現不同網絡間的數據通訊,使用串口線連接ELIN-BUS網絡中的一臺DOS工作站和以太網中的一臺NT服務器,再通過NT服務器將數據在以太網上共享。
[align=center]

圖2.1 系統總體結構圖[/align]
2.3. DOS工作站端設計
在DOS工作站中植入一套數據發送程序,工作站啟動后,該程序駐留內存。廠方原有組態軟件沒有對外數據接口,所以在組態軟件設計中,定時切換至數據屏幕,并調用數據發送程序。數據發送程序讀取DOS的屏幕顯示緩沖區,發送一頁屏幕數據。數據約每兩分鐘發送一次。
2.4. NT服務器端設計
NT服務器端建立一套程序,其功能為:數據接收、數據分析存儲、數據整理、數據查詢、Web瀏覽、輔助工具。
數據從串口讀入,存入Microsoft SQL Server數據庫。程序通過ADO(Microsoft ActiveX Data Object)連接ODBC(Open Database Connectivity)訪問SQL數據庫。每日凌晨,程序自動對前一天的數據進行維護,刪除過期數據。
服務器使用IIS(Internet Information Service)提供Web服務,在ASP(Active Server Page)中訪問數據庫,并通過圖表組件,使用戶可以在網頁上瀏覽到數據和數據圖表。
NT服務器端系統結構分為三部分:數據庫層,包括數據庫(SQL Server)和數據訪問組件(ODBC、ADO);中間層,由若干個COM對象組成,包括數據庫訪問對象、串口通訊對象和圖表控件。應用層,包括數據接收程序界面和Web應用程序。應用層通過捆綁中間層組件來實現系統主要功能。
3. 數據定義與傳輸
3.1. 數據定義
數據傳輸格式定義:采用文本的形式傳輸數據。每頁數據分為25行,每行80個字符,每頁中的數據項按一定次序排列,目前包括了174項數據。
[align=center]

表3.1 每頁數據示例[/align]
每個字符由兩個字節組成,第一個字節表示字符的ASCII碼,第二個字節表示屏幕中字符的顏色,表示數據狀態,包括正常、警報、錯誤、運行、停止等。每頁長度為8000字節。
3.2. 數據傳輸與校驗
串口傳輸的比特率19200bps,1位奇校驗,無停止位。傳輸一頁數據耗時8000×(1+8)/ 19200 = 3.75秒,遠小于數據兩分鐘傳輸一次的間隔。
在數據傳輸時,遇到以下情況之一,認為數據傳輸發生錯誤,拋棄數據頁。
(1) 寄校驗發現錯誤。
(2) 數據傳輸空閑15秒,但是一頁數據尚未傳輸完畢。
(3) 一頁數據中的關鍵行與設定值不符。關鍵行是數據頁中相對固定的部分。下表中,下劃線部分為關鍵行。
[align=center]

表3.2 原始數表中的關鍵行[/align]
以上三個步驟雖然不能檢測出所有的錯誤,但能檢測出絕大多數錯誤。現場運行表明,每天發生錯誤的頁數大約是一至兩頁。
4. 數據庫設計
4.1. 表的定義
(1) 工業數據表定義
工業數據表有兩類。一類記錄了兩分鐘一次的每天的詳細數據。另一類記錄了每天的平均數據。兩類表的結構是相同的。每天的詳細數據存儲在不同的表上,其表名為“Dyyyymmdd”,其中“yyyy”表示四位年份,“mm”表示兩位月份,“dd”表示兩位日期。每日平均數據記錄在同一個表“DailyData”中。
[align=center]

表4.1 數據表字段定義[/align]
由于在每頁中的數據可以按行和列來定位(行:數據在該頁中的行號;列:左邊第一項數據為第0列,第二項數據為第1列,依此類推),數據字段命名為“AXXYY”,表示的是第“XX”列第“YY”行的數據。從“A0003”到“A1522”共320個數據,即在數據表中建立320個字段,目前僅使用其中的174個,以允許用戶在DOS端組態軟件中對數據項進行擴充。
(2) 輔助表的定義
數據庫系統中除了兩類數據表之外,還需要一個輔助表來記錄一些輔助數據。
[align=center]

表4.2 輔助表子段定義[/align]
字段“TableName”的含義如下表:
[align=center]

表4.3 字段TableName含義表[/align]
4.2. 索引
索引是簡單而有效的加快查詢的方法。但是索引的建立會占用一定的存儲空間,在插入刪除數據時也會增加開銷。所以索引不宜過多。數據表中使用了兩個索引。一個是主鍵ID上的主鍵索引,主鍵決定了數據在磁盤上的排列順序,一般沒有實質性的意義,但能夠加快檢索速度。由于時間經常被作為查詢條件,所以在字段RecordTime上建立另一個索引,加速查詢。
4.3. 數據庫登錄與權限
本系統為數據庫訪問設置了兩個登錄帳戶:完全訪問帳戶和只讀訪問帳戶。
完全訪問帳戶隸屬于db_owner,具有數據庫的完全訪問權限。該帳戶用于服務器端的數據錄入、整理和查詢。該帳戶可以設置為SQL Server登錄或Windows NT登錄驗證。使用Windows NT登陸驗證時,Windows登錄用戶必須在SQL Server中擁有db_owner身份,一般是Administrator或Administrators組成員。
只讀訪問帳戶隸屬于public,用于Web用戶查詢數據,用戶不能更改數據庫。該帳戶一般設置為SQL Server登錄驗證。
4.4. 數據庫容量估算
詳細數據每年新增記錄數:(24×60)/ 2 × 365 = 262800;
假定系統使用時間不超過十年,則十年的每日平均數據紀錄數為:10×365 = 3650;
每條記錄占用字節數(各字段長度總和):4 + 8 + 320×8 = 2560B(SQL 2000中每條記錄的長度不超過8KB);
數據庫大約需要硬盤空間:2560 ×(262800 + 3650)= 682112000 ≈ 650MB。
通過估算,數據存儲大約需要650MB的容量,加上輔助表空間、索引空間、日志空間、數據庫的必要冗余空間、則至少為數據庫留有2~3GB的磁盤空間。
5. 軟件實現
5.1. 對象和控件
對象和控件位于NT服務器端系統的中間層。主要需要建立兩個對象和一個控件:
(1) 數據接收對象:負責串口數據接收模塊。
[align=center]

圖5.1 數據接收對象程序流程圖[/align]
(2) 數據庫訪問對象:負責數據分析、存儲和整理模塊和數據項的說明。
[align=center]

圖5.2 數據訪問對象程序流程圖[/align]
(3) 圖表控件:在應用程序或在網頁中繪制折線圖。
5.2. 接口設計
系統接口包括:數據接收對象接口、數據訪問對象接口、圖表控件接口。
[align=center]

圖5.3 系統接口設計[/align]
5.3. 應用程序結構
服務器端的應用程序功能主要有以下模塊:原始數據頁的顯示、數據查詢、運行控制(包括數據接收控制和數據庫連接控制)和參數設置(包括數據數據傳輸對象屬性設置和數據訪問對象的屬性設置)。應用程序的主要功能幾乎完全由組件提供。
5.4. Web應用程序設計
在NT服務器中啟動IIS服務,建立一個Web站點,在該站點下建立數據查詢頁default.asp。數據查詢頁面需要以下參數:
[align=center]

表5.1 查詢頁面參數[/align]
輸出數據:在頁面上顯示查詢結果,包括數據表和數據折線圖。
[align=center]

圖5.4 查詢頁程序流程圖[/align]
6. 項目總結
本設計采用了一個串口連接,連接了一臺DOS工作站和一臺NT服務器,從而實現了從ELIN-BUS網絡到以太網的數據傳輸。在NT服務器上建立數據庫,程序自動對數據進行分析整理,并在Web上發布數據。在數據傳輸的設計中,對于不同的工業網結點可以采用不同的數據采集發送方式,這里采用了文本傳輸方式,雖然降低了數據傳輸效率,但是有利于數據項的擴展。
參考文獻
[1] 《SQL Server開發指南》:(美)Ash Rofail、(美)Paul R. Allen著,電子工業出版社,2000;
[2] 《TCP/IP詳解》:(美)W. Richard Stevens著,北京大學出版社,1999;
[3] 《COM與COM+從入門到精通》:(美)Joseph J. Bambra、(美)Yasser Shohoud著,電子工業出版社。