王 捷 艾 紅
(1.北方工業大學電氣與控制工程學院;2.北京信息科技大學自動化學院)
基于TCP和μC/OS-Ⅱ的數據采集系統研究①
王 捷1艾 紅2
(1.北方工業大學電氣與控制工程學院;2.北京信息科技大學自動化學院)
基于ARM7處理器LPC2210的鎖相環功能與處理器的時鐘頻率,描述了A/D轉換時鐘頻率的計算公式。設計了基于ARM7的數據采集系統。闡述了基于I2C總線協議實現數據存儲的功能,說明了向存儲器寫入數據,從存儲器中讀取數據的函數調用。基于ARM7和μC/OS-Ⅱ操作系統的多任務應用,給出了創建多任務的流程圖。通過網頁可以顯示實時數據采集值、報警上下限值、實時時鐘和歷史數據。基于TCP 協議實現了數據采集與網絡傳輸系統的功能。
數據采集 TCP協議 μC/OS-Ⅱ操作系統 網頁顯示
在工業測量控制領域,需要獲取大量的實時工業現場參數,使用ARM處理器不僅具有一般采集系統的優點,還加入了一些新的功能和特性,如網絡功能。μC/OS-Ⅱ操作系統中重要的概念之一是任務。一個任務也稱作一個線程,是一個簡單的程序。每個任務都是整個應用的一部分,每個任務被賦予一定的優先級。μC/OS-Ⅱ是搶占式實時多任務內核,采用基于優先級的任務調度策略[1,2]。筆者實現了基于TCP協議的網絡傳輸數據采集系統。在數據采集過程中,采用串行E2PROM芯片CAT24WC02對歷史數據進行存儲。為了使網頁增加交互性,系統應用了JavaScript技術設計界面。利用開放的TCP通信協議,任何計算機都可以使用通用的網絡瀏覽軟件訪問設備,現場設備的信息可以通過網頁的形式顯示出來。基于ARM處理器嵌入μC/OS-Ⅱ操作系統設計數據采集系統,進一步擴展了Web服務器的應用范圍。
系統采用ARM7處理器LPC2210。基于ARM7的數據采集系統如圖1所示,包括時鐘電路、電源電路、復位電路、鍵盤與顯示模塊、數據存儲器及信號放大電路等。

圖1 基于ARM7的數據采集系統框圖
2.1 鎖相環與時鐘頻率
LPC2210具有鎖相環PLL電路,PLL接收的輸入時鐘頻率范圍為10~25MHz。FOSC是晶振頻率,M是PLLCFG寄存器中MSEL位的倍頻值,鎖相環PLL輸出的處理器時鐘頻率cclk=M×FOSC。VPB分頻器決定了處理器時鐘cclk與外設器件所使用的時鐘pclk之間的關系。通過VPB總線為外設提供所需的pclk時鐘。A/D轉換器的基本時鐘由VPB時鐘提供。編程分頻器可以將時鐘調至逐次逼近轉換所需的4.5MHz。VPB分頻器連接如圖2所示。

圖2 VPB分頻器連接
2.2 數據采集功能實現
LPC2210具有8路10位逐次逼近式A/D轉換器,測量范圍為0~3V,每秒可執行四十萬次10位采樣。10位精度要求的轉換需要11個A/D轉換時鐘。將VPB時鐘pclk進行分頻得到A/D轉換時鐘。該時鐘必須不大于4.5MHz。ADC轉換時鐘分頻值的計算公式如下:

其中CLKDIV是A/D控制寄存器ADCR的15~8位;pclk是VPB提供的時鐘;adclk是ADC時鐘,其值不能大于4.5MHz。A/D模塊功能如圖3所示。

