Немного информации по текущим доработкам, коих за
последнее время прибавилось. Все подряд не буду перечислять, там на много
страниц только список, так что, пройдусь по основным ключевым моментам и
достижениям:
- Добавил экспорт наработок из других проектов. Вот
так часто бывает – сидишь, разрабатываешь проект, и понимаешь, что нечто
похожее ты уже делал в другом проекте. Теперь просто открываешь другой
проект и указываешь, что и куда ты хочешь экспортировать. Поддерживается
экспорт графических экранов, алгоритмов, описателей связей с внешним
оборудованием и интерфейсами, а также логическая структура проекта - то
есть можно не кусочками переносить, а прямо наработками, состоящими из
набора компонентов проекта и связями между ними, причем - с сохранением
всех логических привязок, без нарушения логики работы переносимой группы.
- Очень серьезно проработал разделение пересчета
математики и графики на отдельные потоки. Теперь графика работает в своем
потоке вообще отдельно от пересчета логики и базы параметров. Благодаря
этому удалось значительно снизить общую нагрузку на ресурсы ПК при работе
рантайма и увеличить скорость обновления экранов.
- Добавил тренды реального времени.
- В графике появился штатный компонент отображения
журнала событий из СУБД.
- Появилась функция сохранения текущей версии
проекта в момент "падения" среды разработки. Да, не все идеально
и бывают ошибки, порой очень обидно осознавать, что только что потерял
несколько минут творчества из-за глюка. Поэтому малость доработал систему
до такой интересной штуки - теперь если среда разработчика неожиданно
падает, она выцарапывает из памяти весь текущий образ проекта и перед тем
как завалиться - сохраняет его в резервный файл. Это дает возможность
потом через штатный экспорт между проектами хотябы перенести то, что до
падения успел наработать и не сохранить. А зачастую проще даже просто
продолжить работу по разработке взяв эту резервную копию и переименовав ее
в основной файл проекта.
- Разработана технология внедрения моей скады в уже
существующие проекты на других системах. Сделал шлюзовое ПО, которое
позволяет подключиться к таким системам и превратить их в
источники-приемники параметров по сети Ethernet для моей скады. В самой
среде разработки добавил функции автоматической генерации таких привязок к
параметрам проекта, что позволяет в считанные секунды конфигурировать
привязки внутри проекта через шлюз к сторонней системе и минимизировать
ручной ввод и параметризацию, что обычно ведет к ошибкам из-за
человеческого фактора. Уже опробовал данное решение на проекте с тысячами
шлюзовых параметров, эффект - колоссальная экономия времени при разработке
проекта! Кроме того - данное решение позволяет производить
последовательную замену текущей системы на систему на базе моей скады,
постепенно заменяя узлы комплекса без нарушения целостности и функционала
системы в целом.
- Серьезно проработал обработку статуса
Достоверности сигналов по графике – наверное, впервые не придется городить
сложные схемы из логических обвязок и танцев с бубном при реализации
интерфейсов, где заказчик требует отображать недостоверность данных или
цветом или значениями (при текстовом выводе). Теперь все дискретные
состояния в графике имеют не два статуса как обычно принято (True\False),
а три: True, False, Недостоверно. А для текстовых выводов значений или
строк можно задавать фиксированные шаблоны текста для недостоверных
данных. Честно говоря, во многих скадах этот вопрос вообще не проработан,
и разработчики предлагают решать их с помощью штатных функций системы, но
в виде дополнительных "обвесов", что очень усложняет порой сам
проект.
- В Профайлере добавлено окно дерева проекта, через
которое можно получить доступ к структуре проекта в реальном времени,
посмотреть текущие значения атрибутов и аргументов любого канала, а также
вручную ввести новые значения. Кроме того окно также позволяет быстро
переходить по привязкам в дереве, осуществляя быструю навигацию по
маршруту обработки данных в проекте, чтобы отследить корректность их
обработки. Даешь полноценное и УДОБНОЕ средство отладки проекта в
исполнительном мониторе! Ой как спасает при пуско-наладке на объекте,
когда в любой момент можешь посмотреть всю логическую внутренность проекта
в развернутом виде с "человеческим" интерфейсом и
представлением, а не в виде жалкого подобия "замочных скважин"
для подглядывания за текущими значениями параметров работающей системы.
Уже опробовал на собственной шкуре на объекте - реальная
"фишка"!
- Добавлена функция регистрации действий операторов
в Журналах. Теперь все действия оператора могут регистрироваться в
журнале, не только логин-логаут, но и его операции в графическом
интерфейсе рантайма.
- Добавлена возможность запуска внешних приложений
по команде оператора или программно из алгоритмов проекта, с указанием
пути к приложению и его параметров запуска без каких либо ограничений на
длину командной строки.
- Появился сетевой обмен между узлами проекта!
Наконец-то доработал сервис сетевого обмена, теперь можно строить
многоузловые проекты с обменом по сетям Ethernet! Причем обмен работает не
только числовыми данными, но и строковыми, и даже - динамическими
массивами!
- Появилась функция автоматического масштабирования
графического интерфейса в рантайме под размеры окна рантайма. Теперь при
нажатии комбинации горячих клавиш Ctrl+S графика в рантайме автоматом
масштабируется под размеры окна рантайма без потери качества и функций
управления. Забавно показывать данную функцию - почти 99.9% разработчиков,
кто ее увидел, особенно из тех, кто мотается на объекты для пуско-наладки,
"писали кипятком". да я тут
сам тоже с ней поигрался вдоволь на одном из объектов, потому что вечная
проблема: на объекте у штатных АРМов стоят широкоформатные мониторы с
соответствующим разрешением экрана, а ты приезжаешь на объект с ноутбуком,
у которого дай бог хотябы 70% этого разрешения можно выставить. И вот,
когда начинаешь запускать АРМ на своем буке в процессе доработки проекта в
среде разработчика - понимаешь, что выглядит это на ноуте ой как не очень
адекватно. Вот тут и
спасает данная функция. Ну и вообще - теперь не надо заморачиваться особо
разрешениями в проекте - потому что можно в самом рантайме при старте или
сжать или растянуть графику на любой размер без каких-либо последствий для
его функциональности.
- Добавил функцию автозапуска рантаймов без
мучительного конфигурирования командной строки. Командная строка конечно
же тоже поддерживается, но зачастую когда начинаешь конфигурировать
автозапуск АРМа через нее, начинаются танцы с бубном вокруг путей с пробелами
и прочей ерунды в параметризации этой строки запуска. У себя решил
проблему достаточно просто и оригинально. Стартует только ехе-шник
рантайма, и только ехе-шник задается в системе для автозапуска, никаких
путей и прочей ерунды, чтобы не заморачивать голову разработчику, все
остальное удобно задается в специальном конфигурационном файле, позволяя
избежать разного рода особенностей командной строки запуска приложения.
- И наконец - очень серьезная доработка: горячее
резервирование серверов и АРМов. Теперь система штатно поддерживает
функцию горячего резервирования серверов или АРМов по сети Ethernet с
функцией синхронизации данных между Мастером и Слейвом в реальном времени.
Введен ряд системных переменных, которые позволяют не только мониторить
текущую работу в данном режиме, но и управлять ей. Часть логики горячего
резервирования выполнена в виде автоматических функций: контроль наличия
резерва при старте, переход в Мастер при потери связи, синхронизация
данных между узлами. Однако предусмотрена возможность принятия в любой
момент времени решения разработчиком проекта - то есть какой бы
автоматической ни была система управления, приоритетными вопросами все же
можно управлять в логике проекта. Кроме того введено понятие арбитража,
которое позволяет принимать системе однозначные решения в неоднозначных
ситуациях по заранее заданным правилам. В общем и свобода для творчества
есть и если лень творчеством заниматься, то будет и штатно все работать.
- Благодаря введению горячего резервирования для
серверов, появилась функция горячего резервирования оборудования по
протоколу ModBus TCP/IP - можно задавать список IP-адресов оборудования
для резерва, и в реальном времени система будет либо автоматически переключаться
между ними в случае потери связи, либо по команде извне переходить на
следующий резервный адрес в режиме непрерывной работы узла.
Как-то так, укрупненно... Если детально - то постоянно ведется работа над
ошибками, дорабатываются сервисы для разработчика в среде разработки. Система
становится лучше и стабильнее!
На текущий момент уже два сторонних разработчика выполняют проектирование своих
систем на базе моей скады, ожидаю результатов в ближайшее время.
Ну и конечно же ведем постоянное взаимодействие в процессе.
Кроме того - уже где-то с месяц готовый проект на базе моей скады работает на
реальном объекте. Причем система не маленькая - объем параметров под 2000 точек
ввода/вывода. Несколько узлов.
К сожалению, предоставить более детальную информацию не могу - заказчик не
позволяет. Поэтому, хотите верьте, хотите нет, но доказать пока не могу.
Причина замены системы - заказчика достало бороться с багами ТМ6, из-за
серьезных проблем его инженерам приходится чуть ли не жить на объекте, чтобы
заставить хоть как-то дышать систему на ТМ. А также нелюбимые темы ТМ: архивы,
отчеты и другие подсистемы, работа которых оставляет желать лучшего.
В общем многие вещи, что сейчас в моей скаде появились были разработаны именно
благодаря этому внедрению. Я пока еще продолжаю его, поэтому все в процессе и
не сразу, работать приходится как обычно в свободное время. Но
очень значимое для меня достижение, которое уже реально работает!
|