EnglishУкраїнськаmRussian
Login/New
Topic with many replies

Новые идеи, непонятные моменты и т.п.


| 1 | 2 | Last
Author Message
Written on: 27. 11. 2009 [14:59]
kuzulis
Денис Шиенков
Topic creator
registered since: 10.07.2009
Posts: 128
Доброго времени!

Сколько я ни читал документацию, ни пытался в никнуть в идею, ничего не получается что-то еще и у меня возникли непонятные аспекты icon_smile.gif

1. Непонятен (неявен) аспект конфигурирования отдельно рабочей станции и сервера.
2. Непонятен аспект места хранения конфигурации сервера и раб станции.
3. Непонятен аспект выполнения исполняемого файла.


Поясню

Я представлял архитектуру Open Scada как клиент - серверную и в случае использования имеющую один конфигурационный файл для всех типов задач (Пусть останется OScada.xml).
Т.е. с четко разделенной структурой на сервера и рабочие станции и разделил бы исполняемый файл на несколько штук:

1. Исполняемый файл чисто сервера, например: OScadaServer

1.1 При запуске этого файла он производит чтение конфигурационного файла OScada.xml в котором берет базовую информацию (точнее только часть информации предназначенной только для него) о путях к БД конфигурации, Архивов, Алармах, логики работы, безопасности и т.п.

При этом пути могут быть как:
- локальные (путь к директории) - в файловой системе текущего сервера
- так и удаленные (IP адреса и порты) - т.е на других каких либо серверах и т.п..

Также в этом файле указывались бы:
- пути (адреса и порты) к другим серверам OScadaServer, а также их статусы (типа основной, резервный №1 , резервный №N) и другие характеристики
- пути (адреса и порты) сконфигурированных рабочих станций которые будут подключаться к серверу.

1.2 После чтения конфигурации - сервер создавал бы соответствующие струкруры данных, интерфейсы и т.п. и приступал бы к работе: сбору данных, анализу, архивированию, формированию данных и событий и отдаче их на рабочие станции по запросу последних или по мере поступления событий.

т.е. в БД сервера хранились бы все исчерпывающие данные обо всем!!!

1.3. Этот исполняемый файл был бы просто файлом-демоном (без ГУИ и т.п.) , который можно было запускать как на встраиваемых системах, так и на мощных серверах.

1.4. Также этот файл при своем запуске "поднимал" бы все необходимые интерфейсы, включая Self для обмена данными с рабочими станциями и конфигуратором (см. ниже)


2. Для конфигурирования конфигурации сервера и алгоритмов его работы, например: OScadaServerConfigurаtor

2.1 При запуске этого файла он производит чтение конфигурационного файла OScada.xml из которого берет базовую информацию (точнее только часть информации предназначенной только для него) о путях к а IP адресам серверов.

т.е если и конфигуратор и сам сервер запущены на одной машине - то файл OScada.xml может быть один для всех.

2.2 При этом этот конфигуратор может (должен) иметь ГУИ. Здесь гуй, а также сам файл может быть выполнен на любом фреймворке, хоть на Qt4, хоть Java, хоть GTK и под любым компилятором и языком и т.п. , но по умолчанию к примеру сделать на Qt4 (как и есть сейчас)
2.3. При запуске - конфигуратор коннектится к серверам и отображает все найденные сервера, их режимы, статусы и прочее что необходимо.

2.4. Для конфигурирования серверов конфигуратор общается с выбранным сервером посредством протокола Self, давая серверу команды на создание новых точек в БД и т.п. и т.д.

2.5. Через конфигуратор можно также было бы управлять за работой серверов, менять их приоритеты и т.п. и т.д.

3. Для конфигурирования и работы рабочей станции, например OScadaWorkStation

3.1. Тут в принципе можно было бы его тоже поделить на 2 части: на исполняемый файл среды визуализации и исполняемый файл среды конфигурирования визуализации.

3.2. При запуске OScadaWorkStation - происходило бы опять же чтение того же конф. файла OScada.xml, из которого бралась бы БАЗОВАЯ информация о путях к серверам, другим станциям, путям к БД виджетов и т.п.

-----------------------

т.е ИМХО, не нужно весь функционал пихать в один исполняемый файл openscada (как это сделано сейчас), при этом бы был выигрыш для разработки. И т.п. т.к. каждый разработчик пилил бы "свою" часть.

