Tag Archives: ПЛК

Передача архивных файлов по по протоколу Modbus.

Организация передачи архивных файлов по последовательному интерфейсу по протоколу Modbus (при помощи 20-ой функции ModBus)

 

1. Введение

Данная функция предназначена для чтения файлов архива во флеш памяти PLC и передачи их по шине ModBus в ответ на запросы по 20-ой функции со стороны ModBus мастера (например ПК с установленным на нем  Lectus OPC).

2. Подключение и настройка

Функция реализована как подмодуль модуля ModBus slave в конфигурации PLC и называется File,  это выглядит так:

где

— File name – имя файла из которого происходит чтение.

— Amount Byte – количество байт в одной записи (в запросе записей может быть много)

3. Форматы запросов и ответов

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

Формат запроса:

Function Code 0x14 Byte Код функции
Byte count 0x07 Byte Кол во байт, следующих ниже
Referens Type 0x06 Byte Подфункция (в нашем случае константа =6)
Hi File number Byte Старший Байт номера требуемого файла
Lo File number Byte Соответственно младший
Hi Rec addr Byte Старший Байт адреса записи в файле
Lo Rec addr Byte Соответственно младший
Hi Rec num Byte Старший Байт количества запрашиваемых записей
Lo Rec num Byte Соответственно младший

Соответственно ответ в случае успеха ответ должен быть таким:

Function Code 0x14 Byte Код функции
Byte count 0x07 Byte Кол во байт, следующих ниже
Byte count 0x07 Byte Кол во байт, следующих ниже (необходимо по стандарту)
Referens Type 0x06 Byte Подфункция (в нашем случае константа =6)
Data Byte*Rec_num*Amount_byte Собственно данные длиной Rec num из (запрса), умноженные на длину одной записи из конфигурации.

File number – может принимать значение от 0x0000 до 0xffff

Rec number – может принимать значение от 0x0000до 0xffff

Rec addr – может принимать значение 0x0000-0xfffe

Важно! При запросе с адресом Recaddr=0xffff происходит удаление файла.

При ошибке возвращается стандартный код ошибки ModBus, то есть 0x02.

4. Работа с несколькими файлами.

Для работы с несколькими файлами архивных данных необходимо подключить в модуле Modbus Slave несколько модулей File. Так как в запросе нет возможности передать имя файла то соответствие имени файла (их может быть много) и запроса осуществляется следующим образом. Номер файла в запросе соответствует позиции файла в дереве

PLC Configurations, начиная с нуля, то есть запрос с нулевым номером файла будет читать данные из первого стоящего файла в PLC Configurations модуля, первый из второго и так далее. Если запрошен файл которого нет на диске или в конфигурации он не указан, выдается код ошибки с номером 0x04.

Примечание: Для того чтобы Lectus OPC работал с этой функцией необходимо дополнительно поместить в его рабочую директорию библиотеку ModBus.dll.

 

Переменные в STEP 7-Micro/WIN

Присвоение начальных значений переменным выполняется в редакторе блоков данных. Вы можете выполнять назначения байтам, словам или двойным словам памяти переменных. Комментарии не обязательны.

Редактор блоков данных – это текстовый редактор со свободно выбираемым форматом; это значит, что поля для тех или иных данных заранее не определяются. После того как вы напечатали строку и нажали клавишу ENTER, редактор блоков данных форматирует эту строку (выравнивает столбцы адресов, данных, комментариев; представляет адреса в памяти переменных большими буквами) и вновь ее отображает. Если вы в конце строки нажмете CTRL-ENTER, то адрес автоматически пересчитывается на следующее доступное значение.

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

Использование таблицы символов для символической адресации переменных

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

Для программ SIMATIC назначение глобальных символов производится в таблице символов. Для программ МЭК назначение глобальных символов производится в таблице глобальных переменных. Для присвоения адресу символического имени действуйте следующим образом:

1. Щелкните в навигационной панели на кнопке таблицы символов, чтобы вызватьтаблицу.

