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

Таймеры CoDeSys

 Ответить Ответить Страница  <1 56789 11>
Автор
Сообщение
sanwork Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 08 Март 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 440
Свойства публикации Свойства публикации   Ответить, цитируя автора - sanwork Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: Таймеры CoDeSys
    Опубликовано: 06 Апрель 2007 21:06

PS.

Вычисления в CoDeSys выполняются не матричными уравнениями как в SPICE моделировании радиосхем, а простыми - линейными. Можно набросать какую-нибудь блок-схему, преобразовать в текст  IL , и терпеливо поизучать в каком порядке выполняются логические уравнения, и расположены в них переменные с неизвестными.  В еще большее заблуждение можно впасть при использовании динамических элементов с обратными связями, например - триггеры.

Я это излагаю за тем, чтобы кто-то сразу принял бы верный тон, начиная творить в CoDeSys.

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

 

Наверх
_IP_ Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 29 Январь 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 293
Свойства публикации Свойства публикации   Ответить, цитируя автора - _IP_ Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 07 Апрель 2007 13:54

Первоначально опубликовано Mixer

Ok. Тогда здесь вас мучить буду дальше...

В смысле, что надо русский? Открыть нет проблем, нужен только модератор доброволец (ежедневная, кропотливая бесплатная работа).

Первоначально опубликовано Mixer

Теперь делаем b_temp=TRUE...Вводим вручную...подтверждаем…

Тут надо исхитриться строго одновременно ставить оба входа, иначе блок успевает сработать 1 раз и уже измененное значение X2 правильно присваивается само себе. Сделайте другую переменную X3 на вход и все станет на места.

Первоначально опубликовано sanwork

Все дело в том, что блок-схема не отражает реальную электрическую схему. За наглядным изображением кроется обман зрения...

Это же очевидно, просто нужно думать, как ставить порядок выполнения блоков в CFC.

Кстати напоминаю про конференцию! Пора записываться!
По опыту прежних лет основной вал заявок приходит за неделю, когда уже все нормальные номера в гостиницах заняты.

Igor Petrov
Наверх
Mixer Смотреть выпадающим
Участник
Участник


Присоединился: 02 Сентябрь 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 54
Свойства публикации Свойства публикации   Ответить, цитируя автора - Mixer Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 09 Апрель 2007 08:39
ясно. Спасибо
Наверх
Mixer Смотреть выпадающим
Участник
Участник


Присоединился: 02 Сентябрь 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 54
Свойства публикации Свойства публикации   Ответить, цитируя автора - Mixer Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 23 Апрель 2007 10:01
Первоначально опубликовано sanwork

PS.Можно набросать какую-нибудь блок-схему, преобразовать в текст  IL , и терпеливо поизучать в каком порядке выполняются логические уравнения, и расположены в них переменные с неизвестными.



вот я преобразовал SEL в LD, и что я вижу - там тот же SEL. А как он будет выполняться? За один цикл или он в свою очередь тоже "подразумевает", что за ним там целая программа выполняется? А вообще где то указывется за сколько тактов можно ждать на выходе функционального блока ответа?
Наверх
sanwork Смотреть выпадающим
Действительный член
Действительный член


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

Ну вот - дальше LD перевести в IL, то-есть в последовательность строчек текста. Лучше бы конечно в ST, но такого преобразования нет. Смысл тут в том, что последующие уравнения используют результаты предыдущих, которын в свою очередь еще не готовы, и т.д. Очень наглядно это видно на простейшем триггере из двух И-НЕ. По идее он должен быть полностью симметричным, но после пары шагов (в ручном режиме) становится ясно, что модель не совпадает с реальным прототипом.
В самом общем случае логическое равновесие наступает при количестве проходов не меньше числа уравнений, то-есть элементов. При определенном порядке, истинное состояние может установиться и при меньшем числе проходов, вплоть до одного. Но главное, что этот процесс не гарантирован. Если пяток элементов еще можно проработать, то схемы с десятками элементов, и еще со сложными обратными связями, проконтролировать невозможно. Тут прибегают к простому принципу - отрабатывать по кускам.

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

 

Наверх
Petrov Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 15 Январь 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 805
Свойства публикации Свойства публикации   Ответить, цитируя автора - Petrov Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 14 Май 2007 19:27

К _IP_:

А вот возник вопрос такой: известно ли как устроена в CoDeSys функция TIME? Просто возвращает содержимое какого-то регистра или может быть вдруг какие-то прерывания обрабатываются или еще что?

 

Наверх
Petrov Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 15 Январь 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 805
Свойства публикации Свойства публикации   Ответить, цитируя автора - Petrov Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 14 Май 2007 19:39

А если это просто регистр, то как часто обновляется? Независимо или поцикленно?

Наверх
_IP_ Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 29 Январь 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 293
Свойства публикации Свойства публикации   Ответить, цитируя автора - _IP_ Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 15 Май 2007 15:39

Что за функция TIME, в смысле стандартные МЭК функц. блоки таймеров TON, TOF?

Они работают внутри так: в контроллере есть 1 аппаратный таймер. Экземпляров функц. блоков TON, TOF может быть неограниченно много. Каждый из них имеет внутри переменную, по которой 'засекает время' при старте. Далее при каждом очередном вызове он проверяет, вышло ли заданное время или нет. Т.е. прежде чем проверить изменение выхода таймера, его нужно обязательно перед этим вызвать. Если блок не вызывать  (например, обойти его в программе), то время все равно идет. В целом стандартный таймер позволяет определить что время уже вышло, но не гарантирует, как давно оно вышло. Чтобы поймать этот момент с нужной точностью нужно с соответствующей частотой его опрашивать.

По умолчанию, аппаратный таймер = регистр, который обновляется независимо по прерыванию через 1мс. Должно быть так.
Однако, есть в природе несколько ПЛК с CoDeSys в которых внутренний регистр таймера не обновляется между циклами ПЛК. (Изготовитель ПЛК может сделать так для повышения быстродействия или др. причине.) Т.е. этот момент лучше проверить на конкретной модели ПЛК: сделать цикл while  с условием выхода по таймеру, если завис – то независимого обновления нет.

Igor Petrov
Наверх
Petrov Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 15 Январь 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 805
Свойства публикации Свойства публикации   Ответить, цитируя автора - Petrov Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 15 Май 2007 15:42
Первоначально опубликовано _IP_

Что за функция TIME, в смысле стандартные МЭК функц. блоки таймеров TON, TOF?

Есть там функция TIME();

Наверх
_IP_ Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 29 Январь 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 293
Свойства публикации Свойства публикации   Ответить, цитируя автора - _IP_ Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 15 Май 2007 15:59

Первоначально опубликовано Petrov

Есть там функция TIME();

Да, она просто возвращает значение вышеописанного регистра. Практически это время с момента рестарта.

Igor Petrov
Наверх
 Ответить Ответить Страница  <1 56789 11>

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

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