Руководство пользователя контроллера DL06. Номер руководства D0-06USER-M-RUS - 24

 

  Главная      Учебники - Разные     Руководство пользователя контроллера DL06. Номер руководства D0-06USER-M-RUS (часть 1)

 

поиск по сайту            правообладателям  

 

 

 

 

 

 

 

 

 

 

 

содержание      ..     22      23      24      25     ..

 

 

 

Руководство пользователя контроллера DL06. Номер руководства D0-06USER-M-RUS - 24

 

 

Глава

 5: 

Стандартные

 

команды

 RLL. 

5—157

 

» 

 

 

В

 

следующем

 

примере

, 

когда

 X1 

включен

, 

константа

 (K6) 

загружается

 

в

 

аккумулятор

, 

используя

 

команду

 Load. 

Это

 

значение

 

определяет

 

длину

 

таблицы

 

и

 

помещается

 

в

 

первый

 

уровень

 

стека

 

после

 

того

, 

как

 

команда

 Load 

Address 

будет

 

выполнена

. 

Восьмеричный

 

адрес

 1400 (V1400) - 

начальная

 

ячейка

 

для

 

исходной

 

таблицы

 – 

загружается

 

в

 

аккумулятор

. 

Помните

, V1400 

используется

 

как

 

ячейка

 

указателя

, 

и

, 

фактически

, 

не

 

часть

 

таблицы

 

как

 

источника

 

данных

. 

Адрес

 

ячейки

 (V1500) 

определен

 

в

 Source To Table. 

Указатель

 

таблицы

 

будет

 

увеличен

 

на

 “1” 

после

 

каждого

 

выполнения

 

команды

. 

 

 

Важно

 

понять

, 

как

 

пронумерованы

 

ячейки

 

таблицы

. 

Если

 

Вы

 

рассмотрите

 

таблицу

 

в

 

примере

, 

вы

 

увидите

, 

что

 

первая

 

ячейка

 

данных

, 

V1401, 

будет

 

использоваться

, 

когда

 

указатель

 

равен

 

нулю

, 

и

 

снова

, 

когда

 

указатель

 

равен

 

шести

. 

Почему

? 

Потому

, 

что

 

указатель

 

равен

 

нулю

 

только

 

перед

 

самим

 

первым

 

выполнением

. 

В

 

дальнейшем

, 

он

 

увеличивается

 

от

 

одного

 

до

 

шести

, 

и

 

затем

 

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

 

в

 

единицу

. 

 

Наш

 

пример

, 

также

 

использует

 

нормально

-

открытый

 

входной

 

контакт

 (X1), 

чтобы

 

управлять

 

выполнением

 

команды

. 

Так

 

как

 

цикл

 

сканирования

 

процессора

 

совершается

 

за

 

минимальное

 

время

, 

то

 

и

 

автоматическое

 

увеличение

 

указателя

 

таблицы

 

в

 

цикле

 

произойдет

 

очень

 

быстро

. 

Если

 

такое

 

положение

 

вещей

 

является

 

для

 

Вас

 

проблемой

, 

то

 

воспользуйтесь

 

командой

 

одиночного

 

импульса

 

(PD), 

чтобы

 

переместить

 

только

 

одно

 

значение

, 

каждый

 

раз

, 

когда

 

входной

 

в

 

контакт

 

переходит

 

из

 

состояния

 

выключено

 

в

 

состояние

 

включено

. 

 

 

5—158

 

Глава

 5: 

Стандартные

 

команды

 RLL.

 

» 

 

 

На

 

следующем

 

рисунке

 

показаны

 

результаты

 

выполнения

 

нашего

 

примера

 

программы

 

в

 

каждом

 

цикле

. 

Обратите

 

внимание

, 

как

 

указатель

 

автоматически

 

изменяется

 

в

 

цикле

 

от

 0 

до

 6, 

и

 

затем

, 

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

 

в

 1 

вместо

 0. 

Также

, 

обратите

 

внимание

, 

что

 SP56 

включается

 

только

 

при

 

окончании

 

цикла

. 

Хотя

 

наш

 

пример

 

не

 

показывает

 

этого

, 

но

 

мы

 

предполагаем

, 

что

 

имеется

 

другая

 

часть

 

программы

, 

которая

 

изменяет

 

значение

 

в

 V1500 (

источник

 

данных

) 

до

 

выполнения

 STT 

инструкции

. 

Это

 

выполнять

 

не

 

обязательно

, 

но

 

при

 

этом

 

легче

 

показать

 

процедуру

 

копирования

 

источника

 

данных

 

в

 

таблицу

. 

 

 

Глава

 5: 

Стандартные

 

команды

 RLL. 

5—159

 

» 

 

Remove from Table (RFT) 

 

Команда

 Remove From Table 

удаляет

 

значение

 

из

 

таблицы

 V-

памяти

 

и

 

сохраняет

 

его

 

в

 

ячейке

 V-

памяти

. 

Когда

 

значение

 

удалено

 

из

 

таблицы

, 

то

 

все

 

остальные

 

значения

 

перемещаются

 

вверх

 

на

 

1 

ячейку

. 

Первая

 

ячейка

 V-

памяти

 

в

 

таблице

 

содержит

 

счетчик

 

длины

 

таблицы

. 

Каждый

 

раз

 

при

 

выполнении

 

команды

 

этот

 

счетчик

 

уменьшается

 

на

 1. 

Если

 

счетчик

 

длины

 

равен

 

нулю

 

или

 

больше

 

максимальной

 

длины

 

таблицы

 

(

определенной

 

в

 

первом

 

уровне

 

стека

) 

команда

  

не

 

выполняется

, 

и

 SP56 

будет

 

включен

.

 

 

Команда

 

выполняется

, 

только

, 

если

 

в

 

данном

 

цикле

 

сканирования

 

вход

 

включен

. 

Функциональные

 

параметры

 

загружаются

 

в

 

первый

 

уровень

 

стека

 

и

 

аккумулятор

 

двумя

 

дополнительными

 

командами

. 

Ниже

 

