Segnetics

Вернуться   Segnetics > Форум Segnetics > Связь с внешним миром

Связь с внешним миром Modbus, RS232, RS485, Lon и другое.

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.01.2021, 14:15   #1
neiiron
Новичок
 
Регистрация: Sep 2013
Сообщения: 10
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Получение данных от Болида через шлюз С2000-ПП

Добрый день,
поставили довольно интересную задачу в плане интеграции с оборудованием Болид. Вентустановки должны менять производительность в зависимости от кол-ва взятых/снятых с охраны разделов Болида. Решение - получение от Болида событий постановки/снятия раздела и по количеству снятых с охраны определять требуемую производительность или вообще останавливаться, если все на охране. Для получения событий используется преобразователь протоколов С2000-ПП (Болид), который по протоколу modbus-rtu может выдавать данные стороннему оборудованию. С2000-ПП является слейвом, SMH4 - мастером.
Собственно сам вопрос: чтение выполняется командой 03 - Чтение значений из нескольких регистров хранения (Read Holding Registers). Формат пакета:
Нажмите на картинку для увеличения

Название:  event-rd.png
Просмотров: 53
Размер:  46.7 Кбайт
Как правильно организовать таблицу Модбас слейва (С2000-ПП) для получения данного пакета (24 байт)? Разместил последовательно регистры типа int с чтением по запросу и привязал вход запроса к одному выходу, как требует help для организации получения данных в одном запросе.
Нажмите на картинку для увеличения

Название:  map.jpg
Просмотров: 88
Размер:  108.8 Кбайт
Что-то не так делаю в организации регистров или запроса? При запросе должны вернуться данные описания последнего события, а возвращаются нулевые значения. Данные о кол-ве событий в буфере, номера первого и последнего считываются успешно и при появлении событий в системе инкрементируются.
Проект опроса - во вложении.
Спасибо.
Вложения
Тип файла: psl mb_s2000-pp.psl (176.3 Кбайт, 21 просмотров)
neiiron вне форума   Ответить с цитированием
Старый 15.01.2021, 14:54   #2
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Получение данных от Болида через шлюз С2000-ПП

Цитата
Сообщение от neiiron Посмотреть сообщение
Как правильно организовать таблицу Модбас слейва (С2000-ПП) для получения данного пакета (24 байт)? Разместил последовательно регистры типа int с чтением по запросу
int в модбасе это 2 байта. Не многовато их у вас?)


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 15.01.2021, 15:02   #3
ATS
Senior Member
 
Регистрация: Aug 2013
Сообщения: 3 740
Благодарил(а): 12 раз(а)
Поблагодарили: 192 раз(а) в 188 сообщениях
По умолчанию Ответ: Получение данных от Болида через шлюз С2000-ПП

Цитата
Сообщение от neiiron Посмотреть сообщение
Что-то не так делаю в организации регистров или запроса? При запросе должны вернуться данные описания последнего события, а возвращаются нулевые значения.
Так в запросе должно быть 14 регистров (28 байт) а Вы просите 27 (54 байта)
Наверняка получаете отлуп от Болида.


УПС! Опоздал...
ATS вне форума   Ответить с цитированием
Старый 15.01.2021, 17:14   #4
neiiron
Новичок
 
Регистрация: Sep 2013
Сообщения: 10
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Получение данных от Болида через шлюз С2000-ПП

Цитата:
Сообщение от Arsie Посмотреть сообщение
int в модбасе это 2 байта. Не многовато их у вас?)
согласен, по кол-ву перебор (уменьшил по кол-ву байт, результат не изменился), но хотелось бы узнать - принцип чтения нескольких holding-регистров правильный? и как в этом случае мастер должен сообщить слейву сколько байт он хочет прочитать? не понятно.
neiiron вне форума   Ответить с цитированием
Старый 15.01.2021, 17:25   #5
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Получение данных от Болида через шлюз С2000-ПП

Цитата
Сообщение от neiiron Посмотреть сообщение
согласен, по кол-ву перебор (уменьшил по кол-ву байт, результат не изменился)
Начните с чтение одного регистра. Вообще одного. Идеально, который содержит серийник или другое известное и неизменное значение.

Вопросы "как мастер" весьма полно раскрыты в даташите на модбас, не вижу никакого объективного смысла пересказывать вам содержимое статьи из Википедии.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 15.01.2021, 17:41   #6
ATS
Senior Member
 
Регистрация: Aug 2013
Сообщения: 3 740
Благодарил(а): 12 раз(а)
Поблагодарили: 192 раз(а) в 188 сообщениях
По умолчанию Ответ: Получение данных от Болида через шлюз С2000-ПП

