Жду ответа от Дмитрия
Жду ответа от Дмитрия
Тролль-наседка, добрый, нежный и ласковый
А без него не сможете посмотреть?
Напильник, велосипед, бубен, грабли и костыли - основные инструменты программиста.
Дмитрий и Павел - проверяйте почту
Тролль-наседка, добрый, нежный и ласковый
Решал задачу соединения по программному Modbus TCP двух контроллеров СПК207 и ПЛК110 M02. На СПК207 установил клиента. На ПЛК110 - сервер. За основу взяты библиотеки OSCAT. Не буду описывать увлекательную путешествие в миры Овен. Устойчивое соединение удалось получить. Осталось два невыясненных вопроса.Через любые две точки проходит прямая, и притом только одна.
Вопрос 1. Методом научного подбора удалось установить, что СПК207 может передать на ПЛК110 93 слова, а принять 95 слов. С учетом служебных байтов и путем нехитрого манипулирования калькулятором получаем волшебные 200 байт, при максимально возможном для приема 125 слов и передачи 123 слова. Что нашли Дмитрий и Павел у себя на почте?
Вопрос 2. Методом, еще более глубокого, научного подбора удалось установить, что минимальная задержка между запросами (задается на клиенте) должна составлять 800 мс. Циклы в конфигурации задач на обоих контроллерах 20 мс. Уменьшение задержки влечет за собой вываливание по ошибки связи. Это у меня провода такие тормозные?
1. На почте решение вышеописанной проблемы длинных TCP-пакетов. Владислав, наверное, скоро опубликует новую прошивку.
2. Не знаю как MODBUS TCP но собственный протокол работает очень быстро. У меня на ПЛК минВЦ = 0. Простой пакет туда-обратно проходит за 2-4 мс.
Напильник, велосипед, бубен, грабли и костыли - основные инструменты программиста.
СПК207 какого года выпуска?
По поводу пакетов>200 байт - сейчас идёт тестирование, закончится - выложим.
Сколько мы не делали обмена по ModBusTCP - всё летало. Попробуйте не пользоваться OSCAT, Для ПЛК110 он не нужен вообще (есть штатный в конфигурации), СПК тоже попробуйте штатный CoDeSys-вский.
P.S. на тестирование могу выдать, пишите на plc_prog@owen.ru
Последний раз редактировалось Филоненко Владислав; 26.01.2016 в 20:59.
Тролль-наседка, добрый, нежный и ласковый
По поводу прошивки.
Интересно, в каком году начнется штатная эксплуатация.Предполагается, что перемычка при штатной эксплуатации не потребуется.
По поводу конфигуратора.
Огромное спасибо за совет. Пойду почитаю инструкцию. В очередной раз заценил юмор. В CODESYS 2 последний раз пользовался штатным конфигуратором года 4 назад. В 3 CDS, года 2 назад. Я думаю, (если я переживаю из-за 200 байт) многие поймут почему. Как работать в CODESYS 3 со штатной библиотекой (без штатного "конфигуратора") не знаю. В своё время пробовал, но не получилось. Если у кого то есть работающий пример, буду благодарен. Если для CODESYS 2 есть другая библиотека (не OSCAT), работающая на овеновских контроллерах, готов попробовать. На контроллерах других фирм пользуюсь библиотекой 3s ModbusTCPSrv.lib, но здесь она не прокатывает. Я думаю, разработчики Овен лучше меня смогут назвать причину.Попробуйте не пользоваться OSCAT, Для ПЛК110 он не нужен вообще (есть штатный в конфигурации), СПК тоже попробуйте штатный CoDeSys-вский.
К сожалению, я не самый лучший специалист по созданию собственных протоколов. С ПК, я в свое время, связывался по чистому TCP/IP (без Modbus), но между контроллерами, как то стрёмно. Если есть работающий пример Вашего протокола, было бы интересно посмотреть. Мне кажется, и библиотеку OSCAT можно оптимизировать. У меня есть подозрение, что тормоза связаны с неблокирующим режимом. Функция Connect не выдаёт статуса коннекта, ну а дальше за собой тянет. Может я и ошибаюсь. Сети и протоколы, не моя специализация.Не знаю как MODBUS TCP но собственный протокол работает очень быстро. У меня на ПЛК минВЦ = 0. Простой пакет туда-обратно проходит за 2-4 мс.
СПК207 какого года выпуска?Спасибо. Он уже на тестировании. Версия М04. Выпуск 5 ноября 2015 года. Прошивка старая, под v3.5.5.4. Новую, с трендами, жду уже много месяцев ...P.S. на тестирование могу выдать, пишите на plc_prog@owen.ru
итак, есть чужая библиотека, которая работает странно и наш ПЛК, в котором модбус TCP на наших библиотеках работает быстро. Внимание вопрос, где копать?
Вероятно в OSCAT - например, переводятся ли там сокеты в неблокирующий режим?
Вы хотя бы на половину попробуйте, в ПЛК110 - штатный slave через конфигуратор (кстати чем он не устраивает, весь функционал поддерживается)?
И почему Вы воспринимаете вопросы и советы как вражескую пропаганду?
Тролль-наседка, добрый, нежный и ласковый
Владислав, извините если я Вас обидел, но мне кажется у Вас уже какая то паранойя по поводу вредителей, врагов, саботажников и провокаторов.
По поводу конфигуратора в CODESYS 2.
Прекрасно работающий продукт. У меня к нему нет никаких претензий. Просто на СПК207 у меня находится "рецептура". Этот рецепт мне надо передавать на контроллер. Таких контроллеров может быть несколько. Рецептура фактически является Batch. Объем рецепта может варьироваться в зависимости от количества шагов и установки. Минимальный размер около 2 кб. Для оптимизации процесса передачи данных естественно используются массивы и передача разбивается на несколько циклов. Обратно с контроллера также поступает достаточно большой объем информации. Для этого также используются массивы (которые к тому же имеют некоторую избыточность, для унификации под разные типы оборудования). А теперь давайте, на ПЛК110 попробуем для этой задачи использовать конфигуратор с его AT %QW ... и заодно к массиву привяжем. Дальше. Представим, что у меня нет контроллера. Я сейчас спокойно отлаживаю программу на виндовом контроллере, так как не привязан к железу. И так я работаю уже много лет. Одна и та же программа (за исключением привязки к конкретным адресам ввода-вывода, которые для отладки мне не нужны) прекрасно переносится на контроллеры разных производителей.
По поводу OSCAT.
Естественно я понимаю, что в ней могут быть ошибки. Но безошибочной библиотеки под Modbus TCP, производства Овен, я не видел. Библиотека написанная 3s на вашем контроллере не работает (о чем я уже писал выше). Библиотекой под Modbus RTU, написанной специалистами Овен, я пользуюсь.
P.S. Кстати, одна из библиотек OSCAT на сайте Овен доступна для скачивания (в разделе поддержка). Если Вы категорически против, удалите.
По поводу неблокирующего режима сокетов.
Естественно переведены. В блокирующем режиме ПЛК110 не работает вообще. Полностью умирает. Вы же сами порекомендовали мне 14 января
Я воспользовался Вашим советом, не зная ещё, что это вражеская пропаганда.Сокет надо сразу ставить в неблокирующий режим. Пример тут где-то лежал.
А у Вас блокирующий, вот через 4 секунды ожидания связи ПЛК и сбрасывается по Watchdog.
По поводу конфигуратора в CODESYS 3.
Отличный продукт. Есть все функции и можно привязывать массивы. Я им, если честно, часто пользуюсь. Но для конкретной задачи он плохо подходит, так как в нем нет возможности динамически менять адрес для слейва. Как только в 3s это сделают, буду счастлив. А библиотеку без конфигуратора мне подключить не удалось (о чем я уже писал выше).
AT %Q использовать не надо.
Сам по себе slave хоть на 3 кБ сделайте. И работать он будет вплоть до 123 регистров за раз.
Ну, а в крайнем случае, ModBus TCP можно сделать и вручную. Он прост как лопата, даже проще чем ModBus RTU, нет контрольной суммы.
P.S. А не хотите попробовать сетевые переменные CODeSys-а? Под Вашу задачу они ещё лучше подходят.
Тролль-наседка, добрый, нежный и ласковый