minimalmodbus
不提供一次设置多个线圈的方法。我找不到解决方法。
客观的:
SMC LEC 6 控制器数据表中的 modbus 协议描述,请参见链接。我尝试通过使用 pyton library 发送列出的 modbus 命令来遵循从第 7 页开始的示例中的说明minimalmodbus
。
我想发送命令01 0F 00 10 00 08 01 02 BE 97
,但找不到使用minimalmodbus
. 没有实现功能码15 ( OF
)。
我试图做的事情:
我的推理如下:
- 我想设置多个线圈:
0F
- 从位置开始:
00 10
- 我想设置8个线圈:
00 08
,或一个字节01
- 我想要做的是将此字节设置为值 2 (
02
),或二进制00000010
我认为这可以通过单独设置这些位置来实现:
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)
执行器虽然不动...
谢谢,扬