Добрый день,
Кто-нибудь настраивал работу СПК207 и SCADA CIMPLICITY 4.0 по протоколу Modbus TCP/IP?
Добрый день,
Кто-нибудь настраивал работу СПК207 и SCADA CIMPLICITY 4.0 по протоколу Modbus TCP/IP?
Добрый день. Есть ли какие-то готовые шаблоны для опроса устройства МВА8? Если нет, существуют ли какие-то способы опроса при использовании Raspberry PI в качестве контроллера?
Связь со мной: telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | личка на форуме - не подходит
Раздел CDS V3.5 на сайте | Основные темы по CDS V3.5 на форуме: Вопросы и ответы | Визуализация | Настройка обмена с другими устройствами
Repository Archive V3.5 SP4 (необходим для СПК207/СПК1хх без Eth/ПЛК3xx)
oscat.ru | Как обратиться в техподдержку? | Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | Проблема XY | Как правильно задавать вопросы | PRO32 Connect
Здравствуйте, у меня на ПЛК304 реализован проект для сети Modbus. В работу подключено две подсети на 15 и 29 устройств соответственно. Реализовывал через стандартную конфигурацию, но данная реализация "еле дышит"... в основном проблема с отваливанием устройств - как следствие пропуск управляющих сигналов. Под руку попался старенький ПЛК110 - перенёс проект на него с использованием "универсального диспетчера" на основе библиотеки Modbus - всё работает на порядок стабильнее. Решил попробовать реализовать проект на библиотеке Modbus для ПЛК304, но из за отсутствия диспетчера возникли проблемы. По отдельности устройства опрашиваются без проблем и ошибок, но стоит включить в работу два подобных устройства - начинаются сыпаться ошибки 255. Как организовать диспетчиризацию модулей Modbus?
Добрый день.
Посмотрите здесь п. 6.4:
https://ftp.owen.ru/CoDeSys3/11_Docu...dbus_v.1.1.pdf
Там показано, как организовать опрос нескольких устройств через библиотеку.
Связь со мной: telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | личка на форуме - не подходит
Раздел CDS V3.5 на сайте | Основные темы по CDS V3.5 на форуме: Вопросы и ответы | Визуализация | Настройка обмена с другими устройствами
Repository Archive V3.5 SP4 (необходим для СПК207/СПК1хх без Eth/ПЛК3xx)
oscat.ru | Как обратиться в техподдержку? | Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | Проблема XY | Как правильно задавать вопросы | PRO32 Connect
Спасибо за совет. Разбираюсь с инструкцией. По ходу чтения появились вопросы.
1. Можно ли использовать один буфер для приёма данных для всех модулей чтения? Ведь, на сколько я понял (у меня так и реализовано по сигналу CMPL) опрос следующего начинается по завершению предыдущего, т.е. я могу в этот момент забирать данные, а дальше этот же буфер использует следующий модуль.
2. На странице 126 идёт описание работы программы, приведённой на стр 125. В конце программы используется завершение опрос модуля - это не описано в описании. Я это не использую - смотрел пример описания библиотеки - там нигде нет "завершения опроса", что за буффер используется для этого abyBuffer? И для чего?
3. Нужно ли в каждом модуле формировать свой сигнал CMPL? Или достаточно объявить в глобальных переменных CMPL и применять её для всех модулей по мере завершения опроса?
1. Можно.
2. Блок выполняется по фронту на входе Enable, поэтому после окончания сеанса опроса на вход Enable присваивается FALSE (чтобы при следующем присвоении входу значения TRUE был получен передний фронт). abyBuffer в данном вызове нужен только по той причине, что переменная Buffer является входом-выходом (VAR_IN_OUT) - и ей всегда что-то должно присваиваться при вызове ФБ. Вообще, для вашего случая лучше смотреть на пример со стр. 128.
3. Я не очень понимаю, что вы называете "CMPL".
Связь со мной: telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | личка на форуме - не подходит
Раздел CDS V3.5 на сайте | Основные темы по CDS V3.5 на форуме: Вопросы и ответы | Визуализация | Настройка обмена с другими устройствами
Repository Archive V3.5 SP4 (необходим для СПК207/СПК1хх без Eth/ПЛК3xx)
oscat.ru | Как обратиться в техподдержку? | Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | Проблема XY | Как правильно задавать вопросы | PRO32 Connect
Я делаю Complete=>CMPL, CMPL - глобальная переменная получается доступна в основной программе и проще обрабатывать на таймерах опроса - когда много модулей, использую так: если время опроса пришло, проверяю, не занят ли другой модуль - ждём, пока освободиться.
Добавил завершение опроса - ошибок не стало...Спасибо.
Рано радовался... Функция 03 заманала... Опрашиваю отдельное устройство - всё ОК, как подключаю несколько то читает, то ошибка 253, то 255... Не пойму в чём дело. 255 - ошибка тайм-аута - пробовал увеличить - ноль реакции.
Последний раз редактировалось Sergeba; 06.01.2020 в 12:59.
В инструкции используется оператор CASE, получается период опроса модулей ничем не обусловлен, только готовностью.
У меня каждому модулю соответствует свой таймер - могу задать каждому модулю период опроса. Этот же таймер формирует модулю сигнал Enable, при условии что Complete у всех модулей равен TRUE, т.е. в данный момент никто линию не занимает, модули завершили обмен.
Я использую таймеры - выставляю флаг начала опроса и одновременно проверяю общий Complete.
Последний раз редактировалось Sergeba; 06.01.2020 в 02:05.
Я правильно понимаю, что если Тайм-Аут устройства 30мс, программный цикл 5мс, то я физически не могу опросить 1 устройство из 30 на линии не быстрее, в среднем, через 1050мс... Как в этом случае работает опрос через конфигуратор, если я заведомо задаю малый период для модуля?
Всё оказалось хуже, чем расчёт... Тайм-Аут проходит без ошибок 10мс, но опрос получился почти 4 секунды!!!
Непонятный косяк ещё с COM-портами. COM5 - тайм-аут 10мс - без проблем - ошибок нет (на нём 29 модулей), COM2 - тайм-аут в среднем 40мс - функция 03 постоянно с ошибками, увеличение тайм-аута не помогает... При уменьшении тайм-аута другие функции тоже начинают "сыпаться".
Последний раз редактировалось Sergeba; 06.01.2020 в 15:41.