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

M241 + устройство modbus RTU

Unity Pro (Control Expert), Quantum, Premium, M340, M580, Hybrid DCS, Process Expert, Zelio, Twido, M17*, M2**, SCADAPACK, SoMachine, MachineExpert, ZelioSoft, TwidoSoft, TwidoSuite, TelePace

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

Ответить

Автор темы
Ivan_P
здесь недавно
здесь недавно
Сообщения: 18
Зарегистрирован: 06 май 2015, 08:43
Имя: Ivan Pavluchenko

M241 + устройство modbus RTU

Сообщение Ivan_P »

Всем привет!

Возникла проблема с READ_VAR. Хочу считывать данные по modbus RTU на M241 (TM241CE40T) от устройства MK110 (ОВЕН).
Собрал прогу на CFC как по примеру в хэлпе, но там правда на FBD...
Проблема заключается в том, что нужно запустить опрос и тут в проге получается запара. Для этого я форсом перевожу start в TRUE а потом снимаю форс и только тогда идёт опрос.
1. Подскажите, пожалуйста, как мне лучше подправить прогу? Может какой оборот ввести на проверку связи?
2. Я большую часть кода пишу в ST можно ли read_var написать в ST? Помогите с синтаксисом для ST.
3. С write_var я так понимаю такой же оборот получается судя по хэлпу? У меня правда выдаёт ошибку, но это скорее всего вызвано проблемой с устройством.
4. Для считывания данных с другого M241 тоже использовать READ_VAR или есть какие-нибудь драйвера?
5. И подскажите как писать адрес для Mobdus TCP устройств.

Заранее спасибо!
У вас нет необходимых прав для просмотра вложений в этом сообщении.

Nexus_fox
здесь недавно
здесь недавно
Сообщения: 67
Зарегистрирован: 07 окт 2016, 16:22
Имя: Кибасов А.В
Страна: Россия
город/регион: Ростов-на-Дону
Благодарил (а): 3 раза
Поблагодарили: 2 раза

M241 + устройство modbus RTU

Сообщение Nexus_fox »

В Somachine есть удобная функция Modbus_IOScanner . Обмен с устройствами настраивается в несколько кликов.
с.205 в руководстве Modicon M241 Logic Controller, Programming Guide

se_sib
освоился
освоился
Сообщения: 277
Зарегистрирован: 14 дек 2015, 12:15
Имя: Евгений
Страна: Россия
город/регион: Краснодар
Благодарил (а): 5 раз
Поблагодарили: 73 раза

M241 + устройство modbus RTU

Сообщение se_sib »

Можете использовать конфигуратор обмена IOscanner, как рекомендует Nexus_fox.
Но если вам нужны будут функции помимо тех, что работают с регистрами хранения, то придется использовать эту самую библиотеку PLCcommunication.

Проблема в том, что вы в первом цикле пытаетесь запустить обмен, добавьте небольшую задержку. Т.е. TON таймер который скажем через 50-100мс будет устанавливать Bool переменную, а уже эта переменная через AND вместе с вашей start на вход 'Execute'.
Вызывать блок ADDM не нужно в каждом цикле, если вы не собираетесь формировать каждый раз строку адреса для нового устройства, это удобно когда у вас много однотипных устройств и вы создаете один алгоритм, привязываете к входам блоков массивы и меняя индекс опрашиваете разные устройства.
1. По поводу почему не идет обмен я уже написал, но я бы ещё добавил алгоритм обработки ошибок связи.
2. Используйте помощник ввода. В редакторе кода ST щелкните правой кнопки мыши по полю ввода кода, выберете Input Assistant.... найдите нужный блок или функцию и подтвердите ввод.
3. Не забывайте про особенность протокола Modbus, а главное про задержку между фреймами, по умолчанию в настройки протокола она установлена 10мс. Вам нужно добавить задержку между вызовами блоков Read и Write. Можно просто пропускать один цикл для вызова следующего ФБ, если время цикла больше или равно задержки между фреймами.
4. Можно по Modbus TCP(IOscanner или ФБ из PLCcommunication), можно по EthernetIP(на сайте SE есть EDS файлы контроллеров M2xx для импорта в SoMachine) и можно использовать метод глобальных сетевых переменных(network variablr list особенность Codesys), можете почитать в онлайн справке.
5. Есть описание в онлайн справке.
'<communication port number>{<IP address A.B.C.D>}<slave address>'
<communication port number> - для контроллеров M2xx встроенный Ethernet это номер 3.
<IP address A.B.C.D> - IP адрес опрашиваемого устройства. По моему в онлайн справке ошибка, должно быть так
<IP address A.B.C.D>:<port> - т.е. плюс порт, по умолчанию 502(можно не писать, если не отличается).
<slave address> - это для случая опроса через шлюз Modbus TCP<->Modbus RTU, указываете Modbus адрес устройства в сети RS485.(бывает что на ПЛК можно использовать несколько Modbus серверов с разными id, тогда тоже используется). Так же ПЧ Altivar 600/900 требую указанием правильного Id(248).
Пример: Опрос устройства с IP 192.168.1.10, строка '3{192.168.1.10}'.
Опрос устройства с IP 192.168.1.10(порт 552, id 240) строка '3{192.168.1.10:552}240'
Ответить

Вернуться в «ПЛК»