Страница 370 из 897 ПерваяПервая ... 270320360368369370371372380420470870 ... ПоследняяПоследняя
Показано с 3,691 по 3,700 из 8970

Тема: CODESYS V3.5. Вопросы и ответы

  1. #3691

    По умолчанию

    Спасибо, всем

  2. #3692

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Добрый день.
    У меня под руками нет конкретного примера (но такой алгоритм реализовывал Cs-Cs - возможно, он поделиться скриншотами или сниппетом кода из своего проекта).
    Общий принцип - по xDone или xError производите инкремент входа usiSlaveId и повторно вызывайте блок.
    Евгений Кислов Я их тебе когда-то слал. Ща найду, вставлю сюда.

    WhyNot В ПЛК немного не так, как в программировании на компах. Тут важно НЕ забывать о том, что каждая программа-задача повторяется бесконечно вся целиком.
    Поэтому если ты напишешь FOR с 1 по 254 - то он прокрутится за один вызов задачи и за этот вызов задачи ПЛК будет пытаться опросить разом всех.
    FORом должен служить сам вызов задачи, как уже подсказали: заводим некую переменную "Шаг", и каждый вызов задачи крутим её, опрашивая устройство с нужным номером шага.

    Вот что делал я для OCL. Скриншоты мутные, попробую пояснить принцип.
    Сначала я делал большую копипасту - для каждого шага. И закручивал это в большой CASE. Было много-много кода!
    OCL-MB-Request-1.gif OCL-MB-Request-2.gif
    Потом мне это захотелось оптимизировать. Я вспомнил про массивы объектов из СИ, и сделал себе структуру для описания одного запроса вместе с его FB SerialRequest:
    OCL-MB-Request-3.gif
    Потом объявил константный массив всех-всех запросов (Евгений Кислов - тут где-то помог твой ответ о том, как это делать и объявлять и на лету структуры инициализировать):
    OCL-MB-Request-4.gif
    А дальше оставалось завести ту самую переменную "Шаг" (ioMBReqStep) и увеличивать её на 1, если опрос был успешным:
    OCL-MB-Request-5.gif
    Последний раз редактировалось Cs-Cs; 26.01.2022 в 13:08. Причина: Опечаточки
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab

  3. #3693

    По умолчанию

    Спасибо за разъяснение!

  4. #3694

    По умолчанию

    Ребят всем привет!
    Как разбить строку WSTRING на байты и потом собрать обратно?

  5. #3695

    По умолчанию

    Цитата Сообщение от Игорь Владимирович Посмотреть сообщение
    Ребят всем привет!
    Как разбить строку WSTRING на байты и потом собрать обратно?
    Добрый день.
    Опишите конкретную задачу, которую вы хотите решить.

  6. #3696

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Добрый день.
    Опишите конкретную задачу, которую вы хотите решить.
    Предположим хочу передать посети. Те можно вордами разбить. И потом собрать обратно.

  7. #3697

    По умолчанию

    Цитата Сообщение от Игорь Владимирович Посмотреть сообщение
    Предположим хочу передать посети. Те можно вордами разбить. И потом собрать обратно.
    По какому протоколу? Каким образом вы будете настраивать обмен, через какие компоненты/библиотеки?

  8. #3698

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    По какому протоколу? Каким образом вы будете настраивать обмен, через какие компоненты/библиотеки?
    Да просто по модбасу. Это для примера.

  9. #3699

    По умолчанию

    Цитата Сообщение от Игорь Владимирович Посмотреть сообщение
    Да просто по модбасу. Это для примера.
    Если через компоненты в дереве проекта - используйте объединение (UNION), чтобы представить WSTRING как массив вордов (будьте внимательны с размерностью массива).
    Если через библиотеку OwenCommunication - то ничего преобразовывать не надо, под указатель на отправляемые данные можно сразу положить строку.

  10. #3700

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Если через компоненты в дереве проекта - используйте объединение (UNION), чтобы представить WSTRING как массив вордов (будьте внимательны с размерностью массива).
    Если через библиотеку OwenCommunication - то ничего преобразовывать не надо, под указатель на входные данные можно сразу положить строку.
    Мне бы подошла возможность указать ADR(переменная) и затем нужные байты забрать и в массив байтов все загнать. Ну и потом из массива байт собрать обратно

    Через Юнион я думал. Но уменя длинна разная. Где-то 3-4 символа (8байт) а где-то 50 символов. Уже 100байт. Вот думаю может через обращение к памяти можно байты забрать проще. И в массив все это собрать мне нужно. Сейчас имею данные за 1 раз свыше 10000 байт. Те 10килобайт
    Последний раз редактировалось Игорь Владимирович; 28.01.2022 в 19:32.

Страница 370 из 897 ПерваяПервая ... 270320360368369370371372380420470870 ... ПоследняяПоследняя

Похожие темы

  1. Панели оператора СП3xx. Вопросы и ответы
    от Мурат Ахриев в разделе СП3хх, СП270
    Ответов: 4328
    Последнее сообщение: Вчера, 17:44
  2. Ответов: 863
    Последнее сообщение: 02.03.2026, 17:13
  3. ИПП120. Вопросы и ответы
    от Р.Александр в разделе Программируемые реле
    Ответов: 273
    Последнее сообщение: 08.09.2025, 13:21
  4. Индикатор ИП120 , вопросы- ответы
    от rovki в разделе Программируемые реле
    Ответов: 56
    Последнее сообщение: 03.11.2017, 15:58
  5. Панели оператора СП270. Вопросы и ответы
    от Давидюк в разделе СП3хх, СП270
    Ответов: 930
    Последнее сообщение: 15.05.2017, 17:12

Ваши права

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