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

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

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

Присоединился: 14 Май 2003
Online Status: Offline
Публикации: 770
Свойства публикации Свойства публикации   Ответить, цитируя автора - Максим Ананских Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Тема сообщения: Программирование в CoDeSys. Вопросы
    Опубликовано: 05 Апрель 2009 23:26
Обнаружил любопытный факт при работе со строками. Вот два примера, которые я проверял во встроенном эмуляторе.

Пример 1.



Программа отлично работает:



Слегка изменяем программу, пример 2.



Программа компилируется, но в рантайме выдает сообщение об ошибке:



Получается, что строковые переменные и строковые константы - это не совсем одно и то же? Более того, получается, что компилятор об этом не знает, так как, с его точки зрения, все нормально?

Кто-нибудь может проверить на реальном железе?
Инженер-системотехник
+7 (916) 477 3925
Наверх
Максим Ананских Смотреть выпадающим
Действительный член
Действительный член
Аватар

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



Вроде бы, ничего криминального. Проверяю в эмуляторе:



Одну и ту же функцию подключаю к разным входам CONCAT. Разница, как видим, существенная. В самой подключаемой функции ничего особенного нет, это наш первый пример из предыдущего сообщения:



Странно... Может, дело в эмуляторе?
Инженер-системотехник
+7 (916) 477 3925
Наверх
Максим Ананских Смотреть выпадающим
Действительный член
Действительный член
Аватар

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

Странно... Может, дело в эмуляторе?


Нет, дело оказалось не в эмуляторе. Установил PLCWinNT, перекомпилировал под него, ругается:

3150
"Parameter <number> of function '<name>': Cannot pass the result of a IEC-function as string parameter to a C-function."

Use a intermediate variable, to which the result of the IEC function is assigned.

Вот, значит, на чем нужно отлаживаться... Переделал, теперь работает и на эмуляторе, и на софт-ПЛК:



Оказывается, и функции бывают разные...
Инженер-системотехник
+7 (916) 477 3925
Наверх
Максим Ананских Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 14 Май 2003
Online Status: Offline
Публикации: 770
Свойства публикации Свойства публикации   Ответить, цитируя автора - Максим Ананских Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 06 Апрель 2009 04:55
А вот с первым примером не так просто. Ошибок не выдает, в PLCWinNT работает, а в эмуляторе - не работает...
Инженер-системотехник
+7 (916) 477 3925
Наверх
LtOldy Смотреть выпадающим
Новичок
Новичок
Аватар

Присоединился: 03 Март 2009
Категория: Russian Federation
Online Status: Offline
Публикации: 26
Свойства публикации Свойства публикации   Ответить, цитируя автора - LtOldy Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 07 Апрель 2009 16:47
Доброго времени суток.

Такой вот банальный вопросик: можно ли как нибудь в CodeSyS получить текущее время? Условие задачи подразумевает наличие контроллера wago и отсутствие АРМ.
Добрым словом и матом можно сделать гораздо больше, чем просто добрым словом.
Наверх
Dismay Смотреть выпадающим
Действительный член
Действительный член
Аватар

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

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

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

получить текущее время? Условие задачи подразумевает наличие контроллера wago и отсутствие АРМ.


Текущее время можно получить, если а) в контроллере есть часы реального времени (например, 750-841) и б) реализована библиотека SysLibRTC.lib (разработчик не обязан её реализовывать). Например, в 750-841 можно воспользоваться функцией:

Инженер-системотехник
+7 (916) 477 3925
Наверх
LtOldy Смотреть выпадающим
Новичок
Новичок
Аватар

Присоединился: 03 Март 2009
Категория: Russian Federation
Online Status: Offline
Публикации: 26
Свойства публикации Свойства публикации   Ответить, цитируя автора - LtOldy Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 08 Апрель 2009 11:24
Спасибо Максим. Воспользовался функцией- все работает.

2Dismay: вся фишка была в том, что на вход RTC надо ставить какое то значение)) А так как АРМа нету, то соответственно нельзя вход "запитать" например с ОПЦ-сервера )

Спасибо- помогли
Добрым словом и матом можно сделать гораздо больше, чем просто добрым словом.
Наверх
Dismay Смотреть выпадающим
Действительный член
Действительный член
Аватар

Присоединился: 01 Июнь 2006
Категория: Russian Federation
Online Status: Offline
Публикации: 464
Свойства публикации Свойства публикации   Ответить, цитируя автора - Dismay Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 08 Апрель 2009 16:52
Первоначально опубликовано LtOldy


2Dismay: вся фишка была в том, что на вход RTC надо ставить какое то значение)) А так как АРМа нету, то соответственно нельзя вход "запитать" например с ОПЦ-сервера )


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

Присоединился: 03 Март 2009
Категория: Russian Federation
Online Status: Offline
Публикации: 26
Свойства публикации Свойства публикации   Ответить, цитируя автора - LtOldy Ответить, цитируя автора -  ОтветитьОтвет Прямая ссылка на эту публикацию Опубликовано: 09 Апрель 2009 16:30
кстати пробовал альтернативный вариант, на который меня натолкнул товарищ Dismay:
панелька HMI504T имеет у себя внутренние часы, там уже все так удобненько лежит по вордам в памяти. однако реализовывая RTC с входом начального времени с панельки столкнулся с такой вот проблемой: блок РТЦ хавает вход нормально, потом время обратно в панелю, однако "время контроллера" запаздывает на 2-3сек.
Добрым словом и матом можно сделать гораздо больше, чем просто добрым словом.
Наверх
 Ответить Ответить Страница  12>

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

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