張素萍,李朝強,高照陽
(1.天津中德職業(yè)技術學院,天津 300350;2.北京經(jīng)濟管理職業(yè)學院,北京 102602;3.上海交通大學,上海市復雜薄板結構數(shù)字化制造重點實驗室,上海 200240)
電參數(shù)測量儀作為工業(yè)生產(chǎn)現(xiàn)場的一種重要測試儀器,在確保產(chǎn)品質量可靠性驗證方面發(fā)揮著至關重要的作用。但是,目前電參數(shù)測量設備通常分布在現(xiàn)場的各個區(qū)域,增加了設備集中監(jiān)控和數(shù)據(jù)采集集中管理的難度,同時由人工進行測試和記錄相關數(shù)據(jù),這必然會產(chǎn)生人力成本過高、生產(chǎn)效率低下的問題。網(wǎng)絡通訊技術的發(fā)展,使得電參數(shù)的網(wǎng)絡化遠程采集成為可能,本文提出了一種利用LabVIEW智能儀器平臺,通過RS485總線對工業(yè)智能儀表進行組網(wǎng)實時數(shù)據(jù)采集程序的新方法。系統(tǒng)以軟件為核心,采用模塊化設計,以微機(PC機或工控機)為上位機,將分布在各處的電參數(shù)測量儀組成自動測量網(wǎng),實現(xiàn)多臺電參數(shù)測量儀采集數(shù)據(jù)的遠程高保真實時傳輸,實現(xiàn)集中化管理,數(shù)據(jù)深加工和信息深處理,以及數(shù)據(jù)保存和多形式輸出等功能[1]。
系統(tǒng)主要由微機(PC或工控機)、RS232/RS485轉換器、電參數(shù)測量儀(各儀表地址不能有相同者)、通信線纜等組成。微機作為上位機,主要功能是利用LabVIEW監(jiān)控軟件向各電參數(shù)測量儀輪流發(fā)送讀數(shù)據(jù)命令、然后接收和處理來自相應電參數(shù)測量儀的數(shù)據(jù)[1]。RS232/RS485轉換器,主要是把微機串口的RS232信號轉換為RS485信號,這樣既可以將多臺電參數(shù)測量儀共用RS485總線組成監(jiān)測網(wǎng),又可以實現(xiàn)數(shù)據(jù)的遠距離傳輸。電參數(shù)測量儀負責采集和處理被測信號、接收微機命令、向微機發(fā)送采集的數(shù)據(jù)等。系統(tǒng)總體設計邏輯框圖如圖1所示。
圖1 系統(tǒng)總體設計邏輯框圖
系統(tǒng)硬件設計主要是利用工業(yè)生產(chǎn)現(xiàn)場設備,組建成一個安全、穩(wěn)定、可靠運行的RS485總線網(wǎng)絡,其中組建設備主要包括微機1臺、21英寸LED顯示器1臺、RS232/485轉換器1個、32臺電參數(shù)測量儀和32臺工業(yè)生產(chǎn)被測設備,通信電纜若干長[2]。其中,微機主要用來運行LabVIEW軟件,對工業(yè)生產(chǎn)現(xiàn)場的相關實時數(shù)據(jù)進行采集及處理,然后通過LED顯示器進行顯示,供管理人員進行查詢和數(shù)據(jù)分析。32臺工業(yè)生產(chǎn)被測設備主要提供電壓、電流、溫度、阻抗等模擬信號量,供32臺電參數(shù)測量儀進行數(shù)據(jù)采集。
鑒于系統(tǒng)采用RS485工業(yè)總線進行多臺智能儀表組網(wǎng)的特點,系統(tǒng)PC機或工控機與智能儀表之間的通信協(xié)議是一種建立在主從結構之上的遵循命令應答的應用層通信協(xié)議,其采用一對多的主從工作方式,即允許一臺主機可以與同一網(wǎng)絡中至少一臺從機進行數(shù)據(jù)通信,而每臺從機都必須有唯一的從機地址,其地址范圍為0~255[3-4]。通信總線是由主機首先發(fā)出命令幀開始,處于同一網(wǎng)絡中的所有從機都將收到主機發(fā)出的命令幀,并且查看命令幀中的地址是否與本機地址一致。如果一致,則從機根據(jù)相應的命令,向主機返回應答幀,從而完成一次通信過程。在任何時刻,各個從機之間都不會以任何形式進行任何方式的通信。針對某個生產(chǎn)廠家某種型號的智能儀表來說,通訊協(xié)議的制定可能會有不同,但是只要該智能儀表具有RS485接口,基于主從結構的通訊協(xié)議的設計思想是一致的。系統(tǒng)中用到的電參數(shù)測量儀這里以8721F型為例。其通訊協(xié)議約定如下:
2.2.1 通訊字節(jié)格式說明
8位數(shù)據(jù)、1位起始位、1位停止位、無校驗。先傳低位,后傳高位,位傳送方式與微機一樣(先傳低位,后傳高位)
2.2.2 通訊幀格式
(1)上位機發(fā)送格式:55H-Address-Command-CS,如表1所示。
表1 上位機發(fā)送命令格式表
(2)儀表回送格式 :AA-Address-Command-Data-CS,如表2所示。
表2 儀表回送數(shù)據(jù)格式表
(3)傳送的速率:300~9 600。
2.3.3 上位機發(fā)送通訊命令及儀表回送數(shù)據(jù)命令
8721F型電參數(shù)測量儀的通訊命令及儀表回送數(shù)據(jù)命令很多,但是與本系統(tǒng)設計相關的命令只有一條:上位機讀取電參數(shù)命令(10H),具體情況如下:
上位機發(fā)送讀取電參數(shù)命令格式:55H+Address+10H+CS;
下位機(儀表)回送數(shù)據(jù)格式:AAH+Address+10H+數(shù)據(jù)(電壓,電流,功率,功率因數(shù),電壓頻率,電流頻率,電壓正峰值,電壓負峰值,電流正峰值,電流負峰值,電壓波峰系數(shù),電流波峰系數(shù))+CS,每個參數(shù)4個字節(jié),回送12個參數(shù),共回送12×4+4=52個字節(jié)。
基于上述的智能儀器組網(wǎng)硬件構架,進行以軟件為核心的網(wǎng)絡化數(shù)據(jù)采集系統(tǒng)的開發(fā)。測控軟件是整個系統(tǒng)的靈魂,其設計的好壞將直接影響著整個通訊組網(wǎng)的可靠性、穩(wěn)定性和數(shù)據(jù)采集的準確性[5]。系統(tǒng)軟件設計是基于微機進行研發(fā)的。針對微機的軟件開發(fā)語言,目前比較流行的有兩種,一種是面向對象的可視化編程語言,例如 VC++,C#,JAVA,DELPHI,VB等,另一種是可視化的圖形編程語LabVIEW。相對于傳統(tǒng)面向對象編程語言,LabVIEW具有編程簡單方便,界面形象直觀,縮短開發(fā)周期,并可根據(jù)用戶的需要對系統(tǒng)做出快速修改等優(yōu)點,所以,本系統(tǒng)選用LabVIEW作為系統(tǒng)應用軟件的開發(fā)平臺。
系統(tǒng)根據(jù)軟件工程模塊化的設計思想,主要分為串行通訊、采集數(shù)據(jù)校驗、采集數(shù)據(jù)浮點數(shù)處理、數(shù)據(jù)顯示、數(shù)據(jù)存儲、數(shù)據(jù)報警等功能模塊,并提供統(tǒng)計、分析、繪制圖表、存儲、打印等工作。把各模塊設計成子Vi形式供主程序動態(tài)的調(diào)用。軟件設計流程如圖2所示。
2.3.1 串口通訊程序功能模塊
在LabVIEW中實現(xiàn)串口通訊有2種方法:一種是利用其自身的VISA(虛擬儀器軟件構架)驅動程序,另一種是利用標準串口通訊函數(shù)在VC++、VB中開發(fā)動態(tài)鏈接庫函數(shù)(DLL)供LabVIEW調(diào)用實現(xiàn)串口通訊。其中,第一種方法(VISA)具有編程簡單,開發(fā)周期短,界面友好,程序可移植性強、易維護的優(yōu)點,所以,本系統(tǒng)選用VISA串口通訊方式。利用VISA串口進行通訊程序設計,首先確保LabVIEW開發(fā)平臺安裝了VISA驅動程序,然后就可以調(diào)用VISA串口函數(shù)進行程序設計。VISA串口函數(shù)主要包括以下幾個[6-7]:
圖2 系統(tǒng)測控軟件設計流程圖
(1)VISA onfigUre Serial Port。用于初始化所選擇的串行口。其中VISA resource name用于選擇所用到的串行口,PC機中常用到的串口號分別用COMl和COM2表示。Flow control用于設置握手方式,buffer size用于設置緩沖區(qū)的大小。Baud rate,data bits,stopbits,parity分別用于設置串行通信的波特率,數(shù)據(jù)位長度,停止位長度,校驗方式。
(2)VISA Write。用于將 write buffer中符寫到 VISA resource name指定的串行接口中。
(3)VISA Read。從ⅥSA resouree name指定的串行接口中讀取規(guī)定字節(jié)數(shù)的數(shù)據(jù),并將這些數(shù)據(jù)傳遞給read buffer。Byte count用于設置要讀取的字節(jié)數(shù)。
(4)VISA Close。用于關閉VISA resource name指定的串行口,讓出串行口的使用權。
本系統(tǒng)中上位機與下位機之間的RS485串口通訊Lab-VIEW程序框圖如圖3所示。
2.3.2 串口通訊數(shù)據(jù)校驗功能模塊
圖3 LabVIEW串行通訊功能模塊程序框圖
該功能模塊主要是上位機LabVIEW對下位機電參數(shù)測量儀回送過來的采樣數(shù)據(jù)進行校驗,判斷接收到1幀數(shù)據(jù)的正確與否,當接收儀表數(shù)據(jù)校驗正確時,才能對其做進一步的處理,否則,向用戶提示錯誤報警信息。根據(jù)系統(tǒng)串口通訊協(xié)議約定,對1幀數(shù)據(jù)的校驗采用依次判斷幀起始符、儀表地址、命令字以及數(shù)據(jù)校驗和是否正確的方法進行設計,具體LabVIEW程序框圖如圖4所示。
圖4 LabVIEW串口通訊數(shù)據(jù)校驗功能模塊程序框圖
2.3.3 4字節(jié)數(shù)IEEE754單精度浮點數(shù)轉換成十進制浮點數(shù)
根據(jù)系統(tǒng)串口通訊協(xié)議約定,可知下位機電參數(shù)測量儀回送的每個采集量為4個字節(jié)的浮點數(shù),那么如何將1組4字節(jié)數(shù)轉換成十進制浮點數(shù),是本數(shù)據(jù)采集系統(tǒng)設計的一個重點。
本系統(tǒng)所采用的浮點數(shù)為IEEE754單精度浮點數(shù),該單精度浮點數(shù)據(jù)由4個字節(jié)組成,其中低字節(jié)在前,高字節(jié)在后,4字節(jié)共32位。IEEE754單精度浮點格式及計算如下:
(1)IEEE754單精度浮點格式(共4字節(jié)32位,從高到低)如表3所示。
表3 IEEE754單精度浮點格式
(2)轉為十進制浮點數(shù)據(jù)公式為
根據(jù)IEEE754單精度浮點數(shù)格式及其計算方法,本功能模塊LabVIEW程序設計如圖5所示。
圖5 IEEE754單精度浮點數(shù)轉換成十進制浮點數(shù)程序框圖
2.3.4 采集數(shù)據(jù)顯示功能模塊
此功能模塊將上位機采集的各個電參數(shù)儀的實時數(shù)據(jù)進行實時數(shù)值顯示和波形圖顯示,以方便管理人員進行查看。利用LabVIEW開發(fā)平臺中豐富的顯示控件,即可設計出系統(tǒng)的LabVIEW顯示界面,如圖6所示。
圖6 系統(tǒng)LabVIEW顯示功能模塊界面設計圖
2.3.5 采集數(shù)據(jù)存儲功能模塊
該功能模塊主要是將上位機LabVIEW采集的電參數(shù)儀實時數(shù)據(jù)存儲到上位機指定位置,便于管理人員今后進行歷史數(shù)據(jù)查看和分析。采集數(shù)據(jù)的存儲方法有2種:一種是將數(shù)據(jù)存儲到EXCEL表格;另一種將數(shù)據(jù)存儲到指定的數(shù)據(jù)庫中[8]。鑒于本系統(tǒng)實時數(shù)據(jù)采集量不是很大,EXCEL表格強大的圖表顯示及數(shù)據(jù)分析能力以及管理人員對EXCEL辦公軟件比較熟悉,本系統(tǒng)采用EXCEL表格對采集的數(shù)據(jù)進行存儲。LabVIEW開發(fā)平臺中有相關的控件函數(shù)可以將采樣數(shù)據(jù)按照一定的格式存儲到EXCEL表格中。具體部分LabVIEW程序設計框圖如圖7所示。
圖7 LabVIEW采集數(shù)據(jù)存儲功能模塊程序設計框圖
2.3.6 采集數(shù)據(jù)報警功能模塊
此功能模塊主要是將上位機采集的指定電參數(shù)儀實時數(shù)據(jù)(電壓、電流、功率、阻抗)與其相對應的設定報警值進行比較,高于該報警值,則主界面上相應的報警指示燈會進行指示,同時會出現(xiàn)報警聲音提示。
本文以帶有RS485接口的智能儀表8721F型電參數(shù)測量儀為例,利用RS485總線與微機的串口,應用智能儀器開發(fā)平臺LabVIEW 2012實現(xiàn)了Windows環(huán)境下微機與多臺帶有RS485總線接口的電參數(shù)測量儀的串行通訊[9],在此基礎上實現(xiàn)了工業(yè)生產(chǎn)現(xiàn)場被測產(chǎn)品的電壓、電流、功率、頻率等模擬電參數(shù)量的智能化采集、顯示、存儲及處理,有效解決了異地分布電參量數(shù)據(jù)實時網(wǎng)絡化集中采集管理問題。已成功應用于工業(yè)生產(chǎn)現(xiàn)場,現(xiàn)場測試表明系統(tǒng)運行穩(wěn)定可靠,能夠有效提高生產(chǎn)效率和產(chǎn)品測試驗證自動化管理水平。整個系統(tǒng)硬件結構簡單,軟件設計魯棒性好,軟硬件易于擴展,能夠應用到不同的工業(yè)生產(chǎn)數(shù)據(jù)采集場合,具有較好的實用性和工程參考價值。
[1]高軍麗,王寶珠.基于RS-485總線的智能分布式測控系統(tǒng)設計.計算機與現(xiàn)代化,2012(3):151-154.
[2]劉柱,朱培逸,趙兢兢,等.基于LabVIEW 黃酒發(fā)酵分布式監(jiān)控系統(tǒng)的設計.儀表技術與傳感器,2012(4):38-40.
[3]樊龍,張文愛.基于Modbus協(xié)議的智能電表數(shù)據(jù)采集傳輸系統(tǒng)的實現(xiàn).制造業(yè)自動化,2014,36(2):120 -125.
[4]顧海勤,楊奕,全毅,等.基于MODBUS協(xié)議的智能儀表與PC機雙向通訊設計.儀表技術與傳感器,2013(12):33-35.
[5]吳卓葵,許勝棋.基于LabVIEW的多點報警溫度監(jiān)測系統(tǒng)設計.制造業(yè)自動化,2014(1):139-142.
[6]陳錫輝,張銀鴻.LabVIEW8.20程序設計從入門到精通.北京:清華大學出版社,2007.
[7]楚現(xiàn)知,吳吉祥,李錦忠.基于LabVIEW的監(jiān)控界面設計與單片機的串行通信.工業(yè)控制計算機,2005,18(7):69-70.
[8]史延齡.基于VB6.0和EXCEL的多臺智能儀表數(shù)據(jù)的接收處理.自動化技術與應用,2010,29(6):81 -84.
[9]侴愛輝,張輝.人工智能儀表在實驗監(jiān)測控制過程中的應用.儀表技術,2011(4):3-6.