Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на билеты оборудование НГ производств.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
4.04 Mб
Скачать
  • · модули дискретных входов/выходов;

  • · коммуникационные модули;

  • · модули аналогового ввода/вывода;

  • · модули терморегуляторов;

  • · модули позиционирования;

  • · модули ПИД-регулятора;

  • · модули контроля движения.

  • Построение распределенных систем управления с помощью SCADA-пакета PcVue

  • В статье рассматриваются возможности SCADA-пакета PcVue компании ARC Informatique для создания сложных распределенных систем управления, а  также дополнительные средства интеграции PcVue с другими пакетами для АСУ ТП, такими, как Dream Report, IntraVue, CoDeSys, UnityPro и ISaGRAF.  

  • Компания «ФИОРД», г. Санкт-Петербург 

  •  

  • Архитектура SCADA-пакета PcVue ориентирована на создание систем диспетчерского контроля и управления различного масштаба, начиная от автономных операторских мест и кончая распределенными АСУ, в которых задействованы сразу несколько рабочих станций, объединенных в сеть. Архитектура клиент-сервер и обмен данными между станциями являются  базисными для PcVue. Как результат этого, версия  PcVue v8.1 (последняя на сегодняшний день) является гибким решением для диспетчеризации в области АСУ ТП и централизованного управления зданием или инфраструктурой. Достигая промышленных стандартов надежности и производительности, это решение удовлетворяет запросы как приложений для простых одиночных станций, так и клиент-серверных приложений с возможностями избыточности и безопасности (рис. 1). 

  • Рис. 1. Пример архитектуры PcVue: резервирование серверов, клиентов и промышленных сетей

  • Когда PcVue используется в сетевом многостанционном приложении, он использует базу данных с поддержкой удаленного доступа. Переход от автономной конфигурации к распределенной архитектуре в сети Ethernet TCP/IP с избыточными серверами данных столь же прост, как и регистрация в сети. Используя встроенную поддержку избыточности, PcVue позволяет гарантировать непрерывность сбора данных в случае отказа отдельных системных компонент. PcVue также поддерживает дублированные сети и для оборудования, подключенного  к полевым шинам, и для станций PcVue. Пример реализованной распределенной системы с дублированием элементов и двухэкранными рабочими местами операторов показан на рис. 2. Каждый компонент и каждая станция в конфигурации имеют признак состояния достоверности, который позволяет упростить диспетчеризацию работоспособности системы в режиме реального времени. 

  • Рис. 2. Пример применения PcVue: распределенная система

  • целлюлозно-бумажного комбината Condat (Франция)

  • Централизованное и динамическое конфигурирование

  • Управление многостанционными системами требует, чтобы современные инструменты гарантировали когерентность данных конфигурации и развертывания на всех станциях, особенно для географически распределенных приложений. Централизованное конфигурирование PcVue гарантирует управление и трассируемость различных версий приложений и их модификаций. Также поддерживается автоматическое обновление станций, которые составляют управляющую систему. При каждом запуске станции в сети PcVue автоматически выполняет проверки непротиворечивости версий в использовании.

  • Все аспекты конфигурации, включая графический интерфейс, структурированную базу данных и даже промышленные и межстанционные коммуникации, могут быть изменены и введены в действие в режиме онлайн, в то время как SCADA-система продолжает работать. Можно изменять представление процесса одновременно с управлением установкой, обнаружением тревог и организацией исторических данных. Как только изменения введены в действие, они могут быть широковещательно переданы всем станциям, выполняющим приложение.  

  • Web-клиенты PcVue

  • PcVue включает набор Web-услуг для облегчения создания Web-портала и интеграции с другими приложениями предприятия. Этот сервис поддерживает системы MES (Manufacturing Execution System), CMMS (Computerised Maintenance Management System), SCM (Supply Chain Management) и ERP (Enterprise Resource Planning). PcVue v8.1 поддерживает обработку данных в корпоративной базе данных Microsoft  SQL Server  2005 и поставляется с изделием SQL Server 2005 Express Edition. В совокупности с компонентом WebVue PcVue v8.1 предлагает решение для «тонкого» клиента, которое является доступным из обычного Web-браузера через интранет или интернет. Сервер WebVue полностью интегрируется со средствами и мерами безопасности системы межсетевой защиты предприятия. В отличие от обычного PC, работающего под управлением Windows , Linux или другой операционной системы, «тонкий» клиент WebVue не нуждается ни в каком дополнительном локальном приложении, кроме стандартного Web-браузера, для обеспечения доступа к мнемосхемам, данным реального времени и историческим данным PcVue. Станция Web-сервера PcVue использует технологию Microsoft  IIS для управления безопасностью совместно с межсетевой защитой предприятия. Полностью поддерживается управление правами пользователя и процессами аутентификации. Можно удаленно подтверждать тревоги, просматривать графики трендов и реализовывать удаленные команды без разработки новых мнемосхем. 

  • Приложения электронного документооборота или WEB-портала предприятия могут взаимодействовать с историческими данными и данными реального времени PcVue. Сервисы пяти классов можно вызывать из интерфейса PcVue Web Services. Они основаны на технологии XML/SOAP через протокол HTTP или HTTPS для обмена зашифрованными данными (SSL V.2). Эти классы реализуют управление сеансами (безопасность, идентификация и т.д.) и доступ к данным реального времени, тревогам (создание, подписка со списками), журналам событий (производственные события, действия пользователя, входы в систему и т.п.) и к историческим трендам (изменения значений и т.д.).

  • Функциональные возможности PcVue

  • Тренды исторические и реального времени

  • Любое число диаграмм исторических трендов или трендов реального времени может быть встроено в мнемосхему с широким диапазоном применения стандартных инструментов, таких, как изменение размеров окна, курсоры, динамическое назначение переменных трассам и т.д. Различные уровни конфигурации позволяют разработчику приложения и выборочно конечному пользователю настраивать и управлять поведением трендов.

  • Менеджер тревог

  • Форматы представления тревог имеют высокую степень конфигурируемости для удовлетворения сегодняшних разнообразных потребностей пользователей. Тревожные сообщения могут быть распечатаны, просмотрены в списках тревог и заархивированы. Можно конфигурировать поведение тревог, используя группы, фильтры, сортировку, подтверждение и маскирование. Можно также создать счетчики тревог и связывать с тревогой специфические действия. Тревоги могут быть подтверждены непосредственно из мнемосхем и автоматически широковещательно переданы всем узлам сети.

  • Планировщик

  • Функция планировщика разрешает автоматизировать вызов выполнения действий в указанное время. Посылка простых команд или сложных рецептов, выполнение скриптов — все это может быть запланировано для осуществления в указанные даты и время, циклически, с учетом периодов исключения наподобие выходных дней и других календарных событий. В соответствии с правами доступа пользователя выбираемые параметры могут быть изменены во время выполнения.

  • PcVue имеет несколько стандартных опций для создания и выполнения структурированных программ. При написании скриптов на языках Microsoft  VBA for Application или SCADA BASIC. Можно обращаться к методам, событиям и свойствам элементов ActiveX, интегрированных в приложение, совместно с проектной средой, переменными базы данных, собственными графическими элементами PcVue и внешними программами DLL. Эти скрипты могут быть выполнены по событиям, циклически или по расписанию.

  • Иерархическая база данных и архивирование в субд

  • База данных PcVue позволяет структурировать данные в модели, которые максимально близко отражают реальный мир. Поиск информации и навигация через различные области приложения осуществляется проще и более естественно, чем в неструктурированной базе данных. Атрибуты управляющего домена (Область) и природы каждой переменной (Характер) обеспечивают критерии ее детального выбора. Структурирование данных способом, который отражает внешний мир, обеспечивает дополнительные выгоды при создании приложений, которые получаются проще в понимании и сопровождении.

  • В PcVue v.8.1 можно управлять историческими данными в системе управления базой данных Microsoft  SQL Server 2005 через стандартный интерфейс ADO. Затем эти данные доступны из любой другой станции сети для обращения или для использования сторонними приложениями типа MES или ERP. Менеджер БД PcVue помогает непосредственно конфигурировать процессы для дублирования данных, с тем чтобы сгладить кратковременные прерывания обслуживания базы данных и контролировать процессы из супервизора. Использование PcVue запросов ADO для обмена данными с СУБД является простым и универсальным решением. Это позволяет приспосабливать и настраивать конфигурацию и содержимое обменов данными с другими приложениями.

  • Оптимизированные промышленные интерфейсы

  • PcVue поддерживает широкий диапазон популярных протоколов на основе последовательной связи и TCP/IP соединений для основных изготовителей на рынке промышленного оборудования. Управление связью  оптимизируется для предотвращения всех излишних обменов данными. PcVue поддерживает все версии LNS от Echelon для сети LonWorks и среди других возможностей позволяет сетевую модификацию баз данных LON (опрос/связывание). Современные средства PcVue при работе с промышленными сетями включают временные отметки данных PLC с точностью до миллисекунды, управление избыточным сбором данных и поддержку функции удаленного доступа TAPI. Каркас драйвера и соответствующий комплект разработки гарантируют  возможность создания и интеграции дополнительных специфических протоколов пользователя.

  • PcVue действует как OPC  Data Access Client и OPC DA XML Client для обмена данными реального времени с коммуникационными серверами и как OPC  DA Server для обмена данными с приложениями независимых изготовителей.

  • В PcVue реализована поддержка для широкого диапазона оборудования и протоколов различных производителей: ABB, Applicom, Allen Bradley, BACnet, Cegelec, Cerberus, Crouzet, Echelon, Eib, Elsag Bailey, Factor, Fisher, Ge-Fanuc, Idec Izumi, Johnson Controls, Jumo, Kepware, Krohne, Matsushita, Moeller, Mitsubishi, Modicon, Omron, Perax, Phoenix Contact, Profibus, Rockwell, Rosemount, Saia, Sauter, Satchwell, Schneider, Siemens, Sofrel, Tcs, Wago, Yokogawa и т.д.

  • Графические средства PcVue

  • PcVue имеет графический инструмент, который на рынке признается одним из самых мощных и в то же время  достаточно легким в использовании (рис. 3). Многие особенности выделяют новое поколение пользовательского интерфейса в PcVue: векторная графика, импортируемые из программ CAD изображения и объекты 3D DirectX, вставка видеоклипов и элементов ActiveX  с модифицируемыми во время выполнения свойствами, свободное вращение текста и графики, прозрачные цвета и т.д. Несколько представлений одной и той же мнемосхемы могут быть открыты одновременно в режимах рисования и исполнения (с использованием архитектуры Microsoft  Document/View). Функции, которые включают изменение масштаба, копирование, слоирование отображения, скроллинг внутри мнемосхем и объектное управление, предоставляют обширную область видимости для настройки отображения. 

  • Рис. 3. Пример реальной мнемосхемы в PcVue на заводе Автофрамос, Москва

  • (разработчик — компания РТСофт, Москва)

  • В PcVue поддерживаются многоэкранные конфигурации в качестве стандарта (до 4 экранов на PC). Интерфейс разработчика и пользователя в PcVue может быть сконфигурирован для работы на русском языке. В комплект поставки также входит документация на PcVue на русском языке.

  • Интеграция PcVue с другими системами

  • Dream Report - инструмент для интеграции производственной информации и построения отчетов

  • Пакет Dream Report компании Ocean Data Systems (www.oceandatasys.com) является первой в мире системой интеграции производственной информации и генерации отчетов, ориентированной на использование в области АСУ ТП (рис. 4). Он позволяет собирать информацию от устройств или различных систем управления предприятием, архивировать и обрабатывать ее единым легким в использовании и полностью интегрированным инструментом для отчетов. Концепция продукта основана на интеграции модулей по сбору данных, записи данных, графического редактора и мощного генератора отчетов. Dream Report интегрируется с PcVue и рекомендуется в качестве базового генератора отчетов для систем автоматизации, использующих PcVue.

  • Рис. 4. Пример отчета в Dream Report

  • Интеллектуальный Генератор 

  • Интеллектуальный Генератор компании ARC Informatique позволяет автоматизировать генерацию полного SCADA-приложения или его части, используя информацию из независимого программного обеспечения, наподобие применяемого для разработки программ PLC. Это позволяет создавать и связывать переменные базы данных, общие модели структур переменных и автоматически разрабатывать интерфейс HMI (объектные модели, мнемосхемы, эргономические аспекты и т.д.) на основе предопределенных правил. Применение Интеллектуального Генератора в средах Schneider Electric Unity, Wago Codesys или использование общего формата импорта XML обеспечивает экономию времени как разработки, так и сопровождения, создавая надежные системные управляющие данные приложений.

  • IntraVue — мониторинг и обслуживание промышленных ip-устройств

  • Программный пакет IntraVue  компании Network Vision (www.intravue.net) был разработан для того, чтобы обслуживающий персонал быстро и легко смог разрешить типичные проблемы, которые возникают при работе с сетью IP-устройств:

  • - кратковременная потеря связи, вызванная вибрациями, замыканиями на корпус, радиопомехами; 

  • - блокировка устройства из-за проблем с питанием или высокой температурой; 

  • - дублирование IP или MAC адресов; 

  • - обрыв связи (разрушение кабеля, обрыв, возгорание или иная потеря связи); 

  • - идентификация источника широковещательной загрузки сети. 

  • Решение PcVue + IntraVue позволяет охватывать полный спектр событий, которые возникают с увеличением числа применений Ethernet в промышленных приложениях. Все данные сети (тревоги, SNMP и др.) доступны для приложений PcVue. Данное свойство определяет решение, которое одинаково хорошо подходит как для конечных пользователей, так и для системных интеграторов.

  • Использование IntraVue и PcVue позволяет пользователю уверенно контролировать всю инфраструктуру Ethernet сети предприятия. В отличие от простых сетевых приложений мониторинга IntraVue — это продукт, который дает возможность отображать состояние, диагностировать и поддерживать все IP устройства, использующиеся в промышленной сети Ethernet.

  • Утилита ISaVueExp

  • Утилита ISaVueExp компании «ФИОРД» предназначена для переноса переменных из проектов системы программирования контроллеров ISaGRAF 5 Workbench (www isagraf.com) компании ICS Triplex в PcVue. При переносе переменных производится автоматическое преобразование типов. В программе реализованы следующие функции:

  • - удаление уже имеющихся переменных ISaGRAF из проекта PcVue; 

  • - добавление переменных проекта ISaGRAF Workbench в проект PcVue; 

  • - редактирование источника переменной (OPC, Оборудование, DDE, LON, Внутренняя); 

  • - определение для переменной свойства управления. 

  • Программа позволяет значительно сократить время при разработке АСУ ТП, которая основана на технологии программирования контроллеров ISaGRAF и SCADA пакете PcVue.

  • Заключение

  • PcVue широко применяется в различных отраслях, таких, как управление зданиями, водоснабжение, управление инфраструктурами, энергетика, промышленность. Для ознакомления с PcVue пользователь может бесплатно получить полнофункциональную демонстрационную версию в компании «ФИОРД» (www.fiord.com).  Демонстрационная версия PcVue включает все компоненты системы, но с ограничениями: 1,5 часа работы коммуникационных сервисов, максимум 25 точек ввода/вывода. 

  • Язык программирования FBD

  • ПРОГРАММИРОВАНИЕ КОНТРОЛЛЕРОВ КОММЕНТАРИЕВ НЕТ

  • Язык программирования FBD (Function Block Diagram) является составной частью стандарта IEC-61131 и так же входит в стандарт IEC-61499.

  • Язык программирования FBD представляет собой графический язык, спроектированный для описывания процессов прохождения сигналов через разнообразные объекты. Язык FBD имеет сходство с электрическими схемами, потому инженеры-схемотехники, не имя опыта программирования, легко смогут составить на его базе электрическую схему системы управления.

  • Язык программирования FBD оперирует различными функциональными блоками между входными и выходными переменными. FBD блоки представляют собой некую функцию, написанную на IL, SFC или других языках, а так же, из других блоков, которые могут быть многократно использованы в разных частях программы.

  • Каждый FBD блок имеет графическое изображение, принятое при разработке функциональных схем электронных устройств. Представлены они в виде прямоугольников и являются собой единичной операцией над входными переменными.

  • Выходные контакты могут подключаться к выходным и внутренним переменным. Кроме того, можно передавать выходной сигнал на вход другому функциональному блоку или же функции.

  • Переменные и входы соединяют специальными линиями связи. Эта линия и указывает распространение сигнала FBD программы .

  • Идеология программирования на языке FBD подразумевает, что время исполнения каждой программы должно быть вполне определенным,  т.е.  детерминированным.  Другими словами ни одна программа не имеет права зациклиться на неопределенное время, например на ожидании какого-либо события.

  • Данный язык программирования, помимо прочего, может использоватся для описания шагов и переходов в языке SFC. Функциональные блоки инкапсулируют данные и методы, чем подобны объектно-ориентированным языкам программирования, но они не поддерживают наследование и полиморфизм.

  • Описание fbd элементов в целом схоже с описанием функций и методов в привычных языках программирования. К типовым FBD блокам относятся блок таймера, ПИД-регулятора, блок секвенсора, триггера, генератора импульсов, фильтра, и т. п.

  • FBD программа формируется в специальном LCADA-конфигураторе и загружается на ПЛК.

  • Если Вы не нашли ответа на интересующий вопрос в статье - воспользуйтесь поиском или задайте его в комментариях!

  • Похожие статьи:

  • IEC-61131.Технологические языки программирования

  • IEC-61499. Функциональные блоки

  • IEC-61499

  • LCADA-конфигураторы и их характеристика

  • CoDeSys

  • Язык программирования Ladder Diagram

  • ПРОГРАММИРОВАНИЕ КОНТРОЛЛЕРОВ КОММЕНТАРИЕВ НЕТ

  • Язык программирования LD (Ladder Diagram) – он же, язык релейно-контактной логики, является составной частью стандарта IEC-61131.

  • Ladder Diagram предназначен для программирования ПЛК. Синтаксис языка и его главные особенности схожи с релейными схемами. Собственно, для написания логических схем в замену громоздким релейным шкафам язык программирования LD и был введен в использование. Подобные схемы были распространены на конвейерах по сборке автомобилей и при переводе на новую элементную базу в виде ПЛК обрели новую жизнь. Именно ориентация на инженеров автоматизации, не глубоко знакомых с сложными языками программирования, а так же наглядный интерфейс логики работы контроллера сделала Ladder Diagram одним из самых используемых языков программирования ПЛК.

  • В силу своей простоты Ladder Diagram не подойдет для описания громоздких алгоритмов, поскольку он не поддерживает подпрограммы, функции и инкапсуляцию. Это несколько затрудняет использование LD и сужает сферу задач для его применения.

  • Программа на Ladder Diagram имеет вид визуально имеет вид как электрическая цепь с замкнутыми и разомкнутыми контактами. Наличие или отсутствие тока соответствует результату логической операции (true — ток есть; false — ок не течет).

  • Элементами LD выступают контакты. Различаются нормально замкнутые и нормально разомкнутые контактные элементы.

  • Для выполнения арифметических и прочих операций Ladder Diagram дополняется специализированными функциональными блоками. Каждая конкретная версия LCADA-конфигуратора для каждого конкретного ПЛК имеет свой набор расширенных блоков.

Программирование промышленных контроллеров (ПЛК). Стандарт МЭК (IEC) 61131

17 Февраля 2014

Обслуживание промышленных контроллеров (ПЛК) на производстве выполняется технологическим персоналом, поэтому общепринятые языки программирования микропроцессоров и персональных компьютеров не подходят для программирования промышленных контроллеров, так как требуют от персонала особых навыков и знаний. Привлечение к программированию сторонних инжиниринговых компаний зачастую приводит к привязанности конечного пользователя промышленного контроллера ПЛК к конкретному исполнителю. Поэтому для программирования ПЛК необходимы более понятные, простые и наглядные языки программирования, открытые для общего использования. В 1979 г. в рамках Международной Электротехнической Комиссии (МЭК или английская аббревиатура IEC) была создана специальная группа технических экспертов по проблемам ПЛК, включая аппаратные средства, монтаж, тестирование, документацию и связь. Результатом работы данной комиссии был выпуск в 1982 г. стандарта IEC 1131. Современная редакция стандарта (который с 1997 г. называется IEC 61131) включает 8 разделов:

  1. Общая информация.

  2. Требования к оборудованию и тестам.

  3. Языки программирования.

  4. Руководства пользователя.

  5. Спецификация сообщений.

  6. Полевые сети.

  7. Программирование с нечеткой логикой.

  8. Руководящие принципы применения и реализации языков ПЛК.

