Автоматические промышленные средства для испытаний полимеров на ползучесть

Автор работы: Пользователь скрыл имя, 03 Октября 2017 в 14:59, курсовая работа

Описание работы

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

Файлы: 1 файл

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ.docx

— 640.35 Кб (Скачать файл)

8. Автоматизация процессов управления испытаниями и обработки результатов

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

Микропроцессор используется в автоматизированной измерительной цепи для построения вычислительных систем, предназначенных для обработки и преобразования информации. Информация в микропроцессорной системе представлена в различных видах: данные, адреса, команды. Микропроцессорная система – цифровая система, включающая массив программируемых счетчиков (PCA).

В состав PCA входят:

• 16-разрядный таймер-счетчик;

• 5 шестнадцатиразрядных модуля выборки и сравнения, каждый из которых связан со своей линией порта ввода-вывода микроконтроллера.

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

• 16-битная выборка значения таймера по положительному фронту внешнего сигнала;

• 16-битная выборка значения таймера по отрицательному фронту внешнего сигнала;

• 16-битная выборка значения таймера по любому фронту внешнего сигнала;

• 16-битный программный таймер;

• 16-битное устройство скоростного вывода (HSO);

• 8-битный ШИМ.

На нашем устройстве установлена микросхема, изображенная на рисунке. Она является 16 канальной, нам необходимо 2 канала из них.

Для калибровки нашего тензорезисторного датчика, необходима программа обработки данных.

 

 

 

 

Программа калибровки

#define STAT 0 x 309  /* Регистр состояния макетной платы */

#define CNTRL 0 x 30C /* Управляющий регистр макетной платы */

#define ADC 0 х 308   /* АЦП: адрес и данные */

#definе STRTAD 0 х 30А /* Регистр запуска преобразования */                                #include <strig.h>

main ( )

