在做物联网,需要用modbus协议与硬件通讯,想试下Gateway或者workman能不能做,就是没什么头绪,网上也没有案例可参考。 比如gateway该怎么配置,listen怎么填,读写寄存器要发什么格式的数据
https://gitee.com/bubaishaolong/modbus-tcp-client 这个直接去链接modbus服务器 获取寄存器里面的值,当前bit位也可以进行操作
这个是我最近弄得一个 https://gitee.com/bubaishaolong/webman_iot 可以参考一下
6
谢谢大佬
mark
大佬请教一下,寄存器的值大于255就会从新计算,比如寄存器存储的值是256,但是读到数据是0,257读到的就是1,这种要怎么正确读取寄存器的值?
值是什么类型
值是int16
你在模拟器上看这个地址值是多少?
这个问题解决了,每个寄存器返回的数组元素是两个,索引为0的元素存储的是256的倍数,所以正确的值应该是$value = 256 * $word->getBytes()[0] + $word->getBytes()[1];
OK
大佬请问下如何实现按位读写?比如说一个8位寄存器地址,用0和1代表开关,那一个地址就可以存储8种设备的状态,那如何只改变其中一位的值?
我是这样做的 bindec(01011000) 进行存储
好的,谢谢大佬
https://gitee.com/bubaishaolong/modbus-tcp-client 这个直接去链接modbus服务器 获取寄存器里面的值,当前bit位也可以进行操作
这个是我最近弄得一个 https://gitee.com/bubaishaolong/webman_iot 可以参考一下
6
谢谢大佬
mark
大佬请教一下,寄存器的值大于255就会从新计算,比如寄存器存储的值是256,但是读到数据是0,257读到的就是1,这种要怎么正确读取寄存器的值?
值是什么类型
值是int16
你在模拟器上看这个地址值是多少?
这个问题解决了,每个寄存器返回的数组元素是两个,索引为0的元素存储的是256的倍数,所以正确的值应该是$value = 256 * $word->getBytes()[0] + $word->getBytes()[1];
OK
大佬请问下如何实现按位读写?比如说一个8位寄存器地址,用0和1代表开关,那一个地址就可以存储8种设备的状态,那如何只改变其中一位的值?
我是这样做的 bindec(01011000) 进行存储
好的,谢谢大佬