2020-01-12 17:25发布
zuu0 发表于 2016-7-6 15:10 上面明白了,,没错 if(addr_data < SUM_HoldingREG_WORD && (addr_data + reg_num)
最多设置5个标签!
rbuf与tbuf就是做为接收或者发送的数组。只是限定的寄存器数量为120个,哪里有只能从0开始的。
if(bHost_protocol)//当做主机
{
reg_num = ModbusPara.tBuf[4]; //输出数量---利用发送的数据
reg_num <<= 8;
reg_num += ModbusPara.tBuf[5];
byteCount = reg_num *2; // 字节数= 输出数量*2
if(ModbusPara.rBuf[2] <= LENGTH_HoldingREG && byteCount == ModbusPara.rBuf[2])
。
。
}
else//当做从机
{
addr_data = ModbusPara.rBuf[2]; //起始地址
addr_data <<= 8;
addr_data += ModbusPara.rBuf[3];
reg_num = ModbusPara.rBuf[4];
reg_num <<= 8;
reg_num += ModbusPara.rBuf[5];
if(reg_num >= 1 && reg_num <= SUM_HoldingREG_WORD) //有读取寄存器,且数量在120个以内
{// 保持寄存器个数判断OK
if(addr_data < SUM_HoldingREG_WORD && (addr_data + reg_num) <= SUM_HoldingREG_WORD)
}
一周热门 更多>