modbus协议_笔记

python封装的modbus库有这几个:

modbus_tk :完整modbus协议栈的实现,支持modbus tcp/RTU{1.提供slave模拟器,即模拟modbus server:502),  web-based hmi master支持}

pymodbus:使用twisted实现的modbus完整协议(支持异步通讯)

MinimalModbus :只支持modbus rtu


modbus报文模型:


ADU: 应用数据单元
PDU: 协议数据单元

信息帧格式:


信息帧允许的最大长度为256Byte,N的范围是(0 , 252);

从机地址范围(1 , 247),0为广播地址;

功能码范围(1 , 225),正常响应时,从机返回原功能码,非正常响应,从机返回 原功能码|0x80;

数据域需要指明从哪个寄存器读写多少数据,数据域长度可为0表示某类信息;

校验采用16位CRC校验(2Byte);


功能码:




案例1:读保持寄存器(功能码03)

主机发送:

地址   功能码    数据起始寄存器        寄存器数量        CRC校验

 06       03          00 6B              00 01            XX XX

从机响应:

地址  响应功能码  数据长度      数据                        CRC校验

06          03      06            02 2B 00 00 00 63           XX XX


案例2:修改内部寄存器(功能码06)

地址   功能码    数据起始寄存器        修改的新值         CRC校验

 06       06      00 02                   00 01             XX XX



MODBUS-RTU功能码
 下面“线圈”“寄存器”其实分别直的就是“位变量”“16位变量”
        01 (0x01)        读线圈 
        02 (0x02)        读离散量输入
        03 (0x03)        读保持寄存器
        04(0x04)         读输入寄存器
        05 (0x05)        写单个线圈 
        06 (0x06)        写单个寄存器
        15 (0x0F)        写多个线圈 
        16 (0x10)        写多个寄存器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值