Minimalmodbus — экран RS485 для Raspberry Pi

#python #raspberry-pi #modbus #rs485 #minimalmodbus

#python #raspberry-pi #modbus #rs485 #minimalmodbus

Вопрос:

Я пытаюсь подключить экран RS485 от Seeed Studio для Raspberry Pi вместе с библиотекой Python Minimalmodbus на Raspberry Pi 2B — НЕ РАБОТАЕТ !!!

экран: https://www.seeedstudio.com/RS-485-Shield-for-Raspberry-Pi.html

Я протестировал следующее на Raspberry Pi:

  • Все работало нормально, если я отправлял данные с помощью последовательной библиотеки Python. Он включает реле на ведомом устройстве и отвечает правильно.

ser.write('xffx05x00x00xffx00x99xe4')

  • Он не работает, если я использую библиотеку Minimalmodbus для Python

instrument.write_bit(0,1,5)

ошибка: minimalmodbus.Ошибка NoResponseError: нет связи с прибором (нет ответа)

примечание: я использовал тот же код python Minimalmodbus, используя другой конвертер USB в RS485 на том же RPi, и он работал нормально.

Pyhton Код:

 import minimalmodbus

import time

import serial 

instrument = minimalmodbus.Instrument('/dev/ttyAMA0', 255)


instrument.serial.baudrate = 9600      
instrument.serial.bytesize = 8
instrument.serial.stopbits = 1
instrument.serial.timeout  = 1          
instrument.mode = minimalmodbus.MODE_RTU  
instrument.clear_buffers_before_each_transaction = True
instrument.debug = True

while 1:
    
    instrument.write_bit(0,1,5)

    time.sleep(5)
 

ошибка: minimalmodbus.Ошибка NoResponseError: нет связи с прибором (нет ответа)

Может кто-нибудь помочь, если я могу использовать этот конкретный rs485-shield с библиотекой Minimalmodbus? Заранее благодарю вас

С уважением,

Комментарии:

1. Эй, Мондо, ты когда-нибудь заставлял это работать? У меня точно такая же проблема

Ответ №1:

write_bit Функция считывает ответ после отправки сообщения. И Seeed RS-485 Shield должен переключать GPIO18 контакт для переключения между чтением и записью. Как показано в примере кода в документации https://wiki .seeedstudio.com/RS-485_Shield_for_Raspberry_Pi/#communication-test-code .

Проверяя код write_bit функции, я не думаю, что есть простой способ переключить этот вывод как между serial.write ними, и serial.read в них нет места для регистрации собственного хук и переключения вывода там (https://github.com/pyhys/minimalmodbus/blob/c08208523b729d178a9f662725a69195924f7c34/minimalmodbus.py#L1379).