Вот в принципе я думал о таких концепциях Open Scada. о распределенных и т.п.
Сие мое сочинение не претендует на полноту, т.к. это просто общие, базовые вещи - с моей точки зрения видения проекта icon_smile.gif

т.к. в теперешнем/существующем состоянии проекта существует очень большой фактор непонятности, запутанности, неочевидности некоторых моментов и т.п.

во всей документации я не нашел информации, которая смогла бы как-то прояснить весь процесс взаимодействия основных модулей и т.п. и т.д. Комментариев в исходном коде очень мало и они неочевидны вообще, т.е. код трудно читать и воспринимать, тем более, некоторые переменные названы и сокращены до неузнаваемости и непонимания их сути. Вы уж извините, но для меня это так!
Комментарии в стиле Doxygen очень были бы кстати!!!

ЗЫ: все что я предложил/представил/предположил выше (концепцию и мое вИдение проблемы) относится только к режимам без WEB доступа

ЗЫЗЫ: жду комменариев

ЗЫЗЫЗЫ: я хочу помочь проекту чем могу, но очень тяжело, т.к. концепции и видение "мира" не очень совпадают с мнением авторов и от этого еще тяжелее icon_smile.gif
Written on: 27. 11. 2009 [15:44]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
kuzulis wrote:

Я представлял архитектуру Open Scada как клиент - серверную и в случае использования имеющую один конфигурационный файл для всех типов задач (Пусть останется OScada.xml).
Т.е. с четко разделенной структурой на сервера и рабочие станции и разделил бы исполняемый файл на несколько штук:

OpenSCADA гараздо гибче и имеет более прогрессивную архитектуру, а именно распределённую.
В конфиге и так можно хранить конфигурацию разных станций и поделить можно как угодно.

kuzulis wrote:

во всей документации я не нашел информации, которая смогла бы как-то прояснить весь процесс взаимодействия основных модулей и т.п. и т.д. Комментариев в исходном коде очень мало и они неочевидны вообще, т.е. код трудно читать и воспринимать, тем более, некоторые переменные названы и сокращены до неузнаваемости и непонимания их сути. Вы уж извините, но для меня это так!
Комментарии в стиле Doxygen очень были бы кстати!!!

А не мальнького документа API Вам не достаточно: http://wiki.oscada.org/Doc/API ?

Learn, learn and learn better than work, work and work.
Written on: 27. 11. 2009 [16:02]
kuzulis
Денис Шиенков
Topic creator
registered since: 10.07.2009
Posts: 128

OpenSCADA гараздо гибче и имеет более прогрессивную архитектуру, а именно распределённую.
В конфиге и так можно хранить конфигурацию разных станций и поделить можно как угодно.

Дык зачем тогда одни бинарик на всё?
Я тоже про распределенную конфигурацию говорю.

Неочевидно же всё!

Вот пример:
1. Установить "сервер" на у-во типа MOXA UC7400 , т.е. весь сбор данными и т.п. выполняет этот девайс. (малый объем флэш памяти)
2. БД архивов, трендов и т.п. хранить на другом уже "нормальном" сервере .
3. Рабочую станцию организовать еще на отдельном АРМ

т.е. в итоге должно быть три кампа: UC7400, Сервер БД, АРМ

Как такая конфигурация будет выполнена? А?

В текущем состоянии это неочевидно вообще! (ИМХО)


А не мальнького документа API Вам не достаточно: http://wiki.oscada.org/Doc/API ?

А вы думаете это очень удобно? Просматривать код и переключаться в документацию в браузер??
тем более, сразу забывается то что только что посмотрел из-за переключения внимания и теряется связь (цепочка) между тем что видел до этого icon_smile.gif
ИМХО, проще сразу в коде видеть что и кто есть!

[This article was edited 1 times, at last 27.11.2009 at 16:04.]
Written on: 27. 11. 2009 [16:19]
roman
Roman Savochenko
Moderator
Contributor
Developer
registered since: 12.12.2007
Posts: 3750
kuzulis wrote:


OpenSCADA гараздо гибче и имеет более прогрессивную архитектуру, а именно распределённую.
В конфиге и так можно хранить конфигурацию разных станций и поделить можно как угодно.

Дык зачем тогда одни бинарик на всё?

А зачем потом решать неочевидные проблемы производительности и взаимодействия в отдельных бинарниках?

kuzulis wrote:

Неочевидно же всё!

К сожалению OpenSCADA не решает проблем отсутствия фантазии и воображения отдельных пользователей.

kuzulis wrote:

