Получение данных pyModbus - PullRequest
       6

Получение данных pyModbus

0 голосов
/ 29 августа 2018

Я пытаюсь получить данные от ПЛК, используя Modbus через преобразователь USB в последовательный порт, на мой компьютер.

из диспетчера устройств. Я проверил, что конвертер USB - это COM3, и он настроен на Бод 19200 бит данных 8 стоповый бит 1 четность нет

Использование Просто ведомый Modbus Я вижу на своем ПК правильные значения регистров 40001-40004, так что это подтверждает, что я вывожу правильно, а мое оборудование работает правильно.

Данные, которые я должен увидеть, следующие (декабрь)

1234
16
32764
12345

и в шестнадцатеричном

0x04D2
0x0010
0x7FFC
0x3039

В настоящее время я ссылаюсь на этот пост 47817634

import logging
logging.basicConfig()
log = logging.getLogger()
log.setLevel(logging.DEBUG)
from pymodbus.constants import Endian
from pymodbus.constants import Defaults
from pymodbus.payload import BinaryPayloadDecoder
from pymodbus.client.sync import ModbusSerialClient as ModbusClient
from pymodbus.transaction import ModbusRtuFramer

client = ModbusClient(method='rtu', port='COM3', stopbits=1, bytesize=8, timeout=3, baudrate=19200, parity='N')
connection = client.connect()
result = client.read_holding_registers(0x00,4,unit = 0x00)

Это то, что выводит на терминал

DEBUG:pymodbus.transaction:Current transaction state - IDLE
DEBUG:pymodbus.transaction:Running transaction 1
DEBUG:pymodbus.transaction:SEND: 0x0 0x3 0x0 0x0 0x0 0x4 0x45 0xd8
DEBUG:pymodbus.client.sync:New Transaction state 'SENDING'
WARNING:pymodbus.client.sync:Cleanup recv buffer before send: 0x1 0x10 0x0
0x0 0x0 0x4 0x8 0x4 0xd2 0x0 0x10 0x7f 0xfc 0x30 0x39 0x89 0xb1 0x1 0x10 0x0
0x0 0x0 0x4 0x8 0x4 0xd2 0x0 0x10 0x7f 0xfc 0x30 0x39 0x89 0xb1 0x1 0x10 0x0
0x0 0x0 0x4 0x8 0x4 0xd2 0x0 0x10 0x7f 0xfc 0x30 0x39 0x89 0xb1
DEBUG:pymodbus.transaction:Changing transaction state from 'SENDING' to 'WAITING FOR REPLY'
DEBUG:pymodbus.transaction:Changing transaction state from 'WAITING FOR REPLY' to 'PROCESSING REPLY'
DEBUG:pymodbus.transaction:RECV: 0x1 0x10 0x0 0x0 0x0 0x4 0x8 0x4 0xd2 0x0 0x10 0x7f 0xfc
DEBUG:pymodbus.transaction:Getting transaction 1
DEBUG:pymodbus.transaction:Changing transaction state from 'PROCESSING REPLY' to 'TRANSACTION_COMPLETE'

В «ПРЕДУПРЕЖДЕНИЕ: pymodbus.client.sync: очистить буфер recv перед отправкой:« Я вижу свои данные!

0x4 0xd2 0x0 0x10 0x7f 0xfc 0x30 0x39

но я не понимаю, как получить те, которые содержат значения регистров в теге. Это может быть простой вопрос, но, пожалуйста, помогите.

...