bannerbannerbanner
полная версияТабличный ПЛК.Табличное программирование контроллеров

Владимир Васильевич Стретенцев
Табличный ПЛК.Табличное программирование контроллеров

Полная версия

6. Среда исполнения табличных программ

6.1. Вариант реализации среды исполнения[6]

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

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

Чтобы не зависеть от какой-либо операционной системы и не устанавливать на компьютер клиента дополнительные программы, среда разработки была написана как веб-страница, которая может быть запущена локально в большинстве современных браузеров. Аналогично выполнена и среда исполнения рассматриваемого ПЛК. Условно эту программу можно разделить на три части – ввод-вывод по интерфейсу Modbus RTU, пересчет таблицы, отображение таблицы на экране в реальном масштабе времени. Для удобства внесения изменений программа среды исполнения разделена на три файла – два файла HTML и один файл JavaScript.

Если версия среды разработки поддерживает запуск среды исполнения, то при нажатии на кнопку «Открыть окно среды исполнения» будет создана новая вкладка браузера с пустой таблицей. Справа от кнопки запуска среды исполнения расположена кнопка, позволяющая передать табличную программу из среды разработки в среду исполнения. Для этого используется стандартный межоконный интерфейс, поскольку среда разработки и среда исполнения находятся в разных вкладках одного браузера. Переданная в среду исполнения табличная программа отображается в новой вкладке браузера точно в таком же виде, как и в среде разработки. Только теперь нет возможности редактировать табличную программу или изменять входные данные пользователем. На рис. 71 показана табличная программа из раздела 2.4 после загрузки в среду исполнения до подключения модулей ввода-вывода.

Рис. 71. Пример отображения табличной программы, представленной на рисунке 19, в среде исполнения


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

6.2. Технологии, используемые для программной реализации ПЛК

Чтобы табличная программа, загруженная в среду исполнения, могла управлять реальным объектом, к компьютеру по линии связи подключаются модули ввода-вывода. Программа связи с удаленными модулями ввода-вывода запускается в так называемом iframe – окне браузера, вложенном в уже открытую вкладку. Сначала к среде исполнения подключаются последовательные порты компьютера, через которые будет осуществляться связь с модулями ввода-вывода. Затем настраивается подключение самих модулей. Каждый подключаемый модуль имеет адрес на шине связи, а также адреса регистров, в которых содержатся данные о состоянии входов и выходов.

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

Физически модули ввода-вывода подключаются к компьютеру с помощью витой пары и преобразователя интерфейса USB-RS485. Обмен данными производится по протоколу Modbus RTU. Для того чтобы иметь возможность подключать модули ввода-вывода, работающие на разных скоростях обмена данными, к среде исполнения могут быть подключены два последовательных порта. Скорости обмена данными этих последовательных портов могут устанавливаться независимо друг от друга.

Возможность организовать среду исполнения в браузере появилась благодаря использованию двух технологий программирования, применяемых в современных браузерах: Web Serial API и Web Workers API.

С помощью Web Serial API программы веб-сайтов, написанные на JavaScript, получают доступ к чтению и записи последовательных портов компьютера. Используя Web Serial API, можно получать, обрабатывать и отображать в окне браузера данные от устройств, подключенных к компьютеру по последовательной линии связи, а рассчитанные программой данные могут быть записаны в удаленные устройства. Применяя Web Serial API, мы легко можем получить полноценный обмен с внешними модулями ввода-вывода по последовательному интерфейсу для промышленных сетей RS-485. В этом случае логично использовать испытанный годами надежный протокол передачи данных Modbus RTU.

Открытый промышленный протокол передачи данных Modbus имеет многолетнюю историю. Огромное количество устройств, поддерживающих Modbus, находятся в эксплуатации в настоящее время. При этом выпуск устройств с Modbus не прекращается, так как они требуются для ремонта эксплуатируемого оборудования и в случае его модернизации могут быть легко интегрированы в новые системы. Также Modbus – один из самых простых для изучения протоколов передачи данных. На его освоение не требуется много времени, а большинство специалистов по автоматизации хорошо знакомы с Modbus.

Web Workers API – это специальное средство программирования, которое позволяет запускать часть программы на JavaScript в фоновом потоке, то есть отдельно от основного потока – программы, выполняемой во вкладке браузера. Для этого создается объект Web Worker, содержащий программный код, выполняемый отдельно от основного потока. Теперь ни действия пользователя в окне браузера, ни работа программы в основном потоке не прерывают работу Web Worker. Взаимодействие Web Worker и основного потока производится с помощью пересылаемых между ними сообщений.

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