перечислены

 

шаги

, 

необходимые

 

для

 

использования

 

команды

 Remove From Table.

 

 

Шаг

 1:—

 

Загрузите

 

длину

 

таблицы

 (

число

 

ячеек

 V-

памяти

) 

в

 

первый

 

уровень

 

стека

 

аккумулятора

. 

Этот

 

параметр

 

должен

 

быть

 

шестнадцатиричным

 

числом

 

в

 

пределах

 

от

 0 

до

 FF. 

Шаг

 2:—

 

Загрузите

 

начальный

 

адрес

 

ячейки

 V-

памяти

 

для

 

таблицы

 

в

 

аккумулятор

  (

помните

, 

что

 

начальная

 

ячейка

 

используется

 

как

 

указатель

 

таблицы

). 

Этот

 

параметр

 

должен

 

быть

 

шестнадцатиричным

 

числом

. 

Шаг

 3:—

 

Вставьте

 

команду

 RFT, 

которая

 

определяет

 

адрес

 

ячейки

 V-

памяти

 

(Vaaa). 

Эта

 

ячейка

 

памяти

 

куда

 

будет

 

удалено

 

значение

. 

Полезный

 

совет

: — 

Вы

 

можете

 

использовать

 

команду

 LDA 

для

 

преобразования

 

восьмиричного

 

адреса

 

в

 

шестнадцатиричный

 

и

 

загрузки

 

его

 

в

 

аккумулятор

. 

Полезный

 

совет

: —

 

Инструкция

 

будет

 

выполнятся

 

каждый

 

цикл

 

сканирования

, 

если

 

входная

 

логика

 

включена

. 

Если

 

Вы

 

не

 

хотите

, 

чтобы

  

команда

 

выполнялась

 

более

 

чем

 

один

 

цикл

 

сканирования

, 

используйте

  

команду

 

одиночного

 

импульса

 PD 

во

 

входной

 

логике

.

 

Полезный

 

совет

: —

 

Значение

 

счетчика

 

таблицы

 

должно

 

быть

 

установлено

 

в

 

значение

 

начальной

 

ячейки

 

для

 

работы

 

с

 

таблицей

. 

При

 

этом

, 

он

 

должен

 

быть

 

установлено

 

в

 

значение

, 

которое

 

находится

 

в

 

пределах

 

длины

 

таблицы

. 

Например

, 

если

 

длина

 

таблицы

 - 6 

слов

, 

то

 

допустимый

 

диапазон

 

значений

, 

которые

 

могли

 

бы

 

быть

 

в

 

указателе

 

между

 1 

и

 6. 

Если

 

значение

 

находится

 

за

 

границами

 

этого

 

диапазона

, 

данные

 

не

 

будут

 

перемещаться

. 

Также

, 

необходимо

 

использовать

 

команду

 

одиночного

 

импульса

 PD, 

в

 

этом

 

случае

 

значение

 

будет

 

установлено

 

только

 

в

 

первом

 

сканировании

 

и

 

будет

 

не

 

влиять

 

на

 

работу

 

команды

. 

 

Тип

 

данных

 

операнда

 

Диапазон

 DL06 

 A 

aaa 

V-

память

 

V 

Смотри

 

карту

 

памяти

 

 

Флаги

  

Описание

 

SP56 «1», 

когда

 

счетчик

 

таблицы

 

равен

 0. 

 

 

ПРИМЕЧАНИЕ

. 

Флаги

 

состояния

 (SP) 

не

 

только

 

допустимы

 

до

 

исполнения

 

другой

 

команды

, 

которая

 

использует

, 

те

 

же

 

самые

 

флаги

, 

или

 

конца

 

цикла

 

сканирования

, 

но

, 

и

 

указатель

 

для

 

данной

 

команды

 

должен

 

быть

 

установлен

 

до

 

начала

 

выполнения

. 

Указатель

 

не

 

устанавливается

 

автоматически

. 

Вы

 

должны

 

загрузить

 

значение

 

в

 

указатель

 

где

-

нибудь

 

в

 

вашей

 

программе

. 

 

5—160

 

Глава

 5: 

Стандартные

 

команды

 RLL.

 

» 

 

 

В

 

следующем

 

примере

, 

когда

 X1 

включен

, 

константа

 (K6) 

загружается

 

в

 

аккумулятор

, 

используя

 

команду

 Load. 

Это

 

значение

 

определяет

 

длину

 

таблицы

 

и

 

помещается

 

в

 

первый

 

уровень

 

стека

 

после

 

того

, 

как

 

команда

 Load 

Address 

будет

 

выполнена

. 

Восьмеричный

 

адрес

 1400 (V1400) - 

начальная

 

ячейка

 

для

 

исходной

 

таблицы

 – 

загружается

 

в

 

аккумулятор

. 

Помните

, V1400 

используется

 

как

 

ячейка

 

указателя

, 

и

, 

фактически

, 

не

 

часть

 

таблицы

 

как

 

источника

 

данных

. 

Адрес

 

ячейки

 (V1500) 

определен

 

в

 

команде

 Remove From 

Table. 

Указатель

 

таблицы

 (

в

 

этом

 

случае

 V1400) 

будет

 

уменьшен

 

на

 “1” 

после

 

каждого

 

выполнения

 

команды

. 

 

 

Так

 

как

 

счетчик

 

таблиц

 

определяет

 

диапазон

 

данных

, 

которые

 

будут

 

удалены

 

из

 

таблицы

, 

важно

 

понять

, 

как

 

пронумерованы

 

ячейки

 

таблицы

. 

Если

 

Вы

 

рассмотрите

 

таблицу

 

в

 

примере

, 

вы

 

увидите

, 

что

 

ячейки

 

пронумерованы

 

сверху

 

вниз

. 

Например

, 

если

 

счетчик

 

таблицы

, 

равен

 6, 

то

 

все

 

шесть

 

из

 

ячеек

 

будут

 

удалены

 

при

 

выполнения

 

команды

. 

 

 

Наш

 

пример

, 

также

 

использует

 

нормально

-

открытый

 

