В конце прошлого года ко мне обратилась одна фирма, которая предоставляет комплексные решения для зерновых культур с предложением рассмотреть проект автоматизации небольшой системы отбора проб зерна. Особенностью данного проекта являлось то, что конструктивные решения и исполнительные приводы уже были разработаны и реализованы в железе. Не вдаваясь в подробности технологического процесса отбора проб можно сказать, что цель автоматизации – это управление механическими задвижками зерно-воздушного потока, запуск шнекового смесителя для однородности проб, управление электродвигателями воздушных турбин, обработка управляющих сигналов оператора и датчиков некоторых шагов операций. Задвижки и смеситель были спроектированы так, что приводились в движение с помощью шаговых двигателей.
Раннее было принято решение построить систему автоматизации на базе одноплатного микрокомпьютера Orange pi plus 2e и микроконтроллера Arduino Nano. Для этих плат нашлось применения для другого подобного проекта, но это уже другая история. Но в последствии, после обсуждений всех преимуществ и недостатков остановились на PLC CPU 1214C DC/DC/DC с каталожным номером 6ES7 214-1AG40-0XB0 у которого на борту можно сконфигурировать до четырех импульсных выводов управления и модуль дискретных выходов SM 1222 DQ16 x 24VDC с каталожным номером 6ES7 222-1BH32-0XB0. Шаговые двигатели были выбраны из серии KRS56, управляемые драйверами TB6560 V2.
![](https://habrastorage.org/webt/zf/18/vz/zf18vztcq5pjza8-sjlevwinjn0.png)
Выше представлено изображение из functional manual S7-1200 Motion Control V13 SP1 для понимания общей картины структуры управления
![](https://habrastorage.org/webt/he/0r/xn/he0rxnmgaxvnt64tmq-hxaboque.png)
Рисунок 1 – схема выходов управления драйверами ШД и схема подключения ШД
Загвоздка состояла в том, что хотели найти компромис между бюджетом и оптимально выбранными комплектующими. И первая задача по управлению состояла в том, что на борту PLC только четыре импульсных вывода, а в исходном проекте необходимо было управлять восьмью шаговыми двигателями и одним сервоприводом по ШИМ. После ознакомления с тех-требованиями алгоритма управления системы выяснилось, что одновременный запуск приводов (шаговых двигателей) был не более двух единиц. И конструкция задвижек позволяла оставлять их без удерживающего момента. Поэтому решил реализовать программно так, чтобы один импульсный вывод можно задействовать для множества драйверов шаговых двигателей, управляя разрешающим входом EN драйвера. Импульсный вывод ШИМ управления сервопривода, конечно, оставался обособленно, т.к. это является аппаратно сконфигурированным. Таким образом я реализовал функциональный блок управления ШД. Алгоритм управления системой был выполнен в программном пакете TIA Portal v14 на графическом языке LAD.
![](https://habrastorage.org/webt/hb/h4/2l/hbh42l1bhsd4ace9xnynztkjpa4.png)
Рисунок 2 – Функциональный блок управления драйвером ШД
Внутри функциональный блок представляет собой простую дискретную логику на лестничной диаграмме с сохранением состояния и таймаутом на срабатывание
![](https://habrastorage.org/webt/gm/xj/tt/gmxjttfs6mo9xgaob28n_du8ski.png)
Рисунок 3 – Функциональный блок детально
Настройка и программирование импульсных выходов для управления шаговыми двигателями подробно расписаны в мануалах, например STEP 7 S7- — 1200 Motion Control V13 SP1, также в сети есть видеоролики с объснением требуемых шагов
Приведу лишь пару скриншотов настройки импульсного выхода в моем проекте
![](https://habrastorage.org/webt/_m/av/jr/_mavjrfmluujjmqty3k1qvnburu.png)
Рисунок 4 – параметрирование импульсного выхода
Для управления непосредственно самим ипульсным выходом необходимо использовать библиотечные функции такие как MC_Power, MC_Home, MC_MoveAbsolute и прочие в данном разделе. Подробное описание функций находится в справочном разделе TIA Portal и в указанных мануалах.
На следующем рисунке приведены части логики, где в части и части 2 показано использование библиотечных функциональных блоков управления ипульсными выходами. Блок MC_Power используется для инициализации аппаратного управления, блок MC_Home – для обнуления позиции. Так как логика работы управления ШД поворотной части задвижки основывается на выборе точных позиций опытным путем, то используется блок MC_MoveAbsolute, где значения точных позиций и скорость являются уставками и расположены в соответсвующих тегах блока данных. На скрине упущены промежуточные преобразования между управляющим экземпляром блока FB1 SHUTTER и блоком MC_MoveAbsolute. Если кратко, то выходные сигналы из первого блока, такие как SW_OUT_EN – разрешение запуска драйвера ШД, являются входными для второго блока в качестве сигнала “execute”. На рисунке в части 3 и 4 показано управление выходными сигналами PLC, идущими на входа драйверов ШД, которые также формируются в блоке FB1 SHUTTER. Другими словами, можно создать множество экземпляров данного блока FB1 SHUTTER, связанного с управляющими библиотечными блоками импульсных выходов. Но соответствующие драйверы ШД будут задействованы только при наличии (или отсутствии в зависимости от схемы подключения) разрещающих входных сигналов, которые можно формировать отдельными ветвями логики.
![](https://habrastorage.org/webt/cd/x1/ox/cdx1oxwsqx-_nm91xd8djf40bbw.png)
Рисунок 5 – Логика управления импульсным выходом
В следующей статье я хочу показать, как можно создать несложный HMI на основе Node-red js-библиотек scadavis.io для контроля и визуацилизации процесса для Simatic PLC