Скачиваний:
66
Добавлен:
19.06.2015
Размер:
201.34 Кб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНСТВО ПО ОБРАЗОВАНИЮ

Государственное образовательное учреждение высшего профессионального образования

«Санкт-Петербургский государственный электротехнический университет «ЛЭТИ» им.В. И. Ульянова (Ленина)» (СПбГЭТУ)

Кафедра ИИСТ

Отчёт по курсовому проекту по дисциплине

«Локальные ИВС».

Часть 2.Разработка канала для измерения температуры на базе ПЛК

Санкт – Петербург

201 год

  1. Общие сведения

Цель работы: создать макет программируемого измерительного канала, построенного на основе терморезистора, рассчитанного в первой части задания.

Структурная схема канала:

,где ПЛК – программируемый логический контроллер, R – магазин сопротивлений, АЦП – аналогово-цифровой преобразователь.

  1. Блок-схема алгоритма

  1. Листинг основных блоков и описание алгоритма программы.

Программа состоит из

  • Основного блока программы PLC_PRG

  • Функционального блока WAIT

  • Функции DAC

Основная программа PLC_PRG написана на языке SFC. Представлена на рисунке 1. Состоит из трех шагов:

  1. DAC_T – на этом этапе программа считывает код N полученный на выходе модуля WAGO 750-461(модуль преобразует входное значение сопротивления, поступающего с магазина сопротивлений, в код. Функциональная зависимость сопротивления от температуры в модуле реализована для датчика Pt100 с диапазоном измерений

от -200 до 850ºС.) Далее полученный код преобразуем в значение температуры.

  1. Raschet_T – на данном этапе рассчитывается значение температуры Ti для терморезистора 100П который был дан в задании по формуле Ti=T-T.

где Т находиться по функциональной зависимости Т(Т). Также на этом этапе значение температуры Тi переводиться в двоично-десятичную систему исчисления.

  1. Indikator – на данном шаге реализуется вывод полученного значения температуры на индикаторы.

Между первым и вторым шагом реализована временная задержка длительностью 1.5с. между вторым и третьим 1с. После прохождения третьего шага программа возвращается в шагу один.

Рисунок. 1

Листинг шага DAC_T:

T:=DAC(N:=%QW0); вызов функции DAC с входной переменной N равной значению поступающего с адреса QW0. Выходное значение записывается в переменную Т.

DELAY(TIME_IN:=T#1.5S); вызов функционального блока WAIT с входной переменной равной 1.5с. реализует временную задержку.

Листинг шага Raschet_T:

Tr:=EXPT(T,3)*(-7.96397635704612E-07)+EXPT(T,2)*8.19711679331176E-04+T*0.0827091037732954+0.0307998433827986; расчет T

TI:=INT_TO_REAL(REAL_TO_INT(T-Tr)); рассчитываем и округляем значение TI

IF TI>=-75 AND TI<=100 THEN проверка входит ли измеряемая величина в диапозон измерений.

IF Tr<0 THEN

I0:=TRUE; бит отвечающий за отрицательные числа(=1 когда число отрицательно.

TI:=ABS(TI); модуль TI

ELSE

I0:=FALSE;

END_IF

I1:=INT_TO_BYTE(TRUNC(TI/100)); находим значение сотой части

Tr:=TI-I1*100;

I2:=INT_TO_BYTE(TRUNC(TI/10)); находим значение десятой части

Tr:=TI-I2*10;

I3:=INT_TO_BYTE(TRUNC(TI)); находим значение единичной части

ELSE

I1:=9; если значение температуры выходит из диапазона измерений выводим на индикаторе значение 999.

I2:=9;

I3:=9;

END_IF

DELAY(TIME_IN:=T#1S); вызов функционального блока WAIT с входной переменной равной 1с. реализует временную задержку

Листинг шага Indikator:

Im:=ROL(I2,4); переменная Im типа байт содержит значение единичной

Im:=Im OR I3; и десятой доли значения температуры

Is:=I1; переменная Is типа байт содержит значение сотой доли значения температуры

Is.5:=I0; а также знак.

Листинг функционального блока WAIT

IF ZAB.Q=TRUE THEN

ZAB();

ELSE

ZAB(IN:=FALSE);

ZAB.PT:=TIME_IN;

ZAB(IN:=TRUE);

END_IF

OK:=NOT ZAB.Q;

RETURN;

Сначала проверяется значение Q. Если значение переменной Q уже равно TRUE (т.е. счетчик уже запущен), то в этом случае вызывается блок ZAB, чтобы проверить истек или нет период таймера. В другом случае значение переменной IN в ZAB устанавливается равным FALSE, и поэтому ET равен 0 и Q равен FALSE. В этом случае все переменные устанавливаются в начальное состояние. Затем устанавливается значение временной задержки ZAB.PT равным значению параметра TIME_IN. Далее вызывается ZAB со значением переменной IN равной FALSE. В функциональном блоке ZAB переменная ET вычисляется до тех пор, пока не достигнет значения TIME, а затем Q будет установлен в состояние FALSE.

Листинг функции DAC:

IF N>16#2134 THEN

N:=NOT(N)+1;

DAC:=-(WORD_TO_REAL(N)*0.1);

ELSE

DAC:=WORD_TO_REAL(N)*0.1;

END_IF

Преобразуем значение кода N типа WORD в значение температуры типа REAL. Функциональная зависимость температуры от кода было взято из документации модуля WAGO 750-761.

Выводы:

В данной работе была спроектирована и собрана модель канала для измерения температуры посредством терморезистора.

Модуль WAGO 750-461 рассчитан на датчик терморезистор Pt100, была произведена коррекция полученных результатов с модуля под характеристики и функциональные зависимости датчика данного в условии задания.

Результаты измерительного канала удовлетворяют требованиям по точности.

Помимо программной индикации реализована двоично-десятичная индикация с использованием портов дискретного вывода.

Соседние файлы в папке ЛИВС Курсовая