• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 關(guān) 閉

    新聞中心

    EEPW首頁(yè) > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > 基于TI Z-STACK的智能小車(chē)調(diào)度系統(tǒng)設(shè)計(jì)

    基于TI Z-STACK的智能小車(chē)調(diào)度系統(tǒng)設(shè)計(jì)

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

    3 軟件
    3.1 協(xié)議棧的無(wú)線(xiàn)網(wǎng)絡(luò)組建
    3.1.1 無(wú)線(xiàn)網(wǎng)絡(luò)組建的基本流程
    公司推出的符合ZigBee2006規(guī)范,定義了完全構(gòu)建在應(yīng)用層上的操作抽象層(Operation System Abstraction Layer,OSAL層)來(lái)隔離Z-STACK協(xié)議棧和特定硬件,采用輪詢(xún)及優(yōu)先級(jí)控制方式實(shí)現(xiàn)任務(wù)。在進(jìn)入應(yīng)用層任務(wù)(Car_Dispatch)處理之前,需首先進(jìn)行無(wú)線(xiàn)網(wǎng)絡(luò)的組建。本采用星形網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),由通信指揮車(chē)(協(xié)凋器)負(fù)責(zé)網(wǎng)絡(luò)的發(fā)起。在Z-STACK(ZigBee2006)中,無(wú)線(xiàn)網(wǎng)絡(luò)組建的基本流程為:
    main()→osal_init_system()→osalInitTasks()→ZDApp_Init(taskID++)→ZDOInitDevice(0)→ZDApp_NetworkInit(extendedDelay)→osal_set_event(ZDAppTaskID,ZDO_NETWORK_INIT)
    通過(guò)tasksEvents[ZDAppTaskID] |=ZDO_NETWORK_INIT向ZDAppTaskID任務(wù)中添加ZDO_NETWORK_INIT事件(消息),進(jìn)行網(wǎng)絡(luò)初始化,接下來(lái)在ZDApp_event_loop中處理ZDO_NETWORK_INIT事件,其過(guò)程為:
    ZDApp_event_loop→ZDO_StartDevice
    在該函數(shù)中,協(xié)調(diào)器將通過(guò)NLME_NetworkFor-mationReques發(fā)起網(wǎng)絡(luò),執(zhí)行回調(diào)函數(shù)ZDO_NetworkFormationConfirmCB(),向ZDAppTask ID任務(wù)發(fā)ZDO_NETWORK_START消息,然后在ZDApp_event_loop中通過(guò)osal_set_event(ZDAppTaskID,ZDO_STATE_CHANGE_EVT)向應(yīng)用層發(fā)ZDO_ STATE_CHANGE_EVT消息,應(yīng)用層的任務(wù)處理函數(shù)根據(jù)ZDO_STATE_CHANGE_EVT判斷無(wú)線(xiàn)網(wǎng)的狀態(tài),并確定探路車(chē)、運(yùn)輸車(chē)的注冊(cè)情況;而路由器和終端節(jié)點(diǎn)將通過(guò)NLME_NetworkDiscoveryRequest發(fā)現(xiàn)網(wǎng)絡(luò),并執(zhí)行回調(diào)函數(shù)ZDO_NetworkDiscoveryConfirmCB(),加入?yún)f(xié)調(diào)器組建的無(wú)線(xiàn)網(wǎng)絡(luò)。
    3.1.2 網(wǎng)絡(luò)拓?fù)渑c數(shù)據(jù)幀格式
    本系統(tǒng)采用星型網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),通信指揮車(chē)負(fù)責(zé)系統(tǒng)的調(diào)度。無(wú)線(xiàn)網(wǎng)絡(luò)上下行鏈路以及各的車(chē)載CC2430模塊與51單片機(jī)模塊通信的數(shù)據(jù)幀格式如圖3所示。

    本文引用地址:http://www.czjhyjcfj.com/article/159897.htm

    d.JPG


    以探路車(chē)為例,它與通信指揮車(chē)通信的信息流向如圖4所示。圖中①為Endpoint向Sink注冊(cè);②為51單片機(jī)利用傳感器采集路面信息,通過(guò)串口發(fā)送到Endpoint;③為Endpoint通過(guò)RF方式將數(shù)據(jù)傳輸?shù)絊ink;④為Sink從收到的數(shù)據(jù)中提取信息,分析出路面狀態(tài),然后向Endpoi nt下發(fā)控制指令;⑤為Endpoint從收到的數(shù)據(jù)控制指令后進(jìn)行處理,然后通過(guò)串口向51單片機(jī)下發(fā)控制指令;⑥為循環(huán)執(zhí)行①~⑤。

    b.JPG


    3.2 CC2430程序買(mǎi)現(xiàn)
    從圖4可知,CC2430通信模塊的主要功能是完成無(wú)線(xiàn)數(shù)據(jù)傳輸和處理串口事件。在處理串口事件上,需首先注冊(cè)串口,然后編寫(xiě)串口處理函數(shù)。串口波特率設(shè)置為57 600波特,以滿(mǎn)足使用11.059 2 MHz晶振的單片機(jī)模塊與CC2430通信模塊通信。串口注冊(cè)由函數(shù)SPIMgr_Regis terTaskID(Car_Dispatch_TaskID)實(shí)現(xiàn)。串口接收處理函數(shù)在協(xié)議棧MT層SPIMgr.c中,由uartConfig.callBackFunc=SPIMgr_ProcessZTool Data指明串口接收回調(diào)函數(shù)。為能接收自定義格式的串口數(shù)據(jù),需修改協(xié)議棧自帶的SPIMgr_ProcessZToolData函數(shù),包括在SPIMgr.h中定義圖3中SOP(#define SOP1_VALUE 0x2A),F(xiàn)CS(#defineEND 0x23),在SPIMgr.c中重構(gòu)數(shù)據(jù)格式,向APP層Car_Dispatch應(yīng)用程序發(fā)送CMD_ SERIAL_MSG消息等。根據(jù)圖3可知,Endpoint上行傳輸需在第6個(gè)字節(jié)發(fā)送數(shù)據(jù)長(zhǎng)度LEN-Token,因此在串口數(shù)據(jù)重構(gòu)中需添加SPI_Msg->msg[5]=LEN_Token,然后在Car_Dispatch應(yīng)用程序中的SYS_EVENT_MSG消息處理函數(shù)下面,加入處理串口消息代碼:
    e.JPG



    評(píng)論


    相關(guān)推薦

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

    關(guān)閉
    主站蜘蛛池模板: 汪清县| 江城| 岳西县| 焦作市| 集贤县| 灵璧县| 银川市| 安化县| 钦州市| 平乐县| 胶州市| 九江县| 富蕴县| 靖西县| 宜兴市| 福海县| 华安县| 甘德县| 肥东县| 黔江区| 新巴尔虎左旗| 从江县| 沿河| 凤山市| 马关县| 乌鲁木齐县| 江阴市| 方城县| 富平县| 上蔡县| 大连市| 兴国县| 察雅县| 古丈县| 桓仁| 重庆市| 乌恰县| 丰原市| 通榆县| 鹤岗市| 化德县|