Просмотр полной версии : Реализация изменения одного параметра по расписанию
Есть необходимость производить запись значения в параметр в определенное время, например в 7:00 записать 10, в 16:00 записать 5.) Язык ST(предпочтительней) или FBD.
Ваши мысли по данному вопросу, как бы вы сделали наилучшим образом. Можете в виде простых мыслей описать, а можно и с примерами кода.
Всех благодарю за участие.
Плюсы в карму полетели.)
Открыть протокол прибора и прочитать как записывать параметра.
сформировать нужное количество пакетов или создать сборку пакетов динамически при помощи любого языка программирования. как условие номер прибора у вас не меняется.
в любом языке программирования открыть ком порт (виртуальный если АС4 или физический если стоит АС3) и послать туда вышесформированый пакет.
все примеры есть в С++ у овена рядом с их библиотекой интеграции приборов.
я лично пишу в дельфи, там для вашей задачи надо 3 компонента : таймер, библиотека работы с ком портом или библиотека овен, и кнопка запуска/остановки. отмечу так же что для различных приборов различные методы посылки значений.
Накидал за обед диспетчер для 4 будильников. В заданое время закидывает в переменную нужное значение.
По образу и подобию можно нарастить до любого количества.
Никаких проверок на корректность не вводил. К железу не привязывался - там сильно все по разному реализуется, сами сделаете.
Надо учитывать что конкретные цифры можно и пропустить( питания, например, не было)
По этому я бы сделал примерно так( для не корректируемых в процессе параметров):
IF( ( CUR_TIME >= 7:00) AND ( CUR_TIME < 16:00)) THEN
IF( CUR_VALUE <> 10)THEN
CUR_VALUE := 10;
END_IF;
ELSE
IF( CUR_VALUE <> 5)THEN
CUR_VALUE := 5;
END_IF;
END_IF;
Надо учитывать что конкретные цифры можно и пропустить( питания, например, не было)
По этому я бы сделал примерно так( для не корректируемых в процессе параметров):
IF( ( CUR_TIME >= 7:00) AND ( CUR_TIME < 16:00)) THEN
IF( CUR_VALUE <> 10)THEN
CUR_VALUE := 10;
END_IF;
ELSE
IF( CUR_VALUE <> 5)THEN
CUR_VALUE := 5;
END_IF;
END_IF;
В сутках 24 часа. Когда время перевалит за 00:00 условие "( CUR_TIME < 16:00)" перестанет действовать и соответственно код неработоспособен, т.к., поставленную задачу не решает.
В сутках 24 часа. Когда время перевалит за 00:00 условие "( CUR_TIME < 16:00)" перестанет действовать и соответственно код неработоспособен, т.к., поставленную задачу не решает.
Так для этого есть еще и 1я часть условия: "( CUR_TIME >= 7:00) AND ..." или я чего то не понимаю?
Так для этого есть еще и 1я часть условия: "( CUR_TIME >= 7:00) AND ..." или я чего то не понимаю?
Это как в последовательном соединении проводников, если один проводник исключить из цепи, вся сеть перестает работать.
Вы же сами говорите в условии, что если "одно" и "второе" верны, то сделать "это". Ну и получается, что до 23:59 они верны, а вот уже после не верны.)
Если честно не могу понять вопрос: чем время следующих сутках отличается от времени в предыдущих, каждый раз( практически) от 0 до 24х монотонно возрастает?
Соответственно и условие каждый день работает одинаково
Если честно не могу понять вопрос: чем время следующих сутках отличается от времени в предыдущих, каждый раз( практически) от 0 до 24х монотонно возрастает?
Соответственно и условие каждый день работает одинаково
Я немного ошибся, но сути это не меняет.
Писал я за выражение IF( ( CUR_TIME <= 7:00) AND ( CUR_TIME > 16:00)), а у вас IF( ( CUR_TIME >= 7:00) AND ( CUR_TIME < 16:00)).
Но сути это не изменило.
IF( ( CUR_TIME >= 7:00) AND ( CUR_TIME < 16:00)) THEN ↚ здесь вы говорите, что если ( CUR_TIME >= 7:00) и ( CUR_TIME < 16:00) ОДНОВРЕМЕННО верны, THEN IF( CUR_VA...
Представим, что время настало 00:00 или 00:01, будет ли верно при этом условие ( CUR_TIME >= 7:00) ?
Нет, не будет. А если не верно одно условие в выражении, то не верно и все выражение в данном случае.
Вроде так!
Powered by vBulletin® Version 4.2.3 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot