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

Тема: 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

  3. #3693

    По умолчанию

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

  4. #3694

    По умолчанию

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

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

    По умолчанию

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

  6. #3696

    По умолчанию

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

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

    По умолчанию

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

  8. #3698

    По умолчанию

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

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

    По умолчанию

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

  10. #3700

    По умолчанию

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

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

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

Похожие темы

  1. Панели оператора СП3xx. Вопросы и ответы
    от Мурат Ахриев в разделе Панели оператора (HMI)
    Ответов: 3177
    Последнее сообщение: Вчера, 12:47
  2. Панели оператора ИП320. Вопросы и ответы
    от automat в разделе Панели оператора (HMI)
    Ответов: 822
    Последнее сообщение: 20.11.2023, 17:48
  3. ИПП120. Вопросы и ответы
    от Р.Александр в разделе Программируемые реле
    Ответов: 245
    Последнее сообщение: 02.10.2022, 11:34
  4. Индикатор ИП120 , вопросы- ответы
    от rovki в разделе Программируемые реле
    Ответов: 56
    Последнее сообщение: 03.11.2017, 15:58
  5. Панели оператора СП270. Вопросы и ответы
    от Давидюк в разделе Панели оператора (HMI)
    Ответов: 930
    Последнее сообщение: 15.05.2017, 17:12

Ваши права

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