Раздел 3 данного стандарта МЭК (IEC 61131-3) регламентирует использование пяти стандартных языков программирования ПЛК (промышленных контроллеров): язык функциональных блоков (FBD), язык релейной логики (LD), язык последовательных функциональных схем (SFC), язык инструкций (IL) и язык структурированного текста (ST). Выбор этих языков обусловлен простотой и наглядностью представления с их помощью алгоритмов управления. Внедрение стандарта IEC 61131 дало основу для создания единой школы подготовки специалистов в области программирования ПЛК. Также после появления стандарта появилась возможность создавать аппаратно-независимые библиотеки.

Краткая характеристика стандартных языков программирования промышленных контроллеров (ПЛК)

Язык релейной логики (LD)

Язык релейной логики используется для описания логических выражений различного уровня сложности с помощью электромеханических элементов (реле и контактов). На языке релейной логики проще всего и наглядней реализуются логические операции, такие как И, ИЛИ, НЕ. Язык программирования LD предусматривает также выполнение условных переходов между блоками программы.

Язык последовательных функциональных схем (SFC)

Реализует последовательность процедурных шагов и условных переходов. На каждом шаге выполняется конкретное действие, запрограммированное пользователем. Переход между шагами осуществляется после выполнения логических условий, назначенных данным условным переходам.

