Как стать автором
Обновить

Применение STM32 в промышленных станках на примере выдувного автомата CHODOS (Чехия)

DIY или Сделай сам
Из песочницы
В одном из цехов предприятия, на котором я работаю, стоит станок, который изготавливают пластиковую тару. Станок называется выдувной автомат. Он выпущен в 1988 году в Карловых Варах компанией CHODOS:

image

Управляет циклом электроника на микросхемах TTL логики (типа К155(555) или SN74xx). Под катом расскажу, как электронику прошлого века я заменил на микроконтроллер STM32.

Принцип работы выдувного автомата вкратце таков: поступающая из бункера пластмассовая крошка плавится и выдавливается шнеком под давлением через сопла, формируя «рукава». После этого «рукава» отрезаются и подаются в выдувные формы, в которых под давлением подаваемого воздуха формируется изделие (в моем случае — это пластиковая бутылка).

Управляет станком пара десятков плат TTL-логики, несколько плат коммутаторов нагрузки с семисторами для включения клапанов и пускателей, несколько плат преобразователей уровней входных сигналов от концевиков. Все платы вставлены в корзину с разъемами в шкаф уравления. В корзине всё соединено методом накрутки. Платы TTL логики собраны на микросхемах производства TESLA (аналоги К155(555) либо SN74XX).

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

Фото корзины с платами (2 фото)




Было принято решение перевести контроль и управление циклом литья на микроконтроллеры. Первым подопытным контроллером был Arduino Mega 2560. Контроллер оказался очень «нежным» для работы в условиях сильных электромагнитных всплесков от пускателей и электродвигателей. Он просто зависал, когда ему вздумается. Не помогло ни экранирование самого контроллера, ни замена всех кабелей, идущих от концевых выключателей на заземленный МКЭШ 3х0,5. Ну и конечно, была полностью заменена вся электропроводка станка. Одним из вариантов решения проблемы с зависаниями было использование бутлоадера optiboot для Arduino с задействованной функцией watchdog с сохранением состояния в EEPROM и восстановление состояния с продолжением цикла после сброса. Но и это не помогло.

В общем, было решено отказаться от Atmega и перейти на STM32.

В качестве STM32 был приобретен контроллер NUCLEO-F401RE. Все сигналы от концевиков собирались через оптроны PC817. Управление электроклапанами и пускателями было сделано на SSR SHARP S202S02 (можно использовать и пару MOC3061 + BT138).

image

В качестве индикатора был заказан и оплачен на Aliexpress LCD12864 (ST7920), но продавец прислал LCD 20x4 (в ходе спора деньги вернули обратно, а дисплей остался) и решил применить его.

Программу писал в онлайн компиляторе mbed.

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

Вырезка из кода
Весь код занимает примерно 2000 строк. Выкладывать не буду. Скажу только, что из контроллера постоянно выходит сервисная информация через COM порт (сделал для себя).

Покажу только ключевые фрагменты.

// Начальные установки
// Регулируемые оператором переменные программа хранит в eeprom памяти.
#include "_24LCXXX.h" // Библиотека работы с микросхемой eeprom памяти
_24LCXXX eeprom(&i2c, 0x50); // Подключаем микросхему eeprom
DigitalIn S41(PC_8); // Концевик S41 подключен через оптрон к выводу PC_8 контроллера
DigitalOut Y43 (PA_13); // Управление гидравлическим клапаном Y43 (катушка 220В) через вывод PA_13
Timer T48; // T48 – таймер применяемый в цикле литья
float SetT48 = 15.0; // Переменная регулируемая оператором. Время на которое включается таймер T48.

void setup()
{

S41.mode(PullDown); // Задействую подтягивающий резистор

}
int main()
// Основной цикл{

// Метод работы с сигналом от концевика
if (S41==LOW) { //Проверка состояния концевика

}

// Метод управления нагрузкой
Y43==1; // Включить гидроклапан Y43
Y43==0; // Выключить гидроклапан Y43

// Работа с таймером
T48.reset(); // Сброс таймера Т48
T48.start(); // Старт таймера Т48

CurrentT48=T48.read(); // Считываем текущее значение счета таймера Т48
if (CurrentT48 > SetT48) {// Сравниваем с заданной величиной
T48.stop();
}

// Вывод динамического состояния таймера на LCD
lcd.printf(«T48=%4.1f», CurrentT48);
...

// Метод работы с eeprom:
eeprom.nbyte_read(0x00, &SetT48, 4 ); // Чтение из еепром 4-х байт начиная с адреса 0х00 и запись содержимого в память отведенной переменной SetT48 (тип переменной float – 4 байта)
eeprom.nbyte_write(0x00, &SetT48, 4); // Запись в еепром 4-х байт начиная с адреса 0х00 значений памяти отведенной переменной SetT48 (тип переменной float – 4 байта)

}


Контроллер прошит. NUCLEO прошивается очень легко. После подключения USB кабеля от NUCLEO в компьютер в последнем появляется съемный диск. В него копируем бинарник, полученный после компиляции в онлайн компиляторе и всё — прошивка сама зальется в кристалл. Были моменты, когда приходилось заливать бинарник прямо с Galaxy Nexus через OTG кабель.

Сделал печатную плату методом ЛУТ. Спаял. Смонтировал в шкаф станка. Запустил. Научил Операторов-наладчиков.

Фото результата


Видео результата


На сегодняшний день «пробег» составляет более 100 тыс циклов! Ни единого сбоя по вине электроники.

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

Станков у нас три. Остальные два тоже переведу на контроллер.

Про цены не пишу. Курс прыгает. Да и все детальки можно найти на Aliexpress, где я всё и покупал.

Спасибо. На вопросы отвечу.

P.S. На следующем этапе замена древнего управления нагревом шести зон шнека и «головы» станка на современную электронику (6xMAX6675+Atmega328+6xMOC3061+6xBT138-600+LCD20x4). Соберу всё в небольшой ящик и наконец выкину громадный шкаф управления.
Теги: STM32nucleo-f401reS202S02PC817CHODOSстанокmbed
Хабы: DIY или Сделай сам
Всего голосов 38: ↑37 и ↓1 +36
Комментарии 79
Комментарии Комментарии 79

Похожие публикации

Лучшие публикации за сутки