Вот пример:
1. Установить "сервер" на у-во типа MOXA UC7400 , т.е. весь сбор данными и т.п. выполняет этот девайс. (малый объем флэш памяти)

у меня сейчас подобное завёрнуто в прошивку PLC размером в 30Мб вместе с ОС. Что я сделал не так?
kuzulis wrote:

2. БД архивов, трендов и т.п. хранить на другом уже "нормальном" сервере .
3. Рабочую станцию организовать еще на отдельном АРМ

И это у меня отдельно. Что опять не так?

kuzulis wrote:

т.е. в итоге должно быть три кампа: UC7400, Сервер БД, АРМ
Как такая конфигурация будет выполнена? А?

Абсолютно просто. Если бы Вы не отвергали RPM, а глянули как сейчас собирается OpenSCADA, то вы бы поняли. А там есть как раз три виртуальных пакета, которые ставят только то что нужно для конкретного случая, а именно:
- openscada-plc - для контроллеров, среда исполнения.
- openscada-server - для SCADA-сервера.
- openscada-visStation - визуальная SCADA-станция.

kuzulis wrote:

А вы думаете это очень удобно? Просматривать код и переключаться в документацию в браузер??
тем более, сразу забывается то что только что посмотрел из-за переключения внимания и теряется связь (цепочка) между тем что видел до этого icon_smile.gif
ИМХО, проще сразу в коде видеть что и кто есть!

А плохому танцору Вы вкурсе что мешает?!

Learn, learn and learn better than work, work and work.
Written on: 27. 11. 2009 [17:41]
kuzulis
Денис Шиенков
Topic creator
registered since: 10.07.2009
Posts: 128

А зачем потом решать неочевидные проблемы производительности и взаимодействия в отдельных бинарниках?
К сожалению OpenSCADA не решает проблем отсутствия фантазии и воображения отдельных пользователей.


Ну вот смотрите:
допустим все девайсы (что я привел выше) с нуля. И я с нуля собираюсь создать проект.
Проект я буду создавать к примеру с ноутбука, который включу в сеть Eth.
1. Предварительно я скопировал исполняемый файл scadaServer в MOXA и файл scadaWorkStation на АРМ.
Потом беру и устанавливаю на ноут конфигуратор scadaServerConfigurator.
2. Запускаю на MOXA программу-сервер с нуля, без конфига. При этом она создает пустой конфиг у себя и ждет подключения конфигуратора по сети.
3. Запускаю на ноуте конфигуратор-сервера. В менюшке ввожу IP адрес сервера(MOXA). Коннекчусь. При успехе в конфигураторе отображается информация о том что проект пустой и другая служебная инфа о состоянии сервера.
4. В конфигураторе сервера перехожу в режим создания проекта. т.е. создаю имя проекта, транспорты, алгоритмы выполнеия и контроля процесса , пути к серверу БД архивов, трендов и т.п. (т.е. ввожу IP адрес сервера БД), тэги, и т.д. и т.п.
При этом сервер MOXA создает у себя в конф файле нужные ему настройки , а также создает у себя БД с нужной конфигурацией проекта.
5. Потом в ноуте жмакаю что-то типа "запустить сервер" - и смотрю как пошел процесс работы сервера , могу просмотреть тэги и т.п. при необходимости, правильно или нет они читаются и т.п., правильно ли МОХА опрашивает удаленные устройства к примеру по Modbus, Eth и т.п.
Смотрю, правильно ли отображаются тревоги, как идет запись данных в сервер БД и т.п.
6. Если все хорошо - то отключаю ноутбук .. т.к. он больше не нужен.
6. Потом на АРМ запускаю конфигуратор визуализации, прописываю путь в менюшке к серверу MOXA, коннекчюсь к нему.
7. Далее импортирую с сервера тэги и т.п.
8. Далее Рисую мнемокадры и привязываю к тэгам и т.п. В общем рисую визуализалку.
9. При этом конфигуратор визуализации создает конф. файл + создает там где я ему задал БД и т.д.
10. Если все ОК - то запускаю визуализатор..
11.. ВСЁ .. Проверяю - работает он или нет....

Вот так я предполагал примерно процесс создания проекта (в общем)


у меня сейчас подобное завёрнуто в прошивку PLC размером в 30Мб вместе с ОС. Что я сделал не так?

трололо, а у меня в кармане гвоздь.. Вы считаете, той инфы, что Вы сейчас написали достаточно для других? Это Вам может быть все понятно. Так что не нужно заниматься "трололо" - а говорите по делу, как, что, нужно делать с НУЛЯ!


