ЖУРНАЛ «СТА» №1/2008
611313 заключается в дописывании дополнительного кода на C. Этот метод содержит несколько неприятных под- водных камней: вопервых, «распухает» сама целевая задача, а вовторых, лю- бое изменение кода виртуальной ма- шины несет опасность внесения в него ошибки, а значит, угрожает задачам МЭК 611313, выполняющимся под ее управлением. Альтернативным спосо- бом расширения виртуальной машины МЭК 611313 может служить использо- вание динамических библиотек (DLL), однако, хотя этот подход и позволяет сэкономить на объёме кода виртуаль- ной машины, безопасности программ- ному обеспечению не добавляет. Разработчики виртуальной машины МЭК 611313 для DACHS пошли по другому пути (рис. 1) Как виртуальная машина, так и ее модули расширения в виртуальных ПЛК DACHS оформлены как отдельные процессы в операцион- ной системе; модули расширения мож- но запускать и выгружать динамически — на объем кода виртуальной машины они не влияют. Мало того, являясь от- дельными процессами, они выполня- ются каждый в своем собственном за- щищенном адресном пространстве и не могут навредить ни друг другу, ни виртуальной машине. Но и это еще не все. Вариативную (то есть зависящую от конкретного приложения) часть мо- дуля расширения тоже можно изме- нять динамически – сделано это за счет применения в модулях расшире- ния интерпретатора объектноориен- тированного языка сценариев Python; эта концепция получила название PyDACHS. Инвариантная часть модуля расширения оформляется как подклю- чаемая библиотека классов Python, ва- риативная же пишется как сценарий Python, и ее можно в любой момент от- редактировать обычным текстовым ре- дактором и импортировать снова, что, кстати, еще и упрощает обслуживание на стадии тестирования. Почему был выбран именно Python? Можно назвать как минимум пять причин. Вопервых, интерпретация дает гораздо более короткий цикл от- ладки: результат корректировки ис- ходного текста можно проверить сразу, не прибегая каждый раз к цепочке «компиляция — компоновка — про- гон». Вовторых, объектная ориента- ция упрощает проектирование, осо- бенно если говорить о сопряжении со средствами программирования МЭК 611313: объекты Python — фактически готовые функциональные блоки. Втретьих, код Python компактен: вы- игрыш по сравнению с C++ может до- стигать 510 раз! Вчетвертых, Python очень популярен, хорошо документи- рован, и для него существует огром- ный выбор прикладного программно- го обеспечения с открытым исходным текстом. И, наконец, впятых, Python легко расширяем — дополнительные библиотеки классов без труда реализу- ются на C или C++. Изменения, которые при этом пре- терпела сама виртуальная машина МЭК 611313, оказались минимальны: в нее просто добавились примитивы межзадачного взаимодействия (IPC – InterProcess Communication), позволя- ющие задачам МЭК 611313 стандарт- ным способом обращаться к модулям расширения. Таким образом, с точки зрения задач МЭК 611313, исполняю- щую их виртуальную машину можно рассматривать как микроядро с дина- мически подключаемыми сервисами. К операционной системе (ОС), под управлением которой работает такой виртуальный ПЛК, должны предъяв- ляться достаточно жесткие требования. Вопервых, система управления долж- на быть предсказуемой – потеря дан- ных в системе управления абсолютно недопустима. Следовательно, приме- няется ОС жесткого реального време- ни с вытесняющей многозадачностью. Вовторых, необходимо поддерживать большое количество различного обору- дования: коммуникационных адапте- ров, плат вводавывода и т.п., — ассор- тимент которого постоянно меняется. Значит, применяемая ОС должна пре- доставлять простые механизмы интер- фейса с оборудованием, чтобы можно было в случае необходимости быстро разработать нужный драйвер. Втреть- их, ОС должна легко встраиваться в ус- тройства с ограниченными ресурсами и поддерживать бездисковые конфигу- рации. И, наконец, вчетвертых, для повышения отказоустойчивости необ- ходимо обеспечить безопасность про- цессов, чтобы они своими действиями не могли навредить как друг другу, так и системе. Это реализуется в ОС, кото- рые предоставляют процессам отдель- ные защищенные адресные простран- ства. Исходя из перечисленных критери- ев, для реализации виртуального ПЛК в DACHS была выбрана встраиваемая ОС жесткого реального времени QNX. Сначала это была QNX4, теперь же в DACHS применяется и QNX6, что поз- волило еще больше понизить «порог встраиваемости». Дополнительным преимуществом QNX является то, что она обладает встроенной поддержкой прозрачных механизмов сетевого взаи- модействия, позволяя объединять узлы QNXсети в единую логическую сово- купность ресурсов и упрощая тем са- мым построение распределенных сис- тем. В ряде отраслей очень популярны SCADAсистемы, работающие под уп- равлением QNX, соответственно при- менение в таких случаях QNX и на П Р О Г РАММНО Е ОБ Е С П Е Ч Е НИ Е / РАС П Р Е Д Е Л Е ННЫ Е СИС Т ЕМЫ У П РА В Л Е НИ Я СТА 4/2001 www.cta.ru 55 Рис. 1. Расширенный виртуальный ПЛК в DACHS®
Made with FlippingBook
RkJQdWJsaXNoZXIy MTQ4NjUy