входной

 

контакт

 (X1), 

чтобы

 

управлять

 

выполнением

 

команды

. 

Так

 

как

 

цикл

 

сканирования

 

процессора

 

совершается

 

за

 

минимальное

 

время

, 

то

 

и

 

автоматическое

 

уменьшение

 

указателя

 

таблицы

 

в

 

цикле

 

произойдет

 

очень

 

быстро

. 

Если

 

такое

 

положение

 

вещей

 

является

 

для

 

Вас

 

проблемой

, 

то

 

воспользуйтесь

 

командой

 

одиночного

 

импульса

 (PD), 

чтобы

 

удалить

 

одно

 

значение

, 

каждый

 

раз

, 

когда

 

входной

 

в

 

контакт

 

переходит

 

из

 

состояния

 

выключено

 

в

 

состояние

 

включено

.

 

Глава

 5: 

Стандартные

 

команды

 RLL. 

5—161

 

» 

 

 

На

 

следующем

 

рисунке

 

показаны

 

результаты

 

выполнения

 

нашего

 

примера

 

программы

 

в

 

каждом

 

цикле

. 

В

 

нашем

 

примере

 

мы

 

показываем

 

счетчик

 

таблицы

 

первоначально

 

установленный

 

в

 4. (

Не

 

забудьте

, 

Вы

 

можете

 

устанавливать

 

счетчик

 

таблиц

 

в

 

любое

 

значение

 

в

 

пределах

 

длины

 

таблицы

.) 

Счетчик

 

таблицы

 

автоматически

 

уменьшается

 

от

 4 

до

 0, 

при

 

выполнении

 

команды

. 

Обратите

 

внимание

, 

как

 

последние

 

две

 

ячейки

 

таблицы

, 5 

и

 6, 

не

 

удаляются

 

из

 

таблицы

. 

Также

, 

обратите

 

внимание

, 

что

 SP56 

включается

 

только

 

при

 

счетчике

 

таблице

 

равном

 

нулю

, 

в

 

конце

 

сканирования

 

таблицы

.  

 

 

 

5—162

 

Глава

 5: 

Стандартные

 

команды

 RLL.

 

» 

 

Add to Top (ATT) 

 

Команда

 Add To Top 

сохраняет

 

значение

 

из

 

ячейки

 V-

памяти

 

в

 

таблицу

 V-

памяти

. 

Когда

 

значение

 

добавляется

 

в

 

таблицу

, 

то

 

все

 

остальные

 

значения

 

перемещаются

 

вниз

 

на

 1 

ячейку

. 

 

 

Команда

 

выполняется

, 

только

, 

если

 

в

 

данном

 

цикле

 

сканирования

 

вход

 

включен

. 

Функциональные

 

параметры

 

загружаются

 

в

 

первый

 

уровень

 

стека

 

и

 

аккумулятор

 

двумя

 

дополнительными

 

командами

. 

Ниже

 

перечислены

 

шаги

, 

необходимые

 

для

 

использования

 

команды

 Add To Top.

 

 

Шаг

 1:—

 

Загрузите

 

длину

 

таблицы

 (

число

 

ячеек

 V-

памяти

) 

в

 

первый

 

уровень

 

стека

 

аккумулятора

. 

Этот

 

параметр

 

должен

 

быть

 

шестнадцатиричным

 

числом

 

в

 

пределах

 

от

 0 

до

 FF. 

Шаг

 2:—

 

Загрузите

 

начальный

 

адрес

 

ячейки

 V-

памяти

 

для

 

таблицы

 

в

 

аккумулятор

  (

помните

, 

что

 

начальная

 

ячейка

 

используется

 

как

 

указатель

 

таблицы

). 

Этот

 

параметр

 

должен

 

быть

 

шестнадцатиричным

 

числом

. 

Шаг

 3:—

 

Вставьте

 

команду

 ATT, 

которая

 

определяет

 

адрес

 

ячейки

 V-

памяти

 

(Vaaa). 

Эта

 

ячейка

 

памяти

 

откуда

 

будет

 

вставлено

 

значение

. 

Полезный

 

совет

: —

 

Инструкция

 

будет

 

выполнятся

 

каждый

 

цикл

 

сканирования

, 

если

 

входная

 

логика

 

включена

. 

Если

 

Вы

 

не

 

хотите

, 

чтобы

  

команда

 

выполнялась

 

более

 

чем

 

один

 

цикл

 

сканирования

, 

используйте

  

команду

 

одиночного

 

импульса

 PD 

во

 

входной

 

логике

. 

Полезный

 

совет

: — 

Вы

 

можете

 

использовать

 

команду

 LDA 

для

 

преобразования

 

восьмиричного

 

адреса

 

в

 

шестнадцатиричный

 

и

 

загрузки

 

его

 

в

 

аккумулятор

. 

Полезный

 

совет

: —

 

Значение

 

счетчика

 

таблицы

 

должно

 

быть

 

установлено

 

в

 

значение

 

начальной

 

ячейки

 

для

 

работы

 

с

 

таблицей

. 

При

 

этом

, 

он

 

должен

 

быть

 

установлен

 

в

 

значение

, 

которое

 

находится

 

в

 

пределах

 

длины

 

таблицы

. 

Например

, 

если

 

длина

 

таблицы

 - 6 

слов

, 

то

 

допустимый

 

диапазон

 

значений

, 

которые

 

могли

 

бы

 

быть

 

в

 

указателе

 

между

 1 

и

 6. 

Если

 

значение

 

находится

 

за

 

границами

 

этого

 

диапазона

 

или

 

равно

 0, 

то

 

данные

 

не

 

будут

 

перемещаться

 

в

 

таблицу

. 

Также

, 

необходимо

 

использовать

 

команду

 

одиночного

 

импульса

 PD, 

в

 

этом

 

случае

 

значение

 

будет

 

установлено

 

только

 

в

 

первом

 

сканировании

 

и

 

не

 

будет

 

влиять

 

на

 

работу

 

команды

. 

 

Тип

 

данных

 

операнда

 

