您好!
在我们的其中一个测试设置中、某些传感器节点将随机变为孤立状态。 有时、在传感器节点发送某些数据包后会发生这种情况、每秒发送一次30 ~ 200 数据包。 除此之外、发生频率似乎是完全随机的。 有些成为孤立的、而另一些仍在正常运行中。
有人能提供一些指导吗? 谢谢。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
尊敬的 Zhiyong:
理想情况下、它不应导致网络不稳定。 5秒后、我不怀疑您违反了堆栈的任何限制。
请使用跳频模式、但将信道序列减少到仅一个信道、并使用数据包监听器监听此信道。 我们可以看到网络的监听器日志、然后可能是问题的根本原因。
可以在以下位置找到数据包监听器: www.ti.com/.../PACKET-SNIFFER-2
有关设置数据包监听器的说明、请访问 :https://dev.ti.com/tirex/content/simplelink_cc13xx_cc26xx_sdk_6_40_00_13/docs/ti154stack/html/ti154stack/packet-sniffer.html
此致、
SID
您好 Sid、
感谢您提出设置和使用数据包监听器的想法。 我将在下一次尝试。
目前 、我怀疑饱和可能是导致至少一些问题的原因。 我将测试网络减少到3个无线电、1个收集器和2个传感器节点、将它们分开10英尺、一切开始正常工作。 即使在突发 TX 时也是如此。 在以前的测试设置中、有时有10个以上的对讲机、有时对讲机之间的距离只有几英尺。 此外、这些无线电的 TX 功率保留为默认的26dB。
是否有关于如何管理/避免饱和的指导原则? 我们设计了无线电覆盖大面积区域、但有时我们还需要将许多区域安装到狭小空间中。 我假设尽可能降低 TX 功率是避免饱和的一种方法。
最棒的
ZL
它不是示例收集器代码中提供的功能。 我们在定制期间添加了它。 在以下代码中、
static void pollIndCB(ApiMac_mlmePollInd_t *pPollInd)
{
ApiMac_sAddr_t addr;
addr.addrMode = ApiMac_addrType_short;
if (pPollInd->srcAddr.addrMode == ApiMac_addrType_short)
{
addr.addr.shortAddr = pPollInd->srcAddr.addr.shortAddr;
}
else
{
addr.addr.shortAddr = Csf_getDeviceShort(
&pPollInd->srcAddr.addr.extAddr);
}
if(addr.addr.shortAddr != CSF_INVALID_SHORT_ADDR)
{
Cllc_associated_devices_t *pItem;
pItem = findDevice(&addr);
if(pItem)
{
/* Assume one entry of pending data has been sent out by MAC */
if(pItem->pendingDataReq > 0)
{
pItem->pendingDataReq--;
}
// On CC1310, this may overwhelm TX queue of of collector
// When large number of radios are in a network
//sendHostStatePacket(pItem);
sendTimeSyncPacket(pItem);
processDataRetry(pItem);
}
}
}
[引用 userid="467915" URL"~/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1190449/cc1310-what-are-the-possible-causes-of-a-sensor-node-disconnects-from-a-collector-in-ti-15-4-network-with-frequency-hopping-enabled/4494171 #4494171"]请定义实际的网络流量
该网络设计为最多可运行50个传感器节点、每秒从每个传感器节点到收集器节点的数据包最大为32B、每5分钟从收集器节点到传感器节点的数据包最大为32B。 纸张上的这似乎远低于50kps 带宽。 但是、在测试时、一旦网络具有超过5个传感器节点、我们就开始遇到各种问题。
在收集器到传感器节点的数据包每 5分钟关闭一次的情况下、到目前为止、我已经测试了一个由15个传感器节点组成的网络、几个小时后仍未发现不稳定性或数据丢失。
/* maximum number of data frames in transmit queue */ // Assuming: 50 sensor nodes, host state packet 1 per 5 minutes, plus 1 time sync packet per hour // Total packets: 650 packets in one hour // Worst case: all 50 host state packet queued in 1 polling interval #ifndef MAC_CFG_TX_DATA_MAX #define MAC_CFG_TX_DATA_MAX 50 #endif
我们已经将其更改为50、这似乎不会阻止问题的发生。
您好 Sid、
一个相关的问题、是否有办法查询 MAC 层上的待处理 TX 数据包? 我们 实现了一种手动跟踪来自外部 MCU 推入的数据包的方法。 不幸的是 、这不能很好地工作。 它不会按堆栈本身跟踪后台 TX 数据包。 我发现 频繁调用该函数也会导致网络不稳定。
Error_t Cllc_getTotalPendingDataReq(uint16_t *totalPendingDataReq)
{
uint16_t pendingDataReqCount = 0;
for (size_t i = 0; i < CONFIG_MAX_DEVICES; i++)
{
pendingDataReqCount += Cllc_associatedDevList[i].pendingDataReq; // Added during customization
}
*totalPendingDataReq = pendingDataReqCount;
return ERROR_OK;
}您好 Sid、
我尝试了10, 使用以下设置, MAC_CbackCheckPending ()始终返回0,即使 在 ApiMac_mcpsDataReq()返回溢出错误。
是否有更好的方法来避免溢出?
谢谢、
MAC_CbackCheckPending() // mac_cfg.c /* determine whether MAC_MLME_POLL_IND will be sent to the application */ #ifndef MAC_CFG_APP_PENDING_QUEUE #define MAC_CFG_APP_PENDING_QUEUE TRUE #endif