2. Введите символическое имя (например, Input1) в столбце «Symbol Name [Символическое имя]». Максимальная длина символического имени составляет 23 символа.

3. В столбце Address [Адрес] введите адрес (например, I0.0).

4. Для таблицы глобальных переменных МЭК введите значение в столбец Data Type [Тип данных] или выберите его из раскрывающегося окна списка.

Можно создать несколько таблиц символов, но вы не можете использовать одну и ту же строку более одного раза в качестве глобального символического имени ни в единственной таблице, ни в нескольких различных таблицах.

Использование локальных переменных

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

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

Контроль над программой с помощью таблицы состояний

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

Можно создать несколько таблиц состояний, чтобы иметь возможность просматривать элементы из различных частей своей программы.

Для вызова таблицы состояний выберите команду меню View > Component > Status Chart [Вид > Компонент > Таблица состояний] или щелкните на пиктограмме таблицы состояний на навигационной панели.

При создании таблицы состояний введите адреса переменных процесса, которые вы хотите наблюдать. Невозможно отобразить состояния констант, аккумуляторов и локальных переменных. Значения таймеров и счетчиков можно отображать в виде бита или слова. Если значение отображается в виде бита, то оно представляет состояние бита таймера или счетчика; если значение отображается в виде слова, то оно является значением таймера или счетчика.

Для создания таблицы состояний и контроля переменных:

  1. Введите в поле адресов адреса желаемых величин.
  2. В столбце Format выберите тип данных.
  3. Для отображения состояния переменных процесса в своем ПЛК выберите команду меню Debug > Chart Status [Отладка > Состояние таблицы].
  4. Если вы хотите опрашивать эти величины непрерывно или хотите однократно считать состояние, щелкните на соответствующем символе на панели инструментов.

В таблице состояний можно также принудительно устанавливать или изменять значения различных переменных процесса. В таблицу состояний можно вставлять дополнительные строки, выбрав команду меню Edit> Insert > Row [Редактировать > Вставить > Строка].

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

 

Создание библиотеки команд в STEP 7-Micro/WIN

В STEP 7-Micro/WIN можно создать библиотеку команд для конкретного пользователя или использовать библиотеку, созданную другими лицами.  Для создания библиотеки команд создайте сначала в STEP 7-Micro/WIN подпрограммы и программы обработки прерываний и сгруппируйте их. Вы можете скрыть код в этих подпрограммах и программах обработки прерываний, чтобы предотвратить случайные изменения и защитить технологию или ноу-хау автора.

Для создания библиотеки команд действуйте следующим образом:

1. Напишите программу в виде стандартного проекта STEP 7-Micro/WIN и поместите функции, которые должны быть включены в библиотеку, в подпрограммы или программы обработки прерываний.

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

3. Переименуйте подпрограммы и программы обработки прерываний в соответствии с названиями, с которыми они должны находиться в библиотеке.

4. Выберите команду меню File > Create Library [Файл > Создать библиотеку], чтобы скомпилировать новую библиотеку команд.

Создание пользовательской библиотеки в STEP 7-Micro/WIN

Создание пользовательской библиотеки в STEP 7-Micro/WIN

Дополнительную информацию о создании библиотек вы найдете в помощи для STEP 7-Micro/WIN в режиме online.

Чтобы получить доступ к командам из библиотеки команд необходимо:

1. Добавить к дереву команд каталог «Libraries [Библиотеки]», выбрав команду меню File > Add Libraries [Файл > Добавить библиотеки].

2. Выберите желаемую команду и вставьте ее в свою программу (как любую стандартную команду).

Если библиотечная программа нуждается в памяти переменных, то STEP 7-Micro/WIN после компиляции проекта потребует назначения области памяти.

Области памяти назначаются в диалоговом окне «Library Memory Allocation [Выделение памяти для библиотеки].

 

Ошибки в ПЛК Siemens

