Инициализация устройства с использованием минимальной шины по RS-232

Я ищу несколько советов по использованию библиотеки python (2.7) "minimalmodbus" (версия 0.7) для связи с тепловой камерой Test Equity Modela 115a-F4T.

Я довольно плохо знаком с использованием python для программирования аппаратного обеспечения, поэтому я не совсем уверен, что в моем подходе отсутствуют некоторые основные команды инициализации. Вот мой код:

instrument = minimalmodbus.Instrument('/dev/ttyUSB1',1)
print instrument 
print minimalmodbus.BAUDRATE
minimalmodbus.BAUDRATE = 9600
print minimalmodbus.BAUDRATE
print minimalmodbus.__version__
instrument.read_register(0,1)

Вот мой вывод:

minimalmodbus.Instrument<id=0x7fb5fd2136c8, address=1, mode=rtu, 
close_port_after_each_call=False, precalculate_read_size=True, 
debug=False, serial=Serial<id=0x7fb5fc71a890, open=True>
(port='/dev/ttyUSB1', baudrate=19200, bytesize=8, parity='N', 
stopbits=1, timeout=0.05, xonxoff=False, rtscts=False, dsrdtr=False)>
19200
9600
0.7

Traceback (most recent call last):
File "/usr/local/google/home/mimartin/Documents/test-equity/model-
115a.py", line 13, in <module>
instrument.read_register(0,1)
File "/usr/local/lib/python2.7/dist-packages/minimalmodbus.py", line 
258, in read_register
return self._genericCommand(functioncode, registeraddress, 
numberOfDecimals=numberOfDecimals, signed=signed)
File "/usr/local/lib/python2.7/dist-packages/minimalmodbus.py", line 
697, in _genericCommand
payloadFromSlave = self._performCommand(functioncode, payloadToSlave)
File "/usr/local/lib/python2.7/dist-packages/minimalmodbus.py", line 
795, in _performCommand
response = self._communicate(request, number_of_bytes_to_read)
File "/usr/local/lib/python2.7/dist-packages/minimalmodbus.py", line 
930, in _communicate
raise IOError('No communication with the instrument (no answer)')
IOError: No communication with the instrument (no answer)*

Термальная камера включена. И я подключен к нему через последовательный кабель USB. Я также поместил нуль-модемный адаптер в последовательный конец (на камере) кабеля, как указано в руководстве по эксплуатации камеры. Я предположил, что моя первая строка кода - это то, что инициализирует камеру для контроля. Тем не менее, мое сообщение об ошибке указывает на обратное.

Нужна помощь или руководство здесь. Спасибо.

2 ответа

Minimalmodbus отлично работает через RS-232. Watlow F4 и F4T используют только TX, RX и GND для связи с RS-232. Камеры TestEquity используют контакты RS-232 для обоих контроллеров (оба могут поддерживать 232 или 485).

F4 использует только 16-битные целые числа. F4T в режиме карты 1 использует числа с плавающей запятой, 32-битные и 16-битные целые числа и "строковый" тип. Поэтому вам нужны разные функции для чтения этих значений. Режим карты 2 или 3 - это обратная совместимость с F4 для общих регистров F4.

Свяжитесь с TestEquity по ссылке ниже, и они предоставят вам образцы Python. www.testequity.com/chambers-technical-support

На F4T см. Настройки Modbus-RTU в Меню -> Настройки -> Сеть -> Modbus.

при условии 9600, нет, карта данных 1

instrument = open_port('/dev / ttyUSB1', 1) # порт, адрес Modbus

instrument.serial.baudrate = 9600

instrument.serial.timeout = 0,1

value = instrument.read_register (14092,0) # порядок слов modbus-rtu в режиме карты 1

значение печати

значение должно быть 1330 (High Low) или 1331 (Low High)

Я устраняю очень похожую проблему, и мне кажется, что для RS-485 был создан minimalmodbus, который не использует выводы состояния DTR и DSR (из вашей строки отладки dsrdtr=False). Мое аппаратное соединение работает с помощью бесплатной утилиты Simplymodbus, поэтому я знаю, что она подключена правильно. Используемый мной код Python minimalmodbus, очень похожий на ваш, выглядит идентично запросу simplemodbus на выводе приема ведомого устройства при просмотре осциллографа. Однако контакты DTR и DSR ведут себя по-разному, simplemodbus получает ответ, а код python minimalmodbus - нет.

Я не нашел способа включить dsrdtr в коде minimalmodbus или с помощью утилиты преобразователя RS-232 в USB, но, похоже, в библиотеке pyserial есть параметры. Один из вариантов, который я буду изучать, - это переключение на соединение RS-485, которое не использует эти выводы состояния.

Другие вопросы по тегам