999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于QPC狀態(tài)機的溫度控制方案設計

2016-08-31 09:45:21王俊璞張東杰李文魁
關鍵詞:定義活動

王俊璞,張東杰,李文魁

(1.上海交通大學 儀器科學與工程系,上海 200240;2.海軍工程大學)

?

基于QPC狀態(tài)機的溫度控制方案設計

王俊璞1,張東杰1,李文魁2

(1.上海交通大學 儀器科學與工程系,上海 200240;2.海軍工程大學)

QPC(Quantum Platform C)是一套軟件框架,提供狀態(tài)機和事件驅動編程功能。首先從編碼角度研究了QPC應用編程,然后設計了一套溫度控制方案,展示QPC狀態(tài)機、事件驅動在嵌入式軟件設計中的應用。最后將該方案在一套硬件平臺進行了編碼實現(xiàn),達到了良好的溫控效果。

QPC;狀態(tài)機;事件驅動;溫度控制

引 言

QPC是Miro Semak博士[1]設計的基于狀態(tài)機和事件驅動編程的軟件框架,包括事件處理器QEP(Quantum Event Processor)、實時框架QF(Quantum Framework)和調試組件QS(Quantum Spy)三部分。其中,QEP提供用戶設計使用的狀態(tài)機和事件結構,QF負責調度和運行用戶創(chuàng)建的狀態(tài)機,QS用于跟蹤和收集狀態(tài)機、事件等系統(tǒng)信息。

和嵌入式RTOS相比,使用QPC框架代碼復用度更高,應用開發(fā)也更簡單。使用RTOS時,用戶主要工作是進行任務分解和任務執(zhí)行邏輯設計,通過調用任務管理函數(shù)和任務通信函數(shù)的方式實現(xiàn)多任務運行。使用QPC時,用戶主要工作是設計狀態(tài)機和狀態(tài)機之間的通信事件,通過擴展QPC狀態(tài)機和事件的方式創(chuàng)建用戶狀態(tài)機和事件,然后啟動QF運行這些狀態(tài)機,實現(xiàn)系統(tǒng)功能。因此,使用QPC進行嵌入式開發(fā)需要了解QPC應用在代碼層級狀態(tài)機、事件的創(chuàng)建和使用等。

1 QPC應用編程

QPC主要提供基于狀態(tài)機和事件驅動的編程機制,因此,相應的軟件開發(fā)以設計狀態(tài)機和事件為主,狀態(tài)機用來分解系統(tǒng)并實現(xiàn)其功能,事件則實現(xiàn)狀態(tài)機和狀態(tài)機之間的通信。狀態(tài)機由一個或多個狀態(tài)組成,每個狀態(tài)都可以響應特定的事件,并發(fā)送事件給自身或其他狀態(tài)機。比如,一個標準鍵盤程序可以分解為大寫輸入狀態(tài)和小寫輸入狀態(tài),當Caps鍵按下時(收到鍵盤事件,內容為Caps鍵),在兩個狀態(tài)之間切換;當字母鍵按下時,發(fā)送鍵盤事件以及大寫或小寫字母給相應程序。

1.1QPC狀態(tài)機

QPC的狀態(tài)機以活動(或活動對象)的概念和形式體現(xiàn)?;顒永^承于狀態(tài)機,能夠實現(xiàn)狀態(tài)切換和響應事件等功能。

(1) 活動定義

QPC定義了默認的活動結構QActive,用戶通過擴展QActive的方式自定義活動結構。如自定義A/D轉換活動結構的代碼如下:

typedef struct ADInspectorTag {

QActive super; //繼承QPC活動

QTimeEvt timeEvtSample; //內嵌一個QPC定時器

} ADInspector; //A/D活動結構聲明

定義好活動結構后,就可以直接定義活動了,代碼如下:

ADInspector l_adInspector; //定義A/D活動(變量)

為了讓用戶定義的活動能夠被QPC識別和運行,需要將其向下轉型為QPC默認活動類型QActive,代碼如下:QActive* const AO_ADInspector = (QActive*)&l_adInspector;

(2) 活動運行

運行QPC活動只需要調用活動的構造函數(shù)和啟動函數(shù),然后啟動QPC實時框架QF就可以了。如進行A/D轉換活動的過程代碼如下:

ADInspector_ctor(); //構造函數(shù)中關聯(lián)了A/D活動定義

QACTIVE_START(AO_ADInspector, 2U, l_adInspectorQSto, Q_DIM(l_adInspectorQSto),

(void *)0, 512, (QEvt *)0);

//活動優(yōu)先級為2,事件序列為adInspectorQSto

return QF_run(); //啟動QPC實時框架

(3) 狀態(tài)分解

QPC活動由狀態(tài)組成,通過狀態(tài)響應事件和發(fā)送事件實現(xiàn)活動功能。如A/D活動可以分解為A/D檢測狀態(tài)ADInspector_polling和A/D標定狀態(tài)ADInspector_calibrating,它們的定義代碼如下:

QState ADInspector_polling(ADInspector * const me, QEvt const * const e);

QState ADInspector_calibrating(ADInspector * const me, QEvt const * const e);

在A/D檢測狀態(tài),進行常規(guī)的A/D轉換并把轉換的結果以事件方式發(fā)送給相關的活動;在A/D標定狀態(tài),如果A/D芯片自帶零位和滿度校準功能,啟動相關功能即可,如果沒有,則把對應的信號數(shù)據(jù)作為零位和滿度數(shù)據(jù)處理。

(4) 狀態(tài)轉換

QPC狀態(tài)機的狀態(tài)轉換直接調用QPC轉換函數(shù)即可,如在A/D檢測狀態(tài)收到啟動標定事件,然后轉換到標定狀態(tài)的部分代碼如下:

