首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Minimalmodbus发送值

Python Minimalmodbus发送值
EN

Stack Overflow用户
提问于 2016-08-01 06:28:10
回答 2查看 324关注 0票数 0

我需要使用Python通过Modbus控制VSD的速度。我已经接受了所有工作中的一个部分,那就是发送VSD的速度。

如果我发出这个命令,马达就会启动

代码语言:javascript
复制
 vsd.write_register(8192 , 2 , 0)

这个命令会让它停止

代码语言:javascript
复制
 vsd.write_register(8192 , 6 , 0)

命令的格式如下所示

代码语言:javascript
复制
Id  code adrsh adrsl   high   low   crc
01  06   20    00      00     06    02 08

VSD的文档将命令、寄存器和值显示为十六进制,但Python库需要十进制。因此,如果我发送简单的命令,所有的工作都是100%的。

但是当我想要设置速度时,我必须设置高值和低值。如果我发送0x2710或10000,vsd将返回错误。如果我使用VSD附带的工具,并将值100.00 (10000)拆分为27和10这两个字节,则一切正常。由于0x2710不工作,如何将值发送到VSD。

致以亲切的问候。

EN

回答 2

Stack Overflow用户

发布于 2016-08-02 00:51:14

你必须设置functioncode = 6,然后它才会发送正确的字节。

票数 0
EN

Stack Overflow用户

发布于 2020-05-22 13:03:43

有点晚了,但以防有人被这个卡住了:

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38688893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档