{

int adc0, adc50, adcx, slope, sila;

char с = 0;

outp(CNTRL, 1);        /* Установка второго  бита в управляющем регистре */

   /* для разрешения  запуска программы преобразования */                                           outp(ADC, 1):           /*  Выбор канала 1 */                                                                                    

protocol();                                                                                                                                             

cprintf(«Калибровка 1; Задать нагрузку 0 кН. \n»);                             cprintf(«Чepeз 10 минут нажмите любую клавишу. \п»);

while(!kbhil( ));           /* Ждать нажатия клавиши */

adc0 = get_data( )               /* Получить данные от АЦП */

                                             /* для нагрузки 0 кН */

 

cprintf(«Калибровка 2; Задать нагрузку 50 кН. \n»);                         cprintf(«Чepeз 10 минут нажмите любую клавишу. \п»);

while(!kbhit( ));                /* Ждать нажатия клавиши */

adc50 = get_data( );                 /* Получить данные от АЦП */

                                                   /* для нагрузки 50 кН */

 

slope = 50/(adc0 — adc50); /• Расчет коэффициента линейной */

                                                  /* зависимости силы от нагрузки */

 

cprintf (* Нажмите любую клавишу для отсчета силы. \n»);

 

cprjntf (* Нажмите е для выхода из программы. \n»);

 

cprjntf (* Выполнить поверку датчика. \n»);

while(c! --- 'е'); /* Повторять, пока не нажата клавиша е */

{

if (kbhit ( )               /* Отсчет силы

, если нажата любая  клавиша */

{

adcx = get_data( );

sila = slope*(adcx — adc0); /* Расчет силы*/                 

cprintf(«Сила = кНd\n», sila);                                                                                     с = getch;

        }

    }

}

 

 

get_data( )

{

int datum;

outp(STRTAD);             /* Запуск преобразования */

 



whiIe(!(inp(STAT)&2));          /* Ждать завершения преобразования */                                 datum = inp(ADC);                                                                                                                        return (datum);

}

 

main1 ( )

{

int adc0, adc5, adcx, slope, napr;

char с = 0;

outp(CNTRL, 1);        /* Установка второго  бита в управляющем регистре */

   /* для разрешения  запуска программы преобразования */                                           outp(ADC, 1):           /*  Выбор канала 2 */                                                                                    

protocol();                                                                                                                                             

cprintf(«Калибровка 1; Задать перемещение 0мм концевыми мерами. \n»);                             cprintf(«Чepeз 10 секунд нажмите любую клавишу. \п»);

while(!kbhil( ));           /* Ждать нажатия клавиши */

adc0 = get_data( )               /* Получить данные от АЦП */

                                             /* для перемещения 0 мм */

 

cprintf(«Калибровка 2; Задать перемещение 5 мм концевыми мерами. \n»);                         cprintf(«Чepeз 10 секунд нажмите любую клавишу. \п»);

while(!kbhit( ));                /* Ждать нажатия клавиши */

adc5 = get_data( );                 /* Получить данные от АЦП */

                                                   /* для перемещения 5 мм */

 

slope = 5/(adc0 — adc5); /• Расчет коэффициента линейной */

                                        /* зависимости напряжения от перемещения по ОZ */

 

cprintf (* Нажмите любую клавишу для отсчета перемещения. \n»);

 

cprjntf (* Нажмите е для выхода из программы. \n»);

 

cprjntf (* Выполнить поверку датчика. \n»);

while(c! --- 'е'); /* Повторять, пока не нажата клавиша е */

{

if (kbhit ( )               /* Отсчет перемещения

, если нажата любая  клавиша */

{

adcx = get_data( );

napr = slope*(adcx — adc0); /* Расчет перемещения*/                          cprintf(«Напряжение = Вd\n», per);                                                                                     с = getch;

        }

    }

}

 

 

get_data( )

{

int datum;

outp(STRTAD);             /* Запуск преобразования */

 



whiIe(!(inp(STAT)&2));          /* Ждать завершения преобразования */                                 datum = inp(ADC);                                                                                                                        return (datum);

}

 

 

main1 ( )

{

int adc0, adc1, adcx, slope, napr;

char с = 0;

outp(CNTRL, 1);        /* Установка второго  бита в управляющем регистре */

   /* для разрешения  запуска программы преобразования */                                           outp(ADC, 1):           /*  Выбор канала 3 */                                                                                    

protocol();                                                                                                                                             

cprintf(«Калибровка 1; Задать перемещение 0мм концевыми мерами. \n»);                             cprintf(«Чepeз 10 секунд нажмите любую клавишу. \п»);

while(!kbhil( ));           /* Ждать нажатия клавиши */

adc0 = get_data( )               /* Получить данные от АЦП */

                                             /* для перемещения 0 мм */

 

cprintf(«Калибровка 2; Задать перемещение 1 мм концевыми мерами. \n»);                         cprintf(«Чepeз 10 секунд нажмите любую клавишу. \п»);

while(!kbhit( ));                /* Ждать нажатия клавиши */

adc1 = get_data( );                 /* Получить данные от АЦП */

                                                   /* для перемещения 1 мм */

 

slope = 1/(adc0 — adc1); /• Расчет коэффициента линейной */

                                        /* зависимости напряжения от перемещения по ОY */

 

cprintf (* Нажмите любую клавишу для отсчета перемещения. \n»);

 

cprjntf (* Нажмите е для выхода из программы. \n»);

 

cprjntf (* Выполнить поверку датчика. \n»);

while(c! --- 'е'); /* Повторять, пока не нажата клавиша е */

{

if (kbhit ( )               /* Отсчет перемещения

, если нажата любая  клавиша */

{

adcx = get_data( );

napr = slope*(adcx — adc0); /* Расчет перемещения*/                          cprintf(«Напряжение = Вd\n», per);                                                                                     с = getch;

        }

    }

}

 

 

get_data( )

{

int datum;

outp(STRTAD);             /* Запуск преобразования */

 



whiIe(!(inp(STAT)&2));          /* Ждать завершения преобразования */                                 datum = inp(ADC);                                                                                                                        return (datum);

}

 

main1 ( )

{

int adc0, adc1, adcx, slope, napr;

char с = 0;

outp(CNTRL, 1);        /* Установка второго  бита в управляющем регистре */

   /* для разрешения  запуска программы преобразования */                                           outp(ADC, 1):           /*  Выбор канала 4 */                                                                                    

protocol();                                                                                                                                             

cprintf(«Калибровка 1; Задать перемещение 0мм концевыми мерами. \n»);                             cprintf(«Чepeз 10 секунд нажмите любую клавишу. \п»);

while(!kbhil( ));           /* Ждать нажатия клавиши */

adc0 = get_data( )               /* Получить данные от АЦП */

                                             /* для перемещения 0 мм */

 

cprintf(«Калибровка 2; Задать перемещение 1 мм. \n»);                         cprintf(«Чepeз 10 секунд нажмите любую клавишу. \п»);

while(!kbhit( ));                /* Ждать нажатия клавиши */

adc1 = get_data( );                 /* Получить данные от АЦП */

                                                   /* для перемещения 1 мм */

 

slope = 1/(adc0 — adc1); /• Расчет коэффициента линейной */

                                        /* зависимости напряжения от перемещения по ОX */

 

cprintf (* Нажмите любую клавишу для отсчета перемещения. \n»);

 

cprjntf (* Нажмите е для выхода из программы. \n»);

 

cprjntf (* Выполнить поверку датчика. \n»);

while(c! --- 'е'); /* Повторять, пока не нажата клавиша е */

{

if (kbhit ( )               /* Отсчет перемещения

, если нажата любая  клавиша */

{

adcx = get_data( );

napr = slope*(adcx — adc0); /* Расчет перемещения*/                          cprintf(«Напряжение = Вd\n», per);                                                                                     с = getch;

        }

    }

}

 

 

get_data( )

{

int datum;

outp(STRTAD);             /* Запуск преобразования */

 



whiIe(!(inp(STAT)&2));          /* Ждать завершения преобразования */                                 datum = inp(ADC);                                                                                                                        return (datum);

}

 

 

 

protocol()

{

char s1,s2,s3,s4;

 

gets (s1);            /* Протокол № 1 */

puts (s1);

cprintf((«Протокол №1» s1 «\n»);

 

gets (s2);            /* Название поверяемого датчика его тип ХХХХ */

puts (s2);

 

cprintf((«Прибор для испытания полимеров на ползучесть УТС » s2 «\n»);

 

gets (s3);            /* Дата  ХХ, месяц ХХ, год ХХХХ */

puts (s3);

 

cprintf((«Дата испытаний:» s3 «\n»);

 

gets (s4);            /* Выполнил(а): Фамилия, Имя, Отчество*/

puts (s4);

 

cprintf((«Выполнила» s4 «\n»);

 

return ;

}

9. Применение управляюших ЭВМ при испытаниях материалов (АРМ)

В связи с развитием производства микроЭВМ целесообразно задачи обработки измерительной информации осуществлять с их помощью, обеспечив сопряжение выходного сигнала ИП со входом микроЭВМ. Решение указанных задач обработки измерительной информации имеет свои особенности: оптимизацию вычислительных процессов по точности и быстродействию, выбор технических средств в соответствии с реализуемыми алгоритмами (для простых алгоритмов - это функциональные преобразователи, для более сложных - специализированные процессоры и ЭВМ).

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

Информация о работе Автоматические промышленные средства для испытаний полимеров на ползучесть