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

Таймеры CoDeSys

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


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

Приветствую.
Да, я хотел бы изложить некоторые соображения по вопросам программирования для систем Реального времени. Известные методы в сочетании с собственными исследованиями.
Где и как можно опубликовать статью?  Каковы требования к материалу - об'ем, форма и т.д. ?

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

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


Присоединился: 27 Апрель 2005
Категория: Ukraine
Online Status: Offline
Публикации: 81
Свойства публикации Свойства публикации   Ответить, цитируя автора - AlexZ Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 29 Май 2007 10:50

Прочитав вышеприведенную дискуссию, вспомнил ситуацию почти 20-летней давности. Тогда я работал в г. Северодонецк НИИУВМ. Я разрабатывал отладчик микрокода. На этом микрокоде программировались процессорный и другие модули. Так как "микрокодистов" не хватало, поручили писать программы на микрокоде обычным программистам ( а точнее -ткам). Вот и у них возникали точно такие же проблемы: почему после останова все зависает и так далее. С этим они шли ко мне. Когда я обратился к главному разработчику, он мне ответил: "Ты свой отладчик изменить не сможешь и мы архитектуру поменять не сможем, просто эти программы должны писать другие люди, которые понимают где можно ставить точки останова".

Ничего вам это не напоминает?

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


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

По поводу загромождения кода отладочными кусками: Это естественно. Отладчик дает только базовый набор инструментов, они работают эффективно только в умелых руках . В каждой программе есть своя специфика и соответственно свои узкие места и разные ключевые данные. В CoDeSys V2 нет директив условной трансляции, чтобы включать/выключать отладочные фрагменты.  Однако, это удобно делать через биб-ки. Т.е. объединяем ключевые POU в биб-ку и делаем 2 версии: отладочную и рабочую. В менеджере библиотек подключить при компиляции нужную можно 'легким движением руки'.

ИМХО Любой POU нужно писать так, как будто он работает во враждебном окружении (концепция защитного программирования). Т.е. может получить на вход совершенно 'дикие' данные, контроль на допустимость лишним не будет. Кроме того,  ОЗУ вполне имеет шанс сбойнуть. Программа при этом не должна с ума сойти, а постепенно сама выправить данные. Например, в циклах не стоит писать '=' в качестве условия окончания, лучше '>' или '<'. Если вдруг переменная получает нереальное значение, то надо установить ее в некое разумное значение. Все это совсем не сложно, нужно просто думать об этом и выработать привычку, что достигается практикой. Ну и выуживается из программ и публикаций опытных людей

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

Где и как можно опубликовать статью?  Каковы требования к материалу - об'ем, форма и т.д. ?

Отличная мысль! Было бы очень интересно.
Написать надо так, чтобы самому понравилось. Обязательно дать почитать 2-3 людям и учесть их критику. Влезать в некий размер не стоит и стремиться. Разбивка на части и красивая верстка (даже не пытайтесь) – это задача профессионалов редакции.
1) Поскольку данный форум относится к журналу СТА, то в первую очередь я бы обратил внимание на него. По поводу требований к подготовке материалов – вопросы к редакции, они с удовольствием ответят. +
раздел же есть специальный на форуме.
2) Посмотрите на журнал
ПАСУК, который печатает весьма разнообразные и часто неординарные статьи. Его редакторы практически не правят авторский текст (не всегда это хорошо), который обязан сам отвечать за свой труд.
3) Вообще журналов сейчас уже стало больше чем авторов. Т.е. найти 'свой' вообще не вопрос.

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

Присоединился: 19 Апрель 2006
Online Status: Offline
Публикации: 136
Свойства публикации Свойства публикации   Ответить, цитируя автора - Chupakabra2 Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 19 Июнь 2007 15:21

Хочу продолжить тему следующим вопросом.

Создал я на базе двух блоков TP генераторы коротких импульсов, которые тактируют работу (EN/ENO) инвертеров двух переменных. У TP1 PT1=T#2s , у второго PT2=T#4s. При запуске программы генерируется 2 меандра со скважностью 50% и периодом 2*PT1 и 2*PT2. В начале все синхронно переключается в одной фазе, а потом со временем возникает какая-то рассинхронизация (смещение фазы)... Ума не приложу в чем дело?

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


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

...генерируется 2 меандра со скважностью 50% и периодом 2*PT1 и 2*PT2. В начале все синхронно переключается в одной фазе, а потом со временем возникает какая-то рассинхронизация (смещение фазы)...

Возможно, перезапуски таймеров происходят не абсолютно одновременно и эта мизерная разница аккумулируется ими. Я бы после PT1 поставил счетчик/делитель импульсов на 2 вместо PT2 чтобы все было гарантировано четко.

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

Присоединился: 19 Апрель 2006
Online Status: Offline
Публикации: 136
Свойства публикации Свойства публикации   Ответить, цитируя автора - Chupakabra2 Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 20 Июнь 2007 15:26
Первоначально опубликовано _IP_

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

...генерируется 2 меандра со скважностью 50% и периодом 2*PT1 и 2*PT2. В начале все синхронно переключается в одной фазе, а потом со временем возникает какая-то рассинхронизация (смещение фазы)...

Возможно, перезапуски таймеров происходят не абсолютно одновременно и эта мизерная разница аккумулируется ими. Я бы после PT1 поставил счетчик/делитель импульсов на 2 вместо PT2 чтобы все было гарантировано четко.

Посидел, подумал еще. И понял, что на сброс генератора импульсов тратится 1 цикл (т.е. в моем случае 100ms), который я не учел, выбирая период. Привильно для входа PT блока TP будет задавать время в виде (T#Ns -T#100ms) , где T#100ms- это период рабочего цикла котроллера! 

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


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

А может использовать не два отдельных генератора, а ОДИН формирователь общей сложной последовательности - практикуется довольно часто, реализуется довольно просто и многими способами (хотя я не в курсе конкретной задачи)

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

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


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

А может использовать не два отдельных генератора, а ОДИН формирователь общей сложной последовательности...

Логично, это я и предлагал: 1 таймер + делитель.

 

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


Присоединился: 10 Октябрь 2007
Категория: Russian Federation
Online Status: Offline
Публикации: 33
Свойства публикации Свойства публикации   Ответить, цитируя автора - waldius Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 27 Ноябрь 2007 22:07

Еще вопрос о таймерах:

Требуется чтобы определенное событие проиходило каждые 8мс, как это сделать с помощью таймеров кодесиса? Прерываний я так понял никаких нет по таймерам как например в контроллерах Атмел...

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


Присоединился: 02 Сентябрь 2005
Категория: Russian Federation
Online Status: Offline
Публикации: 54
Свойства публикации Свойства публикации   Ответить, цитируя автора - Mixer Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 28 Ноябрь 2007 07:54
Пишешь свой POU в котором делаешь все, что нужно. Далее определяешь его в Task configuration и ставишь время T#8ms. Все.
Наверх
 Ответить Ответить Страница  <1 7891011>

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

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