首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Modbus-tk RTU从机保持寄存器读取带符号整数

Modbus-tk RTU从机保持寄存器读取带符号整数
EN

Stack Overflow用户
提问于 2018-02-09 23:04:50
回答 1查看 3.2K关注 0票数 3

我使用modbus-tk创建了一个modbus从站,如下所示。我使用简单的modbus主软件(http://www.simplymodbus.ca/RTUmaster.htm)作为主软件。如何设置从机表示有符号整数而不是无符号整数。例如,当我发送一个16位的数据时,(FC19)十六进制应该表示-999十进制,但现在我得到了64537。

请尝试使用此处的示例https://github.com/ljean/modbus-tk/blob/master/examples/tcpmaster_example.py。这似乎只对师父有效。

代码语言:javascript
运行
复制
import sys

import modbus_tk
import modbus_tk.defines as cst
from modbus_tk import modbus_rtu
import serial


PORT = 0
#PORT = '/dev/ptyp5'

def main():
    """main"""
    logger = modbus_tk.utils.create_logger(name="console", record_format="%
(message)s")

    #Create the server
    server = modbus_rtu.RtuServer(serial.Serial(PORT))

    try:
        logger.info("running...")
        logger.info("enter 'quit' for closing the server")

        server.start()

        slave_1 = server.add_slave(1)
        slave_1.add_block('0', cst.HOLDING_REGISTERS, 0, 100,data_format=">b")
        while True:
            cmd = sys.stdin.readline()
            args = cmd.split(' ')

            if cmd.find('quit') == 0:
                sys.stdout.write('bye-bye\r\n')
                break

    finally:
        server.stop()

if __name__ == "__main__":
    main()

我得到了:

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "C:/Users/Yang/Documents/RBES 
work/Projects&study/Sensors/serial_code/modbus-tk-test.py", line 50, in main
    slave_1.add_block('block1', cst.HOLDING_REGISTERS, 100, 
127,data_format='>b')  
TypeError: add_block() got an unexpected keyword argument 'data_format'
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-09 23:12:59

在向服务器添加新的备机时,您可以将备机配置为返回有符号而不是无符号

代码语言:javascript
运行
复制
slave_1 = server.add_slave(1, unsigned=False)

add_block不允许data_format参数。data_format只能在执行主查询时使用。因此,您应该删除它并添加一个新块,如下所示

代码语言:javascript
运行
复制
slave_1.add_block('0', cst.HOLDING_REGISTERS, 0, 100)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48708648

复制
相关文章

相似问题

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