Всем привет. Меня зовут Андрей, занимаюсь разработкой электроники и микропроцессорных устройств с 2005 года. Сегодня поделюсь историей разработки одного очень интересного проекта. Это был далекий 2005 год, когда память программ микроконтроллеров измерялась десятками килобайт, а ОЗУ - едва перевалило за десятки килобайт. Но для начала краткий экскурс в процесс лиофилизационной сушки препарата. Лиофилизационная сушка. Это процесс удаления воды из препарата с сохранением физической формы. Для данного процесса важны 2 основных этапа: это заморозка материала и последующая сушка. Заморозка происходит в устройстве, назовем его далее по тексту морозильный ларь. А сушка материала в устройстве под названием сублиматор. В сублиматоре происходит процесс сублимационной сушки: под вакуумом из материала постепенно удаляется влага. Это очень кратко, дабы было понятно, о каких физических процессах идет речь и что мы будем контролировать и чем управлять.
Итак, в 2004 я начал работать в фирме , на производстве которой используется процесс сублимационной сушки. Препараты разливается при комнатной температуре в стерильном боксе по флакончикам. Далее флакончики расставляются по кассетам, а кассеты уже устанавливаются в стойку. В зависимости от размера стойки , может было до 15 пластин, на которых стоят кассеты.


В сублиматоре с 15 пластинами умещается 56 кассет (на верхней пластине кассеты не устанавливаются) По технологическому процессу нам нужно контролировать температуру материала на каждой пластине и управлять нагревом каждой пластины. Итого: нам нужно контролировать 15 показаний температур пластин + 14 показаний температур материала + 2 значения температуры испарителя (верх + низ, для правильной настройки ТРВ холодильной установки) + значения вакуума + 4 выборочных значения сопротивления материала. И это только с 1 установки сублиматора. В морозильном ларе ситуация немного полегче, тк там не производится откачка воздуха. Но, по техпроцессу, нам уже нужно управлять работой холодильной установки : если быстро заморозить препарат, то возникнут в биоматериале кристаллы (брак), если слишком медленно, то перерасход электроэнергии. Скорость заморозки была подобрана экспериментальным путем. И для разных биоматериалов были разние значения скорости заморозки и сушки.
Старая система, которая контролировала весь процесс лиофилизационной сушки была очень негибкая и изжила себя: в качестве датчиков использовались обычные диоды, которые приходилось постоянно подкалибровывать. Естественно, схемотехника была старая, ацп К572ПА1 + аналоговые коммутаторы. Программа была написана под DOS и не поддерживала мышку. Тогда уже была Windows XP, и все уже понимали моральное устаревание данной АСУТП. И тут сошлись звезды: предприятие запускало новую линию, меня перевели в электронщики, и я был молод и горяч ( а в молодости мы все стремимся сделать мир лучше). Мне дали полный карт-бланш на разработку. Я был, как сейчас модно говорить, и архитектором системы в целом, и электронщиком и программистом. До этого писал серьезные проекты для ПК + разработка электроники ну и с микроконтроллерами был уже знаком. И вот что получилось.
Новая система получилась следующей:

Ведущим выступал персональный компьютер с Windows XP. Программа должна была иметь полноэкранный интерфейс с блокировкой доступа к системе WIndows, ведение статистики производственного процесса и управление им. В качестве ведомых выступали блоки управления морозильным ларем и сублиматором. Т.к обычно, у каждого сублиматора свой морозильный ларь, то эти 2 устройства управлялись с одного блока. Блоки управления соответственно считывали информацию с датчиков температуры пластин и материала, показания вакуума и сопротивления материала. И передавали по запросу ведущему. В качестве датчиков температуры использовались DS18B20. Эти датчики устанавливались в трубки из нержавейки (тогда еще в Китае таких не было и приходилось самим заваривать трубки, опускать датчики внутрь и заливать смолой).Экспериметнальным путем было выяснено, что диапазон передачи показаний от DS18B20 составляет от -72 до +127 (естественно, что погрешность при очень низкой температуре не нормируется производителем, но в данном случае нас устраивала). Кстати, в процессе работой над данным проектом было много проделано опытов с данными датчиками. Блок передавал информацию через интерфейс RS232. Но, тк драйверы RS232 не очень хорошо переносят запараллеливание без технических ухищрений, то был разработат “расширитель интерфейса”. Через порт LPT компьютер управлял переключением своего последовательного порта к определенной установке. И после чего инициировал обмен. А теперь расскажу немного подробнее о программе и каждом устройстве. Начну пожалуй с программы на ведущем.
Программа выглядела вот так:

На основном экране были вкладки с сублиматорами, вкладки с морозильными ларями. Небольшое отступление: биоматериал более чувствителен к сушке, нежели к заморозке, поэтому на первом экране выведены все сублиматоры. Выводятся показания температур материала Tm и пластин Tp. Для, например, стойки с 56 кассетами выводилось 15 показаний температур пластин и 14 показаний температур материала (на 1 стойке было 29 датчиков температуры). Так же выводились 2 температуры испарителя Tисп1,2, вакуум P и сопротивления. Все данные заносились в текстовый файл и сохранялись. В дальнейшем другой программой можно было открыть файл, и провести анализ. В программе так же была вкладка с настройками, где прописывались все коды датчиков температур.

