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

基于μC/OS—II和ModbusRTU協(xié)議的密集架控制軟件設計

2014-06-20 21:19:40張國宇鄒衛(wèi)軍
無線互聯(lián)科技 2014年2期

張國宇 鄒衛(wèi)軍

摘 要:本文提出了基于μC/OS-II和ModbusRTU協(xié)議的密集架控制軟件在Stm32F103R8T6平臺上的設計方法。重點闡述了μCOS-II操作系統(tǒng)的移植、ModbusRTU通信協(xié)議的實現(xiàn)方式和主要的應用程序開發(fā)。

關鍵詞:Stm32;ModbusRTU;μCOS-II移植

密集架是自動化倉儲領域具有代表性的一類系統(tǒng)。它由一個固定列和多個移動列組成,通常架體之間緊密排列,不預留任何通道;工作時通過PC機或固定列的人機交互界面打開指定的存取通道。這種“常態(tài)閉合,用時打開”的特點,使得密集架系統(tǒng)能夠節(jié)省很大的倉儲空間,同時具備較高的安全性。

密集架系統(tǒng)的核心是控制軟件及通信協(xié)議。由于系統(tǒng)中移動列數(shù)目的不確定,使得固定列和移動列之間的通信復雜度大幅提升,傳統(tǒng)的基于中斷響應、前后臺架構(gòu)的控制軟件設計方式,已經(jīng)很難滿足系統(tǒng)在可靠性、擴展性、開發(fā)效率以及模塊化結(jié)構(gòu)等方面的要求。引入嵌入式實時多任務操作系統(tǒng)和高效的通訊協(xié)議,就成為提高密集架系統(tǒng)整體性能的關鍵因素。

本文提出了基于多任務實時操作系統(tǒng)μCOS-II和ModbusRTU協(xié)議的密集架控制軟件的設計方法。軟件采用基于ModBusRTU協(xié)議的“主從式”通信架構(gòu),并利用操作系統(tǒng)特性,將功能模塊劃分為多個任務,由系統(tǒng)調(diào)度執(zhí)行。經(jīng)過實驗測試,這種設計方法大大提升了密集架系統(tǒng)的穩(wěn)定性及程序的開發(fā)效率。

1 密集架系統(tǒng)工作原理

密集架系統(tǒng)通常由一個固定列和若干個移動列組成,固定列和移動列由嵌入式控制器控制,其結(jié)構(gòu)如圖1所示。

在密集架系統(tǒng)中,固定列作為核心,主要完成以下任務:

⑴與PC上位機通信,處理下發(fā)的控制指令并反饋系統(tǒng)運行狀態(tài)和傳感器信息;

⑵與本列的人機交互單元通信,處理下發(fā)的控制指令并反饋系統(tǒng)運行狀態(tài)和傳感器信息;

⑶與所有的移動列通信,實時查詢各個移動列狀態(tài)并下發(fā)控制指令。

移動列作為實際運行的機構(gòu),需要處理以下任務:

⑴與本列的人機交互單元通信,接收控制指令并反饋運行狀態(tài);

⑵處理固定列下發(fā)的查詢指令和控制指令;執(zhí)行相應控制動作,反饋運行狀態(tài)和傳感器信息。

由此可以看出,密集架系統(tǒng)控制軟件的核心,在于確保固定列和移動列通信穩(wěn)定的基礎上,協(xié)調(diào)好來自上位機、人機交互單元和各個嵌入式控制器的控制指令和任務,保證系統(tǒng)能夠及時高效的響應控制動作。

基于此,在密集架控制軟件的設計上,論文采用具有很強的實時性、較為完備的任務調(diào)度功能及穩(wěn)定的通信管理機制的μCOS-II實時操作系統(tǒng);并基于ModbusRTU協(xié)議構(gòu)建了軟件的通信框架。

2 μCOS-II操作系統(tǒng)移植

本文移植μCOS-II實時操作系統(tǒng)針對的是基于STM32F103R8T6 ARM芯片的硬件平臺,需要完成與CPU相關和硬件相關的內(nèi)容的修改。

2.1 移植CPU相關內(nèi)容

