(中國船舶科學研究中心,江蘇 無錫 214082)
UCAM-70A是日本共和電業株式會社研制的一款應變測量系統,包含主機和多臺擴展機箱,最多可同時測量1000個通道的應變/壓力等數據。在我國多個行業結構監測領域應用廣泛。我所某結構實驗室曾引進多套該型設備,由于當時購買時尚無配套的上位機軟件,所有操作均需在儀器主機上進行。傳統的試驗測試步驟為:1)在儀器主機上進行參數設置,包含通道范圍、通道測量類型、掃描速度等參數;2)手動測試;3)在主機自帶的微型打印機上將各測量通道的測量值打印輸出;4)人工將紙質數據錄入電腦;5)對數據進行后處理、繪圖、分析。由于操作步驟繁瑣,且人工設定參數及人工錄入環節容易出錯,大量時間精力花在參數設置、數據后處理上,總體測試效率很低。即便后來廠家已有配套的上位機軟件,然而其功能仍比較簡單,后處理工作仍很大,難以滿足快速測試及數據處理的需要。迫切需要一款合適的上位機測控軟件以提高工作效率。應變測量系統框架如圖1所示。

圖1 UCAM-70A應變測量系統框圖
1)業務級需求:結構實驗室希望能在較短時間內開發出一款自動化程度較高的上位機測控軟件,大幅提高試驗測試效率;