圖3 A/D模塊功能
使用引腳AIN0和AIN1兩個通道進行10位A/D轉換,A/D轉換時鐘設置為1MHz。進行A/D模塊設置,程序中的語句x< ADCR = (1 << 0) | // SEL = 1 ,選擇通道0 ((Fpclk / 1000000 - 1) << 8) | // CLKDIV = Fpclk /1000000-1,即A/D轉換時鐘為1MHz (0 << 16) |//轉換由軟件控制,需要11個時鐘方能完成 (0 << 17) | // CLKS = 0,11個時鐘/10位 (1 << 21) | // PDN = 1,正常工作模式(非掉電轉換模式) (0 << 22) | // TEST[1:0] = 00,正常模式(非器件測試模式) (1 << 24) | // START = 1,立即啟動ADC轉換 (0 << 27); // EDGE=0,該位在START字段為010~111時有效 DelayNS(10); ADC_Data = ADDR; //讀取ADC轉換結果,并清除A/D轉換完成標志位 while(1) { ADCR = (ADCR&0xFFFFFF00)|0x01|(1 << 24); //選擇第一通道進行第1次轉換 while( (ADDR&0x80000000)==0 ); //等待轉換結束 ADCR = ADCR | (1 << 24); //再次啟動轉換 while( (ADDR&0x80000000)==0 ); ADC_Data = ADDR; //讀取ADC轉換結果 ADC_Data = (ADC_Data>>6) & 0x3FF; ADC_Data = ADC_Data * 3300; ADC_Data = ADC_Data / 1024; //數據處理 sprintf(str, "%4dmV at VIN1", ADC_Data); //顯示第1個通道A/D采集結果 ISendStr(60, 23, 0x30, str); ADCR = (ADCR&0xFFFFFF00)|0x02|(1 << 24);//選擇第二通道并進行第1次轉換 while( (ADDR&0x80000000)==0 ); //等待轉換結束 ADCR = ADCR | (1 << 24);//再次啟動轉換 while( (ADDR&0x80000000)==0 ); ADC_Data = ADDR;//讀取ADC轉換結果 ADC_Data = (ADC_Data>>6) & 0x3FF; ADC_Data = ADC_Data * 3300; ADC_Data = ADC_Data / 1024; //數據處理 sprintf(str, "%4dmV at VIN2", ADC_Data); //顯示第2個通道A/D采集結果 ISendStr(60, 21, 0x30, str); DelayNS(10); } return(0);} 數據采集系統采集數據的過程以函數形式進行。首先設置ADCR控制寄存器的值,選擇通道,寫入A/D轉換時鐘頻率,軟件控制轉換操作,選擇正常工作模式。當設置完A/D控制寄存器ADCR并延時一段時間后,從A/D數據寄存器ADDR中讀取選中通道的A/D轉換結果。 2.3 數據存儲功能 存儲器CAT24WC02支持I2C總線數據傳送協議。采用字節寫方式時,主設備ARM處理器LPC2210的I2C接口首先向從設備CAT24WC02發送起始條件和從設備地址信息,在收到CAT24WC02的應答信號后,ARM處理器發送要寫入的第1個字節地址[3,4]。系統設計采用選擇性讀模式,ARM處理器可以對CAT24WC02存儲器中的任意字節數據進行讀操作。首先主設備ARM處理器LPC2210的I2C接口向從設備CAT24WC02發送起始命令、CAT24WC02的設備地址和要讀取的字節數據地址,CAT24WC02發送應答信號后,ARM處理器接收一個字節的數據。 向存儲器寫入數據。在確定了I2C總線控制器件地址與子地址之后,進行數據存儲。將data_buf [0]中的1字節數據寫入到存儲器中,基本程序設計如下: #define CAT24WC02 0xA0 //定義器件地址 Uint8 data_buf[4]; IRcvStr(CAT24WC02,0x00, data_buf, 1) //data_buf [0]中的1個字節數據寫入到存儲器中 從存儲器中讀取一個字節數據。在確定了I2C總線控制器件地址與子地址之后,進行數據讀取。從CAT24WC02存儲器中的0x00中獲取一個字節數據,基本程序設計如下: #define CAT24WC02 0xA0 //定義器件地址 Uint8 data_buf[4]; ISendStr(CAT24WC02,0x00, data_buf, 1) //從CAT24WC02器件的0x00中獲取一個字節的數據 3.1 多任務 μC/OS-Ⅱ操作系統可以管理多達64個任務,保留了8個任務供系統使用,因此用戶可以有多達56個應用任務。一個任務通常是一個無限的循環,看起來像其他C函數一樣,有函數返回類型,有形式參數變量。形式參數變量是由用戶代碼在第1次執行時帶入的。該變量的類型是一個指向void的指針。這是為了允許用戶在應用程序中傳遞任何類型的數據任務。當任務完成以后,任務可以自我刪除,使這個任務的代碼不再運行。多任務體現在μC/OS-Ⅱ操作系統程序、TCP通信任務程序、鍵盤服務任務程序、實時時鐘任務程序和按鍵控制網頁小燈任務程序設計。創建多任務task0流程如圖4所示。 圖4 創建多任務task0流程 3.2 實時時鐘任務程序設計 實時時鐘RTC提供一套計數器在系統工作時對時鐘進行測量。從RTC實時時鐘系統中獲取當前的時、分、秒和當前日期,對時間的數值數據處理是將RTC實時時鐘系統中獲得的時間值進行ASCII碼轉換,再將時間結構體中的秒、分、時、日、月、年進行BCD碼轉換,為數碼管的每一位的正常顯示做準備。數碼管顯示是在ARM7處理器的硬件平臺上,數碼管低6位實時顯示時、分、秒,前兩位數碼管分時顯示年、月、日,循環顯示。設計時以i作為狀態變量,每過一秒鐘i進行自加,當變量i為0~2時,數碼管前兩位顯示年,當變量i為3~7時,數碼管前兩位顯示月,當變量i為8~14時,數碼管前兩位顯示日。隨著秒鐘的不斷跳變,數碼管可以顯示年、月、日、時、分、秒。 在基于ARM7處理器的數據采集系統中,能夠通過鍵盤設定實現采集通道數據的報警上下限,并利用報警系統對采樣數據實現上下限報警。可以獲得上位計算機下傳的實時時間,即年、月、日、時、分、秒,并在數據采集系統上顯示。在上位機上,通過瀏覽器可以看到從數據采集系統傳輸來的兩個通道采樣數據和數據的報警上下限值。可以通過按鍵控制小燈,或者當報警超限時點亮報警燈。打開Internet Explorer瀏覽器,在地址欄輸入http://192.168.0.174 并按回車鍵,網頁上出現從基于ARM7的數據采集系統硬件平臺發送的VIN1通道和VIN2通道的報警上下限值及當前VIN1通道和VIN2通道的數據采集值。ADC數據監測結果界面如圖5所示。當前VIN1通道和VIN2通道的數據采集值超出報警上下限時,蜂鳴器報警且網頁當前數據采集值變紅。網頁上可以顯示當前VIN1通道和VIN2通道的變化率是否正常。如果采集的數據變化率過快,網頁可以顯示報警。點擊網頁上 “顯示歷史數據”按鈕,將VIN1通道和VIN2通道采集的歷史數據值顯示在網頁中。點擊網頁上 “關閉歷史數據”按鈕,將歷史數據欄收起。點擊網頁上 “清除歷史數據”按鈕,則清除網頁上的歷史數據。 圖5 ADC數據監測結果界面 CPU在沒有操作系統時,運行主程序要通過外部中斷,執行相對應的中斷子程序,這需要很多步驟去完成。尤其是在網絡傳輸等多任務環境下,沒有操作系統顯得力不從心。在移植操作系統后,使得多任務并行執行變得簡單,尤其是在添加或刪減各個任務時,變得尤為方便。數據采集系統以單任務的形式調試成功后,將所有單任務組織成一個多任務的系統,最重要的是設置好每個任務的優先級,使它們能夠穩定地執行。實踐證明多任務系統可以很好地實現網絡傳輸的數據采集功能。基于ARM7和μC/OS-Ⅱ操作系統設計數據采集系統由多任務完成,采用TCP/IP協議實現數據顯示功能。通過網頁瀏覽實時數據采集值、報警上下限值和數據采集系統的工作狀態,實現了利用TCP網絡進行傳輸與顯示多路數據的功能。 [1] 趙玉鳳,楊厚俊,范延濱. μC/OS-Ⅱ在ARM Cortex A9處理器上的移植與實現[J]. 工業控制計算機,2016,29(6):10~11. [2] 毛衛平. 基于ARM的海洋溫度數據監測系統設計[J]. 艦船科學技術,2016,38(5A):127~129. [3] 趙華瑋. 一種基于Linux嵌入式的智能瓦斯監測設計[J]. 自動化與儀器儀表,2016,(8):106~107. [4] 王平,楊濤,侯守全,等. LabVIEW中DAQ數據采集系統設計[J]. 自動化儀表,2015,36(7):31~33. ResearchonDataAcquisitionSystemBasedonTCPandμC/OS-Ⅱ WANG Jie1, AI Hong2 (1.CollegeofElectricalandControlEngineering,NorthChinaUniversityofTechnology; 2.CollegeofAutomation,BeijingInformationScience&TechnologyUniversity) Based on PLL function and clock frequency of the ARM7 processor LPC2210, the calculation formula of A/D conversion clock frequency was described and the ARM7-based data acquisition system was designed; and the function of data storage based on I2C bus protocol was expounded and writing the data to the memory and reading the function call of data from the memory were explained. Basing on ARM7 and μC/OS- Ⅱ operating system-based multi-task application to present the flow chart of creating multi tasks was implemented, including the display of real-time data acquisition values, the upper and lower limits of the alarm, real-time clock and data collection of historical data and other functions through the web page and the realization of the function of data acquisition and network transmission system based on TCP protocol. data acquisition,TCP protocol, μC/OS-Ⅱ operating system,web page display 北京市自然科學基金項目(4162025)。 王捷(1962-),講師, 從事智能儀表與自動化裝置的研究。 聯系人艾紅(1962-),教授,從事智能儀表與自動化裝置的研究,hong_ai@126.com。 TH865 A 1000-3932(2017)06-0591-05 2016-12-13, 2017-01-18)3 μC/OS-Ⅱ操作系統與多任務

4 基于TCP協議的數據采集

5 結束語