Информационная система оперативного управления линии розлива молока
Обзор существующих систем диспетчеризации. Математическая постановка задач оперативного управления линией розлива молока. Решения по техническому обеспечению и системному программному обеспечению. Особенности и структура SCADA как процесса управления.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 11.03.2015 |
Размер файла | 932,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
6.3.5 Накладные расходы
В данном разделе учитываются затраты организации - разработчика на содержание аппарата управления, обслуживающего персонала, расходы на охрану, содержание зданий и сооружений, текущий ремонт, расходы на отопление и освещение, канцелярские и другие общехозяйственные расходы:
Снр = Сот * Кнр,
где Кнр - коэффициент накладных расходов, принятый в организации - разработчике.
Снр = 125286,1*1,5=187929,2
При выполнении расчетов работы были определены расходы на разработку программного обеспечения:
1. сумма расходов на основные и вспомогательные материалы - 560 руб.
2. сумма расходов на покупные комплектующие - 3850 руб.
3. сумма амортизации основных фондов -1724,03руб.
4. сумма расходов на оплату труда -125286,1руб.
5. прочие расходы - 0р.
6. накладные расходы - 187929,2р.
В итоге, общая сумма всех расходов составила - 356935,1 руб.
6.4 Расчет экономии от внедрения программного продукта
Главный экономический эффект от внедрения средств автоматизации заключается в улучшении экономических и хозяйственных показателей работы предприятия, в первую очередь за счет повышения оперативности управления и снижения трудозатрат на реализацию процесса управления, то есть сокращения расходов на управление. Для большинства предприятий экономический эффект выступает в виде экономии трудовых и финансовых ресурсов, получаемой от:
· снижения трудоемкости оперативности управления;
· снижение трудозатрат на поиск и подготовку документов;
· экономии на расходных материалах (бумага, дискеты, картриджи);
· сокращения служащих предприятия.
Данные, принимаемые для расчета:
1. Средняя заработная плата: Cоt=20000 рублей.
2. Количество пользователей до внедрения 3 человека так как линия очень длинная и один человек не сможет контролировать всю линию не более 2х соседних единиц оборудования в линии, в отличии от оператора сидящем за компьютером который на своем мониторе видит все единицы оборудования в линии.
Расходы на персонал до внедрения:
;
где n - численность персонала связанная с выполнением paбот;
Aс - процент отчислений на социальное страхование
Aп - средний процент премий.
руб.
За год: P1=Zmec*12=85800*12= 1029600
Расходы на персонал после внедрения:
руб.
За год: P2=Zmec*12=45705*12= 514800
Годовая экономия Эр складывается из экономии эксплуатационных расходов и экономии в связи с повышением производительности труда пользователя. Таким образом, получаем:
Эр= Сот- Сам- Сэ/э;
где Сот - расходов на оплату труда
Сам - амортизация основных фондов
Сам =(20500*0,2*262)/262=4100
Сэ/э - расход электроэнергии
Сэ/э=0.4*8*262*2.86=2397,824 руб/год
Эр=1029600-4100-2397,824=510678,1
Окупаемость считается по формуле
;
где: - Капитальные затраты на этапе проектирования;
(год)
6.5 Технико-экономические показатели проекта
Технико-экономические показатели проекта занесены в таблицу 6.8
Таблица 6.8 - Технико-экономические показатели проекта
Показатели |
Значения |
|
1. Технические |
||
1.1 Персональный компьютер |
1233 МГц, RAM 512 MB |
|
1.2 Операционная система |
Windows ХР |
|
1.3 СУБД |
mysql server 2012. |
|
2. Экономические |
||
2.1 Смета на разработку (руб.) |
356935,1 |
|
2.2 Длительность разработки (дн.) |
87,2 |
|
2.3.1 Экономичность затрат (руб/год) |
510678,1 |
|
2.3.2 Экономия заработной платы работников (руб/год) |
514800 |
|
2.4 Срок окупаемости |
0,7 |
7. Безопасность и экологичность проекта
7.1 Анализ условия труда оператора ПК
Основные определения и классификация
На человека в процессе его трудовой деятельности могут воздействовать опасные (вызывающие травмы) и вредные (вызывающие заболевания) производственные факторы.
Вредный производственный фактор - производственный фактор, воздействие которого на работающего, в определённых условиях, приводит к заболеванию или снижению работоспособности.
Опасный производственный фактор - производственный фактор, воздействие которого на работающего, в определённых условиях, приводит к травме или другому внезапному ухудшению здоровья.
Вредный производственный фактор, в зависимости от интенсивности и продолжительности воздействия, может стать опасным.
Классификация опасных и вредных производственных факторов (ГОСТ 12.0.003-74)
Опасные и вредные производственные факторы подразделяются по природе действия на следующие группы:
физические;
химические;
биологические;
психофизиологические.
Условия труда после внедрения информационной системы оперативного управления линии розлива молока облегчился за счет:
1 ) Дистанционное управление и контроль линии - не надо бегать вдоль линии включать и выключать, а также контролировать каждую единицу лини при каких-нибудь технологических остановах. Весь контроль и управление осуществляется с диспетчерского пункта.
2 ) Дистанционное управление и контроль линии - не надо бегать вдоль линии включать и выключать, а также контролировать каждую единицу лини при каких-нибудь технологических остановах. Весь контроль и управление осуществляется с диспетчерского пункта.
3 ) Облегчения расчетов - программное обеспечение ведет все расчеты в автоматическом режиме и сохраняет их в архиве для дальнейшего использования.
4 ) Оформления отчетов - не нужно вспоминать или искать в записях, что, когда и сколько было произведено и сколько на это ушло сырья и материалов, все формируется автоматический.
5 ) На диспетчерском пункте проще создать микроклимат нежели в цехе - Микроклимат в зоне рабочих мест и в производственном помещении оказывает существенное влияние на работоспособность, самочувствие и протекание физиологических процессов, поддерживающих постоянство температуры тела. Производственный микроклимат определяется интенсивностью теплового излучения от нагретого оборудования и материалов, температуры, влажности и скорости движения воздуха. Значительные колебания микроклимата могут привести к перегреву или переохлаждению организма человека.
6 ) Отсутствие вредных и опасных факторов, а именно:
- не приходится дышать реагентами, которые используются для промывки машины
- снижается вероятность травмаопасности.
7.2 Анализ пожарной безопасности труда
Пожарная безопасность на предприятии является одной из важнейших задач любого руководителя. Зачастую сам процесс организации пожарной безопасности вызывает массу затруднений.
Пожарная безопасность предприятия предусматривает:
1). Политику предприятия в области пожарной безопасности;
2). Организацию работ по пожарной безопасности;
3). Обязанности должностных лиц в области пожарной безопасности;
4). Обязанности ответственного лица за пожаробезопасность предприятия;
5). Обязанности служащих и рабочих;
6). Организация противопожарной подготовки специалистов, служащих и рабочих;
7). Основные требования пожарной безопасности.
Политика предприятия в области пожарной безопасности направлена на выполнение следующих задач:
· формирование системы пожарной безопасности, обеспечивающей эффективность мероприятий, направленных на предотвращение и ограничение распространения пожара;
· обеспечение объектов предприятия необходимыми средствами контроля, оповещения и пожаротушения;
· создание условий, направленных на соблюдение работниками требования пожарной безопасности и поддержания противопожарного режима;
· развитие компетентности администрации и работников в области пожарной безопасности;
· не допускать отклонений от стандартов, технических регламентов, принятой практики и процедур выполнения работ, которые могут привести к возникновению возгорания или пожара.
Организация работ по пожарной безопасности включает:
1). разработку и внедрение системы управления пожарной безопасностью согласно требованиям руководящих документов;
2). общее руководство и контроль за состоянием пожарной безопасности на предприятии, контроль за соблюдением законодательных и иных нормативных правовых актов, требований, правил и инструкций по пожарной безопасности. Контроль за выполнением служебных обязанностей подчиненными;
3). обеспечение пожарной безопасности при проведении технологических процессов, эксплуатации оборудовании, производстве пожароопасных работ;
4). установка и контроль за состоянием средств контроля, оповещения и пожаротушения;
5). организацию разработки и обеспечение выделения финансовых средств на реализацию мероприятий по обеспечению пожарной безопасности;
6). проведение обучения и инструктажа работников предприятия по пожарной безопасности;
7). обеспечение электробезопасности предприятия.
Подробное описание выше перечислимых работ
1. Разработка системы управления пожарной безопасностью. На предприятии разработаны основные требования пожарной безопасности, включающие требования к безопасности людей, посетителей (покупателей), требования к производственным, служебным, вспомогательным и другим помещениям, требования к содержанию и эксплуатации отопления, вентиляции, машин и оборудования, хранению товаров и материалов, обеспечение электробезопасности, требования к содержанию автотранспортных средств и другие, а также порядок совместных действий администрации предприятия и пожарной охраны при ликвидации пожаров.
2. Руководство и контроль за состоянием пожарной безопасности на предприятии. Ответственность за организацию пожарной безопасности несет руководитель предприятия. Ответственность за организацию пожарной безопасности в цехах и подразделения несут начальники цехов и руководители подразделений. В их должностных инструкциях должны быть прописаны права, обязанности и ответственность за соблюдением правил пожарной безопасности. На предприятии должны быть оформлены документы по пожарной безопасности. Контроль за соблюдением требований руководящих документов и локальных актов по охране труда, а также за соблюдением на предприятии противопожарного режима осуществляет ответственный за пожаробезопасность предприятия.
3. Обеспечение пожарной безопасности при проведении технологических процессов, эксплуатации оборудовании, производстве пожароопасных работ. Действующие нормативные документы устанавливают жесткие требования к техническому состоянию оборудования (сюда входят машины, станки, механический и ручной инструмент, лифты, конвейеры и другое оборудование, потенциально опасное для человека). Также предъявляются требования по противопожарному состоянию оборудования, и поддержание противопожарного режима при его эксплуатации.
4. Установка и контроль за состоянием средств контроля, оповещения и пожаротушения. На предприятии должен быть издан приказ о проверке систем пожаротушения и автоматической пожарной сигнализации, а также об ответственном за их исправное состояние. Количество первичных средств пожаротушения в помещениях зависит от категории этих помещений. Подробно об этом говорится в «НПБ 105-95. Определение категорий помещений, зданий и наружных установок по взрывопожарной и пожарной опасности». Согласно этому документу помещения по взрывопожарной и пожарной опасности подразделяются на категории А, Б, В1-В4, Г и Д, а здания - на категории А, Б, В, Г и Д.
5. Организация разработки и обеспечение выделения финансовых средств на реализацию мероприятий по обеспечению пожарной безопасности. Нельзя забывать о том, что вся работа по созданию и поддержанию пожарной безопасности предприятия начинается с составления годового плана противопожарных мероприятий. Исходя из намеченных мероприятий готовится предложение по бюджету предприятия на очередной финансовый год. И, конечно же, без финансирования не может быть качественной противопожарной защиты.
6. Обучение по пожарной безопасности специалистов, служащих и рабочих включает: - проведение вводного, первичного, повторного, внепланового и целевого инструктажей; - организация занятий по пожарно-техническому минимуму; - проведение учений и противопожарных тренировок.
7. Электробезопасность. Обеспечение электробезопасности на предприятии важно не только с точки зрения защиты людей от поражения электрическим током, но и в целях пожаробезопасности. По статистике, около половины пожаров происходят из-за нарушений электробезопасности. Для организации работ по обеспечению электробезопасности приказом руководителя назначается ответственное лицо за электрохозяйство предприятия. На него возлагаются следующие обязанности: обеспечение безопасности работ в электроустановках, организация систематического проведения замеров сопротивления изоляции и заземления, контролировать соблюдение работниками предприятия требований правил, норм, инструкций по охране труда в области электробезопасности, организовывать разработку и внедрение более совершенных блокировочных, отключающих, защитных устройств, обеспечивающих безопасность монтажа, ремонта и обслуживания энергетического оборудования и другие.
7.3 Расчет вентиляции
7.3.1 Общие сведения
Вентиляция - организованный и регулируемый воздухообмен, обеспечивающий удаление из помещения воздуха, загрязнённого вредными примесями (газами, парами, пылью), и подачу в него свежего воздуха.
По способу подачи в помещение свежего воздуха и удалению загрязнённого системы вентиляции подразделяют на естественную, механическую и смешанную. По назначению вентиляция может быть общеобменной и местной.
7.3.2 Методика расчёта
При общеобменной вентиляции потребный воздухообмен определяют из условия удаления избыточной теплоты и разбавления вредных выделений свежим воздухом до допустимых концентраций [7,9]. Предельно допустимые концентрации вредных веществ в воздухе рабочей зоны устанавливают по ГОСТ 12.1.005-88 [9].
Расход приточного воздуха, м3/ч, необходимый для отвода избыточной теплоты:
L1 = Qизб /(ср (tуд - tпр )) (1)
где Qизб - избыточное количество теплоты, кДж ч;
с - теплоёмкость воздуха, Дж/ кгЧК; с = 1,2 кДж/ кг*К;
р - плотность воздуха, кг/м3 ;
tпр - температура приточного воздуха, оС,
tуд - температура воздуха, удаляемого из помещения, принимается равной
температуре воздуха в рабочей зоне.
Расчётное значение температуры приточного воздуха зависит от географического расположения предприятия; для Москвы её принимают равной 22,3С0. Температуру воздуха в рабочей зоне принимают на 3…50 выше расчётной температуры наружного воздуха. Плотность воздуха, поступающего в помещение:
(2)
Избыточное количество теплоты, подлежащей удалению из производственного помещения, определяют по тепловому балансу:
Q изб = Q пр - Qрасх (3)
где Qпр - теплота, поступающая в помещение от различных источников, кДж?ч;
Qрасх - теплота, расходуемая стенами здания и уходящая с нагретыми материалами, кДж/ч.
К основным источникам тепловыделений в производственных помещениях относятся:
1. Горячие поверхности оборудования (печи, сушильные камеры, трубопроводы и др.)
2. Оборудование с приводом от электродвигателей;
3. Солнечная радиация
4. Персонал, работающий в помещении;
5. Различные остывающие массы (металл, вода и др.)
Поскольку перепад температур воздуха внутри и снаружи здания в тёплый период года незначительный (3…5 оС), то при расчёте воздухообмена по избытку тепловыделений потери теплоты через конструкции зданий можно не учитывать. При этом некоторое увеличение воздухообмена благоприятно влияет на условия труда работающих в наиболее жаркие дни тёплого периода года.
В настоящем расчётном задании избыточное количество теплоты определяется только с учётом тепловыделений электрооборудования и работающего персонала.
Q пр = Qэ.о.+ Qp (5)
где Qэ.о- теплота, выделяемая при работе электродвигателей оборудования, кДж/ч
Qp - теплота, выделяемая работающим персоналом, кДж/ч.
Теплота, выделяемая работающим персоналом:
Qp = n Kp
где n - число работающих, человек,
Кр - теплота, выделяемая одним человеком, кДж/ч, принимается равной при лёгкой работе 300кДж/ч; при работе средней тяжести 400 кДж/ч; при тяжёлой работе 500 кДж/ч.
Qp = n Kp=10*300=3000 (кДж/ч);
Qэ.о= 3528хN=3528*0.35*5= 6174 (кДж/ч);
К=L\V
(кг/м3);
(м3/ч);
где L- потребный воздухообмен, м3/ч;
Vc - внутренний свободный объём помещения, м3.
Размер помещения 50*10*4
V=50*10*4=2000 (м3);
Кратность воздухообмена помещений обычно составляет для машино- и приборостроительных цехов рекомендуемая кратность воздухообмена составляет 1…3
K=2359,57/2000=1,8
Вывод для вентиляции помещения необходимый воздухообмен 2359,57 (м3/ч), что составляет в пределах нормы.
Заключение
Линия розлива была изучена, установлена информационная система, которая повысила эффективность производственного процесса за счет создания информационной системы предприятия для учета сырья и материалов.
За счет автоматизации было достигнуто:
1. Получение информации в автоматическом режиме с каждого этапа линии о выполненном объеме и дате готовой продукции всех продуктов, для оценки производственного брака.
2. Программа позволяет оператору вводить вручную объем (количество) дату полученных сырья и материалов.
3. Информационная система формирует и выводит на печать отчет о работе цеха по розливу молочной продукции, об остатках сырья и материала.
4. Информационная система выводит на экран аварийную индикацию.
Список использованных источников
1. ГОСТ 19.701-90 Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения.
2. ГОСТ 2.105 - 95. Общие требования к текстовым документам. М.: Издательство стандартов, 1995. 30 с.
3. Советов Б.Я., Яковлев С.А. Моделирование систем (учебник).- М.: Высш.шк., 2001
4. Черемных С.В. и др. Моделирование и анализ систем: IDEF-технологии. Практикум. - М.: 2002.
5. Автоматизация управления предприятием / Баронов В.В. и др. - М.: ИНФРА-М, 2000
6. «Методические указания по выполнению курсовой работы по курсу «Организация, планирование и управление предприятием» для студентов специальностей 2201, 2203, 2204»; Г.Н. Богомолова, Г.А. Лобанова; ИжГТУ, Ижевск, 2000г.
7. «Методические указания по оформлению курсовых работ для специальностей 230102 и 230104» Кучуганов В.Н., Соболева Н.В., Ижевск, 2010 г.
8. Разработка SCADA - системы [Электронный ресурс] // Datasolution.ru [Сайт]. [2013] url: http:// Datasolution/razrabotka-scada-sistemy (дата обращения 15.05.2013)
Приложение А
Руководство по эксплуатации
Данное программное обеспечение предназначено для:
1 Регистрации технологических данных.
2 Оперативного управления параметрами линии розлива.
3 Реализации событийно управляемой сигнализации.
4 Архивирования результатов.
При первом использовании программного обеспечения (далее по тексту ПО) нужно занести в закладку справочники сырье и материалы, используемые в производстве (рисунок А.1).
Рисунок А.1 - Окно справочник
В столбце наименование вносим названия продукта, в столбце единицы измерения приход вносим в тех единицах, в которых получаем в производство. А в столбце расход вносим в тех единицах, в чем мереям готовую продукцию. Например, молоко получили в тонах, а разливаем в бутылки 1450 мл.
В столбце коэффициент перевода вносим поправочный коэффициент, которым переводим из единиц прихода в единицы расхода.
Далее в справочнике этапы производства вносим нажав на кнопку “Этапы производства” все элементы линии (рисунок А.2).
Рисунок А.2 - Этапы производства
После этого в разделе справочник открываем окно “Готовая продукция” и вносим количество используемого материала и сырья, которое необходимо для изготовления одной единицы готовой продукции (в данном примере для изготовления одной бутылки молока) (рисунок А.3).
Рисунок А.3 - Окно готовая продукция
Так создается шаблон, который облегчает дальнейшую работу.
Теперь можно приступить к работе. Во вкладку “Получения сырья и материалов” заносим полученное сырье и материалы (рисунок А.4).
Рисунок А.4 - Получения сырья и материалов
В окне управление, во вкладке производство выбираем продукт, который нужно изготовить, устанавливаем количество нужной продукции и нажимаем кнопку “Запустить” (рисунок А.5).
Линия запускается начинается производится продукция и информация с каждой единицы линии передается на компьютер. А именно:
a) Сколько сделано продукции, можно посмотреть в реальном времени во вкладке производство(рисунок А.6).
b) Режимы: работа, пауза или авария, с пояснением причины паузы или аварии.
Рисунок А.5 - Окно управление
Рисунок А.6 - Окно производство
Рисунок А.7 - Запись в архив
Для того, чтобы сохранить в архив, нажать на кнопку “В архив”, все что было произведено перепишется в архив. Для просмотра архива нажать на кнопку “Архив” (рисунок А.8).
Рисунок А.8 - Окно архив
Во вкладке отчет можно посмотреть остатки сырья и материалов (рисунок А.9).
Рисунок А.9 - Отчет по работе цеха
Рисунок А.10 - остатки сырья и материалов
Также можно вывести на печать работу цеха за определенный период. Или за все время работы (рисунок А.10).
Приложение Б
Текст программы
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, db, mysql50conn, mysql55conn, sqldb, FileUtil, LR_Class,
LR_DBSet, Forms, Controls, Graphics, Dialogs, DBGrids, Menus, ComCtrls,
ExtCtrls, StdCtrls, DbCtrls, Spin, generator;
type
{ TMainForm }
TMainForm = class(TForm)
ArhivQuerydo: TDateTimeField;
ArhivQueryetap_nazv: TStringField;
ArhivQuerykolvo: TStringField;
ArhivQueryprod_nazv: TStringField;
Button1: TButton;
ArhivSource: TDatasource;
ArhivButton: TButton;
OstatkiSource: TDatasource;
DBGrid4: TDBGrid;
OstatkiFrDataSet: TfrDBDataSet;
OstatkiReport: TfrReport;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
Label1: TLabel;
MatSpr1ed_izm1: TStringField;
MatSpr1ed_izm2: TStringField;
MatSpr1ed_izm3: TStringField;
MatSpr1id1: TAutoIncField;
MatSpr1nazvanie1: TStringField;
MatSpr1ratio: TFloatField;
MatSpr1ratio1: TFloatField;
MatSpr2: TSQLQuery;
Memo1: TMemo;
MenuItem6: TMenuItem;
MenuItem7: TMenuItem;
Panel2: TPanel;
Panel3: TPanel;
Panel4: TPanel;
ProductCombo: TDBLookupComboBox;
ProizvQuerydate: TDateTimeField;
ProizvQuerynazvanie: TStringField;
ProizvQuerynazvanie_1: TStringField;
SpinEdit1: TSpinEdit;
OstatkiQuery: TSQLQuery;
TmpQuery: TSQLQuery;
StartButton: TButton;
StatSource: TDatasource;
StatQuery: TSQLQuery;
ProdSprSource: TDatasource;
DBGrid3: TDBGrid;
ProizvSource: TDatasource;
DBGrid2: TDBGrid;
MatSpr1ed_izm: TStringField;
MatSpr1id: TAutoIncField;
MatSpr1nazvanie: TStringField;
MenuItem5: TMenuItem;
PrihodDs: TDatasource;
DBGrid1: TDBGrid;
MainMenu1: TMainMenu;
MenuItem1: TMenuItem;
MenuItem2: TMenuItem;
MenuItem3: TMenuItem;
MenuItem4: TMenuItem;
Connection: TMySQL55Connection;
PageControl1: TPageControl;
Panel1: TPanel;
PrihodQuery: TSQLQuery;
MatSpr1: TSQLQuery;
PrihodQuerydate: TDateTimeField;
PrihodQueryid: TAutoIncField;
PrihodQuerykolvo: TLongintField;
PrihodQuerymaterial_id: TLongintField;
ActionQuery: TSQLQuery;
ProizvQuery: TSQLQuery;
ProdSpr: TSQLQuery;
ArhivQuery: TSQLQuery;
EtapSpr: TSQLQuery;
StringField1: TStringField;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
UpravSheet: TTabSheet;
GenerateTimer: TTimer;
RefreshTimer: TTimer;
Transaction: TSQLTransaction;
procedure Button1Click(Sender: TObject);
procedure ArhivButtonClick(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure GenerateTimerTimer(Sender: TObject);
procedure MenuItem4Click(Sender: TObject);
procedure MenuItem6Click(Sender: TObject);
procedure MenuItem7Click(Sender: TObject);
procedure PrihodQueryBeforePost(DataSet: TDataSet);
procedure RefreshTimerTimer(Sender: TObject);
procedure StartButtonClick(Sender: TObject);
procedure ConnectionAfterConnect(Sender: TObject);
procedure MenuItem1Click(Sender: TObject);
procedure MenuItem3Click(Sender: TObject);
procedure MenuItem5Click(Sender: TObject);
procedure TabSheet1Show(Sender: TObject);
procedure TabSheet2Show(Sender: TObject);
procedure TabSheet3Show(Sender: TObject);
procedure UpravSheetShow(Sender: TObject);
private
{ private declarations }
Generator: TGenerator;
public
{ public declarations }
end;
var
MainForm: TMainForm;
implementation
uses material, product, arhiv, etapy, otchet;
{$R *.lfm}
{ TMainForm }
procedure TMainForm.MenuItem1Click(Sender: TObject);
begin
end;
// Сохраняем приход материалов
procedure TMainForm.Button1Click(Sender: TObject);
begin
PrihodQuery.ApplyUpdates();
Transaction.CommitRetaining();
end;
// Перенос данных производства в архив
procedure TMainForm.ArhivButtonClick(Sender: TObject);
var
mr: TModalResult;
qText: string;
id: integer;
begin
ArhivDlg := TArhivDlg.Create(self);
try
if (arhivDlg.ShowModal = mrOK) then begin
// Запрос количество выпущенной продукции на каждом этапе
qText := 'select count(pz.id) kolvo, pz.product_id, pz.etap_id, min(pz.`date`) ot, max(pz.`date`) do '
+ ' from proizvodstvo pz where pz.arhiv_id is null';
if (ArhivDlg.PeriodRadioButton.Checked) then begin
qText := qText + ' and pz.`date` >= :date1 and pz.`date` <= :date2';
end;
qText:=qText + ' group by 2,3';
TmpQuery.SQL.Text:=qText;
if (ArhivDlg.PeriodRadioButton.Checked) then begin
TmpQuery.Params.ParamByName('date1').AsDateTime:=ArhivDlg.DateEdit1.Date;
TmpQuery.Params.ParamByName('date2').AsDateTime:=ArhivDlg.DateEdit2.Date;
end;
TmpQuery.Open;
while (not TmpQuery.EOF) do begin
// Сохраняем в архив
ActionQuery.SQL.Text:='insert into arhiv (`date`, product_id, etap_id, kolvo) '
+ 'values (:date, :product_id, :etap_id, :kolvo)';
ActionQuery.ParamByName('product_id').AsInteger := TmpQuery.FieldByName('product_id').AsInteger;
ActionQuery.ParamByName('etap_id').AsInteger := TmpQuery.FieldByName('etap_id').AsInteger;
ActionQuery.ParamByName('kolvo').AsInteger := TmpQuery.FieldByName('kolvo').AsInteger;
ActionQuery.ParamByName('date').AsDateTime := Date;
ActionQuery.ExecSQL;
ActionQuery.SQL.Text:='select LAST_INSERT_ID() id';
ActionQuery.Open;
id := ActionQuery.FieldByName('id').AsInteger;
ActionQuery.Close;
// Помечаем в таблице "производство" как архивные
ActionQuery.SQL.Text:='update proizvodstvo set arhiv_id = :id where `date` >= :ot and `date` <= :do '
+ 'and product_id = :product_id and etap_id = :etap_id';
ActionQuery.ParamByName('id').AsInteger := id;
ActionQuery.ParamByName('product_id').AsInteger := TmpQuery.FieldByName('product_id').AsInteger;
ActionQuery.ParamByName('etap_id').AsInteger := TmpQuery.FieldByName('etap_id').AsInteger;
ActionQuery.ParamByName('ot').AsDateTime := TmpQuery.FieldByName('ot').AsDateTime;
ActionQuery.ParamByName('do').AsDateTime := TmpQuery.FieldByName('do').AsDateTime;
ActionQuery.ExecSQL;
TmpQuery.Next;
end;
TmpQuery.Close;
ArhivQuery.Open;
ArhivQuery.Refresh;
StatQuery.Refresh;
end;
finally
ArhivDlg.Free;
end;
end;
procedure TMainForm.Button2Click(Sender: TObject);
begin
ArhivQuery.ApplyUpdates;
end;
procedure TMainForm.FormShow(Sender: TObject);
begin
// Открываем таблицы при открытии формы
ProdSpr.Open;
MatSpr1.Open;
MatSpr2.Open;
EtapSpr.Open;
end;
// Генерация данных производства
procedure TMainForm.GenerateTimerTimer(Sender: TObject);
begin
if (generator <> nil) then begin
generator.Generate(1);
if (Generator.gotovo() >= SpinEdit1.Value) then begin
StartButtonClick(nil);
end;
if (Generator.minusMatId >0 ) then begin
MatSpr1.Locate('id', Generator.minusMatId, []);
Memo1.Lines.Add('Закончился материал: ' + MatSpr1.FieldByName('nazvanie').AsString);
StartButtonClick(nil);
end;
end;
end;
// Отчет "Работа цеха за период"
procedure TMainForm.MenuItem4Click(Sender: TObject);
begin
OtchetForm := TOtchetForm.Create(self);
try
OtchetForm.ShowModal();
finally
OtchetForm.Free();
end;
end;
// Открытие справочника Этапы производства
procedure TMainForm.MenuItem6Click(Sender: TObject);
begin
EtapyForm := TEtapyForm.Create(self);
try
EtapyForm.ShowModal();
finally
EtapyForm.Free();
end;
end;
// Отчет "Остатки материалов"
procedure TMainForm.MenuItem7Click(Sender: TObject);
begin
OstatkiQuery.Close;
OstatkiReport.ShowReport;
end;
procedure TMainForm.PrihodQueryBeforePost(DataSet: TDataSet);
begin
// Сегодняшняя дата по умолчанию
if (DataSet.FieldByName('date').IsNull) then begin
DataSet.FieldByName('date').AsDateTime:=date;
end;
end;
procedure TMainForm.RefreshTimerTimer(Sender: TObject);
begin
// Обновление данных статисики производства на экране
if ((Generator <> nil) and (PageControl1.ActivePage = UpravSheet)) then begin
StatQuery.Active:=true;
StatQuery.Refresh;
end;
end;
// Запуск/остановка генератора данных производства
procedure TMainForm.StartButtonClick(Sender: TObject);
var
productId: integer;
begin
if (generator = nil) then begin
ProductCombo.Refresh;
if (ProductCombo.KeyValue = NULL) then begin
Beep;
ActiveControl := ProductCombo;
end else begin
// Запуск
ArhivButton.Enabled:=false;
productId := ProductCombo.KeyValue;
generator := TGenerator.create(productId, ActionQuery, OstatkiQuery);
GenerateTimer.Enabled:=true;
StartButton.Caption:='Остановить';
end;
end else begin
// Остановка
GenerateTimer.Enabled:=false;
RefreshTimerTimer(nil);
Memo1.Lines.Add('Продукт: ' + ProductCombo.Text + '. Произведено, шт: ' + IntToStr(Generator.gotovo()) );
FreeAndNil(generator);
StartButton.Caption:='Запустить';
ArhivButton.Enabled:=true;
end;
end;
procedure TMainForm.ConnectionAfterConnect(Sender: TObject);
begin
// Настройки соединения на UTF
ActionQuery.SQL.Text:='SET CHARACTER SET `utf8`';
ActionQuery.ExecSQL;
ActionQuery.SQL.Text:='SET NAMES `utf8`';
ActionQuery.ExecSQL;
end;
procedure TMainForm.MenuItem3Click(Sender: TObject);
begin
// Справочник Материалы
MatForm := TMatForm.Create(self);
try
MatForm.ShowModal();
finally
MatForm.Free();
end;
end;
procedure TMainForm.MenuItem5Click(Sender: TObject);
begin
// Справочник продукции
ProdForm := TProdForm.Create(self);
try
ProdForm.ShowModal();
finally
ProdForm.Free();
end;
end;
procedure TMainForm.TabSheet1Show(Sender: TObject);
begin
// Открытие не открытых таблиц при переключении вкладок
if (not ProizvQuery.Active) then begin
ProizvQuery.Active:=true;
end;
end;
procedure TMainForm.TabSheet2Show(Sender: TObject);
begin
// Открытие не открытых таблиц при переключении вкладок
ArhivQuery.Active:=true;
end;
procedure TMainForm.TabSheet3Show(Sender: TObject);
begin
// Открытие не открытых таблиц при переключении вкладок
if (PrihodQuery.Active = false) then begin
MatSpr1.open();
PrihodQuery.Open();
end;
end;
procedure TMainForm.UpravSheetShow(Sender: TObject);
begin
// Открытие не открытых таблиц при переключении вкладок
ProdSpr.Active:=true;
EtapSpr.Active:=true;
end;
end.
unit etapy;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, db, sqldb, FileUtil, Forms, Controls, Graphics, Dialogs,
ExtCtrls, StdCtrls, DBGrids;
type
{ TEtapyForm }
TEtapyForm = class(TForm)
Button1: TButton;
Datasource1: TDatasource;
DBGrid1: TDBGrid;
Panel1: TPanel;
Query: TSQLQuery;
Queryid: TLongintField;
Querynazvanie: TStringField;
procedure Button1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
EtapyForm: TEtapyForm;
implementation
{$R *.lfm}
{ TEtapyForm }
procedure TEtapyForm.Button1Click(Sender: TObject);
begin
// Сохранение
Query.ApplyUpdates;
end;
procedure TEtapyForm.FormShow(Sender: TObject);
begin
// Открытие окна
Query.Open;
unit otchet;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, sqldb, db, FileUtil, LR_Class, LR_DBSet, Forms, Controls,
Graphics, Dialogs, EditBtn, StdCtrls, LR_DSet;
type
{ TOtchetForm }
TOtchetForm = class(TForm)
Button1: TButton;
Button2: TButton;
Datasource2: TDatasource;
EtapSource: TDatasource;
Datasource1: TDatasource;
DateEdit1: TDateEdit;
DateEdit2: TDateEdit;
frDBDataSet1: TfrDBDataSet;
frDBDataSet2: TfrDBDataSet;
frEtapDataSet: TfrDBDataSet;
frReport1: TfrReport;
OtchetQuery1: TSQLQuery;
OtchetQuery2: TSQLQuery;
EtapQuery: TSQLQuery;
procedure Button1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure frDBDataSet1CheckEOF(Sender: TObject; var Eof: Boolean);
private
{ private declarations }
public
{ public declarations }
end;
var
OtchetForm: TOtchetForm;
implementation
{$R *.lfm}
{ TOtchetForm }
procedure TOtchetForm.frDBDataSet1CheckEOF(Sender: TObject; var Eof: Boolean);
begin
end;
procedure TOtchetForm.Button1Click(Sender: TObject);
begin
// Вывод отчета
OtchetQuery1.Close;
OtchetQuery1.ParamByName('date1').AsDate:=DateEdit1.Date;
OtchetQuery1.ParamByName('date2').AsDate:=DateEdit2.Date;
frReport1.PrepareReport;
frReport1.ShowReport;
end;
procedure TOtchetForm.FormShow(Sender: TObject);
begin
DateEdit1.Date:=date;
DateEdit2.Date:=date;
end;
end.
unit arhiv;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
EditBtn;
type
{ TArhivDlg }
TArhivDlg = class(TForm)
Button1: TButton;
Button2: TButton;
DateEdit1: TDateEdit;
DateEdit2: TDateEdit;
Label1: TLabel;
Label2: TLabel;
AllRadioButton: TRadioButton;
PeriodRadioButton: TRadioButton;
procedure AllRadioButtonChange(Sender: TObject);
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
procedure PeriodRadioButtonChange(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
ArhivDlg: TArhivDlg;
implementation
{$R *.lfm}
{ TArhivDlg }
procedure TArhivDlg.AllRadioButtonChange(Sender: TObject);
begin
DateEdit1.Enabled:=false;
DateEdit2.Enabled:=false;
end;
procedure TArhivDlg.FormClose(Sender: TObject; var CloseAction: TCloseAction);
var
error: boolean;
begin
if (ModalResult = mrOk) then begin
error:= false;
// Проверка корректности ввода при нажатии ОК
if (PeriodRadioButton.Checked) and (DateEdit1.Date = 0) then begin
ActiveControl:= DateEdit1;
error:= true;
end else begin
if (PeriodRadioButton.Checked) and (DateEdit2.Date = 0) then begin
ActiveControl:= DateEdit2;
error:= true;
end;
end;
if (error) then begin
beep;
CloseAction:=caNone;
end;
end;
end;
procedure TArhivDlg.PeriodRadioButtonChange(Sender: TObject);
begin
DateEdit1.Enabled:=true;
DateEdit2.Enabled:=true;
end;
end.
unit product;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, sqldb, db, FileUtil, Forms, Controls, Graphics, Dialogs,
DBGrids, ExtCtrls, StdCtrls;
type
{ TProdForm }
TProdForm = class(TForm)
Button1: TButton;
Button2: TButton;
EtapQueryetap_id: TLongintField;
EtapQuerykolvo1: TLongintField;
EtapQuerykolvo2: TLongintField;
EtapQuerymaterial1_id: TLongintField;
EtapQuerymaterial2_id: TLongintField;
EtapQuerynazvanie: TStringField;
EtapQueryproduct_id: TLongintField;
EtapSource: TDatasource;
ProdQueryid: TAutoIncField;
ProdQuerynazvanie: TStringField;
ProdSource: TDatasource;
DBGrid1: TDBGrid;
DBGrid2: TDBGrid;
Panel1: TPanel;
ProdQuery: TSQLQuery;
EtapQuery: TSQLQuery;
Splitter1: TSplitter;
StringField1: TStringField;
StringField2: TStringField;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure DBGrid2Enter(Sender: TObject);
procedure EtapQueryBeforePost(DataSet: TDataSet);
procedure FormShow(Sender: TObject);
procedure ProdQueryAfterPost(DataSet: TDataSet);
procedure ProdQueryAfterScroll(DataSet: TDataSet);
private
{ private declarations }
public
{ public declarations }
end;
var
ProdForm: TProdForm;
implementation
uses Unit1;
{$R *.lfm}
{ TProdForm }
procedure TProdForm.EtapQueryBeforePost(DataSet: TDataSet);
begin
// Внешний ключ код продукции
if (DataSet.FieldByName('product_id').IsNull) then begin
DataSet.FieldByName('product_id').AsInteger:= ProdQuery.FieldByName('id').AsInteger;
end;
end;
procedure TProdForm.FormShow(Sender: TObject);
begin
// Открытие формы
if (not EtapQuery.Active) then begin
EtapQuery.Active := true;
end;
if (not ProdQuery.Active) then begin
ProdQuery.Active := true;
end;
MainForm.MatSpr1.Open;
MainForm.MatSpr2.Open;
end;
procedure TProdForm.ProdQueryAfterPost(DataSet: TDataSet);
begin
end;
procedure TProdForm.ProdQueryAfterScroll(DataSet: TDataSet);
begin
Button2.Enabled := not ProdQuery.FieldByName('id').IsNull;
end;
procedure TProdForm.Button1Click(Sender: TObject);
begin
EtapQuery.ApplyUpdates;
ProdQuery.ApplyUpdates;
end;
procedure TProdForm.Button2Click(Sender: TObject);
begin
// Добавление строк в таблицу Этапы производства продукта в соответсвии со справочником этапов
if (EtapQuery.RecordCount = 0) then begin
MainForm.EtapSpr.First;
MainForm.ActionQuery.SQL.Text := 'insert into product_etap (product_id, etap_id) values (:product_id, :etap_id)';
while (not MainForm.EtapSpr.EOF) do begin
MainForm.ActionQuery.ParamByName('product_id').AsInteger := ProdQuery.FieldByName('id').AsInteger;
MainForm.ActionQuery.ParamByName('etap_id').AsInteger := MainForm.EtapSpr.FieldByName('id').AsInteger;
MainForm.ActionQuery.ExecSQL;;
MainForm.EtapSpr.Next;
end;
EtapQuery.Refresh;
end;
end;
procedure TProdForm.DBGrid2Enter(Sender: TObject);
begin
end;
end.
unit material;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, db, sqldb, FileUtil, Forms, Controls, Graphics, Dialogs,
DBGrids, ExtCtrls, StdCtrls;
type
{ TMatForm }
TMatForm = class(TForm)
Button1: TButton;
Datasource1: TDatasource;
DBGrid1: TDBGrid;
Panel1: TPanel;
Query: TSQLQuery;
Queryed_izm1: TStringField;
Queryed_izm2: TStringField;
Queryid: TAutoIncField;
Querynazvanie: TStringField;
Queryratio: TFloatField;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
procedure FormShow(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
MatForm: TMatForm;
implementation
{$R *.lfm}
{ TMatForm }
procedure TMatForm.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
end;
procedure TMatForm.FormShow(Sender: TObject);
begin
// Открытие формы
Query.Open;
end;
procedure TMatForm.Button1Click(Sender: TObject);
begin
// Сохранение
Query.ApplyUpdates;
end.
Размещено на Allbest.ru
Подобные документы
Обзор особенностей взаимодействия между оператором и технологическим процессом с помощью программного обеспечения SCADA. Анализ требований к системе сбора данных и оперативного диспетчерского управления. Выбор параметров УСО из серии модулей ADAM-4000.
практическая работа [537,6 K], добавлен 08.02.2013Общие понятия о системах сбора данных и оперативного диспетчерского управления (SCADA), история их возникновения и развития. Устройства связи для сбора технологических параметров, создание человеко-машинного интерфейса. Аппаратные средства SCADA-систем.
контрольная работа [2,4 M], добавлен 28.03.2013Характеристика современных зарубежных и отечественных SCADA-систем. Описания программного комплекса для визуализации и диспетчеризации технологических процессов. Обработка, отображение и архивирование информации об объекте мониторинга или управления.
реферат [600,8 K], добавлен 26.10.2014Системный анализ предметной области проектируемой базы данных. Экономическая сущность комплекса экономических информационных задач. Проектные решения по программному обеспечению комплекса задач. Структура базы данных и технологическое обеспечение.
курсовая работа [303,7 K], добавлен 27.02.2009Разработка программного продукта для спирографического обследования. Структура базы данных программы "СпирографОтдел". Выбор программного продукта и руководство пользователя. Минимальные рекомендуемые требования к техническому и программному обеспечению.
дипломная работа [1,0 M], добавлен 13.04.2014Организационная структура управления предприятием и её характеристика, функциональные возможности на примере фирмы ООО "1С Бит". Комплекс задач, обоснование необходимости автоматизации. Проектные решения по информационному и программному обеспечению.
отчет по практике [329,9 K], добавлен 15.11.2012Основные концепции автоматизированной системы управления технологическим процессом. Компоненты систем контроля и управления, их назначение. Программно-аппаратные платформы для SCADA-систем, их эксплуатационные характеристики. Графические средства InTouch.
реферат [499,3 K], добавлен 15.03.2014Экономическая характеристика организации, структура и анализ современной деятельности. Оценка рынка информационных систем и выбор лучшей. Обоснование проектного решения по информационному и программному обеспечению. Технологическое обеспечение проекта.
дипломная работа [4,7 M], добавлен 21.05.2013Классификация информационных систем по степени автоматизации, сфере функционирования объекта управления, уровню в системе государственного управления, видам решаемых финансово-экономических задач. Информационная система автоматизированного офиса.
презентация [280,1 K], добавлен 18.03.2014Понятие системы управления, ее виды и основные элементы. Критерии оценки состояния объекта управления. Классификация структур управления. Особенности замкнутых и разомкнутых систем автоматического управления. Математическая модель объекта управления.
контрольная работа [1,0 M], добавлен 23.10.2015