minimalmodbus没有提供一种一次性设置多个线圈的方法。我找不到解决办法。
目标:
SMC 6控制器数据表中的modbus协议描述,请参阅链接。通过使用pyton库minimalmodbus发送列出的modbus命令,我尝试遵循示例中的说明,从第7页开始。
我想发送命令01 0F 00 10 00 08 01 02 BE 97,但没有找到使用minimalmodbus的方法。函数代码15 (OF)没有实现。
我想做的是:
我的推论如下:
0F00 1000 08,或一个字节0102),或者用二进制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)但执行器不动..。
谢谢你,简
发布于 2021-06-22 12:59:54
我能够通过在最小modbus类中深入一点并向设备发送原始有效载荷来发送该命令:
00 10 00 08 01 02
contr._performCommand(15, '\x00\x10\x00\x08\01\02')
contr.write_bit(flags['DRIVE'], 1)
time.sleep(WAIT_TIME * 3)
contr.write_bit(flags['DRIVE'], 0)https://stackoverflow.com/questions/68072096
复制相似问题