cnfushao 发表于 2022-3-24 12:00:56

【提问】当modbus 命令为0x0F(写多个线圈)时,能不能自动执

ModbusC_V1.1 的说明书:///    命令执行模式=4: 在modbus命令为0x05,0x06,0x10写命令时,
///                              当D6D7指定的变量发生变化时自动执行
当modbus 命令为0x0F(写多个线圈)时,是不是也能自动执行?



Lreamy 发表于 2022-3-24 13:23:54

0x0F指令不能自动执行

allencarls 发表于 2022-3-24 13:24:51

不会,只会在0X05,0X06,0X10时会执行,其他指令时不会执行。

gongmin1982 发表于 2022-3-24 14:39:29

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);               
                              }

cnfushao 发表于 2022-3-24 15:58:37

0x0F(写多个线圈)不能自动执行,写线圈只能单个执行,效率有点低哦

cnfushao 发表于 2022-3-25 09:23:14

gongmin1982 发表于 2022-3-24 14:39
if(BT==15)                         //01 0f xx xx xx xx len xx xx crch crcl
                        {       u8 i ...

加这段代码能实现0x0F自动执行吗? 你们没有提供源代码,我也改不了啊
页: [1]
查看完整版本: 【提问】当modbus 命令为0x0F(写多个线圈)时,能不能自动执