-
Так и понял Smith2007 - Делфушник.
А , что нельзя зафиксить аварии в процессе ( они ведь разные могут быть и на разных устройствах) в глобальные переменные и уже отдельно (вообще в стороне от основной программы) сформировать тексты сообщений и организацию отправки?????
На работе тоже есть хороший делфушный программист - потребовалось много времени , чтобы у него из головы всякую муть выбить ( тоже любитель при случае цикл замутить :D ), теперь нормальный стал.
З.Ы Я , конечно извиняюсь, но то что вы делаете(как вы решаете проблемму) это интеллектуальный ананизм.
Хоть , чисто теоретически , представьте : вы поменяли работу (организацию) , а там нет КДС , нет Овена , а есть что-либо любое другое устройство , а задачи те-же. Какие структуры ? Какие массивы из них?
Хотя , конечно , нормальные герои идут в обход .
Когда завершается то , что хочеш завершить и как шочеш , тоже нормально , но ... нафига козе баян , а зайцу стоп сигнал?
Правильно , нет необходимости.
-
Наверное я бы здесь с Вами согласился.
Если бы мне платили за кол-во строк.
-
Вложений: 1
Сергей, я повторюсь...
Моя работа ни коим образом не связана ни с IT ни с АСУТП ни с программированием и поэтому я не особо беспокоюсь о различных устройствах и КДС.
9 месяцев назад достроил дом и въехали. Отопление смонтировали специалисты, но без какой либо автоматики. Включил насос - заработал теплый пол. Выключил - остыл. То же с радиаторами отопления.
Как только приблизилась осень и температура на улице начала скакать, жена мне: "сделай потеплее в ванной". "Что-то жарко в ванной стало". "Холодно в детской", "Жарко в спальне" и т.д. и я как белка ношусь в котельную включаю-выключаю. Посмотрел штатные контроллеры к котлам (у меня пара Baxi 1300in, Baxi 1620 in) и разочаровался их возможностями. Мало того, что стоит баснословных денег так и алгоритм не поменять. Вот в тот момент, а это примерно пара месяцев назад, принял решение автоматизировать процесс. О ПЛК даже не слыхал ни когда. Пошел на соседний завод к асушникам и начал их пытать. Вот они мне ссылочку и дали на этот сайт прокомментировав, что продукция Овен довольно хороша и по цене доступна. Вот я начал с изучения форума и Codesys. Благодаря урокам Кирила я сделал первые шаги в Codesys и это оказалось для меня не сложно. Тогда я заказал ПЛК110-30м. Спустя неделю протянул провода, смонтировал шкафчик и упаковал в него кросс, ПЛК и пр. автоматику.
Почему я начал тему с вопроса об "оптимальном алгоритме" обработки нештатных ситуаций. Да у меня ноль опыта в этом деле :) Стаж общения с живым ПЛК 2 недели :)
Сейчас я научился управлять котлами в зависимости от температуры в бойлере. Следующий этап - ввести термодатчики на бойлер и улицу. Ну а потом добавить контроль ряда критических параметров, такие как давление в магистрали контура отопления, температура в контуре отопления и т.д.
Мало управление написать подумал я, как я узнаю о нештатке? Я же на работе. Появилась следующая задача и т.д.
Правильно ли я делаю создавая структуры, массивы? Я не знаю. Экспериментирую :) И слушаю рекомендации на форуме. Ну еще изучаю примеры. Очень интересно.
Изучая - появляются новые идеи "как упростить жизнь в доме" :)
Вобщем прошу сильно не пинать, я только учусь :)
-
в продолжении темы....
Модифицировал код. Подумал, что если я буду анализировать много параметров то затрачивать ресурсы ПЛК на постоянные операции присваивания при заполнении массива текущими значениями контролируемых параметров будет не экономно.
Можно в качестве текущего значения использовать ссылку и тогда не нужно в каждом цикле программы производить лишние вычисления.
Вопрос:
Можно ли в секции объявления переменных, при инициализации массива из указателей сразу вычислить сам адрес переменной на которую ссылаемся?
arr: ARRAY [1..4] OF POINTER TO INT := ADR(var_int1), ADR(var_int2), ....
или только в теле программы можно ссылаться на функции?
-
Вот вы , при обьявлении массива как бы резервируете область памяти для него . Потом вы для обращения к переменной вытаскиваете указатель на ее из массива .
До этого вы структуру организовали - опять резервирование памяти , потом еще и массив структур - еще памяти хапнули. Еще понятно если вы какой-то журнал аварий-событий сделать хотите.
В чем суть вашей оптимизации ??? Обращайтесь напрямую.(по имени) Хотите оптимизировать - запихайте флаги аварий в массив и делайте выборку по индексу , только не увлекайтесь операторами цикла , он и так есть .
Навряд-ли вы напишете код , сильно грузящий ПЛК , поэтому не стоит парится по поводу ресурсов - считайте , что они бесконечны.
Старый мультик был , где орел или стервятник учил летать страуса - типа лучше день потерять , потом за 5 минут долететь.
-
Возможно Вы правы, но вот опять же... Если запихать флаги в массив то: массив надо все равно и скорее всего как глобальный. Где хранить максимум и минимум при которых alert сработает?
Мне нужно получить:
1. В случае отклонения любого из контролируемых параметров за пределы нормы (нормы надо хранить) зажечь сигнальную лампу. Ожидается около 30 параметров на контроль.
2. Сформировать и отправить СМС с обнаруженными ошибками.
3. Отправить повторные СМС через опред. периоды времени в случае если параметр по прежнему вне диапазона нормы.
4. Протоколирование значений параметров с возможностью изменения уровня детализации (все подряд - оно же отладка, некритичные изменения, критические параметры). Протоколирование необходимо обеспечить в сеть желательно по стандартным протоколам (из предположений - ftp), чтобы не заниматься еще и серверной частью.
-
Потратить пару-тройку осенних вечеров на изучение фундаментального :rolleyes: описания работы в КДС (для вас пару - там выборочно).
Для хранения есть понятие "Ретэйн" (на любых ПЛК).
-
Сергей, линканите пожалуйста ссылочку на фундаментальную документацию описания работы в КДС.
Я уже и сам прихожу к выводу, что не с того начал :
-