張暉(1978-)
男,漢族,江蘇南通人,在讀碩士研究生,
講師,研究方向為控制工程。
基金項目:江蘇省交通廳資助項目(項目編號:04X016)。
1 引言
在計算機監控系統中,首先遇到的問題就是通信問題,只有通信問題解決了,才有可能實現計算機對整個工作系統的監控。LabVIEW軟件多用在測試工程中,但隨著科學技術的發展和LabVIEW軟件功能的提高,在監控系統中也可以采用LabVIEW來完成編程。本文主要討論LabVIEW與三菱FX2N系列PLC的通訊問題。
2 利用動態鏈接庫進行串口通信
DLL(動態鏈接庫)是Windows的重要組成部分,包含被程序或者其他動態鏈接庫調用來完成某項工作的函數。使用它的目的就是給不同的應用程序提供完成某項工作的資源或函數。
上海理工大學信息與控制工程研究所開發出了基于FX_BD通訊板的動態鏈接庫。FX_ BD是三菱PLC通信的擴展板,主要分為FX232BD、FX485BD 和FX422BD 等3 種,而實現PLC 串口通信應使用FX232BD、FX485BD 模塊。三菱PLC通信動態鏈接庫的編寫可以通過三菱PLC 上的編程口,利用編程電纜來實現對PLC的控制,但是因為串口通信的參數固定,且對PLC 可操作的寄存器數目有限,所以不采用這種通信方式。考慮到三菱PLC 支持計算機鏈接,采用計算機鏈接通信格式,利用FX_ BD ,可通過單個串行口來控制多PLC ,并且可以設定串口參數,適應不同的傳輸速率。通信時可以調整PLC 中的響應等待時間,支持PLC 內部所有寄存器,擴大了使用范圍,適用于多PLC 聯網和上位機通信等,滿足工業現場的各種控制需要。
使用DLL的動態鏈接庫并不是將庫代碼拷貝,只是在程序中記錄了函數的入口點和接口,在程序執行時才將庫代碼動態地裝入內存,裝載時DLL被映射到進程的地址空間中。動態連接庫DLL調用方式如圖1所示。
圖1 動態鏈接庫調用方式
調用DLL 主要完成如下一些操作: ①打開串口,完成對串口的參數設置; ②完成相關讀寫PLC、控制PLC 運行操作; ③操作完成關閉串口。
3 利用LabVIEW標準串口函數進行串口通信
這種方法適用于LabVIEW和FX2N PLC的編程口通信。
3.1 在Labview中提供了幾個標準的串口通訊函數
在LabVIEW中進行串口通信的基本步驟是:
(1)初始化端口,利用串口初始化函數設定進行串口通訊的端口號、波特率、停止位、校驗位、數據位,注意在Labview中串行端口號是從0開始編號的。
(2)讀寫端口,利用串口讀寫函數。從串口中讀入或輸出數據。
(3)關閉端口。
3.2 FX系列PLC編程口的通信協議
3.2.1 數據格式
數據格式如圖2所示。
圖2 數據格式
3.2.2通信命令
FX系列PLC有4個通信命令,它們是讀命令、寫命令、強制通命令、強制斷命令,如表1所示。表中X—輸入繼電器;Y—輸出繼電器;M—輔助繼電器;S—狀態元件;T—定時器;C—計數器;D—數據寄存器。
表1 通信命令
3.2.3通信控制字符
FX 系列PLC采用面向字符的傳輸規程,用到五個通信控制字符,如表2所示。
表2 通信控制字符
3.3 LabVIEW程序設計
3.3.1串口初始化
圖3是串口初始化流程圖,使用了VISA串口配置函數,將串口設置為波特率9600 bps,7位數據位,偶校驗,1位停止位。
圖3 串口初始化
3.3.2 RS232COMM子VI
圖4 RS232COMM子VI
在完成串口配置后,下一步就是向串口寫入字符,這一步的動作是由“VISA寫入”函數完成的,寫入的數據必須按照三菱FX系列PLC編程口通信協議的格式進行。在串口將數據發送給PLC后,串口與PLC都需要時間執行程序,因此在流程圖中使用了一個毫秒等待計時器。再下一步為讀取串口緩存動作,這一步由“VISA讀取”函數完成,主要功能是“VISA資源名稱端口”指定的設備中讀取由字節總數端口指定長度的數據。而檢測當前串口輸入字節數可由屬性節點“Property Node”中完成,該節點的主要功能為返回串口的輸入緩存中數據的字節數,在使用“VISA 讀取”函數讀取串口前,可以先用VISA Bytes at Serial Port節點檢測當前串口輸入緩存中存在的字節數,然后由此指定“VISA讀取”節點從串口輸入緩存中讀取的字節數,可以保證一次將串口輸入緩存中的數據全部讀出。最后一步就是在完成發送與讀取后關閉占用的串口資源,這一步動作由VISA節點“VISA 關閉”完成,該節點的主要功能為關閉由“VISA資源名稱端口”指定的設備連接,可用于關閉一個已經打開的串口,從而釋放LabVIEW對這個串口資源的占用。
由于在整個監控系統中使用了許多數據寄存器,而根據三菱FX2N系列PLC的編程口協議,最多可以讀取64個字節(即32個數據寄存器),所以,要完成整個生產系統的數據讀取,必須要分開執行多次讀和寫的動作。在這種情況下,就需要考慮讀寫的時序問題。要完成連續的周期性的多點讀寫操作,在LabVIEW中可以使用順序結構。順序結構的功能是強制程序按一定的順序執行。順序結構可分為層疊式與平鋪式。不過這兩種結構執行相同的讀寫操作,時間和順序都相同,都可以實現對于串口的連續多點讀寫。
4 利用MSComm控件進行串口通信
MSComm控件,即Microsoft Communication Control,是Microsoft為了簡化Windows下的串行通信編程而提供的ActiveX控件,它提供了一系列標準通信命令的使用接口,利用它可以建立與串口通信,可以通過串口連接到其他通信設備,發出命令、交換數據以及監視和響應串行連接中發生的事件和錯誤。關于該控件的相關屬性已經有很多文章中提到了,本文不再贅述。
MSComm通信子VI如圖5所示,采用了順序結構,串口配置詳細情況見圖,其中InputMode要設置成“1”(二進制方式),否則數據若超過128則會產生錯誤。MSComm控件提供兩種處理通信的方式,本系統中采用事件驅動方式,即當通信事件發生時,MSComm控件會觸發OnComm事件,LabVIEW可以捕獲該事件,通過檢查其CommEvent屬性便可知道發生的是哪種事件或錯誤。這種方法的優點是響應及時,可靠性高。
圖5 MSComm通信子VI
5 利用MX Component通訊控件包進行串口通信
MX Component是三菱電機開發的,用于支持個人計算機與可編程控制器之間通信的控件包,它不用考慮各種通信協議的不同,只要經簡單處理即可實現通信,因此MX Component能大幅減少編制通信程序的工時。它支持VisualC++ 、Visual Basic 和Access Excel 的VBA、 VBScript、LabVIEW。
MX Component通訊控件包首先需要進行安裝,SW3D5C-ACT-E軟件目前版本3.0,安裝完成后,在操作系統的程序中就會出現相關程序,系統OCX控件列表內也就有相應的驅動OCX。
控件包安裝好后,就需要對其進行配置,點開“Communication Setup Utility”,利用其操作向導,根據PLC站號、波特率、PLC主機類型、連接類型、控制類型等相關信息進行配置,配置完成后的界面如圖6所示,配置完成后還可進行通訊測試。
圖6 MX Component配置完成后的界面
與在LabVIEW中加載MSComm控件相類似,新建一個VI,從在前面板上將“控件”工具欄顯示出來,在“經典容器”中找到“ActiveX容器”,并將其拖放到前面板上,在“ActiveX容器”對象上單擊鼠標右鍵,從彈出的快捷菜單中選擇“插入ActiveX對象”,將彈出“選擇ActiveX對象”對話框,在對話框中選擇“MITSUBISHI ActFXCPU Control”添加到LabVIEW環境中。
圖7 MX Component通信子VI
該VI主要由三大部分組成,第一部分利用Open函數對通信端口進行打開,并返回一個布爾指示,顯示通信狀態;第二部分利用WriteDeviceBlock函數對PLC的數據存儲器D100寫入一個數值456;第三部分利用ReadDeviceBlock函數將D100內的數值讀出并顯示出來。
可以看出,利用MX Component通信控件可以很方便的構筑起LabVIEW與三菱PLC之間的聯系,并且無需考慮通信協議等內容。
6 結束語
實驗證明,本文列舉的幾種方式可以實現LabVIEW與三菱FX2N系列PLC的通訊,可以很方便的實現計算機對PLC的內存單元進行讀寫操作,從而為實現工業現場的監控與現場數據的分析打下基礎。
參考文獻:
[1]邱培林,沈昱明.基于FX_ BD的FX PLC串口通信DLL的實現.自動化儀表,2005,26(5).
[2]王磊,陶梅.精通LabVIEW 8.0.電子工業出版社,2007.
[3]馬振鋒,劉獻禮,王鵬,蔣新苗.基于LabVIEW 7.1 的PC機與PLC通信.哈爾濱理工大學學報,2005,10(5).
[4]張崇智.PC與三菱FX2N型PLC串口通信的實現.機床電器,2005(3).
[5]楊久紅,王小增.MSComm控件實現PC與PLC串行通訊.現代電子技術,2005(5).