Страница 520 из 711 ПерваяПервая ... 20420470510518519520521522530570620 ... ПоследняяПоследняя
Показано с 5,191 по 5,200 из 7101

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

  1. #5191

    По умолчанию

    Спасибо, заработало!
    п.с. передал

  2. #5192

    По умолчанию

    Привет.
    Хочу быстро очистить все поля структуры.
    Делаю так:

    MEM.MemFill(pMemoryBlock:=ADR(stStruct), uiLength:=33, byFillValue:=0);

    Но как правильно посчитать длину структуры?
    И сделать так, чтобы это код был универсальным? Т.е. если я позже добавил полей к структуре, то код отрабатывался все равно правильно.
    Спасибо.

  3. #5193
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,248

    По умолчанию

    Цитата Сообщение от ВладОвен Посмотреть сообщение
    Привет.
    Хочу быстро очистить все поля структуры.
    Делаю так:

    MEM.MemFill(pMemoryBlock:=ADR(stStruct), uiLength:=33, byFillValue:=0);

    Но как правильно посчитать длину структуры?
    И сделать так, чтобы это код был универсальным? Т.е. если я позже добавил полей к структуре, то код отрабатывался все равно правильно.
    Спасибо.
    создайте в константах переменную с этой же структурой ("обнуленную") и когда нужно присваивайте рабочей и обойдетесь без всяких MEMFILL
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

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

    По умолчанию

    Цитата Сообщение от ВладОвен Посмотреть сообщение
    Привет.
    Хочу быстро очистить все поля структуры.
    Делаю так:

    MEM.MemFill(pMemoryBlock:=ADR(stStruct), uiLength:=33, byFillValue:=0);

    Но как правильно посчитать длину структуры?
    И сделать так, чтобы это код был универсальным? Т.е. если я позже добавил полей к структуре, то код отрабатывался все равно правильно.
    Спасибо.
    Код:
    MEM.MemFill(pMemoryBlock:=ADR(stStruct), uiLength:=SIZEOF(stStruct), byFillValue:=0);

  5. #5195

    По умолчанию

    Спасибо за ответы.

  6. #5196

    По умолчанию

    Цитата Сообщение от ВладОвен Посмотреть сообщение
    Привет.
    Не могу понять почему логика CFC работает именно так.
    См. рисунок.

    Вложение 65920
    Евгений, а может это быть связано с тем, что функциональный блок устанавливает флаг xDone навсегда, а не на один цикл ПЛК?
    Я смотрел стандартные блоки из библиотек (например, открытие порта). И там установка флага идет только на один цикл ПЛК.
    Может и тут нужно установить это?

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

    По умолчанию

    Цитата Сообщение от ВладОвен Посмотреть сообщение
    Евгений, а может это быть связано с тем, что функциональный блок устанавливает флаг xDone навсегда, а не на один цикл ПЛК?
    Я смотрел стандартные блоки из библиотек (например, открытие порта). И там установка флага идет только на один цикл ПЛК.
    Может и тут нужно установить это?
    https://owen.ru/forum/showthread.php...l=1#post401227

  8. #5198

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Вот пробный проект.
    Код на CFC работает неправильно.
    Код на ST работает правильно.
    Вложения Вложения

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

    По умолчанию

    Цитата Сообщение от ВладОвен Посмотреть сообщение
    Вот пробный проект.
    Код на CFC работает неправильно.
    Код на ST работает правильно.
    Куда мне в нем нужно смотреть, чтобы увидеть, что "код на CFC работает неправильно"?

  10. #5200

    По умолчанию

    Цитата Сообщение от Евгений Кислов Посмотреть сообщение
    Куда мне в нем нужно смотреть, чтобы увидеть, что "код на CFC работает неправильно"?
    В этом проекте два POU. Один написан на CFC, второй на ST.
    В обоих POU реализован одинаковый шаговый автомат CASE.

    Алгоритм такой:

    Шаг1. Некий функциональный блок. Работает 1 секунду. Далее устанавливает флаг xDone. Автомат переключается на следующий шаг.
    Шаг2. Некий функциональный блок. Работает 1 секунду. Далее устанавливает флаг xDone. Автомат переключается на следующий шаг.
    Шаг3. Некий функциональный блок. Работает 1 секунду. Далее устанавливает флаг xDone. Автомат переключается на следующий шаг.
    Шаг4. Увеличивается счетчик циклов на 1. И перевод указателя автомата на шаг 1.

    Получается, что счетчик циклов должен увеличиваться на 1 за 3 секунды.

    Но в POU на CFC это не так. Там счетчик циклов бежит существеннее быстрее.
    А в POU на ST отрабатывает правильно.

    Почему так?

Страница 520 из 711 ПерваяПервая ... 20420470510518519520521522530570620 ... ПоследняяПоследняя

Похожие темы

  1. Панели оператора СП3xx. Вопросы и ответы
    от Мурат Ахриев в разделе Панели оператора (HMI)
    Ответов: 3197
    Последнее сообщение: 23.04.2024, 13:45
  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

Ваши права

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