Функции передачи данных в STL
Во всех операциях передачи данных используется аккумулятор – специальный регистр в процессоре, который выполняет функции промежуточного буфера.
Направление, в котором происходит передача данных, указывается в используемой для передаче инструкции.
Функция загрузки составляется из оператора L (код операции загрузки) и константы, переменной или адреса с идентификатором адреса, содержимое которого функция будет загружать в аккумулятор 1.
Примеры:
L +1500 Загрузка константы;
L IW 32 Загрузка слова с прямой адресацией;
L Actval Загрузка переменной (символьная адресация).
CPU выполняет функцию загрузки независимо от результата логической операции RLO и бита состояния. Функция загрузки не влияет на результат логической операции и не влияет на биты состояния. При загрузке адреса, константы или переменной в аккумулятор 1 текущее содержимое аккумулятора 1 пересылается в аккумулятор 2. Предыдущее содержимое аккумулятора 2 при этом теряется.
Функция выгрузки составляется из оператора T и адреса в области памяти, по которому данные должны быть отправлены из аккумулятора 1.
Примеры:
T MW120; переносит содержимое аккумулятора в область памяти меркеров (байты 120 и 121), то есть абсолютная адресация
T Setpoint; переносит содержимое аккумулятора в переменную (символьная адресация)
CPU выполняет функцию выгрузки независимо от результата логической операции RLO и бита состояния. Функция выгрузки не влияет на результат логической операции и не влияет на биты состояния.
Функция выгрузки пересылает содержимое аккумулятора 1 по одному байту, слову, или двойному слову. При этом содержимое аккумулятора 1 остается неизменным (копируется), что позволяет многократно пересылать данные из аккумулятора 1.
Для одновременной обработки двух численных значений нужны два промежуточных буфера. В роле таких буферов выступают аккумулятор 1 и аккумулятор 2. Все CPU имеют такие специальные регистры. Кроме того, CPU S7-400 имеют два дополнительных промежуточных буфера – аккумулятор 3 и аккумулятор 4, которые используются преимущественно в арифметических операциях.
Каждый аккумулятор содержит 32 разряда, тогда как все области памяти имеют байтовую структуру. Обмен информацией между областями памяти и аккумулятором 1 может происходить побайтно, по 1 машинному слову и по 1 двойному машинному слову.
В операциях пересылки могут принимать участие:
IB входной байт;
IW входное слово;
ID входное двойное слово;
QB выходной байт;
QW выходное слово;
QD выходное двойное слово;
MB байт меркеров;
MW слово меркеров;
MD двойное слово меркеров;
LB байт локальных данных;
LW слово локальных данных;
LD двойное слово локальных данных;
DBB байт глобальных данных;
DBW слово глобальных данных;
DBD двойное слово глобальных данных;
DIB байт в экземплярном DB;
DIW слово в экземплярном DB;
DID двойное слово в экземплярном DB;
STW слово состояния.
Функции аккумуляторов позволяют пересылать значение с одного аккумулятора в другой или перемещать байты внутри аккумулятора 1. К функциям аккумуляторов принадлежат:
PUSH Сдвиг содержимого аккумулятора "вперед";
POP Сдвиг содержимого аккумулятора "назад";
TAK Обмен содержимым между аккумуляторами 1 и 2;
ENT Сдвиг содержимого аккумулятора "вперед" (без аккумулятора 1);
LEAVE Сдвиг содержимого аккумулятора "назад" (без аккумулятора 1)
Первые три функции PUSH, POP и TAK используются в CPU, которые имеют только два аккумулятора (S7-300 CPU). Все пять функций используются в CPU, которые имеют четыре аккумулятора (S7-400 CPU).
Функции обмена байтами в аккумуляторе 1:
CAW меняет местами два байта в младшем слове аккумулятора 1. При этом байты старшего слова аккумулятора остаются неизменными.
CAD меняет местами все байты в аккумуляторе 1. При этом самый старший байт становится самым младшим по номеру, а средние два байты меняются местами.
Для пересылки данных применяются также системные функции SFC 20 BLKMOV (копирование области данных), SFC 21 FILL (вставка данных в область назначения) и SFC 81 UBLKMOV (беспрерывное копирование области данных).
Дата добавления: 2016-12-09; просмотров: 3240;