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