Принесли на днях оборудование Mitsubishi, я ставил этот контроллер с панелью оператора на гидравлический пресс для кирпичей. Модель этого контроллера FX5U. На нём собирали станки для развальцовки труб. Хотел сказать о нём несколько слов. Если кому интересно, напишу статью об японском контроллере.
Приветствую всех, на связи автор блога, Гридин Семен. Сегодня статья про контроллер Mitsubishi.
ПЛК Mitsubishi FX5U
Как началась история работы с данным контроллером? 10 лет назад заказчику нужно было сделать станок, в котором требовался быстрый опрос линейки перемещения с аналоговым выходом 4-20 мА. Пробовали ставить ПЛК ОВЕН, но тогда скорость опроса не соответствовала заявленной задаче — скорость опроса АЦП была 10 мс.
Медленный аналоговый вход ПЛК создавал брак продукции. Пришлось искать другие варианты.
И наш выбор пал как раз на ПЛК Mitsubishi FX5U. Скорость опроса аналогового входа контроллера и его модуля порядка 40 мкс. Разрядность АЦП занимает 12 бит — 4095 в десятичной форме исчисления. Линейка стояла на 100 мм, то есть точность составляла 0,025 мм.
Быстродействие инструкции занимает порядка 0,032 мкс. Вот эти основные преимущества данного контроллера.
На борту у него есть интерфейс RS-485 (поддерживает протокол Modbus RTU), Есть 2 аналоговых входа 0-10В и один аналоговый выход.
Есть возможность расширяться модулями слева и справа. Насколько я помню есть даже поддержка веб-визуализации и облака.
Среда разработки GX Works3
Программная среда GX Works 3 к сожалению платная. Сейчас может из-за санкций её вообще невозможно достать. На самом деле очень мощный и продуманный инструмент, он находится почти вровень с CODESYS.
Вот основные её особенности:
Программа позволяет легко конфигурировать.
На одном рабочем поле могут легко уместиться несколько языков стандарта МЭК.
Язык ST визуально оформлен. Цифры, переменные, операторы — каждый выделяется своим цветом.
Вот на этом скриншоте отображается сочетание LD с FBD.
Напишу несколько строк по конфигурации модулей и других тонких настройках, если кому нужно.
Модуль аналогового модуля в конфигурации ПЛК
Для начала необходимо добавить это модуль в конфигурацию ПЛК.
Далее после применения изменений и фиксации конфигурации необходимо дважды кликнуть на модуль -> откроется окно его настройки (см. ниже)
Для каждого канала необходимо выбрать его градуировку и проверить, чтобы он работал (A/Dconversionenable).
Далее сохраняем параметры и переходим в поле программирования. Справа необходимо найти библиотеку модулей (вкладка Module). Если там нет лейблов то надо и создать по правой клавише мыши.
Далее спускаемся по дереву: FX5-4AD-> FX5_4AD_1-> Monitor-> CH1->
И выбираем интересующую нас переменную (одна будет показывать инженерные единицы преобразования, другая физ. Величины, если они будут настроены, и тд…) Переменную хватаем и тащим на рабочее поле.
Связь ПЛК с панелью GT Mitsubishi
В настройке связи в панели ПЛК есть совпадение номера станции панели и ПЛК. Они должны отличаться.
Число с плавающей запятой в панели оператора GT
Для того чтобы отображалось число с плавающей запятой нужно поставить галочку.
Команды по номеру экрана с панели оператора GT
В настройках панели необходимо указать регистр ПЛК, в котором будет храниться номер экрана.
А далее уже в ПЛК разбираться, при каком значении этого регистра каким выходом надо считывать.
Архивация данных на ПЛК
Архивировать на FX5 можно с помощью функции Logging function Настраивается она специальной утилитой.
Запароливание кнопок в панели оператора GT
Нужно сделать массив в глобальной переменных и привязать его к регистрам. Далее смотрим регистр. Можно использовать Security level.
На этом заканчиваю. Если есть вопросы, пишите в комментариях.
Приветствую, уважаемые читатели. На днях задали такой вопрос.
Добрый день! имеется плк F100-10-R от EKF это копия (плк optimus drive и соответственно панели оператора тоже) , также имеется панель оператора EKF PRO-Screen 4. у панели оператора использовал порт com1 rs485 для покдлючения к плк. параметры 485 одинаковые у панели и плк. для связи использовал разьем db9 и контакты 1 и 6 для подклюния 485 плк. не могу установить связь. между панелью и плк. индикатор COM на плк не горит я так понимаю он сигнализирует о наличии соединения.для обмена между плк и панелью использовал протокол PRO-logic. в чем моя ошибка может быть?
Как решить эту задачу?
В принципе Хайвело-подобные контроллеры это одно и то же. Главное, чтобы совпадали название. Есть у меня рабочий проект на AT16SOR и Optimus VI20.
Настройки все один в один, вы применяете только рабочие свои названия платформ.
Настройки ПЛК "Штатные" должны быть с такими настройками.
У меня сейчас под рукой нет ПЛК, по идее настройки сетевых параметров должны быть здесь:
Настройки панели оператора вот тут:
Надо указать сетевые настройки, и адрес STATION к кому обращаться.
COM тоже разные, у меня COM2, у каждого свои пины.
Смотрим в мануале, здесь с цифрой COM2 и COM3 могут быть ошибки, надо пробовать.
Потом ставить кнопку в панели и писать один выход в ПЛК, так можно "Поймать бит" и понять что связь есть. Примеры программ здесь.
Материал о модулях и системах, обеспечивающих сетевое соединение, превращая традиционные ПЛК в контроллеры автоматизации (ПАК), опубликованная Дэвидом Петерсоном в журнале Control Automation.
Название ПЛК (PLC) останется надолго, независимо от того, какие возможности содержатся в устройстве, будь то ввод-вывод, сетевое взаимодействие или даже операционная система, он все равно будет называться программируемым логическим контроллером. Сигналы по-прежнему будут обрабатываться совместно с реальными устройствами ввода-вывода; мы просто добавляем новые способы взаимодействия с другим оборудованием и миром в целом. Называйте их как хотите – PLC (Programmable Logic Controller), PAC (Programmable Automation Controller), IPC (Industrial PC) – все это допустимые названия, но ярлык ПЛК (PLC) наверняка будет трудно заменить.
Добавление усовершенствованных коммуникационных модулей в систему является последним строительным блоком современной системы ПЛК.
Системы связи в ПЛК
Как и в случае со многими функциями внутри ПЛК, мы можем обнаружить системы связи, встроенные непосредственно в модуль центрального процессора (ЦП) или установить дополнительные модули для расширения системы и повышения ее гибкости.
Интерфейс программирования
В некоторых ПЛК необходимо сразу же различать программирование и сетевое взаимодействие. Иногда это достигается через один и тот же порт интерфейса, так что разницы на самом деле нет. Однако выделенный порт программирования обычно появляется одним из двух способов.
USB-порт (обычно тип B, mini, micro или тип C) – это соединение типа «точка-точка», используемое исключительно в ПЛК для загрузки и выгрузки программ на хост-компьютер IDE (Integrated Drive Electronics). Несмотря на исключительную простоту и надежность, он требует, чтобы компьютер физически находился вблизи шкафа управления, если вам когда-либо понадобится редактировать или контролировать ПЛК.
Этот процессор ПЛК имеет микро-USB для программирования и множество других сетевых интерфейсов
Альтернативой, и часто на немного более старом оборудовании, является 9-контактный последовательный интерфейс DB9. Мы не можем сразу сказать, что он отвечает за процесс программирования, поскольку этот порт также несет общий интерфейс RS-232 для систем связи, таких как Modbus. Однако, поскольку это также интерфейс точка-точка, он не встречается в больших сетях. Разновидностью разъема DB9 является 6-контактный RJ11, как узкая версия разъема CAT5/6.
Встроенный сетевой интерфейс
«Встроенный» – это термин, который мы используем, когда что-то встроено прямо в вычислительный блок устройства, в данном случае в ЦП ПЛК. Большинство модулей ЦП имеют по крайней мере один сетевой интерфейс, хотя отдельные имеют несколько. Иногда даже кажется, что проектировщики соревновались, кто сможет втиснуть больше сетевых портов на фронтальную поверхность модуля.
Эти встроенные порты обычно включают один или несколько из следующих вариантов: Ethernet, PROFINET, RS-485 и RS-232. Ethernet и PROFINET выглядят как разъем RJ45, общий для всех известных сетей Ethernet. RS-232, как отмечалось ранее, может выглядеть как разъем DB9, обычные винтовые клеммы или может быть смонтирован прямо в более простой 4-проводной жгут, общий с RS-485.
Несколько различных вариантов последовательного сетевого порта для RS-232/422/485
Из этих вариантов RS-232 – единственный, предназначенный для одиночного соединения точка-точка. Это ограничивает его функциональность в сетевых технологиях, но его часто можно встретить среди устаревшего оборудования, поэтому он остается.
Остальные три типа сетей являются многоточечными, то есть они могут взаимодействовать со многими устройствами, каждое из которых имеет уникальный адрес. RS-485 – это немного устаревший стандарт, и в настоящее время он широко используется для связи через Modbus, PROFIBUS и другие фирменные сети, такие как Data Highway (DH485) от Allen-Bradley.
Industrial Ethernet и PROFINET являются вариациями исходного стандарта Ethernet. Большинство крупных компаний склонны выбирать один из двух протоколов и придерживаться его. Тем не менее, некоторые ПЛК позволяют запускать контроллер как сканер или хост с любым протоколом, иногда даже одновременно, поскольку физический порт один и тот же. Если ваш процесс автоматизации зависит от многих марок и поколений оборудования, взаимодействующих с одним и тем же контроллером, вам, вероятно, лучше выбрать соответствующие модули, которые можно выделить для каждой задачи.
Модульные сетевые интерфейсные карты
Производители ПЛК используют две разные стратегии. Либо все коммуникации интегрированы в модуль ЦП, либо ЦП остается очень простым, и мы используем дополнительные карты для поддержки сетевых интерфейсов. Вторая стратегия обычно применяется при работе с большой системой с более чем 2-3 сетевыми точками.
Вы можете приобрести модули, совместимые с ранее упомянутыми системами, включая Ethernet, PROFINET, RS-232 и RS-485, но есть и много других. Вот несколько примеров, хотя их гораздо больше:
В этом ПЛК центральный процессор ограничен только программированием, оставляя сетевую задачу добавляемым модулям по мере необходимости
Волоконно-оптический
Обычно это модуль Ethernet с физической оптоволоконной сетью. Вы вряд ли найдете много процессоров со встроенным оптоволокном.
EtherCAT
Этот протокол, созданный Beckhoff Automation, является более скоростным вариантом Ethernet, специально предназначенным для технологий автоматизации управления (отсюда и название CAT). Некоторые контроллеры включают его в качестве встроенного протокола.
DeviceNet
Эта сеть, построенная на основе технологии CAN, была основана Allen-Bradley, но теперь переведена в open-source для более широкой интеграции. Она использует плоский или круглый многожильный кабель.
Этот модуль DeviceNet (фактически для полевой системы ввода-вывода) использует круглый кабель
HART
Удаленный преобразователь с адресацией по магистрали – это цифровой протокол, работающий на аналоговом сигнале 4-20 мА, позволяющий устанавливать устройства HART в существующую аналоговую систему. Однако для HART требуется специальный модуль; простой аналоговый выходной модуль не может транслировать протокол HART (Highway Addressable Remote Transducer).
IO-Link
Все более популярный протокол позволяет передавать данные и конфигурацию по обычному кабелю M12, а простые дискретные устройства могут существовать рядом с интеллектуальными устройствами IO-Link, что обеспечивает большую гибкость на полевом уровне.
Многие другие протоколы можно найти в модулях и встроить в ЦП для специализированных приложений.
Установка и настройка модуля
Процесс во многом одинаков для всех моделей ПЛК. Модульные платы вставляются в шасси или подключаются с помощью жгута проводов. IDE всегда содержит менеджер оборудования, который проверяет конфигурацию всех модулей и встроенных сетей. Их можно сканировать или вручную добавлять в автономном режиме.
Установка и ввод в эксплуатацию модульной сетевой карты включает ее добавление в диспетчер оборудования и настройку адреса
Большинству сетей требуется адрес или номер узла, который легко устанавливается. После загрузки сетевая карта запускается и может сканировать собственную сеть на предмет новых устройств или добавлять эти устройства вручную. Точные шаги различаются в зависимости от IDE, но это очень последовательный процесс.
Устранение неполадок в системах связи ПЛК
Большинству специалистов не нравится устранение неполадок в сети, поскольку это обычно гораздо сложнее, чем для сигналов ввода-вывода. Высокоскоростные данные невозможно отследить с помощью простых портативных инструментов, а приложения гораздо более зависимы от программного обеспечения, чем, скажем, дискретные обновления включения/выключения. Но поскольку контроллеры становятся более способными обрабатывать множество задач, они должны быть достаточно гибкими, чтобы взаимодействовать с большим количеством оборудования, а это значит сетевыми протоколами.
Большое разнообразие полевых устройств означает, что каждый ПЛК при необходимости будет включать различные интерфейсы ввода-вывода и связи
Материал подготовлен Московским заводом тепловой автоматики (МЗТА)
Типы данных string в CODESYS требуются в реализации архивации, различных таблиц, подписей, в отображении Аварий. String это строка в программной среде.
Приветствую всех, с вами на связи автор блога, в этой статье я хочу описать работу со строками типа String в среде разработки для программируемых логических котроллеров.
Для чего нужны строки?
Есть несколько основных сфер, где они применяются:
визуализации (формирование таблиц рецептов, сообщений о тревогах и т.д.);
записи данных в файлы в понятной человеку форме (в формате CSV, JSON и т.д.);
реализации строковых протоколов обмена (DCON, MQTT и т.д.);
работы с SMS;
хранения паролей, серийных номеров и т.д.
Типы строк в CODESYS
Строка – это массив чисел, каждое из которых соответствует определенному символу. Соответствие между числами и символами называется кодировкой. В CODESYS присутствуют два типа строк – STRING и WSTRING. Основные характеристики типов строк
ПараметрSTRINGWSTRINGКодировкаASCIIUCS-2 (Unicode)Размер символа1 байт2 байтаПример записи литерала(важен тип кавычек)‘hello, world’“привет, мир”
Выбор типа зависит от решаемой задачи. Например, для отображения строк в визуализации контроллеров ОВЕН следует использовать только тип WSTRING. При работе с SMS удобнее применять STRING, так как при формировании AT-команд для модемов используется кодировка ASCII.
Длина и размер строки
В CODESYS при объявлении строки задается ограничение числа ее символов. Если число символов не указано, то по умолчанию используется значение 80. Ограничение максимального числа символов строки в явном виде отсутствует. Фактически длина строки ограничена только объемом памяти, выделенной под проект.
VAR // Максимальная длина – 40 символов // Выделенная память – 41 байт sMessage: STRING(40) := ‘test’; // Максимальная длина – 80 символов (по умолчанию) // Выделенная память – 162 байта wsTitle: WSTRING := “test”; END_VAR
Базовые функции работы со строками
Значение строковой переменной можно присвоить не только при ее объявлении, но и в коде программы. Однако одного присваивания недостаточно. Для реализации алгоритмов требуются дополнительные операции, например, объединение нескольких строк в одну, поиск в строке нужного символа и т.д. Для этих операций используются базовые функции из библиотеки Standard. Список этих функций с кратким описанием
CONCAT (STR1, STR2)Объединяет две строки в одну
DELETE (STR, LEN, POS)Удаляет из строки заданное число символов с нужной позиции
FIND (STR1, STR2)Производит поиск подстроки в строке
INSERT (STR1, STR2, POS)Добавляет подстроку в строку с заданной позиции
LEFT (STR, SIZE)Выделяет из строки подстроку заданной длины (начиная с первого символа)
LEN (STR)Вычисляет длину строки
MID (STR, LEN, POS)Выделяет из строки подстроку заданной длины (начиная с нужной позиции)
REPLACE (STR1, STR2, LEN, POS)Заменяет в строке один фрагмент на другой (начиная с нужной позиции)
RIGHT (STR, SIZE)Выделяет из строки подстроку заданной длины (начиная с последнего символа)
Примеры использования этих функций:
sVar1 := ‘Hello, ’; sVar2 := ‘world’; // sVar3 теперь имеет значение ‘Hello, world’ sVar3 := CONCAT(sVar1, sVar2); // iLen будет иметь значение 12 iLen := LEN(sVar3);
Функции из библиотеки Standard могут работать только с переменными типа STRING. Для работы с WSTRING используется библиотека Standard64 с идентичным набором функций, имеющих префикс «W» (WCONCAT, WDELETE и т. д.).
Расширенные функции работы со строками
Важно отметить, что функции из библиотек Standard/Standard64 могут работать только со строками, длина которых не превышает 255 символов. Для работы с более длинными строками используется библиотека StringUtils. В ней содержатся функции, которые в качестве аргументов принимают не строки, а указатели на них. Кроме того, библиотека содержит дополнительные функции для перевода строк в верхний/нижний регистр, удаления пробелов и т. д.
Типы строк STRING и WSTRING предназначены для работы с разными кодировками. Иногда требуется выполнить конвертацию этих типов, например, ввести в визуализацию строку-сообщение типа WSTRING и отправить ее по SMS в виде STRING-значения. Стандартные операторы конверсии STRING_TO_WSTRING/WSTRING_TO_STRING в этом случае не подходят, так как не производят конвертации кодировок, а перекладывают содержимое памяти одной переменной в другую. Решить проблему поможет библиотека OwenStringUtils, разработанная компанией ОВЕН.
Библиотека позволяет:
конвертировать кодировки;
работать с подстроками;
форматировать вывод переменных типа DATE/TOD/DT/REAL
Большой набор функций для работы со строками можно найти в библиотеке OSCAT Basic. Часть из них повторяет функционал OwenStringUtils, но присутствуют и уникальные: например, зеркалирование строки и преобразование числа в строку с его HEX-значением.
Помимо видимых символов (букв, цифр, знаков препинания) строка может содержать спецсимволы, которые называются управляющими последовательностями. С их помощью, например, можно организовать перевод строки для вывода нескольких сообщений в одном элементе визуализации.
sMessage := ‘Один$r$nДва’;
В редакторе CODESYS для ввода спецсимволов используется знак ‘$’.
Строки и массивы
Как было сказано в начале статьи, строка представляет собой массив символов. CODESYS V3.5 позволяет осуществлять индексный доступ к строке – как к массиву значений типа BYTE (для STRING) или WORD (для WSTRING). Это удобно при работе с файлами и реализацией протоколов обмена. На рис. 6 приведен пример обработки строки в цикле FOR для определения позиций символов, разделяющих значения. Это может потребоваться при чтении информации из файлов формата .csv.
VAR sRecord: STRING := '123;456;789'; sSeparatorChar: STRING := ';'; auiSeparatorPos: ARRAY [0..10] OF INT; i: INT; j: INT; END_VAR
j := 0; FOR i:= 0 TO LEN(sRecord) DO IF sRecord[i] = sSeparatorChar[0] THEN auiSeparatorPos[j] := i; j := j + 1; // TODO: добавить проверку // для верхней границы массива END_IF END_FOR
Несколько примеров на реальных объектах
Обработка Аварий и вывод на экран
Делал для Молочного завода морозильную камеру, где нужно мониторить параметры температур, и на СПК107 выводил аварии на экран, когда авария срабатывала по уставке. Прилагаю скриншоты:
Небольшой кусок кода обработки аварии:
Лепка таблицы CSV для архивации
Код сам по себе большой, презентую часть. Если будет нужно, могу составить об этом статью, пишите в комментариях.
Как раз реальное применение функции CONCAT.
Отправка SMS через модем ПМ01
Было несколько проектов с применением данного модема, скажу честно стабильно всё работало несколько лет. Было реализовано и в CDS 2.3 и CDS 3.5.
В квадрате выделил пример применения переменной STRING.
Бывают задачи, когда нужно последовательно подвигать механизм вверх-вниз или влево-вправо (Например механизм протруски в прессе). Или движения тележки.
В LD программе есть научное название такой схемы - называется мультивибратор.
Реализация для ПЛК Delta.
Ставим два таймера, один с замкнутым выходом, другой с разомкнутым. Данный пример отображает работу гидравлического механизма с двумя катушками Y21 и Y22.
В параметре D2001 выставляете необходимую задержку времени. Этот же параметр можно вывести на панель оператора, любую, где есть драйвер этого ПЛК.
В ПЛК лишних компонентов нет и каждый играет свою роль, но ни один из них не является более важным, чем модуль, отвечающий за выполнение логических инструкций, составляющих программируемую часть – это центральный процессор (ЦП). В статье Дэвида Петерсона, опубликованной в журнале Control Automation дается разъяснение, какие характеристики ЦП влияют на производительность и функции ПЛК.
Центральный процессор ПЛК во многом действует как процессор обычного компьютера, но мы не часто находим спецификации, которые хотя бы отдаленно соответствуют его производительности даже в низкобюджетном ноутбуке. Причина в том, что, хотя оба процессора выполняют инструкции, которые являются основными, разница в контексте установки требует совершенно разных стратегий выполнения.
Что на самом деле делает ЦП ПЛК?
Для запуска ЦП должен выполнить несколько отдельных задач, каждая из которых тесно связана со всеми остальными:
Связь с ПО для программирования и загрузка программы
Передача данных ввода-вывода через объединительную плату
Чтение и обновление входных регистров
Расчет результата каждой строки кода
Обновление выходных регистров
Загрузка и выполнение программы ЦП программируемого логического контроллера существенно отличается от традиционного компьютера. Для большинства ноутбуков мы называем операционной системой (Windows, MacOS или Linux) фоновую систему, которая загружает и запускает программы и предоставляет пользовательский интерфейс. Но ПЛК не устанавливает и не запускает программы, а также не предоставляет пользовательский интерфейс, к которому можно подключиться с помощью мыши и клавиатуры.
Вместо этого микропроцессор ПЛК, представляет собой так называемую среду выполнения, что означает, что он только выполняет строки машинного кода. Он не предоставляет среду, в которой можно разрабатывать код.
Модуль ЦП (в центре) предназначен для взаимодействия с блоком питания, модулями связи (слева) и модулями ввода-вывода (справа)
Для задачи проектирования кода каждый производитель создает свою собственную интегрированную среду разработки (integrated development environment – IDE), например, Rockwell Studio 5000, Siemens TIA Portal или Beckhoff TwinCAT. Каждая из этих IDE устанавливается на ноутбук или настольный компьютер, создается проект, а затем он загружается в среду выполнения на ПЛК через интерфейс Ethernet (или PROFINET, EtherCAT и т. д.) или последовательный (обычно USB) интерфейс.
В наши дни существует развитые версии ПЛК, которые объединяют среду выполнения и ОС на одном устройстве, бок о бок. Примерами служат встраиваемые ПК Beckhoff или PLCnext от Phoenix Contact. Они позволяют выполнять привычное программирование на типичных языках IEC 61131, а также позволяют устанавливать IDE и другие приложения на основе ОС на самом ПЛК.
Как ПЛК взаимодействует с устройствами ввода-вывода?
Коммуникация печатной платы обеспечивает передачу всей информации ввода/вывода между ЦП и модулями ввода/вывода. Она также может обрабатывать передачу данных на модули связи для подключения к удаленным блокам ввода/вывода.
Некоторые фиксированные вводы-выводы ПЛК также включают слоты для дополнительных модулей
Соединения на печатной плате в шасси или стойке ПЛК принимают форму многоконтактного разъема, который подает функциональное питание на модули (не питание полевых устройств, но это другая тема) и достаточно линий передачи и приема данных для быстрого сканирования множества модулей за очень короткое время. В зависимости от производителя, эти линии данных могут использовать форму последовательной связи или высокоскоростное соединение EtherCAT.
Некоторые ПЛК имеют фиксированное количество встроенных входов/выходов (малые ПЛК «коробочного» типа), а некоторые из них даже допускают установку дополнительных модулей, но этим моделям по-прежнему требуется соединение данных между ЦП и точками ввода/вывода.
Процессор максимально быстро опрашивает модули ввода и вывода на предмет текущего состояния ввода-вывода и помещает эти значения в специальные адресные регистры в памяти процессора.
Строки кода, где каждый тег или переменная ссылается на местоположение в банке памяти, вычисляются по одной за раз, пока формируется временный выходной регистр. Как только последняя строка сканируется, этот выходной регистр отправляется в каждый выходной модуль. Поэтому выходные терминалы не обновляются в тот момент, когда строка меняется с false на true – это только выглядит так, потому что цикл сканирования ПЛК очень короткий.
Наиболее важные характеристики ЦП ПЛК
В отличие от обычных компьютеров, ни один производитель ПЛК не хвастается скоростью в ГГц или ГБ оперативной памяти своего новейшего процессора. Почему?
Для скорости тактовая частота ПЛК не имеет значения. Вместо этого нас интересует время выполнения различных инструкций. Биты, целые числа, числа с плавающей точкой, функции – каждое из этих вычислений требует определенного количества времени, выделенного процессором. Технические описания предоставляют эту информацию свободно, позволяя программисту оценить количество времени, которое потребуется для полного сканирования между считыванием входов и реализацией выходов.
Отдельные контроллеры совмещают типичные функции ПЛК и характеристики по производительности, присущие ОС на базе Linux
Итак, нас интересует скорость, но вместо тактовой частоты в ГГц, это скорость цикла, измеряемая в мкс или мс. Поскольку каждая программа индивидуальна, нет возможности предоставить спецификацию времени цикла для каждого пользователя.
Что касается хранения программ, нам не нужно обременять себя внешним твердотельным накопителем на 500 Гб. В отличие от компьютера, который хранит изображения, видео и программы десятками, мы храним несколько строк текстового кода, как файл блокнота. Представьте себе самый большой файл .txt, который вы когда-либо видели. Несколько МБ, те так ли? Аналогично, акцент делается не на размере хранилища, а на безупречную надежность.
Обычно объем памяти для хранения программ составляет менее 1 ГБ – только самые крупные промышленные процессы могут приблизиться к этому размеру. Некоторые ПЛК допускают расширение памяти или указывают начальную стоимость моделей ЦП с большим объемом флэш-памяти, но тратить деньги на покупку большего объема, чем вам нужно, бессмысленно.
Какой процессор лучше всего подойдет для моего ПЛК?
Вот основные вещи, на которые вам нужно обратить внимание:
Протокол связи, совместимый с вашим ноутбуком для программирования. Если вы покупаете старый процессор с интерфейсом программирования RS-232, убедитесь, что у вас есть кабель и программное обеспечение, соответствующие ему.
Достаточно памяти для хранения вашей программы. Сколько вам нужно? Короткий разговор с производителем, скорее всего, прояснит этот вопрос, но если у вас небольшой процесс, то 100 МБ вероятно хватит с запасом.
Возможности ввода-вывода. Каждый ЦП оценивается по количеству точек ввода-вывода, которые могут быть подключены к системе. Убедитесь, что у вас их достаточно.
Низкое время примерного цикла для обеспечения надежности системы. Опять же, пообщайтесь с производителем, чтобы получить представление о том, сколько точек ввода-вывода и сколько инструкций вам, скорее всего, понадобится, чтобы обеспечить низкую задержку между входными данными и выходными командами.
Теперь, обладая этой информацией при обновлении системы и парка ПЛК вы будет уверены, что не потратите деньги зря.
Выбирайте с умом: даже самый мощный процессор бесполезен, если вы не можете подключиться к нужному порту и протоколу
Уважаемые коллеги, с удовольствием делимся экскурсом в прошлое отечественной автоматизации и публикуем историю, рассказанную Михаилом Непомниным – начальником КБ автоматизации ЭПО «Сигнал» о создании одних из первых отечественных аппаратных и программных средств АСУ ТП.
В уже далеком 1988 году я после окончания университета и 5 лет работы в элитном цехе регулировщиком РЭА я перешел в ОМА (отдел механизации и автоматизации), в новое бюро автоматизации поверочных работ (КБ АПР сокращенно). Часть инженеров местного политехнического института калымила, внедряя нам автоматизацию проверки выпускаемой продукции. А мы были у них на подхвате и учились уму разуму или постигали тонкости автоматизации.
Продукцией же были специальные датчики давления, выпускаемые для военных – они производились двух типов. Нас этом я заканчиваю рассказ про сами датчики, поскольку это секретная продукция. А вот автоматизированные рабочие места для их проверки при выпуске секретом не являются. Про них я могу говорить свободно. Тем более, что АРМы сейчас уже не работают на выпуске, заменены на новую модификацию. Так что я даже коммерческую тайну не выдаю.
И так, в конце 1987 года создалось КБ, а в апреле 1988 года я перешел туда инженером-программистом. Вроде бы так моя должность называлась. КБ было преимущественно молодежное. Руководил им грамотный товарищ, который через полгода стал замом Главного инженера, а я стал начальником КБ.
Политех разрабатывал нам АРМы проверки и один АРМ «центральный процессор» для управления процессом и ведения архивов, как на бумажном носителе, так и в электронном виде. Женская часть КБ разбиралась с КД по проверки и помогала в языке высокого уровня ТурбоБейсик сочинять политеховцам программу центрального процессора. Вернее, разрабатывали прогу девчонки при постоянном контроле и подсказке работников политеха. А мужеска часть КБ, на тех же условиях разрабатывала в ассемблере программу для контроллера К1-20 микропроцессорной 580-й серии микросхем.
И не смейтесь над нами. Никаких Виндоус тогда еще не было, ТурбоБейсик был крутой язык и в ассемблере было не западло писать программу. Напомню, что это был далекий 1988-й год. Мы планировали писать программу центрального процессора на отечественной ЭВМ ДВК, но потом разжились IBM-ками. И если на ДВКшках мы в редкие минуты отдыха гоняли компьютерную игру Тетрис, то на IBMках начали кроме игр серьезно изучать языки высокого уровня типа Турбо- и Квикбейсика.
Поскольку я в университете прослушал курс лекций программирования на Алголе и Фортране, а также прошел практику по программированию, я тоже начал вместе с дамами нашего КБ программировать на Бейсике. А не осваивал один ассемблер для К1-20. Изучение Бейсика мне кстати очень пригодилось в дальнейшем. Ну об этом потом. А пока расскажу о составе и характеристиках контроллера К1-20. Это его типовое что ли название. Реально у нас были две опции контроллеров с шифрами МС2702 и МС2721.
На рисунках видно, чем они отличались друг от друга, но в общем и целом контроллеры были почти одинаковы.
Контроллер МС2721 с пультом
Контроллер МС2102 с пультом
Питание 5В было мощное – 3А. Контроллер грелся, но работал. Скажу, что мы успели поставить три АРМа в одном цехе и один в другом. Работа кипела. Собирались внедрять программу «центральный процессор» и увеличивать количество АРМ и диапазон охвата. Но (как часто в жизнь вмешивается это чертово «Но») наступила конверсия и датчики стали нужны в значительно меньших количествах, а с ними не стала нужна и наша автоматизация.
Хотел привести краткие технические характеристики контроллеров, но у меня документации давно нет. А в интернете что-то не нашел. Поэтому пишу, что помню.
Эти контроллеры содержали полноценные микропроцессорные комплекты 580-й серии. С контроллером прямого доступа к памяти, контроллерами прерываний и последовательного интерфейса. Разница была в конструкции пульта и количестве разъемов.
У МС2702 было 3 разъема, но большие. У МС2721 – 5, из которых 4 – меньшего размера, а пятый – такой, кажется, как у МС2702.
В коробочке в фольге микросхема ППЗУ для прошивки пользовательских программ. ЗИП в конденсаторную бумагу завернут, кроме картонной упаковки. Маленькая отвертка присутствует. В общем – кайф или мечта автоматизатора советских времен. Итак, переходим к основной части.
Состав АРМ:
Контроллер МС2702 (2721)
Блок питания контроллера ГН 09-01
Вольтметр В7-28 (В7-34)
Блок сопряжения
Жгуты
Один тип контроллеров для потенциометрических датчиков, другой – для индуктивных. За давностью лет и начинающимся склерозом, не помню, какой для каких датчиков применялся. Зато помню, какой вольтметр для чего служил. Поскольку В7-28 мог измерять напряжение в долях от опорного, но не мог работать с переменным напряжением, он обсчитывал потенциометрические датчики.
Вольтметры В7-28 и В7-34
А вольтметр В7-34 работал с индуктивными датчиками. Они питались от напряжений с частотой 400 Гц или 2000 Гц, и спокойно обсчитывались умеющим измерять переменку В7-34. Для потенциометрических датчиков опорное напряжение бралось со штатного блока питания ГН 09-01. Индуктивные же запитывались со специализированного блока переменного тока заводской разработки.
Блок сопряжения состоял из отдельного корпуса и платы коммутации и платы связи с вольтметром. Плата коммутации осуществляла перебор датчиков на коллекторе. Плата вольтметра программировала вольтметры и посылала команду «Пуск» при считывании данных с каждого проверяемого датчика. Корпус служил для подсоединения плат и соединения разъемов внешних жгутов.
Жаль, что у меня нет фото АРМа целиком, фото блока сопряжения и схем АРМа. Могу только по памяти изобразить функциональную или структурную схему АРМа и блока сопряжения.
Все пропало в период перестройки и дикого капитализма. И так промышленный уклад у нас в стране был не очень крепкий. А в период позднего Горбачева и Ельцина стал вообще ни в дугу.
Документацию выкидывали, оборудование расхищали, считали, что тем, кто не производит материальные ценности платить надо минималку или вообще выгонять с работы.
Хорошо сейчас процесс потихоньку налаживается.
Еще раз благодарим Михаила Непомнина за рассказ, а также дополним его историей развития Московского завода тепловой автоматики (МЗТА), а точнее кратким перечнем приборов автоматизации, также предшественников современных ПЛК, которые были созданы до событий, о которых идет речь в статье, то есть до 1988 года.
1955-60 гг. – первый электронный прибор – ЭР-111-К – «КОМЕГА», дифференциальные манометры и электронные приборы регулирования – РБ-100
1960-е – комплекс – КРИСТАЛЛ, регулирующий прибор импульсного действия с бесконтактным выходом – РПИБ, дифференциатор ламповый – ДЛ-Т, электронные сигнализаторы и ограничители температуры ЭСП-К, ЭОС-Т