logo

3.2. Программное обеспечение управления непрерывными процессами

Как правило, на промышленных предприятиях с контроллерами работают не программисты, а технологи, хорошо знающие специфику объектов управления и технологического процесса. Для описания процессов обычно используются такие языки, как язык релейно-контактных схем, функциональных блоков и так далее, теоретические основы которых взяты из методов автоматического управления. Сразу же после появления программируемых устройств снижение сложности программирования стала одной из главных забот всех разработчиков.  Интересен момент выделения из общего дерева программных средств языков технологического программирования. Это событие стало результатом осознания особенностей задач, стоящих перед разработчиком АСУТП, и желанием приблизить алгоритмиста-технолога к написанию прикладных программ. Для удобства технологов программы стали представлять в графическом виде, привычном для проектировщиков АСУТП: релейно-контактных схем (RCS), функциональных блоковых диаграмм (FBD), (SFC). К концу 80-х годов, как вершина этого подхода, был разработан стандарт IEC1131-3. Опубликованный в 1988г, он включил в себя 5 языков технологического программирования: перечисленные выше графические плюс текстовые ST и IL. На момент своего принятия стандарт использовал современные технологии программирования и стал важным этапом развития языков технологического программирования, существенно облегчив разработчикам создание прикладных программ. Важно отметить, что использование данного стандарта полностью соответствует концепции открытых систем, а именно, делает программу для контроллера независимой от конкретного оборудования - ни от типа процессора, ни от операционной системы, ни от плат ввода-вывода. Однако, поставленную задачу - стать средством программирования для технологов - языки стандарта не решили и решить не могли, т.к. структура описания алгоритма, естественная для технолога (примером которой может служить любая инструкция оператора-машиниста), принципиально отличается от структур языков 1131-3.  В 90-х годах в мире программирования произошла настоящая революция, связанная с внедрением объектной и компонентной технологий. Однако, перевернув весь программистский мир, они лишь всколыхнули поверхность в «стране» АСУТП. Знакомство с новейшими пакетами нескольких очень известных фирм разочаровывает - новые технологии используются преимущественно в графических и цифровых интерфейсах, почти не повлияв на внутреннюю организацию систем. Последняя редакция IEC1131-3, опубликованная в 1999 г, вообще не обратила на них никакого внимания, хотя при программировании систем реального времени эти технологии дают максимальный эффект. Фактически, первоначально удачный стандарт превратился сейчас в тормоз, а не стимул развития средств технологического программирования. Характерно, что наиболее эффективные SCADA-системы, например Genesis32, в качестве встроенного средства программирования используют не языки 1131-3, а различные варианты Visual Basic - объектность и компонентность языка перевешивают его «нетехнологичность», но естественным для алгоритмиста-технолога такой язык не является. Использование современных технологий позволяет уже сейчас создавать системы программирования действительно дружественные для алгоритмиста-технолога. Основой современной системы технологического программирования являются:

– объектный подход; – компонентная структура; – технология «промежуточного слоя» с микроядром; – непроцедурное программирование. Объектный подход - мощная современная технология проектирования и программирования, разработанная в конце 80-х годов. К настоящему времени АСУТП в силу большой инерционности остается одной из наименее освоенных этой технологией областей. Он практически не используется в системах технологического программирования, а при организации управления «объектность» не поднимается выше уровня задвижки и регулятора. Преимущества объектного подхода в сравнении с функциональным доказаны как теоретически, так и 15-летней практикой его использования. В системе технологического программирования очень важны такие преимущества объектной технологии как естественный параллелизм описания процессов, легкость расширения набора функций без изменения структуры системы (например, при переходе от информационной системы к управляющей), простота расширения системы при увеличении объема автоматизации объекта, эффективность тиражирования на аналогичные объекты. Компонентная структура - современная технология построения программной системы из набора типовых элементов (компонентов). Для всех компонентов разрабатывается единый протокол взаимодействия с исполняющей системой, пользователями и другими компонентами. При программировании конкретного компонента достаточно описать внутреннюю логику его работы и реализацию указанного протокола, а все взаимодействия с окружением реализует исполняющая система. Использование технологии существенно сокращает сроки разработки и увеличивает надежность программного обеспечения. Технология «промежуточного слоя» - современная технология, обеспечивающая высокую степень переносимости ПО путем создания в программной системе внутреннего системного слоя и максимальной локализации и стандартизации его взаимодействия с операционной системой. Многослойная организация системы полностью изолирует технологическую логику работы прикладного ПО от используемых технических и низкоуровневых программных средств, обеспечивает высокую переносимость программного комплекса. «Последним словом» данной технологии является использование виртуальных машин обеспечивающих максимальную переносимость программного кода. Непроцедурные языки - современное направление системного программирования, позволяющее сконцентрировать внимание разработчика на описании целей и правил, а не на последовательности действий по их реализации (т.е. описывается «что делать» вместо «как делать»). Использование непроцедурного языка обеспечивает максимально возможную простоту и понятность программ для разработчика-технолога, перенося сложности процедурной реализации на системный уровень, что сокращает трудоемкость и сроки разработки, увеличивает надежность ПО. ^