无线抄表mac层协议20140926.docVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
无线抄表mac层协议20140926

无线抄表消息交换内容与格式 1 节点消息交换流程 1.1 采集器收发流程 (1)初始化状态:sleep状态,定时唤醒计时器Twakeup开始工作。 (2)每月自动wakeup一次,或接收到外部抄表命令后,将所有定时器、计数器清0,然后循环广播开始抄表命令1秒钟,保证所有节点自动wakeup时都有机会收到广播消息,启动定时器TJ0(假设10min),进入等待接收状态; (3)接收并立即回复状态:如果没收到消息,继续等待直至TJ0超时,返回抄表失败消息,返回sleep状态;如果收到消息,核对目的地址,如果不是采集器ID,直接忽略,丢弃此数据包;如果是采集器ID,进一步核对消息类别号,如果是: 请求上报水表数据消息,提取水表ID号(源地址),比较当前日期和相应水表数据更新日期,如果相同,则说明已上报更新过水表数据,回复禁止发送命令;如果不同,回复请求允许命令; 上报水表数据消息,提取水表ID号(源地址),比较已存数据和提交数据,如果相同,则说明已上报更新过水表数据,回复禁止发送命令;如果不同,保存更新数据,回复确认数据收到命令; Twakeup到时wakeup,或外部抄表命令唤醒,所有定时器、计数器清0 循环广播开始抄表命令1s,启动TJ0,进入接收状态 是否收到消息? Y N 是采集器地址否? Y N 处于Sleep状态,Twakeup开始工作 TJ0是否超时? Y N 返回抄表失败消息 返回sleep状态,Twakeup开始工作 是请求上报消息否? Y N 提取源地址,查找数据表 日期是否相同? Y N 回复禁止发送命令 回复上报请求允许命令 是请求上报消息否? Y N 提取源地址,查找数据表 数据是否相同? Y N 回复禁止发送命令 更新数据,回复收到确认消息 1.2 水表节点收发流程 (1)初始化状态:进入sleep状态,定时唤醒(每秒)计时器Twakeup开始计时。 (2)每秒钟自动wakeup一次,定时sleep(每5ms)计时器Tsleep开始计时,进入等待接收状态,如果收到开始抄表命令,读水表数据并存下来,将所有定时器、计数器清0,抄表状态标识位WorkFlag置1,准备好请求上报水表数据消息,sleep 1s后(保证抄表命令广播结束),启动发送超时定时器TBTx0(假设3min),进入发送状态;如果没收到开始抄表命令,继续等待,直至Tsleep超时,返回sleep状态。 (3)发送状态:侦听信道是否空闲(由两方面判断:首先,自己是否收到消息,是则不空闲,否则再查看RssiValue,如果超过RssiThreshold则不空闲,否则认为空闲),如果空闲,发送消息,发送次数计数器CBTx0++,启动接收超时定时器TBRx0,进入接收状态;如果不空闲,休眠随机时间wakeup,若TBTx0未超时,进入发送状态,若TBTx0超时,返回sleep状态。 (4)接收状态:如果未收到消息,继续等待直至TBRx0超时,进入下一步;如果收到消息,保存并核对目的地址,如果不是本节点ID或广播消息,直接忽略,丢弃此数据包;否则进一步保存并核对消息类别号,如果是: 上报请求允许命令,则准备好发送上报水表数据消息,重启TBTx0,进入发送状态; 禁止发送命令,则返回sleep状态; 确认数据收到消息,则返回sleep状态; (5)检查CBTx03(已尝试3次发送)? 是则放弃发送,视为上报失败,返回sleep状态;否则按已保存的消息类别号重新准备消息,重启TBTx0,进入发送状态; 定时wakeup,Tsleep开始计时,WorkFlag清0 是否收到消息? Y N 是开始抄表命令吗? Y N 处于Sleep状态,Twakeup开始工作 Tsleep是否超时? N Y 保存消息类别号至MsgType,存水表数据,所有定时器、计数器清0,WorkFlag置1 准备好请求上报水表数据消息 延时1 s 启动TBTx0计时器,调用发送子函数 WorkFlag==1? N Y 图1.2-1 水表节点收发程序主流程图 接收参数 信道是否空闲? Y N TBTx0是否超时? N Y 发送消息,CBTx0++ 启动TBRx0计时器,调用接收子函数 休眠随机时间后wakeup 返回Sleep状态,Twakeup开始工作 图1.2-2 水表节点发送子程序流程图 处于等待接收状态,TBRx0工作 是否收到消息? Y N TBRx0是否超时? N Y 读MsgType,重新准备待发送消息 返回Sleep状态,Twakeup开始工作 Y 启动TBTx0计时器,调用发送子函数 是允许上报命令? Y N 是禁止发送命令吗? N Y CBTx03? N 是确认收到消息吗? N Y 准备好上报水表数据消息 启动TBTx0计时器,调用发送子函数 图1.2-3 水表节点接

文档评论(0)

ayangjiayu13 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档