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
).
没有实现
我尝试做的事情:
我的推理如下:
- 我要设置多个线圈:
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)
虽然执行器没有移动...
谢谢,
一月
我能够通过更深入地了解最小 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)
minimalmodbus
不提供一次设置多个线圈的方法。我找不到解决方法。
objective:
SMC LEC 6控制器数据表中的modbus协议说明,见link。
我尝试按照第 7 页开始的示例中的说明,使用 pyton 库 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)
虽然执行器没有移动...
谢谢, 一月
我能够通过更深入地了解最小 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)