最新在调试KNX/IP网关协议,所以分享下KNX/IP网关协议的一点理解,KNX/IP协议是在KNX协议的第三章,03_08_01开始到03_08_10。可以自行参考源文档

1、搜索网关

协议里定义了客户端搜索IP网关的ID,0x0201,和IP网关回复的ID,0x0202,报文显示如下

客户端发送搜索网关命令后,在同一网络的所有IP网关会上报回复自己的详细信息。

2、建立连接

协议里定义了客户端发送建立连接请求,0x0205,和IP网关回复的ID,0x0206,报文显示如下

客户端发送建立连接请求后,正常情况下在10s内收到IP网关回复的连接回复,如果10s内收不到,客户端应该忽视后面的连接回复报文,等待下一次连接请求发出。IP网关的连接回复报文里面有一个字段很重要,就是Communication Channel ID,比如上面的CID就是03,每一次IP网关与客户端建立连接后都有一个特定的CID,用来表示建立的通道号,这个通道号是后面所有数据通信的ID。

3、心跳包

在KNX/IP协议里有定义了客户端与IP网关之间的心跳报文机制,用来作为有效连接的判断

客户端发送连接状态请求报文0x0207,正常IP网关应该在10s内回复连接状态回复0x0208,如果IP网关未在10s内回复,则客户端重复发送3遍请求报文,如果都没有收到回复,则客户端应该主动断开与IP网关之间的连接。IP网关在120s内如果未收到任何状态请求报文,则客户端发送断开连接请求。协议如下

4、断开连接

大多数情况下应该由客户端主动发送断开连接请求,在内部错误或者收到无效数据包情况下,IP网关也可能会发送断开请求给客户端,不过协议还是建议客户端发送断开请求。在调试过程中我发现,客户端如果跟IP网关建立连接成功以后,如果客户端没有发送断开连接请求,再建立一个连接的话,会发生IP网关发送的断开请求,导致出错,错误报文如下:

后来分析后发现,如果正常建立连接后客户端跟IP网关之间有一个指定的通道号,但是未正常断开的IP网关再跟客户端建立连接后,连接成功的通道号会跟之前的不一样,之前的通道号又会存在,这时候客户端往IP网关发数据就会产生这样的错误报文,从而导致IP网关自动断开连接。

5、数据收发通讯

这一章协议在03_08_04有详细说明

协议里定义的数据发送方式如下

报文如下:

客户端往一个组地址写值,可以看出每一次发送请求后都有一个Ack帧回复,这是协议规定的,同时注意到这里有一个字段也很重要,就是Sequence Counter,这里报文的序号计数器值的从0变到1,协议如下有说明,在每一次成功数据通讯过程中这个计数值应该加1。

关于Ack帧,这里应该注意如果没有在1s内收到Ack帧,客户端应该再发一次请求帧,然后断开连接

所以Ack帧的回复应该保证在1s内,这样才不会出错。

以上就是关于KNX/IP 网关协议里面的一些基本操作和重点。

