張東京,吳國慶,潘廣善,從曙光,張 震
(中國船舶科學(xué)研究中心深海載入裝備國家重點(diǎn)實(shí)驗(yàn)室,江蘇無錫214082)
隨著IT技術(shù)的發(fā)展,艦船控制系統(tǒng)通過PLC+Labview采用開放式用戶通信TCP協(xié)議,將機(jī)電控制和信息管理有機(jī)的結(jié)合,形成管理和控制一體化系統(tǒng)。PLC是專為在工業(yè)環(huán)境下應(yīng)用而設(shè)計(jì)的數(shù)字運(yùn)算操作電子系統(tǒng),通過數(shù)字式或模擬式的輸入輸出來控制各種類型的機(jī)電設(shè)備或生產(chǎn)過程,具有可靠性高、抗干擾能力強(qiáng)等特點(diǎn)。而Labview擁有可視化開發(fā)環(huán)境,集成了工程師和科學(xué)家快速構(gòu)建各種應(yīng)用所需的所有工具,為用戶提供簡明、直觀、易用的圖形編程方式。TCP在PLC和Labview人機(jī)接口之間提供全雙工、面向連接、可靠安全的連接服務(wù),相比于OPC數(shù)據(jù)訪問標(biāo)準(zhǔn)[1],TCP基于字節(jié)流數(shù)據(jù)包進(jìn)行數(shù)據(jù)傳輸,保證了數(shù)據(jù)結(jié)構(gòu)的靈活性[2]。然而,在艦船機(jī)電系統(tǒng)中集中控制器PLC和人機(jī)接口Labview需要交互的數(shù)據(jù)結(jié)構(gòu)存在不確定性,導(dǎo)致系統(tǒng)通信接口程序復(fù)雜、難以擴(kuò)展。為此,本文致力于研究并設(shè)計(jì)通用的數(shù)據(jù)包模型和通信接口程序。
艦船機(jī)電系統(tǒng)主要由動(dòng)力控制系統(tǒng)、電力管理系統(tǒng)、自動(dòng)損管系統(tǒng)和輔機(jī)控制系統(tǒng)組成[3],PLC作為輸入輸出接口,采集機(jī)電系統(tǒng)設(shè)備狀態(tài)信息和發(fā)出控制指令,艦船機(jī)電系統(tǒng)輸入輸出變量可歸納為數(shù)字量輸入DI、數(shù)字量輸出DO、模擬量輸入AI、模擬量輸出AO、浮點(diǎn)數(shù)輸入FI和浮點(diǎn)數(shù)輸出FO,其中數(shù)字量占用1個(gè)二進(jìn)制位,模擬量一般占用16個(gè)二進(jìn)制位,浮點(diǎn)數(shù)一般占用32個(gè)二進(jìn)制位。
TCP協(xié)議以字節(jié)流數(shù)據(jù)包的方式發(fā)送和接收數(shù)據(jù)。鑒于此,PLC發(fā)送數(shù)據(jù)包為一維數(shù)組Bytea[x],x為發(fā)送數(shù)據(jù)包的長度。PLC接收的數(shù)據(jù)包為一維數(shù)組y為接收數(shù)據(jù)包的長度。其中:k為數(shù)字量輸入數(shù);l為數(shù)字量輸出數(shù);i為模擬量輸入數(shù);j為模擬量輸出數(shù);m為浮點(diǎn)數(shù)輸入數(shù);n為浮點(diǎn)數(shù)輸出數(shù);[]為向上取整,k,l,i,j,m,n為非零正整數(shù)。
發(fā)送數(shù)據(jù)包由數(shù)字量輸入D I B、模擬量輸入AIW和浮點(diǎn)數(shù)輸入FID組成。8個(gè)數(shù)字量輸入組成了一個(gè)字節(jié),1個(gè)模擬量輸入由高有效字節(jié)和低有效字節(jié)組成,1個(gè)浮點(diǎn)數(shù)輸入由4個(gè)字節(jié)組成。同樣,接收數(shù)據(jù)包由數(shù)字量輸出DOB、模擬量輸出AOW和浮點(diǎn)數(shù)輸出FOD組成。8個(gè)數(shù)字量輸出組成了1個(gè)字節(jié),1個(gè)模擬量輸出由高有效字節(jié)和低有效字節(jié)組成,1個(gè)浮點(diǎn)數(shù)輸出由4個(gè)字節(jié)組成。發(fā)送數(shù)據(jù)塊和接收數(shù)據(jù)的結(jié)構(gòu)分別見圖1和圖2。
對(duì)于一個(gè)32位浮點(diǎn)數(shù)[4],假設(shè)由雙字M D 100(MB100,MB101,MB102,MB103)表示,其第31位為符號(hào)位,為0表示正數(shù),反之為負(fù)數(shù),其數(shù)值為s;第30~23位為冪數(shù),其數(shù)值為e;第22~0位作為系數(shù),其數(shù)值為t。那么該浮點(diǎn)數(shù)的數(shù)值為:
那么,發(fā)送數(shù)據(jù)包a[x]與PLC輸入輸出變量的關(guān)
圖1 發(fā)送數(shù)據(jù)包的結(jié)構(gòu)Fig.1 Structure of sending packet
圖2 接收數(shù)據(jù)包的結(jié)構(gòu)Fig.2 Structure of received packet
系如下:
接收數(shù)據(jù)包b[y]與PLC輸入輸出變量的關(guān)系如下:
艦船機(jī)電控制系統(tǒng)PLC端通信接口程序主要完成數(shù)據(jù)包與輸入輸出變量的一一映射,程序設(shè)計(jì)較為簡單。Labview端完成艦船機(jī)電設(shè)備控制的前提是要對(duì)數(shù)據(jù)包進(jìn)行編碼和解析。Labview端通信接口程序設(shè)計(jì)遵循模塊化程序設(shè)計(jì)原則,保證各個(gè)子程序功能模塊相對(duì)獨(dú)立、功能單一、結(jié)構(gòu)清晰和接口簡單。Labview端通信接口程序包含數(shù)字量解析子程序(DIParse)、模擬量解析子程序(AI Parse)、浮點(diǎn)數(shù)解析子程序(FI Parse)、數(shù)字量編碼子程序(DO Encode)、模擬量編碼子程序(AO Encode)和浮點(diǎn)數(shù)編碼子程序(FO Encode)。
圖3 發(fā)送數(shù)據(jù)包解析程序Fig.3 Parse program of sending packet
圖4 接收數(shù)據(jù)包編碼程序Fig.4 Encode program of received packet
以西門子S7-1214C為例,發(fā)送數(shù)據(jù)包Bytea[x]和接收數(shù)據(jù)包Byteb [y],x=30,y=26,分 別 進(jìn) 行PLC編程(配置PLC--> 添加發(fā)送和接收數(shù)據(jù)塊-->發(fā)送數(shù)據(jù)程序 -->接收數(shù)據(jù)程序-->編譯下載)和LabVIEW編程(創(chuàng)建TCP連接--> 接收或發(fā)送數(shù)據(jù) --> 關(guān)閉連接),見圖5和圖6。其中,PLC通信負(fù)載設(shè)置為50%。Labview人機(jī)接口界面見圖7。經(jīng)過測試,PLC和Labview數(shù)據(jù)包發(fā)送和接收正確,本實(shí)例數(shù)據(jù)交互時(shí)間9ms。
圖5 PLC程序編寫Fig.5 PLC programming
此外,對(duì)不同數(shù)據(jù)包大小和數(shù)據(jù)交互時(shí)間進(jìn)行了測試,結(jié)果如表1所示。當(dāng)發(fā)送數(shù)據(jù)包和接收數(shù)據(jù)包大小均不大于8M時(shí),數(shù)據(jù)交互時(shí)間不大于14ms。當(dāng)發(fā)送數(shù)據(jù)包和接收數(shù)據(jù)包大小任意一個(gè)大于8 M時(shí),數(shù)據(jù)交互失敗,經(jīng)查詢技術(shù)手冊(cè),可知西門子S71200 TCP通信支持最大發(fā)送長度為8192 bit,支持最大接收長度為8192 bit[4],這與實(shí)際測試結(jié)果一致。
本文結(jié)合艦船機(jī)電控制系統(tǒng)特點(diǎn)和測控技術(shù)領(lǐng)域PLC和Labview兩者優(yōu)點(diǎn),基于TCP通信協(xié)議字節(jié)流數(shù)據(jù)包的數(shù)據(jù)結(jié)構(gòu),提供了通信數(shù)據(jù)包模型構(gòu)造方法和通信接口程序編碼解析方法。在實(shí)際應(yīng)用中,該方法具有以下特點(diǎn):
圖6 Labview程序編寫Fig. 6 Labview programm ing
圖7 Labview人機(jī)接口界面Fig.7 Labview human machine interface
表1 數(shù)據(jù)包大小與數(shù)據(jù)交互時(shí)間Tab.1 Packet size and data interaction time
1)安全性
本方法是基于開方式用戶通信TCP設(shè)計(jì),TCP是可靠安全的數(shù)據(jù)傳輸服務(wù),因而本方法對(duì)數(shù)據(jù)傳輸?shù)陌踩怯斜U系摹?/p>
2)靈活性
本方法是基于字節(jié)流數(shù)據(jù)包設(shè)計(jì),對(duì)發(fā)送、接收的數(shù)據(jù)類型及數(shù)量(在一定范圍內(nèi))沒有限制。另外,集中控制器PLC端僅負(fù)責(zé)輸入輸出數(shù)據(jù)的一一映射,Labview端負(fù)責(zé)完成輸入輸出數(shù)據(jù)的編碼和解析,模塊化的通信接口程序增加了編程調(diào)用的靈活性。
3)通用性
本方法的設(shè)計(jì)不拘泥于某個(gè)系統(tǒng),可應(yīng)用于任何基于字節(jié)流數(shù)據(jù)包數(shù)據(jù)交互技術(shù)的平臺(tái)上。目前該方法已被廣泛應(yīng)用于下位機(jī)基于西門子S7-1200/1500/300/400和上位機(jī)基于Labview的控制系統(tǒng)中。