圖2 軟件流程圖
2)用戶級需求:采用主流的Windows操作系統,界面友好,操作直觀,且運行穩定。
通過需求分析,歸納出軟件需包含的功能要求為:1)上下位機之間數字通訊功能;2)參數設置及下載功能;3)口令登錄及修改功能;4)通道監視及超限報警功能;5)初始平衡功能;6)手動測量及自動定時測量功能;7)自選通道繪圖功能及自動繪圖功能。8)打印及預覽功能;9)儀器操作功能;10)數據后處理線性拓展功能;11)數據綜合匯總功能。
操作系統選用Windows XP,數據庫軟件選用Access,編程工具選用Visual Basic 6.0結合第三方表格控件FlexCell。
2.2.1 軟件流程
軟件流程如圖2所示。軟件啟動后首先彈出歡迎界面,隨即顯示密碼登錄窗體,只有輸入正確的密碼才能進入主窗體。也可在密碼登錄窗體中修改登錄密碼,若兩次輸入的新密碼一致按確定鍵后將保存新密碼并進入主窗體。進入主窗體后主要操作流程為:通訊端口設置及測試→測量通道、結構參數設置→參數下載→初始平衡測量→手動/自動測量→手動/自動繪圖→數據后處理。
2.2.2 通訊編程
1)通訊編程步驟
UCAM-70A的通訊接口為9針D形串口,通訊協議為RS-232C,VB 6.0集成編程環境提供了封裝好的MSCOMM串口通訊控件,可以方便地進行串口參數設置及數據收發控制及故障捕捉處理。通訊編程步驟如下:
(1)在VB6.0集成編程環境中依次單擊菜單“工程”/“部件”,在彈出的“部件”對話框中選中“Microsoft Comm Control 6.0”確定退出,在控件欄即顯示圖標。
(2)將控件欄中的MSCOMM控件圖標拖至主窗體中,命名為MScomm1,可直接在其屬性窗口中修改其串口號、通訊波特率、數據位、停止位等參數進行靜態設置,也可在代碼中給其屬性賦值進行動態設置。通常參數設置為:MScomm1.settings=“9600,e,7,1”。表示波特率=9600,校驗方式為偶校驗,數據位為7位,停止位為1位。
(3)打開串口,方法為:MScomm1.Open,之后用MScomm1.Out=“…”方法將數據發送出去。
(4)串口接收緩沖區收到的數據≥設置的“RThreshold”時觸發中斷,可在中斷處理程序編寫代碼對收到的數據進行解析、運算、轉存等操作。若通訊發生故障,可在故障處理程序中對不同的故障代碼進行重新發送等操作。
2)UCAM-70A串口通訊協議。
UCAM-70A上電后串口處于偵聽狀態,根據收到的不同指令報文(上位PC機)反饋不同長度的狀態報文。主要的幾種通訊協議為:①通訊握手,指令報文=“RS-”,若狀態報文=“232C”,則表示握手成功;②初始平衡:指令報文=“INI”, 狀態報文為設定通道范圍的初始平衡測量值;③測量模式設置:指令報文=“FNC”+通道號(000-999)+測量模式代碼(1-MEAS模式,2-ORIG模式),無狀態報文反饋;④傳感器類型設置:指令報文=“MOD”+通道號(000-999)+傳感器類型代碼(00-30,例如:01:1G120,03:1G240,04:1G35005:1G120/D等);⑤設置測量次數:指令報文=“REP”+測量次數(00-99),無狀態報文反饋;⑥設置測量速度:指令報文=“SPD”+測量速度代碼(00-99),無狀態報文反饋;⑦監視測量:指令報文=“MON1”,狀態報文為周期性更新的各監視通道當前測量值;⑧測量:指令報文=“STA”,狀態報文為周期性更新的各測量通道測量值。
3)通訊編程示例。
①指令報文:“INI”,收到報文格式為:“INI,01,26,2018,22,06,59”(第1幀),“01,001, 9999999,00,0,0,0”(第2幀),…“01,100, 9999999,00,0,0,0” (第101幀)…;②指令報文:“MON1”,收到報文格式為:“MON,01,31,2018,15,23,33”(第1幀),“08,000, 9999999,57,0,0,0”(第2幀),“01,001, 9999999,00,0,0,0”(第3幀)…“01,100, 9999999,00,0,0,0” (第102幀)…;③指令報文:“STA”,收到報文格式為:“RTM,01,26,2018,22,14,09”(第1幀),“01,001, 9999999,00,0,0,0”(第2幀),…“01,100, 9999999,00,0,0,0” (第101幀)…。
2.2.3 FlexCell表格控件的應用
本軟件中需要用到大量的表格,若采用VB自帶的表格控件,不但編程工作量極大,且不夠美觀。本設計采用了第三方商用表格控件FlexCell。FlexCell是主要為Visual Studio系列編程工具開發的表格控件,具有幾個顯著的優點:1)功能全面,包括:輸出Excel文件(不需要安裝Excel)、輸出HTML/CSV文件、輸入/輸出XML文件、打印和打印預覽、凍結行列、合并單元格、排序、圖表、OwnerDraw模式等。2)易于使用,它融合了Excel、MSFlexGrid和DataGridView的很多優點,更符合用戶的使用習慣。安裝包中提供了完整的VB6、VB.NET等語言的演示程序,易于上手。3)輸入方便,它提供了TextBox、ComboBox、CheckBox、Button、HyperLink、Calendar、Time、DateTime和Barcode等單元格類型,可以設置Letter、Upper、Lower、Digital、Numeric等多種類型的Mask,使用Mask能夠自動控制用戶輸入,減少輸入錯誤。4)打印方便,FlexCell提供了方便的打印和預覽功能,可以添加分頁符,可以方便地修改頁面設置,例如:紙張大小、紙張方向、頁邊距、縮放比例、打印范圍、單色打印、頁眉和頁腳、可重復打印的標題行和標題列。
FlexCell表格控件的注冊及使用方法如下:
1)安裝FlexCell控件包,按其官方提供的注冊碼注冊;2)在VB菜單“工程部件”對話框中“控件”選項卡中選擇“FlexCell ActiveX Control module”;3)在VB控件面板中點擊“Grid”按鈕,然后在窗體所需放置表格控件的位置拉出表格,之后即可對該表格控件進行行列標題、字體顏色、背景顏色、單元格類型等顯示屬性設置及數據填充等操作。
2.2.4 圖片自動插入Word文檔方法
對于測量通道較多的測試任務,數據量大,所需繪制的圖形很多,若采用手動的圖片插入方法,則后期數據處理的工作量也很大。本軟件采用了引入Word對象,將圖片批量插入Word文檔的處理方法,極大減少了后處理工作量。使用方法為:1)在VB菜單“工程引用”對話框中添加“Microsoft Word 9.0 Object Library”引用,一般定位為“c:windowssystem32MSWORD9.OLB”。2)在窗體通用聲明中定義word對象,例如:Private wdApp As New Word.Application;3)之后在需要插入圖片到Word文檔的事件代碼中進行Word文檔創建、集合定義、屬性設置及圖片插入、保存及退出操作。示例如下:
1)通用聲明
Private wdApp As New Word.Application
Private mySelection As Word.Selection
2)創建文檔及屬性設置
Set wdApp = New Word.Application
wdApp.Documents.Add
Set mySelection = wdApp.Documents.Application.Selection
With mySelection
.Font.Name = "宋體"
.Font.Size = 12
.ParagraphFormat.Alignment = 1
End With
3)插入圖片
mySelection.InsertAfter TestName & "_曲線匯總"
mySelection.InsertParagraphAfter
mySelection.Collapse Direction:=wdCollapseEnd
For Drawi=0 to Pmax
mySelection.InlineShapes.AddPicture jpgfilenm '插入圖片
mySelection.InsertParagraphAfter '換行
mySelection.Collapse Direction:=wdCollapseEnd '光標到最后
mySelection.InsertAfter "第" & Drawi & "組曲線"
mySelection.InsertParagraphAfter
mySelection.Collapse Direction:=wdCollapseEnd
Next
4)保存并退出
wdApp.ActiveDocument.SaveAs wordfilenm
wdApp.ActiveDocument.Close
wdApp.Quit False
2.2.5 數據庫表結構及防錯處理
本設計選用了Access數據庫。數據表分成兩類,一類是靜態數據表,例如“通道測量參數”、“通道結構參數”、“初始平衡值”等,這些數據表的行列結構在每一個測量任務中是固定不變的;另一類是動態數據表,例如“測量結果”、 測量時間”、“測量修正值”、“應力計算”等,這些數據表的行列結構隨測量次數的增加會不斷變化。由于最終用戶希望數據庫的結構盡量直觀,最好是用Access數據庫打開表格即可看到直觀的行標題和列標題及格式化的數據,所以在定義數據表結構時沒有采取傳統的以列為字段、以行為記錄的方式,而是每測量一次,數據表在最右邊增加一列,行數保持不變的數據結構。這就要求每測量一次數據,每個動態數據表需要重寫一次。為了防止重寫數據表時因意外失敗導致原先測量的數據丟失,在每完成一次新的測量需要刷新數據表時,把原數據庫以別名另存(例如Test2.mdb),再打開數據庫(例如Test.mdb)進行更新數據表操作,這樣始終保持有兩個數據庫文件,只差一次測量數據。萬一在更新數據表時出錯導致現用數據庫文件(Test.mdb)損害,可關閉軟件,并將損壞的現用數據庫文件刪除,將舊數據庫文件(Test2.mdb)更名為現用數據庫文件(Test.mdb),再運行軟件,則原先的數據可自動讀入并繼續測量,只是丟失了一次測量數據而已。
2.2.6 軟件主界面
軟件界面采用一個主窗體和多個子窗體結構,便于管理。軟件啟動后首先彈出動畫歡迎窗體,之后顯示密碼登錄窗體,輸入密碼正確后方可進入主窗體。在密碼登錄窗體中也可以修改密碼。主窗體界面如圖3所示:主窗體最上方為菜單,其下方為快捷按鈕。軟件操作順序一般為:1)通訊端口設置,測試通訊正常;2)環境設置;3)設置通道測量參數并保存;4)設置通道結構參數并保存;5)參數下載;6)初始平衡,并保存;7)測量并保存;8)數據后處理。