ПЛК разделяет ошибки на фатальные и не фатальные. Коды, сгенерированные ошибкой, можно посмотреть, выбрав команду меню PLC > Information [ПЛК Информация].

На рисунке показано диалоговое PLC Information [Информация ПЛК], содержащее и описание ошибки.

Поле Last Fatal [Последняя фатальная ошибка] показывает код предыдущей фатальной ошибки, сгенерированный ПЛК. Это значение сохраняется при выключениях и включениях питания, если сохраняется ОЗУ. Эта ячейка очищается всякий раз, когда очищается вся память ПЛК, или когда ОЗУ не сохраняется после длительного перерыва в подаче питания.

Окно аварий Step7

Окно аварий Step7

Поле Total Fatal [Всего фатальных ошибок] представляет собой количество фатальных ошибок, сформированных ПЛК начиная с момента последней очистки всех областей памяти ПЛК. Это значение сохраняется при выключениях и включениях питания, если сохраняется ОЗУ. Эта ячейка очищается всякий раз, когда очищается вся память ПЛК, или когда ОЗУ не сохраняется после длительного перерыва в подаче питания.

Нефатальные ошибки

В случае нефатальных ошибок речь идет об ошибках в построении программы пользователя, об ошибке при исполнении команды в программе пользователя и об ошибках в модулях расширения. С помощью STEP 7-Micro/WIN можно отобразить коды нефатальных ошибок. Имеется три основных группы нефатальных ошибок.

Ошибки компиляции программы

ПЛК компилирует программу, когда он ее загружает. Если ПЛК обнаруживает, что программа нарушает правило компиляции, то загрузка прерывается и генерируется код ошибки. (Программа, которая уже была загружена в ПЛК, по-прежнему будет существовать в постоянной памяти и не потеряется.) После исправления своей программы вы можете загрузить ее снова.

Ошибки конфигурации входов/выходов

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

Информация о состоянии модуля хранится в битах специальной памяти (SM). Ваша программа может контролировать и анализировать эти биты. Бит SM5.0 является глобальным битом ошибок конфигурации входов/выходов, который остается установленным, пока в модуле расширения сохраняется сбойная ситуация.

Ошибки выполнения программы

Ваша программа может создавать состояния ошибки во время своего выполнения. Эти ошибки могут возникать из-за ненадлежащего использования команды или из-за обработки командой недопустимых данных. Например, указатель косвенного адреса, который был действительным, когда программа компилировалась, может быть изменен во время выполнения программы так, что станет указывать на адрес вне допустимого диапазона. Это пример ошибки программирования, проявляющейся при выполнении программы. При возникновении такой ошибки устанавливается бит SM4.3. Он остается установленным, пока ПЛК находится в режиме RUN. Информация об ошибках выполнения программы хранится в битах специальной памяти (SM). Ваша программа может контролировать и анализировать эти биты.

Когда ПЛК обнаруживает нефатальную ошибку, он не переключается в режим STOP. Он только регистрирует событие в памяти SM и продолжает выполнение вашей программы. Однако вы можете спроектировать свою программу так, чтобы она принуждала ПЛК к переходу в состояние STOP, когда обнаруживается нефатальная ошибка. Следующий пример показывает сегмент программы, которая контролирует два глобальных бита нефатальных ошибок и переводит ПЛК в STOP всякий раз, когда устанавливается любой из этих битов.

Пример остановки выполнения программы при возникновении нефатальной ошибки

Пример остановки выполнения программы при возникновении нефатальной ошибки

Фатальные ошибки

Фатальные ошибки заставляют ПЛК прекратить выполнение программы. В зависимости от тяжести фатальной ошибки ПЛК может потерять способность к выполнению некоторых или всех функций. Целью обработки фатальных ошибок является перевод ПЛК в безопасное состояние, из которого ПЛК может реагировать на запросы о существующих сбойных состояниях. Когда ПЛК обнаруживает фатальную ошибку, он переключается в режим STOP, включает светодиоды SF/DIAG (красный) и STOP, заменяет таблицу выходов и выключает выходы. ПЛК остается в этом состоянии до исправления фатальной ошибки.

