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

Программирование в CoDeSys. Вопросы

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

Присоединился: 01 Июнь 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 464
Свойства публикации Свойства публикации   Ответить, цитируя автора - Dismay Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: Программирование в CoDeSys. Вопросы
    Опубликовано: 09 Апрель 2009 17:05
У меня четыре контроллера WAGO 750-841 на всех время быстро убегало, пока не настроил NTP клиента контроллера на локальный NTP сервер. Пока внутреннее время не использовал проблема вообще не беспокоила, а как пришлось его взять, сразу выяснилось, что внутренние часы контроллера почему то быстро убегают 2-3 сеунды в сутки. Хотя справедливости ради надо сказать, что в целом меня эта железяка очень порадовала
Наверх
sanwork Смотреть выпадающим
Действительный член
Действительный член


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

Рисовать программу квадратиками - в кайф !  Я сам постоянно пишу (т-е рисую) в CFC (редко - FBD).  Но они таят в себе коварство, и платой за удовольствие оказываются скрытые ошибки.  Секрет прост - всё дело в последовательности вычислений, которую не видно при произвольном расположении квадратиков-блоков, и часто к моменту выполнения функции некоторые переменные оказываются просто-напросто ещё не готовы !  Строки - особенно :  строка-переменная (не константа) обретает адрес в момент присвоения значения.

Если всё то же самое написать текстом (ST) , то всё работает как часики, без всяких загадок !  Просто, будьте внимательны, следите за порядком вычислений, старайтесь кубики представить в виде текста.

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

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

Присоединился: 14 Май 2003
Online Status: Offline
Публикации: 770
Свойства публикации Свойства публикации   Ответить, цитируя автора - Максим Ананских Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 19 Апрель 2009 17:10
Особенности оператора FOR.

Имеем следующий код:

PROGRAM PLC_PRG
VAR
     I: INT;
     MAXI: INT := 1;
     LASTI: INT;
END_VAR

FOR I := 0 TO MAXI DO
     ;
END_FOR;
LASTI := I;

По идее, тело цикла должно здесь выполниться два раза: со значениями счетчика I = 0 и I = 1. Так и происходит, однако после выполнения программы мы видим, что LASTI = 2. То есть, значение счетчика увеличивается тоже дважды.

Об этом, кстати, написано в документации. Но не каждому придет в голову туда лезть, особенно в случае, где все кажется очевидным.

Важное следствие из этой особенности. Если в данном примере мы примем MAXI равным 32767, то получим бесконечный цикл из-за переполнения счетчика цикла!

То есть, чтобы, к примеру, присвоить значение 65536 элементам массива, нам понадобится счетчик типа UDINT, а не UINT.
Инженер-системотехник
+7 (916) 477 3925
Наверх
_IP_ Смотреть выпадающим
Действительный член
Действительный член


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

...Если в данном примере мы примем MAXI равным 32767, то получим бесконечный цикл из-за переполнения счетчика цикла!

В документации это тоже есть.

1)Цикл FOR не редко используется для поиска с доп. условием выхода из него по EXIT. Ниже цикла нужно определить отработал ли он все итерации или был преждевременный выход. Типовая ситуация. Сейчас это элементарно. Если не увеличивать счетчик в последний раз, то сделать это будет нельзя.

2) Никто не запрещает мне менять счетчик цикла внутри него. Например, перескочить несколько итераций. Отсюда правильный выход из цикла должен быть если больше, а не если равно. Отсюда нарываемся на описанную особенность.

3) Иногда бывает нужно сделать бесконечный цикл. Выход может быть по внутренним условиям, а не по числу итераций. В Си для этого есть for(;;) в CoDeSys вот такая полезная особенность :)
Igor Petrov
Наверх
bariga001 Смотреть выпадающим
Новичок
Новичок
Аватар

Присоединился: 14 Май 2009
Категория: Russian Federation
Online Status: Offline
Публикации: 1
Свойства публикации Свойства публикации   Ответить, цитируя автора - bariga001 Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 14 Май 2009 06:37
Добрый день, сегодня столкнулся впервые с КодеСисом, представления имею в программировании в целом, но вопрос в следующем, поставил мне знакомый задачку написать код к программе на CoDeSys, задача следующая:
Есть цифровые электросчетчики, которые установлены в домах, все эти счетчики запитаны, или соединены с одним блоком, и от этого блока необходимо считывать информацию о каком либо счетчике.
Сам я только начинаю читать информацию, мне бы хотя бы примерно расписать, может ли этот язык это?
За всю информацию огромное спасибо заранее.
Наверх
remint Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 24 Февраль 2004
Категория: Russian Federation
Online Status: Offline
Публикации: 185
Свойства публикации Свойства публикации   Ответить, цитируя автора - remint Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 14 Май 2009 08:39
Первоначально опубликовано bariga001

поставил мне знакомый задачку написать код к программе на CoDeSys, задача следующая:
Есть цифровые электросчетчики, которые установлены в домах, все эти счетчики запитаны, или соединены с одним блоком, и от этого блока необходимо считывать информацию о каком либо счетчике.


1. Что за неопознанный "блок"?
2. А Вы (или ваш знакомый) уверены, что для работы со счетчиками - видимо система учета или мониторинга параметров эл. тока - нужно использовать Кодесис и писать для него программу? Ведь для таких задач есть много других готовых решений.
Александр Бурмистров,
www.entels.ru
Наверх
Oldman Смотреть выпадающим
Действительный член
Действительный член


Присоединился: 13 Август 2007
Категория: Russian Federation
Online Status: Offline
Публикации: 127
Свойства публикации Свойства публикации   Ответить, цитируя автора - Oldman Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 14 Май 2009 10:09
bariga001 вы поиском в интернете не пробовали пользоваться.инфы там вагон.
Oldman
Наверх
Максим Ананских Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 14 Май 2003
Online Status: Offline
Публикации: 770
Свойства публикации Свойства публикации   Ответить, цитируя автора - Максим Ананских Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 16 Май 2009 14:14
Первоначально опубликовано bariga001


Есть цифровые электросчетчики, которые установлены в домах, все эти счетчики запитаны, или соединены с одним блоком, и от этого блока необходимо считывать информацию о каком либо счетчике, [...] может ли этот язык это?


Очень странная постановка вопроса. Причем здесь CoDeSys? Если Вы можете написать программу, которая обслуживает эти счетчики, и оборудование, на котором работает эта программа, позволяет это сделать, и среда, в которой пишется Ваша программа для Вашего оборудования, это CoDeSys, то ответ да...

Это примерно то же, что спросить, можно ли с помощью данного ключа ехать на автомобиле по трассе E95 со скоростью 200 км/ч Если это ключ зажигания от автомобиля, и этот автомобиль может двигаться с такой скоростью, и Вы умеете его водить, и знаете, как выехать на эту трассу, и поблизости не окажется инспектора ГАИ... Ну Вы поняли

Судя по такой постановке вопроса, Вы с Вашим знакомым сами не знаете, за что взялись. Обратитесь к специалисту, который подскажет Вам, как можно решить эту задачу, или подберет готовое решение.
Инженер-системотехник
+7 (916) 477 3925
Наверх
 Ответить Ответить Страница  <12

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

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