- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
M340
Модераторы: Глоб.модераторы, Специалисты SE
-
- здесь недавно
- Сообщения: 5
- Зарегистрирован: 14 фев 2023, 16:20
- Имя: Роман
- Страна: Россия
- город/регион: Свободный
M340
Привет форумчане! Помогите реализовать опрос (чтение/запись) 22ух Slave устройств. Станция собрана на Modicon P342020, NOM 0200. Связь по Modbus RTU. В контроллере есть проект, но программа FBD опрашивает только 3 устройства. С адресами устройств разобрался, а вот как опрашивать другие не пойму.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- специалист
- Сообщения: 642
- Зарегистрирован: 02 дек 2015, 06:57
- Имя: Огородников Сергей
- Страна: РФ
- Благодарил (а): 136 раз
- Поблагодарили: 111 раз
M340
Добрый день!
Конкретизируйте вопрос - что именно вам непонятно?
Встроенная справка не помогла? В чём именно?
То, что вы продемонстрировали, РАБОТАЕТ? Я буду сильно удивлён...
1. ADDM - формирует адрес слэйва для функций READ_VAR and WRITE_VAR.
2. На одном Serial порту в один момент времени должна выполняться только одна READ_VAR/ WRITE_VAR. Поэтому нужно вызовы разделять по времени
3. Какая топология сети? Сколько NOM 0200, к каким портам какие слэйвы подключены, как сеть реализована: какой кабель, длины, ответвители, терминаторы, подтяжка? К программной части приступают, когда сеть физически построена, т.к. ошибки физического уровня программными методами не всегда удаётся исправить (а чаще не удаётся)
4. Сколько запросов вы собираетесь делать каждому слэйву? Как часто?
Конкретизируйте вопрос - что именно вам непонятно?
Встроенная справка не помогла? В чём именно?
То, что вы продемонстрировали, РАБОТАЕТ? Я буду сильно удивлён...
1. ADDM - формирует адрес слэйва для функций READ_VAR and WRITE_VAR.
2. На одном Serial порту в один момент времени должна выполняться только одна READ_VAR/ WRITE_VAR. Поэтому нужно вызовы разделять по времени
3. Какая топология сети? Сколько NOM 0200, к каким портам какие слэйвы подключены, как сеть реализована: какой кабель, длины, ответвители, терминаторы, подтяжка? К программной части приступают, когда сеть физически построена, т.к. ошибки физического уровня программными методами не всегда удаётся исправить (а чаще не удаётся)
4. Сколько запросов вы собираетесь делать каждому слэйву? Как часто?
СВ
-
- здесь недавно
- Сообщения: 5
- Зарегистрирован: 14 фев 2023, 16:20
- Имя: Роман
- Страна: Россия
- город/регион: Свободный
M340
Добрый день, Ogorsv!
В кратце. Объект ВЗС (водозаборныесооружения). В машинном зале установлены 17 шкафов управления насосами и задвижками. В 3ех шкафах установлены контроллеры unitronics v570, в остальных, где по 1му реле ZelioLogi SR3, где по 2 реле. Все они объединены в сеть Modbus RTU витой парой и сведены в операторскую в шкаф мониторинга, мах. длина витой пары около 30 м. В шкафу мониторинга витые пары посажены на клемник и за параллелены перемычками и к крайней перемычке посажен кабель RJ45 и подключен к порту 0 модуля NOM0200(всего 1 штука). По индикации NOM, port0 мигает с определенной частотой примерно 1 раз в секунду ( все Slave устройства отключены). Когда подключаю 3 устройства, адреса 2 которые указаны во вложении выше, (есть еще блоки для V570, выложу) тогда на ZelioLogic видно что идет обмен данными, часто моргает индикация зеленым цветом, и на NOM тоже часто мигает. В проекте Р342020 есть еще программа FBD, которая отображает состояние исполнительных механизмов, и при опросе действительно показывает в каком состоянии, вкл, выкл, авария. Получается прога работает. По мимо этого в модуле NOM задействован порт 1 и на нем висят еще 8 устройств, так же по Modbus RTU, но для них в программе ни чего не прописано, даже переменных нет(ну с этим позже), индикация порта1 вообще не активна. Во вложении представлена программа для опроса unitronics v570. Читать то читает, а вот чтоб что-то записать вряд ли. Года два назад приезжали наладчики и видимо начали писать программу, но не до писали. Еще на объекте много аналоговых датчиков давления, уровня, все они подключены к P342020 через дискретные и аналоговые входы и все видимы в проекте. На один шкаф задвижек удалось отправить команду для открытия или закрытия, в зависимости от состояния поплавкового датчика в резервуаре, все сработало. Так что Вы точно удивитесь. Мне бы понять как увидеть все устройства, а там думаю проще будет, может быть. Читал что мол, Р342020 может опросить 16 устройств, но зачем тогда было проектировать такую систему автоматизации! Вот еще, массивы для всех Slave уже созданы, и в ST программе тоже отображается состояние контроллеров.
Отправлено спустя 23 минуты 47 секунд:
Конфигурация портов NOM 0200
В кратце. Объект ВЗС (водозаборныесооружения). В машинном зале установлены 17 шкафов управления насосами и задвижками. В 3ех шкафах установлены контроллеры unitronics v570, в остальных, где по 1му реле ZelioLogi SR3, где по 2 реле. Все они объединены в сеть Modbus RTU витой парой и сведены в операторскую в шкаф мониторинга, мах. длина витой пары около 30 м. В шкафу мониторинга витые пары посажены на клемник и за параллелены перемычками и к крайней перемычке посажен кабель RJ45 и подключен к порту 0 модуля NOM0200(всего 1 штука). По индикации NOM, port0 мигает с определенной частотой примерно 1 раз в секунду ( все Slave устройства отключены). Когда подключаю 3 устройства, адреса 2 которые указаны во вложении выше, (есть еще блоки для V570, выложу) тогда на ZelioLogic видно что идет обмен данными, часто моргает индикация зеленым цветом, и на NOM тоже часто мигает. В проекте Р342020 есть еще программа FBD, которая отображает состояние исполнительных механизмов, и при опросе действительно показывает в каком состоянии, вкл, выкл, авария. Получается прога работает. По мимо этого в модуле NOM задействован порт 1 и на нем висят еще 8 устройств, так же по Modbus RTU, но для них в программе ни чего не прописано, даже переменных нет(ну с этим позже), индикация порта1 вообще не активна. Во вложении представлена программа для опроса unitronics v570. Читать то читает, а вот чтоб что-то записать вряд ли. Года два назад приезжали наладчики и видимо начали писать программу, но не до писали. Еще на объекте много аналоговых датчиков давления, уровня, все они подключены к P342020 через дискретные и аналоговые входы и все видимы в проекте. На один шкаф задвижек удалось отправить команду для открытия или закрытия, в зависимости от состояния поплавкового датчика в резервуаре, все сработало. Так что Вы точно удивитесь. Мне бы понять как увидеть все устройства, а там думаю проще будет, может быть. Читал что мол, Р342020 может опросить 16 устройств, но зачем тогда было проектировать такую систему автоматизации! Вот еще, массивы для всех Slave уже созданы, и в ST программе тоже отображается состояние контроллеров.
Отправлено спустя 23 минуты 47 секунд:
Конфигурация портов NOM 0200
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- здесь недавно
- Сообщения: 5
- Зарегистрирован: 14 фев 2023, 16:20
- Имя: Роман
- Страна: Россия
- город/регион: Свободный
-
- специалист
- Сообщения: 642
- Зарегистрирован: 02 дек 2015, 06:57
- Имя: Огородников Сергей
- Страна: РФ
- Благодарил (а): 136 раз
- Поблагодарили: 111 раз
M340
Добрый день, Роман!
То, что вы сейчас показали, возможно, будет работать.
То, что было на предыдущем фото - сомневаюсь. Выложите в личку ссылку на экспорт проекта (File - Export project - Save as .zef) - будет понятно, что и как написано
По вашим объяснениям похоже, что наладчики уехали, не доделав работу - обычно такое случается в случае неплатежей заказчика
Р342020 может опросить и более 16 устройств, но прочитайте внимательно моё предыдущее сообщение про временное разделение функций.
Если нужно с каждого из 22 слэйвов как читать, так и писать, то время оборота одного полного опроса может вас удивить.
Про количество запросов с кажлого слэйва так и не услышал
ZelioLogiс SR3 для связи по modbus должны иметь отдельный модуль связи, доступны только 4 слова чтения и 4 записи
Если под витой парой вы подразумеваете Ethernet-кабель (UTP, STP, FTP etc), то посмотрите раздел форума "Интерфейсы, протоколы, связь", Евгений делал FAQ в т.ч. и про выбор кабеля
Я не просто так написал про физический уровень - но, как говорит моя мама, "Звёзды советуют, но не склоняют"
Вы в итоге так и не сформулировали внятный вопрос по задаче
Если это
- Сделать правильное подключение (FAQ, про который писал выше)
- Настроить параметры модбас во всех слэйвах и мастере (скорость, кол-во бит, чётность, стоповые биты, адрес)
- Определить регистры и их modbus-адреса в устройствах для чтения и записи
- Написать программу, где ADDM задаёт адреса слэйвов (всех 22), READ_VAR/WRITE_VAR читают/записывают данные в соответствующие слэйвы (примерно так, как в присланном фото)
- Не забыть про разделение функций во времени
То, что вы сейчас показали, возможно, будет работать.
То, что было на предыдущем фото - сомневаюсь. Выложите в личку ссылку на экспорт проекта (File - Export project - Save as .zef) - будет понятно, что и как написано
По вашим объяснениям похоже, что наладчики уехали, не доделав работу - обычно такое случается в случае неплатежей заказчика
Р342020 может опросить и более 16 устройств, но прочитайте внимательно моё предыдущее сообщение про временное разделение функций.
Если нужно с каждого из 22 слэйвов как читать, так и писать, то время оборота одного полного опроса может вас удивить.
Про количество запросов с кажлого слэйва так и не услышал
ZelioLogiс SR3 для связи по modbus должны иметь отдельный модуль связи, доступны только 4 слова чтения и 4 записи
Если под витой парой вы подразумеваете Ethernet-кабель (UTP, STP, FTP etc), то посмотрите раздел форума "Интерфейсы, протоколы, связь", Евгений делал FAQ в т.ч. и про выбор кабеля
Я не просто так написал про физический уровень - но, как говорит моя мама, "Звёзды советуют, но не склоняют"
Вы в итоге так и не сформулировали внятный вопрос по задаче
Если это
- то:"мне бы понять как увидеть все устройства"
- Сделать правильное подключение (FAQ, про который писал выше)
- Настроить параметры модбас во всех слэйвах и мастере (скорость, кол-во бит, чётность, стоповые биты, адрес)
- Определить регистры и их modbus-адреса в устройствах для чтения и записи
- Написать программу, где ADDM задаёт адреса слэйвов (всех 22), READ_VAR/WRITE_VAR читают/записывают данные в соответствующие слэйвы (примерно так, как в присланном фото)
- Не забыть про разделение функций во времени
СВ
-
- здесь недавно
- Сообщения: 5
- Зарегистрирован: 14 фев 2023, 16:20
- Имя: Роман
- Страна: Россия
- город/регион: Свободный
M340
Добрый вечер, Сергей!
Я не ответил на некоторые Ваши вопросы, так как пока не понимаю их, например, про кол-во запросов слейва, разделение по времени. Я только начинаю познавать программирование, поэтому и ищу помощи на форуме. Не пинайте сильно. Полтара месяца назад, познакомился с этим оборудованием. Ну ладно, к теме. ZelioLogic SR3 имеют модули связи, в конфигурации модбас такие параметы, скорость 9600, стоп бит 2, parity none, ID для каждого свой. Соединение обычным Интернет кабелем UTP. Раз монтаж сделан подрядчиками, то физический уровень можно опустить, так как в схемах внешних проводок указан именно кабель UTP. Сегодня провел эксперимент: в программе которую выложил в первом сообщении, удалил блоки 13, 14. При помощи копирования создал аналогичные блоки для каждого слейв устройства, указал адрес каждого, создал переменные rdpara и wrpara, и получилось опросить только 7 устройст. Опрос циклический, как я понимаю не быстрый, так как индикация на блоке связи ZelioLogic, становится зеленой в момент опроса примерно через каждые 10 секунд. Скину Вам проект, посмотрите что к чему.
Я не ответил на некоторые Ваши вопросы, так как пока не понимаю их, например, про кол-во запросов слейва, разделение по времени. Я только начинаю познавать программирование, поэтому и ищу помощи на форуме. Не пинайте сильно. Полтара месяца назад, познакомился с этим оборудованием. Ну ладно, к теме. ZelioLogic SR3 имеют модули связи, в конфигурации модбас такие параметы, скорость 9600, стоп бит 2, parity none, ID для каждого свой. Соединение обычным Интернет кабелем UTP. Раз монтаж сделан подрядчиками, то физический уровень можно опустить, так как в схемах внешних проводок указан именно кабель UTP. Сегодня провел эксперимент: в программе которую выложил в первом сообщении, удалил блоки 13, 14. При помощи копирования создал аналогичные блоки для каждого слейв устройства, указал адрес каждого, создал переменные rdpara и wrpara, и получилось опросить только 7 устройст. Опрос циклический, как я понимаю не быстрый, так как индикация на блоке связи ZelioLogic, становится зеленой в момент опроса примерно через каждые 10 секунд. Скину Вам проект, посмотрите что к чему.
-
- специалист
- Сообщения: 642
- Зарегистрирован: 02 дек 2015, 06:57
- Имя: Огородников Сергей
- Страна: РФ
- Благодарил (а): 136 раз
- Поблагодарили: 111 раз
M340
Добрый день, Роман!
Сильно не пинаю, но в вашем случае варианты такие:
1. Дорешать вопросы с авторами/наладчиками (про финансы так и не услышал - вероятно проблема была именно там), чтобы они завершили работу
2. Изучить работу функций ADDM, READ_VAR, WRITE_VAR и дописать программу самому.
Встроенная справка, youtube, Алескандр Пупена делал хорошие ролики на русском языке, плюс поищите материалы на его сайте, техподдержка SE тоже выкладывала много полезного. Можете к нам на обучение приехать, но, думаю, это будет сложнее всего :-)
3. Найти рядом программиста с опытом работы, который доделает задачу и объяснит вам, как она работает
Сильно не пинаю, но в вашем случае варианты такие:
1. Дорешать вопросы с авторами/наладчиками (про финансы так и не услышал - вероятно проблема была именно там), чтобы они завершили работу
2. Изучить работу функций ADDM, READ_VAR, WRITE_VAR и дописать программу самому.
Встроенная справка, youtube, Алескандр Пупена делал хорошие ролики на русском языке, плюс поищите материалы на его сайте, техподдержка SE тоже выкладывала много полезного. Можете к нам на обучение приехать, но, думаю, это будет сложнее всего :-)
3. Найти рядом программиста с опытом работы, который доделает задачу и объяснит вам, как она работает
СВ
-
- здесь недавно
- Сообщения: 5
- Зарегистрирован: 14 фев 2023, 16:20
- Имя: Роман
- Страна: Россия
- город/регион: Свободный
M340
Добрый вечер, Сергей!
Спасибо за советы! Буду изучать, и дописывать! Александра Пупена смотрел. Объясните хоть, как разделить вызовы по времени, и я ушел?
Спасибо за советы! Буду изучать, и дописывать! Александра Пупена смотрел. Объясните хоть, как разделить вызовы по времени, и я ушел?
-
- специалист
- Сообщения: 642
- Зарегистрирован: 02 дек 2015, 06:57
- Имя: Огородников Сергей
- Страна: РФ
- Благодарил (а): 136 раз
- Поблагодарили: 111 раз
M340
Добрый вечер, Роман!
Например, инкрементировать с определённой периодичностью число, которое будет номером вызываемой функции (номер шага)
И по условию "номер = определённому числу" вызывать определённый блок, в FBD это делается через вход En
ADDM тут можно не разделять и вызывать безусловно, как и написано уже
Во встроенной справке хороший пример на READ_VAR рекомендую для изучения
Например, инкрементировать с определённой периодичностью число, которое будет номером вызываемой функции (номер шага)
И по условию "номер = определённому числу" вызывать определённый блок, в FBD это делается через вход En
ADDM тут можно не разделять и вызывать безусловно, как и написано уже
Во встроенной справке хороший пример на READ_VAR рекомендую для изучения
СВ