樊新乾,潘存海
(天津科技大學 機械工程學院,天津 300222)
在工業(yè)控制中,基于PLC控制的工程在上/下位機通訊上普遍采用RS-232/RS-485串口或者Ethernet通信模塊進行通訊。串行通信是工業(yè)控制領域應用最為廣泛的通信方式,它的數(shù)據(jù)和控制信息是逐位地傳送出去,因此對于數(shù)據(jù)量較大,通訊距離較遠,實時性要求高的控制系統(tǒng),很難滿足通訊需要[1]。近年來,工業(yè)以太網(wǎng)得到了快速發(fā)展,越來越多的受到工業(yè)控制用戶的青睞,其穩(wěn)定性、準確性和實時性的特點,廣泛應用于電力、水利、冶金、化工、機械和制造業(yè)等控制系統(tǒng)[2]。由此產(chǎn)生了人機界面及各種組態(tài)軟件產(chǎn)品,這些產(chǎn)品的出現(xiàn)簡化了對PLC的控制和操作,使PLC的應用更加方便。但也有其共同的缺點,價格普遍偏高和可二次開發(fā)性較差[3]?;赩isual Basic(VB)平臺的上位機監(jiān)控界面的設計,克服了以上缺點,受到越來越多工業(yè)用戶的關注[4]。然而利用Visual Basic(VB)自身的串口通信控件與網(wǎng)絡控件進行上位機監(jiān)控程序的設計,由于控件的局限性,程序開發(fā)難度較大。由此,本文通過深入研究Windows API函數(shù)的結構,通過調用Windows API函數(shù),設計出一種可同時進行串行通信與Ethernet通信的解決方案,大大提高了上位機監(jiān)控軟件的開發(fā)效率,打破了串行通信控件與網(wǎng)絡控件對編程人員的限制。使得程序開發(fā)人員不用過多關注通信控件的屬性設計,把更多的精力放到監(jiān)控界面的開發(fā)上來。最后,本文以臺達DVPEN01-SL模塊為Ethernet通信載體,以及工控機自帶的COM口為串行通信載體,設計了PLC與上位機串行與Ethernet整合通信的解決方案,為工業(yè)現(xiàn)場用戶提供更多的通信選擇方式,簡化了上位機監(jiān)控界面的編制過程,提高了工業(yè)通信的可靠性與準確性。
Modbus是一種應用層報文傳輸協(xié)議,Modbus報文傳輸服務提供設備之間的客戶機/服務器通信,而這些設備聯(lián)接在一個以太網(wǎng)上,信息傳遞分4類報文:Modbus請求、Modbus證實、Modbus指示和Modbus響應。Modbus請求是服務器在網(wǎng)絡上發(fā)送用來啟動事務處理的報文;Modbus指示是客戶機接收的請求報文;Modbus響應是客戶機發(fā)送的響應報文;Modbus證實是服務器接收的響應報文[5]。如圖1所示。
圖1 Modbus報文類型
Modbus/TCP協(xié)議是Modbus家族中應用于自動控制裝置上的開放的通訊協(xié)議,用于實現(xiàn)不同類型的總線或網(wǎng)絡連接的設備之間的C/S(客戶機/服務器)通信,通過通用的網(wǎng)絡部件在Intranet/Internet上傳輸。物理層和數(shù)據(jù)鏈路層是標準的以太網(wǎng)協(xié)議,網(wǎng)際層是標準的IP協(xié)議,傳輸層是標準的TCP協(xié)議,應用層嵌入Modbus協(xié)議。其網(wǎng)絡結構如圖2所示。
圖2 Modbus/TCP協(xié)議網(wǎng)絡結構模型
API函數(shù)[6](全稱為Application Programming Interface)也稱為應用程序編程接口,Windows API顧名思義就是Windows平臺下的應用程序編程接口。它是操作系統(tǒng)預留給應用程序的一個調用接口,應用程序可通過調用操作系統(tǒng)提供的相關API函數(shù)來使操作系統(tǒng)使用應用程序區(qū)執(zhí)行一些命令(動作)。API函數(shù)是構筑整個Windows框架的基礎。在API函數(shù)下面是Windows 操作系統(tǒng)核心,而它的上面則是華麗的Windows系統(tǒng)的操作界面和各種應用程序。Windows系統(tǒng)結構如圖3所示。
圖3 Windows結構
Visual Basic(VB)就是Windows平臺上優(yōu)秀的可視化編程應用程序,其主要特點為操作簡單,界面友好,所見即所得。提供了大量的類庫和控件(這些類庫或控件就是對API函數(shù)封裝的結果),例如MSComm(Microsoft Communications Control)控件和Winsock控件,它們替代了API函數(shù)。但是它們的應用具有一定的局限性,編程人員需要花很大精力來設計控件的各個屬性。因此我們可以在Visual Basic(VB)中調用自主開發(fā)的API函數(shù)的集合,省略掉上位機監(jiān)控程序中通信控件的屬性設計,簡化成為簡單地函數(shù)調用過程,可大大提高程序開發(fā)效率,拓展更多的功能。
DMT函式庫就是以Windows Winsock API(WSA)為開發(fā)基礎的API函數(shù)的集合。用來開發(fā)支持以Modbus格式連結的工業(yè)產(chǎn)品,開發(fā)者可以通過匯入函式庫的方式來連結串行口及工業(yè)Ethernet的通訊。DMT函式庫提供標準C/C++動態(tài)及靜態(tài)連結方式,并支持Microsoft Visual C++/Visual Basic、Borland C++Builder等軟體開發(fā)環(huán)境。其協(xié)議堆疊圖如圖4所示。
圖4 協(xié)議堆疊圖
本系統(tǒng)所應用的Ethernet通信模塊為臺達 DVPEN01-SL,PLC主 機 為DVP32EH-L。DVPEN01-SL是臺達系列產(chǎn)品Ethernet通訊模塊[7],支持Modbus/TCP通訊協(xié)議,可使用圖控軟件或人機界面,做遠程的監(jiān)控。DVPEN01-SL也可以作為Modbus/TCP的主端,可發(fā)送 Modbus/TCP指令,控制周邊設備。另外在MDI/MDI-X自動檢測功能下,在選擇網(wǎng)絡線時不需跳線。通過DVPEN01-SL Ethernet通訊模塊,可實現(xiàn)上位計算機與PLC主機的通信。D而串口通信則可通過DB9轉8針圓頭RS-232串口線纜直接連接PLC與上位機。由于篇幅所限,DVPEN01-SL的具體設置以及PLC主機的程序設計在此就不再贅述。系統(tǒng)硬件連接方式如圖5所示。
圖5 硬件連接示意圖
我們通過VB6.0,編寫上位機監(jiān)控程序人機交互界面。在VB6.0中使用DMT2.0函式庫,必須首先匯入模塊(module),步驟如下。
1)將DMT.bas添加進項目。
2)復制DMT.dll到項目目錄下。如圖6所示。
圖6 模塊匯入
在臺達PLC中[8],M1072為特殊輔助寄存器,M1072標志設置為ON,可使主程序為RUN狀態(tài),以下按照DMT2.0函式庫使用步驟,并以此為范例,來說明上位機監(jiān)控界面代碼的設計。如圖7所示。
圖7 寄存器動作示意圖
以Modbus功能碼0x05寫入單一線圈M1072為例,其Modbus起始位址0C30,設定線圈狀態(tài)為FF00,PLC主程序為RUN,若設定0000則為STOP。程序編寫過程如下:
首先聲明WIN32 API函數(shù)
Private Declare Function inet_addr Lib "wsock32.dll" (ByVal s As String) As Long。
1)設定通信參數(shù)
2)開啟串行通信
3)數(shù)據(jù)存取
Modbus數(shù)據(jù)請求
4)關閉通訊 Call CloseSerial(conn_num)
1)設定通信參數(shù)
2)開啟通信
3)數(shù)據(jù)存取
4)關閉通信 Call CloseSocket(conn_num)
本監(jiān)控系統(tǒng)主要包括通信模式選擇,PLC運行指示,X軸運動監(jiān)控,Y軸運動監(jiān)控,輸入運行監(jiān)控,以及報錯信息界面,能夠滿足本項目的基本調試運行要求。程序運行界面如圖8所示。
圖8 監(jiān)控程序運行界面
為了對工業(yè)設備進行實時有效的管理與監(jiān)控,完善的兼容性,可靠的穩(wěn)定性,對惡劣環(huán)境的適應性,強大的冗余能力和方便的可管理性,是人們越來越多地在Visual Basic(VB)平臺下開發(fā)上位機監(jiān)控程序的設計的原因,而這也勢必成為本文所述通信方案在越來越多的工業(yè)控制網(wǎng)絡環(huán)境里大顯身手的重要契機。本方案的提出成功的整合了串口通信與Ethernet通信,使得上位機監(jiān)控程序的開發(fā)更為簡單和方便,程序員從繁雜的通信控件設計編程工作中解放出來,也為工業(yè)現(xiàn)場實現(xiàn)冗余設計以及應急通信方面提供了安全可靠的方案,應用前景廣泛。本文所述程序已成功應用于臺達PLC運動控制系統(tǒng)的監(jiān)控界面部分中,實驗證明,該程序安全可靠,運行正常穩(wěn)定。
[1]張輝, 李榮利, 王和平.Visual Basic串口通信及編程實例[M].北京: 化學工業(yè)出版社, 2011.
[2]關學進, 劉娟.基于Modbus/TCP工業(yè)以太網(wǎng)的自動化控制系統(tǒng)[J].電子測試, 2011(4): 4-8.
[3]馮冬芹, 金建祥, 褚健等.工業(yè)以太網(wǎng)關鍵技術初探[J].信息與控制, 2003, 32(3): 219-224.
[4]魏慶福.現(xiàn)場總線技術發(fā)展的新動向[J].工業(yè)控制計算機, 2000(1): 11-12.
[5]霍恒裕.一種Modbus/TCP工業(yè)以太網(wǎng)協(xié)議的結構[J].Computer Knowledge And Technology電腦知識與技術,2008(4): 855-856.
[6]楊本倫, 等.Visual Basic開發(fā)技術大全[M].北京: 清華大學出版社, 2010.
[7]臺達DVPEN01-SL Ethernet通訊模塊操作手冊.
[8]DVP-PLC應用技術手冊.