Диапазон

 DL06 

 A 

aaa 

V-

память

 

V 

Смотри

 

карту

 

памяти

 

 

Флаги

  

Описание

 

SP56 «1», 

когда

 

счетчик

 

таблицы

 

равен

 

длине

 

таблице

. 

 

 

ПРИМЕЧАНИЕ

. 

Флаги

 

состояния

 (SP) 

не

 

только

 

допустимы

 

до

 

исполнения

 

другой

 

команды

, 

которая

 

использует

, 

те

 

же

 

самые

 

флаги

, 

или

 

конца

 

цикла

 

сканирования

, 

но

, 

и

 

указатель

 

для

 

данной

 

команды

 

должен

 

быть

 

установлен

 

до

 

начала

 

выполнения

. 

Указатель

 

не

 

устанавливается

 

автоматически

. 

Вы

 

должны

 

загрузить

 

значение

 

в

 

указатель

 

где

-

нибудь

 

в

 

вашей

 

программе

. 

 

Глава

 5: 

Стандартные

 

команды

 RLL. 

5—163

 

» 

 

 

В

 

следующем

 

примере

, 

когда

 X1 

включен

, 

константа

 (K6) 

загружается

 

в

 

аккумулятор

, 

используя

 

команду

 Load. 

Это

 

значение

 

определяет

 

длину

 

таблицы

 

и

 

помещается

 

в

 

первый

 

уровень

 

стека

 

после

 

того

, 

как

 

команда

 Load 

Address 

будет

 

выполнена

. 

Восьмеричный

 

адрес

 1400 (V1400) - 

начальная

 

ячейка

 

для

 

исходной

 

таблицы

 

и

 

счетчик

 

таблицы

 – 

загружается

 

в

 

аккумулятор

. 

Адрес

 

ячейки

 (V1500) 

определен

 

в

 

команде

 Add To Top. 

Счетчик

 

таблицы

 

будет

 

увеличен

 

на

 “1” 

после

 

каждого

 

выполнения

 

команды

. 

 

 

Для

 

команды

 ATT, 

счетчик

 

таблиц

 

определяет

 

число

 

добавлений

, 

которые

 

могут

 

быть

 

сделаны

 

прежде

, 

чем

 

команда

 

остановит

 

свое

 

выполнение

. 

Поэтому

, 

полезно

 

понять

, 

как

 

система

 

использует

 

этот

 

счетчик

, 

чтобы

 

управлять

 

выполнением

 

команды

. 

 

Например

, 

если

 

счетчик

 

таблиц

 

был

 

установлен

 

в

 2, 

и

 

длина

 

таблицы

 

была

 

бы

 6 

слов

, 

то

 

возможно

 

произвести

 

только

 4 

добавления

 

данных

 

прежде

, 

чем

 

выполнение

 

будет

 

остановлено

. 

Это

 

можно

 

вычислить

 

по

 

формуле

:

 

 

 

Длина

 

таблицы

 - 

Счетчик

 

таблицы

 = 

Число

 

выполнений

 

 

 

Наш

 

пример

, 

также

 

использует

 

нормально

-

открытый

 

входной

 

контакт

 (X1), 

чтобы

 

управлять

 

выполнением

 

команды

. 

Так

 

как

 

цикл

 

сканирования

 

процессора

 

совершается

 

за

 

минимальное

 

время

, 

то

 

и

 

автоматическое

 

увеличение

 

счетчика

 

таблицы

 

в

 

цикле

 

произойдет

 

очень

 

быстро

. 

Если

 

такое

 

положение

 

вещей

 

является

 

для

 

Вас

 

проблемой

, 

то

 

воспользуйтесь

 

командой

 

одиночного

 

импульса

 (PD), 

чтобы

 

удалить

 

одно

 

значение

, 

каждый

 

раз

, 

когда

 

входной

 

в

 

контакт

 

переходит

 

из

 

состояния

 

выключено

 

в

 

состояние

 

включено

.

 

5—164

 

Глава

 5: 

Стандартные

 

команды

 RLL.

 

» 

 

 

На

 

следующем

 

рисунке

 

показаны

 

результаты

 

выполнения

 

нашего

 

примера

 

программы

 

в

 

каждом

 

цикле

. 

Счетчик

 

таблицы

 

первоначально

 

установленный

 

в

 2, 

автоматически

 

увеличивается

 

от

 2 

до

 6 

при

 

выполнении

 

команды

. 

Обратите

 

внимание

, 

что

 SP56 

включается

, 

когда

 

счетчик

 

таблицы

 

равен

 6, 

т

.

е

. 

равен

 

длине

 

таблице

. 

Хотя

 

наш

 

пример

 

не

 

показывает

 

этого

, 

но

 

мы

 

предполагаем

, 

что

 

имеется

 

другая

 

часть

 

программы

, 

которая

 

изменяет

 

значение

 

в

 V1500 (

источник

 

данных

) 

до

 

выполнения

 

команды

 

А

TT. 

 

 

 

Глава

 5: 

Стандартные

 

команды

 RLL. 

5—165

 

» 

 

Table Shift Left (TSHFL) 

 

Команда

 Table Shift Left 

сдвигает

 

все

 

биты

 

в

 

таблице

 V-

памяти

 

влево

, 

на

 

определенное

 

число

 

разрядов

.

 

Table Shift Right (TSHFR) 

 

Команда

 Table Shift Right 

сдвигает

 

все

 

биты

 

в

 

таблице

 V-

памяти

 

вправо

, 

на

 

определенное

 

число

 

разрядов

.

 

 

 

 

 

Следующее

 

описание

 

применяется

 

к

 

командам

, 

и

 Table Shift Left, 

и

 Table Shift 

Right. 

Таблица

 – 

это

 

только

 

диапазон

 

ячеек

 V-

памяти

. 

Команды

 Table Shift Left 

и

 Table Shift Right 

сдвигают

 

биты

 

последовательно

 

по

 

всей

 

таблице

. 

Биты

 

перемещаются

 

из

 

конец

 

одного

 

слова

 

и

 

в

 