Язык инструкций (IL)

Текстовый язык низкого уровня. Принцип программирования, команды и структура записи команд такая же, как и у языков ассемблерного типа. Язык инструкций (IL) стандартизован и не зависит от используемой аппаратной платформы. Каждая инструкция может содержать четыре поля, разделяемых пробелами или знаками табуляции. Структура записи команд в языке инструкций выглядит следующим образом:

<Метка> : <Оператор> + <Модификатор> <Операнд> <Комментарий>

Метка, модификатор и комментарий в строке инструкции необязательны и указываются по необходимости. Оператор должен присутствовать в строке всегда, а операнд иногда может отсутствовать. Метка - это символическое имя (адрес) некоторой области памяти, в которой хранится номер отмеченной меткой строки в списке команд. После метки обязательно ставится знак двоеточия. Совместно с метками используются команды условного (исполняемые при выполнении определенных условий) и безусловного (выполняемые всегда) перехода (соответственно, операторы JMPC или JMP) . Переходы необходимо использовать достаточно аккуратно, чтобы не получить бесконечный цикл. Оператор - это непосредственно команда, которая выполняет определенное действие над операндом. Совместно с оператором может присутствовать модификатор, который предназначен для преобразования оператора к необходимому виду. Так модификатор N выполняет инверсию операнда до выполнения самой команды, а модификатор С - добавляет проверку содержимого аккумулятора и выполняет оператор только в том случае, если значение в аккумуляторе соответствует true (истина).

