PDA

Просмотреть полную версию : Описание работы FMR про протоколу ModBus (нет проблемы)


Taimer81
01.07.2020, 14:58
Здравствуйте!
Подскажите пожалуйста, где можно найти описание работы FMR про протоколу ModBus, а именно:
1. Какими командами осуществления чтение и запись в регистрах.
2. Адреса регистров (это можно подсмотреть, как я понимаю, после экспорта csv файла).

Ilya J.
01.07.2020, 16:30
Добрый день!

Думаю проще всего импортировать карту фмр в проект лоджика, вытащить на поляну переменную, выделить ее, нажать F1(вызвать справку), почитать про сетевые переменные.

Taimer81
01.07.2020, 16:36
В описании модуля написано:
"Универсальные модули ввода/вывода FMR предназначены для увеличения числа каналов в системах автоматизированного управления и сбора данных. Модули работают с контроллерами любого производителя посредством протокола Modbus-RTU с подключением к порту RS-485."

Хочу подключить к панели (на CodeSys), без этой информации никак... :(


Добавлено через 41 секунду


Добрый день!

Думаю проще всего импортировать карту фмр в проект лоджика, вытащить на поляну переменную, выделить ее, нажать F1(вызвать справку), почитать про сетевые переменные.

Спасибо, сейчас попробую.

Ilya J.
01.07.2020, 17:11
Можно еще файл map конвертировать (https://forum.segnetics.com/showthread.php?t=2231&highlight=lectus) утилитой в cfg и в лектусе посмотреть используемые функции.

Arsie
02.07.2020, 11:19
Здравствуйте!
Подскажите пожалуйста, где можно найти описание работы FMR про протоколу ModBus, а именно:
1. Какими командами осуществления чтение и запись в регистрах.

Может быть это звучит немного странно, но чтение регистров выполняется командой чтения регистров (input registers), а запись в них командой записи (holding registers) :hi:

Taimer81
02.07.2020, 13:17
Может быть это звучит немного странно, но чтение регистров выполняется командой чтения регистров (input registers), а запись в них командой записи (holding registers) :hi:

Если другие производители дают всю информацию по работе по протоколу ModBus, то Segnetics почему то скрывает.
В CodeSys нужно указывать какой регистр и каким способом считать/записать.
Я так с регистрами не разобрался, почему то в Лекторе некоторые адреса повторяются. :(

Taimer81
02.07.2020, 13:40
Можно еще файл map конвертировать (https://forum.segnetics.com/showthread.php?t=2231&highlight=lectus) утилитой в cfg и в лектусе посмотреть используемые функции.

С командами записи и чтения разобрался, а вот с регистрами нет.
Некоторые адреса регистров совпадают...
Может у производителя есть даташит, где расписано?
Адреса регистров в FMR жестко привязаны и не могут задаваться пользователем.

Taimer81
02.07.2020, 14:00
да, так и есть! а если не нравится, значит вы подключаете его к несертифицированному оборудованию, которое не умеет в один и тот же адрес разными командами стучаться и получать разные результаты. сегнетикс решил так!

1. Т.е. в один регистре храниться как разные данные? Просто нужно запрашивать разными командами? Для меня это удивительно :scare:
2. Думаю тут решает не оборудование, а софт. Нужно проверить, как это переварит CodeSys.
3. А на счет сертифицированного, я дал скрин с оф. сайта. Уверен, Segnetics это профессионалы, которые держут слово, если написали:"Модули работают с контроллерами любого производителя посредством протокола Modbus-RTU с подключением к порту RS-485.", то они это выполняют. Никакого "несертифицированному оборудованию" там и слова нет....

Arsie
02.07.2020, 14:12
да, так и есть!

У вас с головой всё в порядке? Бан вам на неделю.


Добавлено через 4 минуты


1. Т.е. в один регистре храниться как разные данные? Просто нужно запрашивать разными командами? Для меня это удивительно :scare:

Прочтите врезку в шаге 6, там разъяснено, что и как в модбас работает и что в нём творится с адресами.

https://dl.segnetics.com/WebHelp/SMLogix/example_work_with_invertor.htm



2. Думаю тут решает не оборудование, а софт. Нужно проверить, как это переварит CodeSys.

Прекрасно работает.



3. А на счет сертифицированного, я дал скрин с оф. сайта. Уверен, Segnetics это профессионалы, которые держут слово, если написали:"Модули работают с контроллерами любого производителя посредством протокола Modbus-RTU с подключением к порту RS-485.", то они это выполняют. Никакого "несертифицированному оборудованию" там и слова нет....

Не обращайте внимания, это местный клоун, у которого слова всегда впереди разума.

Taimer81
05.07.2020, 13:16
Все работает, сделал себе табличку с адресами регистров и функциями чтения/записи.
Всем спасибо.

alex.vas
05.07.2020, 19:11
Все работает, сделал себе табличку с адресами регистров и функциями чтения/записи.
Всем спасибо.

Выкладывайте пример. Что получилось может кому пригодится.

Taimer81
05.07.2020, 22:51
Выкладывайте пример. Что получилось может кому пригодится.

Для FRM-1021

ATS
05.07.2020, 22:51
Выкладывайте пример. Что получилось может кому пригодится.А смысл какой?
Открываем конфигуратор FMR.
Выбираем нужный модуль.
А дальше экспорт в .csv (8094) или .map (8093) по вкусу. :umnik:

Taimer81
05.07.2020, 22:59
А смысл какой?
Открываем конфигуратор FMR.
Выбираем нужный модуль.
А дальше экспорт в .csv или .map по вкусу. :umnik:

Там не полная информация.
- логические адреса;
- входа/выхода
Большего ничего нет.
А нужно еще:
- физ. адресация;
- команды чтения/записи.

P.S. Думаю вы просто еще не работали в CodeSys и не понимаете некоторые тонкости.

ATS
05.07.2020, 23:30
Там не полная информация.
- логические адреса;
- входа/выхода
Большего ничего нет. ???

А нужно еще:
- физ. адресация;
- команды чтения/записи.А из логической получить не судьба?

P.S. Думаю вы просто еще не работали в CodeSys и не понимаете некоторые тонкости. Последние лет пятнадцать точно. И не тянет.

Taimer81
05.07.2020, 23:53
???

А из логической получить не судьба?



Ок, может еще не понимаю.

Подскажите пожалуйста, как получить из логического адреса

Register Type Name
40001 int AOUT1\value

данные:
- физ адрес;
- функцию чтения;
- функцию записи.

Я реально не знаю.

alex.vas
06.07.2020, 00:09
А смысл какой?
Открываем конфигуратор FMR.
Выбираем нужный модуль.
А дальше экспорт в .csv (8094) или .map (8093) по вкусу. :umnik:

Я как раз имел ввиду готовый пример с кодесисом. Хотя мне это и не надо, сам всегда разрабатываю все. Но примеры иногда выручают в скорости выполнения задачи.

ATS
06.07.2020, 01:51
Подскажите пожалуйста, как получить из логического адреса

Register Type Name
40001 int AOUT1\value

данные:
- физ адрес;
- функцию чтения;
- функцию записи.

Я реально не знаю.

Логический адрес это либо 5 либо 6 цифр (незначащие нули могут отбрасываться)

Самая старшая цифра - тип элемента

0 Чтение-запись Coils
1 Чтение Discrete Input
3 Чтение Input Registers
4 Чтение-запись Holding Registers

Для Вашего примера 4 - Holding Registers
Запоминаем и отбрасываем

Оставшееся 0001 это физический адрес +1
Вычитаем 1 получаем 0.

Ищем коды функций для запомненного типа регистра
Код функции Что делает функция Тип значения Тип доступа
01 (0x01) Read Coils Дискретное Чтение
02 (0x02) Read Discrete Inputs Дискретное Чтение
03 (0x03) Read Holding Registers 16 битное Чтение
04 (0x04) Read Input Registers 16 битное Чтение
05 (0x05) Write Single Coil Дискретное Запись
06 (0x06) Write Single Register 16 битное Запись
15 (0x0F) Write Multiple Coils Дискретное Запись
16 (0x10) Write Multiple registers 16 битное Запись
Для Holding Registers возможны только 3 для чтения и 6\16 для записи

LordN
06.07.2020, 07:55
Ок, может еще не понимаю.

Подскажите пожалуйста, как получить из логического адреса

Register Type Name
40001 int AOUT1\value

данные:
- физ адрес;
- функцию чтения;
- функцию записи.

Я реально не знаю.

в гугле первая же ссылка ведет на сайт модбас для чайников
https://ipc2u.ru/articles/prostye-resheniya/modbus-rtu/#opisanie
смотрим табличку и видим
В сообщении Modbus используется адрес регистра.

Например, первый регистр AO Holding Register, имеет номер 40001, но его адрес равен 0000. ну или 0001, это зависит от реализации протокола в конкретном приборе.
регистр запись/чтение, значит его функция чтения 3, записи 6, или 16 - если читается пишется несколько регистров подряд

LordN
06.07.2020, 08:41
p.s. еще полезно иметь на борту компа программку CASModbusScanner с ней можно потыкаться в регистры прибора и поглядеть как реальные адреса, так и протокол обмена.
в модбасе часто такого намешано, что аж зубы сводит, одни и те же регистры могут быть и input и hold, соответственно могут и читаться и писаться как те и другие, бывает ограничение на кол-во байт в одном запросе, бывает байты по всякому перетасованы... вопщем то еще развлечение

Taimer81
06.07.2020, 09:20
Всем спасибо, много информации получил!
Было бы здорово, что бы производитель сразу давал все данные по регистрам, столько бы времени экономилось.

Arsie
06.07.2020, 12:54
Ок, может еще не понимаю.

Подскажите пожалуйста, как получить из логического адреса

Register Type Name
40001 int AOUT1\value

данные:
- физ адрес;
- функцию чтения;
- функцию записи.

Я реально не знаю.

Это банально и по даташиту на модбас: адрес 0, функции исходя из группы "4".

LordN
06.07.2020, 15:33
Это банально и по даташиту на модбас: адрес 0, функции исходя из группы "4".

40001-49999 0000 до 270E Чтение-запись Analog Output Holding Registers AO
https://ipc2u.ru/articles/prostye-resheniya/modbus-rtu/#komandy
04 (0x04) Чтение AI Read Input Registers 16 битное Чтение

я по началу постоянно на это ловился и материл разработчиков модбаса
:)

Arsie
06.07.2020, 15:35
40001-49999 0000 до 270E Чтение-запись Analog Output Holding Registers AO
https://ipc2u.ru/articles/prostye-resheniya/modbus-rtu/#komandy
04 (0x04) Чтение AI Read Input Registers 16 битное Чтение

я по началу постоянно на это ловился и материл разработчиков модбаса
:)

Ну вот такие вот они. Что делать. Это именно группа "4", а не функция "4")