Volckoff писал(а): ↑22.05.2009 12:21
Не найти "общий знаменатель" - это проблема сознания только конкретного человека.
Может быть. Только что понимать под сознанием? Проблема может быть и в том, что ненахождение "общего знаменателя" (или пересечения множеств) может быть и из-за разного понимания того, что именно нужно (и для чего). А отсутствие пересечения может быть как и минусом, когда друг друга просто не понимают, так и плюсом, когда эти множества объединяют в одно.
Volckoff писал(а): ↑22.05.2009 12:21
Многие не разбираются в аэродинамике, но это, с одной стороны, не мешает одним размышлять о самолетах, а с другой - не мешает спецам строить самолеты на основе вполне конкретных, опробованных на практике законов.
Мне тут не нравится выражение "опробованных на практике
законов". Законы надо не пробовать, а изучать. А пробовать и потом использовать на практике правила.
Volckoff писал(а): ↑22.05.2009 12:21
Разумна схема обсуждения - цель, способ достижения, довод, аргумент за, аргумент против.
Полностью согласен. Но тут есть одна проблема --
цель. Какая должна быть цель? И что под ней понимать?
Volckoff писал(а): ↑22.05.2009 12:21
Лозунги типа "винды - говно" отбрасывают, в моём пространстве, изрёкшего за пределы восприятия.
Я вообще не люблю лозунги. Предпочитаю конкретные предложения.
Volckoff писал(а): ↑22.05.2009 12:21
И, сразу надо оговориться, что есть "принципы построения" и есть конкретная реализация этих принципов. В конечном итоге все ОС построены на одних и тех же принципах, только вот реализации...
Это точно.
Опережу многие вопросы – я не пытаюсь открыть ничего нового. Я пытаюсь по-другому взглянуть на привычные вещи. Не хотелось ничего изобретать, а было желание собрать воедино решения из разных областей.
Volckoff писал(а): ↑22.05.2009 12:21
Итак. Модель. Объектная. Событийная. Сетка с узлами.
...
Пример:
TimeBlock: TimerOn(5000,OffBlock);
WaitBlock: Goto(WaitBlock); ;Ждать 5 сек
OffBlock: Block_RO.Command(OFF); ;Выключить блокир реле
Block_ESZ.Command(OFF);
SYTEM.SetState(AVOSTANOV);
DispCommand.Select(NONE);
goto(Deblock);
Это не интерпретатор, а функциональный процессор - одна инструкция - одна функция. Реализация - пара сотен строк кода.
Я не имел дела с подобными системами, поэтому ничего сказать не могу.
Volckoff писал(а): ↑22.05.2009 12:21
Проработка модели системы на основе унификации объектов:
узел, параметр, событие
привело, например, к таким результатам, как единый ОРС-сервер на любую систему.
Я когда-то пытался разбираться с OPC-сервером и ничего такого, что могло бы облегчить решение задач, которые требовались заказчику, я не обнаружил. За исключением того, что тогда можно было бы купить (за несколько кб) какую-то универсальную систему, на основе которой потом за несколько недель (а то и месяцев) можно было бы создать систему сбора и отображения информации на экране монитора.
Видимо, это связано с тем, что в тех местах, в которых мы делали такую систему, никакого автоматическиого управления не требовалось.
Система просто собирает информацию с нескольких десятков объектов, на каждом из которых от нескольких единиц, до нескольких сотен аналоговых и дискретных параметров. Система протоколирует все события: измерения значений аналоговых параметров, периодические измерения значений дискретных параметров (а также значения при их изменении), изменения зон аналоговых параметров (для каждого задаётся 6 границ: предупредительные, аварийные и достоверностные).
Это всё выполняется на отдельном компьютере. Все события архивируются в отдельные файлы, образующие недельный и годовой архивы (разбиты по суткам).
Диспетчер может просмотреть графики изменения любого параметра за любые сутки, а также протокол событий. Если событие аварийное (например, значение аналогового параметра вызодит за аварийную границу, или дискретный параметр принимает значение, объявленной аварийным), то выдаётся голосовое сообщение.
При просмотре архива событий возможна фильтрация по отдельным объектам, а также по типам событий: изменение границ, дискретные события, аварийные и т.д.
Также диспетчер имеет возможность посмотреть на мнемосхеме состояние любого объекта и значения аналоговых и дискретных параметров.
Оперетор также может: задать внеочередной опрос группы параметров, вручную ввести значение параметра, выдать команду на изменение значения дискретного параметра (при этом у него запрашивается пароль)... что-то ещё, что уже не помню.
Вот такую систему мы установили в трёх местах.
Никакого автоматического управления там не требовалось. А если и требовалось, то оно решалось на другом уровне (и не нами).
Поэтому я ничего не могу сказать о примере:
Код: Выделить всё
TimeBlock: TimerOn(5000,OffBlock);
WaitBlock: Goto(WaitBlock); ;Ждать 5 сек
OffBlock: Block_RO.Command(OFF); ;Выключить блокир реле
Block_ESZ.Command(OFF);
SYTEM.SetState(AVOSTANOV);
DispCommand.Select(NONE);
goto(Deblock);
Потому, что тут, как я понимаю, идёт управление. А куда его можно "вставить", и, главное, кто его будет настраивать, я не представляю. Возможно, это какая-то часть более общей системы, и она будет использовать данные системы сбора и выдавать команды на управление... не знаю. По этой причине я и написал, что, возможно, не получится найти "общий знаменатель". Это с точки зрения пессимиста (который, понюхав руюку коньяку сказал, что он пахнет клопом). А с точки зреним оптимиста (который, понюхав раздавленного клопа сказал, что он пахнет коньяком) -- возможна независимая реализация разных элементов одной системы, которые потом можно будет собрать в одно целое.
По поводу почему мне понравился линукс (в том варианте, который у нас был реализован на DOSе). Мне в нём понравились очереди сообщений -- если появляется новая группа измеряемых параметров с телемеханики нового типа, то просто пишется новый демон, которые принимает данные и передаёт их общему цетру сбора информации. И его добавление никак не затрагивает остальные элементы системы.
По отображению -- можно передавать как конкретную информацию (во внутреннем представлении) на машины диспетчера и там отображать её любыми средствами, так и формировать web-страницы на центральном компьютере. А можно на нём же писать и простые программы, отображающие информацию на текстовом экране и просматривать её, подключившись по Telnet/SSH. А можно и иксовые программы запускать (об этом я думал только теоретически)