Разработка небольшой СКАДА. Помогите советами.

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Разработка небольшой СКАДА. Помогите советами.

Сообщение son » 02.12.2011 11:23:35

Здравствуйте. Я решил написать СКАДА для небольших автоматик и для общего развития. Я только начал и столкнулся с проблемой выбора структуры проекта и хочу спросить вашего мнения и совета.
На данный момент делаю редактор верхнего уровня . Хочу сделать похожей на среду lazarus. На форме располагаются компоненты (потомки TControl), которые описаны в модулях самого редактора, что очень ограничивает расширение системы. Хотелось бы что бы компоненты можно было редактировать отдельно и подгружать в редактор. То есть хранить компоненты в отдельных dll например. Можно ли такое сделать или нет? Или есть альтернативные решения?
На данный момент форма с элементами сохраняется как файл ресурсов:
Код: Выделить всё
WriteComponentResFile(UTF8ToSys(SaveDialog1.FileName), (ActivePicture as Tform));

При добавлении на форму компонента регистрируется класс:
Код: Выделить всё
RegisterClass(THMIBaseControl);
    RegisterClass(THMIRectangle);
    RegisterClass(THMILabel);

    Pc := GetClass(SelectComponentType);
    if Pc <> nil then
    begin
      Ctrl := TControlClass(Pc).Create((Sender as TForm));
      Ctrl.Parent := (Sender as TForm);
      Inc(countObj);
      Ctrl.Name := Copy(SelectComponentType, 2, Length(SelectComponentType)-1) + IntToStr(countObj);
      Ctrl.Left := X;
      Ctrl.Top := Y;
      Ctrl.Caption := Ctrl.Name;
      THMIBaseControl(Ctrl).OnMouseDown:=@NetComponentBoxMouseDown;
      THMIBaseControl(Ctrl).OnMouseMove:=@NetComponentBoxMouseMove;
      THMIBaseControl(Ctrl).OnMouseUp:=@NetComponentBoxMouseUp;
      THMIBaseControl(Ctrl).OnClick:=@NetComponentBoxClick;
    end;

вот ссылка на екзешник: http://www.azbuka-softa.ru/wp-content/uploads/2011/12/HMIEditor.zip.
Буду очень благодарен вашим советам.
son
новенький
 
Сообщения: 39
Зарегистрирован: 22.11.2011 11:50:58

Re: Разработка небольшой СКАДА. Помогите советами.

Сообщение v-t-l » 02.12.2011 12:05:42

А я бы не стал заморачиваться с пользовательскими интерфейсами, а сосредоточился бы на сервере сбора информации и управления оборудованием. А потом, добавив к нему веб-сервис, можно нарисовать любые интерфейсы для браузеров (xul-runner и т.п., android, iOS, хоть телевизор с современным браузером) - с разными веб-сокетами, Dojo, jQuery, интерактивными SVG, красивостями, анимациями и WebGL-ями.
v-t-l
энтузиаст
 
Сообщения: 741
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: Разработка небольшой СКАДА. Помогите советами.

Сообщение son » 02.12.2011 13:07:44

v-t-l писал(а):А я бы не стал заморачиваться с пользовательскими интерфейсами, а сосредоточился бы на сервере сбора информации и управления оборудованием. А потом, добавив к нему веб-сервис, можно нарисовать любые интерфейсы для браузеров (xul-runner и т.п., android, iOS, хоть телевизор с современным браузером) - с разными веб-сокетами, Dojo, jQuery, интерактивными SVG, красивостями, анимациями и WebGL-ями.

Спасибо за мнение. С сервером сбора информации пока не хватает решимости начать (предновогодняя лень), но тоже считаю что это конечно основа. По поводу веб-сервиса у меня есть опыт работы в скаде с верхним уровнем реализованным на веб-технологии. Основная претензия к нему это проигрыш в скорости работы по отношению к скадам с другим принципом. В основном это не играет большой роли, но все же. Да и к тому же хотелось бы разобраться с механизмом работы с компонентами.
son
новенький
 
Сообщения: 39
Зарегистрирован: 22.11.2011 11:50:58

Re: Разработка небольшой СКАДА. Помогите советами.

Сообщение v-t-l » 02.12.2011 15:00:55

son писал(а):проигрыш в скорости работы по отношению к скадам с другим принципом

см. http://websocket.org/, http://ru.wikipedia.org/wiki/WebSocket
v-t-l
энтузиаст
 
Сообщения: 741
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Re: Разработка небольшой СКАДА. Помогите советами.

Сообщение alexey38 » 02.12.2011 15:29:21

