PDA

Просмотр полной версии : Отображение значения переменной в окне отладки



aaaSashaMGGU
06.02.2024, 13:06
Добрый день!
Моя ситуация чуть сложнее, я её упрощу на таком примере:
Вот есть у меня обычная глобальная переменная qqq: bool;
Есть у меня самый обычный таск на 10мс
Где-то в начале таска, в его первых программах, я присваиваю qqq := TRUE;
Где-то в конце таска, в его последних программах, я присваиваю qqq := FALSE;

Я ожидаю увидеть qqq = FALSE всегда, в любой ситуации
Но на мнемосхеме (и в окне отладки) мой qqq моргает то TRUE, то FALSE
Так и должно быть? Что я делаю не так?
Спасибо

Евгений Кислов
06.02.2024, 13:29
Добрый день!
Моя ситуация чуть сложнее, я её упрощу на таком примере:
Вот есть у меня обычная глобальная переменная qqq: bool;
Есть у меня самый обычный таск на 10мс
Где-то в начале таска, в его первых программах, я присваиваю qqq := TRUE;
Где-то в конце таска, в его последних программах, я присваиваю qqq := FALSE;

Я ожидаю увидеть qqq = FALSE всегда, в любой ситуации
Но на мнемосхеме (и в окне отладки) мой qqq моргает то TRUE, то FALSE
Так и должно быть? Что я делаю не так?
Спасибо

Добрый день.
В CODESYS V3.5 реализована вытесняющая многозадачность, и содержимое задач выполняется не "от начала до конца без разрывов", а "отрезками" (слайсами).
Вероятно, вы наблюдаете связанный с этим эффект - задача визуализации периодически выполняется в тот момент, когда значение вашей переменной еще в TRUE.

aaaSashaMGGU
06.02.2024, 13:34
Добрый день.
В CODESYS V3.5 реализована вытесняющая многозадачность, и содержимое задача выполняется не "от начала до конца без разрывов", а "отрезками" (слайсами).
Вероятно, вы наблюдаете связанный с этим эффект - задача визуализации периодически выполняется в тот момент, когда значение вашей переменной еще в TRUE.

Хм, я надеюсь, таким макаром на уже живом Modbus-е оно моргать не будет?
Ведь, по этой же логике, таск Modbus-а будет забирать у моего таска то true, то false

Евгений Кислов
06.02.2024, 13:36
Хм, я надеюсь, таким макаром на уже живом Modbus-е оно моргать не будет?
Ведь, по этой же логике, таск Modbus-а будет забирать у моего таска то true, то false

Вы планируете привязать работу Modbus к отдельному таску?

aaaSashaMGGU
06.02.2024, 13:41
Вы планируете привязать работу Modbus к отдельному таску?

Нет, Modbus самый обычный. Но qqq может ведь оказаться и переменной, уходящей на 485-Modbus-модуль.
В этом случае она будет моргать уже там?
Или Modbus работает как-то иначе?

Евгений Кислов
06.02.2024, 14:09
Нет, Modbus самый обычный. Но qqq может ведь оказаться и переменной, уходящей на 485-Modbus-модуль.
В этом случае она будет моргать уже там?
Или Modbus работает как-то иначе?

По умолчанию Modbus выполняется в контексте задачи MainTask - если переменная обрабатывается в ней, то проблем не возникнет.

aaaSashaMGGU
06.02.2024, 16:16
По умолчанию Modbus выполняется в контексте задачи MainTask - если переменная обрабатывается в ней, то проблем не возникнет.

Это надо специально выбирать или нет?
73318

Вот здесь нужно выбрать правильно?
73319

Или здесь?
73320
73321

Евгений Кислов
06.02.2024, 16:36
Лучше нигде ничего не выбирать - тогда как раз с Modbus всё будет нормально в подавляющем большинстве случаев.