Segnetics

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

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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.04.2010, 12:50   #1
Dron
Новичок
 
Регистрация: Sep 2009
Сообщения: 21
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Чтение данных блоками по протоколу Modbus

Имеется прибор, определённые данные у которого можно прочитать только блоком по 128 байт. В ответ на запрос другого размера получим ошибку.

Если я в карте памяти устройства определю 32 переменные типа long с периодом опроса 0 и одновременно задам команду прочитать эти данные, то контроллер выполнит один запрос или всё таки каждую переменную будет опрашивать отдельно, т.к. в карте памяти они все подсвечены как разные запросы.
И если в данном варианте не будет одного запроса, то как такую задачу реализовать?
Почему нет возможности получать с устройства массива данных и или хотя бы строковую переменную заданного размера?
Dron вне форума   Ответить с цитированием
Старый 26.04.2010, 10:40   #2
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 020
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Чтение данных блоками по протоколу Modbus

Цитата
Сообщение от Dron
Имеется прибор, определённые данные у которого можно прочитать только блоком по 128 байт. В ответ на запрос другого размера получим ошибку.

Если я в карте памяти устройства определю 32 переменные типа long с периодом опроса 0 и одновременно задам команду прочитать эти данные, то контроллер выполнит один запрос или всё таки каждую переменную будет опрашивать отдельно, т.к. в карте памяти они все подсвечены как разные запросы.
И если в данном варианте не будет одного запроса, то как такую задачу реализовать?
Почему нет возможности получать с устройства массива данных и или хотя бы строковую переменную заданного размера?

1) Если строб для переменных будет исходить от одного выхода блока, то данные переменные "сошьются" в один запрос.

2) Операция чтения массива "встроена" в модбас как протокол и называется "групповой запрос".

3) Строковых переменных в модбасе несуществует. Строковых типов данных в лоджике также несуществует. Смысл вашего предложения мне крайне непонятен.

.


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

Добро всегда побеждает зло. Кто победил - тот и добрый.

Последний раз редактировалось Arsie, 28.04.2010 в 12:11
Arsie сейчас на форуме   Ответить с цитированием
Старый 26.04.2010, 15:38   #3
Dron
Новичок
 
Регистрация: Sep 2009
Сообщения: 21
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Чтение данных блоками по протоколу Modbus

Цитата:
Сообщение от Arsie
На мой взгляд вы уже заочно обвинили контроллер во всех смертных грехах и мой ответ не так уж и важен...

А по сути ответы на ваши вопросы лежат на поверхности и уже не раз были разжёваны на данном форуме:

1) Если строб для переменных будет исходить от одного выхода блока, то данные переменные "сошьются" в один запрос.

2) Операция чтения массива "встроена" в модбас как протокол и называется "групповой запрос".

3) Строковых переменных в модбасе несуществует. Строковых типов данных в лоджике также несуществует. Смысл вашего предложения мне крайне непонятен.

.
Спасибо, за вразумительный ответ...
И ни в коем случае никого и ничто не обвиняю. Просто постепенно сталкиваюсь с разными проблемами, а на форуме не находил ответов... Вот и задаю, чтобы разобраться...

А по поводу массивов и строк, это я что-то действительно загнул...
Хотя удобно было бы, в моём случае, не создавать 32 входа типа long, а считать сразу 128 байт и передать далее... Но это может только мне и понадобится...
Dron вне форума   Ответить с цитированием
Старый 27.04.2010, 09:59   #4
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 020
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Чтение данных блоками по протоколу Modbus

Цитата
Сообщение от Dron
Спасибо, за вразумительный ответ...
Хотя удобно было бы, в моём случае, не создавать 32 входа типа long, а считать сразу 128 байт и передать далее... Но это может только мне и понадобится...
В данном случае вы просто сэкономите время, выставляя одну переменную вместо 32, т.к. с точки зрения ядра это одинаковые запросы.

Так стоит ли вводить новый тип данных, делать изменения в ядрах (отрезая память, свободную для загрузки программ!) и лоджике, если можно просто 32 раза ткнуть в поляну мышкой? Думаю, ответ вы знаете


.


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

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 27.04.2010, 19:13   #5
Dron
Новичок
 
Регистрация: Sep 2009
Сообщения: 21
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Unhappy Ответ: Чтение данных блоками по протоколу Modbus

Цитата:
Сообщение от Arsie
В данном случае вы просто сэкономите время, выставляя одну переменную вместо 32, т.к. с точки зрения ядра это одинаковые запросы.

Так стоит ли вводить новый тип данных, делать изменения в ядрах (отрезая память, свободную для загрузки программ!) и лоджике, если можно просто 32 раза ткнуть в поляну мышкой? Думаю, ответ вы знаете
.
Вот и вылезла проблема...
Пока пробовал один-два блока по 32 запроса, прокатывало. А так как мне надо считать с прибора и передать дальше 16 блоков по 128 байт, и тут вылезла ошибка, что контроллер поддерживает не более 120 запросов, а у меня получилось 527...
Так бы определил 16 переменных типа массив из 128 байт, ну заняло бы в памяти немного... А так придётся отказываться от использования данного прибора... А их уже закупили и установили...
Dron вне форума   Ответить с цитированием
Старый 28.04.2010, 11:57   #6
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 020
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Чтение данных блоками по протоколу Modbus

Цитата
Сообщение от Dron
Вот и вылезла проблема...
Пока пробовал один-два блока по 32 запроса, прокатывало. А так как мне надо считать с прибора и передать дальше 16 блоков по 128 байт, и тут вылезла ошибка, что контроллер поддерживает не более 120 запросов, а у меня получилось 527...
Так бы определил 16 переменных типа массив из 128 байт, ну заняло бы в памяти немного... А так придётся отказываться от использования данного прибора... А их уже закупили и установили...
Я очень чётко и внятно написал: "1) Если строб для переменных будет исходить от одного выхода блока, то данные переменные "сошьются" в один запрос."

Судя по всему, вы этого не сделали. В вашей задаче всего 16 запросов.


.


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

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 28.04.2010, 12:06   #7
Dron
Новичок
 
Регистрация: Sep 2009
Сообщения: 21
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Чтение данных блоками по протоколу Modbus

Спасибо, заработало как надо...
Да, я тогда просто создал карту, но ещё не выносил на поляну и не соединял...
Если бы оно ещё не считалось пока не используется...

Последний раз редактировалось Dron, 28.04.2010 в 12:22
Dron вне форума   Ответить с цитированием
Ответ

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

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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получение данных с датчиков ОВЕН ПВТ100 по Modbus HWAK Вопросы о SMH-2G(i) 16 23.10.2017 16:05
Получение данных от Pixel по Modbus ngs Связь с внешним миром 5 30.08.2016 15:04
Чтение и запись ModBus-переменных через RS485 (Modbus RTU) adal Вопросы о SMH2010 3 24.04.2016 20:35
Чтение переменных по ModBus Exten Вопросы о Pixel 12 21.01.2014 16:24
Как изменить формат данных Modbus в 2Gi на 8N1? AlekSir Связь с внешним миром 29 23.04.2013 09:42


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


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