После устранения фатальной ошибки можно перезапустить ПЛК, используя один из следующих методов:

  • Выключите, а затем включите питание.
  • Переведите переключатель режимов работы из RUN или TERM в STOP.
  • Выберите из STEP 7-Micro/WIN команду меню PLC > Power–Up Reset [ПЛК > Сброс при запуске] для запуска ПЛК. Это заставляет ПЛК перезапуститься и сбросить все фатальные ошибки.

Перезапуск ПЛК сбрасывает состояние фатальной ошибки и выполняет диагностический тест, связанный с включением питания, чтобы проверить, что фатальная ошибка была устранена. Если обнаруживается другая фатальная ошибка, то ПЛК снова устанавливает светодиод ошибки, показывая, что ошибка по-прежнему существует. В противном случае ПЛК начинает нормальную работу. Имеется несколько возможных сбойных состояний, которые могут сделать ПЛК некоммуникабельным. В этих случаях вы не можете отобразить код ошибки ПЛК. Эти типы ошибок указывают на аппаратные отказы, требующие ремонта ПЛК; их невозможно устранить посредством изменений в программе или очистки памяти ПЛК.

 

Команды языка Step7

Определение EN/ENO

EN (Enable IN = Разрешающий вход) – это булев вход для блоков в LAD и FBD. Чтобы команда, представленная в виде блока, исполнялась, на этом входе должен присутствовать поток сигнала. В STL команды не имеют входа EN, но вершина стека должна быть логической “1”, чтобы соответствующая команда STL исполнялась.

ENO (Enable Out = Разрешающий выход) – это булев выход для блоков в LAD и FBD. Если у блока имеется поток сигнала на входе EN, и блок выполняет свою функцию без ошибок, то выход ENO передает поток сигнала следующему элементу. Если при исполнении блока обнаруживается ошибка, то поток сигнала завершается на блоке, в котором произошла ошибка.

В STL нет выхода ENO, но команды STL, соответствующие командам LAD и FBD с выходами ENO, устанавливают специальный бит ENO. Это бит доступен с помощью команды STL AENO (AND ENO) и может быть использован для создания того же эффекта, что и бит ENO блока.

Условные и безусловные входы

В LAD и FBD блок или катушка, зависящие от потока сигнала, изображаются присоединенными к какому-нибудь элементу с левой стороны. Катушка или блок, не зависящие от потока сигнала, изображаются непосредственно подключенными к левой шине.

Команды без выходов

Блоки, не допускающие каскадного соединения, изображаются без булевых выходов. Сюда относятся команды вызова подпрограммы, перехода на метку и условного завершения подпрограммы. В LAD тоже имеются катушки, которые могут быть помещены только у левой шины. Сюда относятся команды определения метки перехода, конца программного цикла с NEXT, загрузки реле последовательного управления (SCR), условного завершения SCR и конца SCR. В FBD они изображаются как блоки и отличаются непомеченными входами и отсутствием выходов.

Команды сравнения

Команда сравнения выполняется независимо от состояния потока сигнала. Если поток сигнала отсутствует (ложь), то выход ложен. Если поток сигнала присутствует (истина), то выход устанавливается в зависимости от результата сравнения. Команды сравнения SIMATIC FBD, IEC LAD и IEC FBD представляются как блоки, хотя операция выполняется как контакт.

 

Наборы команд SIMATIC и МЭК1131-3

Большинство ПЛК используют  похожие команды, но обычно имеются некоторые  различия в их внешнем виде, действии и т.д. в зависимости от поставщика. В течение последних нескольких лет Международная электротехническая комиссия (МЭК) разработала всеобщий стандарт, который относится ко многим аспектам программирования ПЛК. Этот стандарт поощряет различных изготовителей ПЛК предлагать команды, являющиеся одинаковыми и по внешнему виду, и по действию. Ваш ПЛК предлагает два набора команд, позволяющих решать широкий спектр задач автоматизации: набор команд МЭК, соответствующий стандарту МЭК1131-3 для программирования ПЛК, и набор команд SIMATIC, разработанный специально для ПЛК.