和CPU相關內(nèi)容的移植,主要是利用CPU的定時器給操作系統(tǒng)提供時鐘。

μCOS-II為了處理任務延時和調(diào)度等一些時間相關任務,需要由CPU的硬件定時器產(chǎn)生一個毫秒(ms)級的周期性中斷來提供一個系統(tǒng)時鐘。最小時鐘單位就是兩次中斷之間的時間,稱為時鐘節(jié)拍(Time Tick),考慮到CPU的執(zhí)行效率,本系統(tǒng)選擇10ms的時鐘節(jié)拍。

Stm32F103R8T6中,μCOS-II時鐘由“滴答時鐘”的中斷提供:

void SysTick_Handler(void)

{

OSIntEnter();//進入中斷服務函數(shù)

OSTimeTick();//調(diào)用時鐘節(jié)拍服務函數(shù)

OSIntExit();//退出中斷服務函數(shù)

}

2.2 移植硬件相關內(nèi)容

(1)OS_CPU.C中的OSTaskInit(),它是任務的堆棧初始化代碼,在創(chuàng)建任務時必須成功調(diào)用這個函數(shù),否則會導致系統(tǒng)崩潰。

(2)OS_CPU.H中主要包含三個重要的函數(shù)定義,分別是:

·OS_ENTER_CRITICAL():進入臨界區(qū)函數(shù),負責關中斷及保存全局中斷標志位;

·OS_EXIT_CRITICAL():退出臨界區(qū)函數(shù),負責恢復全局中斷標志位,和OS_ENTER_CRITICAL()函數(shù)成對使用,兩個函數(shù)之間的代碼稱為“臨界段”。進入臨界保護函數(shù)時中斷關閉,臨界段在運行期間不受中斷干擾,臨界段代碼執(zhí)行完畢,由OS_EXIT_CRITICAL()函數(shù)解除中斷屏蔽;

·OS_TASK_SW():任務級任務切換函數(shù),負責完成任務的正常切換,由任務級調(diào)度器OSSched()調(diào)用。

(3)OS_CPU_A.ASM是μCOS-II唯一的匯編文件,這個文件主要涉及到任務切換、啟動優(yōu)先級最高的任務、中斷開關等函數(shù)。

·μCOS-II啟動多任務的函數(shù)是OSStart(),用戶在調(diào)用該函數(shù)之前至少需要創(chuàng)建一個任務。在執(zhí)行OSStart()函數(shù)時,將調(diào)用OSStartHighRdy()運行多任啟動前優(yōu)先級最高的任務,使得系統(tǒng)整個得以運轉(zhuǎn)。

·OSCtxSw()是任務級的上下文切換函數(shù),它被OS_CPU.H中的OS_TASK_SW()所調(diào)用;OSIntCtxSw()是中斷級的任務切換,它被OSIntExit()調(diào)用,在μCOS-II運行完中斷服務程序之后完成中斷級任務調(diào)度。

·OS_CPU_SR_Save()、OS_CPU_SR_Restore()分別被OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()調(diào)用,主要負責屏蔽中斷和恢復中斷。

在移植過程中,根據(jù)用戶的實際需要,可以對配置文件OS_CFG.H進行修改,從而實現(xiàn)μCOS-II內(nèi)核的剪裁。

3 基于μCOS-II和Modbus RTU協(xié)議的控制軟件設計

根據(jù)密集架控制軟件的設計架構(gòu),固定列控制軟件所面臨的數(shù)據(jù)通信處理的復雜程度遠超移動列,且固定列ModbusRTU協(xié)議實現(xiàn)機理和移動列完全相同,主要的應用程序也涵蓋了移動列應用程序的主要設計思想。因此,本文僅以固定列為樣例,來介紹基于μCOS-II和Modbus RTU協(xié)議的控制軟件設計。

3.1 Modbus RTU協(xié)議

在密集架系統(tǒng)中,使用“一主多從”的Modbus RTU通信模式,其中固定列作為主設備,移動列作為擁有唯一地址的從設備。固定列和移動列之間可以進行通信,而移動列之間則不能通信。通信的具體流程為:

⑴固定列以中斷方式接收本列人機交互界面和上位機發(fā)送的功能碼為06的控制幀;

