1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

MT8121XE3 EBPro актуальный RS-485 несколько

Модератор: специалисты Weintek

Ответить
Аватара пользователя

Автор темы
Jackson
администратор
администратор
Сообщения: 17560
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 819 раз
Поблагодарили: 1648 раз

MT8121XE3 EBPro актуальный RS-485 несколько

Сообщение Jackson »

Доброе время!

Вопрос уровня студента по этой панели.

Из панели нужно опросить несколько устройств RS-485 ModBUS, подключенных к одной шине данных (одна линия RS-485), Естественно все их скорости и параметры связи будут одинаковы, Slave-адреса назначены разные.

1) Какой порт выбрать для двухпроводного RS-485: COM1 или COM3 ?

2) Как адресовать их в проекте? Пытаюсь создавать несколько устройств, но EBPro не даёт посадить больше одного устройства на один порт. При этом в системных битах вижу статусы для 255 устройств на одном порте. Опрашивать их надо будет как из скриптов, так и из форм на экранах.

Спасибо!

P.S. Документацию читать умею и она у меня есть.
По вопросам работы Форума можно обратиться по этим контактам.

VanMo
специалист по WEINTEK
специалист по WEINTEK
Сообщения: 120
Зарегистрирован: 05 фев 2014, 12:22
Имя: Иван Николаевич
Поблагодарили: 21 раз

MT8121XE3 EBPro актуальный RS-485 несколько

Сообщение VanMo »

Добрый день.
1. Нет никакой разницы.
2. http://www.rusavtomatika.com/forum/view ... ?f=7&t=131
Аватара пользователя

Автор темы
Jackson
администратор
администратор
Сообщения: 17560
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 819 раз
Поблагодарили: 1648 раз

MT8121XE3 EBPro актуальный RS-485 несколько

Сообщение Jackson »

VanMo писал(а): 27 май 2020, 16:53Добрый день.
Добрейший!
Спасибо! Как из формы опросить понял - всё просто. А из скрипта? Там также можно дописывать? Никакой железки с модасом под руками сейчас нет, поэтому и вопросы задаю.

Поскольку данные у меня из всех устройств идентичные, то нашел способ адресовать устройство вот так:
MBadress.jpg
Сначала пишу в указанное слово адрес слейва, затем с помощью GetData его опрашиваю. Поскольку данные одни и те же - завожу цикл на кол-во устройств, и счётчик - это и есть Slave-адрес и он же индекс массива, в который складывать данные. Счётчик пишу в LW10000, затем делаю чтение, не указывая никакого дополнительного адреса. Так можно?

Но одно осталось непонятным.
Jackson писал(а): 27 май 2020, 15:03 в системных битах вижу статусы для 255 устройств на одном порте
это LB-9200 и дальше. Интересно, как работают?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
По вопросам работы Форума можно обратиться по этим контактам.

VanMo
специалист по WEINTEK
специалист по WEINTEK
Сообщения: 120
Зарегистрирован: 05 фев 2014, 12:22
Имя: Иван Николаевич
Поблагодарили: 21 раз

MT8121XE3 EBPro актуальный RS-485 несколько

Сообщение VanMo »

Да, из скрипта также.
Если используется LW-10000, то нужно перед адресом регистра писать var0#, то есть, вместо константы с адресом.
В остальном да, можно в цикле использовать.
Jackson писал(а): 27 май 2020, 20:33 это LB-9200 и дальше. Интересно, как работают?
Все правильно, каждый бит соответствует своему адресу устройства, в данном случае адресу Modbus устройства.
Аватара пользователя

Автор темы
Jackson
администратор
администратор
Сообщения: 17560
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 819 раз
Поблагодарили: 1648 раз

MT8121XE3 EBPro актуальный RS-485 несколько

Сообщение Jackson »

Спасибо! Буду пробовать!
По вопросам работы Форума можно обратиться по этим контактам.

Madwolf
знаток Eplan
знаток Eplan
Сообщения: 1455
Зарегистрирован: 17 окт 2012, 11:24
Имя: Виталий
Страна: Беларусь
город/регион: Минск
Благодарил (а): 61 раз
Поблагодарили: 181 раз

MT8121XE3 EBPro актуальный RS-485 несколько

Сообщение Madwolf »

Устройство на порт задается одно, какой у него адрес по умолчанию в настройках - фиолетово. Просто при обращении без указания адреса, будет использоваться адрес по умолчанию. Далее, если нужны обращения к устройствам с другим адресом, указываем его через хештег. Например: 5#105, где 5 - адрес устройства на порту, а 105 - регистр памяти. Если нужно использовать переменные адреса, то нужно указать в формате var0#105, где var0 - по сути переменная, регистр панели LW-10000. Всего доступно 16 этих регистров: от var0 до var15. Далее, можно создать одно универсальное окно для доступа ко всем устройствам на одном порту, в нем все теги прописать через var, а дальше вызов этого окна делать через две функциональные кнопки, наложенные друг на друга, одна будет вызывать это универсальное окно, а другая вызывать макрос, в котором нужно устанавливать значение переменной var. Также, в данном окне никто не запрещает задавать вручную переменную var0.
Аватара пользователя

