TI中文支持网
TI专业的中文技术问题咨询交流网站

CC2530(Z-stack) 斷網問題

您好,

          想請教一下,以下兩個問題:

1. Coordinator與End-Device連線後,假設斷線,在Coordinator與End-Device的Z-Stack程序中,那部分可以知道彼此已經斷網的訊息呢?

2. 在斷網後,Coordinator或End-Device 使用哪種API可以發出beacon request呢?

  非常感謝您

YiKai Chen:

以Z-Stack 3.0.2的sampleSwitch為例,end device跟父節点断線時会進到zclSampleSw_ProcessCommissioningStatus 的 case BDB_COMMISSIONING_PARENT_LOST: 去启动osal_start_timerEx(zclSampleSw_TaskID, SAMPLEAPP_END_DEVICE_REJOIN_EVT, SAMPLEAPP_END_DEVICE_REJOIN_DELAY)作rejoin;至於協調器並無法得知end device断線、這部份可以透過應用程序去執行heart beat達成

Kevin Qiu1:

beacon request可以用
NLME_NetworkDiscoveryRequest

user5851352:

回复 YiKai Chen:

感謝您的回覆,因我使用的是Z-stack-2.5.1a版本,沒發現case BDB_COMMISSIONING_PARENT_LOST,請問這兩個版本執行的模式是一樣的嗎? 感謝您

YiKai Chen:

回复 user5851352:

Z-stack-2.5.1a要去ZDO_STATE_CHANGE_EVT裡面檢查devState,如果devState不是DEV_END_DEVICE代表跟父節点断線可以透過NLME_NetworkDiscoveryRequest去找父節点

user5851352:

回复 YiKai Chen:

好的,感謝您的回覆,使我獲益良多.另請教另一個問題,當初會問斷網問題是因為,目前由於END-device使用上必須把設定改成-DRFD_RCVC_ALWAYS_ON=TRUE,所以在父節點斷線再次上電後,END-device卻無法自動重連,是否可以建議一些方法可以解這問題,感謝您

YiKai Chen:

回复 user5851352:

你RFD_RCVC_ALWAYS_ON=TRUE的END-device有設置polling嗎?

user5851352:

回复 YiKai Chen:

blog.csdn.net/…/76128050
有嘗試使用這篇文章的方式,斷線後可以連回來一次,第二次斷線後就不行了
——————————————————————————————————————————————————————————————-
不過會設定RFD_RCVC_ALWAYS_ON=TRUE方式,是因為目前使用上父節點傳輸的資料約1232 bytes(切成16筆發送),要接的End-device約25個,如果25個子節點一連上線,全部一直發beacon request ,會造成父節點傳輸的時候造成封包碰撞,原本3秒鐘傳輸完成,會拉長到5分鐘或者更久(有實測過)…

設置polling好像會跟原本方式一樣(一直發beacon request),或許是不是只能找end-device測知斷線的區段,再啟動beacon request的功能,重新連網了,感謝您

YiKai Chen:

回复 user5851352:

設定RFD_RCVC_ALWAYS_ON=TRUE後不要把polling rate設置為0應該就可以解決你的問題

user5851352:

回复 YiKai Chen:

您好,您是說f8wConfig.cfg中的以下參數,不要把polling rate設置為0嗎? 感謝

-DPOLL_RATE=1000 -DQUEUED_POLL_RATE=51 -DRESPONSE_POLL_RATE=51 -DREJOIN_POLL_RATE=440

—————————————————————————————————————————————————————————–

我在ZDO_STATE_CHANGE_EVT中加printf訊息,發現在RFD_RCVC_ALWAYS_ON=TRUE斷網後,不會觸發ZDO_STATE_CHANGE_EVT ,還有其他地方可以觸發斷網狀態嗎? 不好意思麻煩您了,感謝

if ( events & ZDO_STATE_CHANGE_EVT ) { ZDO_UpdateNwkStatus( devState );

// At start up, do one MTO route discovery if the device is a concentrator if ( zgConcentratorEnable == TRUE ) { // Start next event osal_start_timerEx( NWK_TaskID, NWK_MTO_RTG_REQ_EVT, 100 ); }

// Return unprocessed events return (events ^ ZDO_STATE_CHANGE_EVT); }

YiKai Chen:

回复 user5851352:

你提出的連結內的下面這些code要去掉
NLME_SetPollRate( 0 );

NLME_SetQueuedPollRate( 0 );

NLME_SetResponseRate( 0 );

赞(0)
未经允许不得转载:TI中文支持网 » CC2530(Z-stack) 斷網問題
分享到: 更多 (0)