modbus协议,怎么知道要发什么命令?

女神打Boss 2016-09-05 05:39:11
使用modbus RTU over tcpip协议,A90软件作为从站模式,端口为8001,实现3,6功能码协议, 从站地址为50,数据格式为小端在前



上面是给的协议说明。
地址 功能码 第一个寄存器的高位地址 第一个寄存器的低位地址 寄存器的数量的高位 寄存器的数量的底位 错误校验

01 03 ?? ?? ?? ?? XX

应该按照上面这个格式吗?怎么没说波特率、停止位校验位、这些?

第一个寄存器地址是什么?怎么计算
寄存器数量是什么?怎么计算

请举例说明命令是怎么生成的。
...全文
2330 22 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
女神打Boss 2016-11-30
  • 打赏
  • 举报
回复
额, 项目搁置了,我一直没见到板子,没办法验证了 感觉19楼答案不错
baoyz 2016-10-29
  • 打赏
  • 举报
回复
3功能:读寄存器。可读取单个、多个寄存器值。 按格式就是地址 功能码 第一个寄存器的地址高位 第一个寄存器的地址低位 寄存器的数量的高位 寄存器的数量的底位 CRC校验 具体到读时间信息的话就是 32(地址) 03(读寄存器) 00 BE(190寄存器首地址) 00 0A(读取字节数量) xx xx(CRC校验) 6功能:写寄存器。每次只能写单个寄存器。 按格式就是地址 功能码 寄存器的地址高位 寄存器的地址低位 写寄存器的值的高位 写寄存器的值的低位 CRC校验 具体到写柱1温度就是 32(地址) 06(写寄存器) 00 02(柱1温度首地址) 00 03(假设为3度) xx xx(CRC校验)
女神打Boss 2016-09-20
  • 打赏
  • 举报
回复
引用 11 楼 schlafenhamster 的回复:
那 功能3的 2,3,4,5.。。。 就是 寄存器 地址
不太懂,能不能说详细点
schlafenhamster 2016-09-20
  • 打赏
  • 举报
回复
那 功能3的 2,3,4,5.。。。 就是 寄存器 地址
女神打Boss 2016-09-20
  • 打赏
  • 举报
回复
引用 9 楼 schlafenhamster 的回复:
说明书 这么简单 ? 不可能 !
真的这么简单,就说是modbus rtu,然后说3 6 功能码是干啥的,还需要什么资料
schlafenhamster 2016-09-20
  • 打赏
  • 举报
回复
我猜是 01 06 00 02 00 0 crc 数量1, 就是 00 02 那个地址 , 你 写 0000 或 00 01 试试看 那个 190 可能 是 “年+月+日+时+分” 应该是 5个 寄存器
女神打Boss 2016-09-20
  • 打赏
  • 举报
回复
引用 16 楼 schlafenhamster 的回复:
功能码 3 的地址是 190 到 240 ,不超过 一字节(255),所以高位 == 0
寄存器数量怎么算呢 例如查询 6 功能码的 02 03 04 寄存器数量是3 ? 寄存器数量高位 00 寄存器数量低位是03 ? 命令就是 01 06 00 02 00 03 crc 对吗?
schlafenhamster 2016-09-20
  • 打赏
  • 举报
回复
功能码 3 的地址是 190 到 240 ,不超过 一字节(255),所以高位 == 0
女神打Boss 2016-09-20
  • 打赏
  • 举报
回复
引用 14 楼 schlafenhamster 的回复:
入 功能码 6 的 2,3,4 是“”柱1 2 3 温度“” 所以 柱 1 温度 是: 功能码+地址 就是 06 02 你发个命令看看,能接受到什么
寄存器数量怎么算呢,还有寄存器地址高位、地位
schlafenhamster 2016-09-20
  • 打赏
  • 举报
回复
入 功能码 6 的 2,3,4 是“”柱1 2 3 温度“” 所以 柱 1 温度 是: 功能码+地址 就是 06 02 你发个命令看看,能接受到什么
worldy 2016-09-20
  • 打赏
  • 举报
回复
说明书内容不全,找厂家要 开始+站号+功能码+地址+(值)+数量+校验
schlafenhamster 2016-09-19
  • 打赏
  • 举报
回复
说明书 这么简单 ? 不可能 !
女神打Boss 2016-09-19
  • 打赏
  • 举报
回复
引用 7 楼 worldy 的回复:
寄存器地址要看产品说明书,不同产品寄存器地址不一样,离开了产品通信的说明书,谁也不知道
说明书就是结贴那个部分啊
worldy 2016-09-08
  • 打赏
  • 举报
回复
寄存器地址要看产品说明书,不同产品寄存器地址不一样,离开了产品通信的说明书,谁也不知道
女神打Boss 2016-09-07
  • 打赏
  • 举报
回复
引用 5 楼 worldy 的回复:
modbus RTU和modbus ASCII没有本质的区别,前者使用2进制编码,后者使用ASCII编码,前者使用CRC校验,后者使用二进制和作为校验,前者有CRLF结束,后者没有,其他编码格式都一样
modbus rtu不是16进制串口命令吗,主要想知道寄存器地址怎么算 主机给从机的命令是 地址 功能码 第一个寄存器的高位地址 第一个寄存器的低位地址 寄存器的数量的高位 寄存器的数量的底位 错误校验 对吗?
worldy 2016-09-06
  • 打赏
  • 举报
回复
modbus RTU和modbus ASCII没有本质的区别,前者使用2进制编码,后者使用ASCII编码,前者使用CRC校验,后者使用二进制和作为校验,前者有CRLF结束,后者没有,其他编码格式都一样
女神打Boss 2016-09-06
  • 打赏
  • 举报
回复
引用 3 楼 worldy 的回复:
TCP/IP哪里来的波特率?按照协议格式封装数据即可,然后送到端口,不知道你那个表描述的什么,modbus的地址?
是modbus rtu
worldy 2016-09-05
  • 打赏
  • 举报
回复
TCP/IP哪里来的波特率?按照协议格式封装数据即可,然后送到端口,不知道你那个表描述的什么,modbus的地址?
女神打Boss 2016-09-05
  • 打赏
  • 举报
回复
引用 1 楼 chengbar 的回复:
红色是功能码,下面是寄存器地址,用modbus pool 软件测试
6功能码的01 02 03。。。这是什么意思
sevancheng 2016-09-05
  • 打赏
  • 举报
回复
红色是功能码,下面是寄存器地址,用modbus pool 软件测试

2,644

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