PDA

Просмотр полной версии : Таймеры в режиме Simulation



alex1963
04.12.2008, 16:39
Странно как-то работает режим симуляции в Кодесис, создается впечатление, что таймеры продолжают тикать, даже когда программа остановлена отладчиком. Всё немедленно вылетает на ветки таймаутов. Это только у меня такой глюк или так оно по природе? И что толку от такой симуляции, если нужно успевать дергать входы в реальном времени?

Игорь Петров
04.12.2008, 17:42
Это глюк в голове и природе, претензии к Всевышнему. Время вообще остановить нельзя. Стандартные таймеры МЭК засекают время по часам (как и мы) и смотрят когда будет пора срабатывать. При останове программы системные часы продолжают идти. Это естественно.
В принципе, конечно часы можно было бы и останавливать. Но, при выполнении по шагам было бы зверски неудобно ждать таймеры. Это ж сколько раз надо было нажать кнопку шаг, если контроллер запускается на доли микросекунд и опять ждет нажатия кнопки. С другой стороны кажется логичным, чтобы точке останова таймеры стояли. Короче это старый спорный вопрос, единого мнения по нему нет.
Симулятор ориентирован на грубую проверку последовательности выполнения программы и не более того! Время цикла у него не такое как в контроллере и уже только по этому никакие динамические эффекты в нем отлаживать нельзя.
С помощью фиксации переменных можно зажать выходы таймеров и управлять их работой так, как надо при отладке. См. также 'Менеджер просмотра'. Им можно подготовить набор замороженных состояний всей программы и приводить ее по своему желанию куда надо моментально.

alex1963
04.12.2008, 18:05
Вообще-то во всех симуляторах по определению существует модельное время. В хорошем симуляторе моделируется время каждой инструкции и операции, так что, например, время цикла, время АЦП, время доставки каждого байта по сети и т. п. получается точным - в единицах модельного времени. Ну, да ладно, придется приспосабливаться к тому, что есть...

Филоненко Владислав
04.12.2008, 19:51
Это не ПК, это ПЛК. У каждого ПЛК есть свои аппаратные особенности, поэтому, ИМХО, сколь-нибудь глубокую отладку надо делать всегда на железе. Симулятор хорош для обучения и отладки аппаратно-независимых алгоритмов. Таймеры к ним не относятся.