Страница 6 из 13 ПерваяПервая ... 45678 ... ПоследняяПоследняя
Показано с 51 по 60 из 126

Тема: Логика: Распознать отдельно короткое и отдельно длинное нажатия (CodeSys v3)

  1. #51

    По умолчанию

    Валенок Ой как я буду ругаться. Я очень жёстко не люблю тех, кто читает невнимательно. 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 работает не так, как описано в справке...

  2. #52
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,171

    По умолчанию

    А в OCL можно менять интервал между фреймами? Я бы его воткнул бы в 5 мсек. Сколько он там задан?
    OCL дает контроль на уровне отдельных запросов, так что интервал между фреймами зависит от кода пользователя.
    В данном случае, этот интервал - время между срабатыванием xDone одного блока и фронта xExecute следующего.

    Я взял на компе Modbus Poll
    Я предлагаю на ПК запустить виртуальный контроллер CODESYS (CODESYS Control Win V3) и запустить на нем проект из видео. Это займет минут 5.
    В результате станет ясно, влияет ли как-то "железо" на получаемые результаты.

  3. #53

    По умолчанию

    krollcbas О! Давай попробуем! Но я тебя огорчу...
    1, 2, 3. Интерфейс точно в порядке. Я смотрю по счётчику ошибок. Их набегает 20 штук за сутки при опросе через OCL. При опросе средствами CodeSys v3 их набегает около 2000 за сутки.
    4. Читаю одним запросом READ_MULTIPLE_REGISTERS, получаю массив из двух WORD. Потом разбираю их в коде побитно в переменные BOOL.
    5. Дребезг не буду убирать, сейчас ниже поясню почему.
    6. Счётчик импульсов аппаратный. Ловит вовсю, без проблем.
    7. И вот самое интересное. Я вчера так и сделал, только через Modbus Poll. Вот цитирую из моего длинного ответа:
    А теперь ГВОЗДЬ ПРОГРАММЫ. Ещё одно видео: 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, не в том, что он тормозной и старый, и даже не в "низкой" скорости. На видео видео, что модули реагируют почти моментально на нажатие кнопки!
    Что было сделано:
    * От СПК было откинуто питание и адаптер интерфейсов. То есть СПК мы отключили.
    * На эту линию (на тот же кабель в щите) были подкинуты два кривых провода, валяющиеся по комнате, не свитые
    * Через ОВЕНовский USB-RS-485 адаптер был подцеплен Modbus Poll с указанными выше параметрами.
    И оно залетало! Так что дело и не в фильтре дребезга, и не в линии...
    Такая фигня у меня с СПК на всех щитах, которые я на нём сделал, была. Прям однотипная - телеграммы летают медленно.
    Я ставил кучу опытов и с задачами (и делил по задачам, и собирал всё в одну задачу), и с таймингами - получается ещё хуже, чем щас.

    Могу натравить логический анализатор сегодня ночью (днём смотаюсь по делам) и посмотреть им, как СПК работает (я в будущем собирался это делать для статиь на блоге).
    И ещё ночью я подтяну ПЛК110 и посмотрю, как он это всё будет опрашивать. Аж интересно!

    А скажи, сколько штук у тебя модулей IO, которые ПЛК210 опрашивает, и чем нагружен сам ПЛК210 (ну, задачами и действиями)?
    У меня всё время получается, что логика летает с космической скоростью, а тормозит сам опрос.

    Валенок Чёрт подери... что ж все такие резвые, но ни фига невнимательные-то? Неееет, моё терпение лопнуло. Ты или перечитай тему с её начала, или глянь видео. Вот там и увидишь и что такое nnn мксек, и какие модули стоят и как.

  4. #54

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Я предлагаю на ПК запустить виртуальный контроллер CODESYS (CODESYS Control Win V3) и запустить на нем проект из видео. Это займет минут 5.
    В результате станет ясно, влияет ли как-то "железо" на получаемые результаты.
    Ну с OCL загрузка проца в СПК стала в 70% примерно (была 50%). По идее железо будет влиять.
    А как виртуальному контроллеру надо будет указать физические порты, с которых он опрос будет вести?
    Сечас побалуюсь, попробую!

  5. #55
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,171

    По умолчанию

    Цитата Сообщение от Cs-Cs Посмотреть сообщение
    Ну с OCL загрузка проца в СПК стала в 70% примерно (была 50%). По идее железо будет влиять.
    А как виртуальному контроллеру надо будет указать физические порты, с которых он опрос будет вести?
    Сечас побалуюсь, попробую!
    В этом случае указывается номер виртуального COM-порта из диспетчера устройства Windows.

  6. #56

    По умолчанию

    Хммм... он на виртуальном ПЛК ругается на OCL. Пишет что "...невозможно конвертировать тип ULINT в UDINT" во многих FB либы.

  7. #57
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,171

    По умолчанию

    Цитата Сообщение от Cs-Cs Посмотреть сообщение
    Хммм... он на виртуальном ПЛК ругается на OCL. Пишет что "...невозможно конвертировать тип ULINT в UDINT" во многих FB либы.
    Покажи, пожалуйста, скриншотом, какой таргет виртуального ПЛК ты выбрал.
    Нужно выбрать именно CODESYS Control Win V3 (не x64, не RTE и не какой-либо другой).

  8. #58

    По умолчанию

    Этот: CDS_PLC.gif
    Надо было Realtime брать?

  9. #59

  10. #60

    По умолчанию

    Валенок Неее! Ещё читай до полного понимания =) Надоело объяснять каждому, кто просто забежал почитать.

    Итак, ВИДОС: https://cs-cs.net/ExxChange/MAH01877...n-Requests.MP4
    Циклы выполнения задач (в том числе опроса через OCL) сократились до десятков микросекунд О_о!
    Но при этом CodeSys всё равно так же, как и на ПЛК, медленно опрашивает модули. Как будто он сам делает задержки.

    Пошёл за логическим анализатором... интересно!
    ЗЫ. Чёрт, НЕ ТАК я собирался набирать инфу о работе планировщика опроса Modbus в CodeSys v3... думал, буду тихо под чай проводить опыты... А не экстремально изучать на лету =)

Страница 6 из 13 ПерваяПервая ... 45678 ... ПоследняяПоследняя

Похожие темы

  1. отключение звука нажатия СП307
    от vendor в разделе Панели оператора (HMI)
    Ответов: 2
    Последнее сообщение: 25.01.2018, 10:12
  2. Ответов: 5
    Последнее сообщение: 24.07.2017, 12:08
  3. Ответов: 0
    Последнее сообщение: 31.05.2017, 19:40
  4. Подтверждение нажатия
    от Carter в разделе Master SCADA 3
    Ответов: 9
    Последнее сообщение: 14.11.2016, 17:32
  5. Нечеткая логика в CoDeSys
    от Fallensky в разделе ПЛК1хх
    Ответов: 38
    Последнее сообщение: 09.07.2011, 14:01

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •