新聞中心

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

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

        作者: 時間:2013-12-26 來源:網絡 收藏

        2的軟件系統設計

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

        2.1 PLC運行系統軟件

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

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

        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體系結構相關的一些定義如下:

        #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()函數實現打開和關閉的功能。

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

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

        至此整個μC/OS-II內核移植完成。以后的用戶程序都是在這個基礎上進行的擴充。

        2.2 PLC開發系統軟件

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

        本文引用地址:http://www.104case.com/article/256989.htm



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



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 慈溪市| 阳朔县| 瑞昌市| 丰城市| 尤溪县| 高清| 湘潭县| 当阳市| 砚山县| 铁岭市| 建瓯市| 安化县| 将乐县| 固阳县| 龙井市| 海宁市| 德安县| 金寨县| 嫩江县| 班玛县| 改则县| 云梦县| 上饶县| 肃宁县| 莎车县| 定陶县| 吉林市| 庆城县| 黄梅县| 宜兰县| 胶南市| 刚察县| 蓬莱市| 文昌市| 健康| 朔州市| 兰考县| 岳池县| 九寨沟县| 朝阳区| 济南市|