Валенок Ой как я буду ругаться. Я очень жёстко не люблю тех, кто читает невнимательно. CodeSys 2 от CodeSys 3 отличается примерно как MS-DOS от Windows 10. И если хоть ещё кто в этой теме скажет "Да вот у меня на CodeSys v2 всё пашет, хрен ли вы тут морочитесь", то я призову на него все кары мира. Потому что надоело!
Вы хочите цифр? Их есть у меня. Даю средние времена цикла за 4 часа работы ПЛК:
Задача опроса модулей IO = 671 мксек
Задача этого диммера, одна, только с диммером (проект пустой до сих пор) = 453 мксек
Но при этом реакция ПЛК на кнопку не мгновенная, как на CodeSys v2. Ты можешь кнопку нажать, а ПЛК её не увидит.
Я снял короткое видео, прям с рук, показать реакцию: https://cs-cs.net/ExxChange/MAH01874...-v3-Modbus.MP4
Я сранивал это в других проектах на ПЛК110. Там светодиоды опроса на модуях IO мерцают почти постоянно, а тут видно перерывы между ними.
А теперь ГВОЗДЬ ПРОГРАММЫ. Ещё одно видео: https://cs-cs.net/ExxChange/MAH01875-ModbusPoll-IO.MP4
Я взял на компе Modbus Poll, загнал туда все шесть модулей IO, выставил на каждый интервал по 10 мсек, интервал между фреймами в 5 мсек и читаю...
(3 х (32 + 2)) + (2 х 2) + (1 х 1) = 3 х 34 + 4 + 1 = 102 + 5 = 107 регистров в общей сложности на 115 200... иииии! И дело не в Modbus, не в том, что он тормозной и старый, и даже не в "низкой" скорости. На видео видео, что модули реагируют почти моментально на нажатие кнопки!
Вот на CodeSys v2 планировщик опроса именно так и работает: читает всё подряд без разбора
На CodeSys v3 всё работает в десять раз медленнее!
Поэтому если кто-то ещё хоть слово пикнет про быстроту, про ПЛК 110 и CodeSys v2 - пришибу. Всеми RTU-пакетами разом. Я уже не знаю, что вас всех убедит ещё.
ЗЫ. Евгений Кислов сохрани видео на память, если тебе удобно. Это прям яркий пример на тему CDS 3. И это на OCL даже!
И ещё. А в OCL можно менять интервал между фреймами? Я бы его воткнул бы в 5 мсек. Сколько он там задан?
Чёрт, я знаю что ты в отпуск хотел... может лучше поотдыхать?
Вернёмся к диммеру моему многострадальному. Я уже начал над ним смеяться, так что стадия истерики прошла.
Так вот что у нас получается (тем, кто не читал гуляющую по Сети "Историю Одного Байта" - я очень рекомендую к прочтению поржать):
* Ловим короткие нажатия по уровню (биту). Нажали, а CodeSys не успел среагировать - Fail, нажатие пропущено;
* Ловим короткие нажатия по счётчику импульсов - ура, ловятся и не пропускаются.
* Ловим длинные нажатия по TON - ура, ловятся. Небольшая задержка в реакции пофиг, так как нажатие длинное.
* НО! Сделали несколько коротких подряд - попали в ситуацию когда из-за медленного опроса CodeSys видит их не как TRUE-FALSE, TRUE-FALSE, TRUE-FALSE, а пропускает некоторые FALSE и видит как TRUE-TRUE-TRUE-FALSE-TRUE-TRUE и иногда считает длинным нажатием - Fail!
* Ставим блокировки на TP или TOF после того как поймали короткое или длинное нажатия, чтобы не ловить другие нажатия? Чёрт побери, а из-за проглатывания нажатий система снова видит TRUE-TRUE-TRUE, считает это длинным и все эти блокировки уходят не в ту степь...
Вот такие пироги на данный момент. Я попробую ещё раз накодить вариант с конечным автоматом и блокировками после выполнения действия по нажатию. Сдаётся мне, что TP работает не так, как описано в справке...