Я являюсь соавтором одного действующего проекта специализированной СКАДы, поэтому есть практический опыт.
Я предлагаю Вам еще до написания кода и выбора программных технологий сформулировать основные принципы или требования, чего Вы хотите получить:
1. Нужно ли Вам жесткое реальное время. Если нужно то какие требования по гарантированной скорости реакции. Ответ на этот вопрос может изменить даже аппаратную составляющую Вашей Скады.
2. Какие устройства предполагаете использовать в качестве объектов сбора или объектов управления. Это определит перечень требуемых интерфейсов и технологий для работы с оконечными устройствами. Например, Вы можете встаить в компьютер специализированную плату ввода/вывода, а можно работать через USB или через Ethernet.
3. Какие ключевые особенности Вашей Скады от других Скад. Что для Вас важно, а что не важно.
4. Вам нужна гибкость конфигурирования (для применения в любой области промышленности) или жесткая модель данных (под некие типовые для Вас задачи).
5. Вам нужна распределенность. Если нужна то на какие расстояния.
6. Вы предполагаете, что конфигурировать ее будут люди сторонние от программирования. Если делаете ее для себя, то конфигуратором может служить сама ИДЕ (Лазарь или иная среда программирования).

Мое лично мнение, что не следует начинать со среды конфигурирования. Нужно начинать со среды исполнения. Начните реализовывать как будто уже где-то сконфигурированный проект.
Если делать наоборот, Вы потратите много времени на то, что не надо, и не сделаете то, что нужно было в первую очередь.
alexey38
долгожитель
 
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31

Re: Разработка небольшой СКАДА. Помогите советами.

Сообщение son » 02.12.2011 16:25:55

Спасибо за ответы. Видимо я немного ввел вас в заблуждение сказав, что хочу реализовать СКАДА. Аппаратная часть существует в виде контроллера, с доступом по Modbus. Все таки это всего лишь среда отображения уже существующей аппаратной части. Просто хочу создать простой конфигуратор в котором можно было создать "рисунок" с активными элементами и среду выполнения для их работы.
1. Нужно ли Вам жесткое реальное время. Если нужно то какие требования по гарантированной скорости реакции. Ответ на этот вопрос может изменить даже аппаратную составляющую Вашей Скады.

Хотел уменьшить время отклика верхнего уровня за счет прямого чтения с драйвера без промежуточной базы данных тегов.
2. Какие устройства предполагаете использовать в качестве объектов сбора или объектов управления. Это определит перечень требуемых интерфейсов и технологий для работы с оконечными устройствами. Например, Вы можете встаить в компьютер специализированную плату ввода/вывода, а можно работать через USB или через Ethernet.

Уже есть контроллер и программа в нем, с доступом по Modbus.
4. Вам нужна гибкость конфигурирования (для применения в любой области промышленности) или жесткая модель данных (под некие типовые для Вас задачи).

Хотелось бы действительно реализовать гибкую систему, благодаря которой ее можно было бы расширять за счет новых компонентов (отображения или например драйверов).
6. Вы предполагаете, что конфигурировать ее будут люди сторонние от программирования. Если делаете ее для себя, то конфигуратором может служить сама ИДЕ (Лазарь или иная среда программирования).

Вот тут я на распутье. Создание компонентов для IDE путь более простой, но это привязывает к какой то конкретной. Поэтому начал делать свою среду редактирования и конфигурации.

Видимо работа требует большего осмысления. Попробую пока реализовать чтение с устройства без заморочек со средой конфигурирования.
son
новенький
 
Сообщения: 39
Зарегистрирован: 22.11.2011 11:50:58

Re: Разработка небольшой СКАДА. Помогите советами.

Сообщение alexey38 » 02.12.2011 17:52:53

Рекомендую Вам в первую очередь реализовать чтение в виде отдельного потока, т.к. модбас потоковый и асинхронный протокол. И формировать некую структуру данных (назовем ее базой данных реального времени), находящуюся в оперативной памяти.

В качестве редактора формы в самом начале удобно использовать IDE (Лазарь). Можете при этом создавать свои компоненты, как элементы отображения (под Вашу задачу), основанных на стандартных компонентах, только лишние свойства скрывайте, а нужные добавляйте (например, привязку к регистрам Модбаса). Если потом будете делать свой редактор форм, то будет база готовых элементов (компонентов), т.е. эта работа пригодиться в любом случае.

Продумывая прочий функционал определитесь:
1. Необходимость архивирования данных с контроллера.
2. Необходимость обработки данных, например, их модификация или формирование событий по граничным условиям.
3. Необходимость отображения на нескольких компьютерах в рамках локальной или глобальной сети
4. Необходимость резервирования архивов и обработки (для повышения надежности, если назначение системы ответственное или она не обслуживаемая).
alexey38
долгожитель
 
Сообщения: 1627
Зарегистрирован: 27.04.2011 19:42:31


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 230

Рейтинг@Mail.ru