摘 要:應用圖形化編程語言LabVIEW,根據松下FP1可編程控制器通信協(xié)議,開發(fā)出FP1PLC與Labview通信驅動程序,并以Labview為平臺構建PLC虛擬控制對象:十字路口交通燈、運料小車等,實現(xiàn)PLC對虛擬對象的控制。
關鍵詞:LabVIEW;PLC控制;虛擬對象;串口通訊
實現(xiàn)PLC對虛擬對象的控制,一方面可擺脫實物模型的限制,另一方面也可大大節(jié)約實物模型的制作成本,文獻[1]利用Turbo C開發(fā)了幾套PLC控制對象的仿真模型,但需要編制一定的程序才能實現(xiàn)。LabVIEW是美國國家儀器公司開發(fā)的虛擬儀器開發(fā)平臺軟件,功能強大靈活,廣泛應用于自動測量系統(tǒng)、工業(yè)過程自動化、實驗室仿真等各個領域[2-4]。文獻[5]雖利用Labview開發(fā)出了一套PLC控制對象:虛擬小車,但PLC與上位PC機間數據交換還需單片機8052作為信號轉換器。本文利用Labview構建十字路口交通燈、運料小車等虛擬控制對象,根據松下FP1 PLC通信協(xié)議,開發(fā)出了Labview與FP1PLC進行串口通信的驅動程序,有效地實現(xiàn)了PLC對虛擬對象的控制,從而可以擺脫硬件模型限制。
1 FP1 PLC與Labview的串口通信
FP系列PLC通信是遵照松下電工專用通訊協(xié)議MEWTOCOL[6]來實現(xiàn)的。計算機通過MEWTOCOL—COM協(xié)議中的命令,可對PLC進行讀、寫和監(jiān)控等。
1、多接點讀命令(RCP)
讀發(fā)送幀格式如下:
2、多接點寫命令(WCP)
寫發(fā)送幀格式如下:

要實現(xiàn)PLC對虛擬對象的控制,問題的關鍵是要根據FP1 PLC通信協(xié)議,利用Labview開發(fā)出PLC與Labview的通信驅動程序?,F(xiàn)結合虛擬交通燈模型,分別以多接點讀命令及多接點寫命令為例加以說明。
1.1 多接點讀命令
[align=center]

圖1 初始化串口框圖程序[/align]
讀取PLC輸出繼電器Y1、Y2、Y3狀態(tài)值可分為以下三個步驟:
第一 初始化串口:串口初始化是通過Serial Port Init模塊來實現(xiàn),設置端口號為0,波特率為9600bps,數據位為8位,停止位為1位,奇偶校驗為奇校驗,框圖程序如圖1所示。
第二 向PLC發(fā)送多接點讀命令的命令參數:向PLC發(fā)送多接點讀命令命令參數是通過Serial Port Write模塊來完成的,其框圖程序如圖2所示??驁D程序左側部分的功能為產生輸入命令的BCC校驗碼,MEWTOCOL-COM協(xié)議采用異或校驗碼,BCC校驗碼產生規(guī)則為發(fā)送方把所有待發(fā)送的ASCII碼字符,從頭到尾按位作異或運算,把結果作為BCC校驗碼發(fā)出。Number To Hexadecimal String子VI將輸入數字轉換成規(guī)定字節(jié)數的字符串。
第三 讀取PLC反饋信息:其框圖程序如圖3所示,讀取PLC反饋信息采用Serial Port Read模塊。在讀取數據之前,需應用Bytes at Serial Port模塊查詢當前串口接收緩沖區(qū)中的數據字節(jié)數,并將該數值存放于byte count中。如果Serial Port Read要讀取的字節(jié)數大于緩沖區(qū)中的數據字節(jié)數,Serial Port Read操作將一直等待,直至Timeout或者緩沖區(qū)中的數據字節(jié)數達到要求的字節(jié)數。圖3中的Subset String函數的功能是從Serial Port Read模塊輸出的字符串中提取控制十字路口交通燈所需輸出繼電器狀態(tài)值的字符,Scan From Sting函數的作用是將Subset String函數所提取的字符串轉換成規(guī)定類型的數據。為了能夠控制十字路口交通燈的亮滅,將其轉換成可控制開關變量的Boolean型數據。
1.2 多接點寫命令
對于急車強通信號的控制,可采用外部硬開關控制,也可在用LabVIEW構建的虛擬模型中設置兩個開關來進行控制。此控制方式需要將PLC程序中的急車強通信號(X1,X2)改為中間繼電器。當LabVIEW前面板的急車強通開關閉合時,就將強通開關的狀態(tài)寫入PLC中間繼電器R3,R4,使程序進入強通運行狀態(tài),其運行結果在LabVIEW前面板顯示。向中間繼電器寫入數據的部分框圖程序如圖4所示。串口初始化部分與多接點讀命令相同。
[align=center]

