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