You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用pyModbusTCP库向多个Modbus线圈写入值?

Modbus write_coils 方法使用说明

首先明确:标准的write_coils方法是针对连续地址段设计的,和你看到的示例逻辑一致:

  • 第一个参数是起始地址
  • 第二个参数是对应数量的线圈值列表,列表长度就是要写入的线圈数量

比如示例client.write_coils(1, [True]*8),实际是从地址1开始,连续给地址1到8的8个线圈都设置为True。

针对不同需求的解决方案

1. 写入连续地址的线圈

如果你的8个Modbus地址是连续的,直接用write_coils即可,只需要把起始地址设为这段连续地址的最小值,值列表对应每个地址的状态:

# 示例:给地址5到12的8个连续线圈设为True
client.write_coils(5, [True]*8)

2. 写入非连续地址的线圈

如果你的8个地址是分散的(比如[2,4,6,8,10,12,14,16]),要注意:
Modbus协议的「写入多个线圈」功能码(0x0F)本身只支持操作连续地址块,所以绝大多数客户端库的write_coils方法都不支持直接传入非连续地址列表。这种情况下,你只能循环调用单个的write_coil方法来实现:

# 示例:给8个非连续地址的线圈设为True
target_addresses = [2,4,6,8,10,12,14,16]
for addr in target_addresses:
    client.write_coil(addr, True)

虽然循环调用看起来繁琐,但这是符合Modbus协议规范的实现方式,也是这类场景下的常规解决方案。

内容的提问来源于stack exchange,提问作者user8901723980173

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 21:15:36