Модераторы: Се ля ви
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Организация данных внутри программы 
:(
    Опции темы
LeonidPr
Дата 20.3.2019, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 17.2.2012
Где: г. Чебоксары

Репутация: нет
Всего: 1



Всем привет.

Временами приходится писать десктопные программки для опроса того или иного разрабатываемого девайса.
Когда девайс один (или однотипные на одной шине RS-485 например) все как-то легко и просто.
Но каждый раз понимаю, что пишу нечно нерасширяемое и одноразовое.
Задачка простая,

есть кучка интерфейсов и протоколов (например RS-485, Ethernet и может CAN) ну и протокол к примеру ModBus и какой-нить CanOpen.
У устройства есть некие параметры (уставки, текущие измеряемые величины и т.п.)
Надо вычитывать все это, логировать и возможно делать некую визуализацию.
В приниципе то, что делают SCADA системы, только в урезанном формате.

Вот и думаю, как все это хранится внутри?
Каждый параметр который мы считываем из устройств или пишем в него можно описать структуркой навроде Variant типа. Т.е. универсальное такое хранилище, которое знает что в нем сейчас (int, float или что-то еще).
А теперь я так понимаю надо делать какое-то централизованное хранилище всего этого?
Что бы потом остальные части (логгер, GUI и т.п.) могли из него брать или писать.

Так вот вопрос как организовать такое хранилище?
Может это должна быть какая-то RAM субд? Которая для ускорения работы не использует накопитель.
Вторая проблема это то, что к примеру какие-то из параметров мы не только считываем, но и записываем. Пусть будет некий порог тока или напряжения, при превышении которого устройство должно выдать сигнал. Так вот надо как-то привязать этот параметр (в хранилище) к модулю, который знает как и куда его записать.

Если можете посоветовать литературу буду благодарен, возможно есть паттерны полезные для организации подобных систем?
Реалтайм пока даже не рассматриваю понять бы как всю эту кухню организовать.

--------------------
pkunzip.zip
PM MAIL   Вверх
LSD
Дата 21.3.2019, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15708
Регистрация: 24.3.2004

Репутация: нет
Всего: 537



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


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
LeonidPr
Дата 21.3.2019, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 17.2.2012
Где: г. Чебоксары

Репутация: нет
Всего: 1



Не совсем так.
Вопрос как организовать централизованный доступ к некоему набору параметров для всех модулей программы,
При этом для некоторых из них, если какой-то из модулей изменяет параметр, то другие модули должны об этом узнать и обработать это событие.
Ну и параметры и связь их с модулями конечно делать динамическими, например задавая в неком конфиге, что бы при старте к примеру программа вычитывала его и создавала конфигурацию для работы.
--------------------
pkunzip.zip
PM MAIL   Вверх
LSD
Дата 29.3.2019, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15708
Регистрация: 24.3.2004

Репутация: нет
Всего: 537



Если это все в рамках одного приложения: 
  •  создаешь некое централизованное хранилище для этих параметров, которое будет их хранить, сохранять в базу/файл и загружать оттуда
  •  хранилище предоставляет API для изменения этих параметров
  •  хранилище предоставляет API регистрации слушателей об изменениях параметров
  •  модули которым интересно получать уведомления об изменениях параметров: подписываются на события
Что касается подписки на конкретный тип изменений конфигурации: я не думаю что это стоит делать конфигом. Модуль подписывается на изменения не потому что его так сконфигурировали, а потому что он использует для работы этот конфиг и знает что делать в случае его изменения.
По поводу подписки только на интересующие типы сообщений: если сообщений мало (конфиги обычно не так часто меняются), то можно рассылать всё всем, а уже в каждом конкретном модуле в обраточике реагировать только на интересующие обновления. Если событий много и не хочется слать всё всем, то надо добавлять фильтры по типам  конфигов, в случае древовидных конфигураций (наподобие XML или JSON) можно фильтровать по поддереву, можно добавлять теги, сложно предложить что-то конкретное не зная структуры и характера данных. Или каждый модуль может предоставить функцию которая будет говорить интересен ли данный апдейт данному модулю. Но это почти то же самое, что и первый вариант.


Если это несколько независимых приложений то можно делать тоже самое, только используюя некую messaging system.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
LeonidPr
Дата 16.4.2019, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 17.2.2012
Где: г. Чебоксары

Репутация: нет
Всего: 1



LSD, спасибо за развернутый ответ!
Что-то примерно такое в голове и крутится. Насчет подписки на события вот не подумал, надо будет поразбираться.
--------------------
pkunzip.zip
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Системный анализ, проектирование и UML"
Се ля ви

Форум "Системный анализ, проектирование и UML" предназначен для обсуждения вопросов, так или иначе связанных с этапами жизненного цикла автоматизированных (программных, информационных, автоматических) систем:

• предпроектные обследования объектов автоматизации;

• разработка концепции создания систем;

• моделирование бизнес-процессов (в т.ч. на UML);

• проектирование архитектуры систем;

• управление проектами;

• управление качеством;

• CASE-средства;

• реинжиниринг.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Се ля ви.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Системный анализ, проектирование и UML | Следующая тема »


 




[ Время генерации скрипта: 0.1099 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.