Когда STEP 7-Micro/WIN установлен в режим МЭК, он отображает красный ромб  в дереве команд рядом с командами, которые не определены стандартом МЭК1131-3. Есть несколько ключевых различий между системой команд SIMATIC и системой команд МЭК:

  • Набор команд МЭК ограничивается командами, которые являются стандартными среди поставщиков ПЛК. Некоторые команды, обычно включаемые в систему команд SIMATIC, не являются стандартными командами в спецификации МЭК1131–3. Они доступны для использования как нестандартные команды, но если вы используете их, то программа больше не является строго совместимой с МЭК1131-3.
  • У некоторых команд МЭКв форме блоков возможна работа с несколькими форматами данных. Это свойство часто называют «перегрузкой». Например, вместо того, чтобы иметь отдельные математические блоки ADD_I (сложение целых чисел) и ADD_R (сложение вещественных чисел), команда ADD стандарта МЭК1131–3 проверяет формат складываемых данных и автоматически выбирает правильную команду ПЛК. Это может несколько сэкономить затраты времени на программирование.
  • Когда вы используете команды МЭК, параметры команды автоматически проверяются на правильность формата данных, например, целое со знаком вместо целого без знака. Например, если вы попытались ввести целочисленное значение для команды,  которая ожидала битовое значение (вкл/выкл), то происходит ошибка. Это свойство помогает минимизировать синтаксические ошибки программирования.

Делая выбор в пользу набора команд SIMATIC или МЭК, примите во внимание следующие особенности:

  • Команды SIMATIC обычно исполняются быстрее. Некоторые команды МЭК могут иметь более длительные времена выполнения. Некоторые команды МЭК, например, таймеры, счетчики, умножение и деление, работают иначе, чем их аналоги в SIMATIC.
  • С набором команд SIMATIC можно использовать все три редактора программ (LAD, STL, FBD). С набором команд МЭК можно использовать только редакторы LAD и FBD.
  • Принцип действия команд МЭК стандартизован для различных марок ПЛК, т.е. программы, удовлетворяющие МЭК, могут разрабатываться независимо от системы автоматизации.
  • Набор команд SIMATIC содержит больше операций, чем определено в стандарте МЭК. Поэтому вы всегда можете включить команды SIMATIC в свою программу с командами МЭК.
  • МЭК1131-3 устанавливает, что переменные должны описываться с указанием типа, и поддерживает проверку типа данных системой.

 

Редакторы языка Step7

Функции редактора STL

Редактор STL отображает программу на языке, имеющем текстовую основу. Редактор STL дает возможность создавать программы управления, вводя мнемонические обозначения команд. В редакторе STL можно создавать программы, которые невозможно создать в редакторе LAD или FBD. Это объясняется тем, что, используя STL, вы программируете на «родном языке» ПЛК, а не в графическом редакторе, в котором имеются некоторые ограничения, чтобы можно было правильно изображать схемы соединений. Как показано ниже, программирование в текстовом редакторе очень похоже на программирование на языках ассемблера.

ПЛК выполняет команды в порядке, определяемом программой, сверху вниз, а затем начинает сначала.

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

Особенности редактора STL:

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

Функции редактора LAD

Редактор цепных логических схем LAD отображает программу в графическом представлении, имеющем сходство с электрической монтажной схемой. Цепные логические схемы позволяют программе имитировать протекание электрического тока от источника напряжения через ряд логических условий на входах, которые, в свою очередь, активизируют логические условия на выходах. LAD-программа включает в себя находящуюся слева шину, находящуюся под напряжением, которая является источником потока сигнала. Замкнутые контакты позволяют потоку сигнала протекать через эти контакты к следующему элементу, а разомкнутые контакты препятствуют протеканию потока сигнала.

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

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