⑵固定列以固定時間間隔依次向各移動列發(fā)送功能碼為03的查詢幀;

⑶收到查詢幀的移動列向固定列反饋當前狀態(tài)信息,包括:本列運行狀態(tài)、本列人機交互界面下發(fā)的控制指令、本列傳感器信息;

⑷固定列綜合系統(tǒng)當前狀態(tài)和控制指令要求,確定控制邏輯,并向相應移動列發(fā)送功能碼為06的控制幀;

⑸收到控制幀的移動列根據(jù)指令要求完成控制動作。

3.2 基于μCOS-II的多任務機制設計

⑴用戶任務:完成來自上位機、人機交互界面和移動列各種通信數(shù)據(jù)的綜合解析工作,是控制指令得以正確實現(xiàn)的關鍵任務。

⑵RS232通信任務:負責和本列人機交互界面的通信工作,任務初始化后始終保持等待信號量狀態(tài)。主芯片的串口中斷實時接收觸摸屏命令,當接收到完整的數(shù)據(jù)幀后,調(diào)用OSSemPost()函數(shù)發(fā)送信號量,通知RS232通信任務激活ModbusRTU協(xié)議解析任務,并根據(jù)解析出的控制指令反饋響應信息或者保存按鍵命令。

⑶RS485通信任務:和RS232通信任務類似,它由對應的RS485接收函數(shù)調(diào)用OSSemPost()函數(shù)激活,負責和各個移動列之間的信息交互,是密集架網(wǎng)絡穩(wěn)定運行的核心任務。移動列數(shù)目較多,通信非常復雜,為了保證控制指令的實時性,必須將RS485通信任務的優(yōu)先級設為所有任務的最高級。它的主要工作是:解析并保存“輪詢”到的移動列狀態(tài)信息、傳感器信息、按鍵信息,等待用戶任務的使用。

⑷網(wǎng)絡通信任務:由對應的網(wǎng)絡接收函數(shù)調(diào)用OSSemPost()函數(shù)激活,主要負責和PC上位機之間的信息交互,使得用戶可以借助網(wǎng)絡實現(xiàn)遠程控制密集架系統(tǒng)。

⑸ModbusRTU協(xié)議解析任務:該任務由以上三個數(shù)據(jù)通信任務中的任意一個激活,它的主要工作是:根據(jù)ModbusRTU數(shù)據(jù)幀規(guī)范,解析及保存固定列和上位機、固定列和移動列之間傳輸?shù)臄?shù)據(jù)幀。

ModbusRTU協(xié)議規(guī)定數(shù)據(jù)幀之間的間隔至少是3.5個字符,而Stm32F103R8T6的串口不具備超時中斷。因此,采用基于定時器中斷的串口數(shù)據(jù)接收方法以確定ModbusRTU數(shù)據(jù)幀是否傳輸完成。

ModbusRTU數(shù)據(jù)幀在串口傳輸過程中,字符與字符之間的數(shù)據(jù)間隔很短,如果串口接收數(shù)據(jù)過程,出現(xiàn)較長時間接收不到數(shù)據(jù)的情況,則說明當前ModbusRTU數(shù)據(jù)幀已經(jīng)傳輸完畢,后面再有新的數(shù)據(jù)接收,則作為下一幀ModbusRTU數(shù)據(jù)幀處理。本文正是利用ModbusRTU協(xié)議的這種特性,借助定時器中斷來實現(xiàn)ModbusRTU完整數(shù)據(jù)幀的判斷的,串口中斷接收到第一個字節(jié)的數(shù)據(jù)后,啟動定時器,定時時間設為3.5個字符的串口傳輸時間(根據(jù)波特率進行計算)。若在定時時間未到時,收到下一字節(jié),則保存到同一數(shù)據(jù)幀;若定時時間已到,仍然沒有收到新的數(shù)據(jù),則觸發(fā)定時器中斷,通知對應的通信處理任務已接收到完整數(shù)據(jù)幀,可以進行相關數(shù)據(jù)處理。相關軟件流程見圖2:

