Я пытаюсь выполнить очень простую задачу, но похоже, что я не могу понять, как это сделать.Как работать с реальным временем в пользовательском функциональном блоке на ST в Codesys 3.5
Моя задача - ежедневное расписание. выход Q1
должен быть HIGH
каждый день с 1:00 до 2:00. Я не мог найти функциональный блок, который бы мне помог. Я решил создать свою собственную.
Вот мои определения.
FUNCTION_BLOCK Shedule
VAR_INPUT
EN: BOOL;
MO: INT;
TU: INT;
WE: INT;
TH: INT;
FR: INT;
SA: INT;
SU: INT;
T1: STRING;
END_VAR
VAR_OUTPUT
Q: BOOL;
END_VAR
Идея заключается в следующем. EN
- вход. Он должен быть HIGH
для вывода Q
, чтобы стать HIGH
тоже.
Другие - это дни недели. Я могу установить 1 или 0, если я хочу, чтобы работа по расписанию была в этот день. Довольно универсальный функциональный блок для создания любого типа расписаний.
Вопрос 1: Когда я делаю переменные дня недели, BOOL
, когда я добавляю блок в линию LD, он создает контакт для каждого параметра дня недели.
Что я могу сделать, чтобы сделать только EN
контакт подключен к линии?
Если я пытаюсь добавить функциональный блок с EN/ENO, то я не знаю
1) Как я знаю, что внутри функционального блока, который EN
является HIGh
или как получить доступ к этой переменной? 2) Я не могу подключить катушку к моему Q
выходам. он подключается только к ENO
. как я могу управлять состоянием ENO
?
Но это еще не все. Я добавил даты и времени библиотека
Но единственное, что я нашел, чтобы работать со временем это RTCLK.GetDateAndTime
функциональный блок. И я не могу понять, как с этим работать.
Моя простая задача, чтобы получить только и текущий день недели, и если на этой неделе включена и текущее время в диапазоне на входе T1
текущее время - сделать Q
= HIGH
иначе LOW
.
Какие-нибудь намеки на это?
Наконец-то у меня это работает. Ключевым предложением было OSACT BASIC. Мне удалось получить битку в реальном времени. Думаю, я ошибаюсь. Не могли бы вы показать пример, как читать ПЛК в реальном времени? –