Автор темы
Jackson
администратор
администратор
Сообщения: 17560
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 819 раз
Поблагодарили: 1648 раз

MT8121XE3 EBPro актуальный RS-485 несколько

Сообщение Jackson »

Спасибо! Я буду всё из макросов опрашивать, 6 устройств в цикле с 1 по 6. Счетчик цикла буду писать в LW10000 и следующей строкой опрос с хештегом var0.

Но с окнами тоже понял, спасибо!
По вопросам работы Форума можно обратиться по этим контактам.
Аватара пользователя

Автор темы
Jackson
администратор
администратор
Сообщения: 17560
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 819 раз
Поблагодарили: 1648 раз

MT8121XE3 EBPro актуальный RS-485 несколько

Сообщение Jackson »

VanMo писал(а): 28 май 2020, 17:38
Jackson писал(а): 27 май 2020, 20:33 это LB-9200 и дальше. Интересно, как работают?
Все правильно, каждый бит соответствует своему адресу устройства, в данном случае адресу Modbus устройства.
Увидел и это, работает. Спасибо ещё раз!
По вопросам работы Форума можно обратиться по этим контактам.
Аватара пользователя

Автор темы
Jackson
администратор
администратор
Сообщения: 17560
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 819 раз
Поблагодарили: 1648 раз

MT8121XE3 EBPro актуальный RS-485 несколько

Сообщение Jackson »

VanMo писал(а): 28 май 2020, 17:38 каждый бит соответствует своему адресу устройства, в данном случае адресу Modbus устройства
Только это странно порой работает. Отключаю полностью от порта COM разъём, у меня шесть устройств, опрашиваются в цикле. Этот бит переключается в "0" только для первого устройства, для остальных он в "1". Если сменить полноэкранное окно на другое, то один за другим они начинают обнуляться для всех остальных устройств, видно что время таймаутов проходит для каждого. Причём опрос происходит непрерывно из макроса в безусловном цикле (для макроса задано периодическое выполнение) и от активного окна это никак не зависит.
По вопросам работы Форума можно обратиться по этим контактам.

VanMo
специалист по WEINTEK
специалист по WEINTEK
Сообщения: 120
Зарегистрирован: 05 фев 2014, 12:22
Имя: Иван Николаевич
Поблагодарили: 21 раз

MT8121XE3 EBPro актуальный RS-485 несколько

Сообщение VanMo »

Возможно запросы из макросов не влияют на эти биты, а только запросы из других процессов.
Например, окно "PLC no response" появляется только при ошибке запроса от визуального объекта, но не при ошибке запроса в макросе.
Скорее всего, здесь тоже самое.
Аватара пользователя

Автор темы
Jackson
администратор
администратор
Сообщения: 17560
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 819 раз
Поблагодарили: 1648 раз

MT8121XE3 EBPro актуальный RS-485 несколько

Сообщение Jackson »

VanMo писал(а): 17 июн 2020, 11:26 Возможно запросы из макросов не влияют на эти биты, а только запросы из других процессов.
Но других запросов просто нет. Только макрос.
VanMo писал(а): 17 июн 2020, 11:26 Например, окно "PLC no response" появляется только при ошибке запроса от визуального объекта, но не при ошибке запроса в макросе
Это верно (почти). Но я прямые запросы вообще не использую ни в одном месте проекта (а окно, кстати, все равно появляется).
VanMo писал(а): 17 июн 2020, 11:26 Скорее всего, здесь тоже самое
Нет, поскольку влияет только номер полноэкранного окна. Все значения, отображаемые от этих устройств, этим же макросом записываются в LW и только потом отображаются из LW. Макрос выполняется безусловно каждые 3 секунды, и он выполняется везде - когда связь есть то изменение данных видно.

Отправлено спустя 5 минут 15 секунд:
UPD: наврал. Есть прямые запросы, всего по два регистра на каждое устройство. Однако окно "нет связи" появляется в любом полноэкранном окне, даже в том где нет объектов, выполняющих прямые запросы к устройству.
По вопросам работы Форума можно обратиться по этим контактам.

VanMo
специалист по WEINTEK
специалист по WEINTEK
Сообщения: 120
Зарегистрирован: 05 фев 2014, 12:22
Имя: Иван Николаевич
Поблагодарили: 21 раз

MT8121XE3 EBPro актуальный RS-485 несколько

Сообщение VanMo »

Jackson писал(а): 17 июн 2020, 11:48 Однако окно "нет связи" появляется в любом полноэкранном окне, даже в том где нет объектов, выполняющих прямые запросы к устройству.
Возможно сейчас уже что-то поменялось, но всегда было так что макросы на это окно не влияют. Могут его вызывать другие невизуальные объекты: Выборки данных, Журнал событий, Передача данных.
Аватара пользователя