μCOS-II是搶占式內(nèi)核,它按照任務優(yōu)先級的高低對任務進行調(diào)度,因此任務優(yōu)先級的合理設置,對于密集架這種實時性要求較高的控制軟件來說尤為重要。在該軟件系統(tǒng)中,各任務的優(yōu)先級由高到低依次為:RS485通信任務、RS232通信任務、網(wǎng)絡通信任務、用戶任務。

綜合多任務機制的控制軟件主流程結(jié)構(gòu)圖如圖3所示。

4 結(jié)束語

本文探討了一種密集架控制軟件的設計方法,軟件基于ModbusRTU協(xié)議建立固定列和移動列的通信,并利用了μCOS-II操作系統(tǒng)的多任務機制來合理安排密集架軟件各個功能模塊的執(zhí)行和協(xié)調(diào)。基于該架構(gòu)的控制軟件,已經(jīng)應用于一套固定列+17列移動列的復雜密集架系統(tǒng)。實踐表明,軟件運行穩(wěn)定可靠,系統(tǒng)對控制指令響應及時,有效保證了密集架系統(tǒng)的穩(wěn)定性。

[參考文獻]

[1]任哲.嵌入式實時操作系統(tǒng)μCOS-II原理及應用(第一版)[M].北京:北京航空航天大學出版社,2005年.

[2]意法半導體技術(shù)支持:STM32F103xxx參考手冊.2010.

[3]意法半導體技術(shù)支持:Cotrex-M3權(quán)威指南.2007.

[4]李月恒,梁勝之,韓存武.基于STM32處理器的Modbus TCP/RTU網(wǎng)關設計[J].中國科技信息,2013,(9):76-77.

主站蜘蛛池模板: 精品国产一区二区三区在线观看 | 亚洲人成在线精品| 精品无码一区二区三区电影| 午夜精品久久久久久久99热下载| 99激情网| 亚洲国产精品一区二区第一页免| 欧美不卡视频一区发布| 青青操国产视频| 亚洲美女操| 久青草网站| 国产资源站| 无码不卡的中文字幕视频| 日本欧美中文字幕精品亚洲| 色男人的天堂久久综合| 99999久久久久久亚洲| 欧美日韩国产在线观看一区二区三区| 国产精品污视频| 亚洲AV无码久久精品色欲 | 亚洲av无码久久无遮挡| 亚洲最黄视频| 成人欧美日韩| 国产视频久久久久| 亚洲日韩精品综合在线一区二区| 手机精品视频在线观看免费| 无码高潮喷水专区久久| 国产污视频在线观看| 国产情精品嫩草影院88av| 狠狠干综合| www.日韩三级| 久久久噜噜噜| 午夜久久影院| 亚洲av无码专区久久蜜芽| 精品乱码久久久久久久| 国产精品刺激对白在线| 精品国产成人av免费| 精品无码日韩国产不卡av | 亚洲欧洲日韩国产综合在线二区| 一级毛片免费高清视频| 国产免费精彩视频| 国产男女XX00免费观看| 亚洲欧美日韩动漫| 亚洲黄色高清| 精品国产成人高清在线| 亚洲不卡影院| 久久精品人人做人人综合试看| 无码一区二区三区视频在线播放| 欧美成人综合在线| 91久久大香线蕉| 欧美啪啪一区| 丁香六月综合网| 精品综合久久久久久97超人| 国产呦精品一区二区三区下载| 国产微拍一区| 国产在线精品网址你懂的| 国产欧美视频在线| 国产成人综合久久| 亚洲精品欧美重口| 91精品国产一区自在线拍| 亚洲成人在线网| 日韩午夜福利在线观看| 国产成人福利在线视老湿机| 精品国产一二三区| 538精品在线观看| 国产精品尤物铁牛tv| 精品国产91爱| 58av国产精品| 国产乱子伦视频在线播放| 国产精品播放| 网友自拍视频精品区| 日韩欧美综合在线制服| 国产精品午夜福利麻豆| 黄色福利在线| 欧美三级日韩三级| 亚洲丝袜第一页| 国产性爱网站| 亚洲色欲色欲www网| 国产免费福利网站| 久久综合五月| 国产在线日本| 精品成人一区二区三区电影| 1769国产精品免费视频| 欧美不卡视频一区发布|