在modbus上发送写入帧(数组) – modbusWrites

带Modbus版本中,在modbus总线上发送写入帧(写多个寄存 0x10)

定义

int modbusWrites (int addr, int fcode, int outputaddr, int count, byte[] val, int len, int timeout);

参数

addr:

地址

fcode:

功能码

outputaddr:

输出地址(寄存器地址)

count:

输出值数量(寄存器数量)

val:

值数组

len:

值数组长度(寄存器数量 x 2)

timeout:

超时时间,单位毫秒

函数参数对应设置完成后,由函数计算校验并外发。

返回值

0 成功,-1超时

示例

byte a[4] = {0x01,0x02,0x03,0x04};//定义数据数组

// 在Modbus总线上发送写入帧数组,设备地址0x01,功能码0x06,输出地址0x0064,寄存器数量2,值数组a,数组长度4,超时50mS

num1.val = modbusWrites(0x01,0x10,0x0064,2,a,4,50);//使用时建议用整数控件将返回值显示处理,方便判断读取状态
if(num1.val == 0)
{
    text1.txt = "数据写入成功";
}else
{
    text1.txt = "数据写入超时";
}

//外发数据:01 10 00 64 00 02 04 01 02 03 04 55 7b

// 可在后续实验章节下载工程文件参考