Счетчик часов работы Step7

Краткое описание

Данная программа-пример служит для того, чтобы определять длительность работы привода (тормоза, автоматы, и т.д.). Предпосылкой к этому является то, что при работающем приводе на вход E0.0 подается сигнал 24В, а при стоящем двигателе напряжение отсутствует.

Появление сигнала запускает счет времени, а при отсутствии сигнала счет времени прерывается пока сигнал не появится снова. Число сосчитанных часов заносится в слово данных VW0, минуты в слово данных VW2, а секунды ы слово данных VW4.

 

Структура программы

 

 

Описание программы

Цикл программы начинается с опроса состояния входа E0.0. Если логическое состояние ‘1’, то вызывается Подпрограмма 1. В Подпрограмме 1 таймер T5 (задержка включения с запоминанием) устанавливается на одну секунду. По прошествии этой секунды устанавливается бит таймера ‘T5’, а значение слова меркеров MW4 для значения секунд увеличивается на 1. Для того чтобы при этом при следующем цикле таймер снова мог быть запущен, бит таймера ‘T5’ сбрасывается.

Если меркер секунд достигает значения 60, то меркер минут MW2 повышается на 1, а меркер секунд MW4 снова сбрасывается в ноль. (Знак ‘>‘ служит здесь для повышения надежности).

Если меркер минут достигает значения 60, то он сбрасывается в ноль, а слово данных VW0, работающее как память для прошедших часов, увеличивается на 1. Кроме того меркер минут MW2 копируется в слово данных VW2 для текущего значения минут, а меркер секунд MW4 в слово данных VW4 для текущего значения секунд. На этом работа подпрограммы завершается.

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

Размер программы составляет 41 слово.

 

Основная программа

// TITEL= СЧЕТЧИК ЧАСОВ РАБОТЫ

LD E0.0 // Время работы

// входа E0.0 будет

// измерено

CALL 1

MOVB VB5, AB0// Выдача теста

MEND // Конец программы

 

Подпрограмма

SBR 1 // Начало подпрограммы

// измерений

LD SM0.0 // Установка начала стека

TONR T5,10 // Задание времени

// тацмера: 100мсек *

// 10 = 1 сек

LD T5 // По прошествии

// одной секунды

INCW VW4 // меркер такта

// секунд

// инкрементируется

R T5,1 // Сброс бита таймера

LDW>= VW4,60 // Через 60 сек

INCW VW2 // инкрементируется

// меркер минут

MOVW 0, VW4 // Меркер секунд

// сбрасывается

LDW>= VW2,60 // Через 60 минут

INCW VW0 // значение часов в VW0

// инкрементируется

MOVW 0, VW2 // Меркер минут

// сбрасывается

RET // Конец подпрограммы