противоположный

 

конец

 

следующего

 

слова

. 

В

 

конце

 

таблицы

, 

биты

 

или

 

отбрасываются

, 

или

 

устанавливаются

 

в

 

нули

. 

Пример

 

таблицы

 

приведенной

 

ниже

 

имеет

 

длину

 

четыре

 

слова

. 

 

 

Шаг

 1:—

 

Загрузите

 

длину

 

таблицы

 (

число

 

ячеек

 V-

памяти

) 

в

 

первый

 

уровень

 

стека

 

аккумулятора

. 

Этот

 

параметр

 

должен

 

быть

 

шестнадцатиричным

 

числом

 

в

 

пределах

 

от

 0 

до

 FF. 

Шаг

 2:—

 

Загрузите

 

начальный

 

адрес

 

ячейки

 V-

памяти

 

для

 

таблицы

 

в

 

аккумулятор

. 

Этот

 

параметр

 

должен

 

быть

 

шестнадцатиричным

 

числом

. 

Вы

 

можете

 

использовать

 

команду

 LDA, 

чтобы

 

преобразовать

 

восьмеричный

 

адрес

 

в

 

шестнадцатеричный

. 

Шаг

 3:—

 

Вставьте

 

команду

 Table Shift Left 

или

 Table shift Right, 

которая

 

определяет

 

число

 

бит

 

на

 

которое

 

производится

 

сдвиг

. 

Число

 

бит

 

должно

 

быть

 

в

 

восьмеричным

 

числом

. 

Полезный

 

совет

: —

 

Не

 

забудьте

, 

что

 

каждая

 

ячейка

 V-

памяти

 

содержит

 16 

бит

. 

Так

, 

биты

 

первого

 

слова

 

таблицы

 

пронумерованы

 

от

 0 

до

 17 

в

 

восьмеричном

 

виде

. 

Если

 

Вы

 

хотите

 

сдвинуть

 

всю

 

таблицу

 

на

 20 

бит

, 

то

 

используйте

 

восьмеричное

 

число

 24. SP53 

будет

 

установлен

, 

если

 

число

 

бит

, 

которые

 

будут

 

перемещены

 

большее

 

чем

 

общее

 

число

 

бит

, 

содержащееся

 

в

 

таблице

. 

Флаг

 67 

будет

 

установлен

, 

если

 

последний

 

перемещенный

 

бит

 

(

перед

 

отброшенным

) 

равен

 “1”. 

 

Тип

 

данных

 

операнда

 

Диапазон

 DL06 

 A 

aaa 

V-

память

 

V 

Смотри

 

карту

 

памяти

 

5—166

 

Глава

 5: 

Стандартные

 

команды

 RLL.

 

» 

 

Флаги

  

Описание

 

SP53 «1», 

когда

 

число

 

сдвигаемых

 

бит

 

больше

 

общего

 

числа

 

бит

 

таблицы

. 

SP67 «1», 

когда

 

последний

 

перемещенный

 

бит

 (

перед

 

отброшенным

) 

равен

 “1”. 

 

 

ПРИМЕЧАНИЕ

.

 

Флаги

 

состояния

 

действительны

 

только

 

до

 

того

 

момента

, 

когда

 

будет

 

выполнена

 

другая

 

команда

, 

использующая

 

те

 

же

 

самые

 

флаги

. 

 

 

Пример

 

таблицы

  c

права

 

содержит

 BCD 

данные

. 

Предположим

, 

что

 

мы

 

хотим

 

выполнить

 

сдвиг

 

таблицы

 

вправо

 

на

 3 BCD-

цифры

 (12 

бит

). 

При

 

преобразовании

 

к

 

восьмеричному

 12 

бит

 

равно

 

восьмеричному

 

числу

 14. 

При

 

использовании

 

команды

 Table Shift Right 

с

 

восьмеричным

 

параметром

 14, 

мы

 

имеем

 

возникающую

 

в

 

результате

 

таблицу

, 

показанную

 

правее

. 

Обратите

 

внимание

, 

что

 

последовательность

 

цифр

 2-3-4 

была

 

отброшена

, 

и

 

последовательность

 

цифр

 0-0-0 

была

 

записана

 

в

 

нижней

 

часте

 

таблице

. 

 

 

 

 

Следующий

 

пример

 

релейной

 

программы

 

предполагает

, 

что

 

данные

 

в

 

ячейках

 

от

 V3000 

до

 V3004 

уже

 

существуют

 

как

 

показано

 

выше

. 

Мы

 

используем

 

вход

 X0, 

чтобы

 

начать

 

работу

 

команды

 Table Shift Right. 

Сначала

, 

мы

 

загрузим

 

длину

 

таблицы

 (5 

слов

) 

в

 

стек

 

аккумулятора

. 

Затем

, 

мы

 

загружаем

 

в

 

аккумулятор

 

начальный

 

адрес

. 

Поскольку

 V3000 - 

восьмиричное

 

число

, 

то

 

мы

 

должны

 

преобразовать

 

его

 

в

 

шестнадцатеричное

,  

используя

 

команду

 LDA. 

В

 

заключение

, 

мы

 

используем

 

команду

 Table Shift Right 

и

 

определяем

 

число

 

бит

, 

на

 

которое

 

будут

 

смещены

 

данные

 (

десятичное

 

число

 

12), 

т

.

е

. 

восьмеричное

 

число

 14. 

 

Глава

 5: 

Стандартные

 

команды

 RLL. 

5—167

 

» 

 

AND Move (ANDMOV) 

 

Команда

 AND Move 

копирует

 

данные

 

из

 

таблицы

 

в

 

определенную

 

ячейку

 

памяти

, 

осуществляя

 

операцию

 

И

 

каждого

 

слова

 

с

 

данными

, 

записанными

 

в

 

аккумуляторе

.

 

OR Move (ORMOV) 

 

Команда

 Or Move 

копирует

 

данные

 

из

 

таблицы

 

в

 

определенную

 

ячейку

 

памяти

, 

осуществляя

 

операцию

 

ИЛИ

 