圖2 向PLC發(fā)送多接點讀命令命令參數框圖程序

圖3 讀取PLC反饋信息框圖程序

圖4 向PLC中間繼電器寫入數據[/align]
2 十字路口交通燈虛擬對象的控制實現(xiàn)
[align=center]

圖5 東西方向有急車時的前面板狀態(tài)[/align]
為了使基于LabVIEW構建的模型能夠正確模擬十字路口交通燈的正常運行,應將所有的讀取和寫入操作編輯成可為頂層VI調用的子VI程序。PLC控制急車強通十字路口交通燈的子VI有:讀取用于控制東西方向紅燈、黃燈的輸出繼電器狀態(tài)值的子VI 2A1;讀取控制東西方向綠燈和南北方向紅燈的輸出繼電器狀態(tài)值的子VI2A2;讀取控制南北方向黃燈和綠燈的輸出繼電器狀態(tài)值的子VI2B1;用于寫入反映急車強通信號的子VIR34。最后將這些子VI組合到一起,并與前面板的交通燈相連就可以實現(xiàn)一個完整的十字路口交通燈模擬控制系統(tǒng)。
圖5是在東西方向有急車強通時的前面板狀態(tài)圖。此時,東西方向的急車強通開關閉合,同時東西方向來車的車頂警示燈變亮。呼叫后東西方向的交通燈變綠,急車強行通過;南北方向的紅燈變亮,以方便急車通過。急車強通信號一旦為OFF,燈的狀態(tài)即轉為來車方向的綠燈閃3次,隨后向下順序運行。
3 小車自動選向、定位系統(tǒng)的控制實現(xiàn)
小車模型前面板的設計包含一個運行邊框、運料小車和幾個用來檢測小車位置的光電開關,是利用簇結構編輯的。對于小車運行的動態(tài)效果處理,采用定義屬性節(jié)點的方法,對位置屬性節(jié)點進行加減常數或者加減0運算來實現(xiàn)小車的運行、停止。
圖6為小車模型的部分框圖程序。子VI SE的功能是用來讀取PLC發(fā)出的控制信號,即用來判斷小車左行、右行還是停止,當PLC發(fā)出正轉(“2”)、反轉(“1”)或停止(“0”)信號時,通過Case 結構將程序轉到對應的位置上,實現(xiàn)位置屬性節(jié)點加、減常數或0。子VI R的功能用來檢測小車位置,即通過光電開關來判斷小車位置,并將位置信號傳送給PLC中間繼電器,再通過PLC程序控制,以此實現(xiàn)小車的定位。
[align=center]

圖6 小車模型框圖程序[/align]
4 結束語
本文以Labview為平臺構建了十字路口交通燈、運料小車虛擬控制對象,基于LabVIEW串口通訊函數,開發(fā)出LabVIEW與PLC通信驅動程序,最后實現(xiàn)了PLC對十字路口交通燈、運料小車虛擬對象的控制,控制效果良好,且具有很好的直觀性,已應用于PLC實驗教學。以此為基礎,可開發(fā)出適應面更為廣泛的虛擬工業(yè)控制對象,實現(xiàn)以PLC為核心的工業(yè)控制系統(tǒng)的虛擬設計、調試,為機電一體化產品的虛擬樣機開發(fā)提供技術基礎。
本文作者創(chuàng)新點:根據松下FP1可編程控制器通信協(xié)議,基于LabVIEW開發(fā)出FP1PLC與Labview通信驅動程序,并成功實現(xiàn)PLC對基于LabVIEW虛擬對象的控制。
參考文獻
[1] 趙玉昆. PLC控制對象的計算機仿真. 計算機測量與控制.2001, 9(6): 30-31, 34
[2]劉君華等. 虛擬儀器圖形化編程語言Labview教程. 西安: 西安電子科技大學出版社. 2001
[3]汪敏生. LabVIEW基礎教程. 北京: 電子工業(yè)出版社, 2002: 4-49
[4]Robert H.Bishop. 喬瑞萍,林欣等譯. LabVIEW 6i 實用教程. 北京: 電子工業(yè)出版社. 2003
[5] 單士源, 張良祖, 劉美蘭. 一種對虛擬對象進行控制的系統(tǒng)設計. 微計算機信息, 2003, 19(11): 21-22
[6] 汪曉光, 孫曉瑛, 等. 可編程控制器原理及應用, 第2版. 北京: 機械工業(yè)出版社. 2001