И это у меня отдельно. Что опять не так?

Где? Я не вижу!!!


Абсолютно просто. Если бы Вы не отвергали RPM, а глянули как сейчас собирается OpenSCADA, то вы бы поняли. А там есть как раз три виртуальных пакета, которые ставят только то что нужно для конкретного случая, а именно:
- openscada-plc - для контроллеров, среда исполнения.
- openscada-server - для SCADA-сервера.
- openscada-visStation - визуальная SCADA-станция.

Причем тут RPM ?
Что нужно? Напишите отдельно конкретно - что нужно сувать в тот или иной пакет, подробно что и зачем!
В чем разница среды исполнения от сервера и от станции?
Ведь по сути - это все один и тот же исполняемый бинарик. В *.xml файле?


А плохому танцору Вы вкурсе что мешает?!


трололо. А хороший программист, если хочет, чтобы и другие поняли что он там "накодил" - комментирует свое творение прямо в коде. А если код пуст - то никакого желания и настроения нету разбираться.

---

Ну да, куда уж нам, обычным смертным...









Written on: 27. 11. 2009 [18:14]
almaz
Almaz Karimov
Contributor
registered since: 25.09.2008
Posts: 516
to kuzulis:
Вы не совсем правильно поняли концепцию OpenSCADA. Это не просто клиент-серверная архитектура в обычном понимании. Это сеть распределённых вычислений.
И как эта сеть будет работать решаете только Вы. Зависит от того какие буковки будете вбивать в полях настроек icon_smile.gif .

Каждый комп сети может быть и сервером, и ПЛК, и АРМ одновременно. А деление на сервер, АРМ, ПЛК на разных компах условно.

Допустим имеем Ethernet-сеть с n-ым количеством компьютеров. На каждом запущена OpenSCADA.
1. Любой комп может хранить свою конфигурацию в БД на любом из компов сети (включая себяicon_smile.gif ). Если воспользоваться сетевой файловой системой nfs можно даже файл конфигурации хранить на любом другом.
2. С любого компа можно отразить (зеркалировать) его данные на любой другой посредством шлюза DAQGate.
3. С любого компа можно настраивать дерево OpenSCADA любого другого. И всех одновременно.
4. С любого компа можно отобразить визуализацию любого другого. И себя. И нескольких одновременно.
5. Ну и много чего еще...

Самое главное следить чтобы не образовалось "колец" связей, "рекурсии". Хотя может и это будет работать.

И всё это делает великий протокол Self.

PS Так что та последовательность действий, которую Вы написали выше правильна. Как и множество других возможных.
PS И замените мышку. У Вас похоже колёсик сломан. Слишком быстро прокручивает Вики и Вы не успеваете понять суть icon_biggrin.gif .

[This article was edited 2 times, at last 27.11.2009 at 18:23.]

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Written on: 27. 11. 2009 [19:13]
almaz
Almaz Karimov
Contributor
registered since: 25.09.2008
Posts: 516
В связи с тем, что тема называется "Новые идеи..." добавлю кое-что. Давно собирался написать.

В настоящее время слои между железом (материя) и пользователем (разум) представляют следующую картину:
железо - драйверы - операционная система - пользовательская программа - пользователь

Делаю смелое заявление, что OpenSCADA может стать началом возникновения дополнительного слоя. Для этого слоя операционная система будет представлять своеобразный "драйвер" к одной единице оборудования:
железо - драйверы - операционная система - OpenSCADA - пользовательская программа - пользователь

Конечно, нужны компы побыстрее, но в этом направлении технологии продвигаются безостановочно.

PS Уже сейчас OpenSCADA представляет своеобразную "операционную систему" для сети компьютеров.

[This article was edited 1 times, at last 27.11.2009 at 19:19.]

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Written on: 27. 11. 2009 [20:15]
kuzulis
Денис Шиенков
Topic creator
registered since: 10.07.2009
Posts: 128

Вы не совсем правильно поняли концепцию OpenSCADA. Это не просто клиент-серверная архитектура в обычном понимании. Это сеть распределённых вычислений.
И как эта сеть будет работать решаете только Вы. Зависит от того какие буковки будете вбивать в полях настроек icon_smile.gif .

Каждый комп сети может быть и сервером, и ПЛК, и АРМ одновременно. А деление на сервер, АРМ, ПЛК на разных компах условно.