каждого

 

слова

 

с

 

данными

, 

записанными

 

в

 

аккумуляторе

.

 

Exclusive OR Move (XORMOV) 

 

Команда

 Or Move 

копирует

 

данные

 

из

 

таблицы

 

в

 

определенную

 

ячейку

 

памяти

, 

осуществляя

 

операцию

 

исключающего

 

ИЛИ

 

каждого

 

слова

 

с

 

данными

, 

записанными

 

в

 

аккумуляторе

.

 

 

Следующее

 

описание

 

применяется

 

к

 

командам

 AND Move, OR Move, 

и

 

Exclusive OR Move. 

Таблица

 – 

это

 

только

 

диапазон

 

ячеек

 V-

памяти

. 

Эти

 

команды

 

копируют

 

данные

 

таблицы

 

в

 

другую

 

указанную

 

ячейку

, 

предварительно

 

выполняя

 

логическую

 

операцию

 

над

 

каждым

 

словом

 

с

 

содержимым

 

аккумулятора

, 

записывая

 

новую

 

таблицу

. 

 

Шаг

 1:—

 

Загрузите

 

длину

 

таблицы

 (

число

 

ячеек

 V-

памяти

) 

в

 

первый

 

уровень

 

стека

 

аккумулятора

. 

Этот

 

параметр

 

должен

 

быть

 

шестнадцатиричным

 

числом

 

в

 

пределах

 

от

 0 

до

 FF. 

Шаг

 2:—

 

Загрузите

 

начальный

 

адрес

 

ячейки

 V-

памяти

 

для

 

таблицы

 

в

 

аккумулятор

. 

Этот

 

параметр

 

должен

 

быть

 

шестнадцатиричным

 

числом

. 

Вы

 

можете

 

использовать

 

команду

 LDA, 

чтобы

 

преобразовать

 

восьмеричный

 

адрес

 

в

 

шестнадцатеричный

. 

Шаг

 3:— 

Загрузите

 BCD/hex 

комбинацию

 

бит

 

в

 

аккумулятор

, 

которая

 

будет

 

логически

 

комбинироваться

 

с

 

записываемым

 

содержанием

 

таблицы

.

 

Шаг

 4:—

 

Вставьте

 

команду

 AND Move, OR Move, 

или

 XOR Move, 

которая

 

определяет

 

начальную

 

ячейку

 

в

 

которую

 

копируется

 

создаваемая

 

таблица

. 

Эта

 

новая

 

таблица

 

будет

 

автоматически

 

иметь

 

такую

 

же

 

длину

, 

как

 

и

 

первоначальная

 

таблица

. 

 

Тип

 

данных

 

операнда

 

Диапазон

 DL06 

 A 

aaa 

V-

память

 

V 

Смотри

 

карту

 

памяти

 

 

 

Пример

 

таблицы

  c

права

 

содержит

 BCD 

данные

. 

Предположим

, 

что

 

мы

 

хотим

 

переместить

 

таблицу

 

из

 

двух

 

слов

 

начиная

 

с

 V3000 

и

 

выполнить

 

операцию

 

И

 

с

 

константой

 K6666. 

Копия

 

таблицы

 

начиная

 

с

 V3100 

показывает

 

результат

 

операции

 

И

 

для

 

каждого

 

слова

.

 

 

Программа

 

на

 

следующей

 

странице

 

выполняет

 

команду

 ANDMOV 

в

 

примере

 

приведенном

 

выше

. 

Предположим

, 

что

 

данные

 

в

 

таблице

 V3000 - V3001 

уже

 

существуют

. 

Сначала

 

мы

 

загружаем

 

длину

 

таблицы

  (

два

 

слова

) 

в

 

аккумулятор

. 

Затем

 

мы

 

загружаем

 

начальный

 

адрес

 

исходной

 

таблицы

, 

используя

 

команду

 LDA. 

Затем

 

мы

 

загружаем

 

данные

, 

с

 

которыми

 

должна

 

выполнятся

 

операция

 

И

, 

в

 

аккумулятор

. 

В

 

команде

 ANDMOV, 

мы

 

определяем

 

адрес

 

таблицы

 

результата

 V3100. 

5—168

 

Глава

 5: 

Стандартные

 

команды

 RLL.

 

» 

 

 

Пример

 

справа

 

показывает

 

таблицу

 

из

 

двух

 

слов

 

начиная

 

с

 V3000 

и

 

и

 

выполнение

 

операции

 

ИЛИ

 

с

 

константой

 K8888. 

Копия

 

таблицы

 

начиная

 

с

 

V3100 

показывает

 

результат

 

операции

 

ИЛИ

 

для

 

каждого

 

слова

 

 

 

Программа

 

сверху

 

выполняет

 

команду

 ORMOV 

в

 

примере

 

приведенном

 

выше

. 

Предположим

, 

что

 

данные

 

в

 

таблице

 V3000 - V3001 

уже

 

существуют

. 

Сначала

 

мы

 

загружаем

 

длину

 

таблицы

 (

два

 

слова

) 

в

 

аккумулятор

. 

Затем

 

мы

 

загружаем

 

начальный

 

адрес

 

исходной

 

таблицы

, 

используя

 

команду

 LDA. 

Затем

 

мы

 

загружаем

 

данные

, 

с

 

которыми

 

должна

 

выполнятся

 

операция

 

ИЛИ

, 

в

 

аккумулятор

. 

В

 

команде

 ORMOV, 

мы

 

определяем

 

адрес

 

таблицы

 

результата

 

V3100. 

 

 

Пример

 

справа

 

показывает

 

таблицу

 

из

 

двух

 

слов

 

начиная

 

с

 V3000 

и

 

и

 

выполнение

 

операции

 

исключающего

 

ИЛИ

 

с

 

константой

 K3333. 

Копия

 

таблицы

 

начиная

 

с

 V3100 

показывает

 

результат

 

операции

 

исключающего

 

ИЛИ

 

для

 

каждого

 

слова

 

 

Пример

 

релейной

 

программы

 

для

 

команды

 XORMOV 

