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

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

1183

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Другие два тоже переведу на контроллер. Станков у нас три.

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

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

P.S. habrahabr.ru Соберу всё в маленький ящик и в конце концов выкину огромный шкаф управления. На последующем шаге подмена старого управления нагревом 6 зон шнека и «головы» станка на современную электронику (6xMAX6675+Atmega328+6xMOC3061+6xBT138-600+LCD20x4).