Особенности редактора LAD:

  • Цепная логическая схема проста в использовании для начинающих программистов.
  • Графическое представление легко понимается и популярно во всем мире.
  • Редактор LAD можно использовать и с системой команд SIMATIC, и с системой команд МЭК 1131–3.
  • Для отображения программы, созданной при помощи редактора SIMATIC LAD, всегда можно использовать редактор STL.

Функции редактора FBD

Редактор функционального плана FBD отображает программу в виде графического представления, напоминающего обычные логические схемы. Нет никаких контактов и катушек, как в редакторе LAD, но имеются эквивалентные функциональные блоки.

Ниже представлен пример программы на языкеFBD.

FBD не использует понятия левой и правой токовой шины; поэтому понятие «поток сигнала» выражает аналогичное понятие потока управления через логические блоки FBD.

По этой причине путь состояния «1» через элементы FBD называется потоком сигнала. Происхождение потока сигнала и место назначения его выхода ставятся в соответствие непосредственно операнду. Логика программы вытекает из связей между функциональными блоками, обозначающими команды. Т.е. выход одной команды (например, блок логического И (AND)) может быть использован для разблокирования другой команды (например, таймера), формируя необходимую логику управления. Эта концепция позволяет решать широкий спектр задач управления.

Особенности редактора FBD:

  • Графическое представление функционального плана хорошо отражает процесс выполнения программы.
  • Редактор FBD можно использовать и с системой команд SIMATIC, и с системой команд МЭК 1131–3.
  • Для отображения программы, созданной при помощи редактора SIMATIC FBD, всегда можно использовать редактор STL.

Основные элементы программы Step7

Программный блок состоит из исполняемого кода и комментариев. Исполняемый код состоит из основной программы (OB1), а также подпрограмм и программ обработки прерываний. Код компилируется и загружается в ПЛК. Комментарии не компилируются и не загружаются. С помощью этих организационных элементов (основной программы, подпрограмм и программ обработки прерываний) вы можете структурировать свою управляющую программу.

В следующем примере показана программа, включающая в себя подпрограмму и программу обработки прерываний. Эта программа-пример с помощью прерывания, управляемого временем, считывает значение с аналогового входа каждые 100 мс.

Основная программа

Эта основная часть программы содержит команды, управляющие вашим приложением. ПЛК выполняет эти команды последовательно и однократно в каждом цикле. Основная программа называется также OB1.

Подпрограммы

Эти необязательные элементы программы выполняются только тогда, когда они вызываются: основной программой, программой обработки прерываний или другой подпрограммой. Подпрограммы полезны, если вы хотите какую-нибудь функцию выполнять многократно. Чтобы не переписывать логику в каждом месте основной программы, где вы хотите выполнить эту функцию, вы можете записать логику функции один раз в подпрограмме, а затем вызывать эту подпрограмму столько раз, сколько необходимо при выполнении основной программы. Подпрограммы имеют много преимуществ:

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

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

Программы обработки прерываний

Эти необязательные элементы программы реагируют на определенные прерывающие события. Программа обработки прерываний проектируется для обработки заранее определенных прерывающих событий. ПЛК исполняет программу обработки прерываний, когда возникает соответствующее событие.

Программы обработки прерываний не вызываются основной программой. Вы ставите программу обработки прерываний в соответствие прерывающему событию. ПЛК выполняет команды, находящиеся в программе обработки прерываний, только при возникновении прерывающего события.

Так как невозможно предсказать, когда ПЛК сгенерирует прерывание, то желательно ограничить количество переменных, используемых как в программе обработки прерываний, так и в других местах программы.

Используйте таблицу локальных переменных программы обработки прерываний, чтобы гарантировать, что ваша программа обработки прерываний будет использовать только временную память и не заменит данные, используемые где-нибудь еще в вашей программе.

 

Другие элементы программы

Другие блоки содержат информацию для ПЛК. Вы можете загрузить эти блоки одновременно с загрузкой своей программы.

Системный блок

