Правильно ли я понял, что все функции, которые содержатся в файле PLC_PRG выполняются периодически?
Если да, то куда добавить отрезок кода инициализации, чтобы он выполнялся один раз при включении контроллера?
Правильно ли я понял, что все функции, которые содержатся в файле PLC_PRG выполняются периодически?
Если да, то куда добавить отрезок кода инициализации, чтобы он выполнялся один раз при включении контроллера?
Команды в PLC_PRG выполняются постоянно, циклически. Выполнились с верху в низ, и автоматически начинают с начала. И так постоянно. Это принцип работы контроллера. Это же отличие от языков на ПК.
Можно объявить переменную prom : Bool := true;
В программе:
if prom=true then
Ваш код
prom:=false;
end_if;
А для чего в CodeSys:
Ресурсы -> Конфигурация задач -> Системные события -> start (Called when program starts)?
И почему при выделении этого события галочкой не работает кнопка "Создать POU"?
В POU я на всякий случай создал кроме PLC_PRG ещё одину программу Init и один функциональный блок Test, но ни то не другое с этим системным событием не связано.
Сколько вы будете напоминать об документации?
В указанном вами документе 453 страницы.
На диске поставляется с контроллером 108 документов!
В работе используется 1 контроллер и 2 блока измерений и 1 панель. По каждому из этих устройств как минимум 5 документов, в каждом из них несчётное количество страниц.
Я вам ответил на ваш вопрос?
Только пожалуйста не рассказывайте, что всё для людей.
Роботов у нас на фирме нет.
Я не против литературы, но только когда она не является камнем преткновения в разработке. )
Вы настаиваете чтобы я изучил досконально 453 страницы? Интересно будет услышать ответ.
И всё же по непосредственно заданному вопросу: как добавить функцию-обработчик понятно, а вот системные события не расписаны в инструкции, авторы посчитали, что достаточно комментария справа от системного события в CodeSys? Или в инструкции где-то всё же они расписаны?
Да, программа не написана. Кто сказал что вещи сложные для понимания, вовсе нет. Сложность вызывает поиск информации по функциям.
Почему вы считаете что обработка событий сложная вещь?
По поводу порядка написания программы: возникла необходимость выполнить инициализацию при загрузке программы, это очевидно первое что нужно сделать при создании программы. Модератор ответил, что нужно воспользоваться нерациональным методом - созданием флага-переменной для проверки была ли загружена программа или нет. Так нельзя писать программы, это для начинающих программистов.
И конечно считая, что в компании Овен работают отвественные и опытные программисты я засомневался, что модератор правильно ответил. Спустя 5 минут оказалось, что есть системные события, очевидно для такого случая.
Поэтому отвечаю на ваш вопрос - системные события как оказалось необходимо изучить прежде всего.
Это не реально, я вспоминаю когда-то делал прибор, сделал на него подробный паспорт и инструкцию всего 60 страниц с алфавитным указателем! И знаете что сказал первый пользователь в первый же день, когда я сказал, что изучение всего лишь 60 страниц считается обязательным новичку.
Он ответил - никто не будет разбираться с инструкцией! Не будет!
Единственное возможное решение - делать все пользовательские интерфейсы интуитивно понятными, или делать такую инструкцию, в которой не нужно будет читать оглавление.
Война закончится, а с инструкцией к танку так и будут разбираться.
Ну конечно же эта методика как вариант, но как последний.
Дело не в длительности, хотя тоже это имеет значение. Дело в правильности оформления.
Ладно, спасибо. Разберёмся.
Вопрос: Надо сделать так - если значение переменной False то присвоить значение TRUE другой переменной. Есть ли какой-нибудь оператор инверсии для ST? Или писать:
IF X Then
Y:=FALSE;
ELSE
Y:=TRUE;
END_IF;
Спасибо.