Цитата:
Сообщение от Arsie Посмотреть сообщение
Начните с чтение одного регистра. Вообще одного. Идеально, который содержит серийник или другое известное и неизменное значение.
Так это у ТС работает.

Цитата
Сообщение от neiiron Посмотреть сообщение
согласен, по кол-ву перебор (уменьшил по кол-ву байт, результат не изменился), но хотелось бы узнать - принцип чтения нескольких holding-регистров правильный?
Точно четырнадцать? А не 13? Принцип правильный.

Цитата и как в этом случае мастер должен сообщить слейву сколько байт он хочет прочитать? не понятно.
Вот сколько есть в групповом запросе столько и попросит.

P.S. Начинает казаться что обязательное использование сниффера на новых устройствах это только моя вредная привычка.
ATS вне форума   Ответить с цитированием
Старый 15.01.2021, 17:46   #7
neiiron
Новичок
 
Регистрация: Sep 2013
Сообщения: 10
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Получение данных от Болида через шлюз С2000-ПП

[QUOTE=Arsie;62635]Начните с чтение одного регистра. Вообще одного. Идеально, который содержит серийник или другое известное и неизменное значение.

с одиночными регистрами проблем нет: кол-во сообщений в буфере событий, номера первого и последнего события - читаются и изменяются при появлении событий в Болиде.
neiiron вне форума   Ответить с цитированием
Старый 15.01.2021, 17:47   #8
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Получение данных от Болида через шлюз С2000-ПП

Цитата
Сообщение от ATS Посмотреть сообщение
Так это у ТС работает.
А, ну тогда точно косяк с размером запроса или с размером буфера ПП, который одним махом столько осилить не может.


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


Цитата
Сообщение от neiiron Посмотреть сообщение
с одиночными регистрами проблем нет: кол-во сообщений в буфере событий, номера первого и последнего события - читаются и изменяются при появлении событий в Болиде.
Добавляйте по одному в запрос (это что у вас в прямоугольничке. Рано или поздно настанет момент истины)


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 15.01.2021, 17:49   #9
neiiron
Новичок
 
Регистрация: Sep 2013
Сообщения: 10
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Smile Ответ: Получение данных от Болида через шлюз С2000-ПП

Цитата
Сообщение от ATS Посмотреть сообщение
Точно четырнадцать? А не 13? Принцип правильный.

Вот сколько есть в групповом запросе столько и попросит.
Теперь понятно - при группировке в тело запроса помещается кол-во требуемых байт. Спасибо


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


Цитата:
Сообщение от Arsie Посмотреть сообщение
А, ну тогда точно косяк с размером запроса или с размером буфера ПП, который одним махом столько осилить не может.


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




Добавляйте по одному в запрос (это что у вас в прямоугольничке. Рано или поздно настанет момент истины)
Попробую с размером пакета, спасибо за помошь
neiiron вне форума   Ответить с цитированием
Старый 15.01.2021, 17:55   #10
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Получение данных от Болида через шлюз С2000-ПП

Цитата
Сообщение от neiiron Посмотреть сообщение
Теперь понятно - при группировке в тело запроса помещается кол-во требуемых байт. Спасибо
Повторяю ещё раз - модбас не оперирует единицей измерения "байт". Будете ходить по граблям, пока не поймёте это


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie вне форума   Ответить с цитированием
Старый 15.01.2021, 18:07   #11
ATS
Senior Member
 
Регистрация: Aug 2013
Сообщения: 3 740
Благодарил(а): 12 раз(а)
Поблагодарили: 192 раз(а) в 188 сообщениях
По умолчанию Ответ: Получение данных от Болида через шлюз С2000-ПП

Цитата
Сообщение от neiiron Посмотреть сообщение
Теперь понятно - при группировке в тело запроса помещается кол-во требуемых байт.
Регистров!
И это число 14 (0x0E) явно указано в запросе на первой картинке.

А чтение произвольного числа далеко не все устройства позволяют.
ATS вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать свои сообщения

BB code is Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получение данных от Omix (решено) alexpavlichenko Связь с внешним миром 6 03.09.2020 16:30
Получение данных на контроллер через COM stepan Связь с внешним миром 31 11.03.2020 17:03
Получение данных с датчиков ОВЕН ПВТ100 по Modbus HWAK Вопросы о SMH-2G(i) 16 23.10.2017 16:05
Получение данных от Pixel по Modbus ngs Связь с внешним миром 5 30.08.2016 15:04
Загрузка программ через RS-485. Почему может быть неустойчивой или невозможной Arsie Библиотека 1 10.07.2013 09:57


Часовой пояс GMT +4, время: 01:03.


Версия vBulletin: 3.8.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Segnetics 2005 - 2023