Технически не реализуемо, если быть точным.
- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
WEINTEK MT8102E и функция 02h (ModBUS)
Модераторы: Глоб.модераторы, специалисты Weintek
-
- администратор
- Сообщения: 18758
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 973 раза
- Поблагодарили: 1854 раза
WEINTEK MT8102E и функция 02h (ModBUS)
По вопросам работы Форума можно обратиться по этим контактам.
-
- знаток Eplan
- Сообщения: 1457
- Зарегистрирован: 17 окт 2012, 11:24
- Имя: Виталий
- Страна: Беларусь
- город/регион: Минск
- Благодарил (а): 61 раз
- Поблагодарили: 182 раза
WEINTEK MT8102E и функция 02h (ModBUS)
По логике не должно быть упаковки: запрашиваем слово (в моем случае это 16 бит), получаем в ответ слово - 16 бит.
Иван Николаевич выше правильно написал. Функция чисто для удобства. И о 115200 мы порой только мечтаем, колбасимся на 9600 или 19200))))
-
- администратор
- Сообщения: 18758
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 973 раза
- Поблагодарили: 1854 раза
WEINTEK MT8102E и функция 02h (ModBUS)
коллеги, ну я-то на Ethernet’е шикую, 100 мегабит на ModBUS-TCP.
Кстати, мы принудительно убрали RS-485 ModBus из складской конфигурации контроллеров, заменив его на Ethernet с ModBus-TCP и Web-сервером. Объемы данных растут, задачи усложняются, клиентам 19200 уже нехватает (но если очень надо - это доп.опция теперь). Иначе так все и будем мучиться на низких скоростях, когда давно уже есть высокие.
По вопросам работы Форума можно обратиться по этим контактам.
-
- почётный участник форума
- Сообщения: 3971
- Зарегистрирован: 20 янв 2010, 22:23
- Имя: Никита
- Страна: РФ
- город/регион: Мурманск
- Благодарил (а): 21 раз
- Поблагодарили: 229 раз
WEINTEK MT8102E и функция 02h (ModBUS)
Нету. Фактически это обращение к слову. И Евгений обращает внимание специально, что биты не упакованы. Т.е. с точки зрения физики каждый бит (coil, contact) - все равно 16 разрядов. Из которых, чаще всего, интересен младший. И адресация меряется именно в них.
И в памяти устройства они, скорее всего, расположены так же. Прямая работа с отдельными битами в регистрах была, вроде как, только в наборе инструкций знаменитого Z80. Потом про нее почти все забыли, пользуются масками.
Так вот, речь о том, что по запросу группы битов в ответ должна прилететь опять же группа 16-разрядных слов, каждое отвечает за свой бит. Одной посылкой, с общими адресом, функцией и контрольной суммой.
Отправлено спустя 3 минуты 9 секунд:
Следующим шагом будете медиаконвертер на оптику делать против Ethernet. Масса недостатков у 485, но допустимая длина линка все же на порядок больше. Ибо единожды попробовав, клиент на 485 уже не вернется, а дальность потребует.Jackson писал(а): ↑18 апр 2019, 06:48 Кстати, мы принудительно убрали RS-485 ModBus из складской конфигурации контроллеров, заменив его на Ethernet с ModBus-TCP и Web-сервером. Объемы данных растут, задачи усложняются, клиентам 19200 уже нехватает (но если очень надо - это доп.опция теперь). Иначе так все и будем мучиться на низких скоростях, когда давно уже есть высокие.
Опыт - это когда на смену вопросам: "Что? Где? Когда? Как? Почему?" приходит единственный вопрос: "Нахрена? "
-
- эксперт
- Сообщения: 2471
- Зарегистрирован: 20 дек 2018, 04:45
- Имя: Сергей
- Страна: РБ/РФ
- город/регион: РФ Сергиев Посад
- Благодарил (а): 2121 раз
- Поблагодарили: 208 раз
WEINTEK MT8102E и функция 02h (ModBUS)
В х86 остались, bt, btr, bts. 64 битный асм не изучал, не было необходимости.
Я имел ввиду, что теоретически, при возможности упаковки внутри контроллера можно было бы использовать не 0х2, а 0х3 или 0х4
В трансформаторной будке живет трансформаторная собака (с) Прозрачный гонщик.
-
- почётный участник форума
- Сообщения: 3971
- Зарегистрирован: 20 янв 2010, 22:23
- Имя: Никита
- Страна: РФ
- город/регион: Мурманск
- Благодарил (а): 21 раз
- Поблагодарили: 229 раз
WEINTEK MT8102E и функция 02h (ModBUS)
В процессоре то может и остались, но почти ушел ассемблер. А вот в компиляторах - уже сомневаюсь что эти команды используются.
Теоретически можно. Но увы, практически невозможно, (практически нереализуемо) потому топик и появился.
И это вопрос именно к панели. Для примера - у Инсата в OPC-сервере есть возможность настроить максимальную длину цепочки регистров для вычитывания одной командой. И вместе с этим, настроить длину разрыва адресов, при котором регистры, пусть и не соседние, но находящиеся на расстоянии меньшем этого разрыва, все равно читаются одной командой, вместе с тем что между ними. Получается быстрее выбросить из цепочки лишнее на стороне приемника, чем запрашивать отдельно.
Опыт - это когда на смену вопросам: "Что? Где? Когда? Как? Почему?" приходит единственный вопрос: "Нахрена? "
-
- эксперт
- Сообщения: 1737
- Зарегистрирован: 06 янв 2016, 19:45
- Имя: Петров В.Л.
- Страна: Россия
- город/регион: Красноярск
- Благодарил (а): 78 раз
- Поблагодарили: 235 раз
WEINTEK MT8102E и функция 02h (ModBUS)
Выбросить то может быть и быстрее, но у меня был трабл, при работе с частотником Л-Старт. Читал одним запросом несколько регистров, а в средине оказалась дырка старая документация была), и полезли дикие задержки. Пришлось разбивать на 2 пакета, до дырки и после нее. Не факт, что это всегда будет. От среды наверно тоже зависит. Но я теперь 3 раза подумаю, прежде чем скопом читать последовательность регистров.
-
- администратор
- Сообщения: 18758
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 973 раза
- Поблагодарили: 1854 раза
WEINTEK MT8102E и функция 02h (ModBUS)
Не совсем так. Это внутри памяти панели она оперирует со словами, а запрашивает-то биты (иначе была бы функция 03х или 04х). Панель внутри себя оперирует словами и достаёт из них биты по необходимости. Сделано, вероятно, для экономии процессорных ресурсов. И есть возможность запросить реально один бит: при использовании функции 1x_bit улетит запрос на один бит, а что с ним будет делать панель - наверное опять в слово засунет. В общем, это недокументированная "фича" создателей панели (я - художник, я так вижу). Это и отличает серьёзную технику от не очень серьёзной - в серьёзной технике на такое не нарвёшься, в ней что написано - так и работает.
Зачем? Есть готовые свичи с оптикой на борту.
И кстати для CAN мы оптику уже применяли, когда надо было на 4 км пробросить - без конвертации в Ethernet, есть прямые оптоконверторы.
Прогресс не стоит на месте.
Ну, не на порядок всё-таки, а в 2 раза при приемлемой скорости. И то скорость не очень приемлема для ряда задач. Для моего случая 485й совершенно не справится с таким объёмом данных. Справится, но при его скорости это не годится - период обновления будет большой. Это не СКАДА, а рабочий инструмент местного поста.
В панели, насколько я знаю, Андроид. Едва ли он умеет работать с битами напрямую.
Нет такой возможности, практически.
В Вейнтеке тоже есть такая возможность, но только для слов. Битовые запросы можно ограничить, только задав диапазоны допустимых адресов, но кол-во диапазонов всего 9 (достаточно если надо читать битовые переменные немного и из одной пачки.
Да, очевидно, но неоднозначно. Зависит от интерфейса и возможностей слейва (насколько быстро он отвечает на запросы).
На практике я пришел к тому же самому. Со словами так делаю, сначала собрав нужные слова подряд. А вообще, если быть точным, собрал одно большое адресное пространство слов, и читаю его частями - из каждого окна свой кусок. Но это слова, с битами так не получилось.
Кстати вот, закончил проект одной из установок, смотрите скриншоты всех экранов. Это простая установка, опрашивается только три устройства. Здесь всё более-менее. А веселье началось на другой аналогичной установке, где устройств не три а семь. Можете оценить загрузку панели. Битовые индикаторы - примерно на 70% связаны с битами, выдёргиваемыми из слов, и 30% из битов, читаемых непосредственно. Плюс целочисленные двух- и четырёхбайтные слова.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
По вопросам работы Форума можно обратиться по этим контактам.
-
- знаток Eplan
- Сообщения: 1457
- Зарегистрирован: 17 окт 2012, 11:24
- Имя: Виталий
- Страна: Беларусь
- город/регион: Минск
- Благодарил (а): 61 раз
- Поблагодарили: 182 раза
WEINTEK MT8102E и функция 02h (ModBUS)
Почитал про BT, BTC, BTS и BTR, поддерживаются начиная с 80386. Т.е. в моем примере нет. Думаю, что нормальный компилятор будет пользоваться этой командой для отправки бита.
-
- почётный участник форума
- Сообщения: 3971
- Зарегистрирован: 20 янв 2010, 22:23
- Имя: Никита
- Страна: РФ
- город/регион: Мурманск
- Благодарил (а): 21 раз
- Поблагодарили: 229 раз
WEINTEK MT8102E и функция 02h (ModBUS)
Предлагаю уточнить, что все-таки отправляет контроллер. если запросить два бита подряд - получим одно слово с двумя битами или два слова с одним битом?
Смутили гугл и http://www.simplymodbus.ca вот таким примером:
Код: Выделить всё
Request
This command is requesting the ON/OFF status of discrete inputs # 10197 to 10218
from the slave device with address 17.
11 02 00C4 0016 BAA9
11: The Slave Address (11 hex = address17 )
02: The Function Code 2 (read Input Status)
00C4: The Data Address of the first input to read.
( 00C4 hex = 196 , + 10001 offset = input #10197 )
0016: The total number of coils requested. (16 hex = 22, inputs 197 to 218 )
BAA9: The CRC (cyclic redundancy check) for error checking.
Response
11 02 03 ACDB35 2018
11: The Slave Address (11 hex = address17 )
02: The Function Code 2 (read Input Status)
03: The number of data bytes to follow (22 Inputs / 8 bits per byte = 3 bytes)
AC: Discrete Inputs 10204 -10197 (1010 1100)
DB: Discrete Inputs 10212 - 10205 (1101 1011)
35: 2 space holders & Discrete Inputs 10218 - 10213 (0011 0101)
2018: The CRC (cyclic redundancy check).
Что касается панели - это нормальное явление. В любом языке программирования под булевы переменные отводится не меньше байта. Как только бит превращается в переменную - занимает машинное слово. Исключение я упоминал - Z80, но во-первых это требует специального программирования, а во-вторых, про работе с языками высокого уровня в дело вступает компилятор, а то и Java-машина, которые этим не заморачиваются.
Как говорил один известный подпольный миллионер: "это гусарство". Очень удобно иметь пару тёмных волокон и задействовать их под свои нужды на уровне физики, не задумываясь о маршрутах и джиттере. Но практика показывает, что в условиях предприятия волокна кончаются очень быстро и начинается уплотнение. Сначала все заталкивается в TCP/IP (с соответствующими плясками с QoS, VLAN и маршрутами), потом начинается обработка самой оптики на уровне WDM/DWDM/CWDM... Этого пока хватает, дальше посмотрим.
И еще - при наличии IP-инфраструктуры и необходимости менять точки подключения IP предпочтительнее. Все прямое преобразование в физику не пролезает через активное сетевое оборудование и требует физической оптики от точки до точки.А с IP немного попроще.
В модбасе время ответа нормировано. Тут есть возможность прикинуть по худшему варианту.Да, очевидно, но неоднозначно. Зависит от интерфейса и возможностей слейва (насколько быстро он отвечает на запросы).
В панели либо линух либо кастрированная винда. От конкретной модели зависит. И вряд-ли EasyBuilder компилирует проекты до уровня машинного кода. Про андроид, который работает через Java - вообще молчу. И да, смысла нет особого - не те времена, чтобы память байтами мерять. А по скорости одинаково, если не быстрее проверить слово на равенство нулю, чем вытаскивать бит. И так, ради флуда - в 386 команды то есть, но в Pentium появились MMX и схема предсказания переходов, вряд ли при разработке MMX учитывали, что кому-то понадобится работать с битами....
Опыт - это когда на смену вопросам: "Что? Где? Когда? Как? Почему?" приходит единственный вопрос: "Нахрена? "
-
- администратор
- Сообщения: 18758
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 973 раза
- Поблагодарили: 1854 раза
WEINTEK MT8102E и функция 02h (ModBUS)
Не согласен только насчёт оптики.
По вопросам работы Форума можно обратиться по этим контактам.
-
- знаток Eplan
- Сообщения: 1457
- Зарегистрирован: 17 окт 2012, 11:24
- Имя: Виталий
- Страна: Беларусь
- город/регион: Минск
- Благодарил (а): 61 раз
- Поблагодарили: 182 раза
WEINTEK MT8102E и функция 02h (ModBUS)
Ну как бы то ни было, выгодней выполнить один запрос на 16 бит, чем 16 по одному биту каждый?
-
- почётный участник форума
- Сообщения: 3971
- Зарегистрирован: 20 янв 2010, 22:23
- Имя: Никита
- Страна: РФ
- город/регион: Мурманск
- Благодарил (а): 21 раз
- Поблагодарили: 229 раз
WEINTEK MT8102E и функция 02h (ModBUS)
Увы, такова действительность. Есть проблема отсутствия темной оптики. И есть объекты которые ее требуют. Все от объекта зависит. В большой энергетике все еще интереснее. Так телемеханика спокойно работает по арендованным IP-каналам. А есть еще устройства передачи аварийных команд и сигналов (начиная от различных разгрузок и заканчивая УРОВ). Там время критично. Но и десятки-сотни километров оптики по двум разнесенным трассам проложить не всегда возможно. Резервирование обязательно. Так что и решения бывают самые разные, в зависимости от местных возможностей. Основной канал чаще всего ВЧ, а вот с резервом на линиях до 220кВ, на которых оптика не предусмотрена в объеме строительства, приходится изобретать.
Опыт - это когда на смену вопросам: "Что? Где? Когда? Как? Почему?" приходит единственный вопрос: "Нахрена? "
-
- администратор
- Сообщения: 18758
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 973 раза
- Поблагодарили: 1854 раза
WEINTEK MT8102E и функция 02h (ModBUS)
Понятно. Но мы туда не выходим, маленькая у нас энергетика. :) Все наши цепи - внутри одного объекта, как правило.
По вопросам работы Форума можно обратиться по этим контактам.