<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于LPC2294處理器的嵌入式PLC的設(shè)計(jì)

          基于LPC2294處理器的嵌入式PLC的設(shè)計(jì)

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

          2的軟件系統(tǒng)設(shè)計(jì)

          的軟件分為運(yùn)行系統(tǒng)軟件和開發(fā)系統(tǒng)軟件兩部分。運(yùn)行系統(tǒng)負(fù)責(zé)對(duì)整個(gè)系統(tǒng)的管理和對(duì)用戶程序的編譯執(zhí)行,并保存所有的數(shù)據(jù),完成與外界通訊。開發(fā)系統(tǒng)面對(duì)用戶,完成對(duì)PLC程序的編輯和轉(zhuǎn)換。

          2.1 PLC運(yùn)行系統(tǒng)軟件

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

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

          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體系結(jié)構(gòu)相關(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);

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

          */#define OS_STK_GROWTH 1

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

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

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

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

          2.2 PLC開發(fā)系統(tǒng)軟件

          該系統(tǒng)的主要任務(wù)是讓用戶編寫PLC程序,所以還需要設(shè)計(jì)與該系統(tǒng)相對(duì)應(yīng)的編程平臺(tái)。編程平臺(tái)的設(shè)計(jì)主要包括編程界面的設(shè)計(jì)、編輯器的設(shè)計(jì)、轉(zhuǎn)換模塊的設(shè)計(jì)、編譯器的設(shè)計(jì)和通信模塊的設(shè)計(jì)等。軟件系統(tǒng)結(jié)構(gòu)圖如圖7所示。

          本文引用地址:http://www.ex-cimer.com/article/256989.htm



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



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

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();