超轻巧modbus调试助手使用说明

超轻巧modbus调试助手使用说明

文章图片

一、使用说明1.1 数据格式

  • 和其他的modbus采集工具一样 , 本组件也支持各种数据格式 , 其实就是高字节低字节的顺序 。
  • 一般是2字节表示一个数据 , 后面又有4字节表示一个数据 , 目前好像还有8字节表示一个数据的设备 。
  • 不同厂家的设备对应的字节顺序可能不同 , 要求可以自定义顺序 , 以便满足各种设备的接入 。
  • 4字节的数据可以是长整型 , 也可能是浮点数 , 按照标准规则计算出浮点值 。 面对浮点数的采集 , 很多国内的厂商的做法是以长整型数据发出 , 再除以一个值比如1000进行换算 , 因为下位机往往是单片机 , 单片机对浮点数运算很鸡肋很吃力 。
  • 最终的数据解析还要区分有符号和无符号 , 一般都是有符号 , 因为可以表示负数 , 比如温度就有负数 。 目前本组件都是按照有符号进行运算 , 后面有场景需要可以增加无符号的支持 。
  • 如果发现数据解析不对 , 可以调整对应的顺序试试 。
  • Short_AB , 短整型数据 , 总共2字节 , 正序 , 高字节在前 , 低字节在后 。
  • Short_BA , 短整型数据 , 总共2字节 , 反序 , 低字节在前 , 高字节在后 。
  • Long_ABCD , 长整型数据 , 总共4字节 , 大端模式正序 。
  • Long_DCBA , 长整型数据 , 总共4字节 , 小端模式正序 。
  • Long_BADC , 长整型数据 , 总共4字节 , 大端模式反序 。
  • Long_CDAB , 长整型数据 , 总共4字节 , 小端模式反序 。
  • Float_ABCD , 浮点型数据 , 总共4字节 , 大端模式正序 。
  • Float_DCBA , 浮点型数据 , 总共4字节 , 小端模式正序 。
  • Float_BADC , 浮点型数据 , 总共4字节 , 大端模式反序 。
  • Float_CDAB , 浮点型数据 , 总共4字节 , 小端模式反序 。
1.2 数据采集
  1. 第一步 , 协议类型选择 , 本组件支持多种协议类型 , 如果选择的com , 则需要填写串口号和波特率 , 选择的网络比如TCP , 需要填写主机和端口号 。
  2. 第二步 , 选择轮询间隔 , 默认1s轮询一次 。
  3. 第三步 , 选择超时次数 , 默认3次 , 表示轮询3次还没有收到数据就离线 。
  4. 第四步 , 添加要采集的设备地址 , 起始地址和采集数量 。 默认会有三个地址 , 可以直接在表格中修改后再单击保存 。
  • 单击添加按钮 , 会生成一个默认值的新行 , 直接修改值 , 单击保存 。
  • 单击删除按钮 , 会将当前选中的行删除 , 删除后自动保存 。
  • 单击保存按钮 , 将表格中的所有数据保存到配置文件 。
  • 单击清空按钮 , 将表格中的所有数据清空 , 自动保存 。
  • 第一列填设备地址 , 1个字节 , 范围值1-247 , 切记这里是从1开始的 。 在RTU协议中对应在第一个字节 , 在TCP协议中对应在第六个字节 。
  • 第二列填寄存器开始地址 , 2个字节 , 范围值0-65535 , 切记这里是从0开始的 , 0表示第一个寄存器 。
  • 第三列填采集的数量 , 2个字节 , 和开始地址组合使用 , 开始地址+数量<=65535 。
  • 如果开始地址填0 , 采集数量填2 , 则表示采集寄存器1、寄存器2共2个寄存器的数据 。
  • 如果开始地址填7 , 采集数量填4 , 则表示采集寄存器8、寄存器9、寄存器10、寄存器11共4个寄存器的数据 。
  • 第四列填数据顺序格式 , 见上面数据格式说明 。 一般填Short_BA、Long_DCBA 。
  1. 单击启动服务按钮 , 会自动启动采集线程 , 如果采集设备存在则会显示对应采集到的数据 。
  2. 单击重新读取按钮 , 会立即复位设备离线状态 , 全部设备重新采集 。 为什么需要这个?因为一般在modbus采集过程中 , 都是按照轮询的方式采集的 , 但是实际场景中有些设备坏了或者根本没有 , 那每次都占用一次轮询时间是不是很浪费呢?这就需要自动跳过离线的设备 , 加快轮询速度 。 但是可能后面设备又接上去了 , 这个时候要么等待重连时间到了去采集 , 要么单击这个重新读取按钮立即触发 。 联调过程中往往喜欢单击这个按钮去立即触发一次 , 因为重连时间可能会比较大 , 傻傻的等待也不是个事 。
  3. 单击清空数据按钮 , 会清空左侧显示的数据 , 双击左侧的显示栏也会自动清空 。
  4. 所有收发的数据也会打印显示在左侧 , 方便查阅分析问题 , 也可以看到采集到的最终的值 。
