西门子PLCS7-200 MODBUS 功能码05、15 强制线圈的问题

‍功能码05是写单个线圈
功能码15是写多个线圈
手册里有句话:输出点不是被强制,用户程序可以重写由Modbus的请求而写入的值
PLC做从站,计算机发送01 0F 00 00 00 08 01 FF BE D5
程序是试验程序 就用I0.0去点Q0.0,I0.0不闭合,Q0.0不输出
这时发现输出点,Q0.0灭,Q0.1~Q0.7亮。按理说应该全都亮吧
计算机发送01 0F 00 00 00 08 01 01 CRC码,依旧点不亮Q0.0,PLC返回代码正常
怎么去重写MODBUS请求呢?比如怎么选择性去输出Q0.0?

没用modbus控制过plc,因为200我一直都是做主站。
我猜是双线圈输出了,就是你的程序有两地方执行了q0.0输出语句。一个是i0.0,一个是通讯。
所以才会出现你说的问题。追问

谢谢,确实是双线圈输出了,想用一个开关来区分是满足程序要求还是满足上位要求,因为是用的MODBUS指令库,不知道上位赋值在哪,请问怎么处理?

追答

modbus去写寄存器地址,然后把该地址作为控制输出的条件之一。

追问

库存储区是从VB2000开始,请问Q点的上位赋值地址在哪?

追答

不是这个功能码,是04

温馨提示:答案为网友推荐,仅供参考
相似回答