QState ADInspector_polling(ADInspector * const me, QEvt const * const e) {

……

switch (e->sig) {

case AD_CALI_START_SIG: {

QTimeEvt_disarm(&me->timeEvtSample);

//關閉采樣定時器

status = Q_TRAN(&ADInspector_calibrating);

//轉換到標定狀態(tài)

break;

}

……

}

1.2QPC事件

(1) 事件結構

QPC定義了默認的事件結構QEvt(包含了一個信號變量sig,用來標記事件類型,事件類型是一個常量,由系統(tǒng)統(tǒng)一定義和管理),用戶可以使用擴展的方式創(chuàng)建自定義事件,如A/D轉換結束事件的結構代碼可以定義如下:

typedef struct {

QEvt super; //繼承QPC事件

uint32_t value;//A/D轉換結果

} ADFinishEvt;

(2) 事件定義

QPC的事件是根據(jù)事件結構定義的變量,可以直接定義或使用QPC提供的事件生成函數(shù)動態(tài)定義。直接定義及填充事件內容的代碼如下:

ADFinishEvt adEvt; //定義事件

adEvt.sig = AD_FINISH_SIG;

//標記事件類型為AD_FINISH_SIG

adEvt.value = 0x0; //事件參數(shù)value賦值

動態(tài)定義事件代碼如下:

ADFinishEvt* pAdEvt;

//定義事件指針,指向一個事件

pAdEvt = Q_NEW(ADFinishEvt, AD_FINISH_SIG);

//申請一個AD_FINISH_SIG事件

pAdEvt->value = 0x0;

//事件參數(shù)value賦值

其中,事件動態(tài)定義使用的內存空間由QPC管理。

(3) 事件傳遞

按照事件傳遞方式,QPC事件類型可以分為POST事件和PUBLIC事件。POST事件直接發(fā)送給指定的活動,PUBLIC事件發(fā)送給訂閱該事件的活動。它們的代碼如下:

//發(fā)送事件pAdEvt給AO_TemperatureMonitor活動QActive_postFIFO(AO_TemperatureMonitor, (QEvt*)pAdEvt);

//訂閱同步事件,事件類型為SYNCHRONOUS_SIG

QActive_subscribe((QActive *)me, SYNCHRONOUS_SIG);

//向訂閱者發(fā)送事件synEvt,synEvt信號類型為

//SYNCHRO NOUS_SIG

QF_PUBLISH(synEvt, 0);

2 溫度控制方案設計

溫度控制一般采用負反饋的控制方式,使用溫度傳感器將溫度信號轉換為電信號,然后經(jīng)A/D轉換送到單片機處理,單片機根據(jù)溫度設定值和當前溫度值計算輸出量,并控制執(zhí)行器輸出。

考慮到設計的通用性,本文設計3個QPC活動來實現(xiàn)溫度控制:負責A/D轉換的AO_ADInspector活動、負責溫度變換和計算控制量的AO_TemperatureMonitor活動和負責執(zhí)行器輸出的AO_ActuatorManager活動。

AO_ADInspector活動用來封裝及屏蔽A/D轉換設計中的可變因素,包括高速或低速的A/D采樣周期選擇和A/D轉換結束查詢或中斷判斷方式;AO_TemperatureMonitor活動用來封裝和屏蔽傳感器到溫度的變換計算以及PID、神經(jīng)元等控制算法選擇;AO_ActuatorManager活動用來封裝和屏蔽開關量執(zhí)行器或閥值執(zhí)行器選擇給設計帶來的變化。

為了保證溫度控制過程的實時性(溫度采樣、計算控制量和執(zhí)行器輸出同時)以及避免設計中的時序沖突,本文設計溫度采樣周期為A/D采樣周期的整數(shù)倍,控制周期為溫度采樣周期的整數(shù)倍,例如A/D采樣周期選擇0.25 s,則溫度采樣周期可以選擇1 s,控制周期可以選擇4 s。使用這種方式時,AO_ADInspector活動、AO_TemperatureMonitor活動和AO_ActuatorManager活動運行時的基本關系如圖1所示(圖中省略AO前綴)。圖中,AD_SAMPLE是溫度采樣信號,由QF定時發(fā)出,PWM_OFF信號用于開關量執(zhí)行器的PWM控制(閥值控制則不需要)。

圖1 溫度控制活動序列圖

AO_ADInspector活動、AO_TemperatureMonitor活動和AO_ActuatorManager活動的內部運行情況分別如圖2~圖4所示。其中,AO_ADInspector活動包括了標定處理,標定信號AD_CALIBRATE_START、AD_CALIBRATE_END、AD_CALIBRATE_ZERO和AD_CALIBRATE_FULL可以由鍵盤程序或者通信程序發(fā)出。

圖2 AO_ADInspector活動狀態(tài)圖

3 實驗驗證

本文選擇溫度傳感器PT1000、A/D轉換芯片AD7793作為溫度采樣的硬件部分,具有加熱和制冷功能的帕爾貼元件作為執(zhí)行器,采用ARM Cortex-M3為內核的芯片STM32F103RC和位置式PID算法對本文溫控方案進行編碼實現(xiàn)。然后測量溫度數(shù)據(jù)并繪制溫控曲線如圖5所示。其中,時刻0的溫度為環(huán)境溫度,20 ℃為目標溫度,在700 s后溫度穩(wěn)定度達到0.01 ℃。

圖3 AO_TemperatureMonitor活動狀態(tài)圖

圖4 AO_ActuatorManager活動狀態(tài)圖

圖5 溫度測控曲線(穩(wěn)態(tài)誤差0.01℃)

結 語

本文使用QPC設計了溫度控制方案,并在ARM芯片上進行了編碼實現(xiàn)。整個軟件開發(fā)過程和溫度控制效果表明,QPC提供的狀態(tài)機策略和事件驅動機制符合嵌入式產品的自然特征,能保證嵌入式產品軟件設計、實現(xiàn)和運行的一致性,有利于保證產品穩(wěn)定性和技術指標實現(xiàn)。同時,QPC框架的使用減少了軟件設計和維護的工作量,提高了軟件開發(fā)效率,增強了代碼的穩(wěn)定性和可維護性。

[1] Miro Samek.Practical UML STATECHARTS in C/C++,Event-Driven Programming for Embedded Systems[M].Second Edition.Amsterdam:Elsevier Inc,2008.

王俊璞(助理研究員)、李文魁(副教授),研究方向為導航與控制;張東杰(工程碩士),研究方向為智能儀器。

Temperature Control Scheme Based on QPC State Machine

Wang Junpu1,Zhang Dongjie1,Li Wenkui2

(1.Department of Instrument Science and Engineering,Shanghai Jiaotong University,Shanghai 200240,China;2.Naval University of Engineering)

QPC(Quantum Platform C) is a software framework with the functions of state machine and event driven programming.From the point of programming and application,this paper first studies the QPC.Then a scheme of temperature control is designed to show the usage of QPC state machine and event driven programming in the embedded software development.Finally,the scheme is implemented on the hardware platform,which achieves a satisfying result.

QPC;state machine;event driven;temperature control

TP31

A

(責任編輯:薛士然2015-11-04)

猜你喜歡
定義活動
“六小”活動
少先隊活動(2022年5期)2022-06-06 03:45:04
“活動隨手拍”
行動不便者,也要多活動
中老年保健(2021年2期)2021-08-22 07:31:10
少先隊活動(2021年1期)2021-03-29 05:26:36
“拍手歌”活動
快樂語文(2020年30期)2021-01-14 01:05:38
永遠不要用“起點”定義自己
海峽姐妹(2020年9期)2021-01-04 01:35:44
定義“風格”
三八節(jié),省婦聯(lián)推出十大系列活動
海峽姐妹(2018年3期)2018-05-09 08:20:40
成功的定義
山東青年(2016年1期)2016-02-28 14:25:25
修辭學的重大定義
當代修辭學(2014年3期)2014-01-21 02:30:44
主站蜘蛛池模板: 99视频在线看| 欧美性猛交一区二区三区| 亚洲天堂.com| 日韩无码视频播放| 91成人精品视频| v天堂中文在线| 亚洲天堂精品在线观看| 亚洲性视频网站| 中文无码日韩精品| 亚洲高清国产拍精品26u| 国产精品男人的天堂| 久久鸭综合久久国产| 国产第一页免费浮力影院| 国内精自视频品线一二区| 久久黄色影院| 国产真实乱人视频| 尤物国产在线| 在线观看精品国产入口| 国产91小视频在线观看| 国产精品福利社| 亚洲婷婷丁香| 日韩a在线观看免费观看| 香蕉久久国产精品免| 男女性色大片免费网站| 91亚瑟视频| 国产精品永久免费嫩草研究院| 国产女人爽到高潮的免费视频 | 欧美精品二区| 在线观看国产精品第一区免费| 国产乱子伦一区二区=| 午夜精品一区二区蜜桃| 国产超薄肉色丝袜网站| 最新日韩AV网址在线观看| 91探花在线观看国产最新| 欧美不卡二区| 99在线国产| 国产精品手机在线观看你懂的| 午夜欧美在线| 婷婷亚洲天堂| 欧美在线视频不卡| 毛片在线看网站| 亚洲高清国产拍精品26u| 成人伊人色一区二区三区| 成人自拍视频在线观看| 国产香蕉国产精品偷在线观看 | 日本一本在线视频| 91精品国产自产在线观看| 99草精品视频| 精品無碼一區在線觀看 | 国产综合精品日本亚洲777| 欧美成在线视频| 重口调教一区二区视频| 国产福利影院在线观看| 亚洲精品无码AⅤ片青青在线观看| 嫩草影院在线观看精品视频| 91视频区| 日韩精品成人在线| 色妺妺在线视频喷水| 999国内精品视频免费| 国产色伊人| 孕妇高潮太爽了在线观看免费| 久久香蕉国产线看观看亚洲片| 麻豆精品久久久久久久99蜜桃| 日本在线免费网站| 任我操在线视频| 欧美精品影院| 福利在线一区| 国产丝袜91| 国产福利2021最新在线观看| 久久精品视频亚洲| 久久精品国产电影| 朝桐光一区二区| 成人在线天堂| 热久久这里是精品6免费观看| 午夜视频在线观看免费网站| 又爽又黄又无遮挡网站| 国产精品极品美女自在线看免费一区二区| 国产96在线 | 国产欧美日本在线观看| 欧美日本在线观看| 国产成人AV男人的天堂| 国产视频a|