Добрый день,
В системе используется два контроллера М251. Оба контроллера собирают данные телеметрии (телесигнализации и телеуправления). Но только один отдает все данные на верхний уровень. Для передачи данных с одного контроллера на другой используется сетевые NVL переменные. Подскажите пожалуйста, каким образом можно считывать информацию о успешной связи двух контроллеров (связь есть - 1, связи нет - 0)?
- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Чтение статуса связи/обмена данными между двумя ПЛК (M251)
Модераторы: Глоб.модераторы, Специалисты SE
-
- здесь недавно
- Сообщения: 2
- Зарегистрирован: 09 июл 2021, 15:19
- Имя: Юлия
- Страна: Беларусь
- город/регион: Минск
-
- специалист
- Сообщения: 642
- Зарегистрирован: 02 дек 2015, 06:57
- Имя: Огородников Сергей
- Страна: РФ
- Благодарил (а): 136 раз
- Поблагодарили: 111 раз
Чтение статуса связи/обмена данными между двумя ПЛК (M251)
Добрый день,
Посмотрите раздел справки
Machine Expert > V1.2 > Software > Libraries, Templates and Examples > Libraries > Communication Libraries > SE_NetVarUdp Library Guide > Network Variables List - NVL > Diagnosis of Network Variables List (NVL)
Другим способом является изменение тестовой NVL переменной в одном ПЛК (например, инкремент) и контроль изменений в другом ПЛК за определённый промежуток времени. Если принятое значение изменилось по сравнению с предыдущим принятым - связь есть, если не меняется за определённый промежуток - связи нет
Посмотрите раздел справки
Machine Expert > V1.2 > Software > Libraries, Templates and Examples > Libraries > Communication Libraries > SE_NetVarUdp Library Guide > Network Variables List - NVL > Diagnosis of Network Variables List (NVL)
Другим способом является изменение тестовой NVL переменной в одном ПЛК (например, инкремент) и контроль изменений в другом ПЛК за определённый промежуток времени. Если принятое значение изменилось по сравнению с предыдущим принятым - связь есть, если не меняется за определённый промежуток - связи нет
СВ
-
- здесь недавно
- Сообщения: 2
- Зарегистрирован: 09 июл 2021, 15:19
- Имя: Юлия
- Страна: Беларусь
- город/регион: Минск
Чтение статуса связи/обмена данными между двумя ПЛК (M251)
Спасибо за помощь,
но мне не совсем понятно какие данные нужно заводить на входы (xExecute, dwListIdentity) этого фукционального блока. Может вы сможете мне помочь в этом?
но мне не совсем понятно какие данные нужно заводить на входы (xExecute, dwListIdentity) этого фукционального блока. Может вы сможете мне помочь в этом?
-
- специалист
- Сообщения: 642
- Зарегистрирован: 02 дек 2015, 06:57
- Имя: Огородников Сергей
- Страна: РФ
- Благодарил (а): 136 раз
- Поблагодарили: 111 раз
Чтение статуса связи/обмена данными между двумя ПЛК (M251)
Добрый день!
Если вы писали сами программу и создавали списки NVL, то, конечно, помните, что у каждого списка есть свой идентификатор - вот его и нужно задавать на вход этого функционального блока dwListIdentity
Все входы и выходы расписаны даже при наведении курсора
Понимаю, английский язык. Но де факто программист ПЛК на уровне чтения и понимания документации (раньше говорили - "со словарём") как-то хоть одним европейским языком владеть должен ;-)
Что написано в описании блока про вход xExecute?
При переднем фронте происходит чтение статуса обмена, при заднем фронте - сброс всех выходов блока.
Значит, подаёте на вход xExecute пульсирующий сигнал, например, BLINK, с нужной частотой. Например, полсекунды выкл, полсекунды вкл.
Получается, раз в секунду у вас будет обновляться статус обмена списка NVL с указанным идентификатором, например, 1
После чего остаётся проанализировать изменение соответствующих выходов - nReceiveCount, например Ежели значение изменилось между двумя вызовами - обмен был, ежели то же самое - обмена нет
Принцип тот же, что я и описывал для второго варианта контроля
PS. А почему для опроса используете именно NVL, а не другие способы? Так-то NVL использует UDP
Если вы писали сами программу и создавали списки NVL, то, конечно, помните, что у каждого списка есть свой идентификатор - вот его и нужно задавать на вход этого функционального блока dwListIdentity
Все входы и выходы расписаны даже при наведении курсора
Понимаю, английский язык. Но де факто программист ПЛК на уровне чтения и понимания документации (раньше говорили - "со словарём") как-то хоть одним европейским языком владеть должен ;-)
Что написано в описании блока про вход xExecute?
При переднем фронте происходит чтение статуса обмена, при заднем фронте - сброс всех выходов блока.
Значит, подаёте на вход xExecute пульсирующий сигнал, например, BLINK, с нужной частотой. Например, полсекунды выкл, полсекунды вкл.
Получается, раз в секунду у вас будет обновляться статус обмена списка NVL с указанным идентификатором, например, 1
После чего остаётся проанализировать изменение соответствующих выходов - nReceiveCount, например Ежели значение изменилось между двумя вызовами - обмен был, ежели то же самое - обмена нет
Принцип тот же, что я и описывал для второго варианта контроля
PS. А почему для опроса используете именно NVL, а не другие способы? Так-то NVL использует UDP
У вас нет необходимых прав для просмотра вложений в этом сообщении.
СВ