朱旋+吳達源+吳第春



摘 要
闡述使用C#開發技術、SQL server數據庫技術開發冷軋中間件的總體設計方案,詳細分析了柳鋼生產計劃在內部網絡的流向。
【關鍵詞】C#SQL server冷軋中間件
1 前言
柳鋼冷軋生產執行系統(Product Execution System,PES)屬于柳鋼制造執行系統(Manufacturing Execution System,簡稱MES)的子系統,在柳鋼冷軋鋼卷生過程中,需要通過MES制定生產計劃以報文的形式下發到PES,冷軋廠需要根據公司的生產計劃執行生產。因此,需要通過設計中間件進行對公司下發計劃存儲的數據庫跟生產機組二級服務器數據庫進行銜接,執行生產計劃的下發及實際生產數據上傳。
2 需求分析
2.1 業務需求分析
冷軋中間件的開發主要是將公司中間件下發到冷軋Sql數據庫中的數據跟生產機組二級服務器數據庫中數據實現對接。有效的實現冷軋Sql數據庫數據跟生產機組二級服務器數據的互通。
2.2 功能需求分析
冷軋中間件在功能上,首先要實現冷軋Sql數據庫跟二級數據服務器數據庫進行連接,其次創建時間定時器,對數據庫數據進行定時遍歷查詢,將未下發的生產計劃自動按時下發以及二級服務器內未上傳的實際生產數據按時上傳。實現對上下鞍座實績、鋼卷焊接實績、鋼卷生產實績、重量更新、酸軋作業命令。
2.3 數據流向分析
冷軋卷生產數據流向,首先由公司通過MMS系統制定總生產計劃存儲到公司的Oracle數據庫中,再通過PES系統訪問公司的oracle數據庫,對制定的總生產計進行詳細分配到各個機組生產,制定詳細計劃。公司中間件是對公司的Oracle數據庫中的冷軋生產計劃下發到冷軋Sql數據庫中。冷軋中間件是將冷軋Sql數據庫中的數據分配到各個相應機組二級服務器數據庫中。等到機組按照生產計劃完成生產后,二級機組服務器數據庫會生成實際生產數據,會通過冷軋中間件傳回冷軋Sql數據庫中,再由公司中間件傳回到公司的Oracle數據庫中。
3 中間件功能結構圖
中間件功能主要有上下鞍座實績、鋼卷焊接實績、鋼卷生產實績、重量更新、酸軋作業命令。功能結構圖如圖1所示。
4 數據庫設計
4.1 E-R圖
E-R圖是一種概念模型。概念模型實際上是現實世界到機器世界的一個中間層次。因此概念模型一方面應該具有較強的語義表達能力,能夠方便、直接的表達應該用眾的各種語義知識,另一方面他還應該簡單、清晰并且易于會員理解。圖2是各個數據表的實體圖。
4.2 基本表設計
如表1所示。
5 中間件實現
中間件的實現使用了C#程序設計語言程序技術跟SQL server數據庫技術相結合。實現了冷軋中間件的內部遠程連接服務器功能、上下鞍座實績、鋼卷焊接實績、鋼卷生產實績、重量更新、酸軋作業命令功能等。
5.1 冷軋中間件界面設計
冷軋中間件界面設計如圖3所示。
5.2 冷軋中間件測試服務器連接實現
冷軋中間件測試服務器連接實現代碼如下所示:
publicstaticbool TestConnection(string host, int port, int millisecondsTimeout)
{
TcpClient client = newTcpClient();
try { var ar = client.BeginConnect(host, port, null, null);
ar.AsyncWaitHandle.WaitOne(millisecondsTimeout); return client.Connected; }
catch(Exception e) {throw e; }
finally { client.Close(); } }
5.3 冷軋中間件遠程連接服務器實現
冷軋中間件遠程連接服務器實現代碼如下:
privatevoid TestPing_Tick(object sender, EventArgs e)
{ //遠程服務器IP
string ipStr = label5.Text.ToString().Trim();
//構造Ping實例
Ping pingSender = newPing();
//Ping 選項設置
PingOptions options = newPingOptions();
options.DontFragment = true;
//測試數據
string data = "test data abcabc";
byte[] buffer = Encoding.ASCII.GetBytes(data);
//設置超時時間
int timeout = 120;
//調用同步 send 方法發送數據,將返回結果保存至PingReply實例
PingReply reply = pingSender.Send(ipStr, timeout, buffer, options);
if (reply.Status == IPStatus.Success)
{ if (textBox4.Text == "" || textBox4.Text == "9999")
{ textBox4.Text = "1"; textBox4.ForeColor = Color.Red; }
else { textBox4.Text = (Convert.ToInt32(textBox4.Text) + 1).ToString(); }
} else { string date = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss");
if (textBox5.Text == "" || textBox5.Text == "9999")
{ textBox5.Text = "1";
listBox1.Items.Add("網絡連接超時,時間: " + date);
AddLog("網絡連接超時,時間: " + date);
}
else { textBox5.Text = (Convert.ToInt32(textBox4.Text) + 1).ToString();
listBox1.Items.Add("網絡連接超時,時間: " + date);
AddLog("網絡連接超時,時間: " + date); } } }
6 結語
在柳鋼實際生產應用中,冷軋中間件的設計與實現有效地解決了公司數據跟冷軋廠數據的銜接,運用現代信息化技術投入到實際生產應用當中,進一步加快了柳鋼對信息化推進的步伐。目前所開發的冷軋中間件在生產應用當中,針對各個二級機組服務器數據庫都需要設計相對應的數據庫連接中間件。
參考文獻
[1]齊治昌,譚慶平,寧洪.軟件工程[M].北京:高等教育出版社,2007.