Язык структурированного текста (ST)

Язык структурированного текста - текстовый язык программирования высокого уровня для создания гибких процедур обработки данных. По структуре этот язык похож на Паскаль. Основу языка структурированного текста (ST) составляют выражения, каждое из которых должно заканчиваться точкой с запятой. Для присвоения значений переменным используется оператор «:=». Для описания математических выражений используются общепринятые символы: +, *, /, (,), <, <=, >=, > и др. Порядок вычисления выражений такой же, как и в алгебре - действия выполняются слева направо. Сначала выполняются действия, заключенные в скобки, затем - операции умножения или деления, и только после этого - сложение или вычитание. Для увеличения функциональных возможностей языка структурированного текста в нём предусмотрены операторы выбора (IF ... THEN ... ELSE ... ENDIF) , операторы множественного выбора (CASE ... OF ... ELSE ... ENDCASE) , операторы цикла (WHILE ... DO ... ENDWHILE, REPEAT ... UNTIL ... ENDREPEAT или FOR ... TO ... BY ... DO ... ENDFOR) .

В завершении статьи стоит обязательно упомянуть об особенности программирования промышленных контроллеров (ПЛК). При программировании ПЛК всегда нужно помнить, что выполнение программ в промышленном контроллере осуществляется циклически, причем время выполнения одного цикла может быть фиксированным или асинхронным (новый цикл начинается сразу после окончания предыдущего цикла). Алгоритм выполнения программы следующий. На первом шаге ПЛК получает необходимую для обработки информацию о состоянии объекта управления - производится считывание входных переменных (входы модулей аналогового и дискретного ввода). Далее осуществляется непосредственная обработка полученной информации - выполняется основная программа ПЛК. В результате обработки информации формируются команды управления, которые на следующем шаге передаются на выходы промышленного контроллера - процедура обновления выходных переменных.

