簡化監控軟件的編程方法
2006/4/25 11:58:00
我曾發表過《運用VC#編程通過OPC方式實現PC機與西門子PLC通訊》的文章,并且自己開發了一個標準類庫:S7Connection,然后我使用該類庫與西門子PLC通訊,運用VC#編程設計監控界面,但在實際使用中我發現其工作量比使用標準的組態軟件WinCC、Intouch要大得多,其工作量主要體現在PLC變量的創建、管理與訪問上,現在我終于找到了一套解決方法,大大的簡化了編程。 以下是整個框架圖: 
上圖中的三個類S7MPI、AsynServer、SynServer在我之前發表的三篇文章中有介紹,這里主要針對同步訪問類SynServer來介紹如何設計簡化的編程結構。 1、創建和使用數據庫 在一個監控系統中可能需要幾百個變量與PLC通訊,西門子的OPC編程把變量稱為項(Item),把掃描周期相同的項歸納成組(Group),使用過WinCC的人很熟悉項和組。在使用OPC編程時,首先需要向服務器添加組,然后向相應的組中添加一系列用于訪問PLC信息 的項,當項多大幾百個時,用手動編程的方式去添加它,工作量非常大,容易出錯,也不便于管理。 我們可以考慮設計一個標準數據庫,用于存儲項和組,然后設計一個管理軟件用于編輯數據庫中的這些項和組(上圖中的ProgramProduce軟件),再編寫一個標準類,用于讀取該數據庫的信息,并自動把項和組添加到服務器中,在人機界面中訪問PLC變量時,直接通過該類獲取數據,這就是上圖中Data類所起的作用。 所以創建的數據庫需要起到儲存項和組信息的作用,以下是三個表的關系: 
顧名思義,Table_Server用于存儲服務器設定信息,Table_Group用于存儲組信息,Table_Item用于存儲項信息。 2、設計訪問變量管理軟件ProgramProduce <1>該軟件首先需要能打開上面的數據庫,如下圖: 
<2>能夠添加、編輯和刪除組,如下圖(要求點擊左邊的樹形結構時,右側能夠顯示當前被選中的組信息): 
<3>能夠添加、編輯和刪除項,如下圖(要求點擊左邊的樹形結構時,右側能夠顯示當前被選中的項信息): 
〈4〉要求能夠設定服務器信息: 
〈5〉由于變量常常使用Excel軟件輸入,故還要求該軟件能夠把Excel文件中的內容導入其中,而Excel的輸入應該有規定,類似于下圖: 
導入對話框的設計可參照下圖: 
右上角列出當前可用的組,左邊列出已成功導入的Excel文件中的內容,選中相應的一些項和某一個組,可把這些項添加到選定的組中。 這就是該軟件應該具備的基本功能,在我把這個小軟件設計出來后,我感覺比其他一些組態軟件在變量管理方面好用一些。 3、 設計Data類 首先應該根據指定的文件名打開數據庫,然后完成添加組和項的工作,最后應該提供訪問接口,以便外部程序能夠通過其獲取和寫入PLC數據。嚴重建議讀寫PLC數據以變量的符號名為準,就像Step 7中的符號名。 4、現在來瞧一下我們訪問PLC信息需要的編程量 《1》、在程序開頭,創建對象,并確保該對象能夠被程序中的所有窗口訪問 S7Connection.Data dt=new S7Connection.Data(); 《2》、在需要訪問數據的每一個窗體中添加一個定時器,并將Enable屬性設為false 《3》、在程序的某個初始化處編寫類似以下代碼,以打開訪問接口: string fileName = System.IO.Directory.GetCurrentDirectory(); fileName += "\\dbHMI.mdb"; if (succ) timer1.Enabled = true; 當然,可以使用序列化記錄數據庫路徑,若找不到數據庫,彈出對話框,讓用戶尋找數據庫。 《4》、在定時器觸發事件中編寫讀取數據的代碼,類似如下: dt.RefreshGroup("wxy"); textBox1.Text = dt["MW1"].ToString(); textBox2.Text = dt["M2.0"].ToString(); … 注:在讀取數據前,一定要先使用代碼:dt.RefreshGroup("wxy");其中”wxy”為上面Table_Group表中的Name_Group字段存儲的值。而”MW1”則為Table_Item中的Symbol字段存儲的值(符號名可以是任意合法的名字,但不容許重復)。 若讀取另一個組中的數據則需要再次編寫代碼: dt.RefreshGroup(groupName); 就這么簡單,比以前的編程工作量小多了。 5、編寫自己的.Net控件,這樣可以設計美麗的外觀,也可以減少很多重復性的工作量。 我將會上傳: S7Connection類庫: S7Connection.dll及說明文檔:struct.doc ProgramProduce軟件: ProgramProduce.exe 數據庫文件:dbHMI.mdb Excel變量實例:address.xls 基本控件庫:OPCControls.dll









提交
查看更多評論
其他資訊
工業自動化設計高級參考
使用西門子的SCL語言編寫ABB變頻器的總線控制程序塊
PLC的面向對象編程
Siemens OPC編程的.NET類庫及使用說明