Спасибо, заработало!
п.с. передал:)
Вид для печати
Спасибо, заработало!
п.с. передал:)
Привет.
Хочу быстро очистить все поля структуры.
Делаю так:
MEM.MemFill(pMemoryBlock:=ADR(stStruct), uiLength:=33, byFillValue:=0);
Но как правильно посчитать длину структуры?
И сделать так, чтобы это код был универсальным? Т.е. если я позже добавил полей к структуре, то код отрабатывался все равно правильно.
Спасибо.
Спасибо за ответы.
Евгений, а может это быть связано с тем, что функциональный блок устанавливает флаг xDone навсегда, а не на один цикл ПЛК?
Я смотрел стандартные блоки из библиотек (например, открытие порта). И там установка флага идет только на один цикл ПЛК.
Может и тут нужно установить это?
В этом проекте два POU. Один написан на CFC, второй на ST.
В обоих POU реализован одинаковый шаговый автомат CASE.
Алгоритм такой:
Шаг1. Некий функциональный блок. Работает 1 секунду. Далее устанавливает флаг xDone. Автомат переключается на следующий шаг.
Шаг2. Некий функциональный блок. Работает 1 секунду. Далее устанавливает флаг xDone. Автомат переключается на следующий шаг.
Шаг3. Некий функциональный блок. Работает 1 секунду. Далее устанавливает флаг xDone. Автомат переключается на следующий шаг.
Шаг4. Увеличивается счетчик циклов на 1. И перевод указателя автомата на шаг 1.
Получается, что счетчик циклов должен увеличиваться на 1 за 3 секунды.
Но в POU на CFC это не так. Там счетчик циклов бежит существеннее быстрее.
А в POU на ST отрабатывает правильно.
Почему так?