Современные технологии автоматизации» («СТА») —  журнал для квалифицированных специалистов по промышленной автоматизации Форум СТА — современные технологии автоматизации Домашняя страница
Домашняя страница форума CTA Домашняя страница форума CTA > II. АСУТП и SCADA > Программное обеспечение
  Активные темы Активные темы
  FAQ FAQ  Искать в форуме   Зарегистрироваться Зарегистрироваться  Вход в систему Вход в систему

CoDeSys фиксация переменных в режиме эмуляции

 Ответить Ответить
Автор
Сообщение
Pasa Смотреть выпадающим
Новичок
Новичок


Присоединился: 26 Июль 2013
Online Status: Offline
Публикации: 12
Свойства публикации Свойства публикации   Ответить, цитируя автора - Pasa Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: CoDeSys фиксация переменных в режиме эмуляции
    Опубликовано: 26 Июль 2013 18:36
Всем доброго времени суток.
Есть CodeSys 2.3.9.38.

Код на ST:

vvv:=1;
IF vvv= 1 THEN
tmp:=tmp+1;
END_IF

в режиме симуляции делаю фиксацию vvv=0.

Теперь если ходить по шагам, то в IF не заходит.
Если просто запустить, то идет инкремент tmp.
При этом среда четко показывает ,что vvv зафиксирована и ее значение всегда 0.

Подскажите в чем тут загвоздка? Почему разный результат в пошаговом режиме и при непрерывнрм выполенении?
Наверх
sanwork Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 08 Март 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 440
Свойства публикации Свойства публикации   Ответить, цитируя автора - sanwork Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 28 Июль 2013 18:45

Шаг в  CoDeSys (и ваще в автоматике) это не переход со строчки на строчку как в обычном программировании, а прокрутка целого цикла, т.е. если делать "шаг" без точек останова то будет однократно исполнен весь программный код.  Если надо идти по строчкам то ставится точка останова (breakpoint), но надо учесть что и после останова следущий шаг провернёт весь цикл и опять встанет на точку !  Можно поставить несколько точек, но отладка получится путанная потому что после каждой точки будет проскок на цикл.

Фиксация переменных делается совместно с точками останова, без точек она не будет действовать.  Ну ваще-то будет, но обновление фиксированных значений будет происходить только в начале цикла и дальше переменные принимают значения по программе.  То-есть переменная  vvv  в начале цикла примет 0 и после этого не действует, потом идёт  vvv := 1, вот это значение и будет держаться до нового присвоения - либо по ходу программы, либо до начала нового цикла.  Если хочется отследить переменную то надо поставить точку останова на вторую строчку  IF vvv = 1 THEN ..  в точке останова фиксированное значение обновится.

Ну а лучше всего не пользоваться отладочными средствами в боль-менее сложных программах, отладка циклических програм в режиме останова - дело очень мутное, особенно с несколькими задачами с разным временем цикла - клинит неимоверно !  Универсальное средство - использовать отладочный код, т.е. добавить такие инструкции которые выявят нужные места при циклической работе

С уважением, SAN

Наверх
Pasa Смотреть выпадающим
Новичок
Новичок


Присоединился: 26 Июль 2013
Online Status: Offline
Публикации: 12
Свойства публикации Свойства публикации   Ответить, цитируя автора - Pasa Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 29 Июль 2013 16:07
Правильно ли я понял....если  имеем код , к примеру:

а:=1;
b:=1;
c:=1;
d:=1;
e:=1;
f:=1;
......
x :=1;

мы остановились на строчке c:=1. Убрали все точки останова и сделали шаг(F10), то выполнятся все строчки начиная с (c:=1) и ниже до конца всей программы, после этого будет сделан вывод в реальное железо, цикл начнется сначала, будет сделан ввод с реального железа, программа дойдет до строки (d:=1)  и там остановится.

Я правильно понял?
Наверх
Pasa Смотреть выпадающим
Новичок
Новичок


Присоединился: 26 Июль 2013
Online Status: Offline
Публикации: 12
Свойства публикации Свойства публикации   Ответить, цитируя автора - Pasa Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 29 Июль 2013 16:12
Вопрос с фиксацией вы мне прояснили. Спасибо большое.
Наверх
 Ответить Ответить

Переход на форум Права доступа на форуме Смотреть выпадающим

Bulletin Board Software by Web Wiz Forums® version 9.64
Powered by Web Wiz Forums Free Express Edition
Copyright ©2001-2009 Web Wiz