Клуб разработчиков программных систем

Темы | Статьи | Рейтинги |

 буллет Статьи

Автоматизация подготовки производства деревянных изделий

С.Трофимов

Окна и двери № 11-12 за 2004

 

Автоматизировать, значит снизить потери

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

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

Что автоматизировать?

При упоминании слов «Автоматизации производства» в первую очередь на ум приходят сложные станки с числовым программным управлением и автоматические линии, опутанные проводами, где все, начиная от распилки древесины, до сборки готовых изделий делают роботы без участия человека. Однако не всегда автоматизация в таком масштабе возможна исходя из задач выполняемых на предприятии, да и просто по финансовым соображениям.

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

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

Проблемы автоматизации производственного задания

При автоматизации этого процесса разработчик неизбежно сталкивается с трудностями, которые не позволяют решить такую задачу «в лоб» и использовать для  этого доступные инструменты, такие, например, как электронные таблицы Excel.

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

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

Что хотят видеть пользователи?

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

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

Как такую задачу решить?

Нельзя сказать, что такая задача совсем не решалась ранее. Расчет комплектующих изделий есть в каждой крупной программной системе для автоматизации производства. Расчет сделать не так уж трудно, подставить формулы, отладить на тестовых моделях и расчет готов. Остается добавить печатные формы и можно работать. Но это только половина дела. Полное решение проблемы заключается не в создании расчета как такового, а в создании такой программной системы, которая могла бы рассчитывать модели изделий, которых еще небыло при ее создании.

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

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

Поскольку в задании свойств мы не ограниченны конкретными справочниками, то легко можно подключить другие модели, просто указав в свойстве, что оно является моделью. В этом случае мы можем создать произвольную иерархию составляющих изделия, которая к тому же позволяет уменьшить трудоемкость конфигурирования других моделей в дальнейшем. Так создав, к примеру, модель дверного полотна, можно включать в модель распашной двери,  с двумя одинаковыми или даже разными моделями полотен. Или, к примеру, поменяв в модели дверную коробку – получить модель раздвижной двери.

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

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

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

Не слишком ли сложно?

Описанный механизм может показаться несколько сложным для восприятия и работы. Однако, при обычной эксплуатации программы эта сложность скрывается от пользователя путем использования нескольких режимов с определенной глубиной детализации информации. При внесении заказов в систему не требуется знаний о внутренней структуре модели и ее составляющих. Уже созданная и настроенная необходимым образом модель просто выбирается из справочника моделей, указывается ее размер и некоторые дополнительные свойства на первом, самом высоком уровне. Для большинства заказов – этого уровня вполне хватает.

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

Заключение

 

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




Список статей:

 

    Еще статьи >>>

© Trofimov Sergey   http://www.caseclub.ru при цитировании ссылка обязательна.