我需要使用Python通过Modbus控制VSD的速度。我已经接受了所有工作中的一个部分,那就是发送VSD的速度。
如果我发出这个命令,马达就会启动
vsd.write_register(8192 , 2 , 0)这个命令会让它停止
vsd.write_register(8192 , 6 , 0)命令的格式如下所示
Id code adrsh adrsl high low crc
01 06 20 00 00 06 02 08VSD的文档将命令、寄存器和值显示为十六进制,但Python库需要十进制。因此,如果我发送简单的命令,所有的工作都是100%的。
但是当我想要设置速度时,我必须设置高值和低值。如果我发送0x2710或10000,vsd将返回错误。如果我使用VSD附带的工具,并将值100.00 (10000)拆分为27和10这两个字节,则一切正常。由于0x2710不工作,如何将值发送到VSD。
致以亲切的问候。
发布于 2016-08-02 00:51:14
你必须设置functioncode = 6,然后它才会发送正确的字节。
发布于 2020-05-22 13:03:43
有点晚了,但以防有人被这个卡住了:
freqValue = 45 #freq of 45hz
convertFactor = 100 #may vary but usually is 10 or 100
registerAddress = 8193 #check the manual but usually is after the start stop register
rtuFreqValue = freqValue * convertFactor
vsd.write_register(registerAddress,rtuFreqValue,0)https://stackoverflow.com/questions/38688893
复制相似问题