1.3 数据写入【超轻巧modbus调试助手使用说明】
  1. 第一步 , 生成寄存器复选框和微调框 , 数量下拉框选择要生成的数量 , 单击一键生成 。 复选框的作用是用于单个写入数据 , 勾选了则表示该寄存器需要写入数据 。
  2. 第二步 , 填写好设备地址 , 从1开始 , 也就是对哪个设备写入数据 。
  3. 第三步 , 单击写入数据/单个写入按钮 , 对勾选的寄存器地址写入对应微调框的值 。
  4. 第四步 , 如果需要连续写入 , 还需要设置开始地址和写入数量 , 再单击连续写入按钮 。
  5. 单个写入对应功能码0x06 , 连续写入对应功能码0x10 。
  6. 写入动作和写入成功在左侧都有打印显示 , 一般是深绿色颜色显示 , 关键字写寄存器 。
二、功能特点
  1. 支持多种物联网通信协议 , 包括modbus和mqtt 。
  2. 协议方式支持串口com通信、网络tcp通信、网络udp通信、网络websocket通信 。
  3. 数据规则支持rtu模式和网络模式 , 网络rtu模式也就是modbus rtu over tcp/udp/websocket 。 相当于modbus串口协议数据走网络方式通信 。
  4. 支持批量连续写入寄存器数值和单个写入寄存器数值 。
  5. 支持数据顺序格式的设置 , 比如大端小端 , 高字节在前低字节在前的设置 。 支持Short_AB、Short_BA、Long_ABCD、Long_CDAB、Long_BADC、Long_DCBA、Float_ABCD、Float_CDAB、Float_BADC、Float_DCBA等 。
  6. 支持数据位字节数设置 , 比如短整型、长整型、浮点型等 。 常规的一般是2字节表示一个数据位 , 也有设备是4字节表示一个数据位 , 还有4字节浮点数的形式 。 后期可能还有8字节一个数据位 。
  7. 支持mqtt协议 , 可设置主机地址和端口、协议版本、唯一标号、用户名称、用户密码 。
  8. 支持mqtt发布主题、订阅主题、取消订阅 。
  9. 定时自动发布主题 , 可设置保活时间、超时时间、过期时间 。 mqtt通信自动重连 。
  10. mqtt模拟数据收发支持多种格式 , 文本、json、base64、hex等 。
  11. mqtt同时支持websocket方式 , 还支持ssl方式通信 。
  12. 支持多种采集通讯方式 , 包括串口和网络等 , 可自由拓展其他方式 。 可同时采集多路 。
  13. 自定义采集间隔(精确到毫秒)和超时次数 , 超时后自动将离线的文件从轮询队列中移除 , 加快轮询速度 。
  14. 可设置最大超时重连间隔 , 将离线的设备重新探测一次 , 保证设备恢复正常后能够重新加入轮询队列 。
  15. 同时提供了设备模拟工具 , 支持各种协议 , 支持设定多个设备的数据值 。
  16. 模拟工具可随机切换模拟数据值 , 要正常随机数据就模拟生成正常范围的数据 , 要报警数据就模拟生成报警范围的数据 。 方便测试 。
  17. 多线程采集和解析数据 , 以信号的方式发送解析结果 , 不卡主线程 。
  18. 架构采用基类继承方式 , 通用处理在基类 , 极易拓展其他通信方式 。
  19. 接口友好 , 使用非常简单 , 设置要采集的地址集合、开始索引集合、采集数量集合、数据顺序格式四个参数即可 。 会自动组装对应协议的数据发送 。
  20. 采集后的数据以统一格式的信号发出来 , 非常简单易用 。 支持浮点型数据 。
  21. 采集指令有优先级 , 如果有自定义的数据需要优先执行 。 可以将优先级高的指令调用append方法插入即可 。 可批量采集也可单个采集 。
  22. 支持利用现有的通信链路发送自定义数据 , 这个数据可以不是标准的modbus协议 , 比如有时候需要一些私有协议数据 , 利用现有链路发送下去执行 。
  23. 多线程高并发 , 每个端口采集都是一个独立的线程 , 互不干扰 , 支持成千上万个设备采集 。
  24. 代码做了兼容 , 支持各种编译器 , 同时支持Qt4、Qt5、Qt6 。
  25. 跨平台 , 支持windows、linux、mac、嵌入式linux、android、各种国产系统和开发板等 。
三、相关链接
  1. 体验地址:https://pan.baidu.com/s/1ZxG-oyUKe286LPMPxOrO2A 提取码:o05q 文件名:bin_iottool.zip
  2. 国内站点:https://gitee.com/feiyangqingyun
  3. 国际站点:https://github.com/feiyangqingyun

    推荐阅读