|
Связь с внешним миром Modbus, RS232, RS485, Lon и другое. |
|
Опции темы | Поиск в этой теме |
15.01.2021, 14:15 | #1 |
Новичок
Регистрация: Sep 2013
Сообщения: 10
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Получение данных от Болида через шлюз С2000-ПП
Добрый день,
поставили довольно интересную задачу в плане интеграции с оборудованием Болид. Вентустановки должны менять производительность в зависимости от кол-ва взятых/снятых с охраны разделов Болида. Решение - получение от Болида событий постановки/снятия раздела и по количеству снятых с охраны определять требуемую производительность или вообще останавливаться, если все на охране. Для получения событий используется преобразователь протоколов С2000-ПП (Болид), который по протоколу modbus-rtu может выдавать данные стороннему оборудованию. С2000-ПП является слейвом, SMH4 - мастером. Собственно сам вопрос: чтение выполняется командой 03 - Чтение значений из нескольких регистров хранения (Read Holding Registers). Формат пакета: event-rd.png Как правильно организовать таблицу Модбас слейва (С2000-ПП) для получения данного пакета (24 байт)? Разместил последовательно регистры типа int с чтением по запросу и привязал вход запроса к одному выходу, как требует help для организации получения данных в одном запросе. map.jpg Что-то не так делаю в организации регистров или запроса? При запросе должны вернуться данные описания последнего события, а возвращаются нулевые значения. Данные о кол-ве событий в буфере, номера первого и последнего считываются успешно и при появлении событий в системе инкрементируются. Проект опроса - во вложении. Спасибо. |
15.01.2021, 14:54 | #2 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 159
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Получение данных от Болида через шлюз С2000-ПП
int в модбасе это 2 байта. Не многовато их у вас?)
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
15.01.2021, 15:02 | #3 | |
Senior Member
Регистрация: Aug 2013
Сообщения: 3 791
Благодарил(а): 12 раз(а)
Поблагодарили:
194 раз(а) в 190 сообщениях
|
Ответ: Получение данных от Болида через шлюз С2000-ПП
Цитата:
Наверняка получаете отлуп от Болида. УПС! Опоздал... |
|
15.01.2021, 17:14 | #4 |
Новичок
Регистрация: Sep 2013
Сообщения: 10
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Получение данных от Болида через шлюз С2000-ПП
согласен, по кол-ву перебор (уменьшил по кол-ву байт, результат не изменился), но хотелось бы узнать - принцип чтения нескольких holding-регистров правильный? и как в этом случае мастер должен сообщить слейву сколько байт он хочет прочитать? не понятно.
|
15.01.2021, 17:25 | #5 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 159
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Получение данных от Болида через шлюз С2000-ПП
Цитата:
Вопросы "как мастер" весьма полно раскрыты в даташите на модбас, не вижу никакого объективного смысла пересказывать вам содержимое статьи из Википедии. __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
15.01.2021, 17:41 | #6 | |||
Senior Member
Регистрация: Aug 2013
Сообщения: 3 791
Благодарил(а): 12 раз(а)
Поблагодарили:
194 раз(а) в 190 сообщениях
|
Ответ: Получение данных от Болида через шлюз С2000-ПП
Цитата:
Цитата:
Цитата:
P.S. Начинает казаться что обязательное использование сниффера на новых устройствах это только моя вредная привычка. |
|||
15.01.2021, 17:46 | #7 |
Новичок
Регистрация: Sep 2013
Сообщения: 10
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Получение данных от Болида через шлюз С2000-ПП
[QUOTE=Arsie;62635]Начните с чтение одного регистра. Вообще одного. Идеально, который содержит серийник или другое известное и неизменное значение.
с одиночными регистрами проблем нет: кол-во сообщений в буфере событий, номера первого и последнего события - читаются и изменяются при появлении событий в Болиде. |
15.01.2021, 17:47 | #8 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 159
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Получение данных от Болида через шлюз С2000-ПП
А, ну тогда точно косяк с размером запроса или с размером буфера ПП, который одним махом столько осилить не может.
Добавлено через 45 секунд Добавляйте по одному в запрос (это что у вас в прямоугольничке. Рано или поздно настанет момент истины) __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
15.01.2021, 17:49 | #9 | |
Новичок
Регистрация: Sep 2013
Сообщения: 10
Благодарил(а): 0 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Получение данных от Болида через шлюз С2000-ПП
Цитата:
Добавлено через 3 минуты Попробую с размером пакета, спасибо за помошь |
|
15.01.2021, 17:55 | #10 |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 159
Благодарил(а): 15 раз(а)
Поблагодарили:
665 раз(а) в 607 сообщениях
|
Ответ: Получение данных от Болида через шлюз С2000-ПП
Повторяю ещё раз - модбас не оперирует единицей измерения "байт". Будете ходить по граблям, пока не поймёте это
__________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
15.01.2021, 18:07 | #11 |
Senior Member
Регистрация: Aug 2013
Сообщения: 3 791
Благодарил(а): 12 раз(а)
Поблагодарили:
194 раз(а) в 190 сообщениях
|
Ответ: Получение данных от Болида через шлюз С2000-ПП
|