优化网站搜索排名,微信手机网站,国外网络推广服务,wordpress去除手机版页面本人水平有限#xff0c;写得不对的地方望指正 困惑#xff1a;线圈状态的值是否是存储在线圈寄存器里面#xff1f;是否有线圈寄存器的说法#xff1f;网上有说法说是寄存器占两个字节#xff0c;但线圈的最少操作单位是位。类似于继电器的通断状态#xff0c;直接根据电…本人水平有限写得不对的地方望指正 困惑线圈状态的值是否是存储在线圈寄存器里面是否有线圈寄存器的说法网上有说法说是寄存器占两个字节但线圈的最少操作单位是位。类似于继电器的通断状态直接根据电路的特性就可以直接拿到。就好像一根电线一样你剪断是一个断状态你把它接起来是通的状态。根据电路特性就可以实时获取了。我找遍了全网都没有找到一个权威的答案就暂且有吧 一 从读写功能分类
读的
功能码 01读取线圈寄存器的值可读写 功能码 02读取离散输入寄存器的值只读功能码 03读保持寄存器可读写可读多个或者单个寄存器内容所谓保持寄存器是指寄存器数值可以读写该寄存器数值用于输出模拟量功能码 04读输入寄存器所谓输入寄存器是指寄存器数值只能由传感器输入的模拟量来驱动更新数值数值是只读的一般是读取各种实时数据 写的
功能码 05写单个线圈寄存器功能码 06写单个保持寄存器也可以说预置单个保持寄存器功能码 10写多个保持寄存器也可以说预置多个保持寄存器功能码 0F写多个线圈寄存器 上面涉及到的寄存器
线圈寄存器(可读写)应用于类似于继电器的打开或者关闭状态的二值量
离散输入寄存器(只读网上有说是线圈寄存器的只读形式)应用于实时获取的二值量类似于接线柱的高低电平。
保持性寄存器可读写应用类似于设备的配置信息如设置通信波特率、设备地址等
输入寄存器(只读)应用类似于温度或者湿度传感器的值(不受主观意识影响)但我在淘宝中搜索了多个使用modbus协议的传感器设备它们都是使用保持性寄存器其实是并不严谨的从这个知乎链接modbus 协议 功能码 03 和 04的区别 - 知乎中找到了支持我的观点的说法。 二 读写规律 2.1 读单个或者多个寄存器
请问报文格式 响应报文格式 线圈和离散输入寄存器的状态可以使用一个比特位来表示其他的一个寄存器的值需要用两个字节来表示(数据高位、数据低位) 例子 2.2 写单个值(保持型寄存器和输入寄存器的数据的字节数都是2的倍数)
对应功能码05和06
请求报文 响应报文(和请求报文一样) 例子 2.2 写多个值(保持型寄存器和输入寄存器的数据的字节数都是2的倍数)
对应功能码0F和10
请问报文 响应报文(砍掉中间一部分) 例子 三 地址表示方式
你可能在某些文章看到的地址表示方式如下图那样方式表示的 查阅相关文档了解到上面的这种方式是PLC的地址表示方式 个人猜测 上面这种是绝对地址而我们通过C#编程传输的地址应该是相对地址(为了减少数据量的传输因为功能码就能唯一确定一个绝对地址)如
绝对地址40002(功能码03的绝对地址40001)相对地址0x01 待验证
功能码01、02读到的位满8个组合成一个字节可以用功能04读取
modbus协议功能码和常见问题 - 百度文库