Страница 7 из 13 ПерваяПервая ... 56789 ... ПоследняяПоследняя
Показано с 61 по 70 из 126

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

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

    По умолчанию

    На мой взгляд - эксперимент наглядно показывает, что наблюдаемый эффект никак не связан с железом и к СПК тут вопросов нет.
    Остаются две момента, которые могут влиять на происходящее:
    - какие-то особенности рантайма CODESYS в плане работы с COM-портом
    - пользовательский код

    Я хотел бы обратить внимание, что OCL - это обертка над библиотекой CAA SerialCom, которая является асинхронной.
    Таким образом, выполнение каждого ФБ MB_SerialRequest занимает как минимум 2 цикла контроллера (на практике - их может быть больше).
    Если предположить, что в проекте 10 запросов Modbus (по 2 на каждый модуль с DI и по одному на каждый модуль с DO), и они вызываются в задаче с заданным интервалом вызова T#10ms - то период полного опроса шины в принципе не может быть меньше, чем 200 мс (больше - может). Поэтому если длительность нажатия на кнопку меньше, чем 200 мс - то оно может быть пропущено, и это не должно вызывать удивления.

    Переписать обмен через синхронную SysCom - совершенно разумная идея в рамках проводимого эксперимента.

  2. #62

    По умолчанию

    Итак, докладываю! Я натравил Saleae (простой и дешманский логический анализатор БЕЗ развязки по GND - будьте осторожны!) на линию.
    Видео с моими путанными комментариями лежит тут: https://cs-cs.net/ExxChange/MAH01879...CodeSys-v3.MP4
    Файл с данными логического анализатора лежит тут: https://cs-cs.net/ExxChange/CodeSys-...5200.logicdata
    Вы можете найти в сети бесплатную программу Saleae Logic (на сайте производителя https://www.saleae.com/ru/downloads/) и посмотреть этот файл прямо в ней без самого анализатора. Можно увеличивать его, подключать разные анализаторы потока данных и смотреть прям байты, которые в линии ходят.

    Комментари путанные, потому что я на телу путался переводить DEC-HEX, а я в этом не спец.
    Даю кучу скирншотов и пояснений.
    1. Весь поток данных в линии выглядит таким образом: Saleae-1-AllRequests.gif - идёт куча запросов-ответов к модулям IO.

    2. Мы знаем, что я читаю и что пишу, а именно:
    а) Запрос к модулю ввода на чтение битовой маски (два регистра, модуль на 32 канала)
    б) Запрос к тому же модулю ввода на чтение 32х регистров счётчиков входов
    в) Запрос к модулю вывода на запись битовой маски (два регистра)
    Адреса модулей:
    10 (0x0A) = Входы 1 (32 канала)
    12 (0x0C) = Входы 2 (32 канала)
    14 (0x0E) = Входы 3 (32 канала)
    20 (0x14) = ВЫходы 1 (32 канала)
    22 (0x16) = ВЫходы 2 (32 канала)
    23 (0x18) = ВЫходы 3 (16 каналов)

    3. Вот мы видим, увеличив график, что у нас так и есть: запрос и короткий ответ (битовая маска), а потом запрос и длинный ответ (счётчики входов): Saleae-2-IOShortLong.gif

    4. Окей, посмотрим, что же там такое есть: Saleae-3-IOReadBitMask.gif
    Ага! Это мы шлём модулю с адресом 0x0E (14) команду 0x03 - чтение регистров. В количестве двух штук. Битовую маску читаем, значится =)

    5. Через 4,74 миллисекунды модуль нам отвечает: Saleae-4-IOAnswerTime.gif
    То есть, сам модуль отвечает быстро и работает хорошо.

    6. Вот его ответ: Saleae-5-IOBitmaskAnswer.gif - он нам сказал, что пойдут 4 байта данных (так как регистр занимает два байта, а мы читаем два регистра). И так как на этом модуле никакие кнопки сейчас не висят, и ни один вход его не активен - то бвся битовая маска у нас - нули.

    Тут мы убедились, что Запрос-Ответ были именно к модулю вводов, и что мы читали именно битовую маску, и что модуль ответил за 4,74 милисекунды.

    7. А теперь - ФАРШ! Дальше CodeSys v3 (что на виртуальном, что на физическом ПЛК), зараза, ЖДЁТ аж 73 мсек, и потом начинает опрашивать следующий модуль: Saleae-6-IONextRequest.gif

    8. Модуль, не будь дурак =), отвечает опять быстро - за 5,154 мсек: Saleae-7-IONextAnswer.gif
    Время ответа чуть больше, и я вангую, что оно больше из-за того что в прошивке модуля в этот момент в буфер ответа копиурется большооой массив байт )) То мы отвечали четырьмя байтами, а то аж сразу сорока байтами. Вот время на подготовку ответа модулем и стало больше.

    9. Ну и дальше всё то же самое: Saleae-8-IONextRequest.gif - везде эти паузы появляются.

    При этом напоминаю, что сейчас опрос я веду через OCL и, как Евгений Кислов говорил, тут никаких интервалов между фреймами быть не должно.
    Да и задача опроса у нас выполнялась на ПЛК в среднем за 650 микросекунд - то есть, по сравнению в ответами модулей, адски быстро.

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

    ЗЫ. Евгений Кислов, тема уже перешла в "... как работает Modbus в CDS3" =)) Правда, я собирался набрать материал на пост, про который тебе всё говорю. Но тут неожиданно получается, что есть живой материал вот прям сейчас
    Может тему уже в раздел по CodeSys v3 переместить? И к названию добавить что-то про скорость работы Modbus?

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Переписать обмен через синхронную SysCom - совершенно разумная идея в рамках проводимого эксперимента.
    Ой! Новые знания... а есть ли документация про это? Я перепишу!

    Посмотрел на либу... ах ты ж! Это то, чего я боялся - что придётся сами запросы Modbus с нуля составлять... на уровне байтов! Эхх!
    Ну, "Ныряй, здесь неглубоко" ©

    Пойду погуляю, приду - буду кодить!
    Последний раз редактировалось Cs-Cs; 20.12.2020 в 13:36.

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

    По умолчанию

    А можно забыть про "интервал вызова" а просто каждый следующий сразу после окончания транзакции предыдущего ?
    Конечно, можно - через SysCom и его синхронные вызовы.
    Следующая тема на форуме, видимо, будет "что-то при обрыве линии RS-485 визуализация очень сильно тормозит, как будто ее что-то блокирует".
    Я согласен с вами в том ключе, что в ряде конкретных случаев обмен через синхронные функции в CDS V3.5 - единственный способ решения поставленных задач.
    Но на практике - эти задачи обычно рождаются из изначально неправильного подхода при проектировании системы автоматизации.


    Надо сказать, 10 мс я взял из умозрительных соображений (так обычно по дефолту) - какие интервалы и приоритеты задач у Cs-Cs мы пока что не знаем.

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

    По умолчанию

    Может тему уже в раздел по CodeSys v3 переместить? И к названию добавить что-то про скорость работы Modbus?
    Я пока повременю с этим, потому что она касается не конкретных особенностей контроллеров ОВЕН, а более глобальных вопросов работы обмена в CODESYS V3.5
    Но когда результат обсуждений будет формализован в виде статьи - то с радостью добавлю.

    Это то, чего я боялся - что придётся сами запросы Modbus с нуля составлять... на уровне байтов! Эхх!
    В рамках теста - можно просто захардкодить запросы, чтобы быстрее получить результаты эксперимента.

  5. #65

    По умолчанию

    capzap Отвечаю согласно PDFничку:
    1. Данного компонента у меня НЕТ =) Я веду опрос через OCL (OwenComminucation).
    До этого ставил опыты с временем цикла в 5 мсек, в 8 мсек и в 10-20 мсек. На 5 и на 8 мсек ошибки начинают валиться пачками, а на 10-20 работает нормально, но тормозит ЕЩЁ сильнее.
    2. Также, я не использую штатный конфигуратор для опроса сейчас.
    До этого время опроса DI стояло 20 мсек, DO тоже 20 мсек.

    Валенок Терпеливо. Читающий да найдёт. Только что же писал про модули, когда давал картинки с логического анализатора и писал адреса модулей. Все модули серии Мх110.
    Если 1й гуано - то дальше ловить нечего. Это как-то проверили ?
    *граммофонным голосом* ПРОВЕРЯЕМ. Оставайтесь на линии =))

    Евгений Кислов Нет, такой темы не будет. Я ещё не настолько сильно отупел, и про асинхронные понимаю.
    Так как это канал связи внутри щита, то обрыв связи означает то, что щит и не должен работать ВООБЩЕ. Так что даже если всё будет тормозить - это так и так полное ЧП.

    В рамках теста - можно просто захардкодить запросы, чтобы быстрее получить результаты эксперимента
    Да, всё. Не пойду гулять. Завариваю чай и ныряю. Не буду хардкодить, сейчас попробую сразу нормальный опрашиватель написать.

    Ну про неправильный подход я не согласен. Возможно, неправильный подход - это делать автоматизацию квартир и коттеджей на СПкшках, но это сейчас лучшее на рынке из того, что есть. У других производителей или Web кривой, или среды разработки мутные, или железо плохое.
    Поэтому я хочу выжать максимум из СПК.


    Дополнение. Побаловался с ПЛК110. Вот там всё гораздо веселее.
    Вот видео: https://cs-cs.net/ExxChange/MAH01880...110-Modbus.MP4
    Вот файл анализатора (кривоватый): https://cs-cs.net/ExxChange/CodeSys-...5200.logicdata
    Saleae-CDS-v2-1.gif Saleae-CDS-v2-2.gif
    Тут запросы идут через 10-12 мсек, а ответы модулей такие же как и раньше - за 4-5 мсек.

    Когда я погружался в ПЛК, то я начинал со 110ых. И там всё как раз летало вовсю. И поэтому то, что CDS 3 опрашивает устройства медленнее, для меня было открытием в своё время.

  6. #66
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,583

    По умолчанию

    Мое ухо одного резануло то, что одним запросом читается маска, а вторым запросом счетчики ? не?
    Просто одним запросом прочитать весь модуль не бывает ?

  7. #67
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,583

    По умолчанию

    Валенок да как не? MB110-32ДН Битовая маска значений входов регистры 0x63 и 0х64 и далее с 0x65 пошли счетчики входов.

    Как не? опять что-то поменялось в Датском (Овеновском) королевстве ?

  8. #68

    По умолчанию

    melkiy Про прочитать одним запросом. Угу! Это - инерция мышления. Когда-то привык, что в некоторых (не ОВЕНских) модулях регистры могут идти не подряд, так и делал. Перетряхну на один общий запрос, конечно.

    capzap Штатный работает ещё медленнее, чем OCL. Поэтому на OCL и перешёл.

    Валенок Мне сказали, что ты всех троллишь. Окей, вот, держи список:
    МВ110-32.ДН = 3 штуки. Читаем битовую маску и счётчики входов (количество зависит от модуля: где-то все 32, где-то только 12, где-то 16)
    МУ110-32.Р = 2 штуки. Пишем битовую маску выходов
    МУ110-16.Р = 1 штука. Пишем битовую маску выходов

    Порт ща будем юзать. То есть ээ... собак учить. Но не плавать, а летать. Методом "засунем петарду в собаку и посмотрим, полетит или лопнет".

  9. #69

    По умолчанию

    capzap А я там писал. Сейчас, найду, повторю:
    * На интервал между фреймами пробовал ставить 5-10-15-20 мсек. На 5 мсек всё работает быстро, но валятся ошибки таймаутов. На 20 мсек всё работает медленно, но ошибок не валится.
    * Сама скорость опроса каналов стоит по 20 мсек на канал.

  10. #70

    По умолчанию

    capzap Не понял. Ну 20 мсек на канал. И что тут не так?
    Как тогда это работает в CDS v3 (я это сам собрался исследовать, но вдруг уже есть ответ)?
    Вот положим у меня не туева хуча, а всего лишь шесть модулей. Это не 20 модулей же.
    Как тогда мне время опроса канала ставить? Считать руками, что ли? По идее этим сам планировщик опроса CDS должен заниматься.

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

Похожие темы

  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

Ваши права

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