Датчики висели не на 1 проводе, а по группам. Сделано было для надежности (если была оборвана или закорочена 1 группа, то можно было продолжить сушку других пластин, с целью минимизации брака). В программе была реализована система ручного управления нагревом согласно этапу сушки (кадру), можно было гибко управлять нагревом каждой пластины, можно было переходить между кадрами (для опытных операторов). В морозильном ларе программа управляла самой холодильной машиной и 2 вентиляторами , установленными в камере. Вентиляторы служили для ускорения циркуляции воздуха и способствовали равномерному охлаждени.Все эти параметры тоже настраивались. Самое интересное было обеспечить взаимозаменяемость стоек. Для этого был реализован следующий алгоритм: программа постоянно запрашивала температуру с блока управления. Если блок управления присылал отсутствие подключенных датчиков, то программа передавала коды датчиков другой стойки и повторяла опрос. Если температура снова не присылалась, то через 3 итерации происходила отправка кодов следующих стоек. И так далее по кругу. При постановке в установку (морозильный ларь или сублиматор) стойки с материалом и подключении к кабелю, блок управления опрашивал стойку и если коды совпадали, то возвращал ведущему правильные значения температур. Так удалось достичь автоматического распознавания стоек. Программа же запускала процесс сушки, запрашивала фамилию опаратора и начинала вести записи.
Теперь программа анализа процессов заморозки и сушки. Вот так выглядел интерфейс и загруженная программа сушки:

Можно было посмотреть среднюю температура пластин и материала, а также каждую температуру отдельно:

Можно было настроить разные границы температур материала и пластин для удобства анализа Заморозка материала выглядела соответственно вот так:


И естественно, всевозможные печати, экспорты и пр. Был даже упрощенный отчет для высшего руководства.
А теперь коснемся железа. Начнем с блока управления. Каждая установка (морозильный ларь или сублиматор) управлялась своим контроллером. Платы были унифицированы и отличались только запаянными компонентами (платы кстати тогда делали по технологии ЛУТ). Трудился там микроконтроллер AT90S8535 в DIP корпусе с вот такой обвязкой:
Прошивка под микроконтроллер была написана на голом ассемблере (ну какие библиотеки в 20 лет назад?). В ОЗУ памяти микроконтроллера сохранялась таблица с кодами датчиков и он последовательно их опрашивал. Так же был реализован последовательный интерфейс и работа с АЦП. Сейчас это кажется немного наивным (на фоне плотной работы с STM32 и например w5500 с MQTT) и вызывает ностальгическую улыбку, но тогда это было круто. Тк сублиматоры была с шкафами управления и в каждом шкафу стоял самописец-регистратор, было решено использовать его как донора корпуса. У самописцев была очень хорошая система выдвижных салазок. И вот какая конструкция получилась :


В блоке был установлен блок питания, 3 разъема ГРПМШ61, в которые вставлялись управляющие платы. Да, была своего рода унификация, можно было опаративно выташить плату и заменить на другую. Хотя, за все это время в режиме работы 24/7 система показала себя очень надежной и живучей. К слову сказать, все это работает и по сей день.
Переходим к блоку расширителя интерфейсов:

Перед разработкой изучал схемы, решения и ничего не подходило, тк нужно было обеспечить коммутацию на 16 СОМ-портов. В итоге, реализовал такую схему. Коммутаторы 547КП1 переключают сигналы TX и RX от ведущего на каждый ведомый. А дешифратором с LPT порта служит 155ИД3. Ну, и тк сигналы RS232 биполярные, то понадобился и биполярный блок питания. Сразу скажу: гальванической развязки не было. Совсем. И все работало в условиях помех , тк находилось в машинном зале. Это кстати первая система и в 2007 была разработана 2я версия на atmega128 с гальванической развязкой и без расширителя интерфейсов.
Силовая часть - самая простая часть всей системы:

Реализована на симисторах BTA41 с оптоизоляторами. Ну, так как токи нагрева пластин приличные, все это висит на приличной пластине из цветмета :-). А питаются они переменным напряжением 48-50 вольт от таких серьезных трансформаторов.
Вот такой получился рассказ о АСУТП. Да, система была разработана можно сказать на коленке и имеет свои недостатки. Возможно, сейчас все было бы по другому: RS485 с оптоизоляцией, статистика в локальной базе с уведомлениями на телефон руководителю, уведомления на пейджер операторам, модули планирования и пр, и пр. Но тогда, для того времени это было очень и очень круто. Я получил огромный опыт и с этого проекта начался мой серьезный путь разработок электронных устройств.
Спасибо всем, кто читал.
Комментарии 0