鋰離子電池組監(jiān)控系統(tǒng)研究與實(shí)現(xiàn) — 上位機(jī)程序設(shè)計(jì)
在ClassWizard中為新創(chuàng)建的通信控件定義成員對(duì)象(CMSComm m_Serial),通過(guò)該對(duì)象便可以對(duì)串口屬性進(jìn)行設(shè)置,MSComm控件共有27個(gè)屬性,這里只介紹其中幾個(gè)常用屬性:CommPort設(shè)置并返回通訊端口號(hào),缺省為COM1. Settings以字符串的形式設(shè)置并返回波特率、奇偶校驗(yàn)、數(shù)據(jù)位、停止位。
本文引用地址:http://m.butianyuan.cn/article/274173.htmPortOpen設(shè)置并返回通訊端口的狀態(tài),也可以打開(kāi)和關(guān)閉端口。
Input從接收緩沖區(qū)返回和刪除字符。
Output向發(fā)送緩沖區(qū)寫(xiě)一個(gè)字符串。
InputLen設(shè)置每次讀入的字符個(gè)數(shù),缺省值為0,表明讀取接收緩沖區(qū)中的全部?jī)?nèi)容。
InBufferCount返回接收緩沖區(qū)中已接收到的字符數(shù),將其置0可以清除接收緩沖區(qū)。
InputMode定義Input屬性獲取數(shù)據(jù)的方式(為0:文本方式;為1:二進(jìn)制方式)。
RThreshold和SThreshold屬性,表示在OnComm事件發(fā)生之前,接收緩沖區(qū)或發(fā)送緩沖區(qū)中可以接收的字符數(shù)。
打開(kāi)所需串口后,需要考慮串口通信的時(shí)機(jī)。在接收或發(fā)送數(shù)據(jù)過(guò)程中,可能需要監(jiān)視并響應(yīng)一些事件和錯(cuò)誤,所以事件驅(qū)動(dòng)是處理串行端口交互作用的一種非常有效的方法。使用OnComm事件和CommEvent屬性捕捉并檢查通訊事件和錯(cuò)誤的值。發(fā)生通訊事件或錯(cuò)誤時(shí),將觸發(fā)OnComm事件,CommEvent屬性的值將被改變,應(yīng)用程序檢查CommEvent屬性值并作出相應(yīng)的反應(yīng)。
5.2上位機(jī)程序方案
上位機(jī)程序主要完成數(shù)據(jù)顯示、參數(shù)設(shè)置、存儲(chǔ)器讀取、數(shù)據(jù)校正等功能。
該程序通過(guò)串口與下位機(jī)板進(jìn)行通信,將需要顯示的信息和設(shè)置的參數(shù)等信息進(jìn)行傳輸。
上位機(jī)程序功能框圖如下圖5.1所示。
圖中下位機(jī)通過(guò)串口與上位機(jī)進(jìn)行數(shù)據(jù)通信。根據(jù)通信協(xié)議,將雙方傳輸?shù)臄?shù)據(jù)進(jìn)行轉(zhuǎn)換,得到對(duì)應(yīng)的數(shù)值,在進(jìn)行相應(yīng)的操作。
下面分別對(duì)數(shù)據(jù)顯示、參數(shù)設(shè)置、數(shù)據(jù)保存、數(shù)據(jù)校正等功能進(jìn)行如下分析。
5.2.1數(shù)據(jù)顯示
上位機(jī)程序的數(shù)據(jù)顯示功能直接放置在主程序界面上,如下圖5.2所示。
主界面主要包含顯示鋰電池電壓、溫度、電流、電量、狀態(tài)等信息的文本控件和參數(shù)設(shè)置、數(shù)據(jù)校正、存儲(chǔ)器讀寫(xiě)的按鈕以及保存數(shù)據(jù)的選項(xiàng),另外還可對(duì)串口號(hào)進(jìn)行選擇。
5.2.2參數(shù)設(shè)置
參數(shù)設(shè)置子窗口如圖5.3所示。由于需要設(shè)置的參數(shù)較多,所以在參數(shù)設(shè)置子窗口中將所有參數(shù)分為系統(tǒng)參數(shù)、電流參數(shù)、電壓參數(shù)、溫度參數(shù)、均衡參數(shù)、電量參數(shù)和版本參數(shù)共七類,在一個(gè)復(fù)選頁(yè)中進(jìn)行顯示和設(shè)置。
系統(tǒng)參數(shù)包含電池類型、電池?cái)?shù)、電池內(nèi)阻、數(shù)據(jù)采樣頻率、睡眠模式使能、睡眠模式喚醒時(shí)間、用戶權(quán)限、系統(tǒng)密碼等。
電流參數(shù)包含充電過(guò)載電流、放電過(guò)載電流、判斷過(guò)載電流持續(xù)時(shí)間、短路電流、放電過(guò)流恢復(fù)時(shí)間、充電過(guò)流恢復(fù)時(shí)間、短路恢復(fù)時(shí)間等。
電壓參數(shù)包含過(guò)充電壓、釋放過(guò)充電壓、過(guò)放電壓、釋放過(guò)放電壓、最大不平衡電壓、判斷過(guò)充過(guò)放電壓持續(xù)時(shí)間等。
溫度參數(shù)包含外部溫度通道1使能、外部溫度通道2使能、判斷溫度超范圍持續(xù)時(shí)間、可承受外部最高溫度、釋放可承受外部最高溫度、可承受外部最低溫度、釋放可承受外部最低溫度、可承受內(nèi)部最高溫度、釋放可承受內(nèi)部最高溫度、可承受內(nèi)部最低溫度、釋放可承受內(nèi)部最低溫度等。
均衡參數(shù)包含均衡使能、每組均衡電池?cái)?shù)、均衡模式、均衡開(kāi)始電壓、均衡壓差等。
電量測(cè)量參數(shù)包括電量測(cè)量電壓一、測(cè)量電壓二、測(cè)量電壓三、測(cè)量電壓四、測(cè)量電壓五等。
另外,還有版本版本號(hào)、工廠名、設(shè)備編號(hào)等。
5.2.3數(shù)據(jù)校正
數(shù)據(jù)校正子窗口如圖5.4所示。
校正采用線性修復(fù)法,即利用公式:A=K*S+B進(jìn)行校正,其中A表示實(shí)際測(cè)量值,S表示通過(guò)系統(tǒng)獲取的原始采樣值,K為修正系數(shù),B為修正基址。
校正過(guò)程中對(duì),對(duì)每一路采樣電路的采樣值和實(shí)測(cè)值進(jìn)行若干組采集。根據(jù)上述公式,每?jī)山M組成一個(gè)二元一次方程,計(jì)算出若干個(gè)修正系數(shù)和修正基址并求平均值,獲得本路采樣電路的修正系數(shù)和修正基址。
在上位機(jī)軟件中,接收下位機(jī)傳送過(guò)來(lái)的21路信號(hào)的實(shí)測(cè)值和采樣值。通過(guò)兩次接收,可分別得到21路采樣信號(hào)的兩組實(shí)測(cè)值和采樣值,按上述計(jì)算方法分別計(jì)算出各路采樣電路的修正系數(shù)和修正基址,按通信協(xié)議發(fā)送給下位機(jī)。
5.2.4存儲(chǔ)器讀寫(xiě)
存儲(chǔ)器讀寫(xiě)子窗口如圖5.5所示。
在存儲(chǔ)器讀寫(xiě)子窗口中,有讀存儲(chǔ)器、寫(xiě)存儲(chǔ)器、存儲(chǔ)器擦除三個(gè)按鈕,可分別讀出指定存儲(chǔ)單元的數(shù)據(jù)、將指定數(shù)據(jù)寫(xiě)入指定單元、擦除存儲(chǔ)器所有單元。
5.3上位機(jī)程序測(cè)試
c++相關(guān)文章:c++教程
離子色譜儀相關(guān)文章:離子色譜儀原理
評(píng)論