С помощью Web Serial API и Web Workers API был создан табличный ПЛК, способный управлять реальным оборудованием. Он будет работать на любом компьютере с установленным на нем современным браузером. При такой реализации ПЛК для считывания входных и установки выходных сигналов используются готовые модули ввода-вывода с интерфейсом RS-485. Конечно, для управления реальной техникой лучше использовать ПЛК с собственным процессором. Поэтому предлагаемое решение больше ориентировано на обучение табличному программированию или экспериментирование по управлению различными системами с помощью табличных программ.

При написании и отладке среды исполнения применялись модули ввода-вывода с интерфейсом RS-485 серии 110 компании «Овен». Тестирование табличных программ с использованием подключенных к компьютеру нескольких модулей ввода-вывода подтвердило работоспособность выбранных решений. Среда исполнения без ошибок обменивалась данными с модулями ввода-вывода, таймеры корректно формировали временные интервалы.[7]

Web Serial API, Web Workers API, RS-485, Modbus RTU – хорошо известные и подробно описанные технологии. Документация на них открыта в свободном доступе; используя ее, при необходимости можно вносить изменения в данную среду исполнения или создать собственную, а также написать в виде обычного программного приложения, которое для связи с внешними модулями ввода-вывода будет напрямую использовать возможности операционной системы. Представленная среда исполнения может рассматриваться как один из вариантов программной реализации ПЛК.

 

6.3. Пользовательский интерфейс среды исполнения

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

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


Рис. 72. Вид окна настройки параметров связи с модулями ввода-вывода после загрузки среды исполнения


Тут стоит определиться с термином «канал» для данного варианта среды исполнения. Чтобы обратиться к регистрам модуля ввода-вывода по протоколу Modbus, необходимо послать модулю одну из стандартных для данного протокола команд. Каждый модуль ввода-вывода имеет свой уникальный Modbus-адрес и может содержать как дискретные, так и аналоговые входы и выходы, доступ к состоянию которых производится с помощью чтения или записи соответствующих регистров. Регистры, в свою очередь, тоже имеют свои адреса. Для обращения к модулю ввода-вывода необходимо знать Modbus-адрес модуля, адрес регистра и тип данных, которые собираемся читать или записать. Например, состояние шестнадцати битовых входов может быть получено чтением всего одного 16-битного регистра. Но для получения значения одного аналогового входа потребуется прочитать два 16-битных регистра, если данные представлены числом с плавающей запятой. Чтобы упростить подключение входов и выходов к переменным табличной программы, входные и выходные сигналы сгруппированы в каналы по типу данных.

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

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

6.4. Добавление и удаление каналов

Таблица с параметрами последовательных портов позволяет подключить к среде исполнения два COM-порта компьютера с разными скоростями передачи данных. После первого открытия вкладки среды исполнения оба порта будут в состоянии «Не подключен». Если нажать на кнопку в ячейке с надписью «Не подключен», то на экране появится окно выбора COM-порта для подключения к среде исполнения. Основной параметр порта, который передается операционной системе, – это скорость обмена по последовательному интерфейсу. Поэтому скорость передачи данных для выбранного порта необходимо установить до его подключения к COM-порту компьютера.

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

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

Как только мы добавили новый канал, ниже таблицы со списком каналов появляется его условно графическое представление. Двойным кликом по ячейке с типом канала вызываем список возможных типов. Всего их восемь – четыре типа входных данных и четыре выходных. Если будет выбран входной канал, то выводы сигналов на условно графическом представлении появятся слева, если выходной, то справа. Такое расположение входов и выходов обычно применяется в обозначениях микросхем на принципиальных схемах (рис. 73). Причем выводы сигналов могут быть пронумерованы или подписаны. Для этого нужно навести указатель немного выше сигнального вывода, кликнуть один раз и ввести текст.


Рис. 73. Условные графические обозначения двух каналов – дискретного ввода и дискретного вывода


После определения типа канала можно установить необходимое количество сигналов, состояние которых мы будем считывать или изменять. Часто модуль ввода-вывода имеет больше физических сигналов, чем необходимо в программе, но мы можем с помощью настройки канала поддерживать связь только с теми сигналами, которые нам необходимы. Например, модуль ввода имеет шестнадцать дискретных входов, а в программе используются только два – первый и шестой. Для подключения к табличной программе выбираем тип канала DIn, количество сигналов – 2. В условно графическом представлении канала устанавливаем в поле с номером бита в первой строке 1, а во второй строке – 6. В адресные поля вводим адреса битовых переменных табличной программы, состояние которых будет меняться вместе с сигналами на входах (рис. 74).


