<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于LPC2294處理器的嵌入式PLC的設計

基于LPC2294處理器的嵌入式PLC的設計

作者: 時(shí)間:2013-12-26 來(lái)源:網(wǎng)絡(luò ) 收藏

2的軟件系統設計

的軟件分為運行系統軟件和開(kāi)發(fā)系統軟件兩部分。運行系統負責對整個(gè)系統的管理和對用戶(hù)程序的編譯執行,并保存所有的數據,完成與外界通訊。開(kāi)發(fā)系統面對用戶(hù),完成對PLC程序的編輯和轉換。

2.1 PLC運行系統軟件

該系統負責為應用程序分配內存,把該應用程序加載到分配好的內存里,然后開(kāi)始執行該程序的指令。如果該程序要求位于底層的操作系統提供服務(wù),該運行系統還必須負責處理有關(guān)的服務(wù)請求。該運行系統是基于嵌入式操作系統μC/OS-II來(lái)開(kāi)發(fā)的,選用嵌入式操作系統提高了軟件系統的抗干擾性,系統的可靠性及應用軟件的開(kāi)發(fā)效率,縮短了開(kāi)發(fā)周期。μC/OS-II的移植的主要工作是修改與ARM相關(guān)部分的代碼,它們集中在3個(gè)文件中。

①OS_CPU.H文件該文件包含了用#define定義的與相關(guān)的常量、宏和類(lèi)型定義。文件中這些數據類(lèi)型的定義如下:

typedef unsigned char BOOLEAN;

typedef unsigned char INT8U;

typedef signed char INT8S;

typedef unsigned short INT16U;

typedef signed short INT16S;

typedef unsigned int INT32U;

typedef signed int INT32S;

typedef float FP32;

typedef double FP64;

typedef unsigned int OS_STK;

與ARM7體系結構相關(guān)的一些定義如下:

#define OS_CRITICAL_METHOD 2

__swi(0×00)void OS_TASK_SW(void);

__swi(0×01)void _OSStartHighRdy(void);

__swi(0×02)void OS_ENTER_CRITICAL(void);

__swi(0×03)void OS_EXIT_CRITICAL(void);_

_swi(0×40)void*GetOSFunctionAddr(int Index);

__swi(0×41)void*GetUsrFunctionAddr(int Index);

__swi(0×42)void OSISRBegin(void);

__swi(0×43)int OSISRNeedSwap(void);

__swi(0×80)void ChangeToSYSMode(void);

__swi(0×81)void ChangeToUSRMode(void);

__swi(0×82)void TaskIsARM(INT8Uprio);

__swi(0×83)void TaskIsTHUMB(INT8Uprio);

/*上述函數需在移植文件OS _CPU.H中將其聲明。

*/#define OS_STK_GROWTH 1

此代碼段中的OS_ENTER_CRITICAL()函數和OS_EXIT_CRITICAL()函數實(shí)現打開(kāi)和關(guān)閉的功能。

②OS_CPU_C.C文件該文件中的任務(wù)棧結構初始化函數OSTaskStkInit(),必須根據移植時(shí)統一定義的任務(wù)堆棧結構進(jìn)行初始化。另外還有9個(gè)系統規定的鉤子函數必須聲明,但可以不包含任何代碼,這些鉤子函數在本移植中全為空函數。

③OS_CPU_A.S文件的移植共包括4個(gè)函數:多任務(wù)啟動(dòng)函數中調用的OSStartHighRdy()、任務(wù)切換函數OSCtxSw()、中斷任務(wù)切換函數OSIntCtxSw()、時(shí)鐘節拍服務(wù)函數OSTickISR()。

至此整個(gè)μC/OS-II內核移植完成。以后的用戶(hù)程序都是在這個(gè)基礎上進(jìn)行的擴充。

2.2 PLC開(kāi)發(fā)系統軟件

該系統的主要任務(wù)是讓用戶(hù)編寫(xiě)PLC程序,所以還需要設計與該系統相對應的編程平臺。編程平臺的設計主要包括編程界面的設計、編輯器的設計、轉換模塊的設計、編譯器的設計和通信模塊的設計等。軟件系統結構圖如圖7所示。

本文引用地址:http://dyxdggzs.com/article/256989.htm



用戶(hù)在編程平臺里編寫(xiě)PLC程序。這里借用FX系列PLC的編程軟件SWOPC-FXGP/WIN-C作為編程平臺,編程語(yǔ)言可以使用梯形圖和指令表。然后通過(guò)轉換程序把編譯后的目標文件轉化成C語(yǔ)言。轉換程序其實(shí)就是一個(gè)解釋系統,通過(guò)逐條翻譯編程軟件的指令表,生成和處理器指令系統無(wú)關(guān)的用戶(hù)指令。使用這樣的方式作為上位機編程平臺,節省了工作量。



關(guān)鍵詞: LPC2294 處理器 嵌入式PLC SP485E

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>