关于KNX/IP 网关协议报文解析以及几个注意事项相关推荐

  1. ModbusTCP协议报文解析

    ModbusTCP协议报文解析 报文格式 交互(通信)标识:2个字节 为此次通信事务处理标识符,一般每次通信之后将被要求加1以区别不同的通信数据报文. 协议标识:2个字节 表示该条指令遵循Modbus ...

  2. rtsp协议报文解析-首部字段解析

    前言 网上关于rtsp的文章很多,但大多是抽象的理论介绍,从理论学习到实际上手开发往往还有一段距离.然而,没有实际开发经验的支撑,理论又很难理解到位. 本系列文章将从流媒体协议的基础原理开始,通过抓包 ...

  3. 西门子PLC的S7协议报文解析说明

    我们以S7的1500系列来查看握手和读取.写入[字Word或者位Bit]命令报文 以下报文不做说明时都是十六进制字节. 西门子PLC需要连接成功后发送两次握手命令方可进行读写通信. 西门子PLC的S7 ...

  4. TFTP协议报文解析

    IP数据报文: IP首部 + UDP报文 UDP报文: UDP首部 + TFTP数据报文 TFTP数据报文: 操作码 + 文件名 + 0 + 模式 + 0 TFTP报文: 2字节 x字节 1字节 x字 ...

  5. HTTP 协议报文解析

    本篇主要是为了记录HTTP中报文的格式,以便针对报文进行解析.首先会介绍基础的HTTP报文,之后会介绍 文件上传时的数据报文格式. HTTP基础报文格式 按照HTTP报文类型进行介绍,HTTP报文类型 ...

  6. SL651协议报文解析(一)

    相关所需功能码枚举类请看上篇文章呦~ 先上一些报文方便大家测试解析: 下方都是一些上行报文,如需下行可以私信我 测试报: 7E 7E 10 00 51 14 19 10 00 7B 2F 00 08 ...

  7. matlab里的xcp报文,xcp协议报文解析

    AAddddiittiioonnaall ssooffttwwaarree XCP ((sseerrvviicceess)) ttoo bbee iinntteeggrraatteedd iinn t ...

  8. HTTP协议报文解析

    HTTP(HyperText Transfer Protocol,超文本传输协议) HTTP是一个应用层协议,虽然在2015年已推出HTTP/2版本,并被主要的web浏览器和web服务器支持.但目前使 ...

  9. KNX IP 协议分析

    KNX IP 协议分析 KNXnet/IP 连接请求数据包 连接请求响应数据包 连接状态请求 连接状态请求响应 Tunnel请求 Tunnel请求响应 最后 KNXnet/IP   KNXnet/IP ...

  10. 支付系统设计三:渠道网关设计02-客户端报文解析

    文章目录 前言 一.后台配置管理 1.1 渠道配置 1.1.1 渠道基本信息新增 1.1.2 渠道交易类型配置 1.1.3 渠道商户信息配置 1.1.4 账户配置 1.1.5 交易类型机构配置 1.2 ...

最新文章

  1. 前途到底是网络工程还是程序设计
  2. pytorch模型加载测试_使用Pytorch实现物体检测(Faster R-CNN)
  3. transformer 解码_碎碎念:Transformer的解码加速
  4. 常用 API 函数(7): 位图、图标和光栅运算函数
  5. 2009年上半年网工考试试题分析41-50
  6. hdu 3183 A Magic Lamp (rmq)
  7. HTML5移动端最新兼容问题解决方案
  8. 【第三方授权登录】微信授权登录
  9. 7款让你时刻涨知识越变越强的在线网站分享,相见恨晚!
  10. termux python3.7.4_基于Termux打造Android手机渗透神器(2017-7-22更新)
  11. 基于opencv的数字识别
  12. MySQL 数据库备份与还原
  13. 操作系统添加系统调用+内核编译
  14. 微信小程序服务器向客户端发送通知消息,微信小程序消息推送
  15. 高职计算机应用与信息检索,信息检索论文,关于高职院校图书馆对学生信息检索的教育相关参考文献资料-免费论文范文...
  16. sicp in python 资源
  17. 基于微信小程序编写的AI配音界面
  18. 【ceph】集群搭建(centos7-1908)
  19. 写在Groovy/Grails栏目开通的话
  20. Yii Zii组件 CGridView 使用详解

热门文章

  1. 检验样本是否服从泊松分布
  2. 软件工程网络15结对编程作业1(201521123018谢元将)
  3. ES文件浏览器访问电脑共享文件夹,输入正确的密码、账号,始终在登录界面
  4. 日系插画学习笔记(十二):如何增加画面完整度
  5. .mp4视频测试地址
  6. 阿里云香港地域云服务器、轻量和虚拟活动报价
  7. STM32读写ADXL345 中断功能
  8. 当你在进行SDK安装更新时,遇到了一些不能安装的项目时,你可以酱紫····
  9. matlab中的级数怎默算_matlab相关系数计算公式(Pearson和Spearman,以及Kendall Rank)...
  10. GlusterFS(上)