摘要:基于DDE(Dynamic Data Exchange)技術,研究了VB6.0下組態(tài)軟件與下位機串口通信服務程序的實現(xiàn)方法,并對其進行了改進,解決了組態(tài)軟件沒有提供某些現(xiàn)場設備的通信驅動程序的問題。服務程序利用串口通信控件MSComm與下位機進行通信,同時采用DDE技術與組態(tài)軟件進行數(shù)據(jù)交換。工程實踐表明,該方法通用性強、實現(xiàn)簡便。
1、引言 在工業(yè)控制領域,組態(tài)軟件正得到越來越廣泛的使用。例如:Fix、InTouch、KingView (組態(tài)王)等均是組態(tài)軟件的優(yōu)秀代表,它們提供了豐富的工控界面、數(shù)據(jù)庫處理、對象連接等數(shù)據(jù)管理控制功能,為使用者帶來了極大的方便。組態(tài)軟件以Windows系統(tǒng)作為操作平臺,具有圖形功能完備、界面一致性好和易學易用等特點,與以往使用專用機開發(fā)的工控系統(tǒng)相比更有通用性,更方便了工程技術人員的應用開發(fā)。但在實際應用中,組態(tài)軟件常常沒能提供一些現(xiàn)場設備的通信驅動程序,而這些設備大多采用串口與PC機進行通信。 VB提供的串行通信控件MSComm,讓開發(fā)者可以方便、快捷地開發(fā)串行通信程序,而采用VB在Windows環(huán)境下實現(xiàn)符合DDE協(xié)議的通信程序也并非難事,因此整個系統(tǒng)的數(shù)據(jù)流示意圖如圖1所示。本文以組態(tài)王軟件與PHILIPS公司的51LPC系列單片機之間的通信為例,研究了采用VB6.0開發(fā)串口通信服務程序的原理及其實現(xiàn)方法。
![]() 圖1 系統(tǒng)數(shù)據(jù)流示意圖
2、串口通信的實現(xiàn)方法 Windows平臺下利用VB實現(xiàn)串口通信主要有以下兩種方法: 3、與組態(tài)軟件的DDE通信 Windows環(huán)境下,應用程序和系統(tǒng)間以及應用程序間可通過剪貼板、動態(tài)鏈接庫DLL(Dynamic Link Library)、對象鏈接和嵌入OLE(Object Link Embedded)以及動態(tài)數(shù)據(jù)交換DDE(Dynamic Data)方便地實現(xiàn)數(shù)據(jù)的實時交換。其中,剪貼板是一種靜態(tài)交換數(shù)據(jù)的途徑,DLL不被大多數(shù)組態(tài)軟件所支持,OLE不適合串行通信方式。相比之下,DDE是一種簡單、高效又被組態(tài)軟件廣泛支持的數(shù)據(jù)交換方法。 所謂動態(tài)數(shù)據(jù)交換是指在操作系統(tǒng)環(huán)境下各個應用程序間進行實時動態(tài)數(shù)據(jù)交換。一旦提供數(shù)據(jù)的服務方改變了交換數(shù)據(jù)的內容,接受數(shù)據(jù)的客戶方將立即自動更新交換數(shù)據(jù)內容,從而有效地保證了數(shù)據(jù)傳送的一致性。提出交換請求的一方稱為客戶(Client),對交換請求作出響應或提供服務的一方稱為服務器(Server)。串口通信服務程序向組態(tài)軟件提供串口數(shù)據(jù)的服務,是服務器端,又稱為發(fā)送端;而組態(tài)軟件向通信服務程序發(fā)出請求,并接收其發(fā)送的數(shù)據(jù),是客戶端。 Windows應用程序間的DDE對話是通過應用程序名、主題、項目三個標識名來約定的。應用程序名(Application)是進行DDE對話雙方的名稱,KingView的程序名是View,VB的應用程序名是可執(zhí)行文件的名稱。主題(Topic)是被討論的數(shù)據(jù)域(Domain),KingView的主題被規(guī)定為TagName,VB的主題由窗體(Form)的LinkTopic屬性值指定。項目(Item)是被討論的特定數(shù)據(jù)對象,KingView中,在指定數(shù)據(jù)字典的I/O變量的同時,指定項目名稱,而在VB中,項目是一個特定的文本框、標簽或者圖片框的名稱。 為了建立兩者間的DDE連接,首先需要在組態(tài)王中定義DDE設備,DDE設備的服務程序名、主題名和數(shù)據(jù)交換方式。在組態(tài)王的數(shù)據(jù)詞典中按照預先需要通訊的變量點數(shù)和變量類型建立I/O變量,定義變量的連接設備和項目名。然后在VB程序中設置主窗體的LinkMode屬性為1,LinkTopic可任意給定,如FormDDE。另外還需定義控件的屬性和方法,設置LinkTopic、LinkItem、LinkMode三個屬性。一般的設置為: 4、對DDE通信的改進方法 實際應用中,考慮到工控軟件的數(shù)據(jù)處理能力有限,應將通信協(xié)議的轉換工作交由通信服務程序完成。串口通信服務程序根據(jù)協(xié)議提取出每一條指令或數(shù)據(jù),再將這些數(shù)據(jù)和指令同時上傳給工控軟件。工控軟件發(fā)送串口數(shù)據(jù)時,也是向通信服務程序同時發(fā)送所有的數(shù)據(jù)或指令,由通信服務程序實現(xiàn)數(shù)據(jù)的打包發(fā)送。
![]() 圖2 控件Text與對應的數(shù)據(jù)幀示意圖
為使通信程序具有可移植性,可采用動態(tài)加載控件的辦法,即在通信程序啟動時,根據(jù)設定的幀長加載相應的Text控件數(shù)。但務必在采用變長幀的通信協(xié)議時,通信服務程序設定的幀長不應小于可能出現(xiàn)的最大幀長。 5、結束語 VB是一種成熟的、面向對象的程序設計語言,采用它編寫的Windows環(huán)境下PC機與下位機的串行通訊軟件具有程序實現(xiàn)簡便、通用性強的特點,減輕了軟件開發(fā)者的工作量。本文利用VB的串行通信控件MSComm,并采用DDE技術較好地實現(xiàn)了上位PC機中組態(tài)王軟件與下位單片機間的雙向通信。組態(tài)軟件編寫的上層人機監(jiān)控界面直觀、友好。實際運行證明該串行通訊服務程序方便可靠,具有較強的實用價值。 |
|