王玲
摘要:針對(duì)MSP430單片機(jī)的存儲(chǔ)空間有限的實(shí)際情況,采用設(shè)置時(shí)間標(biāo)志位的方法解決存儲(chǔ)數(shù)據(jù)的問題。時(shí)間標(biāo)志位定為當(dāng)前時(shí)間與上次保存時(shí)間之差與采樣周期進(jìn)行對(duì)比,當(dāng)時(shí)間之差大于采樣周期則更新當(dāng)前保存記錄時(shí)間,否則不更新,應(yīng)用于壓力采集器設(shè)計(jì)中,準(zhǔn)確、實(shí)時(shí)。
關(guān)鍵詞:存儲(chǔ)空間;采集;設(shè)計(jì)
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2018)10-0231-02
本系統(tǒng)是采用定時(shí)中斷采樣的方式,定時(shí)采集壓力并存儲(chǔ),由于存儲(chǔ)空間有限,每次存儲(chǔ)的時(shí)候,每條記錄都存儲(chǔ)時(shí)間,那么占用的空間就會(huì)增大,這樣程序會(huì)好寫,但是不能滿足存儲(chǔ)較多記錄的需求,所以通過判斷當(dāng)前采樣時(shí)間減去上次采樣時(shí)間之差和采樣周期進(jìn)行對(duì)比,當(dāng)時(shí)間之差大于采樣周期的時(shí)候,更新記錄時(shí)間,保存數(shù)據(jù)后,把記錄時(shí)間作為此次采樣的時(shí)間保存,當(dāng)時(shí)間之差小于等于采樣周期的時(shí)候,保存采集數(shù)據(jù),記錄當(dāng)前時(shí)間為此次采樣時(shí)間。這樣就會(huì)節(jié)省空間,達(dá)到保存較多記錄數(shù)據(jù)的需求。
1 下位機(jī)總體設(shè)計(jì)
總體設(shè)計(jì)軟件部分由主程序模塊、串口通信模塊、IIC通信模塊、存儲(chǔ)模塊、定時(shí)中斷模塊等五大模塊組成。
1.1 下位機(jī)基本設(shè)計(jì)概念和處理流程
系統(tǒng)程序?yàn)槎〞r(shí)中斷采樣,主流程圖為:
函數(shù)名稱: unsigned int Get_AdcData(void)
功能描述: 讀取ADC轉(zhuǎn)換值
函數(shù)名稱: void LoadParameter(void)
功能描述: 裝載系統(tǒng)參數(shù)
關(guān)于時(shí)間之差和采樣周期的對(duì)比程序?qū)崿F(xiàn):
if( (Temp2-Temp1)>SysParameter.cyc ) //判斷是否有斷點(diǎn)
{
SysParameter.Time_Flag++;
date_time.Data_Count=SysParameter.Data_Count;
date_time.Time_Flag=SysParameter.Time_Flag;
Time_Buf[7] = date_time.Time_Flag/256;
Time_Buf[6] = date_time.Time_Flag%256;
Time_Buf[9] = date_time.Data_Count/256;
Time_Buf[8] = date_time.Data_Count%256;
date_time=*(datetime*)(&Time;_Buf);
SaveBreakTime();
}
1.2 下位機(jī)程序設(shè)計(jì)結(jié)構(gòu)
2下位機(jī)軟件定時(shí)中斷模塊設(shè)計(jì)
程序描述:本模塊主要是1秒定時(shí),進(jìn)入中斷,如果達(dá)到當(dāng)前采樣周期,則置中斷標(biāo)志位。功能:采集壓力數(shù)據(jù),保存當(dāng)前壓力和采樣周期值。
性能:能正確可靠的采集信息。
數(shù)據(jù)元素:輸入數(shù)據(jù)、過程數(shù)據(jù)、輸出數(shù)據(jù)、
函數(shù)名稱: void TimerA_init(void)
功能描述: 定時(shí)器初始化
函數(shù)名稱: void Timer_A(void)
功能描述: 定時(shí)中斷函數(shù)
3 AD采集模塊
AD采集模塊主要完成采集AD數(shù)據(jù),轉(zhuǎn)化為壓力值。流程邏輯如下圖:
函數(shù)名稱: unsigned int fifoaverage(unsigned int *p_ad,unsigned int newnum,unsigned int count)
功能描述: AD采集值求平均
函數(shù)名稱: void RefreshPressure(void)
功能描述: 壓力測(cè)試值計(jì)算
4 下位機(jī)軟件串口通訊模塊設(shè)計(jì)
Modbus 協(xié)議是應(yīng)用于電子控制器上的一種通用語(yǔ)言。通過此協(xié)議,控制器相互之間、控制器經(jīng)由網(wǎng)絡(luò)(例如以太網(wǎng))和其他設(shè)備之間可以通信。它已經(jīng)成為一通用工業(yè)標(biāo)準(zhǔn)。有了它,不同廠商生產(chǎn)的控制設(shè)備可以連成工業(yè)網(wǎng)絡(luò),進(jìn)行集中監(jiān)控。
此協(xié)議定義了一個(gè)控制器能認(rèn)識(shí)使用的消息結(jié)構(gòu),而不管它們是經(jīng)過何種網(wǎng)絡(luò)進(jìn)行通信的。它描述了一控制器請(qǐng)求訪問其他設(shè)備的過程,如果回應(yīng)來自其他設(shè)備的請(qǐng)求,以及怎樣偵測(cè)錯(cuò)誤并記錄。它制定了消息域格局和內(nèi)容的公共格式。
當(dāng)在一Modbus網(wǎng)絡(luò)上通信時(shí),此協(xié)議決定了每個(gè)控制器須要知道它們的設(shè)備地址,識(shí)別按地址發(fā)來的消息,決定要產(chǎn)生何種行動(dòng)。如果需要回應(yīng),控制器將生成反饋信息并用Modbus協(xié)議發(fā)出。在其他網(wǎng)絡(luò)上,包含了Modbus協(xié)議的消息轉(zhuǎn)換為在此網(wǎng)絡(luò)上使用的幀或包結(jié)構(gòu)。這種轉(zhuǎn)換也擴(kuò)展了根據(jù)具體的網(wǎng)絡(luò)解決節(jié)地址、路由路徑及錯(cuò)誤檢測(cè)的方法。
根據(jù)Modbus串口通信協(xié)議,上位機(jī)發(fā)送命令,下位機(jī)根據(jù)命令執(zhí)行相應(yīng)的操作。流程邏輯圖如下:
5 小結(jié)
本設(shè)計(jì)實(shí)現(xiàn)的壓力采集器,可以很好完成上位機(jī)的任務(wù)傳遞,下位機(jī)的軟件功能實(shí)現(xiàn),中斷的使用是系統(tǒng)運(yùn)行更穩(wěn)定。由此可見,充分利用軟件編程可以節(jié)省硬件MSP430單片機(jī)的現(xiàn)有存儲(chǔ)空間。但是,單片機(jī)硬件快速發(fā)展的今天也為編程人員在軟件層次方面提高提出了更高的要求。
參考文獻(xiàn):
[1] 吳高樓. 基于MSP430的智能測(cè)控模塊的設(shè)計(jì)與研究[D].南京理工大學(xué),2007.
[2] 周新峰. 郵區(qū)中心局?jǐn)?shù)據(jù)采集系統(tǒng)的研究與實(shí)現(xiàn)[D].西安電子科技大學(xué),2007.
[3] 吳東艷. 基于USB總線的數(shù)據(jù)采集器/信號(hào)發(fā)生器的設(shè)計(jì)[D].哈爾濱理工大學(xué),2005.
[4] 孫學(xué)飛. 基于MSP430的數(shù)據(jù)采集系統(tǒng)的研究與設(shè)計(jì)[D].中南大學(xué),2012.
[5] 余啟明. 基于FPGA的LXI設(shè)備精密時(shí)鐘同步技術(shù)研究與實(shí)現(xiàn)[D].西安電子科技大學(xué),2012.
[6] 李艷坤. 基于ARM11的LXI多通道數(shù)據(jù)采集器的研究與實(shí)現(xiàn)[D].西安電子科技大學(xué),2012.
[7] 周健鵬. 基于802.16協(xié)議的仿真系統(tǒng)的研究與實(shí)現(xiàn)[D].西安電子科技大學(xué),2012.