- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
MT8121XE3 EBPro актуальный RS-485 несколько
Модераторы: Глоб.модераторы, специалисты Weintek
-
- администратор
- Сообщения: 18758
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 973 раза
- Поблагодарили: 1854 раза
MT8121XE3 EBPro актуальный RS-485 несколько
Доброе время!
Вопрос уровня студента по этой панели.
Из панели нужно опросить несколько устройств RS-485 ModBUS, подключенных к одной шине данных (одна линия RS-485), Естественно все их скорости и параметры связи будут одинаковы, Slave-адреса назначены разные.
1) Какой порт выбрать для двухпроводного RS-485: COM1 или COM3 ?
2) Как адресовать их в проекте? Пытаюсь создавать несколько устройств, но EBPro не даёт посадить больше одного устройства на один порт. При этом в системных битах вижу статусы для 255 устройств на одном порте. Опрашивать их надо будет как из скриптов, так и из форм на экранах.
Спасибо!
P.S. Документацию читать умею и она у меня есть.
Вопрос уровня студента по этой панели.
Из панели нужно опросить несколько устройств RS-485 ModBUS, подключенных к одной шине данных (одна линия RS-485), Естественно все их скорости и параметры связи будут одинаковы, Slave-адреса назначены разные.
1) Какой порт выбрать для двухпроводного RS-485: COM1 или COM3 ?
2) Как адресовать их в проекте? Пытаюсь создавать несколько устройств, но EBPro не даёт посадить больше одного устройства на один порт. При этом в системных битах вижу статусы для 255 устройств на одном порте. Опрашивать их надо будет как из скриптов, так и из форм на экранах.
Спасибо!
P.S. Документацию читать умею и она у меня есть.
По вопросам работы Форума можно обратиться по этим контактам.
-
- администратор
- Сообщения: 18758
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 973 раза
- Поблагодарили: 1854 раза
MT8121XE3 EBPro актуальный RS-485 несколько
Добрейший!
Спасибо! Как из формы опросить понял - всё просто. А из скрипта? Там также можно дописывать? Никакой железки с модасом под руками сейчас нет, поэтому и вопросы задаю.
Поскольку данные у меня из всех устройств идентичные, то нашел способ адресовать устройство вот так: Сначала пишу в указанное слово адрес слейва, затем с помощью GetData его опрашиваю. Поскольку данные одни и те же - завожу цикл на кол-во устройств, и счётчик - это и есть Slave-адрес и он же индекс массива, в который складывать данные. Счётчик пишу в LW10000, затем делаю чтение, не указывая никакого дополнительного адреса. Так можно?
Но одно осталось непонятным.
это LB-9200 и дальше. Интересно, как работают?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
По вопросам работы Форума можно обратиться по этим контактам.
-
- специалист по WEINTEK
- Сообщения: 120
- Зарегистрирован: 05 фев 2014, 12:22
- Имя: Иван Николаевич
- Поблагодарили: 21 раз
MT8121XE3 EBPro актуальный RS-485 несколько
Да, из скрипта также.
Если используется LW-10000, то нужно перед адресом регистра писать var0#, то есть, вместо константы с адресом.
В остальном да, можно в цикле использовать.
Если используется LW-10000, то нужно перед адресом регистра писать var0#, то есть, вместо константы с адресом.
В остальном да, можно в цикле использовать.
Все правильно, каждый бит соответствует своему адресу устройства, в данном случае адресу Modbus устройства.
-
- администратор
- Сообщения: 18758
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 973 раза
- Поблагодарили: 1854 раза
MT8121XE3 EBPro актуальный RS-485 несколько
Спасибо! Буду пробовать!
По вопросам работы Форума можно обратиться по этим контактам.
-
- знаток Eplan
- Сообщения: 1457
- Зарегистрирован: 17 окт 2012, 11:24
- Имя: Виталий
- Страна: Беларусь
- город/регион: Минск
- Благодарил (а): 61 раз
- Поблагодарили: 182 раза
MT8121XE3 EBPro актуальный RS-485 несколько
Устройство на порт задается одно, какой у него адрес по умолчанию в настройках - фиолетово. Просто при обращении без указания адреса, будет использоваться адрес по умолчанию. Далее, если нужны обращения к устройствам с другим адресом, указываем его через хештег. Например: 5#105, где 5 - адрес устройства на порту, а 105 - регистр памяти. Если нужно использовать переменные адреса, то нужно указать в формате var0#105, где var0 - по сути переменная, регистр панели LW-10000. Всего доступно 16 этих регистров: от var0 до var15. Далее, можно создать одно универсальное окно для доступа ко всем устройствам на одном порту, в нем все теги прописать через var, а дальше вызов этого окна делать через две функциональные кнопки, наложенные друг на друга, одна будет вызывать это универсальное окно, а другая вызывать макрос, в котором нужно устанавливать значение переменной var. Также, в данном окне никто не запрещает задавать вручную переменную var0.
-
- администратор
- Сообщения: 18758
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 973 раза
- Поблагодарили: 1854 раза
MT8121XE3 EBPro актуальный RS-485 несколько
Спасибо! Я буду всё из макросов опрашивать, 6 устройств в цикле с 1 по 6. Счетчик цикла буду писать в LW10000 и следующей строкой опрос с хештегом var0.
Но с окнами тоже понял, спасибо!
Но с окнами тоже понял, спасибо!
По вопросам работы Форума можно обратиться по этим контактам.
-
- администратор
- Сообщения: 18758
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 973 раза
- Поблагодарили: 1854 раза
MT8121XE3 EBPro актуальный RS-485 несколько
Увидел и это, работает. Спасибо ещё раз!
По вопросам работы Форума можно обратиться по этим контактам.
-
- администратор
- Сообщения: 18758
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 973 раза
- Поблагодарили: 1854 раза
MT8121XE3 EBPro актуальный RS-485 несколько
Только это странно порой работает. Отключаю полностью от порта COM разъём, у меня шесть устройств, опрашиваются в цикле. Этот бит переключается в "0" только для первого устройства, для остальных он в "1". Если сменить полноэкранное окно на другое, то один за другим они начинают обнуляться для всех остальных устройств, видно что время таймаутов проходит для каждого. Причём опрос происходит непрерывно из макроса в безусловном цикле (для макроса задано периодическое выполнение) и от активного окна это никак не зависит.
По вопросам работы Форума можно обратиться по этим контактам.
-
- специалист по WEINTEK
- Сообщения: 120
- Зарегистрирован: 05 фев 2014, 12:22
- Имя: Иван Николаевич
- Поблагодарили: 21 раз
MT8121XE3 EBPro актуальный RS-485 несколько
Возможно запросы из макросов не влияют на эти биты, а только запросы из других процессов.
Например, окно "PLC no response" появляется только при ошибке запроса от визуального объекта, но не при ошибке запроса в макросе.
Скорее всего, здесь тоже самое.
Например, окно "PLC no response" появляется только при ошибке запроса от визуального объекта, но не при ошибке запроса в макросе.
Скорее всего, здесь тоже самое.
-
- администратор
- Сообщения: 18758
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 973 раза
- Поблагодарили: 1854 раза
MT8121XE3 EBPro актуальный RS-485 несколько
Но других запросов просто нет. Только макрос.
Это верно (почти). Но я прямые запросы вообще не использую ни в одном месте проекта (а окно, кстати, все равно появляется).
Нет, поскольку влияет только номер полноэкранного окна. Все значения, отображаемые от этих устройств, этим же макросом записываются в LW и только потом отображаются из LW. Макрос выполняется безусловно каждые 3 секунды, и он выполняется везде - когда связь есть то изменение данных видно.
Отправлено спустя 5 минут 15 секунд:
UPD: наврал. Есть прямые запросы, всего по два регистра на каждое устройство. Однако окно "нет связи" появляется в любом полноэкранном окне, даже в том где нет объектов, выполняющих прямые запросы к устройству.
По вопросам работы Форума можно обратиться по этим контактам.
-
- специалист по WEINTEK
- Сообщения: 120
- Зарегистрирован: 05 фев 2014, 12:22
- Имя: Иван Николаевич
- Поблагодарили: 21 раз
MT8121XE3 EBPro актуальный RS-485 несколько
Возможно сейчас уже что-то поменялось, но всегда было так что макросы на это окно не влияют. Могут его вызывать другие невизуальные объекты: Выборки данных, Журнал событий, Передача данных.
-
- администратор
- Сообщения: 18758
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 973 раза
- Поблагодарили: 1854 раза
MT8121XE3 EBPro актуальный RS-485 несколько
Этого не используется.
Я предполагаю, что если соответствующий устройству системный бит, разрешающий реконнект, установлен в "true" (а по умолчанию они в "true") ,то панель периодически пингует все устройства Ethernet на предмет "а вдруг достучусь?". Когда все устройства подключены то этого окна нет.
Нормальный алгоритм, жаль только нам тут он не подходит (особенности устройств), поэтому приходится свой алгоритм использовать.
Но это только Ethernet. На RS-485 никто никого не пингует, и пока панель не опросит (средствами проекта - из макроса или объектом с экрана) устройство и не получит ошибку таймаута, она будет считать что устройство подключено (соответствующий бит будет в "true"). И вот здесь мне поведение панели непонятно: опрос всех устройств есть, а таймаут есть только по первому, но в определённом окне всё становится нормально.
Странно. Опрос сделан через GetData (а не через GetDataEx) специально для того, чтобы панель гарантированно дождалась таймаута.
Влияют, поскольку другого опроса кроме как из макросов у меня просто нет.
По вопросам работы Форума можно обратиться по этим контактам.
-
- администратор
- Сообщения: 18758
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 973 раза
- Поблагодарили: 1854 раза
MT8121XE3 EBPro актуальный RS-485 несколько
Частично разобрался. Дело было во временах. Макрос опроса запускался периодически и период запуска был меньше тайм-аутов для всех устройств (суммарного), плюс опрос был по GetData, то есть макрос прерывался на первой неудаче.Jackson писал(а): ↑18 июн 2020, 12:42 пока панель не опросит (средствами проекта - из макроса или объектом с экрана) устройство и не получит ошибку таймаута, она будет считать что устройство подключено (соответствующий бит будет в "true"). И вот здесь мне поведение панели непонятно: опрос всех устройств есть, а таймаут есть только по первому, но в определённом окне всё становится нормально.
Но так и осталось загадкой, почему биты статуса устройств всё-таки выставлялись корректно при активности определённого окна, а в остальных окнах нет. Опрос из макроса циклический и от номера активного окна не зависит. Хотя я экспериментировал с макросом опроса: запускал его только циклически, по событию или в определённом окне - так и не выявил, почему именно так происходит.
Отправлено спустя 2 минуты 55 секунд:
Кстати. Вопрос в догонку. В настройках COM-порта есть пункт "количество команд пересылки". Что это? Количество повторных запросов после тайм-аута? Или что-то другое? Там варианты: 0, 1, 2 или 3.
По вопросам работы Форума можно обратиться по этим контактам.
-
- специалист по WEINTEK
- Сообщения: 120
- Зарегистрирован: 05 фев 2014, 12:22
- Имя: Иван Николаевич
- Поблагодарили: 21 раз
MT8121XE3 EBPro актуальный RS-485 несколько
Да, это количество повторных запросов в случае неудачи.
То есть, запрос будет считаться ошибочным только после нескольких попыток.
То есть, запрос будет считаться ошибочным только после нескольких попыток.
-
- администратор
- Сообщения: 18758
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 973 раза
- Поблагодарили: 1854 раза
MT8121XE3 EBPro актуальный RS-485 несколько
Соответственно если задано "0" то после первой же неудачной попытки клиент будет считаться оффлайн, верно?
Попутно вопрос про разницу между RS-485 ModBUS и ModBUS-TCP на Ethernet.
На RS-485 после неудачной посылки (ответа нет, таймаут) устройство Slave считается оффлайн и соответствующий бит (если не путаю, LB-9801 для Slave ID = 1) выставляется в false. Чтобы он стал =true, нужно сделать как минимум ещё один запрос, который должен быть успешным (ответ должен быть получен). Соответственно запрещать опрос этого ID при LB-9801 = false бессмысленно - иначе не будет шансов того что LB-9801 когда-то переключится в true. Это я выявил опытным путём.
А какой механизм определения online/offline для устройств ModBUS-TCP ? Точно также по ответам на запросы или панель просто пингует указанные в свойствах устройств IP-адреса?
По вопросам работы Форума можно обратиться по этим контактам.
-
- специалист по WEINTEK
- Сообщения: 120
- Зарегистрирован: 05 фев 2014, 12:22
- Имя: Иван Николаевич
- Поблагодарили: 21 раз
MT8121XE3 EBPro актуальный RS-485 несколько
Да
Точно так же. Там даже есть такая же настройка - количество команд пересылки.