1、MODBUS从站通讯协议说明(MODBUS功能码及数据编址)H2U作为MODBUS从站时,支持MODBUS协议功能码0x01,0x03,0x05,0x06,0x0f ,0x10(按十六进制数算);通过这些功能码,可读写的线圈有M,S,T,C,X(只读),Y等变量;寄存器有D,T ,C。MODBUS通讯主机在访问(读取或改写)PLC从机的内部变量时,必须遵循如下的通讯命令帧定义,以及变量地址索引方法,才能进行正常的通讯操作。MODBUS帧格式(以MODBUS-RTU为例)a) 功能码 0x01(01 ):读线圈请求帧格式:从机地址+0x01+线圈起始地址+线圈数量+CRC 检验响应帧格式:从机地
2、址+0x01+字节数+线圈状态+CRC 检验b) 功能码 0x03(03 ):读寄存器请求帧格式:从机地址+0x03+寄存器起始地址+寄存器数量+CRC 检验响应帧格式:从机地址+0x03+字节数+寄存器值+CRC 检验c) 功能码0x05(05):写单线圈请求帧格式:从机地址+0x05+线圈地址+线圈状态+CRC 检验响应帧格式:从机地址+0x05+线圈地址+线圈状态+CRC 检验d) 功能码 0x06(06 ):写单个寄存器请求帧格式:从机地址+0x06+寄存器地址+寄存器值+CRC 检验响应帧格式:从机地址+0x06+寄存器地址+寄存器值+CRC 检验。e) 功能码 0x0f(15):写
3、多个线圈请求帧格式:从机地址+0x0f+线圈起始地址 +线圈数量+字节数+线圈状态 +CRC 检验。响应帧格式:从机地址+0x0 f +线圈起始地址 +线圈数量+CRC 检验f) 功能码0x10(16):写多个寄存器请求帧格式:从机地址+0x10+寄存器起始地址+寄存器数量+字节数 +寄存器值+CRC 检验。响应帧格式:从机地址+0x10+寄存器起始地址+寄存器数量+CRC 检验。变量编址a) 线圈编址线圈:指位变量,只有两种状态 0 和 1。在本 PLC 中包含 M,S,T,C,X ,Y 等变量。b) 寄存器编址寄存器:指 16 位或 32 位变量,在本 PLC 中,16 位变量包含 D,
4、T,C0199;32 位变量为C200255。说明:通过MODBUS访问C200C255段32位寄存器时,一个寄存器作两寄存器看待,一个32 位寄存器占用两个16寄存器空间。比如用户要读或写C205C208这4个寄存器, MODBUS地址为0xF70A(0xF700+10 ),寄存器数量8(4*2)。32 位寄存器不支持写单个寄存器(0x06 )功能码。注:MODBUS 通讯用 PLC 的 COM1 口,变量都需转为十六进制数,如 PL 默认地址为 1,读线圈 M400 的值,需把十进制 400 转为十六进制 0190 来读,请求帧格式:从机地址+0x01+线圈起始地址+线圈数量+CRC 检验,010101900001+ CRC检验。读 D1900 需把十进制 1900 转为十六进制 076C,请求帧格式:从机地址+0x03+寄存器起始地址+寄存器数量+CRC 检验,0103076C0001+CRC 检验。