python SMC LEC 6 的 minimalmodbus 协议实现:写入多个线圈

python minimalmodbus protocol implementation for SMC LEC 6: write to multiple coils

minimalmodbus 不提供一次设置多个线圈的方法。我找不到解决方法。

objective:

SMC LEC 6控制器数据表中的modbus协议说明,见link。 我尝试按照第 7 页开始的示例中的说明,使用 pyton 库 minimalmodbus.

发送列出的 modbus 命令

我想发送命令 01 0F 00 10 00 08 01 02 BE 97,但找不到使用 minimalmodbus 执行此操作的方法。 函数代码 15 (OF).

没有实现

我尝试做的事情:

我的推理如下:

我认为这可以通过单独设置这些位置来实现:

logging.debug('write step')
step_address = int('0010', 16)

bin_2 = [0] * 8
bin_2[6] = 1

for pos, val in zip(list(range(8)), bin_2):
    contr.write_bit(step_address + pos, val)
time.sleep(WAIT_TIME)
contr.write_bit(flags['DRIVE'], 1); time.sleep(WAIT_TIME * 5)

虽然执行器没有移动...

谢谢, 一月

我能够通过更深入地了解最小 modbus class 并将原始有效载荷发送到设备来发送有问题的命令:

00 10 00 08 01 02

contr._performCommand(15, '\x00\x10\x00\x08')
contr.write_bit(flags['DRIVE'], 1)
time.sleep(WAIT_TIME * 3)
contr.write_bit(flags['DRIVE'], 0)