Системы сбора данных и оперативного диспетчерского управления, страница 12

  if (Ch = 0) and (Ch1 = 1) then  

' Если сменился канал, то обнулить переменную счетчик

' и сбросить таймер.

    outputi 7,1                                                     

    F = 1                                                             

    C = 0                                                             

  end if                                                               

end if

if Ch0 = 1 then                                                  

  Ch = 0                                                             

' Сохранение номера активного канала в виртуальном

' тэге.

end if                                                                 

if Ch1 = 1 then                                                  

  Ch = 1                                                             

end if                                                              

B = 0

' Сбросить признак начала исполнения стратегии

if F = 1 then 

  C = C + 1     

' Выполнение паузы

  outputi 0,0 

  outputi 1,0 

 else

  outputi 0,Ch0

  outputi 1,Ch1

end if

if (F = 1) and (C >= Ti) then

  F = 0                              

' Пауза закончена

end if

End Sub

При этом рекомендуется в предварительном сценарии обнулить виртуальные тэги “Count” и “Flag”, а  “Begin” установить в единицу.

Задание
1.  Загрузите файл стратегии upr1.gni и познакомтесь со схемой управления в режиме эмуляции.

2.  Загрузите файл стратегии upr1_!.gni., найдите отличие ее от предыдущей. Запустите стратегию и проанализируйте ее работу .

6.6 Лабораторная работа №6. Регулирование вращения двигателя в функции времени

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

В основу задачи (рисунок 54) положен “Блок бейсик-сценария” (SCR1) и два таймера: один считает время вращения (ET1), второй время паузы (ET2). Виртуальный тэг “DO”, принимающий значения 0 и 1, показывает состояние одного дискретного управляющего канала, состояние же второго управляющего канала вычисляется по первому путем применения логической операции “Not”.

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

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

Функция “Блока бейсик-сценария” (SCR2) состоит в защите двигателя от появления высокого уровня сигнала на обоих управляющих выходах. “Блок ТЭГ” (BBTN1) связан с кнопкой «Сигналы на двигатель» формы отображения, которая, будучи в ненажатом состояние блокирует передачу сигналов на блок дискретного ввода-вывода.

Рисунок 54 - Окно редактора задач

На форму отображения (рисунок -55) выведены два индикатора, отображающие состояние таймеров и инкрементные регуляторы, передающие в стратегию значения продолжительности вращения и паузы (в 0,1 сек). Кроме того, там представлены  циклограмма  и индикаторы направлния вращения .

Рисунок 55 - Форма отображения

Текст “Блока бейсик-сценария” (SCR1):

Sub SCR1()

dim T1 as Tag

dim T2 as Tag

dim N1 as Tag

dim N2 as Tag

dim F as Tag

dim D as Tag

dim P as Tag

set T1 = GetTag("TASK1","ET1")

' Таймер времени вращения двигателя

set T2 = GetTag("TASK1","ET2")

' Таймер паузы

set N1 = GetTag("DISP1","NCTL1")

' Значение времени вращения

set N2 = GetTag("DISP1","NCTL2")

' Значение времени паузы

set F = GetTag("VIRTASK","FLAG")

set D = GetTag("VIRTASK","DO")

' Номер канала на котором в данный момент высокий

' уровень дискретного сигнала: 0 - первый; 1 - второй

set P = GetTag("VIRTASK","PAUSE")

' Признак паузы

outputi 0,0

outputi 1,0

' Сигнал на счет таймерам

F = 0

if P = 0 then

  outputi 1,1

' если не пауза, то сброс таймера паузы

  if (T1 >= N1) then

    F = 1

          outputi 1,1

          P = 1

          outputi 7,0

' время вращения закончилось: сброс первого таймера,

' установка признака паузы и блокирование управляющих

' сигналов с 7-го выхода

    if D = 0 then

            D = 1

     else

            D = 0

    end if

' Смена номера активного канала

  end if

end if

if (P = 1) and (F = 0) then

  outputi 0,1

' если пауза, то сброс таймера движения

  if (T2 >= N2) then

    outputi 0,1

    outputi 7,1

          P = 0

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

' сброс признака паузы и разблокирование с 7-го

' выхода управляющих сигналов

  end if

end if

End Sub

Виртуальные тэги “Flag” и “DO” должны быть обнулены в предварительном сценарии, а “Pause” установлен в единицу.

Задание

1.  Загрузите файл стратегии upr2.gni и познакомтесь со схемой управления в режиме эмуляции.

2.  Загрузите файл стратегииupr2_!.gni., найдите отличие ее от предыдущей. Запустите стратегию и проанализируйте ее работу .

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

6.7 Лабораторная работа № 7. Широтно-импульсный модулятор