初级会员

- 积分
- 56
- 金钱
- 56
- 注册时间
- 2019-1-17
- 在线时间
- 16 小时
|

楼主 |
发表于 2020-5-6 12:13:56
|
显示全部楼层
图片怎么发不出去。。。那我贴一下代码
void Modbud_fun3() //3号功能码处理 ---主机要读取本从机的寄存器
{
u16 Regadd;
u16 Reglen;
u16 byte;
u16 i,j;
u16 crc;
Regadd=modbus.rcbuf[2]*256+modbus.rcbuf[3]; //得到要读取的寄存器的首地址
Reglen=modbus.rcbuf[4]*256+modbus.rcbuf[5]; //得到要读取的寄存器的数量
i=0;
modbus.Sendbuf[i++]=modbus.myadd;//本设备地址
modbus.Sendbuf[i++]=0x03; //功能码
byte=Reglen*2; //要返回的数据字节数
//modbus.Sendbuf[i++]=byte/256; //
modbus.Sendbuf[i++]=byte%256;
for(j=0;j<Reglen;j++)
{
modbus.Sendbuf[i++]=Reg[Regadd+j]/256;
modbus.Sendbuf[i++]=Reg[Regadd+j]%256;
}
crc=crc16(modbus.Sendbuf,i);
modbus.Sendbuf[i++]=crc/256; //
modbus.Sendbuf[i++]=crc%256;
RS485_RT_1; //
for(j=0;j<i;j++)
{
RS485_byte(modbus.Sendbuf[j]);
}
RS485_RT_0; //
} |
|