В системном блоке данных вы можете конфигурировать различные аппаратные возможности для ПЛК.

Блок данных

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

 

Поддержание уровня жидкости в баке (ПЛК+панель)

Пример конфигурации панели ИП-320 совместно с ПЛК — 150 для управления двумя насосами, работающими на поддержание уровня жидкости в баке.

Постановка задачи: контроллер управляет 2 насосами, один из которых работает на наполнение емкости, другой на опорожнение. Управление производится по дискретному датчику уровня, который независимо передает сигналы для уровней: сухого хода насосов, нижнего и верхнего рабочих уровней и уровня переполнения. Рабочие уровни используются для управления насосами (ниже нижнего – включает наполнение, останавливает откачку, выше верхнего — наоборот), аварийные уровни – для сигнализации.

Чему можно научиться: конфигурация панели, список тревог, индикаторы, конфигурация ПЛК для работы с панелью, работа с дискретными датчиками.

Программа ПЛК

Дискретные выходы датчиков уровня подключим последовательно к входам ПЛК, а насосы и сигнальные лампы – к выходам.

Настройка производится в разделе «Конфигурация ПЛК». Итогом ее станет примерно такая картина:

Рисунок 1 Конфигурация входов/выходов ПЛК под задачу

Далее целесообразно сразу настроить элемент связи ПЛК с панелью. Выглядит это например так.

Рисунок 2 Отображение панели в конфигурации ПЛК

В конфигурацию добавлен модуль Modbus slave (ПЛК выступает в роли slave- устройства). В него добавлен модуль связи Debug RS-232 (используемый интерфейс связи), в котором настроены параметры связи ПЛК и панели:

Рисунок 3 Настройки связи панели и ПЛК

Для проекта панели добавлен элемент 8 bits, через который передаются сигналы для визуализации на панели (2 сигнала аварии, 4 сигнала уровня, 2 сигнала работы насоса).

Программа управления особых сложностей не представляет:

Рисунок 4 Программа ПЛК

В конфигурации панели важно задать те же параметры связи в разделе Выбор ПЛК что показаны на рис.3. Сам проект состоит из 2 экранов – насосы и уровни и представлен ниже.

Рисунок 5 Экраны проекта панели

Рисунок 5 Экраны проекта панели

При настройке индикаторов проставляется тот же номер бита, что и на рис.2

Аварии прописаны отдельно в разделе список тревог.

Рисунок 6 Окно списка тревог

Список тревог в этой панели, как показывает опыт, лучше начинать с нулевого бита. Именно поэтому первыми битами в конфигурации ПЛК прописаны аварии.

 

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

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

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

Пример SFC диаграммы:

 

пример программы SFC

пример программы SFC

 

Шаг

SFC POU состоит из набора шагов, связанных переходами. Существуют 2 вида шагов:

  • Шаг простого типа (упрощенный SFC) может включать единственное действие. Графический флажок (небольшой треугольник в верхнем углушага) показывает, пустой шаг или нет.
  • МЭК шаг (стандартный SFC) связан с произвольным числом действий или логических переменных. Связанные действия располагаются с правой стороны от шага.

 

Действие

Действие может содержать список инструкций на IL или ST, схемы на FBD или LD, или снова схемы на SFC. При использовании простых шагов действие всегда связывается с этим шагом. Для того, чтобы редактировать действие, необходимо дважды щелкнуть левой клавишей мышки на шаге. Или выделить шаг и выбрать команду меню «Extras» «ZoomAction/Transition». Помимо основного действия, шаг может включать одно входное и одно выходное действие. Действия МЭК шагов показаны в Организаторе Объектов, непосредственно под вызывающей их POU. Редактирование действия запускается двойным щелчком мыши или клавишей <Enter>. Новые действия добавляются командой главного меню «Project» «Add Action». Вы можете сопоставить одному шагу до 9 действий.

 

Входное или выходное действие

В шаг можно добавить входное и выходное действие.