圖3 軟件主窗體
測量窗體中分成“本次測量”、“數據匯總”、“手動繪圖”、“自動繪圖”四個分頁,如圖4所示。“本次測量”頁顯示所有通道在同一次測量中的所有數據及單位;“數據匯總”頁顯示所有通道歷次的測量數據。
“手動繪圖”頁中可自由設定X軸和Y軸通道,以靈活的方式顯示不同通道的數據耦合關系,如圖4所示。

圖4 手動繪圖窗體
“自動繪圖”頁中X軸可設定為“壓力”通道測量值或“時間”,Y軸為各應變通道測量值,軟件自動繪制出所有通道的曲線圖,并可自動生成全部圖形文件或自動將圖片插入Word文檔,也可直接打印當前繪圖,如圖5所示。

圖5 自動繪圖窗體
測控軟件運行于具備RS-232C串口的臺式機或筆記本電腦時,與UCAM-70A通訊穩定可靠。由于計算機硬件的更新速度很快,較新的臺式機一般不再把RS-232C串口作為標配,特別是便攜式電腦,新款機器很少再配置串口。串口擴充一般有兩種方式,一種是采用常規的串口擴展卡,另一種是采用USB轉232口的轉換電纜。經測試,采用多款市售的串口擴展卡進行通訊時沒有發現通訊異常問題,但在使用某款無源的USB轉232口的外置式轉換模塊通訊時出現了異常,采用替換法,將該轉換模塊用于某著名廠家的PLC及其自身的PLC編程軟件通訊時也出現了通訊異常現象,經串口數據后臺偵測發現其數據有偶然丟失現象,可以判定是該款轉換模塊質量問題,應是抗電磁干擾能力較弱所致。經實測比較,一般有源的USB轉232口轉換模塊通訊比較穩定可靠。
軟件開發基本結束后轉入測試階段,分別與實驗室的三臺UCAM-70A進行通訊測試,發現三臺機器的通訊協議有細微差別,白色機箱與綠色機箱的機器在單位代碼上有細微差別,導致在用到某些單位時計算結果錯誤。為解決此問題,在軟件界面上增加了一個參數設置選項,用戶使用前先將機箱類型參數設置為與實際機箱類型一致,軟件代碼根據機箱類型參數分別對涉及單位的計算部分進行差別化處理。
繼UCAM-70A之后,共和儀器又推出了新款應變測試儀UCAM-60B,機器更輕巧,更便攜,還增加了以太網通信接口。采用以太網通信接口可以大幅提升通信速率,特別是在較多通道同時測量的場合。為了將該套測控軟件既可用于串口通信又可用于以太網口通信,對UCAM-60B的以太網通信協議進行了分析,對通信部分的代碼進行了局部改寫,主要采用Winsock控件進行通信握手及數據收發。經實際通信測試,與串口通信方式相比,在較少通道測試時效率差別不大;但在較多通道同時測試時測量效率可大幅提升。
基于對UCAM-70A技術手冊的深入研究及串口偵測,在掌握其串口通訊協議規則的基礎上,運用Visual Basic編程工具結合第三方表格控件及數據庫組件開發了基于PC機的上位機測控軟件,實現了便捷的參數設置、高效的測量與后處理功能,極大地提升了測量及后處理效率及數據可靠性。并通過對UCAM-60B等其它系列應變儀通訊協議的比較研究,對軟件的通訊協議部分作局部修改后可廣泛適用于UCAM系列應變儀,該軟件設計方法及成果在結構監測領域具有借鑒及推廣應用價值。