【提问】当modbus 命令为0x0F(写多个线圈)时,能不能自动执
ModbusC_V1.1 的说明书:/// 命令执行模式=4: 在modbus命令为0x05,0x06,0x10写命令时,/// 当D6D7指定的变量发生变化时自动执行
当modbus 命令为0x0F(写多个线圈)时,是不是也能自动执行?
0x0F指令不能自动执行 不会,只会在0X05,0X06,0X10时会执行,其他指令时不会执行。 if(BT==15) //01 0f xx xx xx xx len xx xx crch crcl
{ u8 i=0;u8 e=0;u16 n=0;u16 Temp=0;u16 Temp1=0;
Temp=(BT<<8)+BT;
W_u4= BT;//ID
W_u4= BT;//CMD
W_u4= BT; //ADDERH
W_u4= BT; //ADDERL
W_u4= 0; //LenH
W_u4= BT;//LenL
if(BT%8==0)
W_u4=(BT/8);
else W_u4=(BT/8+1);
if(W_u4%2==0)
{n=(W_u4/2);
for(i=0;i<n;i++)
{ Temp1=Read_Dgus(Temp+i);
W_u4= (u8)(Temp1>>8);
W_u4= (u8)(Temp1);
}
}
else { n=(W_u4/2+1);
for(i=0;i<n;i++)
{Temp1=Read_Dgus(Temp+i);
W_u4= (u8)(Temp1>>8);
}
for(e=1;e<n;e++)
{ Temp1=Read_Dgus(Temp+e-1);
W_u4=(u8)(Temp1);}
}
CrcH=0XFF;CrcL=0XFF;
for(i=0;i<(W_u4+7);i++)CRC_16(W_u4);
} 0x0F(写多个线圈)不能自动执行,写线圈只能单个执行,效率有点低哦 gongmin1982 发表于 2022-3-24 14:39
if(BT==15) //01 0f xx xx xx xx len xx xx crch crcl
{ u8 i ...
加这段代码能实现0x0F自动执行吗? 你们没有提供源代码,我也改不了啊
页:
[1]