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