曹 陽, 盧 翠, 許 冰, 林 峰
(1.沈陽航空航天大學 電子信息工程學院,遼寧 沈陽 110136;2.沈陽工業(yè)大學 軟件學院,遼寧 沈陽 110023)
飛機電器裝置主要是用于對機載設(shè)備進行自動化控制,其工作狀態(tài)直接關(guān)系到機載系統(tǒng)工作的可靠性,因此對其檢測及故障判斷極其重要。
目前,在飛機電器裝置檢測系統(tǒng)的設(shè)計方案上,有學者提出上位機用匯編語言編程,硬件以單片機和液晶顯示子系統(tǒng)為核心構(gòu)成檢測系統(tǒng),該系統(tǒng)可擴展性好、檢測效率高,但可靠性低[1];還有一些學者將Visual C++軟件平臺與嵌入式PC/104硬件設(shè)備結(jié)合構(gòu)成檢測系統(tǒng),該系統(tǒng)界面較好、操作方便,但是費用較高[2]。針對以上方案的優(yōu)缺點和LabVIEW在監(jiān)控系統(tǒng)中的應(yīng)用[3-4],文中提出了采用LabVIEW與PLC結(jié)合的方式設(shè)計飛機電器裝置檢測系統(tǒng),這樣可以將LabVIEW所具有的界面友好、編程直觀、顯示多樣化的特點和PLC可靠性好、抗干擾能力強的優(yōu)點有機結(jié)合,構(gòu)成界面友好、功能完善、檢測便捷的系統(tǒng)。
LabVIEW與PLC相結(jié)合構(gòu)成的檢測系統(tǒng)工作時有測試程序的傳送和測試結(jié)果的返回,這就需要裝有LabVIEW軟件平臺的計算機與PLC進行通信。通信方式主要有:1)采用OMRON公司的C200HG系列PLC,用RS232直接將HOST LINK模塊連接到上位機,該方式通信速度快,穩(wěn)定性高,但是可擴展性較差[5];2)采用OPC技術(shù),該方式的軟件開發(fā)周期短,可靠性和穩(wěn)定性較好,但需要配套的軟硬件設(shè)備,費用高[6]。除了以上方式,還可以在西門子S7-200 PLC的自由口模式(Free Port Mode)下自定義通信協(xié)議,進而實現(xiàn)串口通信[7]。S7-200PLC的自由端口通信模式有足夠的靈活性,用戶可以根據(jù)需要自行定義通信協(xié)議,包括計算機的發(fā)送信息格式和PLC反饋信息格式的約定。
文中應(yīng)用LabVIEW8.5為開發(fā)平臺,結(jié)合以S7-200 PLC為核心的硬件,提出了基于LabVIEW8.5與S7-200PLC的飛機電器裝置檢測系統(tǒng)的設(shè)計,根據(jù)實際工程應(yīng)用證明,該系統(tǒng)性能良好,檢測效率高。
計算機與PLC是通過RS-232/485轉(zhuǎn)接電纜通信的,為了避免通信過程中各方爭用通信線路,采用主從方式,即PC機為主機,PLC為從機[8],二者連接的點對點方式如圖1所示。當然,也可以是一臺主機多臺從機的一對多方式。
圖1 PC機與PLC的通信示意圖Fig.1 PC and PLC communication diagram
計算機發(fā)送信息的基本格式如表1所示[9]。當通信系統(tǒng)中有多臺PLC從機時,發(fā)送信息的格式中還應(yīng)包含對目標從機地址的定義。
表1 發(fā)送信息的格式Tab.1 Format of sending information
發(fā)送信息中包含控制字符和操作數(shù)據(jù),因此,為了統(tǒng)一其數(shù)據(jù)格式、防止結(jié)束字符和數(shù)據(jù)字符混淆,所有字符都采用十六進制ASCII形式輸出。這樣,使用ASCII碼的30H到39H和41H到46H就可以表示任何數(shù)值數(shù)據(jù)了,而控制字符可以使用各自的ASCII碼。
文章在上位計算機中定義一個24字符長的發(fā)送信息指令,由16字符長的控制字符和8字符長的操作數(shù)據(jù)組成。計算機每次發(fā)送一條指令給下位機,實現(xiàn)一次讀/寫操作。具體的發(fā)送信息格式如表2所示。
字符1為起始字符,采用大寫“S”作為起始字符;字符2、3為目標PLC的站地址,用來標明要發(fā)送數(shù)據(jù)的目標地址,各個PLC據(jù)此判斷是不是發(fā)給自己的數(shù)據(jù);字符4~11為目標寄存器地址,其中字符4、5為寄存器類型(00H:I寄存器,01H:Q 寄存器,02H:V 存儲區(qū),04H:M 存儲區(qū)),字符 6、7 為寄存器號,字符8~11為地址,如VB100為0200 0064H,是V存儲區(qū)中的字節(jié),地址是64H;字符12為指令類型,該字符說明上位機發(fā)出的是讀指令還是寫指令,控制PLC做相應(yīng)的讀/寫操作,這里約定 R(52H)代表讀,W(57H)代表寫;字符13為讀/寫字節(jié)數(shù),字符14~21為寫入PLC的數(shù)據(jù),占用8個字符;字符22、23為校驗碼,是運用布爾函數(shù)中的“復合運算”節(jié)點中的“異或”模式,對字符2~21中的數(shù)據(jù)做異或運算的結(jié)果;字符24為結(jié)束字符,采用大寫“O”作為發(fā)送信息結(jié)束字符。
發(fā)送信息格式在上位機中的實現(xiàn)過程是,以LabVIEW8.5為開發(fā)平臺,利用“連接字符串”函數(shù)將發(fā)送信息封裝打包,通過VISA節(jié)點中的VISA Write節(jié)點發(fā)送給PLC。相關(guān)程序?qū)⒃诰幊虒崿F(xiàn)部分中給出。
表2 具體的發(fā)送信息格式Tab.2 Idiographic format of sending information
PLC每接收到上位機的一條指令,就返回一條13字符長的反饋信息,其格式如表3所示。
表3 反饋信息的格式Tab.3 Format of feedbacking information
字符1為起始字符,標明反饋信息的開始,對于不同的從機需要定義不同的起始字符,上位機由此識別反饋信息來自哪個從機;字符2為狀態(tài)信息,表明PLC對上位機傳送的控制命令和數(shù)據(jù)的執(zhí)行狀態(tài)(01H:讀取正確,02H:接收正確,03H:校驗碼有誤,04H:非法指令);字符 3~10為數(shù)據(jù)區(qū),是PLC要反饋給上位機的數(shù)據(jù),占用8個字符,以十六進制ASCII形式表示;字符11、12為校驗碼,是對字符2~10中的數(shù)據(jù)做異或運算的結(jié)果,發(fā)送給上位機用于判斷傳輸?shù)臓顟B(tài);字符13為結(jié)束字符,標明反饋信息結(jié)束,各從機可選用同一結(jié)束字符,采用小寫“o”作為反饋信息結(jié)束字符。
上位機通過LabVIEW8.5開發(fā)環(huán)境中的VISA Read節(jié)點讀取下位機的反饋信息,首先對其解析,主要是用到字符串函數(shù)中的“截取字符串”,然后對解析得到的數(shù)據(jù)區(qū)的數(shù)據(jù)進行相應(yīng)的分析和處理,以便監(jiān)測下位機的工作狀態(tài)。
LabVIEW中程序設(shè)計的總體思路:首先,將發(fā)送指令中的控制字符和數(shù)據(jù)區(qū)數(shù)據(jù)通過“連接字符串”函數(shù)封裝打包;然后將打包好的發(fā)送指令作為“VISA Write”節(jié)點的輸入,經(jīng)轉(zhuǎn)接電纜發(fā)送給PLC。具體程序如圖2、圖3所示,其中圖2為計算異或校驗碼、連接字符串的程序,此處封裝得到的結(jié)果是要發(fā)送給下位機的信息;圖3為串口通信程序。
圖2 發(fā)送信息的封裝Fig.2 Package of sending information
圖3中的“發(fā)送給PLC的命令和數(shù)據(jù)”就是圖2中的“發(fā)送信息”。在該串口通信程序中,對串口的配置是,VISA資源名稱即串口號:COM1,波特率:9 600 b/s,8位數(shù)據(jù)位,無奇偶校驗,1位停止位,無軟件握手協(xié)議(流控制)。
完成了發(fā)送信息的封裝和傳送,下一步的工作是處理PLC返回的信息,LabVIEW利用“截取字符串”函數(shù)解析PLC返回的信息[10],具體過程如下。首先,截取第一個字符可以判斷是哪個從機的反饋信息;然后讀取第二個字符,檢查PLC對命令的執(zhí)行狀態(tài);若寫入正確,則通過圖4中的程序讀取返回信息中的數(shù)據(jù)區(qū)內(nèi)容,進一步作相應(yīng)的分析和處理,以便對儀器設(shè)備進行實時控制。部分程序如圖4所示。
要采用自由端口模式與上位機進行通信,PLC必須處于運行(RUN)狀態(tài),而且 PLC是通過調(diào)用發(fā)送指令(XMT)、接收指令(RCV),接收中斷、發(fā)送中斷來完成通信操作的,因此,為使通信正常進行,需要對PLC自由端口的控制寄存器和RCV指令進行初始化。部分程序如下:
圖3 串口通信程序Fig.3 Serial communication program
圖4 讀取PLC返回信息Fig.4 Read returning information of PLC
以下是初始化子程序:
完成對控制寄存器和RCV指令的初始化后,還需要設(shè)置專門的緩沖區(qū),用來存放接收到的控制命令和操作數(shù)據(jù)以及要發(fā)送的反饋信息,并定義標志位。主要包括以下幾個子程序:
1)接收子程序PLC首先判斷指令中的目標地址,與本機地址一致,并且指令類型為W(57H),校驗碼正確,則執(zhí)行接收子程序,把數(shù)據(jù)存放在PLC的存儲區(qū)中,并發(fā)送“接收正確(02H)”的反饋信息。
2)讀取子程序PLC首先判斷指令中的目標地址,與本機地址一致,并且指令類型為R(52H),校驗碼正確,則執(zhí)行讀取子程序,把要讀取的數(shù)據(jù)轉(zhuǎn)換為十六進制ASCII形式并存儲到緩沖區(qū),計算校驗碼,發(fā)送反饋信息。
3)RCV_OVER接收完成中斷程序,用于把接收緩沖區(qū)的數(shù)據(jù)存放到相應(yīng)的存儲區(qū),計算校驗碼,若無校驗錯誤則復位校驗錯誤指示位,若有誤則置位校驗錯誤指示位。
4)XMT_OVER發(fā)送完成中斷程序,發(fā)送完成后允許新的接收,緩沖區(qū)清零,復位各個標志位。
采用上述通信協(xié)議的定義格式,文中實現(xiàn)了基于LabVIEW8.5開發(fā)平臺的計算機與PLC的飛機電器裝置檢測系統(tǒng)。該檢測系統(tǒng)的前面板如圖5所示。
圖5 檢測系統(tǒng)前面板Fig.5 Front panel of detection system
控件“測試目錄選擇”被按下后,界面切換到測試目錄選擇主菜單界面,用于選擇要檢測的電器裝置;“開始”、“確認”、“單步測試”、“暫?!卑粹o用于控制檢測過程的開始、單步測試、暫停等操作。右側(cè)是檢測結(jié)果顯示界面:標準值中以指示燈的不同顏色來表示不同的測試功能;測試值中,指示燈“綠色”表明測試值與標準值一致,“紅色”表示有故障,同時以對話框形式給出故障信息,用戶可以根據(jù)需要選擇退出檢測或是忽略故障繼續(xù)進行下一步檢測。
實驗表明,檢測系統(tǒng)的通信正常,能夠完成檢測工作,操作方便、界面友好。
以LabVIEW8.5為軟件開發(fā)平臺、S7-200系列PLC為底層硬件,在自由端口模式下定義通信協(xié)議,實現(xiàn)了二者的串行通信。其優(yōu)點是:1)LabVIEW作為軟件平臺,提供了豐富的用于開發(fā)用戶界面的對象,包括圖形、圖表、按鈕與開關(guān)、指示燈等,用戶可以編制友好的人機界面,添加報警功能,進行系統(tǒng)的監(jiān)控和管理,彌補了PLC不易實時顯示圖表和曲線、無良好界面、不便于監(jiān)控等缺陷。2)PLC有良好的可擴展能力和適應(yīng)性,以其為核心構(gòu)成的控制系統(tǒng)具有可靠性高、編程簡單靈活、抗干擾能力強的特點,可以執(zhí)行可靠有效的分散控制。3)采用自由端口模式下的通信,不用購買軟件,可以讀取PLC中任意存儲區(qū)的數(shù)據(jù),成本低,靈活性好,特別適合于小規(guī)模的控制系統(tǒng)。自由端口模式下通信協(xié)議的設(shè)計還可以結(jié)合Internet實現(xiàn)PLC控制系統(tǒng)的遠程監(jiān)測,具有較大的推廣空間和較好的應(yīng)用前景。
[1]賈承軍,張先勇.航空器機載繼電器盒測試儀的設(shè)計[J].機電產(chǎn)品開發(fā)與創(chuàng)新,2009,22(4):134-135.
JIA Cheng-jun.ZHANG Xian-yong.The design of aero-relay box testing instrument[J].Development&Innovation of Machinery&Electrical Products,2009,22(4):134-135.
[2]張樹勇.飛機繼電器盒綜合檢查儀研制[D].沈陽:東北大學,2007.
[3]WANC Chun-chieh,Hsia K H,SU Kuo-lan,et al.Application of a remote image surveillance system in a robotic weapon[J].Artif Life Robotics,2010,15:284-290.
[4]HlaM T,MarlarK,Zaw M N.Development of process monitoring system in drilling process using fuzzy rules[J].Int J Syst Assur Eng Manag,2011,2(1):78-83.
[5]謝建君,王洪猛,徐春梅.基于LabVIEW與PLC的串級控制系統(tǒng)設(shè)計[J].工業(yè)儀表與自動化裝置,2005(2):54-56.
XIE Jian-jun,WANG Hong-meng,XU Chun-mei.The design of a cascade control system based on LabVIEW and PLC[J].Industrial Instrument&Automation, 2005(2):54-56.
[6]羅文鋒.基于LabVIEW與PLC的船舶電站監(jiān)控系統(tǒng)的研究[D].武漢:武漢理工大學,2009.
[7]湯光華,吳青.自由口模式下S7200PLC與上位機的通信[J].微計算機信息,2008,24(5-1):62-64.
TANG Guang-hua,WU Qing.Communication between host computer and S7200 PLC under Free-port mode[J].Microcomputer Information,2008,24(5-1):62-64.
[8]王晉杰.基于LabVIEW的PC與PLC實時監(jiān)控的實現(xiàn)[J].武漢理工大學學報,2006,28(11):53-55.
WANG Jin-jie.Implementation of PC and PLC real-time control based on LabVIEW[J].Journal of WUT,2006,28(11):53-55.
[9]馬振鋒,劉獻禮,王鵬,等.基于LabVIEW7.1的PC機與PLC通信[J].哈爾濱理工大學學報,2005,10(5):30-36.
MA Zhen-feng,LIU Xian-li, WANG Peng,etal.Serial communication between PLC and PC based on LabVIEW7.1[J].Journal of Harbin UNIV:SCI.&TECH,2005,10(5):30-36.
[10]柳劍,陳於學,楊曙年.基于編程口的三菱PLC與PC機串行通信實現(xiàn)[J].自動化儀表,2010,31(11):31-37.
LIU Jian,CHEN Yu-xue,YANG Shu-nian.Implementing serial communication between PC and MITSUBISHI PLC based on self-contained programming port[J].Process Automation Instrumentation,2010,31(11):31-37.