S7 200 smart用作Modbus从站,Mode、Addr、Baud、Parity都可以设置,当这四个中任一个被更改时置位MBus_ReInit位,重新运行MBUS_INIT。

测试开始:
先把从站地址设定为9,Baudrate=19200,无校验,使用ModScan软件读取S7 200 smart从站成功。
把从站地址更改为8,ModScan上显示读取失败,Modbus Message TIME-OUT。

把ModScan的读取设备地址改成8,读取成功。

继续更改S7 200 smart从站地址,随后相应更改ModScan的读取设备地址,读取总能成功。
但是:
S7 200 smart从站地址还是设置为9,ModScan读取设备地址9,读取成功;
将ModScan读取设备地址更改成8,读取失败,然后将S7 200 smart从站地址更改成8,读取仍然失败!!
此时MBUS_INIT指令输出Done=1,Error=0。
将MBUS_INIT的MODE输入(MBus_Mode)设成0(并运行MBUS_INIT)再重新设成1(并运行MBUS_INIT),读取才继续成功。
尝试多次不同从站地址都是同样的情况。
把ModScan软件读取的节点地址设置好后,它就会开始不断读取这个地址了,然后再把S7 200 smart的Modbus从站地址更改到这个地址时,好像MBUS_SLAVE不能很好地处理发来的Modbus命令。
这样看,必须先把PLC这边地址先配置好,然后主站那边才能开始读取,否则就出问题。
不知道有没有碰到过这种问题的专家?还是200 smart本来就这样的?