А почему нет как в макросах после внесений изменений команды "Обновить функцию". Изменил тип выходной переменной, а в программе нельзя просто обновить. Надо из списка функций заново вставить в проект, чтобы изменить тип выхода. По входам тоже самое.
Название выходной переменной тоже нельзя изменить.
Браво!
Но да, выходных переменных нехватает. Конечного автомата не сделаешь. Только для расчетов годится.
Присоединяюсь - после изменения не обновляется функция на поле, например если её название изменить. Только удалить-вставить.
И в плане консультации, таймер как (можно/нельзя) на этом языке описать? Я понимаю, что функция, это участок кода, который имеет один выход. Если у меня есть такие участки программы, но они включают в себя таймер, можно/нельзя их реализовать на ST? Ну и я правильно понимаю, что между вызовами функция никаких внутренних значений переменных не сохраняет и всегда вызывается "как в первый раз" и иначе сделать нельзя?
В том то весь и смысл, мало того, что выход один, функция не сохраняет данные, и каждый раз будет снова запускаться, сделали бы ФБ даже с одним выходом, можно было бы и таймеры и что угодно делать.
Я например пытался сделать таймер с паузой и выходом времени (флоат или целочисленное), и просто сохранить переменную, ничего не получается, каждый раз переменная меняется.
Последний раз редактировалось kondor3000; 02.12.2021 в 13:50.
Возможно дело в том, что в ОВЕН хотят, чтобы все эти изделия назывались непременно "программируемые реле". А у таких реле уже устоявшийся вид среды и методики программирования. Т.е. нет задачи превратить это в ПЛК (я помню давнюю дискуссию на эту тему здесь где-то). Поэтому такой усеченный вид. Пригодный только для упрощения комбинационной логики и вычислений, т.е. того, что сильно занимает экран. Бесило рисовать например 8-входовое ИЛИ, а тут раз и просто. Или посчитать что-нибудь большее чем сложить/умножить. А так: вроде и упростили работу и "фундаментальных основ" не затронули.
Странно, в макрос запихать функцию на ST нельзя, можно пользоваться только в основной программе
Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
справиться с проблемами, либо это не твои проблемы.
Добрый вечер! Конечный автомат сделать можно. На входе создаете переменную, например, PrevState. И с помощью "линии задержки" передаете выходное значение Q (UDInt - код шага в автомате) на вход. Таким образом при вызове функция узнает на каком шаге автомата она остановилась в прошлом цикле. Внутри делаете CASE по PrevState и все. Получился такой себе FB с хранением предыдущего состояния "снаружи". Все таймеры внешние. Если шаг =10, то таймер 1 запустить. Таймер через время задержки Т выдает TRUE на вход функции. Управление исполнительными механизмами - по номеру состояний. скрин 1.JPGскрин 2.JPG