4.1.3 Расчет цены программного обеспечения
Минимальная цена разработки программного обеспечения (Zmin) складывается из полных затрат на разработку Кп и минимально необходимой суммы прибыли Пmin и рассчитывается по формуле:
Zmin=Кп+Пmin . (4.9)
Сумма прибыли Пmin рассчитывается исходя из планируемого минимального уровня, рентабельности затрат организации-разработчика:
Пmin=Кп∙Rmin/100 (4.10)
где
Rmin – минимальный уровень рентабельности, % (20-30%);
Пmin= 245728,91∙0,25;
Пmin= 61432,23 руб.
Подставив полученные значения из формулы 4.10 в формулу 4.9 можно рассчитать минимальную цену разработки программного модуля:
Zmin= 245728,91+ 61432,23;
Zmin= 307161,14 руб.
После выполнения расчетов, можно подвести итоги по подсчету себестоимости программы:
- Время, затраченное на разработку и отладку программного модуля на персональном компьютере составляет 3 месяца;
- Затраты на разработку программного модуля составляет 245728,91 рублей;
- Фонд заработной платы составляет 89586 рублей;
- Затраты на зарплату обслуживающего персонала составляют 162993,6 рубля;
- Затраты на электроэнергию составляют 723,17 рубля;
- Затраты на текущие ремонты составляют 3648 рублей;
- Накладные расходы составляют 71668,8 рублей;
- Стоимость машино-часа работы персонального компьютера составляют 174,94 рубля/час.
Исходя из вышеперечисленных затрат, можно сказать что стоимость программного модуля, которая составляет 307161,14 рубль, является достаточно реальной суммой, за которую можно продать данный программный продукт.
4.2 Методология расчета общей стоимости владения программным продуктомРасчет стоимости владения программным модулем включает определение затрат на каждой стадии жизненного цикла информационного продукта их классификацию и обоснование [12]. Формулы для расчета стоимости владения программным модулем приведены ниже.
Стоимость теоретического проекта рассчитывается:
С т.пр = Zmin + С под ,
где Спод – стоимость поддержки, которая складывается из расходов на услуги консультантов. Принимается время работы консультантов поддержки равным 50% от времени работы при создании [19]. Тогда время работы консультанта равно 1,5 мес. При размере оплаты услуг консультанта 10000 руб/мес, стоимость поддержки составит 15000 руб.
С т.пр = 307161,14+15000;
С т.пр = 322161,14 руб.
Стоимость технологического проекта рассчитывается:
С тех.пр = Р ап + С под ,
где Рап – расходы на аппаратное обеспечение. Спод – стоимость поддержки, которая складывается из расходов на услуги программистов. Принимается время работы программистов равным 50% от времени работы при создании. Тогда время работы программиста равно 1,5 мес. При размере оплаты услуг программиста 10500 руб/мес, стоимость поддержки составит 15750 руб.
С тех.проекта = 60800 + 15750;
С тех.проекта = 76550 руб.
Общая стоимость владения информационным продуктом рассчитывается:
ОСВ = С т.пр + С тех.пр,
ОСВ = 322161,14 + 76550;
ОСВ = 398711,14 руб.
4.3 Экономический эффектРазработанный программный продукт, программный модуль станка с ЧПУ, необходим для автоматизации процесса создания управляющей программы для станка Walter CIP6, оснащенного системой ЧПУ Sinumeric 840D. При расчёте экономического эффекта от применения программного продукта, общая стоимость разработанного программного модуля станка с ЧПУ оказалась ниже стоимости аналогичного модуля, предлагаемого фирмой-изготовителем станка [18].
, (4.11)
где ОВСр – общая стоимость владения разработываемого программмного продукта, руб.; ОВСп – общая стоимость владения покупного программного продукта, руб.
ОВСп = 638540 руб.;
Э – экономический эффект, руб.
Э = 638540 - 398711,14;
Э = 239828,86 руб.
Разработанный программный продукт, программный модуль станка с ЧПУ, на 239828,86 рублей дешевле аналогичного программного модуля разработанного фирмой фирмой-изготовителем станка.
Безопасность жизнедеятельности (БЖД) – это комплекс мероприятий, направленных на обеспечение безопасности человека в среде обитания, сохранение его здоровья, разработку методов и средств защиты путем снижения влияния вредных и опасных факторов до допустимых значений, выработку мер по ограничению ущерба в ликвидации последствий чрезвычайных ситуаций мирного и военного времени [20].
Охрана здоровья трудящихся, обеспечение безопасности условий труда, ликвидация профессиональных заболеваний и производственного травматизма составляет одну из главных забот человеческого общества. Обращается внимание на необходимость широкого применения прогрессивных форм научной организации труда, сведения к минимуму ручного, малоквалифицированного труда, создания обстановки, исключающей профессиональные заболевания и производственный травматизм.
Помещения для эксплуатации персональных компьютеров должны иметь естественное и искусственное освещение. Эксплуатация персональных компьютеров в помещениях без естественного освещения допускается только при соответствующем обосновании и наличии положительного санитарно-эпидемиологического заключения, выданного в установленном порядке.
Естественное и искусственное освещение должно соответствовать требованиям действующей нормативной документации. Окна в помещениях, где эксплуатируется вычислительная техника, преимущественно должны быть ориентированы на север и северо-восток.
Оконные проемы должны быть оборудованы регулируемыми устройствами типа: жалюзи, занавесей, внешних козырьков и так далее.
Площадь на одно рабочее место комплектовщика компьютера на базе электронно-лучевой трубки (ЭЛТ) должна составлять не менее 6 м2, на базе плоских дискретных экранов (жидкокристаллические, плазменные) – 4,5 м2.
Для внутренней отделки интерьера помещений, где расположены компьютеры, должны использоваться диффузно отражающие материалы с коэффициентом отражения для потолка 0,7-0,8; для стен 0,5-0,6; для пола 0,3-0,5. Полимерные материалы используются для внутренней отделки интерьера помещений с персональными компьютерами при наличии санитарно-эпидемиологического заключения.
Помещения, где размещаются рабочие места с персональными компьютерами, должны быть оборудованы защитным заземлением (занулением) в соответствии с техническими требованиями по эксплуатации.
Не следует размещать рабочие места с персональными компьютерами вблизи силовых кабелей и вводов, высоковольтных трансформаторов, технологического оборудования, создающего помехи в работе персональных компьютеров.
В производственных помещениях, в которых работа с использованием персональных компьютеров является вспомогательной, температура, относительная влажность и скорость движения воздуха на рабочих местах должны соответствовать действующим санитарным нормам микроклимата производственных помещений.
В производственных помещениях, в которых работа с использованием персональных компьютеров является основной (диспетчерские, операторские, расчетные, кабины и посты управления, залы вычислительной техники и др.) и связана с нервно-эмоциональным напряжением, должны обеспечиваться оптимальные параметры микроклимата для категории работ 1а и 1б в соответствии с действующими санитарно-эпидемиологическими нормативами микроклимата производственных помещений. На других рабочих местах следует поддерживать параметры микроклимата на допустимом уровне, соответствующем требованиям указанных выше нормативов.
В помещениях должна проводиться ежедневная влажная уборка и систематическое проветривание после каждого часа работы на компьютере.
Уровни положительных и отрицательных аэроионов в воздухе помещений, где расположены персональные компьютеры, должны соответствовать действующим санитарно-эпидемиологическим нормативам.
Содержание вредных химических веществ в воздухе производственных помещений, в которых работа с использованием персональных компьютеров является вспомогательной, не должно превышать предельно допустимых концентраций вредных веществ в воздухе рабочей зоны в соответствии с действующими гигиеническими нормативами.
Содержание вредных химических веществ в производственных помещениях, в которых работа с использованием персональных компьютеров является основной (диспетчерские, операторские, расчетные, кабины и посты управления, залы вычислительной техники и др.), не должно превышать предельно допустимых концентраций загрязняющих веществ в атмосферном воздухе населенных мест в соответствии с действующими гигиеническими нормативами.
В производственных помещениях при выполнении основных или вспомогательных работ с использованием персональных компьютеров уровни шума на рабочих местах не должны превышать предельно допустимых значений, установленных для данных видов работ в соответствии с действующими санитарно-эпидемиологическими нормативами.
При выполнении работ с использованием персональных компьютеров в производственных помещениях уровень вибрации не должен превышать допустимых значений вибрации для рабочих мест (категория 3, тип "в") в соответствии с действующими санитарно-эпидемиологическими нормативами.
Шумящее оборудование (печатающие устройства, серверы и т.п.), уровни шума которого превышают нормативные, должно размещаться вне помещений с персональными компьютерами.
Рабочие столы следует размещать таким образом, чтобы видеодисплейные терминалы были ориентированы боковой стороной к световым проемам, чтобы естественный свет падал преимущественно слева.
Искусственное освещение в помещениях для эксплуатации персональных компьютеров должно осуществляться системой общего равномерного освещения. В производственных и административно-общественных помещениях, в случаях преимущественной работы с документами, следует применять системы комбинированного освещения (к общему освещению дополнительно устанавливаются светильники местного освещения, предназначенные для освещения зоны расположения документов).
Освещенность на поверхности стола в зоне размещения рабочего документа должна быть 300 - 500 лк. Освещение не должно создавать бликов на поверхности экрана. Освещенность поверхности экрана не должна быть более 300 лк. Следует ограничивать прямую блесткость от источников освещения, при этом яркость светящихся поверхностей (окна, светильники и другие), находящихся в поле зрения, должна быть не более 200 кд/м2.
Следует ограничивать отраженную блесткость на рабочих поверхностях (экран, стол, клавиатура и другие) за счет правильного выбора типов светильников и расположения рабочих мест по отношению к источникам естественного и искусственного освещения, при этом яркость бликов на экране персонального компьютера не должна превышать 40 кд/м2 и яркость потолка не должна превышать 200 кд/м2.
Показатель ослепленности для источников общего искусственного освещения в производственных помещениях должен быть не более 20. Показатель дискомфорта в административно-общественных помещениях не более 40.
Яркость светильников общего освещения в зоне углов излучения от 50 до 90 градусов с вертикалью в продольной и поперечной плоскостях должна составлять не более 200 кд/м2, защитный угол светильников должен быть не менее 40 градусов. Светильники местного освещения должны иметь не просвечивающий отражатель с защитным углом не менее 40 градусов.
Следует ограничивать неравномерность распределения яркости в поле зрения пользователя персонального компьютера, при этом соотношение яркости между рабочими поверхностями не должно превышать 3:1 - 5:1, а между рабочими поверхностями и поверхностями стен и оборудования 10:1.
Для обеспечения нормируемых значений освещенности в помещениях для использования персональных компьютеров следует проводить чистку стекол оконных рам и светильников не реже двух раз в год и проводить своевременную замену перегоревших ламп.
Режим пожарной безопасности помещений регламентируется двумя основополагающими документами: ФЗ № 69 "О пожарной безопасности" и "Правилами пожарной безопасности на ОАО "АВТОВАЗ".
Правила пожарной безопасности устанавливают основные нормы и требования к помещениям, размещению в них оборудования. Оснащение помещений средствами первичного пожаротушения, планы и схемы эвакуации при пожаре, порядок вызова пожарной службы при возникновении ЧС. В каждом помещении должно быть лицо ответственное за пожарную безопасность, назначенное приказом руководителя предприятия или лицом ответственным за пожарную безопасность предприятия в целом. Все работники должны периодически, не реже 1 раза в полугодие, проходить инструктаж по пожарной безопасности, участвовать в тренировках по эвакуации из здания при пожаре, тушению предполагаемых возгораний.
Требования Правил пожарной безопасности к эксплуатации вычислительной техники содержат лишь общие положения, в которых обозначены необходимые для соблюдения документы. Одним из таких документов являются Правила устройства электроустановок (ПУЭ). В них оговорены требования к монтажу электропроводки, освещения, порядку включения, выключения и аварийного обесточивания электросетей.
В случае загорания ПК или отдельных устройств, следует немедленно отключить электропитание, сообщить в службу пожарной охраны по телефону "11-01". Оценить ситуацию и, в случае небольшого очага возгорания, попытаться начать тушение загорания, используя средства первичного пожаротушения. Для тушения можно применять огнетушители с углекислотным или порошковым зарядом. Они предназначены для тушения электроустановок с напряжением до 1000 В. При обнаружении неисправностей, перегрева оборудования, появления запаха гари следует выключить ПК и другие включенные устройства, вынуть вилки электропитания из розеток и сообщить об этом обслуживающему персоналу, то есть лицу ответственному за пожарную безопасность помещений или ответственному за электрохозяйство.
Для предотвращения возгорания необходимо соблюдать основные меры предосторожности:
- не эксплуатировать поврежденные розетки или розетки, выполненные с нарушением норм пожарной безопасности;
- не допускать работу средств вычислительной техники с неисправными шнурами питания;
- соблюдать порядок уборки и хранения горючих материалов;
- не класть на устройства вычислительной техники посторонние предметы, бумагу, документацию;
- в помещениях не пользоваться открытым огнем и электронагревательными приборами с открытыми элементами нагрева или без терморегуляторов;
- запрещается работа на неисправном оборудовании (возникновение короткого замыкания и, как следствие, характерные искры и шум, запах плавящейся изоляции проводов);
- по окончании работы, перед закрытием помещений, следует обесточить все электропотребители.
-
5.2 Требования к рабочему месту инженера–программистаПри работе с компьютером человек подвергается воздействию ряда опасных и вредных производственных факторов:
- электромагнитных полей (диапазон высоких частот, сверх высоких частот и ультра высоких частот);
- инфракрасного и ионизирующего излучений;
- повышенный уровень шума и вибрации;
- повышенная температура внешней среды;
- отсутствие или недостаточная освещенность рабочей зоны;
- электрического тока и статического электричества;
- умственное перенапряжение;
- перенапряжение зрительных и слуховых анализаторов;
- монотонность труда;
- эмоциональные перегрузки;
- большие нагрузки на мышцы рук при работе с клавиатурой ЭВМ;
- большие нагрузки на мышцы шеи, спины и ног.
В соответствии с СанПиН 2.2.2/2.4.1340-03 рабочее место инженера-программиста должно обеспечивать возможность поворота корпуса в горизонтальной и вертикальной плоскости с фиксацией в заданном положении для обеспечения фронтального наблюдения экрана. Корпус ПК, клавиатура и другие блоки и устройства должны иметь матовую поверхность с коэффициентом отражения 0,4-0,6 и не иметь блестящих деталей, способных создавать блики. Также должно предусматриваться регулирование яркости и контрастности.
Концентрации вредных веществ, выделяемых персональными компьютерами в воздух помещений, не должны превышать предельно допустимых концентраций (ПДК), установленных для атмосферного воздуха.
Рабочие места с персональными компьютерами в помещениях с источниками вредных производственных факторов должны размещаться в изолированных кабинах с организованным воздухообменом.
Конструкция персонального компьютера должна обеспечивать возможность поворота корпуса в горизонтальной и вертикальной плоскости с фиксацией в заданном положении для обеспечения фронтального наблюдения экрана монитора. Дизайн персонального компьютера должен предусматривать окраску корпуса в спокойные мягкие тона с диффузным рассеиванием света. Корпус персонального компьютера, клавиатура и другие его блоки и устройства должны иметь матовую поверхность с коэффициентом отражения 0,4 - 0,6 и не иметь блестящих деталей, способных создавать блики.
Рабочие места с персональными компьютерами при выполнении творческой работы, требующей значительного умственного напряжения или высокой концентрации внимания, рекомендуется изолировать друг от друга перегородками высотой 1,5 - 2,0 м.
Большое значение имеет рациональная конструкция и расположение элементов рабочего места, что важно для поддержания оптимальной рабочей позы человека-оператора. При размещении рабочих мест с персональным компьютером расстояние между рабочими столами с видеомониторами (в направлении тыла поверхности одного видеомонитора и экрана другого видеомонитора), должно быть не менее 2,0 м, а расстояние между боковыми поверхностями видеомониторов – не менее 1,2 м.
Экран видеомонитора должен находиться от глаз пользователя на расстоянии 600-700 мм, но не ближе 500 мм с учетом размеров алфавитно-цифровых знаков и символов.
В процессе работы с компьютером необходимо соблюдать правильный режим труда и отдыха. В противном случае отмечаются значительное напряжение зрительного аппарата с появлением жалоб на неудовлетворенность работой, головные боли, раздражительность, нарушение сна, усталость и болезненные ощущения в глазах, в пояснице, в области шеи и руках.
Конструкция рабочего стола должна обеспечивать оптимальное размещение на рабочей поверхности используемого оборудования с учетом его количества и конструктивных особенностей, характера выполняемой работы. При этом допускается использование рабочих столов различных конструкций, отвечающих современным требованиям эргономики. Поверхность рабочего стола должна иметь коэффициент отражения 0,5-0,7.
Высота рабочей поверхности стола для взрослых пользователей должна регулироваться в пределах 680 - 800 мм, при отсутствии такой возможности высота рабочей поверхности стола должна составлять 725 мм.
Модульными размерами рабочей поверхности стола для ПЭВМ, на основании которых должны рассчитываться конструктивные размеры, следует считать: ширину 800, 1000, 1200 и 1400 мм, глубину 800 и 1000 мм при нерегулируемой его высоте, равной 725 мм.
Рабочий стол должен иметь пространство для ног высотой не менее 600 мм, шириной - не менее 500 мм, глубиной на уровне колен – не менее 450 мм и на уровне вытянутых ног - не менее 650 мм.
Конструкция рабочего стула (кресла) должна обеспечивать поддержание рациональной рабочей позы при работе на персональном компьютере, позволять изменять позу с целью снижения статического напряжения мышц шейно-плечевой области и спины для предупреждения развития утомления.
Рабочий стул (кресло) должен быть подъемно-поворотным, регулируемым по высоте и углам наклона сиденья и спинки, а также расстоянию спинки от переднего края сиденья, при этом регулировка каждого параметра должна быть независимой, легко осуществляемой и иметь надежную фиксацию.
Поверхность сиденья, спинки и других элементов стула (кресла) должна быть полумягкой, с нескользящим, слабо электризующимся и воздухопроницаемым покрытием, обеспечивающим легкую очистку от загрязнений.
Рабочее место пользователя персонального компьютера следует оборудовать подставкой для ног, имеющей ширину не менее 300 мм, глубину не менее 400 мм, регулировку по высоте в пределах до 150 мм и по углу наклона опорной поверхности подставки до 20°. Поверхность подставки должна быть рифленой и иметь по переднему краю бортик высотой 10 мм.
Клавиатуру следует располагать на поверхности стола на расстоянии 100 - 300 мм от края, обращенного к пользователю или на специальной, регулируемой по высоте рабочей поверхности, отделенной от основной столешницы.
Мощность экспозиционной дозы мягкого рентгеновского излучения в любой точке на расстоянии 0,05 м от экрана при любых положениях регулировочных устройств не должна превышать 1 мкЗв/час (100 мкР/час).
5.3 Расчет естественного освещения рабочего местаРасчет и нормирование естественного освещения производят по коэффициенту естественной освещенности "e" (КЕО) в % по формуле 5.1:
, (5.1)
где
Ев – освещенность внутри помещения, лк;
Ен – одновременная освещенность наружной и горизонтальной плоскости рассеянным светом небосвода, лк.
На предприятиях наибольшее распространение получило естественное боковое освещение. При таком освещении основой расчета является требуемая площадь светового проема, определяемая по формуле 5.2:
(5.2)
где
So - площадь окон, м2;
Sп - площадь пола помещения, м2;
e н - нормированное значение КЕО, %;
ho - световая характеристика окна (6.5-29);
Кз - коэффициент запаса;
Кзо - коэффициент, учитывающий затемнение окон противостоящими зданиями (1,0-1,7);
to - общий коэффициент светопропускания, определяемый из СанПиН 2.2.2/2.4.1340-03;
r1 - коэффициент, учитывающий повышение КЕО за счет отражения света от поверхности помещения (1,05-1,7).
Коэффициент "Кз" определяется равным 1,5. Учитываем, что длина пола помещения "l", равняется 12 м, а ширина "b" 8,4 м. Находим площадь пола по формуле 5.3:
, (5.3)
.
Нормированное значение КЕО определяется равным 1,2 %.
Значения остальных коэффициентов принимаются равными:
ho = 29;
r1 = 1,2;
Кзо = 1;
to = 0,3.
При расчете получено следующее значение требуемой площади светового проема по формуле 5.2:
.
Следовательно оконный проем должен быть не менее 15 м2.
5.4 Расчет искусственного освещенияИскусственное освещение применяют в темное и переходное время суток, а также при недостаточном или отсутствии естественного освещения. В помещении применяется общее равномерное искусственное освещение, расчет которого производится по методу светового потока. При расчете этим методом учитывается как прямой свет от светильника, так и свет, отраженный от потолка и стен.
Освещенность на поверхности стола в зоне размещения рабочего документа должна быть 300 – 500 лк. Освещение не должно создавать бликов на поверхности экрана. Освещенность поверхности экрана не должна быть более 300 лк. Яркость бликов на экране персонального компьютера не должна превышать 40 кд/м2 и яркость потолка не должна превышать 200 кд/м2.
В качестве источников света при искусственном освещении следует применять преимущественно люминесцентные лампы типа ЛБ и компактные люминесцентные лампы (КЛЛ).
Для освещения помещений с персональными компьютерами следует применять светильники с зеркальными параболическими решетками, укомплектованными электронными пуско-регулирующими аппаратами (ЭПРА) [21]. Допускается использование многоламповых светильников с электромагнитными пуско-регулирующими аппаратами (ЭПРА), состоящими из равного числа опережающих и отстающих ветвей. Применение светильников без рассеивателей и экранирующих решеток не допускается.
Общее освещение при использовании люминесцентных светильников следует выполнять в виде сплошных или прерывистых линий светильников, расположенных сбоку от рабочих мест, параллельно линии зрения пользователя при рядном расположении видеодисплейных терминалов. При периметральном расположении компьютеров линии светильников должны располагаться локализовано над рабочим столом ближе к его переднему краю, обращенному к оператору.
Коэффициент пульсации не должен превышать 5%.
При отсутствии светильников с ЭПРА лампы многоламповых светильников или рядом расположенные светильники общего освещения следует включать на разные фазы трехфазной сети.
Помещения, где размещаются рабочие места с персональными компьютерами, освещается лампами типа ЛБ80, световой поток которых F = 5220 лм.
Освещенность определяется по следующей формуле 5.4:
, (5.4)
где
F - световой поток каждой из ламп, лм;
E - минимальная освещенность, лк;
k - коэффициент запаса, учитывающий запыление светильников и износ источников света;
Sп - площадь помещения, м2;
N - число источников света;
h - коэффициент использования светового потока;
z - коэффициент неравномерности освещения;
y - коэффициент затенения.
Определим данные для расчета. Коэффициент "k" для помещений освещаемых люминесцентными лампами, и при условии чистки светильников не реже двух раз в год берется равным:
k = 1,4-1,5.
При оптимальном расположении светильников коэффициент неравномерности равен:
z = 1,1-1,2.
Коэффициент затенения "y" вводится в расчет для помещений с фиксированным положением работающих, а также при наличии крупногабаритных предметов и принимается равным:
у = 0,8-0,9.
Коэффициент использования светового потока "h" зависит от типа светильника, коэффициента отражения светового потока от стен, потолка, пола, а также геометрических размеров помещения и высоты подвеса светильников, что учитывается одной комплексной характеристикой - индексом помещения. Показатель помещения определяется по формуле 5.5:
, (5.5)
где
h - высота подвеса светильников над рабочей поверхностью, м;
l - ширина помещения, м;
b - длина помещения, м.
Тогда индекс помещения по формуле (5.5) получается равным:
По найденному показателю помещения "i" и коэффициентам отражения потолка и стен, определяем коэффициент использования светового потока (под которым понимается отношение светового потока, падающего на рабочую поверхность, к световому потоку источника света). Для нашего случая "h" равняется 0,22.
Тогда освещенность по формуле (5.4) равна:
лк.
Расчет показывает, что освещенность в помещении, где размещаются рабочие места с персональными компьютеров удовлетворяет требованиям, так как нормальная минимальная освещенность должна составлять 400лк.
Заключение
Данный проект был направлен на автоматизацию проектных работ по программированию станка с ЧПУ Walter CIP6. Были проведены исследовательские работы по изучению состояния дел в этой сфере, изучены предложения других компаний, был создан программный продукт, посчитаны экономические затраты на его создание и сформулированы требования по безопасности жизнедеятельности.
В процессе проектирования был получен программный модуль, отвечающий всем заявленным требованиям. Этот модуль может проводить сложные математические расчеты неявным образом, отображать в графическом представлении введенные исходные данные. В результате использования модуля можно получить готовую управляющую программу для системы ЧПУ.
Для упрощения задачи создания модуля, в нем применен принцип внешнего управления работой пакета 3D моделирования. За счет этого была реализована возможность анимированной имитации обработки на станке, с получением твердотельной математической модели изделия, очень близкой к реальному изделию, которое могло бы получиться на станке, в результате использования этой управляющей программы.
Особое значение имеет тот факт, что происходит уход от традиционных бумажных носителей на всех этапах проектирования и внедрения управляющей программы. Достигается это за счет того, что такое же программное обеспечение может быть установлено на рабочем месте станочника, и используя его, рабочий может получить всю необходимую информацию о наладке станка в более удобном виде, чем это может быть представлено на бумажной карте наладки.
Данный программный модуль предназначен для применения в группе шлифовальных станков с ЧПУ Walter, оснащенными 4 – 6 осями. С помощью этого модуля могут быть смоделированы большинство традиционных осевых инструментов, которые применяются в производстве, а также может быть осуществлена переточка затупившегося инструмента.
Возможность имитации обработки позволяет отказаться от применения пробной детали, которая предназначена для отладки программы обработки и чаще всего оказывается испорченной.
Также был произведен анализ условий труда программиста, который должен работать в этом приложении. Были описаны параметры рабочего места и рассчитаны нормы освещенности рабочего помещения. В частности были рассчитаны такие параметры как площадь оконного проема и количество ламп искусственного освещения, необходимых для освещения данной комнаты при работе с персональным компьютером.
Был произведен экономический расчет стоимости разработки данного программного модуля. В нем были учтены стоимость компьютера и периферийного оборудования, применяемых в ходе разработки, а так же стоимость отладки и внедрения программного модуля. Анализ аналогов других фирм показал, что данный программный модуль может выполнять все те же действия, что и аналоги, но его стоимость на 239828,86 рублей ниже чем у аналогов.
Список литературы
1. Автоматизация проектно-конструкторских работ и технологической подготовки производства в машиностроении. Т. 1/Под ред. О. И. Семенкова.- Минск: Высшая школа, 2005.
2. Волков Д.И., Скляренко В.К.. Экономика предприятия. Курс лекций.- М.: Инфра-м, 2004.
3. Гольдштейн А.И., Молочник В.И. О внутренней структуре постпроцессоров. — В кн.: Повышение эффективности использования станков с ЧПУ. - Киев: Знание, 2006.
4. ГОСТ 886-77 "Свёрла спиральные с цилиндрическим хвостовиком. Длинная серия".
5. ГОСТ 2092-77 "Свёрла спиральные удлиненные с коническим хвостовиком".
6. ГОСТ 10079-71 "Развертки конические с коническим хвостовиком".
7. ГОСТ 14952-75 "Свёрла центровочные комбинированные".
8. ГОСТ 18121-72 "Развёртки котельные машинные".
9. ГОСТ 19267-73 "Развертки машинные цилиндрические с цилиндрическим хвостовиком для легких сплавов".
10. ГОСТ 21579-76 "Зенкеры с цилиндрическим хвостовиком для легких сплавов".
11. Делфи 4. Библия разработчика. Том Сван. Киев/Москва/Санкт-Петербург: Диалектика, 1998.
12. Ендовицкий Д.А., Коменденко С.Н. Организация анализа и контроля инновационной деятельности хозяйствующего субъекта. Под ред. Л.Т. Гимеровской. М.: Финансы и статистика, 2004.
13. Знакомство с Delphi 7. Архангельский А.Я. Москва: издательство Бином, 2004.
14. Инструменты программирования в Delphi 7. Фаронов В.В. СПб.: Питер, 2006.
15. Инструкция по программированию. Издание 03.96. SINUMERIK 840D/810D/FM-NC.
16. Ильенкова С.Д., Гохберг Л.М., Ягудин С.Ю. и др.Инновационный менеджмент. Учебник для вузов./ под ред. С.Д. Ильенковой. М.: Банки и биржи, Юнити, 1997.
17. Механика промышленных роботов: Учеб. Пособие для вузов: В 3 кн. / Под ред. К. В. Фролова, Е. И. Воробьева. Кн.2: расчет и проектирование механизмов / Е. И. Воробьев, О. Д. Егоров, С. А. Попов. – М: Высш. шк., 1988.
18. Инвестиции. Учебное пособие/Г.П. Подшиваленко, Н.И. Лахметкина, М.В. Макарова и др. М.:Кнорус,2004.
19. Оборудование машиностроительных предприятий / Схиртладзе А. Г Выходец., В. И., Никифоров Н. И., Отений Я. Н. − ВолгГТУ, Волгоград, 2005.
20. СанПиН 2.2.2/2.4.1340-03 "Гигиенические требования к персональным электронно-вычислительным машинам и организации работы".
21. Системная интеграция/Машиностроение СТА 3/2002 Николай Панышев, Дмитрий Ялымов "Система числового программного управления технологическим оборудованием".
22. Интернет источник. CALS-технологии. www.calscenter.com.
23. Интернет источник. Всемирная интернет энциклопедия. www.wikipedia.ru.
24. Интернет источник. Информационные системы. http://revolution./programming.
25. Интернет источник. Уфимский государственный авиационный технический университет. www.twirpx.com.
26. Интернет источник. Siemens Sinumerik 840D. www.chipmaker.ru.
27. Интернет источник. Филиппович К.В. "Идеология постпроцессирования в современных CAD/CAM-системах" Россия, ООО Евразия Лимитед, 2000. www.sapr2000.ru
Приложение А
Исходный текст программного модуля:
program Project2; //Имя программы
uses //Объявление прикрепленных к проекту файлов
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2},
Unit3 in 'Unit3.pas' {Form3},
Unit4 in 'Unit4.pas' {Form4},
Unit5 in 'Unit5.pas' {Form5},
Unit6 in 'Unit6.pas',
Unit7 in 'Unit7.pas' {Form7},
Unit8 in 'Unit8.pas' {Form8},
Unit9 in 'Unit9.pas' {Form9},
Unit10 in 'Unit10.pas',
Unit11 in 'Unit11.pas' {Form11},
Unit12 in 'Unit12.pas' {Form12},
Unit13 in 'Unit13.pas' {Form13},
Unit14 in 'Unit14.pas' {Form14},
Unit15 in 'Unit15.pas' {Form15},
Unit16 in 'Unit16.pas' {Form16},
Unit17 in 'Unit17.pas' {Form17};
var //объявление переменных
s:string; //назначение и присвоение типа переменных
ff:textfile;
{$R *.res} // директива компилятору подключить файл ресурсов
procedure Init_All; //объявление процедуры, относящейся ко всему проекту
begin
N_Ses:=1;
Init_Form2;
Form2.Caption:='Операция N 1';
Init_St_Det_Kr;
AssignFile(ff,path+'DAT\Stanok.dat'); //все параметры в проекта сохраняются в файл
reset(ff);
readln(ff,Xst[0]);
readln(ff,Yst[0]);
readln(ff,Zst[0]);
readln(ff,Ast[0]);
readln(ff,Bst[0]);
readln(ff,Cst[0]);
CloseFile(ff);
Init_Zag; //инициализация пользовательских функций
Init_Poly;
Init_Chk_Box;
Init_Traect(1);
Traect(1);
//Profile;
Init_Moving;
//Moving_9484;
Load_Op;
N_St:=0; N_Fin:=N_Pos[N_Act]; N_Last:=0;
Init_Data3('DAT\9484.txt'); //чтение данных из файла
Form3.Caption:='Начапьные установки';
Fill_Str_Grid1_3; //вставка стандартный элементов Windows
Init_Data4;
Fill_Str_Grid1_4;
Init_BitMap;
Draw_All;
Init_Data5;
Init_Data12;
Init_BitMap12;
Fill_Str_Grid3_12(1);
Fill_Str_Grid1_5;
Init_Data7;
Fill_Str_Grid1_7;
Step:=1;
str(Step:1:3,s);
Form8.Memo1.Text:=s;
Form8.Button17.Caption:='';
Nst_Act:=0;
Init_Zag;
Init_Data8;
Fill_Str_Grid1_8;
Fill_Str_Grid2_8;
Init_BitMap8;
Nkr_Edit:=1;
Init_BitMap9;
Cooling;
Fill_Str_Grid1_13;
N_Buff:=1;
Put_Buff(N_Buff);
Form3.Visible:=true;
Write_Zag;
Init_Data14;
Init_Data_15;
Init_Data_16;
end;
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1); //создание вспомогательных окон
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm3, Form3);
Application.CreateForm(TForm4, Form4);
Application.CreateForm(TForm5, Form5);
Application.CreateForm(TForm7, Form7);
Application.CreateForm(TForm8, Form8);
Application.CreateForm(TForm9, Form9);
Application.CreateForm(TForm11, Form11);
Application.CreateForm(TForm12, Form12);
Application.CreateForm(TForm13, Form13);
Application.CreateForm(TForm14, Form14);
Application.CreateForm(TForm15, Form15);
Application.CreateForm(TForm16, Form16);
Application.CreateForm(TForm17, Form17);
Init_All;
Application.Run;
end.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, Buttons, CheckLst, Grids,Math;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
Button8: TButton;
CheckListBox1: TCheckListBox;
Button2: TButton;
Button3: TButton;
StringGrid1: TStringGrid;
Button4: TButton;
Button5: TButton;
CheckListBox2: TCheckListBox;
Button6: TButton;
Button7: TButton;
Button9: TButton;
CheckListBox3: TCheckListBox;
Button10: TButton;
Button11: TButton;
Button12: TButton;
Button13: TButton;
Button14: TButton;
Button15: TButton;
Button16: TButton;
procedure Button3Click(Sender: TObject); //функции нажатия кнопок
procedure Button2Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure CheckListBox1ClickCheck(Sender: TObject);
procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure CheckListBox2ClickCheck(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure CheckListBox3ClickCheck(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
procedure Button13Click(Sender: TObject);
procedure Button14Click(Sender: TObject);
procedure CheckListBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Button15Click(Sender: TObject);
procedure Button16Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
type
XYZ=record
x:real;
y:real;
Z:real;
end;
var
Form1: TForm1;
XYZ_D:XYZ;
X,Y,Z,A,B,C:real;
//start
Type_Tool:integer;
SM_X,SM_Y,SM_Z,POV_A,POV_B,SM_C:array[0..500] of real; //объявление массивов
Dkr,Rkr,Skr,Akr:array [1..11] of real; //для хранения вводимых параметров в сетке
Xkr,Ykr,Zkr,X1,Y1,Z1,dX,dY,dZ,XB1,YB1,ZB1,XB,YB,ZB:real;
{Ddet,}Rdet,Zst_B,Obr_Kon,FPL,Alf1,Alf2,Apodt,Dpodt,Wdet:real;
U_X,U_Y,U_Z1,U_Z2,UB_X,dRdet:array [1..11] of real;
N_Zub:integer;
Rvp,Lz,Lo,Lzt,Arp,Rp:real;
Zp_Kr:array [1..6,1..2] of real;
Np_Kr,Sb_Int:array [1..11] of integer;
FiC,Ftr,Teta,Ltr_P,Ltr_R,LC,X0,Y0,Z0:array[0..11] of real;
XC,YC,ZC,XT,YT,ZT,XD,YD,ZD,dA,dB,dC,V_D:real;
Xst,Yst,Zst,Ast,Bst,Cst:array [0..500] of real;
Xst_Old,Yst_Old,Zst_Old,Ast_Old,Bst_Old,Cst_Old:real;
N_Act,N_St,N_Fin,N_Last,Obr:integer;
FTime:real;
F,Feed:integer;
Nt,N_Pos:array [0..500] of integer; //заполнение массивов
Com:array [0..500] of string[20];
ff1:textfile;
FName,ABS_OTN:string;
Xtr,Ytr,Ztr,X0det,Y0det,Z0det:array [0..10] of real;
dXC1,dYC1,dZC1,dX_PR,dY_PR,dZ_PR,Atr,Btr:real;
Rpr:array[1..10,1..2] of real;
Num_Op,Nex,N_C,N_Op,Nop:integer;
OutMet:array [0..500] of integer;
dFiex,dYex, dZex:array [0..100] of real;
Rex,A0ex,A1ex,Yex,dRex,Hstr,Akan:real;
{D_Auto_Calc,}Ds,Hrk,Xrk:array [1..10] of real;
Gp,Gs:array [1..2,1..10] of real;
//N_Cycl:array [1..10,1..2] of integer;
//Amin,Amax,AStep:array [1..7] of integer;
Num_Check:integer;
Zel,Yel:real;
ddZ,ddY:real;
N_Ses:integer;
Beta,X_P1,Y_P1,X_P2,Y_P2,Ld1,Ld2:real;
XXtr,YYtr,ZZtr:real;
rad:real;
N_Kr:integer;
Nkr,N_Razb,N_Sech,N_Sech_X:array [1..11] of integer;
Z0_Kr,Ust_D,Ust_VD:real;
path:string;
W,Hv,Fit_Init:array [1..11] of real;
Xv,Yv,Zv,Xv1,Yv1,Zv1,XvT,YvT,ZvT,Y_X,Z_X:array [0..50,0..2,0..5,0..100] of real;
N_Tr:integer;
Cut_Kr:array [0..20] of integer;
N_Cut,Vozvr:array [0..500] of integer;
Xkr4,Ykr4:array [1..4,0..4,0..100] of real;
Name_Op:array [1..20] of string;
Viz_Vt,Viz_Dim,Auto_Calc:array [1..20] of integer;
A_Hrk:real;
dy_Ex,dz_Ex:array [0..100] of real;
Comp_Y,Comp_Z:array [0..100] of real;
x_Out,y_Out,z_Out:array [0..100] of real;
Move_Out:integer;
dfex:array [1..11] of real;
Cool:integer;
dotv_Cool,D_Cool,Fi_Cool,Sm_Kan,Fos_Kan,Frad_Kan,A_Cool:real;
Opt_Surf:array [0..3] of string;
N_Opt:array [1..11] of integer;
NC_Act:integer;
X_NC,Y_NC,Z_NC,A_NC,B_NC,C_NC,DX_NC,DY_NC,DZ_NC,DA_NC:array [1..10] of real;
N_Dop_Act:integer;
Adov:array [1..11] of real;
N_Feed:integer;
Napr:array [0..11] of integer;
S_Napr:array[0..11] of string;
Name_Napr:array [1..3] of string;
X_Arc,Y_Arc,Z_Arc: real;
XC1_0,YC1_0,ZC1_0,XC2_0,YC2_0,ZC2_0,XP_0,YP_0,ZP_0,XR_0,YR_0,ZR_0:real;
Nz_Act:array [1..20,1..20] of integer;
Nz_Fi:array [0..20] of real;
X_Dop,Y_Dop,Z_Dop,A_Dop,B_Dop,C_Dop:array [1..10] of real;
FX_Dop,FY_Dop,FZ_Dop,FA_Dop,FB_Dop,FC_Dop:array [1..10] of real;
X_Pr,Y_Pr,Z_Pr,A_Pr,B_Pr,C_Pr:array [1..10,1..3] of real;
FX_Pr,FY_Pr,FZ_Pr,FA_Pr,FB_Pr,FC_Pr:array [1..10,1..3] of real;
X_Otv,Y_Otv,Z_Otv,A_Otv,B_Otv,C_Otv:array [1..10] of real;
FX_Otv,FY_Otv,FZ_Otv,FA_Otv,FB_Otv,FC_Otv:array [1..10] of real;
X_Cst,Y_Cst,Z_Cst,A_Cst,B_Cst,C_Cst:array [1..10] of real;
X_Cfin,Y_Cfin,Z_Cfin,A_Cfin,B_Cfin,C_Cfin:array [1..10] of real;
X_Cex,Y_Cex,Z_Cex,A_Cex,B_Cex,C_Cex:array [1..10] of real;
FX_C,FY_C,FZ_C,FA_C,FB_C,FC_C:array [1..10] of real;
Num_C:array [1..10] of integer;
X_Vix,Y_Vix,Z_Vix,A_Vix,B_Vix,C_Vix:array [1..10] of real;
FX_Vix,FY_Vix,FZ_Vix,FA_Vix,FB_Vix,FC_Vix:array [1..10] of real;
FX_Kor,FY_Kor,FZ_Kor,FA_Kor,FB_Kor,FC_Kor:real;
FX_Ust,FY_Ust,FZ_Ust,FA_Ust,FB_Ust,FC_Ust:real;
PosTime:array [1..10] of real;
Num_Vix:array [1..10] of integer;
AutoCalc:boolean;
AHrk,Av,Ak,Ap,Sp:array [1..2,1..10] of real;
Avt,AHrkt:array [1..10] of real;
Xpx,Ypx:array [1..3,0..50] of real;
N_Proection,N_Profile,XSect:integer;
CrsAlfa:array [1..2] of real;
RminX,RminY:array [1..10] of real;
TwoFi:real;
FiRmin:array [1..2,1..10] of real;
CrsFiBeg,CrsFiEnd:array [1..10,1..2] of real;
CrsXbeg,CrsYbeg,CrsXend,CrsYend,CrsZend:array [1..10,1..2] of real;
x_Pol,y_Pol,z_Pol,R_Pol,Fit_Pol:array [1..10,1..2,0..300] of real;
N_Pol:integer;
NBeg,NEnd:array [1..10,1..2] of integer;
AsectK,RminS:array [1..10] of real;
NsectK,N_PolK:array [1..10] of integer;
N_Auto,Auto_Tang:array[1..10] of integer;
Lzat1,Lzat2,Rzat,Hzat:array [1..10] of real;
ExtdY:array [1..50,1..10] of real;
Xzat_c,Yzat_c:array [1..10,1..50] of real;
CrossSect,Ntr,Ntr1:integer;
Zcont,Ycont:array [0..50,1..2,0..3] of real;
LpS,LpR:real;
N_ZP_PL:integer;
HkZP,HfZP,SfZP,RfZP,FiZp:array [1..10] of real;
SLent,SnLent,ALent,APovL,BPovL,XPovL,YPovL,ZPovL:array [1..10] of real;
N_Sect:boolean;
Edit_Op:integer;
N_OpGr,N_Link:array [1..10] of integer;
X_ZP_PL,Y_ZP_PL,dY_ZP_PL,A_ZP_PL:array [1..10] of real;
Z_ZP_PL:array [1..2,1..10] of real;
Nop_ZP_PL:integer;
GlDv:array [1..6,1..10] of integer;
fiAmax:real;
procedure Init_Chk_Box; //описание процедур построцессора
procedure Init_St_Det_Kr;
procedure Init_Moving;
procedure Zatilok;
Procedure Init_Traect(i:integer);
procedure Traect(N_Act:integer);
procedure Memo_Out;
procedure W_Str(com:string);
function w_r(val:real;f1,f2:integer):string;
procedure G90;
procedure G91;
procedure G01;
procedure Profile;
procedure Load_Op_All;
procedure Load_Op;
procedure Fix_Det(V_D,UB_X,Ddet:real);
procedure Make_Krug(N_kr,m:integer);
procedure UpDate_ChkBox2;
procedure Make_Spind;
procedure Init_All;
implementation
uses Unit2,Unit3,Unit4,Unit5,Unit6,Unit10,Unit14, Unit8,Unit13,Unit12,
Unit7,Unit9,Unit15,Unit16,Unit17;
{$R *.dfm} //процедура реализации
var
Str_Rel:array [0..500] of string;
ff:text;
procedure Init_All;
var
s:string;
begin
path:=GetCurrentDir+'\';
N_Ses:=1;
Init_Form2;
Form2.Caption:='Операция N 1';
Init_St_Det_Kr;
Init_Zag;
Init_Poly;
Init_Chk_Box;
Init_Traect(1);
Traect(1);
//Profile;
Init_Moving;
//Moving_9484;
Load_Op;
N_St:=0; N_Fin:=N_Pos[N_Act]; N_Last:=0;
//Init_Data3('DAT\9484.txt');
Form3.Caption:='Начальные установки';
Fill_Str_Grid1_3;
Init_Data4;
Fill_Str_Grid1_4;
Init_BitMap;
Draw_All;
Init_Data5;
Init_Data12;
Init_BitMap12;
Fill_Str_Grid3_12(1);
Fill_Str_Grid1_5;
Init_Data7;
Fill_Str_Grid1_7;
Step:=1;
//str(Step:1:3,s);
Form8.Memo1.Text:=s;
Form8.Button17.Caption:='';
Nst_Act:=0;
Init_Zag;
Init_Data8;
Fill_Str_Grid1_8;
Fill_Str_Grid2_8;
Init_BitMap8;
//Nkr_Edit:=1;
Init_BitMap9;
Cooling;
Fill_Str_Grid1_13;
N_Buff:=1;
Put_Buff(N_Buff);
Form3.Visible:=true;
Write_Zag;
Init_Data14;
Init_Data_15;
Init_Data_16;
end;
procedure W_Str(com:string);
begin
Form1.Memo1.Lines.Add(com);
end;
function w_r(val:real;f1,f2:integer):string;
var
s:string;
begin
str(val:f1:f2,s);
w_r:=s;
end;
function w_i(val:integer;f1:integer):string;
var
s:string;
begin
str(val:f1,s);
w_i:=s;
end;
procedure Memo_Out;
var
s:string;
i,j:integer;
TotTime:real;
begin
Form1.Memo1.Clear;
Form1.Memo1.Visible:=false;
str(N_Pos[N_Act]:2,s);
W_Str('Кол-во позиций:0-'+s);
for i:=0 to N_Pos[N_Act] do
begin
W_Str('');
if i=0 then s:='';
if i>0 then s:='G01 '+Str_Rel[i];
W_Str('Поз.'+w_i(i,2)+':'+s);
W_Str(' Абс Отн');
W_Str('X='+w_r(Xst[i],9,3)+' '+w_r(SM_X[i],9,3));
W_Str('Y='+w_r(Yst[i],9,3)+' '+w_r(SM_Y[i],9,3));
W_Str('Z='+w_r(Zst[i],9,3)+' '+w_r(SM_Z[i],9,3));
W_Str('A='+w_r(Ast[i],9,3)+' '+w_r(POV_A[i],9,3));
W_Str('B='+w_r(Bst[i],9,3)+' '+w_r(POV_B[i],9,3));
W_Str('C='+w_r(Cst[i],9,3)+' '+w_r(SM_C[i],9,3));
end;
W_Str('**********************');
str(N_Act:1,s);
W_Str('Время оп.'+s+' :'+w_i(trunc(PosTime[N_Act]),1)+''''+
w_r(frac(PosTime[N_Act])*60,2,0)+'"');
TotTime:=0;
for j:=1 to N_op do
TotTime:=TotTime+PosTime[j];
W_Str('Время общее:'+w_r(TotTime,2,3));
Form1.Memo1.Visible:=true;
end;
procedure Move(Os:char;len:real;part_name:string); //создание структуры кадра
begin
writeln(ff1,'(position_pa :part_assembly :start ','"',part_name,'" ',
':select_done :translate :dir_len :',Os,' :len ',len:8:6,' :done ',
':pos_dynamic :dynamo-done)');
writeln(ff1,'(redraw_vp "vport1")');
end;
procedure Rotate(Os:char;angle:real;part_name:string);
begin
writeln(ff1,'(position_pa :part_assembly :start ','"',part_name,'" ',
':select_done :rotate :axis :',Os,' :rotation_angle ',angle:8:6,' :done ',
':pos_dynamic :dynamo-done)');
writeln(ff1,'(redraw_vp "vport1")');
end;
procedure XX(len:real);
begin
Move('x',len,'/CIP6/N_S');
end;
procedure YY(len:real);
begin
Move('y',len,'/CIP6/Krug');
end;
procedure ZZ(len:real);
begin
Move('z',len,'/CIP6/Krug');
end;
procedure AA(ang:real);
begin
writeln(ff1,'(current_wp "/CIP6/N_S/V_S/C_Sys/Det/w_A")');
Rotate('w',ang,'/CIP6/N_S/V_S/C_Sys/Det');
end;
procedure BB(ang:real);
begin
writeln(ff1,'(current_wp "/CIP6/N_S/V_S/w_B")');
Rotate('w',ang,'/CIP6/N_S/V_S');
end;
procedure CC(len:real);
begin
writeln(ff1,'(current_wp "/CIP6/N_S/V_S/w_C")');
Move('w',len,'/CIP6/N_S/V_S/C_Sys');
end;
procedure AddToFile(Fn:string;N_Pos:integer);
begin
AssignFile(ff1,Fn); //запись файла связи с 3D пакетом
Append(ff1);
Nt[N_Pos]:=F;
writeln(ff1,'(dotimes ( n ',Nt[N_Pos]:2,')');
if abs(SM_X[N_Pos])>=0.001 then
begin
XX(SM_X[N_Pos]/Nt[N_Pos]);
Xst[N_Pos]:=Xst[N_Pos-1]+SM_X[N_Pos];
end;
if abs(SM_Y[N_Pos])>=0.001 then
begin
YY(SM_Y[N_Pos]/Nt[N_Pos]);
Yst[N_Pos]:=Yst[N_Pos-1]+SM_Y[N_Pos];
end;
if abs(SM_Z[N_Pos])>=0.001 then
begin
ZZ(-SM_Z[N_Pos]/Nt[N_Pos]);
Zst[N_Pos]:=Zst[N_Pos-1]+SM_Z[N_Pos];
end;
if abs(POV_B[N_Pos])>=0.001 then
begin
BB(POV_B[N_Pos]/Nt[N_Pos]);
Bst[N_Pos]:=Bst[N_Pos-1]+POV_B[N_Pos];
end;
if abs(Pov_A[N_Pos])>=0.001 then
begin
AA(POV_A[N_Pos]/Nt[N_Pos]);
Ast[N_Pos]:=Ast[N_Pos-1]+POV_A[N_Pos];
end;
if abs(SM_C[N_Pos])>=0.001 then
begin
CC(SM_C[N_Pos]/Nt[N_Pos]);
Cst[N_Pos]:=Cst[N_Pos-1]+SM_C[N_Pos];
end;
writeln(ff1,')');
Flush(ff1);
CloseFile(ff1);
end;
procedure G90;
begin
ABS_OTN:='G90';
X:=Xst[N_Pos[N_Act]];
Y:=Yst[N_Pos[N_Act]];
Z:=Zst[N_Pos[N_Act]];
A:=Ast[N_Pos[N_Act]];
B:=Bst[N_Pos[N_Act]];
C:=Cst[N_Pos[N_Act]];
end;
procedure G91;
begin
ABS_OTN:='G91';
X:=0; Y:=0; Z:=0;
A:=0; B:=0; C:=0;
end;
procedure G01;
var
ss,ss1:string;
begin
inc(N_Pos[N_Act]);
PosTime[N_Act]:=PosTime[N_Act]+abs(FTime);
FTime:=0;
OutMet[N_Pos[N_Act]]:=Obr;
Obr:=0;
Str_Rel[N_Pos[N_Act]]:=ABS_OTN;
if pos('G91',ABS_OTN)>0 then
begin
SM_X[N_Pos[N_Act]]:=X;
SM_Y[N_Pos[N_Act]]:=Y;
SM_Z[N_Pos[N_Act]]:=Z;
POV_B[N_Pos[N_Act]]:=B;
POV_A[N_Pos[N_Act]]:=A;
SM_C[N_Pos[N_Act]]:=C;
end;
if pos('G90',ABS_OTN)>0 then
begin
SM_X[N_Pos[N_Act]]:=X-Xst[N_Pos[N_Act]-1];
SM_Y[N_Pos[N_Act]]:=Y-Yst[N_Pos[N_Act]-1];
SM_Z[N_Pos[N_Act]]:=Z-Zst[N_Pos[N_Act]-1];
POV_B[N_Pos[N_Act]]:=B-Bst[N_Pos[N_Act]-1];
POV_A[N_Pos[N_Act]]:=A-Ast[N_Pos[N_Act]-1];
SM_C[N_Pos[N_Act]]:=C-Cst[N_Pos[N_Act]-1];
end;
Xst[N_Pos[N_Act]]:=Xst[N_Pos[N_Act]-1];
Yst[N_Pos[N_Act]]:=Yst[N_Pos[N_Act]-1];
Zst[N_Pos[N_Act]]:=Zst[N_Pos[N_Act]-1];
Ast[N_Pos[N_Act]]:=Ast[N_Pos[N_Act]-1];
Bst[N_Pos[N_Act]]:=Bst[N_Pos[N_Act]-1];
Cst[N_Pos[N_Act]]:=Cst[N_Pos[N_Act]-1];
str(N_Pos[N_Act]:1,ss);
if NC_ACt=0 then
begin
str(N_Pos[N_Act]:1,ss1);
Form1.CheckListBox1.Items.Add(ss+':'+Com[N_Pos[N_Act]]);
if N_Pos[N_Act]>1 then
Form1.CheckListBox1.State[N_Pos[N_Act]-1]:=cbUnChecked;
Form1.CheckListBox1.State[N_Pos[N_Act]]:=cbChecked;
AddToFile(Path+'LSP\Hod.lsp',N_Pos[N_Act]);
end;
end;
procedure Profile;
var
RF:real;
ff:textfile;
X3,Y3,Z3,X31,Y31,Z31,X32,Y32,Z32,Mu_YZ,Mu_YZ1,Mu_YX,Mu_XZ:real;
Xin,Yin,Zin,Xex,Yex,Zex,Muin,Muex:real;
Xin1,Yin1,Zin1,Xex1,Yex1,Zex1,Muin1,Muex1:real;
Ang,Rs,Rd,Ksi,Ksi1,Xc,Yc,Zc1,Xc1,Yc1,F0,F1,Ficx:real;
N_Uch,N_Point,Np1,i,j,N_Half:integer;
dTeta,R_Limit1,R_Limit2,xL1,yL1,zL1,xL2,yL2,zL2,xL3,yL3,zL3,
fex,Alf1,Alf2,Alf3,L1,L2,L3,Step:real;
xL1f,yL1f,zL1f,xL2f,yL2f,zL2f,xL3f,yL3f,zL3f:real;
N_Break:array [1..2,0..4,0..100] of integer;
N_SpL:integer;
//LtrR,LtrP:extended;
fiA{,fiAmax},Vfi,fit_max,dX,dY,dZ:real;
Xv03,Yv03,Zv03:real;
K_Razb:real;
Fex_Min,Fex_Max:array [1..3] of real;
fit0,{fit_st,fit_fin,}dS_Min:real;
Empt:array [1..12] of integer;
a1_p,an_p,Sn_p,r_p,Ltr_Pfin:real;
NSect:integer;
procedure Sil(N_Tr:integer);
var
i:integer;
ff1:textfile;
fixX,fixY,fixZ:real;
fixX1,fixY1,fixZ1:real;
fixX2,fixY2,fixZ2:real;
procedure Vint(N_Tr,N_Half,N_Uch,j:integer);
begin
XvT[N_Tr,N_Half,N_Uch,j]:=Xv[N_Tr,N_Half,N_Uch,j];
YvT[N_Tr,N_Half,N_Uch,j]:=Yv[N_Tr,N_Half,N_Uch,j]*cos({FiA}0)+
Zv[N_Tr,N_Half,N_Uch,j]*sin({FiA}0);
ZvT[N_Tr,N_Half,N_Uch,j]:=-Yv[N_Tr,N_Half,N_Uch,j]*sin({FiA}0)+
Zv[N_Tr,N_Half,N_Uch,j]*cos({FiA}0);
fixX:=XvT[N_Tr,N_Half,N_Uch,j];
fixY:=YvT[N_Tr,N_Half,N_Uch,j];
fixZ:=ZvT[N_Tr,N_Half,N_Uch,j];
writeln(ff1,XvT[N_Tr,N_Half,N_Uch,j]:8:5,',',
YvT[N_Tr,N_Half,N_Uch,j]:1:5,',',
ZvT[N_Tr,N_Half,N_Uch,j]:1:5);
end;
procedure Create_Bspline(N_Tr,N_Sp,N_Uch,N_Half:integer);
var
j:integer;
x3,y3,z3:real;
begin
inc(N_Spl);
case N_Sp of
begin
writeln(ff1,'(create_curve_on_surface :wire_part "/Sil_',N_Tr:1,'.',N_Spl:1,'" ',
':start :selected_part "/a1/Krug" :face_3d :by_feature ',
':full_name :start_name "/a1/Krug" :feature "feat1" ',
':end_name :select_done ');
for j:=0 to N_Razb[N_Act] do
if (N_Break[N_Half,N_Uch,j]=0) then
begin
Empt[N_Sp]:=1;
Vint(N_Tr,N_Half,N_Uch,j);
if (N_Spl=4) and (j=N_Razb[N_Act]) then
Vint(N_Tr,1,1,j);
if (N_Spl=6) and (j=N_Razb[N_Act]) then
Vint(N_Tr,1,3,j);
end;
writeln(ff1,')');
writeln(ff1,'(remove_from_vp_drawlist "vport1" :with-wp ',
' "/Sil_',N_Tr:1,'.',N_Spl:1,'")');
end;
begin
{ Vint(N_Tr,1,1,N_Razb[N_Act]);
fixX1:=fixX; fixY1:=fixY; fixZ1:=fixZ;
Vint(N_Tr,1,3,N_Razb[N_Act]);
fixX2:=fixX; fixY2:=fixY; fixZ2:=fixZ;
x3:=(fixX1+fixX2)/2;
z3:=(fixZ1+fixZ2)/2;
y3:=(fixY1+fixY2)/2+Ddet;
writeln(ff1,'(create_bspline :wire_part "/Sil_',N_Tr:1,'.',N_Spl:1,'" ',
':input_mode :control ');
Vint(N_Tr,1,1,N_Razb[N_Act]);
writeln(ff1,x3:8:8,',',y3:1:8,',',z3:1:8);
Vint(N_Tr,1,3,N_Razb[N_Act]);}
writeln(ff1,'(create_bspline :wire_part "/Sil_',N_Tr:1,'.',N_Spl:1,'" ',
':start_condition :edge :cv_edge ',
':start :selected_part "/Sil_',N_Tr:1,'.',1:1,'" :edge_3d :by_vertex_3d');
Empt[N_Sp]:=1;
Vint(N_Tr,1,1,N_Razb[N_Act]);
writeln(ff1,':select_done ');
Vint(N_Tr,1,1,N_Razb[N_Act]);
writeln(ff1,':tangent 0.2 :accept ',
':end_condition :edge :cv_edge ',
':start :selected_part "/Sil_',N_Tr:1,'.',3:1,'" :edge_3d :by_vertex_3d');
Vint(N_Tr,1,3,N_Razb[N_Act]);
writeln(ff1,':select_done ');
Vint(N_Tr,1,3,N_Razb[N_Act]);
writeln(ff1,':tangent 0.2 :accept ');
writeln(ff1,')');
writeln(ff1,'(remove_from_vp_drawlist "vport1" :with-wp ',
' "/Sil_',N_Tr:1,'.',N_Spl:1,'")');
end;
begin
writeln(ff1,'(create_bspline :wire_part "/Sil_',N_Tr:1,'.',N_Spl:1,'" ',
':start_condition :edge :cv_edge ',
':start :selected_part "/Sil_',N_Tr:1,'.',5:1,'" :edge_3d :by_vertex_3d ');
Empt[N_Sp]:=1;
Vint(N_Tr,2,1,N_Razb[N_Act]);
fixX1:=fixX; fixY1:=fixY; fixZ1:=fixZ;
writeln(ff1,':select_done ');
Vint(N_Tr,2,1,N_Razb[N_Act]);
writeln(ff1,':accept ',
':end_condition :edge :cv_edge ',
':start :selected_part "/Sil_',N_Tr:1,'.',7:1,'" :edge_3d :by_vertex_3d ');
Vint(N_Tr,2,3,N_Razb[N_Act]);
fixX2:=fixX; fixY2:=fixY; fixZ2:=fixZ;
writeln(ff1,':select_done ');
Vint(N_Tr,2,3,N_Razb[N_Act]);
writeln(ff1,':accept )');
writeln(ff1,'(modify_bspline :curve :start :selected_part "/Sil_',N_Tr:1,'.8" ',
':all_3d :select_done ',
':insert_point ',fixX1:8:5,',',
fixY1:1:5,',',
fixZ1:1:5,' ',
(fixX1+fixX2)/2:8:5,',',
(fixY1+fixY2)/2:1:5,',',
(fixZ1+fixZ2)/2:1:5,' ');
writeln(ff1,')');
end;
end;
end;
begin
for i:=1 to 10 do
Empt[i]:=0;
AssignFile(ff1,Path+'LSP\Sil.lsp');
Append(ff1);
N_Spl:=0;
writeln(ff1,'(position_pa :part_assembly :start "/a1/Krug" :select_done ',
':translate :x ',dX:8:5,')');
writeln(ff1,'(position_pa :part_assembly :start "/a1/Krug" :select_done ',
':translate :y ',dY:8:5,')');
writeln(ff1,'(position_pa :part_assembly :start "/a1/Krug" :select_done ',
':translate :z ',dZ:8:5,')');
{ if N_Tr=N_Sech[N_Act] then
writeln(ff1,'(position_pa :part_assembly :start "/a1/Krug.1" :select_done ',
':rotate :axis :x :rotation_angle ',-fiA/pi*180:8:5,' :done :translate :x ',
-dX:8:5,')');
}
{ if N_Tr=N_Sech[N_Act] then
begin
writeln(ff1,'(create_multiple_pa :copy :source "/a1/surf1" :owner "/" )');
writeln(ff1,'(create_multiple_pa :copy :source "/a1/surf2" :owner "/" )');
writeln(ff1,'(create_multiple_pa :copy :source "/a1/surf3" :owner "/" )');
end; }
Create_Bspline(N_Tr,1,1,1);
Create_Bspline(N_Tr,2,2,1);
Create_Bspline(N_Tr,3,3,1);
Create_Bspline(N_Tr,4,1,3);
for i:=1 to N_Spl do
writeln(ff1,'(position_pa :part_assembly :start "/Sil_',N_Tr:1,'.',i:1,'" ',
':select_done ',
':rotate :axis :x :rotation_angle ',(fiAmax-fiA)/pi*180:8:5,')');
if N_Tr<N_Sech[N_Act] then
begin
// writeln(ff1,'(position_pa :part_assembly :start "/a1/Krug" :select_done ',
// ':rotate :axis :x :rotation_angle ',fiA/pi*180:8:5,')');
writeln(ff1,'(position_pa :part_assembly :start "/a1/Krug" :select_done ',
':translate :x ',-dX:8:5,')');
writeln(ff1,'(position_pa :part_assembly :start "/a1/Krug" :select_done ',
':translate :y ',-dY:8:5,')');
writeln(ff1,'(position_pa :part_assembly :start "/a1/Krug" :select_done ',
':translate :z ',-dZ:8:5,')');
end;
//W_Str1('N_spl='+w_i(N_Spl,1));
Flush(ff1);
CloseFile(ff1);
end;
Приложение Б
Параметры проекта Delphi:
-$A8
-$B-
-$C+
-$D+
-$E-
-$F-
-$G+
-$H+
-$I+
-$J-
-$K-
-$L+
-$M-
-$N+
-$O+
-$P+
-$Q-
-$R-
-$S-
-$T-
-$U-
-$V+
-$W-
-$X+
-$YD
-$Z1
-cg
-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
-H+
-W+
-M
-$M16384,1048576
-K$00400000
-LE"c:\program files\borland\delphi7\Projects\Bpl"
-LN"c:\program files\borland\delphi7\Projects\Bpl"
-w-UNSAFE_TYPE
-w-UNSAFE_CODE
-w-UNSAFE_CAST
[FileVersion]
Version=7.0 //версия файла
[Compiler]
A=8 //начальные параметры
B=0
C=1
D=1
E=0
F=0
G=1
H=1
I=1
J=0
K=0
L=1
M=0
N=1
O=1
P=1
Q=1
R=1
S=0
T=0
U=0
V=1
W=1
X=1
Y=1
Z=1
ShowHints=1
ShowWarnings=1
UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
NamespacePrefix=
SymbolDeprecated=1
SymbolLibrary=1
SymbolPlatform=1
UnitLibrary=1
UnitPlatform=1
UnitDeprecated=1
HResultCompat=1
HidingMember=1
HiddenVirtual=1
Garbage=1
BoundsError=1
ZeroNilCompat=1
StringConstTruncated=1
ForLoopVarVarPar=1
TypedConstVarPar=1
AsgToTypedConst=1
CaseLabelRange=1
ForVariable=1
ConstructingAbstract=1
ComparisonFalse=1
ComparisonTrue=1
ComparingSignedUnsigned=1
CombiningSignedUnsigned=1
UnsupportedConstruct=1
FileOpen=1
FileOpenUnitSrc=1
BadGlobalSymbol=1
DuplicateConstructorDestructor=1
InvalidDirective=1
PackageNoLink=1
PackageThreadVar=1
ImplicitImport=1
HPPEMITIgnored=1
NoRetVal=1
UseBeforeDef=1
ForLoopVarUndef=1
UnitNameMismatch=1
NoCFGFileFound=1
MessageDirective=1
ImplicitVariants=1
UnicodeToLocale=1
LocaleToUnicode=1
ImagebaseMultiple=1
SuspiciousTypecast=1
PrivatePropAccessor=1
UnsafeType=1
UnsafeCode=1
UnsafeCast=1
[Linker]
MapFile=0
OutputObjs=0
ConsoleApp=1
DebugInfo=0
RemoteSymbols=0
MinStackSize=16384
MaxStackSize=1048576
ImageBase=4194304
ExeDescription=
[Directories] //параметры проекта
OutputDir=
UnitOutputDir=
PackageDLLOutputDir=
PackageDCPOutputDir=
SearchPath=
Packages=vcl;rtl;dbrtl;adortl;vcldb;vclx;bdertl;vcldbx;ibxpress;dsnap;cds;bdecds;qrpt;teeui;teedb;tee;dss;teeqr;visualclx;visualdbclx;dsnapcrba;dsnapcon;VclSmp;vclshlctrls;inetdb;inet;nmfast;vclie;dbexpress;dbxcds;indy;dclOffice2k
Conditionals=
DebugSourceDirs=
UsePackages=0
[Parameters]
RunParams=
HostApplication=
Launcher=
UseLauncher=0
DebugCWD=
[Language]
ActiveLang=
ProjectLang=
RootDir=
[Version Info]
IncludeVerInfo=0
AutoIncBuild=0
MajorVer=1
MinorVer=0
Release=0
Build=0
Debug=0
PreRelease=0
Special=0
Private=0
DLL=0
Locale=1049
CodePage=1251
[Version Info Keys] //информация о проекте
CompanyName=
FileDescription=
FileVersion=1.0.0.0
InternalName=
LegalCopyright=
LegalTrademarks=
OriginalFilename=
ProductName=
ProductVersion=1.0.0.0
Comments=
[HistoryLists\hlUnitAliases]
Count=1
Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
Приложение B
Текст настроечного файла программного модуля:
3
2
5.260 5.000 105.000 1.000 1.250
0.700 0.900 7.410 0.350 120.000
10.000 25.000 0.900 30.000 0.200
85.000 1.300 50.000 71.000 0.060 3
3
99.86600 9.70600 90.00000
0.45000 0.20000 50.78000
-58.71300 53.29000 -196.78000 -180.36000
125.06600 4.05600 90.00000
1.95000 1.95000 50.73000
-71.26300 65.89000 -147.21000 -136.44000
100.16600 9.97300 90.00000
0.10000 1.10000 50.69000
-58.77300 53.44000 -105.12700 -88.44000
130.00000 88.00000 6.71400
6
Канавка
0.000 0.00000 40.00000 53.50000 1 1 0.00000 0.71966 0.85300 -0.2000 99999999.000 0 2.000 2 0.000 0 1 1 1 1 20 0.0100 1
0.000 0.000 0.000 0.000 0.000 0.000
Затылок
0.000 -0.01719 40.00000 47.00000 1 1 0.00000 5.14988 -4.85300 -1.0000 999999.000 0 1.000 2 0.000 0 1 1 1 1 20 0.0100 1
0.000 0.000 0.000 421.303 0.000 0.000
1 задний угол
58.525 0.00000 80.00000 80.00000 3 2 0.25000 -30.00000 0.00000 0.5000 999999.000 0 2.000 2 0.000 0 1 1 1 1 20 0.0100 1
0.000 0.000 0.000 -70.110 0.000 0.000
2 задний угол
51.710 0.00000 80.00000 80.00000 3 2 -0.65000 -30.00000 -1.26552 0.5000 999999.000 0 2.000 2 0.000 0 0 1 1 1 20 0.0100 1
0.000 0.000 0.000 -46.533 0.000 0.000
Подточка
30.000 40.00000 25.00000 24.00000 2 1 1.00000 -0.80000 -0.24500 -9.0000 999999.000 0 2.000 2 0.000 0 0 1 1 0 20 0.0100 1
0.000 0.000 0.000 -45.000 0.000 0.000
Канавка под СОЖ
14.767 79.65473 25.00000 20.00000 3 2 -3.21700 2.11332 -1.94988 0.5000 999999.000 0 2.000 2 0.000 0 0 0 0 0 20 0.0100 1
0.000 0.000 0.000 0.000 0.000 0.000
4
0.000 0.000 90.000 0.000
10.520 0.000 -0.016 0.000
10.477 77.000 45.246 0.000
12.000 77.755 0.000 0.000
12.000 130.000 0.000 0.000
39.000 19.000 59.000 40.000
1 1.900 6.000 45.000 1.000 15.000 45.000
1
1
1
1
0
0
0
0
0
0
0
0
0.000
180.000
0.000 0.000 0.000 0.000 0.000 0.000
0 0 0 0 0 0
0.000 0.000 0.000 0.000 0.000 0.000
0 0 0 0 0 0
0.000 0.000 0.000 0.000 0.000 0.000
0.000 0.000 0.000 -15.000 0.000 0.000
0.000 0.000 0.000 -7.500 0.000 0.000
0 0 0 20 0 0
2
0.000 0.000 0.000 0.000 0.000 0.000
0 0 0 0 0 0
0
0.000 0.000 0.000 421.303 0.000 0.000
0 0 0 20 0 0
0.000 0.000 0.000 0.000 0.000 0.000
0 0 0 0 0 0
0.000 0.000 0.000 0.000 0.000 0.000
0.000 0.000 0.000 -50.512 0.000 0.000
0.000 -0.240 0.000 -25.256 0.000 0.000
0 20 0 20 0 0
7
0.000 0.000 0.000 0.000 0.000 0.000
0 0 0 0 0 0
0
0.000 0.000 0.000 -70.110 0.000 0.000
0 0 0 20 0 0
0.000 0.000 0.000 0.000 0.000 0.000
0 0 0 0 0 0
0.000 0.000 0.000 0.000 0.000 0.000
0.000 0.000 0.000 0.000 0.000 0.000
0.000 0.000 0.000 0.000 0.000 0.000
0 0 0 0 0 0
1
0.000 0.000 0.000 0.000 0.000 0.000
0 0 0 0 0 0
0
0.000 0.000 0.000 -46.533 0.000 0.000
0 0 0 20 0 0
0.000 0.000 0.000 0.000 0.000 0.000
0 0 0 0 0 0
0.000 0.000 0.000 0.000 0.000 0.000
0.000 0.000 0.000 0.000 0.000 0.000
0.000 0.000 0.000 0.000 0.000 0.000
0 0 0 0 0 0
1
0.000 0.000 0.000 0.000 0.000 0.000
0 0 0 0 0 0
0
0.000 0.000 0.000 -45.000 0.000 0.000
0 0 0 20 0 0
0.000 0.000 0.000 0.000 0.000 0.000
0 0 0 0 0 0
0.000 0.000 0.000 0.000 0.000 0.000
0.000 0.000 0.000 0.000 0.000 0.000
0.000 0.000 0.000 0.000 0.000 0.000
0 0 0 0 0 0
1
0.000 0.000 0.000 0.000 0.000 0.000
0 0 0 0 0 0
0
0.000 0.000 0.000 0.000 0.000 0.000
0 0 0 0 0 0
0.000 0.000 0.000 0.000 0.000 0.000
0 0 0 0 0 0
0.000 0.000 0.000 0.000 0.000 0.000
0.000 0.000 0.000 0.000 0.000 0.000
0.000 0.000 0.000 0.000 0.000 0.000
0 0 0 0 0 0
1
0.000 0.000 0.000 0.000 0.000 0.000
0 0 0 0 0 0
0
0.000 0.000 0.000 0.000 0.000 0.000
0 20 0 0 0 0
0.000 0.000 0.000 0.000 0.000 0.000
0 0 0 0 0 0
0.000 0.000 0.000 0.000 0.000 0.000
0 0 0 0 0 0
0.000 0.000 0.000 0.000 0.000 0.000
0 20 0 0 0 0
0.000 0.000 0.000 0.000 0.000 0.000
0 0 0 0 0 0
0.000 0.000 0.000 0.000 0.000 0.000
0 0 0 0 0 0
0.000 0.000 0.000 0.000 0.000 0.000
0 20 0 0 0 0
0.000 0.000 0.000 0.000 0.000 0.000
0 0 0 0 0 0
0.000 0.000 0.000 0.000 0.000 0.000
0 0 0 0 0 0
0.000 0.000 0.000 0.000 0.000 0.000
0 20 0 0 0 0
0.000 0.000 0.000 0.000 0.000 0.000
0 0 0 0 0 0
0.000 0.000 0.000 0.000 0.000 0.000
0 0 0 0 0 0
0.000 0.000 0.000 0.000 0.000 0.000
0 20 0 0 0 0
0.000 0.000 0.000 0.000 0.000 0.000
0 0 0 0 0 0
0.000 0.000 0.000 0.000 0.000 0.000
0 0 0 0 0 0
0.000 0.000 0.000 0.000 0.000 0.000
0 20 0 0 0 0
0.000 0.000 0.000 0.000 0.000 0.000
0 0 0 0 0 0
0.000 0.000 0.000 0.000 0.000 0.000
0 0 0 0 0 0
1 1 1 1
15.00000 2
0.500 2.500 2.475 2.550 30.000
0.000 0.00000
0.100 0.100 7.500 0.500
1 2 2 1
50.51161 7
0.500 2.500 2.475 2.550 30.000
0.000 0.00000
0.700 0.900 7.419 0.350
1 3 3 1
0.00000 1
0.000 0.000 5.260 0.000 30.000
0.000 10.00000
0.100 0.100 7.500 0.500
1 3 3 1
0.00000 1
0.500 2.500 2.475 2.550 30.000
4.000 25.00000
0.100 0.100 7.500 0.500
0 0 5 1
0.00000 1
0.500 2.500 2.475 2.550 30.000
0.000 0.00000
0.100 0.100 7.500 0.500
0 0 6 1
0.00000 1
0.500 2.500 2.475 2.550 30.000
0.000 0.00000
0.100 0.100 7.500 0.500
Приложение Г
Текст файлов связи с пакетом 3D моделирования:
(create_workplane :new)
(bspline_int
0.00000,-49.48300 :tangent -90.00000 //точки сплайна
0.00139,-49.51831 :tangent -85.50000
0.00554,-49.55340 :tangent -81.00000
0.01243,-49.58805 :tangent -76.50000
0.02202,-49.62206 :tangent -72.00000
0.03425,-49.65521 :tangent -67.50000
0.04905,-49.68730 :tangent -63.00000
0.06631,-49.71812 :tangent -58.50000
0.08594,-49.74750 :tangent -54.00000
0.10782,-49.77525 :tangent -49.50000
0.13180,-49.80120 :tangent -45.00000
0.15775,-49.82518 :tangent -40.50000
0.18550,-49.84706 :tangent -36.00000
0.21488,-49.86669 :tangent -31.50000
0.24570,-49.88395 :tangent -27.00000
0.27779,-49.89875 :tangent -22.50000
0.31094,-49.91098 :tangent -18.00000
0.34495,-49.92057 :tangent -13.50000
0.37960,-49.92746 :tangent -9.00000
0.41469,-49.93161 :tangent -4.50000
0.45000,-49.93300 :tangent 0.00000
0.90280,-49.93300 :tangent 0.00000
1.35560,-49.93300 :tangent 0.00000
1.80840,-49.93300 :tangent 0.00000
2.26120,-49.93300 :tangent 0.00000
2.71400,-49.93300 :tangent 0.00000
3.16680,-49.93300 :tangent 0.00000
3.61960,-49.93300 :tangent 0.00000
4.07240,-49.93300 :tangent 0.00000
4.52520,-49.93300 :tangent 0.00000
4.97800,-49.93300 :tangent 0.00000
5.43080,-49.93300 :tangent 0.00000
5.88360,-49.93300 :tangent 0.00000
6.33640,-49.93300 :tangent 0.00000
6.78920,-49.93300 :tangent 0.00000
7.24200,-49.93300 :tangent 0.00000
7.69480,-49.93300 :tangent 0.00000
8.14760,-49.93300 :tangent 0.00000
8.60040,-49.93300 :tangent 0.00000
9.05320,-49.93300 :tangent 0.00000
9.50600,-49.93300 :tangent 0.00000
9.52169,-49.93238 :tangent 4.50000
9.53729,-49.93054 :tangent 9.00000
9.55269,-49.92747 :tangent 13.50000
9.56780,-49.92321 :tangent 18.00000
9.58254,-49.91778 :tangent 22.50000
9.59680,-49.91120 :tangent 27.00000
9.61050,-49.90353 :tangent 31.50000
9.62356,-49.89480 :tangent 36.00000
9.63589,-49.88508 :tangent 40.50000
9.64742,-49.87442 :tangent 45.00000
9.65808,-49.86289 :tangent 49.50000
9.66780,-49.85056 :tangent 54.00000
9.67653,-49.83750 :tangent 58.50000
9.68420,-49.82380 :tangent 63.00000
9.69078,-49.80954 :tangent 67.50000
9.69621,-49.79480 :tangent 72.00000
9.70047,-49.77969 :tangent 76.50000
9.70354,-49.76429 :tangent 81.00000
9.70538,-49.74869 :tangent 85.50000
9.70600,-49.73300 :tangent 90.00000
)
(polygon 0.00000,-49.48300 0.00000,0.00000 9.70600,0.00000 9.70600,-49.73300)
(rotate_2d :select :start :all_2d :select_done :angle -90.0)
( turn :sel_part "/Krug" :keep_wp :yes :keep_profile :no :axis :v :rotation_angle 360.0)
(define_feature :selection :start :selected_part "/Krug" :spline_sf :all_3d :select_done)
(create_assembly)
(change_pa_owner :new_owner "/a1" :parts_assemblies :start "/Krug" :select_done)
(position_pa :part_assembly :start "/a1" :select_done :rotate :axis :x :rotation_angle -90.0 :done :translate :y 50.65266000 :rotate :axis :y :rotation_angle -0.00000000)
(position_pa :part_assembly :start "/a1" :select_done :translate :x 40.00000000)
(position_pa :part_assembly :start "/a1" :select_done :translate :z 0.85300000)
(position_pa :part_assembly "/a1/Krug" :rotate :axis :two_pta 40.00000000,0.71966000,0.85300000 40.00000000,50.65266000,0.85300000 :rotation_angle -0.20000000)
(create_multiple_pa :copy :source "/a1/Krug")
(remove_from_vp_drawlist "vport1" :with-wp "/a1/Krug" )
(remove_from_vp_drawlist "vport1" :with-wp "/a1/Krug.1" )
( delete_3d "/w1")
Приложение Д
Текст управляющей программы ЧПУ:
%_N_CIP6\Emul\Bdd\9013_MPF
;$PATH=/_N_WKS_DIR/_N_CIP6\Emul\Bdd\9013_WPD
DEF INT OP1,OP2,OP3,OP4,OP5,OP6
OP1=1
OP2=1
OP3=1
OP4=1
OP5=1
OP6=1
IF OP1==1
Op_1
ENDIF
IF OP2==1
Op_2
ENDIF
IF OP3==1
Op_3
ENDIF
IF OP4==1
Op_4
ENDIF
IF OP5==1
Op_5
ENDIF
IF OP6==1
Op_6
ENDIF
M10 M19
M02
%_N_NACH_UST_SPF
;$PATH=/_N_WKS_DIR/_N_CIP6\Emul\Bdd\9013_WPD
G01 G90 Y176.080 F5000 G09
G01 G90 A=0 F5000 G09
G01 G90 B=0 F5000 G09
G01 G90 Z=0 F5000 G09
G01 G90 X-496.007 F5000 G09
G01 G90 C=0 F5000 G09
M17
%_N_Op_1_SPF
;$PATH=/_N_WKS_DIR/_N_CIP6\Emul\Bdd\9013_WPD
;======= Канавка =======
EXTERN GLAV_DVIG_Op1(INT,REAL)
EXTERN OTVOD_Op1(INT)
EXTERN PRIPUSK_Op1(INT,INT)
EXTERN CYCLOBR_Op1(INT)
EXTERN VIX_Op1
DEF REAL X_KOR,Z_KOR,B_KOR,A_KOR,Y_KOR,C_KOR
DEF REAL NZ_FI[3],FPR[4]
DEF INT NZ_ACT[3]
DEF INT I_1,I_2
R306=0
MSG(" ")
NACH_UST
Коррекция:
X_KOR=0;
Z_KOR=0;
B_KOR=0;
A_KOR=0;
Y_KOR=0;
C_KOR=0;
Подвод:
DISPOUT_Op1
G01 G91 X= 405.225+X_KOR G09 F=5000
DISPOUT_Op1
G01 G91 Z=-193.959+Z_KOR G09 F=5000
DISPOUT_Op1
G01 G91 B= 0.200+B_KOR G09 F=5000
DISPOUT_Op1
G01 G91 Y=-125.427+Y_KOR G09 F=5000
DISPOUT_Op1
G01 G91 A= -0.000+A_KOR G09 F=5000
DISPOUT_Op1
G01 G91 C= 0.000+C_KOR G09 F=5000
Перемещения гл. движения:
R298= 93.499;X
R299= 0.000;Y
R300= -0.326;Z
R301= 0.000;A
; ПОЛОЖЕНИЕ ЗУБЬЕВ
; У Г О Л Акт.зуб
NZ_FI[1]= 0.000 NZ_ACT[1]=1
NZ_FI[2]= 180.000 NZ_ACT[2]=1
; П Р И П У С К И
; 1проход Подача 2проход Подача 3проход Подача
R213=0.000 R231= 20 R219=0.000 R237= 0 R225=0.000 R243= 0 ;Y
FPR[1]=R231
FPR[2]=R237
FPR[3]=R243
; ЦИКЛИЧЕСКАЯ ОБРАБОТКА
; СТАРТ Экстрем. ФИНИШ Подача
R264= 0.000 R270= -7.500 R276= -15.000 R282= 20 ;A
R260=2;Кол-во циклов обработки
; О Б Р А Б О Т К А
R306=0
FOR I_1=1 TO 3
R307=0
IF FPR[I_1]>0
PRIPUSK_Op1(I_1,1)
FOR I_2=1 TO 2
DISPOUT_Op1
G01 G91 A=NZ_FI[I_2] F=5000
IF NZ_ACT[I_2]==1
R308=I_2
CYCLOBR_Op1(R260,FPR[I_1])
ENDIF
ENDFOR
DISPOUT_Op1
G01 G91 A=360-NZ_FI[2] F=5000
PRIPUSK_Op1(I_1,-1)
ENDIF
ENDFOR
M17
%_N_GLAV_DVIG_Op1_SPF
;$PATH=/_N_WKS_DIR/_N_CIP6\Emul\Bdd\9013_WPD
PROC GLAV_DVIG_Op1(INT NAPR,REAL FGLDV)
DISPOUT_OP1
G01 G91 X=NAPR*R298 Z=NAPR*R300 F=FGLDV
M17
%_N_PRIPUSK_Op1_SPF
;$PATH=/_N_WKS_DIR/_N_CIP6\Emul\Bdd\9013_WPD
PROC PRIPUSK_Op1(INT NUM_PR,INT NAPR_PR, REAL FPR)
IF (NUM_PR==1) AND (FPR>0)
R307=NUM_PR
DISPOUT_Op1
G01 G91 Y=NAPR_PR*R213 F=200
ENDIF
IF (NUM_PR==2) AND (FPR>0)
R307=NUM_PR
DISPOUT_Op1
G01 G91 Y=NAPR_PR*R219 F=200
ENDIF
IF (NUM_PR==3) AND (FPR>0)
R307=NUM_PR
DISPOUT_Op1
G01 G91 Y=NAPR_PR*R225 F=200
ENDIF
M17
%_N_OTVOD_Op1_SPF
;$PATH=/_N_WKS_DIR/_N_CIP6\Emul\Bdd\9013_WPD
PROC OTVOD_Op1(INT NAPR_OTV)
M17
%_N_CYCLOBR_Op1_SPF
;$PATH=/_N_WKS_DIR/_N_CIP6\Emul\Bdd\9013_WPD
PROC CYCLOBR_Op1(INT N_CYCL,REAL FPR)
EXTERN GLAV_DVIG_Op1(INT,REAL)
EXTERN OTVOD_Op1(INT)
DEF INT I_1,I_2
DEF REAL STEP1,STEP2
FOR I_1=1 TO N_CYCL
R309=I_1
IF R282>0
IF N_CYCL==2
G01 G91 A=(I_1-1)*(R276-R264)
ENDIF
IF N_CYCL>2
STEP1=2*(R270-R264)/(N_CYCL-1)
STEP2=2*(R276-R270)/(N_CYCL-1)
I_2=ROUND((N_CYCL-1)/2)
IF I_1<=I_2
IF I_1>1
G01 G91 A=STEP1
ENDIF
ENDIF
IF I_1>I_2
G01 G91 A=STEP2
ENDIF
ENDIF
ENDIF
GLAV_DVIG_Op1(1,FPR)
OTVOD_Op1(1)
GLAV_DVIG_Op1(-1,500)
OTVOD_Op1(-1)
ENDFOR
IF R282>0
DISPOUT_OP1
G01 G91 A=-(R276-R264) F=R282
ENDIF
M17
%_N_DISPOUT_Op1_SPF
;$PATH=/_N_WKS_DIR/_N_CIP6\Emul\Bdd\9013_WPD
R306=R306+1
MSG (" Поз. N " <<R306<< " Прип.N " <<R307<< " Зуб.N " <<R308<< "Цикл.N " <<R309)
M17
%_N_Op_2_SPF
;$PATH=/_N_WKS_DIR/_N_CIP6\Emul\Bdd\9013_WPD
;======= Затылок =======
EXTERN GLAV_DVIG_Op2(INT,REAL)
EXTERN OTVOD_Op2(INT)
EXTERN PRIPUSK_Op2(INT,INT)
EXTERN CYCLOBR_Op2(INT)
EXTERN VIX_Op2
DEF REAL X_KOR,Z_KOR,B_KOR,A_KOR,Y_KOR,C_KOR
DEF REAL NZ_FI[3],FPR[4]
DEF INT NZ_ACT[3]
DEF INT I_1,I_2
R306=0
MSG(" ")
NACH_UST
Коррекция:
X_KOR=0;
Z_KOR=0;
B_KOR=0;
A_KOR=0;
Y_KOR=0;
C_KOR=0;
Подвод:
DISPOUT_Op2
G01 G91 X= 405.341+X_KOR G09 F=5000
DISPOUT_Op2
G01 G91 Z=-186.986+Z_KOR G09 F=5000
DISPOUT_Op2
G01 G91 B= 1.000+B_KOR G09 F=5000
DISPOUT_Op2
G01 G91 Y=-120.985+Y_KOR G09 F=5000
DISPOUT_Op2
G01 G91 A= 0.000+A_KOR G09 F=5000
DISPOUT_Op2
G01 G91 C= 0.000+C_KOR G09 F=5000
Перемещения гл. движения:
R298= 86.987;X
R299= -0.026;Y
R300= -1.518;Z
R301= 0.000;A
; ПОЛОЖЕНИЕ ЗУБЬЕВ
; У Г О Л Акт.зуб
NZ_FI[1]= 0.000 NZ_ACT[1]=1
NZ_FI[2]= 180.000 NZ_ACT[2]=1
; ДОПОЛНИТЕЛЬНЫЕ СМЕЩЕНИЯ
; Смещение Подача
R203= 421.303 R209= 20 ;A
; П Р И П У С К И
; 1проход Подача 2проход Подача 3проход Подача
R213=0.000 R231= 20 R219=0.000 R237= 0 R225=0.000 R243= 0 ;Y
FPR[1]=R231
FPR[2]=R237
FPR[3]=R243
; ЦИКЛИЧЕСКАЯ ОБРАБОТКА
; СТАРТ Экстрем. ФИНИШ Подача
R262= 0.000 R268= -0.240 R274= 0.000 R280= 20 ;Y
R264= 0.000 R270= -25.256 R276= -50.512 R282= 20 ;A
R260=7;Кол-во циклов обработки
; О Б Р А Б О Т К А
R306=0
DOPSM_Op2
FOR I_1=1 TO 3
R307=0
IF FPR[I_1]>0
PRIPUSK_Op2(I_1,1)
FOR I_2=1 TO 2
DISPOUT_Op2
G01 G91 A=NZ_FI[I_2] F=5000
IF NZ_ACT[I_2]==1
R308=I_2
CYCLOBR_Op2(R260,FPR[I_1])
ENDIF
ENDFOR
DISPOUT_Op2
G01 G91 A=360-NZ_FI[2] F=5000
PRIPUSK_Op2(I_1,-1)
ENDIF
ENDFOR
M17
%_N_GLAV_DVIG_Op2_SPF
;$PATH=/_N_WKS_DIR/_N_CIP6\Emul\Bdd\9013_WPD
PROC GLAV_DVIG_Op2(INT NAPR,REAL FGLDV)
DISPOUT_OP2
G01 G91 X=NAPR*R298 Y=NAPR*R299 Z=NAPR*R300 F=FGLDV
M17
%_N_DOPSM_Op2_SPF
;$PATH=/_N_WKS_DIR/_N_CIP6\Emul\Bdd\9013_WPD
PROC DOPSM_Op2
IF R209>0
DISPOUT_Op2
G01 G91 A=R203 F=R209
ENDIF
M17
%_N_PRIPUSK_Op2_SPF
;$PATH=/_N_WKS_DIR/_N_CIP6\Emul\Bdd\9013_WPD
PROC PRIPUSK_Op2(INT NUM_PR,INT NAPR_PR, REAL FPR)
IF (NUM_PR==1) AND (FPR>0)
R307=NUM_PR
DISPOUT_Op2
G01 G91 Y=NAPR_PR*R213 F=200
ENDIF
IF (NUM_PR==2) AND (FPR>0)
R307=NUM_PR
DISPOUT_Op2
G01 G91 Y=NAPR_PR*R219 F=200
ENDIF
IF (NUM_PR==3) AND (FPR>0)
R307=NUM_PR
DISPOUT_Op2
G01 G91 Y=NAPR_PR*R225 F=200
ENDIF
M17
%_N_OTVOD_Op2_SPF
;$PATH=/_N_WKS_DIR/_N_CIP6\Emul\Bdd\9013_WPD
PROC OTVOD_Op2(INT NAPR_OTV)
M17
%_N_CYCLOBR_Op2_SPF
;$PATH=/_N_WKS_DIR/_N_CIP6\Emul\Bdd\9013_WPD
PROC CYCLOBR_Op2(INT N_CYCL,REAL FPR)
EXTERN GLAV_DVIG_Op2(INT,REAL)
EXTERN OTVOD_Op2(INT)
DEF INT I_1,I_2
DEF REAL STEP1,STEP2
FOR I_1=1 TO N_CYCL
R309=I_1
IF R280>0
IF N_CYCL==2
G01 G91 Y=(I_1-1)*(R274-R262)
ENDIF
IF N_CYCL>2
STEP1=2*(R268-R262)/(N_CYCL-1)
STEP2=2*(R274-R268)/(N_CYCL-1)
I_2=ROUND((N_CYCL-1)/2)
IF I_1<=I_2
IF I_1>1
G01 G91 Y=STEP1
ENDIF
ENDIF
IF I_1>I_2
G01 G91 Y=STEP2
ENDIF
ENDIF
ENDIF
IF R282>0
IF N_CYCL==2
G01 G91 A=(I_1-1)*(R276-R264)
ENDIF
IF N_CYCL>2
STEP1=2*(R270-R264)/(N_CYCL-1)
STEP2=2*(R276-R270)/(N_CYCL-1)
I_2=ROUND((N_CYCL-1)/2)
IF I_1<=I_2
IF I_1>1
G01 G91 A=STEP1
ENDIF
ENDIF
IF I_1>I_2
G01 G91 A=STEP2
ENDIF
ENDIF
ENDIF
GLAV_DVIG_Op2(1,FPR)
OTVOD_Op2(1)
GLAV_DVIG_Op2(-1,500)
OTVOD_Op2(-1)
ENDFOR
IF R280>0
DISPOUT_OP2
G01 G91 Y=-(R274-R262) F=R280
ENDIF
IF R282>0
DISPOUT_OP2
G01 G91 A=-(R276-R264) F=R282
ENDIF
M17
%_N_DISPOUT_Op2_SPF
;$PATH=/_N_WKS_DIR/_N_CIP6\Emul\Bdd\9013_WPD
R306=R306+1
MSG (" Поз. N " <<R306<< " Прип.N " <<R307<< " Зуб.N " <<R308<< "Цикл.N " <<R309)
M17
... и станции механизма уравновешивания, л/мин Г48–83 10…45 10…30 26 2.4 Техническое описание УЧПУ 2Р22 Назначение Устройство числового программного управления 2Р22 предназначено для управления металлообрабатывающими станками. По защищенности от воздействия окружающей среды, устройство предназначено для работы в механических цехах машиностроительных заводов в ...
... -экономическое сравнение двух вариантов технологического процесса На основе информации, предоставленной в базовом и предлагаемом вариантах технологических процессов, осуществляем их технико-экономическое сравнение, руководствуясь методикой, изложенной в пособии [51, с.95-120] Механическая обработка детали типа «Фланец» переводится с горизонтально-фрезерного станка 6Р82 на фрезерный станок с ЧПУ ...
... полномочий. Оперативность структуры означает возможность реакции системы на изменения обстановки, временные показатели этой реакции и ее цену. Типичным примером организации как сложной системы является производственно-экономическая система (ПЭС). Основным видом производственно-экономических систем является предприятие. Приведем, применительно к промышленному предприятию, некоторые необходимые ...
... позволяющих вести такое программирование []. Компьютерные УЧПУ к этим станкам содержат ПО, включающее 3D CAD / CAM систему, систему автопрограммирования и систему автотехнолога. Комбинация технологии и программного обеспечения позволяет УЧПУ напрямую использовать геометрическое определение детали как программу и исключает этап постпроцессора в цикле работ по подготовке станочных УП. Модель в 3D ...
0 комментариев