Рис. 74. Пример использования во входном битовом канале только двух битовых входов 1 и 6


Аналоговые переменные табличной программы имеют только один тип – число с плавающей запятой. Аналоговые сигналы каналов ввода-вывода могут быть представлены несколькими типами, такими как целое число без знака, целое число со знаком, число с плавающей запятой. Чтобы присвоить аналоговому сигналу значение переменной табличной программы, в некоторых случаях необходимо сделать преобразование. Если формат числа в таблице и получаемый по линии связи совпадают, то преобразование не нужно. Небольшое преобразование потребуется при записи числа с плавающей запятой в 16-битный регистр целого типа. Нужно будет отбросить или округлить дробную часть и проверить исходное число на превышение максимально допустимого значения для 16-битного целого.

Но нередко в модулях ввода-вывода дробное число представляют в виде 16-битного целого, заранее договорившись о фиксированном множителе. Например, если за множитель принимается число 0,01, то целое число 537 будет восприниматься программой как 537 * 0,01 = 5,37. При множителе 0,001 получим 0,537. Обычно вместо множителя указывается параметр dp в виде целого числа, которое определяет, сколько десятичных разрядов 16-битного целого числа должно быть после запятой. Множитель 0,01 будет обозначен как dp = 2, а множитель 0,001 – как dp = 3.

При настройке аналоговых каналов с такими типами, как целое без знака и целое со знаком, каждому сигналу можно установить параметр dp. В некоторых случаях это используется при считывании значения температуры с 16-битного регистра аналоговых модулей ввода-вывода. Иногда такой метод представления дробных чисел используется для установки рабочих параметров частотных приводов. На рисунке 75 показан аналоговый входной канал, получающий значения температуры в градусах. Так как параметр dp = 1, то считываемое из входного регистра число будет умножено на 0,1.


Рис. 75. Аналоговый входной канал с типом «целое со знаком» для измерения температуры


6.5. Настройка параметров связи

Для каждого канала необходимо установить номер порта, к которому подключен модуль ввода-вывода. Это делаем в условно графическом представлении канала. По умолчанию установлен порт 1.

Ниже поля с номером порта находится поле «Modbus адрес». Сюда записываем адрес модуля ввода-вывода на шине RS-485. Этот адрес будет в заголовке Modbus запроса вместе с адресом регистра, к данным которого будет обращение. Адрес регистра вводится в поле «Modbus регистр». Если запрос будет к нескольким регистрам одного типа, то в поле «Modbus регистр» вводится адрес первого регистра, а количество регистров будет определяться количеством сигналов канала.

В поле «Адрес Связь ОК» при необходимости вводится адрес битовой переменной табличной программы, которая будет отвечать за состояние связи канала. Если связь в норме, то переменной будет присвоено значение 1, если связи нет, то переменная будет равна 0. Используя такую переменную, состояние связи с каналом можно учитывать в табличной программе.

В поле «Опрос через (циклов)» устанавливается количество циклов опроса, которые будут пропускаться, прежде чем данный канал будет опрошен. Если параметр установить равным 2, то после текущего опроса канала в два цикла он опрашиваться не будет. Поскольку не все каналы требуется опрашивать с максимальной частотой, то периодически пропуская опросы тех каналов, сигналы которых меняются медленно, можно сократить время цикла и получать критичные по времени данные с более высокой частотой. Алгоритм опроса каналов построен таким образом, чтобы минимизировать разброс длительности циклов. Критичным по времени опроса каналам устанавливается параметр, равный 0, они будут опрашиваться каждый раз. Если каналов с медленно меняющимися сигналами много, то наиболее равномерный цикл можно получить, если одному каналу установить параметр, равный 1, двум другим – равный 2, трем следующим – равным 3 и так далее. При таком подходе время цикла не будет расти прямо пропорционально количеству каналов, а разброс времени цикла останется на достаточно низком уровне.

Созданную конфигурацию среды исполнения можно сохранить на диске аналогично сохранению табличной программы. Так как сохранение файла браузером отличается от такой процедуры в обычных приложениях, то, например, для ОС Widows сохраняемый файл будет записан в папку «Загрузки». Ранее сохраненные настройки загружаются в среду исполнения из файла на диске.

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

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

 
6Скачать программу, в которой реализована среда исполнения, можно в телеграм-канале «Табличный ПЛК» t.me/tableplc.
7Рассматриваются временные интервалы, длительность которых составляет несколько секунд и более. Необходимо отметить, что в данной реализации среды исполнения к времени таймера добавится время, необходимое для обмена данными с модулями ввода-вывода.
Рейтинг@Mail.ru