Автор темы
Jackson
администратор
администратор
Сообщения: 17560
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 819 раз
Поблагодарили: 1648 раз

MT8121XE3 EBPro актуальный RS-485 несколько

Сообщение Jackson »

VanMo писал(а): 18 июн 2020, 11:24 Могут его вызывать другие невизуальные объекты: Выборки данных, Журнал событий, Передача данных.
Этого не используется.
Я предполагаю, что если соответствующий устройству системный бит, разрешающий реконнект, установлен в "true" (а по умолчанию они в "true") ,то панель периодически пингует все устройства Ethernet на предмет "а вдруг достучусь?". Когда все устройства подключены то этого окна нет.
Нормальный алгоритм, жаль только нам тут он не подходит (особенности устройств), поэтому приходится свой алгоритм использовать.

Но это только Ethernet. На RS-485 никто никого не пингует, и пока панель не опросит (средствами проекта - из макроса или объектом с экрана) устройство и не получит ошибку таймаута, она будет считать что устройство подключено (соответствующий бит будет в "true"). И вот здесь мне поведение панели непонятно: опрос всех устройств есть, а таймаут есть только по первому, но в определённом окне всё становится нормально.
Странно. Опрос сделан через GetData (а не через GetDataEx) специально для того, чтобы панель гарантированно дождалась таймаута.
VanMo писал(а): 17 июн 2020, 11:26 Возможно запросы из макросов не влияют на эти биты
Влияют, поскольку другого опроса кроме как из макросов у меня просто нет.
По вопросам работы Форума можно обратиться по этим контактам.
Аватара пользователя

Автор темы
Jackson
администратор
администратор
Сообщения: 17560
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 819 раз
Поблагодарили: 1648 раз

MT8121XE3 EBPro актуальный RS-485 несколько

Сообщение Jackson »

Jackson писал(а): 18 июн 2020, 12:42 пока панель не опросит (средствами проекта - из макроса или объектом с экрана) устройство и не получит ошибку таймаута, она будет считать что устройство подключено (соответствующий бит будет в "true"). И вот здесь мне поведение панели непонятно: опрос всех устройств есть, а таймаут есть только по первому, но в определённом окне всё становится нормально.
Частично разобрался. Дело было во временах. Макрос опроса запускался периодически и период запуска был меньше тайм-аутов для всех устройств (суммарного), плюс опрос был по GetData, то есть макрос прерывался на первой неудаче.

Но так и осталось загадкой, почему биты статуса устройств всё-таки выставлялись корректно при активности определённого окна, а в остальных окнах нет. Опрос из макроса циклический и от номера активного окна не зависит. Хотя я экспериментировал с макросом опроса: запускал его только циклически, по событию или в определённом окне - так и не выявил, почему именно так происходит.

Отправлено спустя 2 минуты 55 секунд:
Кстати. Вопрос в догонку. В настройках COM-порта есть пункт "количество команд пересылки". Что это? Количество повторных запросов после тайм-аута? Или что-то другое? Там варианты: 0, 1, 2 или 3.
По вопросам работы Форума можно обратиться по этим контактам.

VanMo
специалист по WEINTEK
специалист по WEINTEK
Сообщения: 120
Зарегистрирован: 05 фев 2014, 12:22
Имя: Иван Николаевич
Поблагодарили: 21 раз

MT8121XE3 EBPro актуальный RS-485 несколько

Сообщение VanMo »

Да, это количество повторных запросов в случае неудачи.
То есть, запрос будет считаться ошибочным только после нескольких попыток.
Аватара пользователя

Автор темы
Jackson
администратор
администратор
Сообщения: 17560
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 819 раз
Поблагодарили: 1648 раз

MT8121XE3 EBPro актуальный RS-485 несколько

Сообщение Jackson »

VanMo писал(а): 10 июл 2020, 10:51 То есть, запрос будет считаться ошибочным только после нескольких попыток.
Соответственно если задано "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-адреса?
По вопросам работы Форума можно обратиться по этим контактам.

VanMo
специалист по WEINTEK
специалист по WEINTEK
Сообщения: 120
Зарегистрирован: 05 фев 2014, 12:22
Имя: Иван Николаевич
Поблагодарили: 21 раз

MT8121XE3 EBPro актуальный RS-485 несколько

Сообщение VanMo »

Jackson писал(а): 10 июл 2020, 11:29 Соответственно если задано "0" то после первой же неудачной попытки клиент будет считаться оффлайн, верно?
Да
Jackson писал(а): 10 июл 2020, 11:29 А какой механизм определения online/offline для устройств ModBUS-TCP ?
Точно так же. Там даже есть такая же настройка - количество команд пересылки.
Ответить

Вернуться в «WEINTEK (операторские панели)»