подобен

 

данному

 

выше

 

для

 ORMOV. 

Только

 

используйте

 

команду

 XORMOV. 

На

 

ручном

 

программаторе

. 

Вы

 

должны

 

использовать

 

клавишу

 SHFT 

и

 

записать

 

“XORMOV” 

по

 

буквам

. 

 

 

 

 

Глава

 5: 

Стандартные

 

команды

 RLL. 

5—169

 

» 

 

Find Block (FINDB) 

 

Команда

 Find Block 

выполняет

 

поиск

 

местонахождения

 

определенного

 

блока

 

значений

 

в

 

таблице

 V-

памяти

. 

Функциональные

 

параметры

 

загружены

 

в

 

первый

 

и

 

второй

 

уровни

 

стека

 

и

 

аккумулятор

 

тремя

 

дополнительными

 

командами

. 

Если

 

блок

 

найден

, 

начальный

 

адрес

 

будет

 

сохранен

 

в

 

аккумуляторе

. 

Если

 

блок

 

не

 

найден

, 

флаг

 SP53 

будет

 

установлен

. 

 

Тип

 

данных

 

операнда

 

Диапазон

 DL06 

 A 

aaa 

V-

память

 

V 

Смотри

 

карту

 

памяти

 

Указатель

 P 

Смотри

 

карту

 

памяти

 

 

Флаги

 

Описание

 

SP53

 

«1», 

когда

 

команда

 Find Block 

не

 

нашла

 

блок

 

в

 

указанной

 

таблице

 V-

памяти

. 

 

 

Ниже

 

показаны

 

необходимые

 

шаги

 

для

 

использования

 

функции

 Find Block.

 

Шаг

 1:— 

Загрузите

 

число

 

байт

 

располагаемых

 

в

 

блоке

. 

Этот

 

параметр

 

должен

 

быть

 

шестнадцатиричным

 

числом

 

в

 

пределах

 

от

 0 

до

 FF

 

Шаг

 2:—

 

Загрузите

 

длину

 

таблицы

 (

число

 

ячеек

 V-

памяти

) 

в

 

первый

 

уровень

 

стека

 

аккумулятора

. 

Этот

 

параметр

 

должен

 

быть

 

шестнадцатиричным

 

числом

 

в

 

пределах

 

от

 0 

до

 FF. 

Шаг

 3:—

 

Загрузите

 

конечный

 

адрес

 

для

 

всех

 

таблиц

 

в

 

аккумулятор

. 

Этот

 

параметр

 

должен

 

быть

 

шестнадцатиричным

 

числом

. 

Вы

 

можете

 

использовать

 

команду

 LDA, 

чтобы

 

преобразовать

 

восьмеричный

 

адрес

 

в

 

шестнадцатеричный

. 

Шаг

 4:—

 

Загрузите

 

начальный

 

адрес

 

для

 

всех

 

таблиц

 

в

 

аккумулятор

. 

Этот

 

параметр

 

должен

 

быть

 

шестнадцатиричным

 

числом

. 

Вы

 

можете

 

использовать

 

команду

 LDA, 

чтобы

 

преобразовать

 

восьмеричный

 

адрес

 

в

 

шестнадцатеричный

. 

Шаг

 5:—

 

Вставьте

 

команду

 Find Block, 

которая

 

определяет

 

начальную

 

ячейку

 

блока

 

данных

, 

для

 

попытки

 

поиска

. 

5—170

 

Глава

 5: 

Стандартные

 

команды

 RLL.

 

» 

 

Swap (SWAP) 

 

Команда

 Swap 

обменивает

 

данные

 

в

 

двух

 

таблицах

 

равной

 

длины

. 

 

 

Шаг

 1:—

 

Загрузите

 

длину

 

таблицы

 (

число

 

ячеек

 V-

памяти

) 

в

 

первый

 

уровень

 

стека

 

аккумулятора

. 

Этот

 

параметр

 

должен

 

быть

 

шестнадцатиричным

 

числом

 

в

 

пределах

 

от

 0 

до

 FF. 

Помните

, 

что

 

таблицы

 

должны

 

быть

 

одинаковой

 

длины

. 

Шаг

 2:—

 

Загрузите

 

начальный

 

адрес

 

ячейки

 V-

памяти

 

для

 

таблицы

 

в

 

аккумулятор

. 

Этот

 

параметр

 

должен

 

быть

 

шестнадцатиричным

 

числом

. 

Вы

 

можете

 

использовать

 

команду

 LDA 

для

 

конвертации

 

восьмиричного

 

адреса

 

в

 

шестнадцатиричное

 

число

. 

Шаг

 3:—

 

Вставьте

 

команду

 Swap, 

которая

 

определяет

 

начальный

 

адрес

 

второй

 

таблицы

 V-

памяти

. 

Этот

 

параметр

 

должен

 

быть

 

шестнадцатиричным

 

числом

. 

Вы

 

можете

 

использовать

 

команду

 LDA 

для

 

конвертации

 

восьмиричного

 

адреса

 

в

 

шестнадцатиричное

 

число

. 

Полезный

 

совет

: —

 

Инструкция

 

будет

 

выполнятся

 

каждый

 

цикл

 

сканирования

, 

если

 

входная

 

логика

 

включена

. 

Если

 

Вы

 

не

 

хотите

, 

чтобы

  

команда

 

выполнялась

 

более

 

чем

 

один

 

цикл

 

сканирования

, 

используйте

  

команду

 

одиночного

 

импульса

 PD 

во

 

входной

 

логике

. 

Полезный

 

совет

: — 

Вы

 

можете

 

использовать

 

команду

 LDA 

для

 

преобразования

 

восьмиричного

 

адреса

 

в

 

шестнадцатиричный

 

и

 

загрузки

 

его

 

в

 

аккумулятор

. 

Полезный

 

совет

: —

 

Перестановка

 

данных

 

выполняется

 

в

 

пределах

 

одного

 

цикла

 

сканирования

. 

Если

 

инструкция

 

выполняется

 

в

 

течении

 

нескольких

 

последовательных

 

циклов

 

сканирования

, 

то

 

будет

 

трудно

 

знать

 

фактическое

 

содержание

 

любой

 

таблицы

 

в

 

заданный

 

момент

 

времени

. 

Таким

 

образом

, 

не

 

забудьте

, 

что

 

применять

 

эту

 

команду

 

следует

 

только

 

в

 

одном

 

сканировании

. 

Тип

 

данных

 

операнда

 

Диапазон

 DL06 

 A 

aaa 

V-

память

 

V 

Смотри

 

карту

 

памяти

 

 

Пример

 

справа

 

показывает

 

таблицу

 

из

 

двух

 

слов

 

при

 V3000. 

Мы

 

будем

 

менять

 

содержание

 

с

 

другой

 

таблицей

 

из

 

двух

 

слов

 

начиная

 

с

 3100,  

используя

 

команду

 Swap. 

Требуемая

 

релейная

 

программа

 

дана

 

ниже

. 

 

Пример

 

программы

, 

приведенный

 

ниже

 

использует

 

контакт

 PD (

одиночный

 

импульс

 

для

 

перехода

 

входа

 

от

 

выключено

 

в

 

включено

). 

Сначала

, 

мы

 

загружаем

 

длину

 

таблиц

  (

два

 

слова

) 

в

 

аккумулятор

. 

Затем

 

мы

 

загружаем

 

адрес

 

первой

 

таблицы

 (V3000) 

в

 

аккумулятор

, 

используя

 

команду

 LDA, 

преобразовывающую

 

восьмеричный

 

адрес

 

в

 

шестнадцатеричное

 

число

. 

Обратите

 

внимание

, 

что

 

это

 

не

 

имеет

 

значения

, 

какую

 

таблицу

 

мы

 

объявляем

 

первой

, 

потому

 

что

 

результаты

 

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

 

будут

 

одинаковы

. 

 

Глава

 5: 

Стандартные

 

команды

 RLL. 

5—171

 

» 

 

Команды

 

Часы

 / 

Календарь

 

Date (DATE) 

 

Команда

 Date 

может

 

использоваться

, 

чтобы

 

установить

 

дату

 

в

 

процессоре

 

микроконтроллера

. 

Инструкция

 

требует

 

двух

 

последовательных

 

ячеек

 V-

памяти

 (Vaaa), 

чтобы

 

установить

 

дату

. 

Если

 

значения

 

в

 

определенных

 

ячейках

 

не

 

допустимы

, 

то

 

дата

 

не

 

будет

 

установлена

. 

Текущая

 

дата

 

может

 

читаться

 

из

 4 

последовательных

 

ячеек

 V-

памяти

 (V7771-

V7774). 

 

 

 

 

В

 

следующем

 

примере

, 

когда

 C0 

включен

, 

константа

 (K94010301) 

загружается

 

в

 

аккумулятор

, 

используя

 

команду

 Load Double (C0 

должен

 

быть

 

контактом

 

связанным

 

с

 

командой

 

одиночного

 (PD)). 

Значение

 

в

 

аккумуляторе

 

выводится

 

в

 V2000, 

используя

 

команду

 Out Double. 

Команда

 Date 

использует

 

значение

 

в

 

V2000, 

чтобы

 

установить

 

дату

 

в

 

процессоре

 

микроконтроллера

. 

 

Дата

 

Диапазон

 

Ячейка

 V-

памяти

 (BCD) 

(

Только

 

для

 

чтения

) 

Год

 0-99  V7774 

Месяц

 1-12 

V7773 

День

 1-31 

V7772 

День

 

Недели

 0-06 

V7771 

Значения

, 

введенные

 

для

 

дня

 

недели

: 0 = 

воскресенье

, 1 = 

понедельник

, 2 = 

вторник

, 3

= 

среда

, 4 = 

четверг

, 5 = 

пятница

, 6 = 

суббота

 

 

Тип

 

данных

 

операнда

 

Диапазон

 DL06 

 A 

aaa 

V-

память

 

V 

Смотри

 

карту

 

памяти

 

 

 

5—172

 

Глава

 5: 

Стандартные

 

команды

 RLL.

 

» 

 

Time (TIME) 

 

Команда

 Time

 

может

 

использоваться

, 

для

 

того

 

чтобы

 

установить

 

время

 (24 

часа

) 

в

 

процессоре

 

микроконтроллера

. 

Инструкция

 

требует

 

двух

 

последовательных

 

ячеек

 V-

памяти

 (Vaaa), 

чтобы

 

установить

 

время

. 

Если

 

значения

 

в

 

определенных

 

ячейках

 

не

 

допустимы

, 

то

 

время

 

не

 

будет

 

установлено

. 

Текущее

 

время

 

может

 

читаться

 

из

 4 

последовательных

 

ячеек

 V-

памяти

 

V7747 

и

 V7766-V7770. 

 

Дата

 

Диапазон

 

Ячейка

 V-

памяти

 (BCD) 

(

Только

 

для

 

чтения

) 

1/100 

секунды

 (10

мс

) 0-99 

V7747 

Секунды

 0-59 

V7766 

Минуты

 0-59 

V7767 

Час

 0-23 

V7770 

 

Тип

 

данных

 

операнда

 

Диапазон

 DL06 

 A 

aaa 

V-

память

 

V 

Смотри

 

карту

 

памяти

 

 

 

В

 

следующем

 

примере

, 

когда

 C0 

включен

, 

константа

 (K73000)  

загружается

 

в

 

аккумулятор

, 

используя

 

команду

 Load Double (C0 

должен

 

быть

 

контактом

 

связанным

 

с

 

командой

 

одиночного

 (PD)). 

Значение

 

в

 

аккумуляторе

 

выводится

 

в

 V2000, 

используя

 

команду

 Out Double. 

Команда

 TIME 

использует

 

значение

 

в

 V2000, 

чтобы

 

установить

 

время

 

в

 

процессоре

 

микроконтроллера

. 

 

 

 

 

 

 

 

 

 

содержание      ..     22      23      24      25     ..