Допустим имеем Ethernet-сеть с n-ым количеством компьютеров. На каждом запущена OpenSCADA.
1. Любой комп может хранить свою конфигурацию в БД на любом из компов сети (включая себяicon_smile.gif ). Если воспользоваться сетевой файловой системой nfs можно даже файл конфигурации хранить на любом другом.
2. С любого компа можно отразить (зеркалировать) его данные на любой другой посредством шлюза DAQGate.
3. С любого компа можно настраивать дерево OpenSCADA любого другого. И всех одновременно.
4. С любого компа можно отобразить визуализацию любого другого. И себя. И нескольких одновременно.
5. Ну и много чего еще...

Самое главное следить чтобы не образовалось "колец" связей, "рекурсии". Хотя может и это будет работать.

И всё это делает великий протокол Self.


ну это всЁ НЕЯВНО!!! это понятно, что нет ничего невозможного! Но я в конфигураторе не нашел нигде упоминания о IP адресах этих самых узлов/станций в сети !
И опять же. Каким образом в моем случае например (см. ту конфу что я привел выше) сконфигурировать MOXA ТС7400 ?
Ну кину я туда бинарик, ну кину конф. файл(с каким содержимым??) по FTP . Ну запущу бинарик по ssh. А как сконфигурировать дальше то?
Как проверить что оно работает так как нужно?

MOXA 7400 (и т.п.) - это встраиваемый комп на процессоре ARM , который имеет 2хEth порта + 8 serial портов. (такая маленькая коробочка) icon_smile.gif

Ну и как я его буду дальше конфигурировать? Каким образом? И что должно быть (начальная информация) в конфиге в /etc MOXA?

Вот эти начальные моменты вызывают трудности. banghead.gif
Written on: 27. 11. 2009 [21:48]
almaz
Almaz Karimov
Contributor
registered since: 25.09.2008
Posts: 516
Всё задаётся ЯВНО!
В ветке дерева Вашего компа "Транспорты" (в самом корне ветки) вбиваете все компы Вашей сети.
Далее в ветке "Пользовательские интерфейсы" - "Рабочий пользовательский интерфейс" выбираете хост для конфигурирования и всё! Это нужно для того, чтобы местный интерфейс работал для удаленного компа.
В конф-файле достаточно указать с какой БД грузить конфигурацию OpenSCADA данного компа. Там же и IP.
Вместо конф-файла можно подсунуть ссылку на файл по nfs.
PS По ssh не надо запускать. Лучше сконфигурьте демоном с автозапуском при загрузке. Длительной работы по ssh не будет. Проверено!
PSPS А под ARM уже запустили OpenSCADA? А какая ось? Debian иль Gentoo? Или Вы хотите чтобы бинарник под Intel пошёл под ARM?
PSPSPS Что-то слабоват Моха для серьёзных задач. Для простых подойдет. Обязательно следите за нагрузкой на проц. Если, конечно, OpenSCADA на нём работает icon_biggrin.gif.

[This article was edited 3 times, at last 27.11.2009 at 22:36.]

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
Written on: 28. 11. 2009 [08:32]
almaz
Almaz Karimov
Contributor
registered since: 25.09.2008
Posts: 516
Вопрос работы OpenSCADA на ARM довольно интересен.
Не нашёл ту железку, которую Вы указывали, но посмотрел MOXA UC-7410-LX Plus, универсальный коммуникатор с 8 портами RS-232/422/485, двумя 10/100 Ethernet, Linux OS 2.6
Её можно применить для ввода-вывода данных по последовательным каналам и для несложной обработки. Для более сложных задач слабоват.
Процессор Intel XScale серии PXA 27x. Архитектура ARM 5TE. Linux ядро 2.6, более ранние модели - ядро 2.4

Потребуется откомпилировать OpenSCADA на этой железке. Работа непростая, с возможными изменениями исходного кода OpenSCADA. Да и зависимости (доп пакеты) надо будет искать-собирать.

Может быть проще это выполнить на каком-нибудь эмуляторе ARM.
http://www.thefreecountry.com/emulators/arm.shtml

На английском форуме была начата работа по сборке OpenSCADA на ARM, но, видимо, до конца не доведена...
http://oscada.org/index.php?id=24&L=0&tx_mmforum_pi1[action]=list_post&tx_mmforum_pi1[tid]=87



[This article was edited 1 times, at last 28.11.2009 at 08:50.]

21 век - век повсеместной автоматизации. Главное - во благо всем людям.
| 1 | 2 | Last



2743