Язык ST для C программиста Принято считать, что языки программирования ПЛК стандарта МЭК 61131-3 (далее для краткости МЭК) предназначены для применения неспециалистами в области информатики. Но возможности ПЛК растут, соответственно растут и требования, предъявляемые к прикладному программному обеспечению (ПО). Все чаше мы встречаем системы на ПЛК, включающие сложнейший математический аппарат. В ПЛК используют web-технологии, нечеткие регуляторы, многомерные интерполяторы систем управления движением (SoftMotion) и т.д. Такие технологии требуют специальных знаний. Несмотря на все прогнозы и рассуждения, на сегодняшний день более половины ПО для ПЛК создается профессиональными программистами, имеющими высшее образование. С каждым годом их доля возрастает. Не смотря на это, подавляющее большинство изготовителей МЭК систем упорно продолжают создать простые инструменты «для чайников». Чаще всего это некий редактор FBD и интерпретирующая система исполнения, опирающаяся на вызов заранее откомпилированных модулей. Для расширения состава блоков их пишут на языке C внешними средствами. Если профессиональный программист сталкивается с такой средой, то часто результатом становится МЭК программа, состоящая из одного большого функционального блока, полностью написанного на C. Стандарт МЭК включает высокоуровневый язык ST, по выразительной мощности не уступающий языкам C и Паскаль. К сожалению, в большинстве систем МЭК программирования он не реализован вовсе либо имеет массу ограничений. Как правило, это ограничение числа поддерживаемых типов данных, упрощенный интерпретирующий транслятор или промежуточный код, ограничения на доступ к аппаратным ресурсам, невозможность обрабатывать прерывания, выполнять динамическое распределение памяти, управлять процессами и др. На самом деле, это не ограничения языка ST. Это именно ограничения среды программирования. Некоторым особняком в ряду комплексов МЭК стоит CoDeSys производства 3S-Smart Software Solution GmbH. Его уникальность состоит в том, что он изначально задумывался как инструмент для профессионалов. Исходя из собственных соображений, при адаптации CoDeSys для конкретного ПЛК, изготовитель может наложить ряд ограничений на возможности пользователя. Но изначально их нет. Безусловно, в CoDeSys можно использовать внешние библиотеки, реализованные на C, но необходимость в этом возникает крайне редко. Практически все, что можно написать на C, в CoDeSys можно написать на ST, без изменения методологии проектирования. CoDeSys имеет встроенный компилятор и генераторы машинного кода для всех популярных семейств микропроцессоров. Внешний C компилятор не даст выигрыша по быстродействию, но значительно усложнит разработку. Очень существенная тонкость стандарта МЭК состоит в том, что он включает только требование однозначности выполнения описанных в нем конструкций. Многие воспринимают это как возможность называть МЭК системой программирования среду, поддерживающую только часть стандарта. Однако справедлив и обратный подход: МЭК система может включать все, что описано в стандарте, плюс дополнительные возможности. Практика показывает что, профессиональные программисты, работая с CoDeSys, чаше всего выбирают язык ST. Практически все они в совершенстве владеют языком C. Данная статья имеет целью быстро очертить C программистам границы возможностей языка ST в CoDeSys и подсказать типовые методы преодоления затруднений. Типы данных. В CoDeSys реализованы все стандартные типы данных МЭК 61131-3. Все типы данных доступны во всех 6 поддерживаемых языках. Специальных расширений для ST нет. Целочисленные типы таковы: SINT (char), USINT (unsigned char), INT (short int), UINT (unsigned int), DINT (long), UDINT (unsigned long), LINT (64 бит целое), ULINT (64 бит целое без знака). Действительные типы: REAL (float), LREAL (double). Специальные типы BYTE, WORD, DWORD, LWORD представляют собой битовые строки длиной 8, 16, 32 и 64 бит соответственно. Битовых полей в ST нет. К битовым строкам можно непосредственно обращаться побитно. Например: a.3 := 1; (* Установить бит 3 переменной a *). МКА 2006г В C в подобных целях используются целые без знака и битовые логические операции. В CoDeSys к битовым стокам можно применять операции, доступные для целых без знака. Логический тип BOOL. Может иметь значение TRUE или FALSE. Физически переменная типа BOOL может соответствовать одному биту. Обычно так и есть, если речь идет о дискретном входе либо выходе ПЛК или прямоадресуемой переменной (см. ниже). В иных случаях CoDeSys выделяет один байт. Это вызвано тем, что большинство микропроцессоров не умеют непосредственно адресоваться к отдельным битам памяти. Строки STRING. Являются именно строкой, а не массивом. Поэтому (в версии V2.3) нет возможности обращаться к отдельным символам. Зато можно сравнивать и копировать строки стандартными операторами. Например так: strA := strB. В МЭК есть стандартный набор функций для работы со строками. Внутренний формат строк не стандартизован. CoDeSys использует нуль-терминированные строки. Специальные типы в стандарте МЭК определены для длительности (TIME), времени суток (TOD), календарной даты (DATE) и временного штампа (DT). Работа со временем и интервалами встречается в ПЛК программах повсеместно. Достаточно подробно применение этих типов данных описано в [1]. Применение структур (STRUCT) не отличается от C. Описание структуры должно предшествовать объявлению переменной данного типа. Допускаются вложенные структуры и массивы. Массивы (ARRAY) строятся из элементов любых типов, включая структуры и массивы. Из особенностей нужно отметить возможность задания повтора значений при инициализации. Например: bX ARRAY[0..20] OF BOOL := TRUE, 10(FALSE), 9(TRUE); Значение FALSE повторено здесь 10 раз и значение TRUE, соответственно 9 раз. Массивы (и структуры) можно копировать с помощью обычной операции присваивания: bY := bX; Перечисления аналогичны перечислениям C. Пример: TYPE TEMPO: (Adagio := 1, Andante := 2); END_TYPE. На базе целых можно построить типы, имеющие ограниченный диапазон значений. Например: TYPE DAC10: INT (0..16#3FF); END_TYPE. Для любого типа можно создать псевдоним (typedef в C). Например: TYPE DEGR : UINT END_TYPE. Константы. В МЭК используются типизированные константы. Например: 2#10001000 (целое, байт в двоичном формате), INT#40, t#10h14m5s (время дня), D#2006-01-31 (дата). Формат констант описан в документации и не вызывает сложностей. Символьные константы можно объявлять локально или глобально в специальной секции раздела объявлений: VAR CONSTANT. Идентификаторы. Идентификаторы имен переменных могут иметь любую длину. Ограничения числа значимых символов нет. Идентификаторы не чувствительны к регистру (XZ и Xz одно и тоже). Идентификаторы не должны начинаться с цифры (12x). Двойные подчеркивания запрещены (__X). Инициализация переменных. По умолчанию, все переменные инициализируются нулем. Иное значение переменной можно указать явно при ее объявлении. Например: str1: STRING := ‘Hello world’. Переменные можно объявить как RETAIN или PERSISTENT. Это означает требование их размещения в энергонезависимой памяти контроллера (если она есть). Их инициализация производится только при первом запуске программы или по специальной команде. Прямая адресация. Помимо общей памяти данных в контроллере предусмотрены 3 специальные области памяти. Это область входов, выходов и прямо-адресуемая область. Эти области служат для связи системы исполнения контроллера и пользовательской программы. В простейших ПЛК распределение памяти в области входов/выходов фиксировано изготовителем. Мы можем непосредственно обращаться к нужному адресу из программы (например, %QB5 дает 5-й байт в области выходов) или объявить переменную, расположенную в соответствующем месте. Как правило, изготовители ПЛК снабжают CoDeSys конфигурационными файлами. Встроенный графический конфигуратор позволяет настроить и автоматически объявить переменные для всех МКА 2006г входов/выходов и диагностических переменных без программирования, включая распределенные модульные системы (См. рис. 1). Рис. 1. Конфигурирование переменных входов/выходов в CoDeSys Преобразование типов. Неявное преобразование типов запрещено. Любое преобразование нужно делать явно с помощью специальных операторов. Запомнить их легко. Пишем исходный тип, далее _TO_ и нужный тип. Например: iX := REAL_TO_INT(rX); . Операторы и функции. Наиболее часто используемые операторы и функции ST приведены в таблице 1. В МЭК определен целый ряд общепринятых и специализированных (для ПЛК программ) функций и функциональных блоков. В их числе таймеры, триггеры, счетчики, регуляторы и многое другое. Операция ST Присваивание := Алгебраические операции +, -, *, / Замена знака - Остаток от деления MOD Абсолютное значение ABS Сравнения < , > ,<=, >= Равенство, неравенство =, <> И, ИЛИ, НЕ AND, OR, NOT Исключающее ИЛИ XOR Побитный сдвиг влево, вправо SHL(in,n), SHR(in,n) Циклический сдвиг влево, вправо ROL(in,n), ROR(in,n) Выбор их двух значений наибольшего, наименьшего MAX(in0, in1), MIN(in0, in1) Бинарный выбор SEL(g, in0, in1) Мультиплексор MUX(k, in0,...,inN) Таблица 1. Основные операторы и функции ST. Написать ++x; или x += 1; в ST, конечно, нельзя. Единственный вариант – это x := x + 1;. Полное описание стандартных операций, функций и функциональных блоков вы найдете в руководстве программиста CoDeSys. Развернутые пояснения и примеры даны в [2]. sizeof В CoDeSys имеется оператор SIZEOF(in). Смысл его должен быть очевиден для C программистов. МКА 2006г sprintf Такого оператора в ST нет. Преобразовать любой переменную любого типа в строку можно с помощью …_TO_STRING. Указатели. В МЭК указателей нет, в CoDeSys они есть. Адрес переменной можно получить с помощью оператора ADR, разыменовывание дает ‘^’. Например: pt : POINTER TO INT; var_int1:INT; var_int2:INT; pt := ADR(var_int1); var_int2 := pt^; Объединений в CoDeSys V2.3 нет. При необходимости это удается обойти, разместив несколько переменных разного типа по одному адресу в прямо адресуемой памяти либо посредством указателей. Аналогично можно получить доступ к элементам строки ‘совместив’ ее с массивом. Точка с запятой. Не смотря на явное родство ST с языком Паскаль, точка с запятой используется в нем также как в языке C. То есть она служит не разделителем, а признаком конца оператора. Естественно, в одной строке может быть любое число операторов. Кроме того, точка с запятой служит пустым оператором. Текст любого программного компонента (POU) на ST должен включать хотя бы один оператор. Программные скобки. В ST нет привычных программных скобок ({} в C или begin и end в Паскале). Вместо этого каждая программная конструкция имеет собственную закрывающую программную скобку. Например: END_FUNCTION или END_IF. Каждому кто имел ‘счастье’ видеть многоэтажные лесенки завершающих скобок в C, такое решение должно быть понятно. Некоторая многословность текста компенсируется средствами быстрого ввода CoDeSys. IF ELSE Оператор выбора IF почти эквивалентен соответствующему оператору в C. Условием может служить переменная или выражение только логического типа. В ином случае, необходимо выполнить явное приведение к логическому типу. Дополнительно в IF можно вложить последовательную цепочку условий ELSIF. Это достаточно удобно при анализе сложных разветвляющихся условий. Подробнее см. [2]. CASE Аналогичен switch в C. Альтернативные ветки не имеют закрывающей программной скобки и не могут выполняться одна за другой. Соответственно оператор break не имеет смысла и отсутствует. При указании значений констант альтернативы можно перечислить их через запятую или указать диапазон. Например: CASE (x + 2)/3 OF 0: y := 1; 1,2: y := 4; z := 5; 3..50: y := 7 ELSE y := 0; END_CASE WHILE и REPEAT МКА 2006г Цикл WHILE совершенно аналогичен циклу while в C. REPEAT UNTIL соответствует do while. Тонкое, отличие состоит в том, что REPEAT выполнятся до тех пор, пока условие не примет значение TRUE. FOR Цикл FOR применяется для выполнения группы выражений заранее известное число раз. Цикл включает установку начального значения, конечное значение, опционально шаг (по умолчанию 1) и тело цикла. Пример: FOR I := 1 TO 100 BY 10 DO x := x*y; END_FOR На С этому соответствует: for (I = 1; I <= 100; I += 10) x = x*y; Бесконечный цикл в ST обычно записывается как WHILE TRUE DO. Оператору break в циклах ST соответствует оператор EXIT. Оператор continue в CoDeSys V2.3 отсутствует. main и PLC_PRG Прекращение выполнения и возврат управления операционной системе был бы для контроллерной программы полным крахом. Поэтому любая контроллерная программа имеет цикл: while(1) { ReadInputs(); PLC_PRG(); WriteOutputs(); } На самом деле в CoDeSys мы видим только PLC_PRG. Сам главный цикл спрятан в системе исполнения. Это наиболее тонкий момент, который нужно очень четко себе представлять. В многозадачных проектах система исполнения создает независимый главный цикл для каждой задачи. Любая ваша программа выполняется в цикле, если вы не предприняли специальных мер. Принимайте это как факт. Сложности в этом нет, устойчивые навыки приобретаются за несколько часов. Многозадачность. Многозадачность в CoDeSys доступна даже для ПЛК, выполненных на 8 разрядных микропроцессорах без ОС. В простейшем случае, вместо вызова единственной PLC_PRG, система попеременно подставляет вызовы разных пользовательских программ. Конечно, с учетом их приоритетов и времен циклов выполнения. Так реализуется не вытесняющая многозадачность. В многозадачных проектах необходимо сопоставить программы задачам с помощью менеджера задач в CoDeSys (См. рис. 2). Если этого не сделать, то проект будет однозадачным, с единственной главной функцией PLC_PRG. Помимо циклических задач в CoDeSys можно создавать задачи, вызываемые по событиям. В контроллерах имеющих ОС, CoDeSys умеет обеспечивать вытесняющую многозадачность. Например, так работает CoDeSys SP RTE [3]. Минимальное время цикла задач и список активирующих событий необходимо уточнить в документации на контроллер. МКА 2006г Рис. 2. Настройка задачи, вызываемой по фронту входной переменной. Функции Для возврата значения функции в C используется return(). Часто для подготовки возвращаемого значения приходится объявлять вспомогательную переменную. В МЭК каждая функция имеет неявно объявленную переменную для возврата значения. Ее наименование совпадает с именем функции. То есть int GetX(int x) { … return(x); } на ST будет выглядеть так: GetX := x; RETURN; Как и в языке C передавать параметры, при вызове функции, можно перечисляя их в скобках через запятую: GetX(2). Либо путем присваивания значений: GetX(x := 2). Второй способ применяется и для функциональных блоков. Память для переменных функции выделяется в стеке. Естественно, значения внутренних переменных не сохраняются между вызовами. Объявления локальных static переменных в функциях не предусмотрено. Для функций и функциональных блоков допускается передача параметров по ссылке (VAR_IN_OUT). Функции МЭК могут иметь переменное число параметров. Типичный пример – это функция MUX, приведенная в таблице 1. Она может работать с переменным числом параметров, причем любого типа. В CoDeSys V2.3 это реализовано только для стандартных функций. Перегрузки стандартных операций нет. Впрочем, этого нет и в языке C. Типа void в CoDeSys V2.3 нет. Любая функция должна иметь хотя бы один параметр и возвращать значение. Используйте тип BOOL, он обеспечивает минимальные издержки. Как и в С, вызовы функции можно включать в выражения. Функциональные блоки. Помимо функции, в МЭК существует понятие функционального блока. По сути, это структура, к которой добавлен управляющий код. При объявлении данных выделяются входные, выходные и внутренние переменные. На основе объявления функционального блока можно объявить один или несколько его экземпляров. Объявление экземпляра приводит к выделению памяти данных, совершенно аналогично созданию переменных типа структура. Естественно код при этом не увеличивается. В отличие от функции, значения переменных экземпляра функционального блока сохраняются между его вызовами. Это означает, что к переменным экземпляра можно обращаться в любое время, вне зависимости от его вызова. В объявлении экземпляра можно выполнять дополнительную инициализацию переменных. При трансляции с ST в C, для каждого функционального блока приходится писать функцию инициализации. Дополнительно CoDeSys V2.3 позволяет добавлять действия в функциональные блоки. Это аналогично методам класса в ООП. Библиотеки. CoDeSys поддерживает 2 вида библиотек. Первый вид это внутренние библиотеки. Любой проект можно сохранить как библиотеку. Внутренние библиотеки пишутся и хранятся на языках МЭК. Они компилируются вместе с проектом. Вы можете запретить редактирование и просмотр текстов внутренних библиотек пользователем. Специальный менеджер библиотек МКА 2006г позволяет защитить вашу библиотеку лицензией и сделать ее платной. Именно так реализованы библиотеки CANopen и SoftMotion в CoDeSys (язык ST). Второй тип – это внешние библиотеки. Их код откомпилирован внешними средствами и включен в систему исполнения (например, системные библиотеки) или размещен в obj файлы. Внешние библиотеки могут иметь еще и ‘внутреннюю’ реализацию (на языках МЭК). Это позволяет написать заглушки системных функций, работающие в режиме эмуляции контроллера в среде программирования CoDeSys. Системные библиотеки. Указателей на функции в CoDeSys нет. Есть оператор INDEXOF(name), возвращающий внутренний индекс программного компонента (POU). Он используется там, где нужно программно указать POU. Например, это используется в системных библиотеках, выполняющих установку обработчиков аппаратных прерываний, управление задачами и некоторых других. В CoDeSys можно создать множество задач и программно управлять (разрешать и останавливать) их работой (по событиям или ‘в лоб’ с помощью специальной системной библиотеки). Это является аналогом идеи массива указателей на функции. Динамическое распределение памяти в МЭК не предусмотрено. В CoDeSys это делается с помощью функций специализированной библиотеки. Аналогично поддерживается работа с файлами, потоками, сокетами TCP/IP, точная синхронизация задач, управление работой контроллера и многое другое. Всего в CoDeSys V2.3 существует 24 системные библиотеки. На самом деле, в CoDeSys видны лишь интерфейсы системных библиотек. Их код реализован в системе исполнения изготовителем. Он решает, что можно отдавать пользователю и что лучше запретить. В итоге, состав системных библиотек может быть разным для разных типов ПЛК. Общий обзор дан в документе SysLyb_Overview_RU в дистрибутиве CoDeSys. Безусловно, использовать системные библиотеки можно порекомендовать только опытным пользователям. Обработка ошибок. CoDeSys имеет специальный набор функции с фиксированными именами, позволяющими организовать обработку критических ошибок (деление на ноль, выход за границы массива, диапазоны значений, ошибочные указатели и др.) в пользовательской программе. Например: Checkbounds, CheckPointer, CheckRangeSigned, CheckRangeUnsigned, CheckDivByte, CheckDivWord, CheckDivDWord и CheckDivReal и др. Если соответствующая функция отсутствует в проекте, то используется обработчик по умолчанию, имеющийся в системе исполнения. Средства управления проектом. Все что входит в рабочий проект, CoDeSys сохраняет в единственном файле. Это достаточно удобно для архивации. В случае аварии питания компьютера, CoDeSys полностью восстанавливает проект. В контроллеры, имеющие достаточный объем памяти, можно загрузить файл проекта вместе с исполняемым кодом. Средств условной трансляции (#ifdef) в CoDeSys V2.3 нет. Однако есть возможность в менеджере проекта выделить определенные POU и запретить их включение в процесс компиляции. В CoDeSys можно установить дополнительный продукт 3S, так называемый инжиниринговый сервер (ENI). С его помощью реализуется полноценная возможность сетевой многопользовательской работы с проектом и управление версиями программных компонентов пользователей. Заключение. По числу типов данных ST превосходит C. Применение стандартных и специализированных операций не вызывает у C программистов ни каких сложностей. Редактор ST в CoDeSys поддерживает синтаксическое цветовое выделение и имеет средства быстрого ввода. Как правило, трансляция C программ в ST проще, чем обратная операция. Может вызвать сложность цикличность вызова главной программы, но это дело привычки. Методика программирования и отладки в CoDeSys описана в цикле статей [4]. Вы наверняка заметили, что в определенных местах, где речь шла об ограничениях ST в сравнении с C, было написано ‘CoDeSys V2.3’. Все эти моменты доработаны в новой версии CoDeSys V3.0. Безусловно, это радикальный шаг 3S по расширению МЭК. Он сделан под давлением пользователей, являющихся профессиональными программистами. Пожалуй, самое интересное в 3.0 – это оснащение МЭК языков полноценными средствами ООП [5] . На МКА 2006г настоящий момент CoDeSys V3.0 является концептуальной версией и приобретет статус коммерческого продукта к концу 2006 года.