Входное действие выполняется один раз при активизации шага, выходное – при деактивизации. Шаг, который имеет входное действие, обозначается буквой «Е» в левом нижнем углу, шаг с выходными действиями – буквой «Х» в правом нижнем углу.

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

Переход/условие перехода

Между шагами находятся так называемые переходы. Условием перехода может быть логическая переменная или константа, логический адрес или логическое выражение, описанное на любом языке. Условие может включать серию инструкций, образующих логический результат, в виде ST выражения (т.е.(i<= 100) AND b) либо на любом другом языке. Но условие не должно содержать присваивания, вызов программ и экземпляров функциональных блоков.

В редакторе SFC условие перехода можно записать непосредственно около символа перехода либо в отдельном окне редактора для ввода условия  Условие заданное окне редактора предпочтительнее.

 

Активный шаг

После вызова SFC POU начальный шаг (шаг, выделенный двойной рамкой) выполняется первым. Шаг, выполняемый в данный момент, называется активным. Действия, связанные с активным шагом, выполняются один раз в каждом управляющем цикле. В режиме online активные шаги выделяются синим цветом. Следующий за активным шагом шаг станет активным, только когда условие перехода к этому шагу будет истинно.

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

 

Шаг МЭК

В отличие от упрощенного SFC МЭК шаги могут включать несколько действий. Действия МЭК шагов описываются отдельно от них и могут неоднократно использоваться в пределах данного POU, для чего их надо связать с шагом с помощью команды главного меню «Extras» «Associate action».

Кроме действий с шагом, можно связывать логические переменные.

С помощью так называемых классификаторов действия и логические переменные могут активироваться и деактивироваться, возможно, с задержкой времени. Например: действие может продолжать работу, даже если запустивший его шаг утратил активность; с помощью классификатора S (установка) можно программировать параллельные процессы и т.д. Логическая переменная, связанная с шагом, получает значение ИСТИНА при каждой активации шага. Действие, связанное с МЭК шагом, описывается справа от него в блоке, состоящем из двух частот. Левая часть этого блока содержит классификатор, возможно, с константой времени, а правая часть содержит имя действия или логической переменной.

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

При выполнении шага сначала производится деактивация действий, затем выполняются активные действия в алфавитном порядке. Для того чтобы использовать шаги с МЭК действиями, необходимо установить опцию «Extras» «Use IEC-Steps» и подключить к проекту специальную библиотеку Iecsfc.lib. В Организаторе объектов действия показаны непосредственно под SFC POUs, которые их вызывают. Новые действия можно создавать с помощью команды «Project» «Add Action«.

Альтернативная ветвь

Две и более ветви SFC могут быть альтернативными. Каждая альтернативная ветвь должна начинаться и заканчиваться переходом. Альтернативные ветви могут содержать параллельные ветви и другие альтернативные ветви. Альтернативная ветвь начинается горизонтальной линией (начало альтернативы), а заканчивается горизонтальной линией (конец альтернативы) или переходом на произвольный шаг (jump). Если шаг, который находится перед линией альтернативного начала, активен, то первые переходы альтернативных ветвей начинают оцениваться слева направо. Таким образом, первым активируется тот шаг, который следует за первым слева истинным переходом.

Параллельные ветви

Две и более ветви SFC могут быть параллельными. Каждая параллельная ветвь должна начинаться и заканчиваться шагом. Параллельные ветви могут содержать альтернативные ветви и другие параллельные ветви. Параллельная ветвь наносится двойной горизонтальной линией (параллельное начало) и заканчивается двойной горизонтальной линией (конец параллели) или переходом на произвольный шаг (jump). Если шаг активен, условие перехода после этого шага истинно и за этим переходом следуют параллельные ветви, то активируются первые шаги этих ветвей. Эти ветви выполняются параллельно друг другу. Шаг, находящийся после параллельных ветвей, становится активным только тогда, когда все предыдущие шаги активны и условие перехода истинно.

Переход на произвольный шаг (Jump)

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

 

Мой блог находят по следующим фразам