- •1. Системы плк b&r
- •2. Аппаратное обеспечение лабораторных работ
- •3. Структурная схема плк
- •4. Модуль центрального процессора
- •4.1. Технические данные
- •4.2. Светодиодный индикатор состояния цп
- •4.3. Функции тестирования и обработки ошибок
- •4.5. Математические подпрограммы
- •5. Основные понятия
- •6. Техника программирования
- •6.1. Структура программы на stl
- •6.2. Особенности программирования плк
- •6.2.1. Цикл программы
- •6.2.2. Подпрограмма инициализации, флаг первого сканирования
- •6.2.3. Временные функции
- •6.2.4. Формирование фронта сигнала
- •6.2.5. Последовательности шагов
- •7. Лестничные логические диаграммы
- •7.1. Компоненты для поддержки lad
- •7.2. Основные понятия lad
- •7.3. Этапы работы с lad
- •7.3.1. Запуск Системы Программирования prosys
- •7.3.2. Создание lad с помощью редактора
- •7.3.3. Компиляция созданной lad в stl-представление
- •7.3.4. Загрузка полученного кода в плк
- •7.3.5. Отладка lad
- •7.4. Основы программирования в терминах lad
- •7.4.1. Наиболее часто встречающиеся ошибки
- •197376, С.-Петербург, ул. Проф. Попова, 5
6.2.4. Формирование фронта сигнала
В большинстве логических операций обрабатывается только изменение входного сигнала - фронта. Имеются несколько программных возможностей, чтобы реализовать такое формирование фронта. Все варианты имеют общую особенность: каждое распознавание фронта требует собственную 1-битную ячейку памяти для промежуточного хранения последнего состояния. Наиболее оптимальное решение для положительного фронта, т.е. изменения от 0 до 1, следующее:
LDAA N I 000
PRS F 010
EORA F 010
RST F 010
I 000... адрес контролируемого входа
F 010...адрес 1-битной памяти, не изменяемой в программе
После этих четырех программных строк в AA имеется 1, если входное значение изменяется от 0 до 1 (появляется положительный фронт). Иначе содержимое AA равно 0.
Следующий пример позволяет реализовать двухсекундную задержку включения от момента нажатия кнопки старта:
T00 002"00 инициализация временного интервала
программного таймера 0 в 2 с
LDAA N I 000 положительный фронт кнопки старта
PRS F 000 положительный фронт
EORA F 000 положительный фронт
RST F 000 положительный фронт ( да ... AA=1 )
PRS S D00 да установить флаг запуска таймера
LDAA I 001 действует аварийное выключение?
RST S D00 да очистить флаг запуска таймера
LDAA T D00 программное время вышло (T D00 =1)?
STAA O 0F0 да установить выход
END
Решение для отрицательного фронта, т.е. изменения от 1 до 0, реализуется следующим образом:
LDAA I 000
PRS F 010
EORA F 010
RST F 010
6.2.5. Последовательности шагов
Рис.6.1
В последовательности шагов может быть реализовано максимум 86 шагов. При проектировании последовательности шагов необходимо сначала записать функции и выходные условия для каждого шага. Шаг выполняется до тех пор, пока выполняется выходное условие. Потом либо производится переход на следующий шаг (с помощью инкрементирования номера шага), либо на заданный (через установку номера шага на другое значение).
Переменная = 0 ... выполняется программная часть 0
Переменная = 1 ... выполняется программная часть 1
...
Переменная = 85 ... выполняется программная часть 85
В STL задатчик последовательности шагов реализуется следующим образом.
8-битная ячейка памяти содержит номер шага; если используется ячейка памяти, которая очищается при сбросе (R 0000 - R 0019), то последовательность шагов начинается с шага 0 после сброса. Однако если была использована одна из других
8-битных ячеек памяти, то последовательность шагов начнется после сброса с точки, в которой она была прервана. Отдельный шаг реализуется так, как изображено на блок-схеме, приведенной на рис.6.2.
Рис.6.2
S1 ...
... любая часть программы
LDAA YYY условие выхода
BEQ R1 возврат, если условие выхода не выполняется
... подготовка к следующему шагу (выполняется один раз)
INC R XXX увеличение номера шага
R1 RTS
Необходимое ветвление к отдельным шагам, зависящее от номера, выполняется с помощью подпрограммы SSEQ (переключатель шагов):
SSEQ LDAB # 003 загрузить длину команды
MUL вычислить смещение
PULX загрузить из стека адрес возврата
PSHX восстановить стек
ABX установить индексный регистр
JMP X 003 перейти со смещением 3
Шаги могут быть вызваны из основной программы в качестве подпрограмм:
LDAA R 0001 номер шага
JSR SSEQ вызов переключателя шагов
JMP EXIT продолжение при EXIT
JMP S0 шаг 0
JMP S1 шаг 1
...
JMP Sn шаг n
...
EXIT NOP
Отдельные шаги обрабатываются как подпрограммы, т.е. они заканчиваются командой RTS. S0 выполняется, если регистр шагов равен 0; S1, - если он равен 1, и т.д. После выполнения соответствующего шага программа переходит на метку EXIT.