Обнаружил любопытный факт при работе со строками. Вот два примера, которые я проверял во встроенном эмуляторе.
Пример 1.
Программа отлично работает:
Слегка изменяем программу, пример 2.
Программа компилируется, но в рантайме выдает сообщение об ошибке:
Получается, что строковые переменные и строковые константы - это не совсем одно и то же? Более того, получается, что компилятор об этом не знает, так как, с его точки зрения, все нормально?
Кто-нибудь может проверить на реальном железе?
Инженер-системотехник
+7 (916) 477 3925
Продолжаем копаться со строками. Функция CONCAT ведет себя не совсем так, как ожидалось...
Вроде бы, ничего криминального. Проверяю в эмуляторе:
Одну и ту же функцию подключаю к разным входам CONCAT. Разница, как видим, существенная. В самой подключаемой функции ничего особенного нет, это наш первый пример из предыдущего сообщения:
Странно... Может, дело в эмуляторе?
Инженер-системотехник
+7 (916) 477 3925
Первоначально опубликовано Максим Ананских
Странно... Может, дело в эмуляторе?
Нет, дело оказалось не в эмуляторе. Установил 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
А вот с первым примером не так просто. Ошибок не выдает, в PLCWinNT работает, а в эмуляторе - не работает...
Инженер-системотехник
+7 (916) 477 3925
Доброго времени суток.
Такой вот банальный вопросик: можно ли как нибудь в CodeSyS получить текущее время? Условие задачи подразумевает наличие контроллера wago и отсутствие АРМ.
Добрым словом и матом можно сделать гораздо больше, чем просто добрым словом.
Кстати в примере моторесурса я использовал этот FB
Первоначально опубликовано LtOldy
получить текущее время? Условие задачи подразумевает наличие контроллера wago и отсутствие АРМ.
Текущее время можно получить, если а) в контроллере есть часы реального времени (например, 750-841) и б) реализована библиотека SysLibRTC.lib (разработчик не обязан её реализовывать). Например, в 750-841 можно воспользоваться функцией:
Инженер-системотехник
+7 (916) 477 3925
Спасибо Максим. Воспользовался функцией- все работает.
2Dismay: вся фишка была в том, что на вход RTC надо ставить какое то значение)) А так как АРМа нету, то соответственно нельзя вход "запитать" например с ОПЦ-сервера )
Спасибо- помогли
Добрым словом и матом можно сделать гораздо больше, чем просто добрым словом.
Первоначально опубликовано LtOldy
2Dismay: вся фишка была в том, что на вход RTC надо ставить какое то значение)) А так как АРМа нету, то соответственно нельзя вход "запитать" например с ОПЦ-сервера )
кстати пробовал альтернативный вариант, на который меня натолкнул товарищ Dismay:
панелька HMI504T имеет у себя внутренние часы, там уже все так удобненько лежит по вордам в памяти. однако реализовывая RTC с входом начального времени с панельки столкнулся с такой вот проблемой: блок РТЦ хавает вход нормально, потом время обратно в панелю, однако "время контроллера" запаздывает на 2-3сек.
Добрым словом и матом можно сделать гораздо больше, чем просто добрым словом.
Вы не можете публиковать новые темы в этом форуме Вы не можете отвечать на сообщения в этом форуме Вы не можете удалять Ваши сообщения на этом форуме Вы не можете редактировать Ваши сообщения на этом форуме Вы не можете создавать голосования на этом форуме Вы не можете выражать своё мнение в голосованиях на этом форуме